From 02958e9d991c7f58723a650a13b7a8d41ca116c2 Mon Sep 17 00:00:00 2001 From: Abadima Date: Sun, 6 Aug 2023 22:47:30 -0400 Subject: [PATCH 01/33] v1.3.5 (RELEASE) DEPENDENCY UPDATES: - @napi-rs/canvas => v0.1.41 - mongoose => v7.4.2 BUG FIXES: - xp.rank() error - xp.chart() now has a helpful err message - leaderboard() Position & Cache issues TYPE IMPROVEMENTS: - addLevel() => Make Code Prettier - addXP() => Make Code Prettier - charts() => Make Code Prettier - leaderboard() => Ensured limit was optional for TypeScript users - rank() => Cure Cancer (Remove Unnecessary Statements) UPDATES: - Added eslint (dev) - rank() => Moved Funcs (eslint compliant) - connect() => "auto_purge" option, basically does what it did in Beta 7, but you have a choice (false by default) --- .eslintrc.json | 2 +- .gitignore | 2 +- .npmignore | 5 +- index.d.ts | 1 + package-lock.json | 1754 +++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- simplyxp.js | 32 +- src/addLevel.js | 14 +- src/addXP.js | 26 +- src/charts.js | 58 +- src/connect.js | 13 +- src/create.js | 10 +- src/fetch.js | 10 +- src/leaderboard.js | 19 +- src/lvlRole.js | 8 +- src/models/level.js | 12 +- src/models/lvlrole.js | 8 +- src/rank.js | 146 ++-- src/reset.js | 10 +- src/roleSetup.js | 46 +- src/setLevel.js | 56 +- src/setXP.js | 62 +- 22 files changed, 2001 insertions(+), 299 deletions(-) create mode 100644 package-lock.json diff --git a/.eslintrc.json b/.eslintrc.json index d2789b3..d48293c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,7 +19,7 @@ ], "quotes": [ "error", - "single" + "double" ], "semi": [ "error", diff --git a/.gitignore b/.gitignore index 55f867b..4d27fff 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -package-lock.json +pnpm-lock.yaml node_modules .idea \ No newline at end of file diff --git a/.npmignore b/.npmignore index 05607a1..0788fce 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,7 @@ .gitignore +.tgz .vscode +eslintrc.json Examples -.tgz \ No newline at end of file +node_modules +pnpm-lock.yaml \ No newline at end of file diff --git a/index.d.ts b/index.d.ts index 0c0db0e..4e2789f 100644 --- a/index.d.ts +++ b/index.d.ts @@ -3,6 +3,7 @@ import { Message, Client } from 'discord.js' type HexColorString = `#${string}` | string export type connectOptions = { + auto_purge?: boolean, notify?: boolean } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..75743ea --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1754 @@ +{ + "name": "simply-xp", + "version": "1.3.5", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "simply-xp", + "version": "1.3.5", + "license": "Apache-2.0", + "dependencies": { + "@napi-rs/canvas": "^0.1.41", + "chart.js": "^3.9.1", + "mongoose": "^7.4.2" + }, + "devDependencies": { + "eslint": "^8.46.0" + }, + "peerDependencies": { + "discord.js": ">=13.12.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@discordjs/builders": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.4.tgz", + "integrity": "sha512-ARFKvmAkLhfkQQiNxqi0YIWqwUExvBRtvdtMFVJXvJoibsGkFrB/DWTf9byU7BTVUfsmW8w7NM55tYXR5S/iSg==", + "peer": true, + "dependencies": { + "@discordjs/formatters": "^0.3.1", + "@discordjs/util": "^1.0.0", + "@sapphire/shapeshift": "^3.9.2", + "discord-api-types": "^0.37.50", + "fast-deep-equal": "^3.1.3", + "ts-mixer": "^6.0.3", + "tslib": "^2.6.1" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/collection": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.2.tgz", + "integrity": "sha512-LDplPy8SPbc8MYkuCdnLRGWqygAX97E8NH7gA9uz+NZ/hXknUKJHuxsOmhC6pmHnF9Zmg0kvfwrDjGsRIljt9g==", + "peer": true, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/formatters": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.1.tgz", + "integrity": "sha512-M7X4IGiSeh4znwcRGcs+49B5tBkNDn4k5bmhxJDAUhRxRHTiFAOTVUNQ6yAKySu5jZTnCbSvTYHW3w0rAzV1MA==", + "peer": true, + "dependencies": { + "discord-api-types": "^0.37.41" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/rest": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.0.0.tgz", + "integrity": "sha512-CW9ldfzsRzUbHcS4Oqu5+Moo+yrQ5qQ9groKNxPOzcoq2nuXa/fXOXkuQtQHcTeSVXsC9cmJ56M8gBDBUyLgGA==", + "peer": true, + "dependencies": { + "@discordjs/collection": "^1.5.2", + "@discordjs/util": "^1.0.0", + "@sapphire/async-queue": "^1.5.0", + "@sapphire/snowflake": "^3.5.1", + "@vladfrangu/async_event_emitter": "^2.2.2", + "discord-api-types": "^0.37.50", + "magic-bytes.js": "^1.0.15", + "tslib": "^2.6.1", + "undici": "^5.22.1" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.0.tgz", + "integrity": "sha512-U2Iiab0mo8cFe+o4ZY4GROoAetGjFYA1PhhxiXEW82LuPUjOU/seHZDtVjDpOf6n3rz4IRm84wNtgHdpqRY5CA==", + "peer": true, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@discordjs/ws": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.0.tgz", + "integrity": "sha512-POiImjuQJzwCxjJs4JCtDcTjzvjVsVQbnsaoW/F03yTVdrj/xSpmgv4383AnpNEYXI+CA6ggkz37phZDsZQ1NQ==", + "peer": true, + "dependencies": { + "@discordjs/collection": "^1.5.2", + "@discordjs/rest": "^2.0.0", + "@discordjs/util": "^1.0.0", + "@sapphire/async-queue": "^1.5.0", + "@types/ws": "^8.5.5", + "@vladfrangu/async_event_emitter": "^2.2.2", + "discord-api-types": "^0.37.50", + "tslib": "^2.6.1", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.41.tgz", + "integrity": "sha512-JjdMfKyXox09KgC3fNB4+x0M/rwufIWrfcBDU0BuF6jKVhlSSSNy7D2WEX4zs5NgWHeiArHCXLtJ0dW6KyK7GQ==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.41", + "@napi-rs/canvas-darwin-arm64": "0.1.41", + "@napi-rs/canvas-darwin-x64": "0.1.41", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.41", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.41", + "@napi-rs/canvas-linux-arm64-musl": "0.1.41", + "@napi-rs/canvas-linux-x64-gnu": "0.1.41", + "@napi-rs/canvas-linux-x64-musl": "0.1.41", + "@napi-rs/canvas-win32-x64-msvc": "0.1.41" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.41.tgz", + "integrity": "sha512-hPYeFbgusSK9g6TxYXH4bKFGkH9Win7hP83HNw1ZiOS1xY16jw6xEEPzkIbKLIJDlDOIXuZ+s2mey4JE0n0GZA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.41.tgz", + "integrity": "sha512-tBkzCYOQWfKmMyHVyPGhBKyowH8mcdfy79Hcv+jQb+XIrxx+JmINmlEl7jfNhYLjejM9mar+ZRe+FXqQTlq45g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.41.tgz", + "integrity": "sha512-n1/F47ymTtgEAMKYGKBquF4a2MKxOT7LRa3u5Beto2nxgB4OvTfp1wLo7QjihLBPUVEZSpnCy8JZhpKC2S9fUw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.41.tgz", + "integrity": "sha512-XjhWsuCX/MMTuLLvXhKAaZzTRdgqaL4laaEw5NoCIihg4pLyFcok+bD2LQoMcOJC/ATbRfm8cprqgVzncfszLA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.41.tgz", + "integrity": "sha512-kY5caBtSrUox8G5DKnNLfA3nLeZjaLMNV6WjVje57fz8QGOLCVF6dyRH15G8rfJ9W3Ka50XCUN4XmEHSPo7FBQ==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.41.tgz", + "integrity": "sha512-DIfPcnHbSzuRl3CieMA1Bd5Wou3WDyFOdjS1kCM1x5B1RkirAZ+LfxcuWvGX2CEg4tL8Yd/vktKuFR/X9RFcSg==", + "cpu": [ + "arm64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.41.tgz", + "integrity": "sha512-tKyzC0ZgqwuB9k0GvnOTCh05x+CQQ1zBbvv9ISjCm4+Pr5m0o3wQwi2M3kNk3NmhaJyWFc5OUOEFp5Ux2Gdvyg==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.41.tgz", + "integrity": "sha512-MRnLn5ftkC3E4XK2lol+ya3SE9PpfTxMjDpgbF4/d2i+AkT5vNF7yJJGfblzBOtgwO4g7plmAHQJ2Dv18BXtgw==", + "cpu": [ + "x64" + ], + "hasInstallScript": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.41", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.41.tgz", + "integrity": "sha512-e2L/VLJR/glc0vUACVBSL+VpbrfIRRuJU183t5jrOnaLFvVZHH/0iCF9ph9CUN/kKSg2cU84oGrnfJIsuPglSQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sapphire/async-queue": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", + "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", + "peer": true, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/shapeshift": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz", + "integrity": "sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@sapphire/snowflake": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", + "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", + "peer": true, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/@types/node": { + "version": "20.4.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", + "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vladfrangu/async_event_emitter": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", + "integrity": "sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==", + "peer": true, + "engines": { + "node": ">=v14.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "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/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bson": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", + "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", + "engines": { + "node": ">=14.20.1" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "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/chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/discord-api-types": { + "version": "0.37.51", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.51.tgz", + "integrity": "sha512-tdmdH98t3zgjQF6zwOHl0OB/PCBiE4aVsNTuN7m0PfU2jOLx3lNoU6xTeFALntUtlIxN80GTr9RPQR4t7msjSg==", + "peer": true + }, + "node_modules/discord.js": { + "version": "14.12.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.12.1.tgz", + "integrity": "sha512-gGjhTkauIPgFXxpBl0UZgyehrKhDe90cIS8Hn1xFBYQ63EuUAkKoUqRNmc/pcla6DD16s4cUz5tAbdSpXivnxw==", + "peer": true, + "dependencies": { + "@discordjs/builders": "^1.6.4", + "@discordjs/collection": "^1.5.2", + "@discordjs/formatters": "^0.3.1", + "@discordjs/rest": "^2.0.0", + "@discordjs/util": "^1.0.0", + "@discordjs/ws": "^1.0.0", + "@sapphire/snowflake": "^3.5.1", + "@types/ws": "^8.5.5", + "discord-api-types": "^0.37.50", + "fast-deep-equal": "^3.1.3", + "lodash.snakecase": "^4.1.1", + "tslib": "^2.6.1", + "undici": "^5.22.1", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "peer": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "peer": true + }, + "node_modules/magic-bytes.js": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", + "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==", + "peer": true + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", + "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", + "dependencies": { + "bson": "^5.4.0", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.201.0", + "@mongodb-js/zstd": "^1.1.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=2.3.0 <3", + "snappy": "^7.2.2" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.2.tgz", + "integrity": "sha512-sNolW2hyncwvWmZjIEIwAckjaSKtC1SE86zE1v2TKm3vPTRogZfBQf+3zLYYdrgrVTzoaoICieVpct9hjcn3EQ==", + "dependencies": { + "bson": "^5.4.0", + "kareem": "2.5.1", + "mongodb": "5.7.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=14.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "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/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ts-mixer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", + "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==", + "peer": true + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "peer": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "peer": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 44adc60..6ef72d9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simply-xp", - "version": "1.3.5-beta-7", + "version": "1.3.5", "description": "A Simple, Easy and Beginner Friendly XP System", "main": "simplyxp.js", "typings": "index.d.ts", @@ -42,12 +42,12 @@ "dependencies": { "@napi-rs/canvas": "^0.1.41", "chart.js": "^3.9.1", - "mongoose": "^6.11.2" + "mongoose": "^7.4.2" }, "peerDependencies": { "discord.js": ">=13.12.0" }, "devDependencies": { - "eslint": "^8.43.0" + "eslint": "^8.46.0" } } diff --git a/simplyxp.js b/simplyxp.js index fccbbac..ebab2f4 100644 --- a/simplyxp.js +++ b/simplyxp.js @@ -1,31 +1,33 @@ try { - require('discord.js'); + require("discord.js"); } catch (e) { - console.warn('[XP] Discord.js is recommended for this package.'); + console.warn("[XP] Discord.js is recommended for this package."); } -module.exports.roleSetup = require('./src/roleSetup'); +module.exports.roleSetup = require("./src/roleSetup"); -module.exports.addLevel = require('./src/addLevel'); +module.exports.addLevel = require("./src/addLevel"); -module.exports.addXP = require('./src/addXP'); +module.exports.addXP = require("./src/addXP"); -module.exports.charts = require('./src/charts'); +module.exports.charts = require("./src/charts"); -module.exports.connect = require('./src/connect'); +module.exports.connect = require("./src/connect"); -module.exports.create = require('./src/create'); +module.exports.create = require("./src/create"); -module.exports.fetch = require('./src/fetch'); +module.exports.fetch = require("./src/fetch"); -module.exports.leaderboard = require('./src/leaderboard'); +module.exports.leaderboard = require("./src/leaderboard"); -module.exports.lvlRole = require('./src/lvlRole'); +module.exports.lvlRole = require("./src/lvlRole"); -module.exports.rank = require('./src/rank'); +module.exports.rank = require("./src/rank"); -module.exports.setLevel = require('./src/setLevel'); +module.exports.setLevel = require("./src/setLevel"); -module.exports.setXP = require('./src/setXP'); +module.exports.setXP = require("./src/setXP"); -module.exports.reset = require('./src/reset'); +module.exports.reset = require("./src/reset"); + +module.exports.options = {auto_purge: false}; \ No newline at end of file diff --git a/src/addLevel.js b/src/addLevel.js index bf49121..9630ce7 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -1,5 +1,5 @@ -const levels = require('../src/models/level.js'); -let {roleSetup} = require('../simplyxp'); +const levels = require("../src/models/level.js"); +let {roleSetup} = require("../simplyxp"); /** * @param {Discord.Message} message @@ -8,11 +8,11 @@ let {roleSetup} = require('../simplyxp'); * @param {number} level */ async function addLevel(message, userID, guildID, level) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!level) throw new Error('[XP] Level amount is not provided.'); + if (!level) throw new Error("[XP] Level amount is not provided."); let {client} = message; @@ -26,7 +26,7 @@ async function addLevel(message, userID, guildID, level) { level: 0 }); - await newUser.save().catch(() => console.log('[XP] Failed to save new user to database')); + await newUser.save().catch(() => console.log("[XP] Failed to save new user to database")); let xp = (level * 10) ** 2; @@ -54,7 +54,7 @@ async function addLevel(message, userID, guildID, level) { let role = await roleSetup.find(client, guildID, level); - client.emit('levelUp', message, data, role); + client.emit("levelUp", message, data, role); } return { diff --git a/src/addXP.js b/src/addXP.js index 34128e0..2fb30b1 100644 --- a/src/addXP.js +++ b/src/addXP.js @@ -1,5 +1,5 @@ -const levels = require('../src/models/level.js'); -let {roleSetup} = require('../simplyxp'); +const levels = require("../src/models/level.js"); +let {roleSetup} = require("../simplyxp"); /** * @param {Discord.Message} message @@ -9,11 +9,11 @@ let {roleSetup} = require('../simplyxp'); */ async function addXP(message, userID, guildID, xp) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!xp) throw new Error('[XP] XP amount is not provided.'); + if (!xp) throw new Error("[XP] XP amount is not provided."); let {client} = message; @@ -22,25 +22,25 @@ async function addXP(message, userID, guildID, xp) { if (xp.min) { if (!xp.max) throw new Error( - '[XP] XP min amount is provided but max amount is not provided.' + "[XP] XP min amount is provided but max amount is not provided." ); min = Number(xp.min); - if (Number(xp.min).toString() === 'NaN') - throw new Error('[XP] XP amount (min) is not a number.'); + if (Number(xp.min).toString() === "NaN") + throw new Error("[XP] XP amount (min) is not a number."); } if (xp.max) { if (!xp.min) throw new Error( - '[XP] XP max amount is provided but min amount is not provided.' + "[XP] XP max amount is provided but min amount is not provided." ); max = Number(xp.max); - if (Number(xp.max).toString() === 'NaN') - throw new Error('[XP] XP amount (max) is not a number.'); + if (Number(xp.max).toString() === "NaN") + throw new Error("[XP] XP amount (max) is not a number."); } if (xp.min && xp.max) { @@ -60,7 +60,7 @@ async function addXP(message, userID, guildID, xp) { level: lvl }); - await newUser.save().catch(() => console.log('[XP] Failed to save new user to database')); + await newUser.save().catch(() => console.log("[XP] Failed to save new user to database")); return { level: 0, @@ -92,7 +92,7 @@ async function addXP(message, userID, guildID, xp) { let role = await roleSetup.find(client, guildID, level); - client.emit('levelUp', message, data, role); + client.emit("levelUp", message, data, role); } return { diff --git a/src/charts.js b/src/charts.js index bca84dc..84b2676 100644 --- a/src/charts.js +++ b/src/charts.js @@ -1,18 +1,18 @@ -let leaderboard = require('./leaderboard'); +let leaderboard = require("./leaderboard"); /** * @param {Discord.Message} message - * @param {import('../index').chartsOptions} options + * @param {import("../index").chartsOptions} options */ async function charts(message, options) { try { - require('canvas'); + require("canvas"); } catch { - throw '[XP] This requires canvas to be installed. \n"npm install canvas"'; + throw "[XP] This requires canvas to be installed. \n\"npm install canvas\""; } - const ChartJS = require('chart.js'); - const Canvas = require('canvas'); + const ChartJS = require("chart.js"); + const Canvas = require("canvas"); let {client} = message; let data = []; @@ -30,30 +30,30 @@ async function charts(message, options) { }); new ChartJS(ctx, { - type: options.type || 'bar', + type: options.type || "bar", data: { labels: uzern, datasets: [ { - label: 'Leaderboards', + label: "Leaderboards", data: data, backgroundColor: [ - 'rgba(255, 99, 132, 0.5)', - 'rgba(255, 159, 64, 0.5)', - 'rgba(255, 205, 86, 0.5)', - 'rgba(75, 192, 192, 0.5)', - 'rgba(54, 162, 235, 0.5)', - 'rgba(153, 102, 255, 0.5)', - 'rgb(201, 203, 207, 0.5)' + "rgba(255, 99, 132, 0.5)", + "rgba(255, 159, 64, 0.5)", + "rgba(255, 205, 86, 0.5)", + "rgba(75, 192, 192, 0.5)", + "rgba(54, 162, 235, 0.5)", + "rgba(153, 102, 255, 0.5)", + "rgb(201, 203, 207, 0.5)" ], borderColor: [ - 'rgb(255, 99, 132)', - 'rgb(255, 159, 64)', - 'rgb(255, 205, 86)', - 'rgb(75, 192, 192)', - 'rgb(54, 162, 235)', - 'rgb(153, 102, 255)', - 'rgb(201, 203, 207)' + "rgb(255, 99, 132)", + "rgb(255, 159, 64)", + "rgb(255, 205, 86)", + "rgb(75, 192, 192)", + "rgb(54, 162, 235)", + "rgb(153, 102, 255)", + "rgb(201, 203, 207)" ], borderWidth: 2 } @@ -64,18 +64,18 @@ async function charts(message, options) { plugins: { title: { display: true, - text: 'XP Datasheet' + text: "XP Datasheet" } } }, plugins: [ { - id: 'simply-xp', + id: "simply-xp", beforeDraw: (chart) => { - const ctx = chart.canvas.getContext('2d'); + const ctx = chart.canvas.getContext("2d"); ctx.save(); - ctx.globalCompositeOperation = 'destination-over'; - ctx.fillStyle = options.background || '#2F3136'; + ctx.globalCompositeOperation = "destination-over"; + ctx.fillStyle = options.background || "#2F3136"; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } @@ -84,8 +84,8 @@ async function charts(message, options) { }).update(); return { - attachment: ctx.toBuffer('image/png'), - name: 'chart.png' + attachment: ctx.toBuffer("image/png"), + name: "chart.png" }; } diff --git a/src/connect.js b/src/connect.js index b4b0a7c..2ee476e 100644 --- a/src/connect.js +++ b/src/connect.js @@ -1,22 +1,21 @@ -const mongoose = require('mongoose'); +const mongoose = require("mongoose"); /** * @param {string} db - * @param {import('../index').connectOptions} options + * @param {import("../index").connectOptions} options */ async function connect(db, options = []) { - if (!db) throw new Error('[XP] Database URL was not provided'); - mongoose.set('strictQuery', true); - + if (!db) throw new Error("[XP] Database URL was not provided"); + mongoose.set("strictQuery", true); + mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true }); - if (options.notify === false) return; - else return console.log('{ XP } Database Connected'); + if (options.notify) return console.log("{ XP } Database Connected"); } module.exports = connect; \ No newline at end of file diff --git a/src/create.js b/src/create.js index c46e875..233b952 100644 --- a/src/create.js +++ b/src/create.js @@ -1,4 +1,4 @@ -const levels = require('../src/models/level.js'); +const levels = require("../src/models/level.js"); /** * @param {string} userID @@ -6,11 +6,11 @@ const levels = require('../src/models/level.js'); */ async function create(userID, guildID) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] User ID was not provided.'); + if (!guildID) throw new Error("[XP] User ID was not provided."); - let uzer = await levels.findOne({ user: userID, guild: guildID }); + let uzer = await levels.findOne({user: userID, guild: guildID}); if (uzer) return; @@ -20,7 +20,7 @@ async function create(userID, guildID) { }); await newuser .save() - .catch(() => console.log('[XP] Failed to save new use to database')); + .catch(() => console.log("[XP] Failed to save new use to database")); return true; } diff --git a/src/fetch.js b/src/fetch.js index ec062c9..5bc73d3 100644 --- a/src/fetch.js +++ b/src/fetch.js @@ -1,4 +1,4 @@ -const levels = require('../src/models/level.js'); +const levels = require("../src/models/level.js"); /** * @param {string} userID @@ -6,9 +6,9 @@ const levels = require('../src/models/level.js'); */ async function fetch(userID, guildID) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); let user = await levels.findOne({ user: userID, @@ -29,7 +29,7 @@ async function fetch(userID, guildID) { .find({ guild: guildID }) - .sort([['xp', 'descending']]) + .sort([["xp", "descending"]]) .exec(); if (user === null) @@ -49,7 +49,7 @@ async function fetch(userID, guildID) { let target = targetxp * targetxp * 100; function shortener(count) { - const COUNT_ABBRS = ['', 'k', 'M', 'T']; + const COUNT_ABBRS = ["", "k", "M", "T"]; const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); diff --git a/src/leaderboard.js b/src/leaderboard.js index 99b32db..3bc29c3 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -1,4 +1,5 @@ -const levels = require('../src/models/level.js'); +const levels = require("../src/models/level.js"); +const {options} = require("../simplyxp"); /** * @param {Discord.Client} client @@ -7,17 +8,17 @@ const levels = require('../src/models/level.js'); */ async function leaderboard(client, guildID, limit) { - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); let g = client.guilds.cache.get(guildID); - if (!g) throw new Error('[XP] Guild was not found.'); + if (!g) throw new Error("[XP] Guild was not found."); - let leaderboard = await levels.find({guild: guildID}).sort([['xp', 'descending']]); + let leaderboard = await levels.find({guild: guildID}).sort([["xp", "descending"]]); let led = []; function shortener(count) { - const COUNT_ABBRS = ['', 'k', 'M', 'T']; + const COUNT_ABBRS = ["", "k", "M", "T"]; const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); @@ -27,13 +28,11 @@ async function leaderboard(client, guildID, limit) { const led2 = leaderboard.map(async (key) => { const user = await g.members.fetch(key.user).catch(() => null); - if (!user) return levels.deleteOne({user: key.user, guild: guildID}); + if (!user && options.auto_purge) return levels.deleteOne({user: key.user, guild: guildID}); if (key.xp === 0) return; - let pos = leaderboard.indexOf(key) + 1; - if (limit) { - if (pos > Number(limit)) return; - } + let pos = leaderboard.indexOf(key) + 1; + if (limit && pos > Number(limit)) return; led.push({ guildID: key.guild, diff --git a/src/lvlRole.js b/src/lvlRole.js index 17e9207..a3a5eeb 100644 --- a/src/lvlRole.js +++ b/src/lvlRole.js @@ -1,5 +1,5 @@ -const levels = require('../src/models/level.js'); -const lrole = require('../src/models/lvlrole.js'); +const levels = require("../src/models/level.js"); +const lrole = require("../src/models/lvlrole.js"); /** * @param {Discord.Message} message @@ -26,7 +26,7 @@ async function lvlRole(message, userID, guildID) { await newuser .save() - .catch(() => console.log('[XP] Failed to save new user to database')); + .catch(() => console.log("[XP] Failed to save new user to database")); } e.forEach((ee) => { @@ -41,7 +41,7 @@ async function lvlRole(message, userID, guildID) { else { u.roles.add(real).catch(() => { message.channel.send( - '[XP] ERROR: Role is higher than me. `MISSING_PERMISSIONS`' + "[XP] ERROR: Role is higher than me. `MISSING_PERMISSIONS`" ); }); } diff --git a/src/models/level.js b/src/models/level.js index b17cb15..6558f22 100644 --- a/src/models/level.js +++ b/src/models/level.js @@ -1,10 +1,10 @@ -const mongoose = require('mongoose'); +const mongoose = require("mongoose"); const Levelz = new mongoose.Schema({ - user: { type: String, unique: true }, - guild: { type: String }, - xp: { type: Number, default: 0 }, - level: { type: Number, default: 0 } + user: {type: String, unique: true}, + guild: {type: String}, + xp: {type: Number, default: 0}, + level: {type: Number, default: 0} }); -module.exports = mongoose.model('Simply-XP', Levelz); +module.exports = mongoose.model("Simply-XP", Levelz); \ No newline at end of file diff --git a/src/models/lvlrole.js b/src/models/lvlrole.js index 64d5466..45a82e1 100644 --- a/src/models/lvlrole.js +++ b/src/models/lvlrole.js @@ -1,8 +1,8 @@ -const mongoose = require('mongoose'); +const mongoose = require("mongoose"); const rol = new mongoose.Schema({ - gid: { type: String }, - lvlrole: { type: Array } + gid: {type: String}, + lvlrole: {type: Array} }); -module.exports = mongoose.model('Simply-XP-LevelRole', rol); +module.exports = mongoose.model("Simply-XP-LevelRole", rol); \ No newline at end of file diff --git a/src/rank.js b/src/rank.js index dfaf04f..25312f4 100644 --- a/src/rank.js +++ b/src/rank.js @@ -1,29 +1,29 @@ -const levels = require('../src/models/level.js'); -const {join} = require('path'); +const levels = require("../src/models/level.js"); +const {join} = require("path"); /** * @param {Discord.Message} message * @param {string} userID * @param {string} guildID - * @param {import('../index').rankOptions} options + * @param {import("../index").rankOptions} options */ async function rank(message, userID, guildID, options = []) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); const user = await levels.findOne({ user: userID, guild: guildID }); - if (!user) throw new Error('[XP] NO_DATA | User has no XP data.'); + if (!user) throw new Error("[XP] NO_DATA | User has no XP data."); const leaderboard = await levels .find({ guild: guildID }) - .sort([['xp', 'descending']]) + .sort([["xp", "descending"]]) .exec(); user.position = leaderboard.findIndex((i) => i.user === userID) + 1; @@ -46,49 +46,49 @@ async function rank(message, userID, guildID, options = []) { async function rankCard(message, options = []) { try { - const Canvas = require('@napi-rs/canvas'); + const Canvas = require("@napi-rs/canvas"); Canvas.GlobalFonts.registerFromPath( - join(__dirname, 'Fonts', 'Baloo-Regular.ttf'), - 'Sans Serif' + join(__dirname, "Fonts", "Baloo-Regular.ttf"), + "Sans Serif" ); const member = options.member; const canvas = Canvas.createCanvas(1080, 400), - ctx = canvas.getContext('2d'); + ctx = canvas.getContext("2d"); const name = member.tag; - const noSymbols = (string) => string.replace(/[\u007f-\uffff]/g, ''); + const noSymbols = (string) => string.replace(/[\u007f-\uffff]/g, ""); - let fsiz = '45px'; + let fsiz = "45px"; if (message.guild.name.length >= 23) { - fsiz = '38px'; + fsiz = "38px"; } if (message.guild.name.length >= 40) { - fsiz = '28px'; + fsiz = "28px"; } if (message.guild.name.length >= 63) { - fsiz = '22px'; + fsiz = "22px"; } - let BackgroundRadius = '20', + let BackgroundRadius = "20", BackGroundImg = - options.background || - 'https://i.ibb.co/QQvMqf7/gradient.jpg', - AttachmentName = 'rank.png', - AttachmentDesc = 'Rank Card', + options.background || + "https://i.ibb.co/QQvMqf7/gradient.jpg", + AttachmentName = "rank.png", + AttachmentDesc = "Rank Card", Username = noSymbols(name), - AvatarRoundRadius = '50', - DrawLayerColor = '#000000', + AvatarRoundRadius = "50", + DrawLayerColor = "#000000", DrawLayerOpacity = 0.4, - BoxColor = options.color || '#096DD1', - LevelBarFill = options.lvlbar || '#ffffff', - LevelBarBackground = options.lvlbarBg || '#ffffff', + BoxColor = options.color || "#096DD1", + LevelBarFill = options.lvlbar || "#ffffff", + LevelBarBackground = options.lvlbarBg || "#ffffff", Rank = options.rank, - TextEXP = shortener(options.currentXP) + ' XP', + TextEXP = shortener(options.currentXP) + " XP", LvlText = `Level ${shortener(options.level)}`, - BarRadius = '20', - TextXpNeded = '{current}/{needed}', + BarRadius = "20", + TextXpNeded = "{current}/{needed}", CurrentXP = options.currentXP, NeededXP = options.neededXP; @@ -110,7 +110,7 @@ async function rank(message, userID, guildID, options = []) { ctx.quadraticCurveTo(0, 0, Number(BackgroundRadius), 0); ctx.closePath(); ctx.clip(); - ctx.fillStyle = '#000000'; + ctx.fillStyle = "#000000"; ctx.fillRect(0, 0, 1080, 400); let background = await Canvas.loadImage(BackGroundImg); ctx.globalAlpha = 0.7; @@ -134,64 +134,64 @@ async function rank(message, userID, guildID, options = []) { ctx.save(); RoundedBox(ctx, 70, 240 + 50 + 30, 180, 50, 20); - ctx.strokeStyle = '#BFC85A22'; + ctx.strokeStyle = "#BFC85A22"; ctx.stroke(); ctx.clip(); ctx.fillStyle = BoxColor; ctx.globalAlpha = 1; ctx.fillRect(70, 320, 180, 50); ctx.globalAlpha = 1; - ctx.fillStyle = '#ffffff'; - ctx.font = '32px "Sans Serif"'; - ctx.textAlign = 'center'; + ctx.fillStyle = "#ffffff"; + ctx.font = "32px \"Sans Serif\""; + ctx.textAlign = "center"; ctx.fillText(TextEXP, 160, 358); ctx.restore(); ctx.save(); RoundedBox(ctx, 70, 240, 180, 50, 20); - ctx.strokeStyle = '#BFC85A22'; + ctx.strokeStyle = "#BFC85A22"; ctx.stroke(); ctx.clip(); ctx.fillStyle = BoxColor; ctx.globalAlpha = 1; ctx.fillRect(70, 240, 180, 50, 50); ctx.globalAlpha = 1; - ctx.fillStyle = '#ffffff'; - ctx.font = '32px "Sans Serif"'; - ctx.textAlign = 'center'; + ctx.fillStyle = "#ffffff"; + ctx.font = "32px \"Sans Serif\""; + ctx.textAlign = "center"; ctx.fillText(LvlText, 70 + 180 / 2, 278); ctx.restore(); ctx.save(); - ctx.textAlign = 'left'; - ctx.fillStyle = '#ffffff'; - ctx.shadowColor = '#000000'; + ctx.textAlign = "left"; + ctx.fillStyle = "#ffffff"; + ctx.shadowColor = "#000000"; ctx.shadowBlur = 15; ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 1; - ctx.font = '39px "Sans Serif"'; + ctx.font = "39px \"Sans Serif\""; ctx.fillText(Username, 390, 80); ctx.restore(); ctx.save(); - ctx.textAlign = 'right'; - ctx.fillStyle = '#ffffff'; - ctx.shadowColor = '#000000'; + ctx.textAlign = "right"; + ctx.fillStyle = "#ffffff"; + ctx.shadowColor = "#000000"; ctx.shadowBlur = 15; ctx.shadowOffsetX = 1; ctx.shadowOffsetY = 1; - ctx.font = '55px "Sans Serif"'; - ctx.fillText('#' + Rank, canvas.width - 55, 80); + ctx.font = "55px \"Sans Serif\""; + ctx.fillText("#" + Rank, canvas.width - 55, 80); ctx.restore(); ctx.save(); RoundedBox(ctx, 390, 305, 660, 70, Number(20)); - ctx.strokeStyle = '#BFC85A22'; + ctx.strokeStyle = "#BFC85A22"; ctx.stroke(); ctx.clip(); - ctx.fillStyle = '#ffffff'; + ctx.fillStyle = "#ffffff"; ctx.font = `${fsiz} "Sans Serif"`; - ctx.textAlign = 'center'; + ctx.textAlign = "center"; ctx.fillText(message.guild.name, 720, 355); ctx.globalAlpha = 0.2; ctx.fillRect(390, 305, 660, 70); @@ -199,7 +199,7 @@ async function rank(message, userID, guildID, options = []) { ctx.save(); RoundedBox(ctx, 390, 145, 660, 50, Number(BarRadius)); - ctx.strokeStyle = '#BFC85A22'; + ctx.strokeStyle = "#BFC85A22"; ctx.stroke(); ctx.clip(); ctx.fillStyle = LevelBarBackground; @@ -212,7 +212,7 @@ async function rank(message, userID, guildID, options = []) { ctx.save(); RoundedBox(ctx, 390, 145, progress, 50, Number(BarRadius)); - ctx.strokeStyle = '#BFC85A22'; + ctx.strokeStyle = "#BFC85A22"; ctx.stroke(); ctx.clip(); ctx.fillStyle = LevelBarFill; @@ -221,25 +221,25 @@ async function rank(message, userID, guildID, options = []) { ctx.restore(); ctx.save(); - ctx.textAlign = 'left'; - ctx.fillStyle = '#ffffff'; + ctx.textAlign = "left"; + ctx.fillStyle = "#ffffff"; ctx.globalAlpha = 0.8; - ctx.font = '30px "Sans Serif"'; - ctx.fillText('Next Level: ' + shortener(NeededXP) + ' XP', 390, 230); + ctx.font = "30px \"Sans Serif\""; + ctx.fillText("Next Level: " + shortener(NeededXP) + " XP", 390, 230); ctx.restore(); const latestXP = Number(CurrentXP) - Number(NeededXP); const textXPEdited = TextXpNeded.replace(/{needed}/g, shortener(NeededXP).toString()) .replace(/{current}/g, shortener(CurrentXP).toString()) .replace(/{latest}/g, latestXP.toString()); - ctx.textAlign = 'center'; - ctx.fillStyle = '#474747'; + ctx.textAlign = "center"; + ctx.fillStyle = "#474747"; ctx.globalAlpha = 1; - ctx.font = '30px "Sans Serif"'; + ctx.font = "30px \"Sans Serif\""; ctx.fillText(textXPEdited, 730, 180); return { - attachment: canvas.toBuffer('image/webp'), + attachment: canvas.toBuffer("image/webp"), description: AttachmentDesc, name: AttachmentName }; @@ -270,19 +270,19 @@ function RoundedBox(ctx, x, y, width, height, radius) { function shortener(count) { const COUNT_ABBRS = [ - '', - 'k', - 'M', - 'B', - 'T', - 'Q', - 'Q+', - 'S', - 'S+', - 'O', - 'N', - 'D', - 'U' + "", + "k", + "M", + "B", + "T", + "Q", + "Q+", + "S", + "S+", + "O", + "N", + "D", + "U" ]; const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); diff --git a/src/reset.js b/src/reset.js index ecffc2a..1a7594c 100644 --- a/src/reset.js +++ b/src/reset.js @@ -1,4 +1,4 @@ -const levels = require('../src/models/level.js'); +const levels = require("../src/models/level.js"); /** * @param {string} userID @@ -6,17 +6,17 @@ const levels = require('../src/models/level.js'); */ async function reset(userID, guildID) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error('[XP] User ID was not provided.'); + if (!guildID) throw new Error("[XP] User ID was not provided."); await levels - .findOneAndUpdate({ user: userID, guild: guildID }, { xp: 0, level: 0 }) + .findOneAndUpdate({user: userID, guild: guildID}, {xp: 0, level: 0}) .catch((err) => { throw new Error(err); }); - return { user: userID, guild: guildID, xp: 0, level: 0 }; + return {user: userID, guild: guildID, xp: 0, level: 0}; } module.exports = reset; diff --git a/src/roleSetup.js b/src/roleSetup.js index ff20bfe..312f773 100644 --- a/src/roleSetup.js +++ b/src/roleSetup.js @@ -1,11 +1,11 @@ -const lrole = require('../src/models/lvlrole.js'); +const lrole = require("../src/models/lvlrole.js"); class roleSetup { /** - * @param {Discord.Client} client - * @param {string} guildID - * @param {import('../index').lvladdOptions} options - */ + * @param {Discord.Client} client + * @param {string} guildID + * @param {import("../index").lvladdOptions} options + */ static async add(client, guildID, options = []) { let rol = await lrole.findOne({ @@ -21,7 +21,7 @@ class roleSetup { let roll = g.roles.cache.find((r) => r.id === options.role); if (roll) { - if (rol) throw new Error('Level Already Exist. Use delete'); + if (rol) throw new Error("Level Already Exist. Use delete"); else if (!rol) { let newrol = await lrole.findOne({ gid: guildID @@ -36,7 +36,7 @@ class roleSetup { await newrol.save(); } - newrol.lvlrole.push({ lvl: options.level, role: options.role }); + newrol.lvlrole.push({lvl: options.level, role: options.role}); await newrol .save() @@ -48,17 +48,17 @@ class roleSetup { } } else { throw new Error( - 'Role ID is invalid. | ' + - `Guild ID: ${guildID} | Role ID: ${options.role}` + "Role ID is invalid. | " + + `Guild ID: ${guildID} | Role ID: ${options.role}` ); } } /** - * @param {Discord.Client} client - * @param {string} guildID - * @param {import('../index').lvlremoveOptions} options - */ + * @param {Discord.Client} client + * @param {string} guildID + * @param {import("../index").lvlremoveOptions} options + */ static async remove(client, guildID, options = []) { let rol = await lrole.find({ @@ -66,7 +66,7 @@ class roleSetup { }); if (!rol || rol.length === 0) - throw new Error('Level role with this level does not exist'); + throw new Error("Level role with this level does not exist"); rol = rol[0].lvlrole.find((item) => item.lvl === options.level) || undefined; if (rol) { @@ -75,18 +75,18 @@ class roleSetup { gid: guildID }, { - $pull: { lvlrole: { lvl: options.level } } + $pull: {lvlrole: {lvl: options.level}} } ); return true; - } else throw new Error('Level role with this level does not exist'); + } else throw new Error("Level role with this level does not exist"); } /** - * @param {Discord.Client} client - * @param {string} guildID - */ + * @param {Discord.Client} client + * @param {string} guildID + */ static async fetch(client, guildID) { let rol = await lrole.find({ @@ -99,10 +99,10 @@ class roleSetup { } /** - * @param {Discord.Client} client - * @param {string} guildID - * @param {string} level - */ + * @param {Discord.Client} client + * @param {string} guildID + * @param {string} level + */ static async find(client, guildID, level) { let rol = await lrole.find({ diff --git a/src/setLevel.js b/src/setLevel.js index 32c8fb3..35ad41d 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -1,5 +1,5 @@ -const levels = require('../src/models/level.js'); -let { roleSetup } = require('../simplyxp'); +const levels = require("../src/models/level.js"); +const {roleSetup} = require("../simplyxp"); /** * @param {Discord.Message} message @@ -8,47 +8,19 @@ let { roleSetup } = require('../simplyxp'); * @param {string} level */ async function setLevel(message, userID, guildID, level) { - if (!userID) throw new Error('[XP] User ID was not provided.'); + if (!userID) throw new Error("[XP] User ID was not provided."); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); + if (!level || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); + const {client} = message; - if (!level) throw new Error('[XP] Level amount is not provided.'); + const user = await levels.findOneAndUpdate( + {user: userID, guild: guildID}, + {xp: (level * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((level * 10) ** 2))}, + {upsert: true, new: true} + ); - let { client } = message; - - const user = await levels.findOne({ user: userID, guild: guildID }); - - if (!user) { - const newUser = new levels({ - user: userID, - guild: guildID, - xp: 0, - level: 0 - }); - - await newUser - .save() - .catch(() => console.log('[XP] Failed to save new user to database')); - - let xp = (level * 10) ** 2; - - return { - level: level, - exp: xp - }; - } - let level1 = user.level; - - user.xp = (level * 10) ** 2; - user.level = Math.floor(0.1 * Math.sqrt(user.xp)); - - await user - .save() - .catch((e) => - console.log(`[XP] Failed to set Level | User: ${userID} | Err: ${e}`) - ); - - if (level1 !== level) { + if (user.level !== level) { let data = { xp: user.xp, level: user.level, @@ -58,7 +30,7 @@ async function setLevel(message, userID, guildID, level) { let role = await roleSetup.find(client, guildID, level); - client.emit('levelUp', message, data, role); + client.emit("levelUp", message, data, role); } return { @@ -67,4 +39,4 @@ async function setLevel(message, userID, guildID, level) { }; } -module.exports = setLevel; +module.exports = setLevel; \ No newline at end of file diff --git a/src/setXP.js b/src/setXP.js index 3389456..0f18e52 100644 --- a/src/setXP.js +++ b/src/setXP.js @@ -1,51 +1,23 @@ -const levels = require('../src/models/level.js'); - -/** - * @param {string} userID - * @param {string} guildID - * @param {string} xp - */ +const levels = require("../src/models/level.js"); async function setXP(userID, guildID, xp) { - if (!userID) throw new Error('[XP] User ID was not provided.'); - - if (!guildID) throw new Error('[XP] Guild ID was not provided.'); - - if (!xp) throw new Error('[XP] XP amount is not provided.'); - - if (Number(xp).toString() === 'NaN') - throw new Error('[XP] XP amount is not a number.'); - - const user = await levels.findOne({ user: userID, guild: guildID }); - - let lvl = Math.floor(0.1 * Math.sqrt(xp)); - - if (!user) { - const newUser = new levels({ - user: userID, - guild: guildID, - xp: xp, - level: lvl - }); - - await newUser - .save() - .catch(() => console.log('[XP] Failed to save new use to database')); - - return { - xp: 0 - }; + if (!userID) throw new Error("[XP] User ID was not provided."); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); + if (!xp || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); + + const user = await levels.findOneAndUpdate( + {user: userID, guild: guildID}, + {xp: xp}, + {upsert: true} + ); + + const lvl = Math.floor(0.1 * Math.sqrt(xp)); + if (user.level !== lvl) { + user.level = lvl; + await user.save().catch((e) => console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`)); } - user.xp = xp; - user.level = Math.floor(0.1 * Math.sqrt(user.xp)); - - await user - .save() - .catch((e) => - console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`) - ); - return { xp }; + return {xp}; } -module.exports = setXP; +module.exports = setXP; \ No newline at end of file From b50ac7a8cab231011d0d6a0ca6052afb2cc1f687 Mon Sep 17 00:00:00 2001 From: Abadima Date: Sun, 6 Aug 2023 22:54:12 -0400 Subject: [PATCH 02/33] *quick updates --- .npmignore | 4 +++- package.json | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index 0788fce..ebaf393 100644 --- a/.npmignore +++ b/.npmignore @@ -1,7 +1,9 @@ +.eslintrc.json .gitignore +.github +.idea .tgz .vscode -eslintrc.json Examples node_modules pnpm-lock.yaml \ No newline at end of file diff --git a/package.json b/package.json index 6ef72d9..008b809 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "typings": "index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "beta": "eslint . --fix && npm update && npm publish --tag beta" + "beta": "eslint . --fix && npm update && npm publish --tag beta", + "legacy": "eslint . --fix && npm update && npm publish --tag legacy" }, "author": "Rahuletto", "keywords": [ From 8922663d894e39142ec5516d19a406d0e94765eb Mon Sep 17 00:00:00 2001 From: Abadima Date: Fri, 11 Aug 2023 23:29:51 -0400 Subject: [PATCH 03/33] v1.3.7 Bug Fixes --- README.md | 1 + package-lock.json | 1754 -------------------------------------------- package.json | 13 +- simplyxp.js | 6 +- src/leaderboard.js | 8 +- 5 files changed, 15 insertions(+), 1767 deletions(-) delete mode 100644 package-lock.json diff --git a/README.md b/README.md index 60ec6af..f10b276 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ yarn add simply-xp - Fixed Various Bugs - Updated `Chart.js` - D.JS v14 Support +- Patched v1.3.5 Bugs # But Why ? diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 75743ea..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1754 +0,0 @@ -{ - "name": "simply-xp", - "version": "1.3.5", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "simply-xp", - "version": "1.3.5", - "license": "Apache-2.0", - "dependencies": { - "@napi-rs/canvas": "^0.1.41", - "chart.js": "^3.9.1", - "mongoose": "^7.4.2" - }, - "devDependencies": { - "eslint": "^8.46.0" - }, - "peerDependencies": { - "discord.js": ">=13.12.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@discordjs/builders": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.6.4.tgz", - "integrity": "sha512-ARFKvmAkLhfkQQiNxqi0YIWqwUExvBRtvdtMFVJXvJoibsGkFrB/DWTf9byU7BTVUfsmW8w7NM55tYXR5S/iSg==", - "peer": true, - "dependencies": { - "@discordjs/formatters": "^0.3.1", - "@discordjs/util": "^1.0.0", - "@sapphire/shapeshift": "^3.9.2", - "discord-api-types": "^0.37.50", - "fast-deep-equal": "^3.1.3", - "ts-mixer": "^6.0.3", - "tslib": "^2.6.1" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/collection": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.2.tgz", - "integrity": "sha512-LDplPy8SPbc8MYkuCdnLRGWqygAX97E8NH7gA9uz+NZ/hXknUKJHuxsOmhC6pmHnF9Zmg0kvfwrDjGsRIljt9g==", - "peer": true, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/formatters": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.3.1.tgz", - "integrity": "sha512-M7X4IGiSeh4znwcRGcs+49B5tBkNDn4k5bmhxJDAUhRxRHTiFAOTVUNQ6yAKySu5jZTnCbSvTYHW3w0rAzV1MA==", - "peer": true, - "dependencies": { - "discord-api-types": "^0.37.41" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/rest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.0.0.tgz", - "integrity": "sha512-CW9ldfzsRzUbHcS4Oqu5+Moo+yrQ5qQ9groKNxPOzcoq2nuXa/fXOXkuQtQHcTeSVXsC9cmJ56M8gBDBUyLgGA==", - "peer": true, - "dependencies": { - "@discordjs/collection": "^1.5.2", - "@discordjs/util": "^1.0.0", - "@sapphire/async-queue": "^1.5.0", - "@sapphire/snowflake": "^3.5.1", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "^0.37.50", - "magic-bytes.js": "^1.0.15", - "tslib": "^2.6.1", - "undici": "^5.22.1" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/util": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.0.tgz", - "integrity": "sha512-U2Iiab0mo8cFe+o4ZY4GROoAetGjFYA1PhhxiXEW82LuPUjOU/seHZDtVjDpOf6n3rz4IRm84wNtgHdpqRY5CA==", - "peer": true, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@discordjs/ws": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.0.tgz", - "integrity": "sha512-POiImjuQJzwCxjJs4JCtDcTjzvjVsVQbnsaoW/F03yTVdrj/xSpmgv4383AnpNEYXI+CA6ggkz37phZDsZQ1NQ==", - "peer": true, - "dependencies": { - "@discordjs/collection": "^1.5.2", - "@discordjs/rest": "^2.0.0", - "@discordjs/util": "^1.0.0", - "@sapphire/async-queue": "^1.5.0", - "@types/ws": "^8.5.5", - "@vladfrangu/async_event_emitter": "^2.2.2", - "discord-api-types": "^0.37.50", - "tslib": "^2.6.1", - "ws": "^8.13.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", - "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", - "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@napi-rs/canvas": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.41.tgz", - "integrity": "sha512-JjdMfKyXox09KgC3fNB4+x0M/rwufIWrfcBDU0BuF6jKVhlSSSNy7D2WEX4zs5NgWHeiArHCXLtJ0dW6KyK7GQ==", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.41", - "@napi-rs/canvas-darwin-arm64": "0.1.41", - "@napi-rs/canvas-darwin-x64": "0.1.41", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.41", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.41", - "@napi-rs/canvas-linux-arm64-musl": "0.1.41", - "@napi-rs/canvas-linux-x64-gnu": "0.1.41", - "@napi-rs/canvas-linux-x64-musl": "0.1.41", - "@napi-rs/canvas-win32-x64-msvc": "0.1.41" - } - }, - "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.41.tgz", - "integrity": "sha512-hPYeFbgusSK9g6TxYXH4bKFGkH9Win7hP83HNw1ZiOS1xY16jw6xEEPzkIbKLIJDlDOIXuZ+s2mey4JE0n0GZA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.41.tgz", - "integrity": "sha512-tBkzCYOQWfKmMyHVyPGhBKyowH8mcdfy79Hcv+jQb+XIrxx+JmINmlEl7jfNhYLjejM9mar+ZRe+FXqQTlq45g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.41.tgz", - "integrity": "sha512-n1/F47ymTtgEAMKYGKBquF4a2MKxOT7LRa3u5Beto2nxgB4OvTfp1wLo7QjihLBPUVEZSpnCy8JZhpKC2S9fUw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.41.tgz", - "integrity": "sha512-XjhWsuCX/MMTuLLvXhKAaZzTRdgqaL4laaEw5NoCIihg4pLyFcok+bD2LQoMcOJC/ATbRfm8cprqgVzncfszLA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.41.tgz", - "integrity": "sha512-kY5caBtSrUox8G5DKnNLfA3nLeZjaLMNV6WjVje57fz8QGOLCVF6dyRH15G8rfJ9W3Ka50XCUN4XmEHSPo7FBQ==", - "cpu": [ - "arm64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.41.tgz", - "integrity": "sha512-DIfPcnHbSzuRl3CieMA1Bd5Wou3WDyFOdjS1kCM1x5B1RkirAZ+LfxcuWvGX2CEg4tL8Yd/vktKuFR/X9RFcSg==", - "cpu": [ - "arm64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.41.tgz", - "integrity": "sha512-tKyzC0ZgqwuB9k0GvnOTCh05x+CQQ1zBbvv9ISjCm4+Pr5m0o3wQwi2M3kNk3NmhaJyWFc5OUOEFp5Ux2Gdvyg==", - "cpu": [ - "x64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.41.tgz", - "integrity": "sha512-MRnLn5ftkC3E4XK2lol+ya3SE9PpfTxMjDpgbF4/d2i+AkT5vNF7yJJGfblzBOtgwO4g7plmAHQJ2Dv18BXtgw==", - "cpu": [ - "x64" - ], - "hasInstallScript": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.41", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.41.tgz", - "integrity": "sha512-e2L/VLJR/glc0vUACVBSL+VpbrfIRRuJU183t5jrOnaLFvVZHH/0iCF9ph9CUN/kKSg2cU84oGrnfJIsuPglSQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sapphire/async-queue": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.0.tgz", - "integrity": "sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==", - "peer": true, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/shapeshift": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.2.tgz", - "integrity": "sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "lodash": "^4.17.21" - }, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@sapphire/snowflake": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.1.tgz", - "integrity": "sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==", - "peer": true, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@types/node": { - "version": "20.4.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", - "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz", - "integrity": "sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==", - "peer": true, - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "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/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/bson": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", - "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", - "engines": { - "node": ">=14.20.1" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "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/chart.js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", - "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==" - }, - "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/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/discord-api-types": { - "version": "0.37.51", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.51.tgz", - "integrity": "sha512-tdmdH98t3zgjQF6zwOHl0OB/PCBiE4aVsNTuN7m0PfU2jOLx3lNoU6xTeFALntUtlIxN80GTr9RPQR4t7msjSg==", - "peer": true - }, - "node_modules/discord.js": { - "version": "14.12.1", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.12.1.tgz", - "integrity": "sha512-gGjhTkauIPgFXxpBl0UZgyehrKhDe90cIS8Hn1xFBYQ63EuUAkKoUqRNmc/pcla6DD16s4cUz5tAbdSpXivnxw==", - "peer": true, - "dependencies": { - "@discordjs/builders": "^1.6.4", - "@discordjs/collection": "^1.5.2", - "@discordjs/formatters": "^0.3.1", - "@discordjs/rest": "^2.0.0", - "@discordjs/util": "^1.0.0", - "@discordjs/ws": "^1.0.0", - "@sapphire/snowflake": "^3.5.1", - "@types/ws": "^8.5.5", - "discord-api-types": "^0.37.50", - "fast-deep-equal": "^3.1.3", - "lodash.snakecase": "^4.1.1", - "tslib": "^2.6.1", - "undici": "^5.22.1", - "ws": "^8.13.0" - }, - "engines": { - "node": ">=16.9.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", - "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.1", - "@eslint/js": "^8.46.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.2", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", - "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/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/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "peer": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "peer": true - }, - "node_modules/magic-bytes.js": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", - "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==", - "peer": true - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mongodb": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.7.0.tgz", - "integrity": "sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw==", - "dependencies": { - "bson": "^5.4.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "@mongodb-js/zstd": "^1.1.0", - "kerberos": "^2.0.1", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.4.2.tgz", - "integrity": "sha512-sNolW2hyncwvWmZjIEIwAckjaSKtC1SE86zE1v2TKm3vPTRogZfBQf+3zLYYdrgrVTzoaoICieVpct9hjcn3EQ==", - "dependencies": { - "bson": "^5.4.0", - "kareem": "2.5.1", - "mongodb": "5.7.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/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/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "peer": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-mixer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.3.tgz", - "integrity": "sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==", - "peer": true - }, - "node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "peer": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", - "peer": true, - "dependencies": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 008b809..5383093 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "simply-xp", - "version": "1.3.5", + "version": "1.3.7", "description": "A Simple, Easy and Beginner Friendly XP System", "main": "simplyxp.js", "typings": "index.d.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "beta": "eslint . --fix && npm update && npm publish --tag beta", - "legacy": "eslint . --fix && npm update && npm publish --tag legacy" + "beta": "eslint . --fix && pnpm update && npm publish --tag beta", + "legacy": "eslint . --fix && pnpm update && npm publish --tag legacy" }, "author": "Rahuletto", "keywords": [ @@ -38,10 +38,11 @@ "license": "Apache-2.0", "repository": { "type": "git", - "url": "https://github.com/Rahuletto/simply-xp" + "url": "git+https://github.com/Abadima/simply-xp.git" }, + "homepage": "https://simplyxp.js.org", "dependencies": { - "@napi-rs/canvas": "^0.1.41", + "@napi-rs/canvas": "^0.1.43", "chart.js": "^3.9.1", "mongoose": "^7.4.2" }, @@ -49,6 +50,6 @@ "discord.js": ">=13.12.0" }, "devDependencies": { - "eslint": "^8.46.0" + "eslint": "^8.47.0" } } diff --git a/simplyxp.js b/simplyxp.js index ebab2f4..7c9abe2 100644 --- a/simplyxp.js +++ b/simplyxp.js @@ -4,6 +4,8 @@ try { console.warn("[XP] Discord.js is recommended for this package."); } +module.exports.options = {auto_purge: false}; + module.exports.roleSetup = require("./src/roleSetup"); module.exports.addLevel = require("./src/addLevel"); @@ -28,6 +30,4 @@ module.exports.setLevel = require("./src/setLevel"); module.exports.setXP = require("./src/setXP"); -module.exports.reset = require("./src/reset"); - -module.exports.options = {auto_purge: false}; \ No newline at end of file +module.exports.reset = require("./src/reset"); \ No newline at end of file diff --git a/src/leaderboard.js b/src/leaderboard.js index 3bc29c3..18801ad 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -15,7 +15,7 @@ async function leaderboard(client, guildID, limit) { let leaderboard = await levels.find({guild: guildID}).sort([["xp", "descending"]]); - let led = []; + let led = [], subtractPos = 0; function shortener(count) { const COUNT_ABBRS = ["", "k", "M", "T"]; @@ -28,10 +28,10 @@ async function leaderboard(client, guildID, limit) { const led2 = leaderboard.map(async (key) => { const user = await g.members.fetch(key.user).catch(() => null); - if (!user && options.auto_purge) return levels.deleteOne({user: key.user, guild: guildID}); - if (key.xp === 0) return; + if (!user && options?.auto_purge) return levels.deleteOne({user: key.user, guild: guildID}); + if (key.xp === 0 || !user) return subtractPos++; - let pos = leaderboard.indexOf(key) + 1; + let pos = leaderboard.indexOf(key) + 1 - subtractPos; if (limit && pos > Number(limit)) return; led.push({ From b52848a7dee22428aab7fdfc56cd9a0a063f82d4 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 22:28:17 -0500 Subject: [PATCH 04/33] v1.3.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ⭐ Improvements - Refactor leaderboard and rank position calculation into a new utility for efficiency and code reuse. - Add a compound index to the level model for improved leaderboard query performance. - Improve leaderboard auto-purge logic and cleaned up code style. - Refactor `rank()` image to scale background images properly, fixing stretching issues. 💎 Design Changes - Replace `Baloo-Regular.ttf` to `Baloo2-Regular.woff2` for better performance and smaller size. ⬆️ Dependencies - Bump `@napi-rs/canvas` from `v0.1.43` to `v0.1.88`. --- .eslintrc.json | 29 ------------- .gitignore | 10 ++++- .npmignore | 21 ++++++--- README.md | 34 +++++++-------- eslint.config.cjs | 51 ++++++++++++++++++++++ package.json | 75 ++++++++++++++++++++++----------- simplyxp.js | 2 +- src/Fonts/Baloo-Regular.ttf | Bin 680508 -> 0 bytes src/Fonts/Baloo2-Regular.woff2 | Bin 0 -> 97780 bytes src/addLevel.js | 6 +-- src/addXP.js | 6 +-- src/charts.js | 9 +--- src/create.js | 2 +- src/fetch.js | 20 +-------- src/leaderboard.js | 35 ++++++++++----- src/models/level.js | 10 +++-- src/models/lvlrole.js | 4 +- src/rank.js | 21 +++++---- src/reset.js | 4 +- src/roleSetup.js | 4 +- src/setLevel.js | 10 ++--- src/setXP.js | 8 ++-- src/utils/getUserPosition.js | 22 ++++++++++ 23 files changed, 232 insertions(+), 151 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.cjs delete mode 100644 src/Fonts/Baloo-Regular.ttf create mode 100644 src/Fonts/Baloo2-Regular.woff2 create mode 100644 src/utils/getUserPosition.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index d48293c..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "env": { - "commonjs": true, - "es2021": true, - "node": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": { - "indent": [ - "error", - "tab" - ], - "linebreak-style": [ - "error", - "unix" - ], - "quotes": [ - "error", - "double" - ], - "semi": [ - "error", - "always" - ] - } -} diff --git a/.gitignore b/.gitignore index 4d27fff..c9f06bd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ -pnpm-lock.yaml +# IDE/Editor files +.idea + +# Dependencies node_modules -.idea \ No newline at end of file + +# Lock files +pnpm-lock.yaml +pnpm-workspace.yaml \ No newline at end of file diff --git a/.npmignore b/.npmignore index ebaf393..8bdcfb2 100644 --- a/.npmignore +++ b/.npmignore @@ -1,9 +1,20 @@ +# Configurations +eslint.config.cjs .eslintrc.json -.gitignore +tsconfig.json +pnpm-lock.yaml +pnpm-workspace.yaml + +# Version control / CI .github -.idea -.tgz +.gitignore + +# IDE / editor settings .vscode -Examples +.idea + +# Dependencies node_modules -pnpm-lock.yaml \ No newline at end of file + +# Documentation +Examples \ No newline at end of file diff --git a/README.md b/README.md index f10b276..b471f6c 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,21 @@

Simply-XP

-

A Simple, Easy and Beginner friendly XP System.
Supports Discord.JS

Developed by Rahuletto#0243 & Maintained by Abadima#6356

+

+ A simple, beginner-friendly XP system for Discord.js.
+ Developed by Rahuletto & Maintained by Abadima +


- -
-
- + +
+


-## 🖥️ How to install ? +## 🖥️ How to install? ``` npm install simply-xp @@ -28,23 +30,21 @@ yarn add simply-xp
-# 🎉 Recent Updates 🎉 +# 🎉 Recent Updates - Fixed Various Bugs - Updated `Chart.js` - D.JS v14 Support - Patched v1.3.5 Bugs +# ⭐ Features -# But Why ? - -- Easiest XP System in Discord.js -- Fastest Support ever -- Rank Card Maker +- Easy XP System +- Automatic Role Assignment +- Beautiful Rank Cards +- Optimized for Performance +- Lightweight & Flexible - Beginner Friendly -- Easier than other XP Systems -- Inbuilt Auto Roles system -- Flexible and simple at the same time
@@ -52,7 +52,7 @@ yarn add simply-xp
-

👥 Contact us | Support

+

👥 Contact & Support

-

\ No newline at end of file +

diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 0000000..0339167 --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,51 @@ +module.exports = [ + { + files: ["src/**/*.js"], + languageOptions: { + globals: { + require: "readonly", + module: "readonly", + __dirname: "readonly", + __filename: "readonly", + process: "readonly", + console: "readonly" + }, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module" + } + }, + rules: { + indent: ["error", "tab"], + "linebreak-style": ["error", "unix"], + quotes: ["error", "double"], + semi: ["error", "always"] + } + }, + { + files: ["*.js"], + languageOptions: { + globals: { + require: "readonly", + module: "readonly", + __dirname: "readonly", + __filename: "readonly", + process: "readonly", + console: "readonly" + }, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module" + } + }, + rules: { + indent: ["error", "tab"], + "linebreak-style": ["error", "unix"], + quotes: ["error", "double"], + semi: ["error", "always"] + } + }, + { + ignores: ["node_modules/**"] + } +]; \ No newline at end of file diff --git a/package.json b/package.json index 5383093..8732a15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simply-xp", - "version": "1.3.7", + "version": "1.3.8", "description": "A Simple, Easy and Beginner Friendly XP System", "main": "simplyxp.js", "typings": "index.d.ts", @@ -9,47 +9,72 @@ "beta": "eslint . --fix && pnpm update && npm publish --tag beta", "legacy": "eslint . --fix && pnpm update && npm publish --tag legacy" }, - "author": "Rahuletto", + "author": { + "name": "Abadima", + "url": "https://abadima.dev" + }, + "maintainers": [ + { + "name": "Abadima", + "url": "https://abadima.dev" + } + ], + "contributors": [ + { + "name": "Rahuletto", + "role": "Original Author", + "url": "https://marban.is-a.dev/" + } + ], + "license": "Apache-2.0", "keywords": [ "xp", - "simply", - "easy", - "xp-system", - "system", - "mongoose", + "experience", + "level", + "leveling", + "leveling system", "discord", - "discord xp", - "discord-xp", - "simply-djs", + "discord bot", "discord.js", - "simplydjs", - "weky", - "nuggies", - "experience", - "level role", - "amari", - "package", + "discord-xp", "leaderboard", - "mee6", + "rank", + "rank card", + "leaderboard card", + "gamification", + "xp system", + "simply", + "simplydjs", "charts", - "ChartJS", - "level up" + "@napi-rs/canvas", + "chart.js", + "mongoose", + "mongodb", + "sqlite", + "nodejs", + "bot", + "mee6", + "amari", + "weky" ], - "license": "Apache-2.0", "repository": { "type": "git", "url": "git+https://github.com/Abadima/simply-xp.git" }, "homepage": "https://simplyxp.js.org", + "bugs": { + "url": "https://github.com/Abadima/simply-xp/issues" + }, + "readme": "README.md", "dependencies": { - "@napi-rs/canvas": "^0.1.43", + "@napi-rs/canvas": "0.1.88", "chart.js": "^3.9.1", - "mongoose": "^7.4.2" + "mongoose": "^7.8.8" }, "peerDependencies": { "discord.js": ">=13.12.0" }, "devDependencies": { - "eslint": "^8.47.0" + "eslint": "^9.39.2" } -} +} \ No newline at end of file diff --git a/simplyxp.js b/simplyxp.js index 7c9abe2..7f48dc5 100644 --- a/simplyxp.js +++ b/simplyxp.js @@ -4,7 +4,7 @@ try { console.warn("[XP] Discord.js is recommended for this package."); } -module.exports.options = {auto_purge: false}; +module.exports.options = { auto_purge: false }; module.exports.roleSetup = require("./src/roleSetup"); diff --git a/src/Fonts/Baloo-Regular.ttf b/src/Fonts/Baloo-Regular.ttf deleted file mode 100644 index a3ab1c55802f01e2e2537830a5afacb534752336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680508 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⪚6o3dKDD?A za+9kMUVrHN`SnwmPG4GFTU=W`MwlEBFb)m&mkOcQ>M!sMZX&uM)D6tY9rty7ReE!dPO-tR}I)8qkTrbv3hPx+pQu$P z(lJmvyvi&p1e=BF7)OVWfrxaEiH>rV$23|sP*1xW6kR0b@ysBWGLz0~KI$EYeEs)GW0s7F#D> z;~5aD`D(uN=Mz(F!v?p(-TJAzI+KliLTl6cY%1?5JKdG6Kj;ax|H{)_2(HfGX#6fy zS_esK)xUG}C>@n;f*L4!nv$A|Sj{%{yWBsL8A&;Kji>d4(VzB*;#yDE=CWGAknRZQ zpxI0@SNkvBiArQ}A}^}7WvDfKwca~8%G4UOe|wbQfc%~UckK&qRDK zwVo!;waX8#pE-Vv`cv%PLqsh7y{SYf06v0K{FNAZ`li(|Vy`|~<7eynox03zBH_u`xn39o9zvI@YwM3{4TXDLt zuQ*_KdjjRS)1B!H4;(emZ!{Z?m5GI1X=yk*&E&jw`j?E+R5~&Qqfu$GxxX|zKhiS+ zJ_NsmPc&Y0Sp=WOY_l^xe!Hx^f_-q7dz3fV4G&*f9vkj6Q;Jh8EFML01?5zFSaNzO zS%r-^f#Cq!78xa#Mu~(ETz_5#F{2aRY-B2%`qYTIC6e1|aR^z@b`J&Ruc5}>+l+M2 zgNSOmaBiLFz&LPm{n2xef-dyv98AETYBAqo0-oj1GLh;q0x~VpAa_GF0cD3mgu~0$ zUmILou6Y$*8D=F&2!Jk2a9oxRRJgY3-M5G;>2;z?`UT=v>Rkc1(v&Oj6d~OPG}_#R zXGvir4f_-C6Rm?b4eKj36>K`%B2^+1rmzDfOg*8*fQw+?bEq5XW@BpfLXnngOQX!| zK)ekxy~k8vhx|Ory~Mp=@YOBvefK-xwmLU4*jF@*mH_MhWCCTVRiU=tbn^~D>sZtC z3YdvToc+jAX&_2kC{Z-NF&hmKDbWfLjYP=`kcmXa`ssbm@i-lgsB>IxjR;ZQ)qo_U z$2kD=1ij*BYha}Y@=cDB^Z}gw#3&Fzc^u5!ojosU+SBszAP7+_OoR}i*?1mdmV5mW z2zH=;;ZEbr#?5x`VrO&TZPn1!v+V<&Jow7XPd~+TFTekl_rK%Ww?FgLOHYHt16h{Gy zXz55URJytKWHO+Za^JYcRIqf=EPx^bs*lOLtyuI=q?@X^@hiO}ZM74nCe6PND2|?w zo;h>|%}2%ni(l@ohQm6i#Syccqt22bu#$>fpJHnMIy06!*W4<|XbfUs<|ZU9 z|7Ew`ns?is7Id>0b^NmGUto`3=WgcA%qwImSzoEDT>ZQjY=efskK7R8Z&pvtM+Lg->o?Jb6U}maI z?633JyTb^(7JJM$Wx}OqPZge|T_e>}hJ}b2CTl-cR2vKy)s5ZCdE+~(k!)WN?=`8E zF^yeoQMp1xrD!SQ))fxr%A%OFHbBDP%61FHeb=%*uwE$*P`)Q#PGSn-8a| zj!53~m^ZjO-V*MoWVt387v=de?bxLe}&2I2th|BAy}J zk3_pb-kQ?G?0O`&3FbTBNFGFw&7j9-=z1#7td}=I+YHI4K<>mUAqY;NT7B@ugNF_t zSlVO*9OsWS%FqrYYS$Y;hVzijx6AoP)vlDPK&#Ge_4yrY;S>w)ihHLby=|#nr)DO7 zOg7UYCcmrPL);Bvv2J?w!EQzS3Z)#sZX_LX&s$IE!0#Kbtu3f%y<;IDJPCWF$g;OUFuN+(^zRV3~7MPWs_h@EG zFi==n8+Y5rQ-yXPuv%nD?Qr9jyfqIzmi;b$v@j4ma4PPPCfbTn`G06TN^b3o7PQvB zlH0%29XODx%=l8-1!Bfnm`?YYg9rP!I6rRvLE3LLdFfATKv^als-_acLie(0p38EECfm5KPbaoV8 zqSz@&3X*IZp6isH!4xE+zsc{%KZ7nvFSW{S-!*nL5pr1@6D;uj-`fRZ;9T;tHi6*( zptZEObarj43fE$DBsZy(84AXudpef%d^C*HF~ z5#ME{XVcoOzWqIG$;#|d&7Y|X_Lls8d-KXZ_ZAgfL%~pRaH;Ci3_(4M!N8rR8dJI*C8b;434&Qo#8E=kQ)V$p!lY1ivGkVBc74Mfz$6olQ$Lbg1Nt}+-hbJ{dZlUAA!Fs|s} zR8rxiWv!EL5gu;WEt8KWe`$*X8DX)t&bR(jVw!%TNgN&Aa*fNy8(WsnG}hWw56{cY z(@J3Y{z~;LI5#G_1Hgc+^H=JI)29wE&19q)KiMP`9J2FTCE`8^@9VV+m^510)+(gz z5sNhoV#tTQ4Y5b4$)IE2#>O!JPDYVD1jRR@wWUyXTXycOHhkKu-M~&ZN>bZP!Z5jP`X#u1MM_O#_5oWe@xbGZeL;B`ve$UvQ)0fUvDkRmXCudl8-L}oD>TaYx2Iw~ z=}3Ecve;7%dbIhVCmpn&I;wsAn#k4ANFpXPwj#wHdH>?O{NWF&G4GF}P6r+zb9Mc>_0_$j5(C_7IDH*JUBdyXBB6Nx;8T!%YGW2O*X8zJ-|EamEE}fEv=W7t2TYt?* zMd`WqoxYLr-s*_gQ*XTV*~qcs#$S6}8ubUak)q!IBO_r?X-`qNxd8oQPr1_DpAYrh zo?CdAKk{L%)%X|_B*IqyHN#epaF@9!_=URu;kBcC3Mq?*_$9)SA@XL>IE~f&8?=xX z0x6pGTGLgtMbLm@NCTb(osK&T<{>V)V5A1FBHIrrCq!d-awkJDnjabm;@v$Asjqt) z2CNo=`W`$85LUoJnKc^obs#f4-^c)sHT+12-5*#Gq5(mw~ja_o^K zJ;DC{<$n%1CGc?HZ2Xxb0(~}s)ARx&2VbgN9z45ta=xBRcx_fO<0;xk$S1xG1O`MA z;9do=?t17o6R$!co(eGnwVE{qXfg+rZA3Y9SXFm%C+V7cX7%{cAc5V^oH~AC^#Z^W z`zFQ)j}0BGRnTzGp;2=K{D7q`N+dzpG%}$PWgD0~z8U;hL|8Dtn*calHSQ1azuH92vK&L>KM22wb$*Ha0QdXUM*YB^T0R#7OQr=1M+`)w8TiXM zj?h9K#jsbwcYsoFJvBo>1q-^UUPFSIvl+RoPTtNrOm@dr&c>O{Hq&MF^D7!$(4gk3+ZesmCR(b=sJU* zs8n&uz-D*o63DVoV$7bzqFJS%ZYEs^`zd164LfV2Se4x;nO#-YR^IYo7^3XdL37IM zuOwZrSiv2Ssgz2+#^&@n%ucN)Y7V9>X`lSpSX`wv; z;L<7`4$$IhKQCB(N$|F|aA)lhGX}jmT>@sUnvcb@*;p)3!582p{~ME|lR(eD{?>5G zs?(};k_3&Qa|?j?AgV&;H7p5GX9{3xRdbv{&7prK3JO_GsR3|WgXXfH*J^dAafbOp z%>zojySq7{gQWORt({+AyL9T(aWq(1+#ky&i>^#xCeAwMO41=|1pwfA5%S7xR9fsF za*oA=VjEoHo!33DNm~;MTiWT;>g|cXcq*^ffT0Vd?QLMf4&>n0i#nES{0uroN8!K< zwxlcEpYf#pMz3Mq6*Zaiq1`PTT|R{l@u@}t}X+;#pmsvyqPN1_g3*szuq z{}@B$-lWhW`i6EGoE1Ho?7W4u8Z3Y&BOakt8I+W#;m=YBIRHJ)8-Sh!7M($ZP9Q_U zkJ}uJyNjXdWSQH=Pz3H|j|Li$t|z-cBZ+v-dh)?b$BsRG_0shRuOEBh*aPR+PaI!a zUO$>~5e7r@F5mLh8lLf<&(kNtnVy=iz{>2)4> zZ|zmL_8nDNs!$uY!oIIXY{W(oAPMdS!F>apYm;oU*(7^m@0+?MwI$0^Y|FCbcqAvX zdz?7-W5*uFnu(pUCXS+5k7nkPqBxSqBgbwf<0drk`R=`SZ*4#UWTGEZH^qBUsC&Ni zo#j368x4hOYx#iDxG>t3Y4F*r8mg*OCR>Hi)~wKSPpHHR#Z6eFf~%{BaI*6|Z4=qm zoZ7YTL_?J|HI<<#?gY}?`H5y0{y4!s`}N+Atj;6!LqXfkq5Fa!KC%kB5ugWxTv3#J zBrRB#+++EFovA)L(F+}jci>&cUGW5QHRx%1MGOK(HdU1Hoxj{-%-MJ0|FtJxxR;_C zps)O7ID9R;yrOKfoW&+e;qD2$K`*P;QQ>a!B^oc4A)tYias$wgaVK?O(m!76?rAHnzs`8TJi|j{+lHoxr{lyRlTOqL-~&srmAb-;lp*_z9jwM| zVJgZ5*QS`%3ID%U)I`(;XDl|Z`W`iXEI@(wn)OQmXOx-Fu12pv`K#!1)`r*qOjT4S zGQNRx%6G^P)(7or>WQvB^0-FKhAM9;j5x&d#_wyc;QQ?6wqfS-!EZb4CM{v<>0WO^ zK)0B&(vRT^^hwNGBJd=s4d~Ki(#{+82=O>qM`U{1%{{?-0Ew|t>H$nmj?RtE4Gr{c z>)qA{g2i~OHWKuU9RP7gA}$-T0A?r>$Jphqc3xgtSX0F>%{YCHztY;f;jY?vvF)@u z#IKFF(boRDa05-mQT>SJb-mmaa=ZWMceZZ}xEM1s^_0QdZ6T6Wa8q#>6pa_0R*k`I z$4<2Yj%>4OG0Y(DK!<<{xtfKV-c;YZ4>QU^n@t)Q8O;BND2mQb3FSt4k%{$y ztNZu$rgsk1&Z@)Fzsh!hS&sA{G>bS#7r0-@SZ0QM+Y)ZO(IOorFw%0Q=Yz{hWSKye zGJxQjG9}Jx#6wm{3|dX+kQ10K0N-0e7L?4Je=KZ4u^a&I>iCgEd-v?d&}TFguTQ4B zYi;0hm-{FP^-pdcPstd>z$O+|kH2)M*+wVzH0y`3Hpt_z)v;I1dL9(}sMql`_RbD- zXSmltJUYgqp%Y9GmcA!Nuu=0u;wqm8yLw|%}94>Gi1_rdI)>i2&$D=HR zDKE)ZVfBZ?0n^Nmx}kbsMeo6F+s}^IrlX~+VCB6$XQ>Ra)i34!Sn49lHo@s`8~4^W zhia&+F}#?bZV5&=?r5w{x$GK0$b_BrZcqdN3ch&Mz`UL+;PIZgiU(i-Wa$Pot?B}k zX(kY*8CzLqTFDhbl(a@Dr+-cfZK{B#DQ1prY=Y%sCX*C6^UXY-1(wNW>i6#DIk`Mt znBOrwni(1(rghc6?GnFK44GW4`lNv?6{+P^vjy4R4LWe5P?~C=>v>e2kZP9;*MsBr zRJgYG7b{#f{O>BosVdnEr*%rX89}+}(63*wN-|P8Yu$3b@-xj1_{AVodF=gh|YIT(z4lySl$Bu-7}{S zAKWoJGu7V)JW$V9OV1&W*#EGB(v9Khn!O*ChC3 z5WW!{ew^TVYq+{2>DTI-8tZYWeaauvp>CcFMs_#XO?FmETnuwKzCJsS@7nKW53-nJ z;w*my?`#^1y(jsdAMW3kaEKKgHKOR26YNyE*=a}9PEl4a;b?#^VmO>q38$Q45u>fM z8|-2jkZd3f*eMLiCfFIyCO?H{$ZfzXBAG$?B^6}iCz7pUe3>oGN*a3-cBBHYerAS% zLq`tJ9GJoVKxN*x5#oM`RAu+@r}^pi_wM2R&Bu7pS{G(|Lg4j zc0&1YMeI(V6pCjrP zJP`BE3^vyr;JW%Aowm74g;UoIvmlW#mZU7~0aak~2>sJ_)j}9_pB;k7TzP0z!J@O2 ziIkIAAMoc0Q235_a4-E1z|pvVrTn%*906;QCTV$WwsI&TI5X5M5s6K@bA*jE9Ki&c zl&L^;&gR7%{$*<865;;#iER)#=f z4T)HFWw^p&gRs^Lzd|s4kJz)M)D|xaX>Q@hY{Bakli?yKuW%uk(2~-2?eDL%9IHK< zJwjzI+VVzueU_i+q10Vs16Dp*?D@? zciBN?if>RDDNFIKa8shZ(AFAgrL7xCzgb_iSahCnpSM2ZO(g2OhBppsJ*mbF1WZ8% zuw4(Frn#}jURfWm?QwZRE8B}iG@7&ZvhQ&WY*D-U<6uhOxqUKTfy={8k`nZAi3;UF#yc^-d)N5v#4L46n`3YrnnH+d+eNNMWW)0KjRq2> zy~Wes!w@?RQ;LVw7h{XBEduYE@I`ht5n`u07)=y+n_;{6kgMUAUeN1ZF`rsSusfB; zK2_beP$h^`QqeAF4P{jM|%}a z7SvwVqNlCJkOkdMv(+wuvi@s1=n&XMQE>X@URGMENY-0M{bJ-Pz;3e ztWKkQxbY{*`{7a{k!Wk>xdHGGLB==JHUeehL`@Zm5;#Trz!tuxa8d+JH%nL<+5+NG z(%D37i9s;Bdw4V%I&gGk9-|J;H|b@H&4UBF(a!b(huatIj}4_OmPST@%u3F~Evfyd zJ1)BYe)S+IoHn<1H6|k!6%}4jyeB?3CY6(4Z)@SZSGt`prvv?RPW``8z|8-XBN9$4~u|>p- z(0v-O8;{mhS4sl4G@wQqC_)> zy?rHI6>ga79sSSj%Uf(cShK%lzZcl9JK!+B>~$I3QB^Hf(dhNfX2KmVOM9ZbSNaNr zRUv-haJS0}1X_(fY;g-ln+0$!)?eEt-F@@8`OGuy+G8rS|KqMbJKo*quRXdfp*SpG zVR=_q$$R;K;LSI^eSCgmo~cYEHop0YL6$nX8(n~anYZjG*njL)-_agTW|Cbs2D>pA4UdptDgHEkLB?~#wIA`MlB*SPM zSiwV_fR3aF6udO(a2l-6b3~G8Fmhng;(6Us3xFb6!}qxyW;6!XdxL~_njl-KF%Y^R z<JDj;$D@52iztfZfisoZFq1I-30&h4-2Ajk>X+q(7nht<|>KPT^FpF?=^1ILy$l zSm#R=t>&3x%Y|LHZ(m&HxwqfE{o?HxpS^SC^6E1epE+~tXiIk4ShWRnNN2bAh%NJH10Eoh^^UAZUZoIxIsvz|2;73qI*xe&pT zYGKXSAuqt`(Jy5?jR=k!+yV)2M|VqHumO1NN(I_UBU&O9vzR^R*27axzF2e66!bgd zeUq`q>CWmpA!vU%NTE~vZ{@&BXsXfcF^m3#;EACjgXV#<*tYg77sZvwM*(QF_6CG*bpU$VY z>#gi)6@+~QbuMqcdh0FxMR`9m=!%-nwN9VkkMIQ!+n@i?@G9=QGu&nHmA-}zB>$_= zKYRVsG7xM#=eK8CVnF3;Jw}{0YM_pCHh~jtK=J{RD-a@A@bNB(;KEX_mv?|Ui01ZM zY^YwaBK0BMo!jZb{Rx1}GN2J5qr6ZuS-vH<4Qn;yW-Ve35b?4=!APX9m>xwKC zycx-i)J_1gu^4&ty%dg5{)z4Y`-c>E^R)qKrUD2W+vV@lWA$5HyCuCD#gn1S^qHDU z-r?|LUPbgS{=Q^tvMW;4o~i9AOW6c~PEIN|E4iteh3 z)jJznT71wm3`YjLn>7PXX=o3B{DYS56(PS_So>>#H~*zz+VzITDtNxFi&yF$*0ukp zHH6bOHb|C^YHH#RD_@cCoT6m$qPxu~c+gu5rfPylU#i*@>fOs9 zgjO!JjQ2z;E%g5ol>3w+3ZmisdI+x+il0$=~lFMa-< z*Y4iBarx-(S;n3f%77sftobTgUC7n$JB5kpSwcm(sHg<*@ao>T|9ew@1C7Ikf12%rt*oM8#-Cy(dq2LDWtJijDisngCHEd>YDNphGP%{~3*=}Q+^mT4$AIi9EkzNxM|&amVdvKG>VNOwfeO|vL*%;;!! zck6ZtLHu}jfW2dzx8;5mmS~w6hEV-$F$f>HyRKiOxy-Gb*Y01xzk1>H$zxZKU){TB zer{~Ezqhdtd;wJz0guaWgOI`sze0QgqJ&LPe)dGUJ-`O?NdQYgE&Yi)iNZ1#w)C_J z_G~c9U=IXtk`k&wdrx;qlu%8nsOZs3dPO`*7Usn7DR~o1>jSo<b~4CQ9e4YstZD zs`-2u9fWG8l^23_RZX*){nU-@NM5;Ob_Q%h%!@s+CwxDrf!PfLqW5UbqZLAb8>I*9bp9R<0S=O2cju3iTqU zC?A`F!XtLaP>0B$OwX_P!Pd7(7r+b{8369_C>Aj|p5td}QIHz=oyVMj_nQ0%l6qWp47Y?MKEo@d*#*lecMid`5YSCuEH>Q1zy z1jk9#kCYVh)@oc$-h`P|GmV`SD;1ZOo8>EOe@v&*WY0T|zJR_V_UNzNnRr!)uYE*J zqM9=vEF1lia=QNEUq*wUX!`Ox;@|cPYt-Xd`-rNVbFR(~|j>)1vNvw<+9W7 zuvbx*6!KzUvsPI9f$FRc+WrEW6VfBr2mL7+?^e0p+%bMEV>`NUdv_{Ke0q%8k}i!d zXn-Iix~AiaH;<8_8o>~6#NN2lnqdwsdTMZenaS)8E_K-dG>04q`OT zc(Zr&yGwHCiO!A=CvF813`c*$92wLNRg7F)yab}mS;f#VrcAk{M!Nq??Pq;w5}w9T zW!*_EBAY83Bc5z@*Jz$ne3Un4u5|2(Sbfe%j1*7%+lmLOTIk_)Z)Gy!k0fg+Z2`ej zQCFRf;XuhMj@RyVI)gI5S}yY))x>{i_%ry^E<$rasl%GF-?+5AcY1uZ9r?B(=i49` zHG=yN!$3gn`710B;gE*_wdO(G29qkwyon1>;OV{K=GE&8= z-h@b(m%O;TXE$1lH!t2i1F?er`*yGFS=qTGGcq*bCE^ZBkiAr9Drtcf#gryWPJ*0E zy(l#dku~IG5s92QmO{1=6FZ1XwqW$Hp9ufH+M8Hw@QvV!o*{j7XH{PFMXO@lyXkN)sg*T;Aj<5CHY9vyPsk(T&HbtA~Y@>^S1PBenIjZJW>0lpU1+VdKV%AB;lTiYe&v>il@Mf6w<(4hN~$bR+O`x+a!rq;Edm-U*bk-|lw3j4Mbb?*51=73uerL!Xql#O|!U!%DLLSmema$N#Y+ z_`uXo`(nh3b?ZV-?mEA>vAwc$rlonds}e<4733xKCrmcGzd!??)o{`}8DBLgdZ;%N z{~ObBr#F&h`|Ce75EkMHcZs`;TFiCl+QrkymZrN~nj0bxlU>$o>BpEBbm~C7YPL1 z-`mlaZj9Gf1f*;C2!CW9F|LC9mh#HYHOHwHr@EALdfilv8LIMPs6U{~y^9Ss&7D={ zw8Ay_6N7=wW$CK^kG^iryCpB`j@GLFV9p&KtqO+L{%aZC?{E6t@)ds7?)-)-^h)`l z4Zgd~t@5K8=lL_om-jDbI-{WqpI{>{4eD|Aa8^{^R%!qMaj7$2KsdEKH8wO6R#AfK zO$Pl1fe5>>u4mDxSWrZ-1)fuRT!Y6sjT26*fzxuFUC+U3*Ed2g`xr*R!4b}EEBiw* zrUpS=K4ibmGFEAc#{==SdgbUjteYKOU0FSRaB26#&Y3ATj)|x0Yh8$?VCu+E`8Mx@ z`5gu^olMD&iLUW5ul;ZCgeNBjEZgmLj}#B~wuCF|)|eYsW-1^3y|0_E)$6zBXDm>z zS+vH=^u=HzS^FdSozb`tJ}3H_folC@+zb2%8P|j7uAVz}U`Idnh2yFS*@=FQi)VZ7 z6dJu^Xms*WDpLnXw`^NQ)7tWqO{=$hD z4jlA(KA>XKC$kRjL+*(cD62^Ik0lR<3E(k{!m9X(hhLaEpvaDu^&FLv}1Clxz=Ga z3i4FDhtvS|f@-SGAxL7|FFVY}YC1(&JJR3W;UGEhz=n^rekjQ#6`I)k)8f!NvVY(F z{Go&UmiI5u@14ihJv%+NO&V0k;}jQB3DN7`+*O<(2aRGN^q_k~C=HCH18C(S7P@!G zT=f;@UAj6|4J6K=f0d1y*FNudz2)ovd~k=;R^GiT#yf0KhtuLzng4ZZfUIRfPkQ$s z84lvzFLF1*Rrjro`-MACpFO;1dZ+=70JL2kGWoy&MA00)#l-{*fM?KafoITrd8-MU z&VX*(!14j@0zP}-ck$faXK%gq z%uCm=ojwUg$E962ci)_w!A{CZZ#OmcR2`5-ezA}RRnkQjBgc>^h$Oe_#6QfdCX@&u zR>XLzlz!z02ttdYeqcTF!kjEE2M&U~bRSQISLP^s_$$i)-|>0MTZiA0yvWMr}e zkN(o%t@%R9ysS2w>Z0Ib!Lck0i||crmnu#~Lf%AHS^#*1oa_v-gYaj%uL6H|5?%7^ z{CgQ;Rf3+eZ5e`|^>b*zb4)S|WLkin2`FC$A~7t4oH^`fZ6V-nfGqGzy(N>NDc6|Z_d+o|u zw0B5HsVH>pB!80aBcf(TWRil?6N8RPn6VMQqbv3#;bEE!%2|1z;lh6Q#v6~m_ry_P zpJV{A9be4BdWru0I})DqCEg~^DeZS}UfRFCqqQ#VFoEn9m#_2#AkE(>Uz=vm)fR;Z<-79hlRHd|R&W{Vz%7EM1d z#Z5GKXws6~VCGfGL*1*2Ylz4}hruy(p=lj3qT5mojMy6Jt2MdJE%iR<1Wil$dL@27 z`ho0fIXM{h3T+|qj2iPGh>1jxpSGMzLJ%h#4d^1rYKnHKd2JwUGS@mps3D>o#nb!n zzdPK^e2wIN_ntX_U}CgC9SxZUEqR~%53I8H^??b4w;bXO$f2OFOI#*4yU_+7YZS2> z4h=_>Nq-bX=n!OZFlB`mD~iaFRz@45(+K?rdJ?4oTVq_u0&Qn#m%&5>S9Cb6M>(rC zYK1Feq`#372ZW}rCsdy%YfBVqKxBLP;`OUfq1CbgXw>jvS4U$#ts_v1y%nE9-L``j8)9;BIrT@c%sHeE8fIklDPZqDn{ zIh{xGHf{apC{2+HenaL9qpoI|VnXdBskLZ(EB;ekxuvv*ckUwZM*E6={N zdVBTuGdHhaJ$w4VzNOtWQ{!@plZX>*^W$N0)h%8nQ{ji}&&n}*>^opf2OBCjpaV7S>9`_O&yq{o>B!hPi_V5DLFd%!4xtEgn(b(u zbI@AWav=RSyLhdE$lk10{wUbOs6zJo+A187_!k-P3-@kbIt@OLxg0MiAKgZd!M2j%lDK)$zZJL=+exBN_}tFi<)p{8L7tUq zqD8oqCuj}s`TIAXrZu>;XHHx=dEw}hh4~!cdUA_I6he!{Q4zR;21!DJzo3UFGRdNq z+tanl%tf_A6zHhB+2by@$)I^3%R`@OdbC^RLHrfwS?%#nr!69)<)THHD_k79gQX#K zeqUEPj^s|R_e36{kMvKY=6s+3Te0G_zH$HBbXQGQ#a8)O3sswxYHY)Xn-koC4*(LU?0GzMW-qm6W~EPSSwUS8W!PLXdy#(U&3#mpo*^Y9)5yCRQ3;vN%x(J9 zTA>+iIl)mY$)h$bf)x&AT4=ZQwO3wz{?0R3F0GyiTH&xLteY9`>uzhQOJT*z#Q=iu z^Y53Msj)L6!U3DLU4wiNlSgF`9CW!^NlcAysbPbno8>M>a9YOnU30KFvv&ucBqNp{>tuvYH}IZu<)B-`os% zHKBw3Et4&Qbge6ntkLcD1csZkGQ16QRmQ6BxfWFm9h0`TzhGs1-mI;zI^u5}PBn}; zj1}>=Y9p9Zrd!(=2O>?Wnkvn}U}V6@itkV;mIx$UDpDzn1q6q#P#}~_Wkq@2u8L@S zdq-H+OsAn6dy>tYKhpmboVk~<2eg_I-hK7z;l;U$29wN>kpVTD20S$oG3E3w0aXIR zHHI%pC2X8sYZEgGo)USpnbHv}Kn~dHUUnL@jYT>S^INlHTy}zmEu`38!A+wmcTT~o zLCYI9@#)w|P&5kfW%6fC%5$Q8Q~1R+5Y3W*->gL`Q;EO)@b%XozW4HbFFt?w&W&qN zt)4o$w40Xepi~x1##2d#dE_b0F3VL_BOS%lsR@*eh7@~Dj4`0Bvy#`}e0g2J?Ov|5 z3vA9a#9Z~fd^%{5lwPWBdU(9N)A6Cw;nei5=eJ<}YIEg?Nvr0Fy_LaWb6a_*W9?Nn zl1IdL|E7*Zo&r5%?wyQqaMy4gI!q?!^AukjL}nF`hlm=ExBz&%Pbk=dh@VB#ENe)) zf0>OAqYFEEP89W>-ab0g-`mz&8IqdY^Za}vX9yb;rgD{{M|jMLvs1oxLt^eb)_zO< z)><2OR+@xb!27FQwUKj{aFD&PjgwsMM~^J+0olNgsmX1C8MlIx zzb+ZA30DMUyg#OW#jbO9A>*oM-2*r;y4gd#NKehO;dR}Zq5rG+EDeMd26Mez&$bt3 zo?-^t{!D?4b&Drc)W7-HVx5N$UsB0i^LtBrJkd7f30v0`_jK?4)Gx?n4(!Iwb$xdK zev8GTF(4oAWz0Lbj}3IUWOXa*p)YNE$mHxbM&fhC#Y3X%g#5SYweV}*GAO1(I^=L= z{#~Y60UEaHsqw{$#U#P-6W&x<(y=cdRv44GD$Oc#`7pMcT;x6fvfUQ7 z-gs?ei*z1g@O)8&?AmC%b#wndo_p(!d(Yl{@z#r%pE`dI(wH~)-&ou^J~{*nDq;qg zq%rsMd)1=NrKK@}V3!Ev^RkNUj2`;TbkTJ8NU-&+KnWvuDW#kVyGXcI(wVyV>DrN{ zGaEh0lz*U6l+GNf+P2!XI22FzhG_gb684!5`<u8#8ZtUo52zdu$_4Pj2+8_Iap}vEe z@I$-JD6#=}g!19yb9xYXj((o<3jf=`B6T zO7BcPrI=?<9b1vpOcdNb?X9Uqv?eIyD3EHdi=&|7nYiep6cs>7NP zR`K<{4XFZP1fc((o@#p2fuO%a^|k|bX1wi$+3a#w7R5hkLQQ6L$C5FzKKMxg=kSN) z&_(`l8R7iF`H8lq${V`zIw4(cW!?a|ycWPi<_s2c1_4+b0aG+`3L3(q6qYUq@lX$9 zAfDPOPC2e5qbE}Vw{sC0O#S3Rn9|0-ot_2XjY#Z$F>S(Bo*M?<~ z^Kt%oG4D`ZLCMur4Vq&9Ax)CqWRU0e57qpZFsIVx0Uh_8FpQ~ zTf$3Z2(#O?zN6^Pp~_+%leH^ZN1?jql#cq{bKF7hgN(3$A(M_)tLn%!1!71yA!dMq zM5nbNd4NzBuQQ1uL!iDkw``U3hE4o^mKMb3cktY<#T^Id4{o0r8R|t}4M~lB$mjSu zwL+F0y;&ko8@F`GOGoi+PO#1)*BzGMn#7>y@#~LzD~gBm7s7tjW4-rxKT@5t-a&^ZL9jd%_bkmxkK95z<_yK~Mn*gEnoa5}85nRVzm ziwof!+YyItk7EZ8!B{`a{V0GvRnF=e6j1$Zu^4e6(*amBO1@|BT)TJuo?Q4H+`nhn z>@=|!bhJ^?7Yd?Uv_RWry^;@}mc;r(0iYeLk)Z#`-IV~ISsp%@2pPGXz48r2*meV# z=Zj9C!B_2$*whPV*pe{ob4F_~-W+ca4%Fll);zk$Zk<0@-1EOid;JwY=l|kuFK|?U zqt_vr*Zx+uU{&c_2DJ%!S;c|MSaOsPJoqU)Fcg?qTUxW`|;k_CAm2=0B z?H%t(Rl5vq7lP1E?VJTTI^gYSK}-Ya?kb2lAmh$(6?VIL|5VPJuqmF$=-1AndGK(Z z$3^&1-jn2}n|+c^fx9>Qacq~2F|cKSq|{9fUb=YtB#~0?T9}$-bKY38zK#UG0VHCK z7@PMaUvN$!6sICgAB4DS1cF9;4L!r+uhCU>@*s`ERMhbpz2u$Fzk~b+tvY9^RSuam( zwTJ13W3h8%1C${5D+VZPl8J28+}HvOo9kGh`0b!vOxh(Y{8hxTxd{`hxT*R^#IOmr zq%)^^?zy|SZ(YB7;oRv5XCAC9A38vMlypCLwu1CG60VTuUZ?m|#TsQ&n$^rdv8Y*M zQ^ZB?um6!8HnWMBwZ@aT4MNLh1!1$JFl;`@ZuPG>#d?qBCS_~2*bPy4jaeEt+adsf zo3jj3{xSHbqc<-Ae%Y!VfyJ@!4F^02+h)lWh2yaB0JR5MYk#US6I&q9lg=g zRv6(6`!*P_lW1wV=r2Vy$0MaJIXRQlbV6j1DQ++qfTW3f1SNbdR z*^LABUPgq*o8_b3)Z~n>@$5c&i&aO5vM}y4xQwg)7JoFDngnfGw0}p_v5WO#X92k} z+L!t5m_NmRahBay?ElHZbJN{)K=+rpn-bX8>dDy79-JKLYL0qrh&0j>?S-T;dfyr& zmP)Yg$sGM2@$hNE!$-aK zLhf3-v7!+>DFg~)ydkLMv;m1LURn#Jyj$|Q?4($nBr2sm(sN`{KvopZ#&bJ7+8yz5 zGPL$vF85%Eqq%=H8b}XSG!8`5O%{vQ9;o3}<=}7mtahQR&Jzncy`Gs{wUtRt{vGnt zrI{lMr^~U{PCm(}0%7;x__{-xJsx+W+RM9L^Mk3udT+AIQEAat@J-B>9{sKjQXBHt1e@&40p*(J^l znQ00@%kj-{ETe^}7c87rZ?Q7Q1>T@v70g;Re34O$Iv@(07qth`crE@EYwV)TFZv`o zSji`m#e-*3ULDzzRA2A*ry+h8w(3T4=}UFz@;Vy&GGyQz*Hp6~!Oxm?Jv2wQ5#? zJLI=3wU^L0Hsw_BHeq|ni=_TNrBdgA)8TYvS=e$QBZbs3HEB<*)*Chdg?eU4Gn}7l zX@;|x`%}D`(S9&*800Y_L}IWdfmR-oW*AL6<9XT|r;T&5nF6syRZCBt=$HQtJEWAG z7XJ~9$by|u<;Sq&nW^Eq#hr6AljB3s^Z~q1p{&3>uo$dFxdLz&OS~Ms&7wQzGC#id z8}bXv77tV^6njPdY-l9hy_8!PJYs_&)j`AdSP6;=`Ar#&jd^K*Hny{RSLeffo8k8J ze8#qKae6de;|1W;Lb7edgO-G7H!=aF{OHd^X-lJ91&;^1xHvbH;P$yt9dgvInv<@cy$^f z&=_uPT6V=;6-`l3s>)o?2y|b(x$Ssu6%KKl9b$D~Znw)f(I*U~aa<2NBdrlDXdFyB zPeUr!7;M++g^GHGTJh@Tkk1pBJG?mung2y+I@mW1{R5m^*5~-4_I;(z9d76v<$W0OHPbdMJK3rqA>O>1n!y2{%Zv<+4UTnnv|-X;752JWdvz6`Dja?5fhV{n$qTlKl)_$K=5XTs1Jm=^h ze7dHpyKSNBa&8iK^)k=TvO~J|8zTOjdX>okf2`k!cXp7w#P7`rPn}&DX#kx3co1TE^beAhLTy%Ep%e))6G51pF6C^hfbo+d-Xtj^Ncsrk zd`RC6{~N?@vBZ6pF;8VWn!ZG%-w zfZQe+bUK}W8Lvz%KFKq-^f-#XaAsiRA1rzZRj$~4$o_CqMYnNwc6bO^!_w^1j=9lo zLo>rO1N~6aZ5EYuX=VeV}MqI$Evm5%Ck&Ay|m^o>{4lUSSqwp9CVyysqSl6xUz86WIzLjqycO0T(*1Mk1y z2mm>eBX9QJq7+r{Gh*9+vKX2@eO3^&;8(&Oc>vkpWf~~iq`@wWPiu?8yeZ|^;rT&V0PbSXx zOxGkkHJ!?r3>sKJud%0m;5Dr?)n)+^IbUo%HW9Dw8Cq0*wfJU4J%uayJ};re`aHLm zaXz?v6>E$KmgaY~S6XevV@$`V52H^}FGO(jcIf8NLcUXjRYWZ0gPVzFRW?G*V12{| z$ptVNACZ8JV$Qrp13)*Tn^?vVX9Fiu7exL5grt;si*Mb!a{1Qtx1PWM-1TdhZ(g~H zO+$v4n4R{Lut!6(-phE4*Vik^jiQCqCWfa`xB2nD#gaK^&roJ!SM7oE&y-dzSgRyI zFtBFK+9&ubN7T>)EHx66`%GKQ zWNR=LuL>lpYGQU_?I+Z*Ip-?24#w!#zb7sf(gv8A7yMMe3;uP0JHuCJgkuY{(?f79 zlT47^NyQde*C`m=%oy9_c-S;XD0D~@Pz&_}(K%rfG>T7&cRilvO$h0md|15eH~lbk z#y&uJ&4%@UD04*%WAhe2b=DCNWI_iI9z1jKG}GxIq4xQ%%`)@pb_44_1M-J~lb>P&VT`9W6DDXMO(fbx$k6mZz2C?!a*YR?J9U?N! z=QR?1u!m@G%J9WE6klX0LqI*832zZ!{AJ}T1Y`TZWq#>RfMT$_Ws|N+WK8gPUBRYw zK5x6|sd@wCh~r9}y9j^X!(Hcokg;7ma}cUgS#K4i6=;u4AWnjlf?gNSiU=pr-jWqF z5UX%Oa#n{u&soK2wdseYXtlv}DzA}#aMo)wl}k%Y*O#texpd*&@s%To7I(%HkL@#( zujEH6HNT5A?x5aAc8jwNe_@p9v@XJ$SBuwO0e_*hNQ5r!(ZI3s+~(CLT?LJ;9TVDu zjrxO94D0C0Yim(VBh83=c;Dx_TilC$UB>gmvp1eP20rEap|(nr`gD@$4~?@Yv9Sg@ zk!xsbnGl(U@>leOt&`1)C`lqw40l#t<*YS}*XySXf){U4E$A

Y12PpxVMLr{3IoBR`PE!hyyc>Cg7IHY@HK^DUi!}xy2~H>F%1^d)?;_h>Dy(V*TVz+n~SR^o6m$GQs-O;fgO#Fsp7?fXap~S0ZbX_o7p%SSR+z~ zwR%gZ-?eV8F)9W}gW%G+v$^P=zqhyC43CKA|F|V?YQu&Q;Av9*$V5_5bOEA%SEz_%tT zNY{v*fl&#GHPheRWYbjD$sMjvi)C7mI?0sGP(4e1YSQ zsPEXg0|HZu{zk>%3}PF`o!jS|OBPNHhJ6CYoe%p;d@(Y)M`Ja6wNl=E4}SWA3F!i< zORY16TLdn5t3V&tDafA>i0ZYb23IW4yv*Y@sWtvOzP+h06S1ef zfVTp1yj658RFf8~Tas^1y=pWx@=R&SuCK0_n?0R2%d~FeTubX6aZ8$h3XaNAT?IS( z+XDIkWb-5~0CAS!f{=VoK)fmVPfkF8R)r;A-Rl#f=UnkBE;U8HPh-)M zD6Ej0V_m%zM`o6Xx6wZ%(5SzFh8{y)doiX!j>6esD2BXvOt!&Td+|vDu2SJD8k+`3 zqeYC_`nqQ$kWu|zTWMeZ^X*SS{koAbdo=`q)VNU&B;?d7+-|=hMjYI{6OtB-gU)8T zKB-T&wSRV*__dJywSf3cM0y77IuC*#6MN!nPI{_~rmpPjtn(S$+O!_Fqpar`DHCA` z>A7OcAGfGrB=zvQ$AzDZ_oh%Bj)9u`j*;7oYq$67tz5gbLnrSoTj7XeWZYj- zS<|%Leg1ad^qf|3L;cW}r0S-3V|uk3=eM6)J-<8sF+gVIy(A5a#&IHXoCzIm`WB9k zB-nZJAE-)&gVM3$LHXbxC~Po1R<|T}Y2+M7_pVaH+N@hQ)FK+s>HMHG$w??n1_nDj zG0ykhFWglUiCCOjA5gv44^g--BZ7kyN4^B9f@>%V%AJg6F;2)aupcoC>O{3^W>!qQX>n1fZlkU zq5@9VV`87g0CVhUEW9v+<8VtOXLyR|jK}vLPukOUWNvR2An(&G!`LbbcI?ZHn)tiPV zDl9#nYA5F(!J&CU^+-V0;^TpU&O}FCgP;PKctKvQ!;PT)SpDbCx_HtVo*6)3SG?2F zxnQg?5c6r^!UB&8@%avu$6qcs1n{NXJx{jd!~cnl^~KW;H=Ocgfp**T>ejcG<>uGp zsP%VRUjvjxzi1u`op>?v-MryaI7D9L1p)$^5;c{W*~C9yk1Gzxh%%N=gD)oF@REx5 zQgl*=W<=z0LtbzOV-&NVF`VWLu;CPrM9|tXhOryL$-Yr{F@zVRmqZOxj&8{dtFAar zba-8ZFcEoT@sdc>5j_0a-GC8e=Sr`w&fMJaAqtNUOP5?Jj| z6zWHe?5eS8YPyv$UEcqOX(<7&A;QCap_3BE7t@F;9HU(aO72w4Ib~zNK+ujJk9gc zTg#tu$n(77#GP)VW@A9}rp;%3S?v*-)jC~^D-jRIGBKw!6N?2C374*=Q}=`!D0i<- zW_c3L*8itrP+`g*jJT8Wzo=a?#WLP7{OihzWds%%PtE&HF(FTqY1`7m>3EJ%fj1;1C#+u>)9EH zaO!^MP5yvrHj#{Wi02yy|Jr;3jlY`lmZY3MMK)P9vTxh?QrxP(${!+*rc6UK^6n_a zDHV)%K$LLxEFK(%K_>RBdR2adrD(+9b zddSv}BLTD9zQc~rrg}}*Yf7OpuJylk0@A3!`(2(fu3g)_I3Ha|D3LIkOWzP2JGMOj z+H5zqQ|0(Vg#}-_ddZMN<-qkEc#R|@$1^wD4@W~_s5r3B=kI5;Fuw26Z{hXbwzE=gaKotft>#^k7eted+2 zK`{hHy#v>S2RL8u(!gcCZ}EbHG$*#xYet~q0}Wpm+WXVJw7~B2JPwqN7EjjZ@FRZ% z^+UFl(Xj5Due|==g8?19F3q`&U^E{IXLak?SBAr!7vPtnsNrDKP(&1u!`*6M)4nyF z`WauqZpg){>e~E}qrx33mnZdcj(9-KYEx?~i3 zSi-2QrZVAYUoG`Ufq#~vT>lu@`JpphpmRYMTP%~r7vy$IL`5!&ebW&xvD}N1g!}ZC z;V~m4vopX@ShH$P)`C}|fIW4N&)6|I`T^NIVkkP+Eb_%z1|vwt!$%DwWl7c-Ig?{s z+!_SWj{(qP@ud=TYbs=FZCATwA^f732DCP&fhp9kcsyR62wEkzFLJ%_L9(a3GdA35 zh&HipDlhKbMRMtp)@X<%^2zKP&t-7yg^$CWmw3tAzID6wbYVwrz4C z7q%Aai+?t$U#wR--y&b?_{+bU7iU7~4ZLuc9L!02!&O7~Ed0^JkLb9%=Be8HCNrJsb;Q!Tt zzPHuv@wAz3dLU@%Nq4(j%{6}8=8DuMQ=wXqJ7f!!`~?I^V3I4fhMq*)*43qQDgwk^ zoxj8eVj&ZXBZQcukh3n8g2b021Em=Pe`R#oW9c{!5$y&ZTSWm&m_jXv*rKQ-n@&KS zLx79*jLFfaG=WYEkYBFBr7i{}vx~%;-qe#{@8c>f+B> znFrlA0mM%}pm7LT>#Yja%gPZauB`LYWgQTeLrCDR4wq}w;f&ma9*!$;^VRtdWF z7D3;i`(t}~>oT)(g3+1f$zuyEV*dg-6l=df7P!Md#)qz94pa%x$8Hw&NLo0qH(+dG z`g&CszfsV^Y}ime9)U-+SoaPjxk#>2dHM>^8Di~uAi0tzn8@w@W26>^+?KgikV$T& zbl@9@+Ja?-M)xLFO>D;|TzP|(J+irc-^f%6-e4iPg)`(;9r;uT?I&pCEiB58f}fK~ zlItiLqIY^qTbZ%!Q+5}30`Lg&tjt?ep~ws2)gj?y77M*;;&NBGLz%~*@yp9tr5Ehc zY+6crBd=oyUWi7b zdFkO3g>&zg<$;(Vg+v8tO@iUFu5r>-u$n=bWyu?^@;%Qx1wt6D(?D)>wQ4eb)Km^< z)?`+8a)1+uVSmKM&e_(^8J`kB9vaYeYp1JQ4)I_N7{f(D%Xn=jtzi{1Bedy^W~3z` zLLuD zCHU;9Qih0r=pcK{X#*xCO3!5ccO+dW61cES#g!AnO!)<-aKU zXIlx_@2zmZ`IiSq&P>y5XZLhl9}Y!+hbk%v?p14AABckPFi39-fxs->i+X!O;&;0kMf<(@*F*fW~2GwcxvjB~Vje!=dWGzL$r~D9&_7C}()edHz6J4Mh}|5XsjHZ?Ht*Dp{Mjx3Zv93V zEr#!l?nwOqyGIO$y#c2lUVNz^f6ZR1NiKr#gMFj2tc5}qRQ_&zvcTHxZqTK$IRxA` zjLoGg4W|^8uEU)$)qay%-f4O7)+DB+4_|}1m!Y4hy7XWS_wPw8>7>IQQG_`F$y)13 zDTAnE1au^e_)!K;UPmwY7j(qF%G3j$T`ItQIgYWPV8nCMt1;8Gctm)F&KIVC37=rQo~lbNlxt zBtkNU|PUe$iit8-yb&0)j{^kBsYda3fHr$<8v(=QrB94w#TWwEd@rbe&9g-V20_6F3DfY^%x_JdgQk_381lt4DN_%U=j8mz`hcS#2jEO8VM(&Hb*43P^3K@p**YQ z?u&@n1f+a#32SNb-*oX@jnYQ0ovA~M_8R#8{I@n%Od6;srAxJUeEJFTx@hsk zbn;gK`IirGE)Mg<+=pY^3Q5T9u|T#=g>Vw?+ZIwx@Zm_|J2s<_B6v_D`q!t%H3t=)N*Lza@v#X8i&F0t+3FA9<r&5(SQWyXC0gKL>sG_5 zJan+rqjA4iApLT|bpP~-ru2cK?yEXfe+lPMwZ(lYSb}E0o8MgW1dDjJx3bU<$=vAU z$&&dIbFM(ViJe(Pqh%`|!SKFgL6>f)JtDCeO8Wf4N{7o?9b!R#dNE~}D#FrPLuSsJ zc!LPxXaP>RmD%RDxAP}@lj;%m26yY2F>>*+Gv~gT}4KGI%&IyQD z`1q@4z|~HFyHsr@Fw*$TC|cV70)p8=dpxeNtouQb-C<)!L5Kai!7cMmXF5hl7LU}X zl96(3bxeR8odGcE+hoyl&GhtxR0un z+#}yxBE+9*Mqo1WcSK#WV&Or**s|5ymsvSP0B7qxFL02(2~&)AM&PGofkIdIUM*m+ zT~h~BNR60!82*->7TUZwQw==Pgkf^Y6S5X2zc$7vwrp`Ll#lS92j!1UR|s70cGvlif6NirbYA2-eC(U}ZLFB%_eq{*qosxou{O?}TyTMeYgVUIEu`M>G3 zh*J&=Z48B)cGUCHGZjmtqIv%H=L*2o*%#Zio$&$a)Jtm=e)G)J0o;!(r&(g z|H-Gz{p!_E_or;cAlsWiSDfIdPQ8;HQ`F5M5LIWJJd=lzX|_pkP%yaZ->C0SwJV2p zA4efPZ-0y#2)JZdehlCoZ(U8afe@V69Rmw24*=4IWH%f<)y)mGQ;mrsFp5!eDEMn8 z;j6yj+*-RoIuY{EtL_NQ8}5y$GBn7`A1kVvFgU)tvUkd$(LGZ-G<8n_etZgPdm2qH zPm5XC8wl!qTFh=|qe0j6WwV!GI_Z&3HXBhfI=^f9hrZm+2X##wG&!v8uGiZvwKw%T zQ2-ywt!v+V;z_*{QN zXT92Nsuf?pszRd2tZXW!n@nBoR7g2C-RPV%G*DSN8nO(!%eUkK-=iGY)G;^;h<8d^ zGGk#*y2Bw75#W6*3fPny9~LcV6_myT+AFW8E&r}e$xZ`{o7mxcO`q@ZRyHV_N;#Lt zpDi%LZ2Ie*R2EkI3I>6|NIOPjRMD4@DzWrGUCvu{EEAbOQjyyaw0FfH;op)d{=*m0 zXy&&nRcSsytx~qGpyrX}W{TQOk}H8cq&fVsoa3twWXut{PZ;2e4i+P^T1#vlDeUKv zujL>yZfk5E4S2A&R*?j~_0LD|OGkp9} zN|fh+0yM5|UpeM509@fHmm3n!iO#)QD(@&3x9OUx`Rm$l*i8&;>ksvpcbY0Y~@=u;0l0d1OHqhVe%S3>sC^2w2XAM_odaM-q0^3*b^HEvrNk z6sa1S3nDHOVd?ZX5Pt!2G3mfJ1=|z(-)A`x@^c`=Xof?F1P(980cUjrI*;ep02(FS zH`SgDvW&xO1sJ%NdOsHdKej4{YcOJzhCAuxAZ;GS&cNfU9if+clf2 zNyCW4-DZ7n*i5h5;ioCVTD`JXk5{2g?`xsYXKZd$yR|WT&u8QM;o$bS4V}s~Pa87n zB$0&3tO;CS{!&6F{Uh2KGMN-B&!IUXL2Kq3T>`bh#S(ZlQAVuS0zUzKZhS_Dk%U8A z22Sr9q!FZOVKUzj$U07`)GZqnn%`1F+WUWPG?gg2(6Q0C{x=qy=h9*9*2eE!6sU3z zvuWN}g|*Upw?zI{TqVp31)`BpT+ENy%YxQ2Mcknrwnhm5ABAYYhDE^shLPP{PobHN znsu+sx|@d2RX7}&^0d2NOjo+Gn2agUP8XduIALU4IgZxOFg6)iT;m_=V7i9#Cp zuwW8*!dOL|g)LHK8wC6WB-#9E7EmwYzGh5vC4P5i;D-rRR1Hf9s{JIauCgyGg4EKT z3P6KCX)z@PFWR>u+W9^Tne#iLeJn{(kJFdQjL z#h*-aiam>3(S;o*FwZRF`}97Rh{sjxuh`%ML{ z`NPt_O52PQB%mT&_mJZAF7bQlnB%Vj3=xo~A72Vop-o&46=x9sM?H&3F4|$)7m=a;w{2NN}7&VyAhK%;@{7OBWO0Pr{YdJX>glIex;}H$d-8@ zYgEN3@Q&OcqqON8H?W72kh&Ohnrscqa8h(WtglA9XL4#%b2U*fc1DkkPX&XXGMY5r z#?-zGz5B&5B@fcyV^gK{;ap)jf{D_S=1Q`Q6xCC173Mdkbz8&Iq>HK>igU-dNB`%!k=wlk@BnjsqCn#}l%YtsjK?zd32GdGrUD2r{o6Gimsb*Fw3J6A%#3tH;G z%5g;%lNroAH4YmJvANK+U`#GKWi&KDXXFs5;>Lv@EpU_B0LQ zlX*?C{(?jup;N`)-WCYHIk_og zUl(t2xKSJq!jWv>)w+mwVnvI0_TYd&FDNxo)NNQ_oqOajXL3BoEfhp+{#6N-olDVx zFzgN6Q=~NH0($sz{wNGTW~aD0xg0vX;A(0M3HQQm03|}dEf3|ffbw&tKs(-HmqY2g zKQ>nDjDJIqKi6HDukzzRI^1x+3-jP=5uh~d?BgI$1f{C7nPP6g11Z)eX_ z-jZXC=LYQNlARzVLvN`Ab#Im ze@(n-XVzK7Z`h@K%6O3?=$z1i-)y)zQut8sp+1-U57hzYs~(duFmA{{TCWfKZ#mhe zG0{H&=5h!ZFk1Nmsp;~8YjC1$JQC1|7h``g00vgB1OUBC@NemzmL)Ov7Z zD4PP~d{OA_hYL6dUGM7TBH}ktW(xedG_BTVCpMlc#44~%dfX9cQn*AfBv*f#+EdFA zaQ&!ww|gl>%^c@1*yMJ>s8ZC#m3HTL2bi<&+FJrsz%7SfZ&YV8ru2S%YDGWNSxZ^a zmpc{3n)<=UL~=xvwmH7aI<&)5O*{E|iM#AgI@c10lcqN;1M48=}cmT_=5Mdaof(K-7$5%6$`#C1=c{<1(dmoqwAmV%6U;9 zI>Fl1vRPvDq0%(S%XMI!I3U56yvJ?7@uFTFq7yZ0;H}&<LN+XnD+`cuO=~zGV>8@`qBtFFbK%bwD0+FM6r{whG(fD-{)~URtt%HI6&#E(N zlDcqL1wgN?MZhec#{f@drAwy=bMRy=_9zSR*w_2tQZ^$$4d#n(K$>(K&cQOw(QlwB zw-;i6?SZ*VKLNk>#i)`lSYv%nfe@dd8t@(L+Slc$tG?|H265HR&qkF(u%%ofgzs9I z?cad?Y7B;Y(CCW?cuTm9rCcJ|E1Q%T<%gkv#CNLfm>4gg3fNiWH1)vW*44h z@i7e@a(!&%{*tZ1mv z^*f!qfrg673g65Bb8^5rxpX6E!NlHj8`z_KdlGj&oxYO}q^uTo#Rox%-wZ{Ktu;!m zCaW~HM(w;tFf<%rM?PQ+6yeH}ZmVKaxGm0*Y(&i8#@2_Yx+2pnt-MyfZ(4&6EXGm5 z^y?je%UX+31pP_cicvs{6pF@NjzlyPPDVjjG`56Ne`v9;)2P>4Ei+zH2G_=KZaKGY zYdTE?*1MhO*>M>50bRxOugzci^Pp^Wz>jahV2f!;HxYBY8JM;Vj(1(Ns3g|fd=tm14dfJG?5=gYBV5>ke9SaGf0Fp=5oqq zlg5=n#ti$LO6t<-HSF=uFwfA4ux|)E@{Be6j7Jp ztXwryrZk41i`tx`kdG;)k3<#aG}j2z2*iC#nJ@x>hNM3B?HWv)3>*rcQdxC*K>#3KI8w&91@-nfoC}fd#jw;z&{7%2Du0uZQ zP0z0(z>;1v&if(UTu_QPjNkkxoXLg8x8Dnwr)04viQ0QXw!=PU}vAzYcAZcf&Jc2`fy>@bL8}%lLauM!# zx33fnHJD~4&U1eQCyHR8J2%g*EseawflM$K)NY!DlU_&XuZc5W;K7#kKYx{|Wg@aZ zkGb;}+whH3dY4~vuk_v_GWBx|VF5}_?J>bZ^fh=>BT|H%6it7jxB+5!$@h20j8FNj z*%z?6S&UiDvmEI!;CN3IvEVTdEV*pJ6<`rW>9O#hC&$)64G4H<)v7^SErL69Bl|#R z()9xd_GOr{r*ZhIDHRh^`4AM_ZPcn{cL_IcPxEo>Ll8?W0~TB@L6i>*FFG}@#uGu`NIt~v$+R!|qxqu7Vt46QNcb0I{*6ld%z6ry^%K#tk zIMQX|>q!IHUF2MX<+op%JIR4WIfmOqNQv75oHG3sR;wsmEpFK#eG@pQtQG8lZ7K$Pl- zvxCpz;Qk%y3X&K4iolJ?uEG&8cw}WoXyidsNFZXY zcgk0B$Q}T@&xl=tQvw>k_F%<)keHyge`F*s?>71(MFmOK;$tLd^O(KmG^(G3-O7*C zSPD_#{o}0)LRbX75qXli24p3+o3*PnhlSN>4rbQBE1h^MWGt;gyPkog2#@* z6$pieJl-FH#&)29!Tkjt8z)O$O1;Wuk()f>v{T>*X0gjMyr3c0{J_5 zH!1ub9_}fH|AAa)zOZYU2V+!7Ay1{0fzqJP9{_}ojOu>{%a)yhW1<#$5s&BxvgwQxWtRw-;$+t zq_d2-k1RxDIkU!n*EcwIGR1idKwoEp-N9$$LpXzyyu zLi{kyO(uT;nD7k+7)-Kb(de%3WYPYs+gKwKRPRwq&)|iLWFvyD76LEj`@HfZRzz%% zU>Mi*-2@b(kVXa%(e!48(SqYECyflKY+gx?=Jpl_$n zvwqw>ttrHpg-kj@V2Fg-Y`86xt7hrKTfK3gQG??}rAVXm%TjRD9dHm=My70x%vPyZ z-<4CgkRhy)D7Q$){L?-b{lSG|x@(x*8KH0NqgcblN^C18pWBAgA^%I|(s9nNY7a3& z2$w2?*&}_{LVN(8-%jh2y+zC2IWl7<$?F1CyJ)BNQD^eoVx*MkHq>R5a#vi*2@Belcn>hd0?~a*&lQ4inO|I3(Lwaj#n%|;R1Hp2!raM z)+JU)Uk$g$m-XoVzR@6Au1N8<5wk`fj0zMI9~#yx^-Kz>1C3fGXw?f0r|jv+9Wj$j z7n4ZBD!n`s6)G4xB$!3Smarl{Mx)~2Sb;~@ewV2vF#Bv*zEJ`#p~`H>Zdcf=Ft-il@fkkvpP}jCi zqsp4z`X=6n4qp!$I;-@Pj^WMIoBUJme~R!6AODPxf9*n@i|#I{CzLg`62Ir8@{cOj zb7!H&R@8f!H4LD(E(v}o1#{Zo*s_%SP=aMysbg6GK0;HQC!Oy1egSS>Es6SESzgJ~C9KYZBj+mw z#)!!f@EMh$lo60x#odYID0wh7QfW==Rf@p9AIu(=up&@TIvpzcGeQNS3z+IIwj&T75Il}eo{u2~f)J;qU*n`b;!nPnVbJc)bDLZifcSl<~i zyWiu+;^~Fsp%mf~F1~zrgs0ryeC*zT&0}+ed?e=859`6i{}K>UoONqjG1{l(aG3N4 zWYxDU1}V4Ql+;S%;%rA}#^mCX5KU_!jmm0)^t8=+!t&Q``U@uvB(=4SmD}z!50O-9 z`d_pGvKSxZ=pU;)`=}IKk&V;Z`o-RC0MymCsiE4b-~q(6i;|Ou{K=qOtpsCKncPDj zxP&BRkk^B|*}DmurODLV%(Yz_zqd~fHn?2&>NdH_fptWD=@95@h(yJH#{F=E$#?qm zB(d21^kg|bzk-W%fWb09ed&J?pmH16N9(oxKG^rd)2O?n?1pGkz^CT1XkzM5F=r27 zGQ^VG4h$b$elCxt@&sJgfX}Q@d$Jsxs(~K1N^2|*eYR5(m^u)41v`hIcE|Xl#5K9u zIe{Rb!6*$yxEfWIEel!&04vvzyZ=^=l*v=7zn(?0Au5Jx-l&XE3vxZb#qw7}5NN87 zDn^uHTc?Nu3a7cMT?z{Q#nCfQu0&smoKKRUTT-4gb&7Cs0`%|sqiE#(TYpiJdZR}7 zw~Dh-%|BedUP!dacr_lj+@Gj$=X!b1OJMP??`o3BMD8F@ zZt@Bwbb0^>^Lg>~V&yrL^f#?Oq5NW(lIN+uxX5)CH>3U--B!@eunh=)lKI((YvGChTN zD~BSmti+AT@b)n@QjYI8;@{7fqCYckv}^Q7D903q>2f-2-?t!NNb05iHx}i-+^F^? zx}lHP7gEr$L*86>w1`aw5pN37KXHq8%=4)qSA>IBxs@~8kw zwcQakngR;;IduijNAXJ8HzDp!iGSL}=plOd8Bx(}x&tx4IdKwwEzcOW>Qs@mNTaz; z6y>Bo8bUekE``=-aj5)KO~Vlq(MOS&x*=3V!M@cL{f5!0h_71pagDvdN8m9WXaw!TG#9#{S}!7tD5 z?JK1rs;jg~OO!tJN*yaATWw%BAB@1Jb|Qlz+a^;LTeT;`|5uB@OJg-j zLsisVj0D9CuiydB;FpzEPf|{-H&Dka&Yc>A`nyskP zRFRy502(uR{eG{(VbXKyI}MWUC!&T*@lSIB#v6|OWI&zdI&8{7etLKjx`N+Z7BODa z3gBw3fm^CBRmX~n2@0K${uR*6kE~#5+!{?;u2h!cAV0xW$}dcUXR+)Xzp`$W2s4?0 zK8UmEO(C<9`c7PzD=fy1Uc8i`WFZ+!ze3Wt3i-ys8(TTN1Se|;CG?jQ4S^6KG)T8B zk0sG*l=*|P^MLGNvVh4Hp1IG26{TT|Mgzokhn3czTMHFn?&Bs%~#~J-`SE)GkSo)TAG+ zVAL1htY-(R9l^pf=Y9q1N^qW`QD4Jo)ty)VqOrS}z>!6af=M+6el85`XzvstkFb+a zARgd8_N-3)cdqPr5YO8fXO8JM7nc*lf349@mf#(jqDP08ksWYFSM2aVqP)-3ns7*C zEtUL?s7dL@DS?}EB0uUH<&3j(xu{yd{#OfQR4Vd|S$j+PZ^UG2TwSRgRZ#EY!&bc_ zDEtlUJYIo0q~=x`?Xs$b%pkfg!2dY@KIJk*ZDxf>&O8aj2bI*;>z@OYIj$ZLGIN?b za5`-p__NFZ{s2h|;7-TStR51=pj3Qf?~za#NhO9c0K{P7@b0%ckRQ$K({bxz5LOX+ zY(O}wR2({!W5#GviNg_-(opqZe;#ZekD#Ol5hR?u6k#ZV%6z30-LNc}E9t}uMJjn@ zMDXkq7y6^%ipll3fRAJTC!ehgX}F?`IYUo;!~aNR^Ewwc1v~tYj{ru7?sJFSU-~di z{evI+kOCS!5*PpFQ2OtK5fJs7?-=-(IYASJwprBErRcG_o)#Rftt;TXYreOQ!lN*8 ztOw(A5b9Ed$L|!&?>uigjysErKs2^*qPjtv4N>Cb1DDg>=ZM8I8hxEk=5lzDAK84xRJ8 zluf)WArO9=S>&o{M~dB4sTZ5WrolmcNuyjWo$w2j{mpLxZ94><8HNR&ecp*a;H@nR z1K?5G>9-K>LX(2~g{_{|CqfQPp`(k*n6SsmUO-bw2Dqw`D7FddURp37hH2Pxhg{6W zT@c|2|II9Nm3K7MX$F(a4uP>`ndF=F1_B`3E&{c(GRG^J&|KO(@T!E2c!@vf)z=7M zCb6ojGD?HFQmL%6f~riV%w)&FR-^U4GmD3w0blAo@G+4_YOU%aRx!QaK4a zEnc?k5hhMhwLZJIro!jVq+`%&FNQPzAH=|m7l@V1OMtZR<`dwMqkJbp0H(bznE-UM zc${Uq8!!|(&Vl5EOa}NDg!=C#kRs5_sBsraQyN-(5M#rDg3%+j145C*Xq9dX zU;R-WEpj2H_9~&=CsUiZO5(g4oervH8DS+`lx-d=vh4BYx1toWIjB---Ezr9ZL}E7 z<%Ews^V6`@ED#3j02yV3FLO%`&e*q{NO>ZvXB&3wa!T-55nQPVhxxhu8K+E~OY8WhN{^{BRja^X}U^VRQv>VY7%X}UVhqP6|p6S!*iGu)?H$ulOVwz)SgkP~p z{U*BxVx+(LO_ag|*hMq(q&mJfpjIe6@4xD)l_@-xe6z%Zo>+!_*g$;|u7=by>HqV| zo1vsTP&*uFrALrnfNfPd*y$<~5)k$tPV(GmF=Z@Kj?jl?uZGyo{HS`NHEEaFUm86X zO-*tAl-fWlKGyA?UTh(@v13K-tq`18v@UKzUR2$lQ2{#V9j3wT2#n|T@G>~B%l4w0 zo_8`;_fp9miG%iFrMr~aokdnVTcxHNV8s$R{A1@SEuiXw^zt^b*e8`}pz$GBpS(lC z+DSr2?{tZ@;N0NSEW0wKlksS!0(U&G)JVS#_zAGiNvca1O99_5R{1o zf5loroX}o9=>FcTU9s-jE?|?9|^H>m!wXEa9c2R{v-8E@+Pb zM86guL`aHl(vX*B7oY2!oT#}T9ly5a`YNL0#CT{k%8Ufe(%W0Q#a_ql0eFfm(}<)J zFu^h!2>apDK8>3`s8vN6^o28)CJ zp9%$d*=Ov>>LAK|-mVOQ4uzZC+wu{de?J2$veb$7QQ%ICvy~4||Dq4AWTz?Lcn?O& znxfD2drMc(y0)d&V-}$LFM($U+BWj@Wi5J-QsdJocpWS_&Y0^h6F8}&iwhmi&W&dc z(hSS!H>>!bpQ+no%tYyX9=bs162Dd!svLV=)JFq8r!X%m=ub3kV2<$-`7jPDkcw9f z%yYNpef;AU(eU&P2YtJxFz;j8TwL(%3cKak|L8xxfvf(Wl0Us+k5~ewgqFnwbm}4w zGi^&hCqtle=v7LWSF?qb70Zlwk_tXO`N4gN9)^$n3%)H0X>7o3BUuH3_*_OX981xj zZx@U6SNYelxx$fL`S=W$##1R5`2}KGq*a+Lm{ps5Ubd)T)#a<~RKlv{9ZfJl^gs5# z9T{0fILe09gqsi-X4?F~vsHJzQ>KXDs+D`994nKK*Gh$mphg%sI*nD?ra^q{%a0ej zAh%L$a)3goh>g%i2YHBAwKZF*W#TR&{jsL%f|Ari*KEto? zBq%EWwVxl`B(_$$?VBBeVaU#3uOu<8<`n9a7=K{-YNJUkja~s4v#49p!UPTOiaVOk z9C%n*>>_D-cm@Ue(~}=BI)(EdwINaafa!zX7Di_(^+6Lv+@l!D3mb<=vOc>YAd;49 zlIn%ps6oV!%w+7wr!PhI)MfKvIX`P!Iy&PE3d;2k3fwY-7qW7SF?Lq;l9W=(X9JU7 zmP@o@&=nX=1sc-^m`7L)x6#aZ(kF;TRaZHZ3UqOwl%;ccsyAi2-?W0Dzg%S6snxY$ zU?Wo2&*6!dsT3Pky3`jFV5t@*|7Az#G2dfqPLzY1vL~|q?MuHu=GFkt$s870L6png z1A{YLc*~O+T>}2mhIJEaiixi>+_CGPsT^vuJ}#hD5MSJ}{l1nZYF*B|5HI5F4byPC zZ(!kcI9kAiM3RVJE%5}{V)+Pse_SG#4&WVZ&tb&>=5ooHALN8p*F96XRH)b-u*h#- zFp0QpO$1r}Y{_O57<_YE&$TQtt?&76oWx1576^X*lZo{Z@lsBl2dd_H3F|^G3-{3T zaM4RS*czyf_1&Eg+-EI~(0IS`^SonR9M*tfa zPW3r{tqL;iSHWYz{IE1lh7&Z+_rft;NWCf@hSzc%0GQXTD zi1urB{b}~HBVd_K8BGlv(=SUsLtVo1zf^zFjES;YWyBzS9zA4tTz!)3=U>;buITx< zFE_tk_kIstILGbHuN5X3yITE@#hYSWx!Im7&b=iil9)i11A# z%26#?i^;=MKmrZJi4=eP2_wm6116+sSWCz39Xw|Ti9S*ii5susgo_rvOD$txa^rKC zIRbSdw_FKUGc2g457e23oVEgCWI$`Lvl_jIME zfS{c0qLABG8?TZ_3BU4?tZz>F%DEOmo%N%Mu>0NvW+{2-ON5f5X}$9SiiHW-C%vnm zR8Ks(!(59Zecuh$`QE!3TLZuVQ=;lq_fP(VaK(%MRWZ;1Iy-d%OfD8a3GC*la6gQW0o51Jr0zVJg$mzd_GU-0A2(P1z7@n37P<|%$*Hm9!h)AGJuEIeyX4`l ziQ?Xcur**z7o0!qgFh~sPbOh!7KHk+6aT%(40CEo{OW$l%X|O+y1CJOnX$HVi$*&q zcF(1%ZHT_7Hm(~H@JY{~ETM+t&!*5Tg*B2e2QwL4N3mL-WzT zS~q)0DXSvWjM@jAsTo^ChzF^=cCag(FrSqf-@ZRC?VQ`Pu^+l@HMTn^>ugonOPUN~ z`TX}|w=EueyrTp!yc0yzCDUr{vVxMW_PLqpIhT7U5UQF?9JQ=<)7?=MA#8`RHLx9~ z^QeC3bJ+hAk={p*a}Rgsb`TW^xYiaa#s(0yBj_EVZAuP;e;}>nw=y+`^dz5+vWQ)-WTzY+PDT3teM;g9w9*Bi(C z)j54p`~>{jRC=|zRvP8Ar*`E?>#AX{YuJ)2E_r+#>}@(83hCyr2)AicJpMHbHB%Tf z{LT^m`sc89j6IVd_wjj!+D{9AyLxvI5?`6BEXU&ZqXrO&c!jW2xK^}DCNpGh>c%xm&S(~gK zhLCGbp_yAvCIQd9eku+%B>g{?;Z;Z#IU*{`xYprJquGy8J_n%sS>iJ6tFxJbSQumK&86N8TLE30x|z0?B{dIH@WTV&PY&e_8XwuZLD z7iCCIs+?k7Mazk5b6;R<;Y5ugH|37VU4OaR>cb-65$0SYZ4aGHqipz|o8pc%G{3`P z%Q5SxXwU;1IYM4Ie^S_hdL_{7Bm0}ZAfmbXZ6xFC>oT-?|G4sR9}-{LhbcUDv69Ld z76A1d*jJLRw7QKmY8CN&CQ{uWMF^9}zTJ!=73AJ)Sxzs3EQ?KhYLYaj>Ca1`sm8dl zRd=qhcOiii?x-*n(gDeKR|}LveHz3Ig%JXsf27!1<<{!btx7LgE7tg=Tm`9+md`H& z?HMKq6nCv(rU40@JDUCN$=R=`4Q&xZm>m$>pX(NLM~@nR{;t916~JSLAx5V1EW~jE z`}c^^`RNtA(4U_TOhLal+Nb}bo0itN0Dfsh#MbSQ{QmK)9tit!NeQ+Y0hk%X)W$+$ zJ3{j-ItR_Cua@C!sd23l+s8p%Ycg#Rb?7jGf{poB)LO6^EW9=5w_LE3z}_ zozK~B@^VDX4c;;#-41jm^?9yxDo=7ngLnP~dsyNcOmu-wT!Y+DB5@>a-!$iR+Ex!& zB8VxSuCSU*dULHuaRG`GcoFOyMi_fU?xb8U;Z}$x&XuhvD++HV_$8SnOQzDTS>Eyc zK5@E>y^SRo=5t(6yDz6x2KP|pQx9Q|rgOrjbPd^CbZuA%kAm{OnprEhh9L%x#0ZrC zIPicIP@{fde1R}7%f4jW>ZLm11J{@djta8aw-5EcLpn*vwC{NME5Olu!YM=LcZb_% zm(tbZ$wJ^9ZH|wqN$Ws{H5}L!bE91IX(RMEvMQHos_SD`qvOmGZe}qb_oTq$Ir?}K^ifE_b zJ7i2-ZgUCA#|C|c)C~T(_~zO+b!>5udRLW2U#g-MQJT!5W&X4i^>y(TtU5f<1AyJ@ ziDI*h6vMMkDWWPzBOJ!@v7|-c*T261BP3Bl#oV1dGw^9}44l_$V7*I)&_lfM5v(Mg zZjSD64jA{=y0F9OEyn2oPlNw&=6Ub`{@qGw?Nr#iMGI-sp4~Y?-gqmqJne`!RrNI& zw(B~48K1E^L)=ZRD+>u_TlIFWnl3$lWi;dxAC<$%_$@xJ)=}lQ>b#&~tMRs+#pFmY z%bZtAkgwa<$Kry}-mL)Jf(hqUi!51}IQS(I^z;9f4!LFpEra))srBDXRveM9${-YG zs88=_3&~W{jAFM}o+fLfb-q{0m~)s;e&2-MI#+Q~pF69c&a<`pyGP@HI@Ue`i)eTm zc!VzBp%U(2H@DLbREya~IbGf{m)S=E`e4=hwN4~`@3<(6a6EO)e&Dfc_AVC@dLsIf zg4dRkYe@?2!@unW7wkYSs9 z^g%FMr}6t%e~JnS^(1bsY^iakuwGqqLA^Mfm8YVH-aiIumK(_)v&jEU_=nnf<$5`5 zVWf7-_YL9t6GmZ(p#Wu);&8der7ps)ING?nP1lWTF>%brT3&e|Mz7DwMvK5z6Eg+CO$G zOqi<6X~Js!+Gl*-Ud=AT)L1>BPe<&GFB}OQrVM&_;egi5EeDNksG*$**Ec%skRe-Jtw^-bVlvHx1- zIROrjA9GusE#{73{lpAI%tw}dp(@#w5<}CpzumXV0`_}+i$_O#y)8x*sD5{i&+@|N z!>OD^fTZR>oX=GpdI>+s^-bp5RTCAIq*CynLN!q(c+UFy@uwhOA`H=AQ}}uZRZ4Fv zqJ_;@8l*v(U*+aJGIl->F*d+74-k&|E>Mj~q zM|djTFZLn?Tq{#7v{OmFjPge>pxgQA*w-2f2s#~Zx12q$njK2^nzZ#glP9_NFtPIV zR-Kawz?=TB-S3J5-G{GqpUEsV6!qbp7^nQsWi!7Ic1=p9+0FZt66~BZ$ZQq1A zxXHzIpxZ9V4@oRRLX}(`sQG7+Sk1!*Bw^+B_lKJdhTCEs{c(Dg%;tF7xWK{Jd-%o8lwZjJX|&9A7TW%nfB z^2{OlWE~;P`Ohp)i|((b+A4ghR$)#OQSrM<@1@8;pV)aTs6M7%q|!PCUp`HRHJ~A^ z)t(yx1Sa?4D8i$-9an0cW<1BjM2dIGM~0tdyYB2ct=%+cnS#+;8DjeuOMG`XH(w)Y zu;Nl*a6@`lv{jks>p_@s^Qqe9c$JK;3-IV2^GnDa{4!j%E9HLOgF5*iD?W#{^Nt1g ze1FV*uGo&4Te>;r8#$3lS*=b8cr8X#D0GIX^RR!cC|zvPq^o3lTZaEq@ays&tO;4f z-1IF*{gj{J)}WR3eeBmTmYnzZs2g8kd>{_kr@t_QBO>R*+%aYg%gjBF*7zHr%KG|Z zZzK(q4bqY%(gA*)C(Q`wT*;1GUqDtW5s#QvG6~wGl?Cx0E=RCxuF@9v| zGvRS^8aMucjRyjka@s1+$TiJ1mEXVqS;MifqWW;sx!F^#{(i@uA1%`?RJR=d*&s7` zSg*!6gry)D()f;FXtt?{8_iR4VZ`>-wxF&w=(#Pzm|o@AOyvSwCX4)2s&12m%20`A zZX&P=JT5&k>Gr@**G>daJ2bp?M#C{g%|b2Bi|Nv@n(xdjVUva@W%%nDTT@B>x@9;39H3Dta zq*p~MM0(W`oK+lsdLULhwOJPD*V{x+>b(xG!lR+kWGb#difI$zfvPqAkLoX!JvS-h z>ZV3ZA|EBPgMrAlUrsMGK@0v2IkEs(_-0!bHPBm`< z(BRdI&&?&*;vnAGNsq|y6SEcndXb5~QUJqlKsA{;ALS}3=Ax#n-TD>DZ6D>H?Dfov9`EBNpoOM@O1}b>^_ga{4%uz=J|NKV^w4sEFM^G475O~ zy5N)~%B_l-wq5KR*HSXe?(3!9TyDnZhuTgjEW`v%Ixe&B8I$IjG<$oSQl48cw1M_k zarjRjzMKuJ^nXq)50w$_>jzUCX!hI#oZ8*Kb<FjorkN6T4}x$DTHE9K#%LX6y?N%-EZLlx(=orwaup((NQq`{iLi!HD1TQ z?#R|H)zDF>*b-q#ww2{$G&Q5j;M7)DiS_OzKiOJ7 zB!M9REA{w4gz+&y<4@X}Q#xz*6f#RR)&OX+nqra0x)TQ`h_Yl=Lk(GLjjZ76^UD1p zLwDb^a7RD2u|GQk?VJ+Xt+pJ@Z{`Cr;`K*rgAS(Zg8g%T#%VtK(N!P$%Y4^XyazJ7 zM(@p>PRcSA?7<3S_wdMcj5~1v`O~mlZDF|#B{MKiQtG_%KZKbFKjh@5#o^=i36Dk@ zZ_C|dwg(BiJ$IewY*4jTYv;jVxilf)5ci97C%@x!=#Z|VHs~RIvw63V*G+kTFUqJ- zv?-C2r*mWW73ZhbSe6Ydq#HHgP42_ur^zu5&(l}O%AP4Q-vxSM6S2o~mJBWl_y(r= z2L5qH_f#c8HMf}Sb^6H6?lqqF6F7Fx=U2{mA@uByqz$7m@9e(9!9HS%G{6LcH6Clr zH+7q8_sXzyT;K9J?3irDT4L_u0Jj#`UnaK1{ZHbIqGG#f@7;Zb@0y_|z1ELGuBCe1 z$G3l3evaEF;-dp4kKkK7e0;jJzws1}9BLILz{PD@z5qIH!bw$01t4mcB z{R7ttGFlvHRE-l8mPq6UsM;Ja;9iyt>mUa|)}uhmsD|3*MJ!taxuYfXIgy_&+Pmefk4JesP-e0_`#;Q~37JKY{E zD%+63>Wiln&T@Vcyo*H^LN$G~^bftbxy)CXGOk4}1d`=E4-yA@4L?d#V+>YuDVVyo zp7`&JB_APBCe0xdmiLUHNQU0p+@y>lab@gY=#52pp=Z!;HeQJlc^NciebSVX6tk7` zAnQ?xpG})Ch*_wpvtAQXq&Y6^&gE^$mWih8C$jys;_GbF&-)x!hVm(2u}yD3_-=-1 zd_AKG%H0ye6dwdOI%E0m&jjtd{La{i0kHY@C+bYIS-?WkWLY-xMJn34ke4ydwP})^ z!*UOuv>B(3j8Ms<0g2Qh;)^HUyJh_guofSAJKq%k4G`d*k7vzDJqv#8)8>d=R*=1x z{_h4WSn(CJqM&Bg%vy6-Q9@tgw^I8W)~>g3AR9^&xxXGk`=+jMh5-KjpjA1%G!f!F zojOkaTjMZXyHMMkx|<4vBngWR8cyT6qDPrlu=Dx$1?SB_jd?N-awxCw+IX%Q(1>y4 z={XSLn*Q`2S6Y+OTT?lPIGf#2%r)eDz@0FG4EC49kEd4BAz`bMiQc*Ks=;{AQ%lLS z_&OKZ_G+oXp|C&(`LPffQl83;!)CL4x);SWc|=f;fx4yb`gBIpdu=vfO;VfAYO(1; zq8CNMu2P+)!jDj15#$7$d@>C;Zj6~a`~fM~fAk$;(G8cI-g0fw_i+M4fH$1y>5gR6 zoeC!W>cGA{n%w1(a@Zns*}u0x+m8RLw8gF9`=foUs36H^b0nF(C!^@qcW;~(GFs3T!elTjJGO?a=m=!tuF8`mL+b&XfIYr+zogl ze{r$rDF8k;EY%whJf~V;)Ik*vMudGj3#-V&7r>_g0C^5sdo{~)tOSKi1sW$GQ4@^A z>NG6?tkL~2n;>^K_qBSds|aC^VH$K%vwq!n6pIA(bN2rm^Dm>?xc8%hvTQPW?l>7A zO`sA-^)P0dESlrBRoIc$d|aUA{R6@u3F&j1tPGlhgintWs6rxkDor?sA92qkf>is# z2rrQ@G&w&$&1;j})RG64_B8R1E3i|3sP53A;(Kt>k(VH8uw1NycA9bw5Ic*ut1&;d zXc`e0q+Aw+o%S^K`}e{$k!r@v^}m?H^();EV>eIX_>^+7eeY!d1eZ$w_#69JBAX z;|TGKijbGhNanzg0+9d|{ywF_rvfcub>JaeHA?5C)C79exdGtpBBukGF6~H#hCwqh zFlk$VZjvsQ#Pw@QMr8}RjE4VHo;N~c!sZ`p;3rT!{Qj6tt4%Gp)|4Sz7mBmQI$5Hr zeS=&E6x4r4IBa8=iWS@|w;w;9ur1W)P*Lx>h7&N-wm;v1Ly9a0XNbQ8q>gw)r&`|n zNaN8M4Jo~1zg(R_kkBPaH^bj3Qoza{GtEPm<{@2~%GQFcPoKsDGEiHoEN#m~uJhyJ zkB(-!cY5W|*J80p_0N=!sKH^4>Oz-cpZsHQcxB{0>Q?@N(~6&gC4@UJ z0b3$!kU0LkP5$G`XWFrH3-58%ycm;I($UI) zzx*cZ4A~!CKBQn8!GV}c=8fosk^Nh=1wS;}fl?pZlDYfebUmF_qOXVwp$XRs^um;hProGDyvA6GPjBTJ`s zZnKJ!u%!Q<4s+!nvFpb_Q(H6>mOQ{+dHHRfANj|?W&1hIOwH%}*}MduTy<+IP_>t~ zhBlC;qX_lx;B0Rw!u+O8+acuW`!2x^lhupJ1EG8eW2vazUc*d8ZeXxoGVHHgZZGnU z0qf&{M*(2l{jkLm34nAt*5__;XgA{~D%a+gJ#mh+YEn*vEKKAHo!7YCepwLzj2b2)&|&z!8N94_se=r5*P?NGMuVDpnn$MSgu<=P)6a?83Cjk=3cEruc1;Nz1aj1K39 zT*C+tcuaESBI?_^z_+p~Ytg3aBvxw!r?B2 z6S~q>owDmIy0b$Bzj~d5JxA~tud+x1_Z6?4o{gbj;rHpJEIc@2w?=8#pKIlf zWfDc;4fNh&;IW*A#5GNLZGGn-L>?0>ZXXg)7iGTp3vn~8!7OtuZO>gSBi^NV5u)_g zx?Am@G?y5(^Z=LHoA|IrC+VP(zHKmV<9BcX<3+e-IE@qZ7~L|+00O!H1IvX4!1K|N zVuz4ETwV1{xdh!HYG?#E?dgixdZtfLm*)yB^bp%M8@$!0&uiOg8Cb@Koch-q9Ki{p zAiVl>|iS|LdZ&;k~Aa~n&GUmMae4k6d88_E(O}&yt!qTE11xv%97VO z_3W@S=&JD$purJ9UbtAx5SoP_s@(|ai2-!BSYo+yHt1)34vUIEEv)Hp8?8B}gyeVv zPUk}NtD%#yrB)9JuLrVuP<8d|>L{Mi+4@zO$HmWO@airOY~?}0O>u3YaT?)xc~ zP}!&Tj~>`>4|y~mcdXli^BlO(oxq2<^n))CGpxbuqRoZNK%rM5#>ivXT#HN! zRQXO?=|gWp+?)3lVtj3Avdmvvg=X{j70lca0=s0Gth*MDb?Sv-sLFPbf_dy2!TM*& zZfDKlVR#7FJ3CBgQLfd!u9N>U?dLFmwpbBe!|NeyIvU=&V(@Lj;U;z__5&K-F`+q~ z6BG@G>EdVArNs4*AnalQtMiT!+ar3dCQ!>Wzi|W9$Z@$ml(Z(%tI}|9WD^wRLwRHF zdovD$qvPSRU^wwDv?rRkh++bo&YCe>O-Wq`>$-;BZ*9H;XLhme-LK)FlVX$&m({r# zPUI&y^PB-X!uB&;IKoj@Z%ImXWu5gFf57F2cpXYAlE zni*|yOQ^HuB&GJS)|UUkMz}2CYe$Jz>3T9jRwuA&0epIgx1>gr?_J+T&~C`gPmgx8 z#DZh$yZbT4nQcu!nUlwcY1Pctuzz1E7dTiY3VW2V(0hp9lfsEdvadK_YkYq8apfiH z!%MFg)v+EEE|IZ3h%-JvrALg#=Uy-$?Hr93?p(fb4#ZROkGD7U-F{u9|KZ^77ifl+ z%=_UAseGRCMYM}AqtMSqm;4@QLhgi}W2~V#ZjEcQL~-$X-{~AI%ig+F&T6jBP{VN= zIk7ibdTpngXj-CiT;f=_{(|lD7o+!Cy~BG2 z8@Ot8#+%}TKmL9(!)K0UsXB<8UXtUm%HcKdM6U?YAaDzDM@Ec-Q8r(d+}c(J%ipdT z<>Y#ax->HVm{OcR1}iAEdpPgU|BFTD-4vBQ{@h|Kkb(`(j7!iRh3s@bFr@FUZDgyz zKUi^tF4-+$%ljTlj!Bah881{|?ohl6RIS&tD?ZWqGzVRpOZAm}%aAFjaM3RFeHV#( z!2D0M{FOKx>7o%$M=~~ea{mT z=TC%(v-G@wh$-ns_3HQ6_iUj!F#0n#)9Kay6HD%f6F6Y&|4;)oNb?Avr3&h=L+ai; zK%1oCE1X6D$ae!y9t$G|-Xie=+@)z#mi^E7@56j<3t9lF2go^(Ua#G@-VwDzYs_`Z z+jg>Bcllr&FGQ%3+mN?^#5<6M-%%9$Hz)%Fk{^WD*{LlcdysP=g(uS7F;NzTGza3P z_^zwNVUss?huoD5bgds)h&d`VwPV%a61=kyN*~|Jbh7gH{2?!@0{+&k{A#TApz@H9 zDaLxxG7ZGnn|%0v<#JFcN2=AT!MKp?8u<((y_FevW;GgKm+2O3Dfw@*H-qfm=stT` zrkBP!12JJP*o>!jG(qj}#Ngp3=FJW=AZON`gLAUA8vK0A2X{Ey18#W&t2Ky;*P^$X zteYNjYQvtL2=X+3tD%+_x9Q^HFuT5I6vN;?=*!}`Kktigw3Ms0N57gqHkl^{Lw@Q%Mg{iwnW}ETkG$hntoHCGtBdRU zJ{|j-dv^IY+%{Qs+dY;qy@v!fA!ff1i~qfFYzFio=|#|eR4^iwe5z(dCR_D_qu%_( zygrxR!LPno#<@m)Mxc)9^@>PJq*rZQ%B0${jU%Vv(U}C-mvtNe#@Vm1&lfOUk0G)} z$lU?QzaRN=Vv4)Vc)^L8afLCgn#LI>gC1nK1$1t{D1(077{(r3&tbiH57q0lH_?01 z8WpJ%@OO(NcL=S9PDxM6?3`fpM!-h7CiU%9R|gkoQ2GC7wHg`E`wi+{T-xO~6+dCd zYa55kE^b7!-#np`@7fiA(Cfsp?-k&6VdkLUM+eY|9xn((c=~u6`6J)QV^Z8f3Zc1g zu@`_@qy4dy`*YJ9*d+UZWvzbu+k#1~l1+GrFn_ zH?%SS+F}~L32(~&k|R-nv||A=+7W_4ojgasXY;#dqYstAKz!`b2?Kzjl7Coc3qGS3 zXyG@7S}KV6yPtme0?*zI9FMxn{@=cGlI>G2>>@SUY`#<3~wp&=54}eacws1r8_cAtLHbJOV6>m1NUeFe|0ezYPCdkZR`q z2)VT?X2$@Ra|u2+XXr@*k?qAnDh^?NwD1AJdjMX^ma!CXYQSt>X&!=)6}nmCnj_-g z8^)}Hi~2YLoN}jRr2g8tHJcz!3n?6p|L@cc8Lz>}Inmcu^wbuNU5fE;gi-d_wgs`9 z&hhs0k>yNiwyzsyC7c-{F9L)=iQUWHW($4aixYydino{M`Z+ECNxau`Sw#Kx`{hk##?p zQuX}+^HN>?SJ&5jefdy^c??)vy> z7Uu_m!%r3hN$DEvIJ2d;M+*g7HJT0{H1=mrbs*&NCo57HT)Z15?qBFudpsOoZ3^sV zpmLV;#v=;y0LlNp3;{jBmX+OPFmD~flg*PMui#sa3EX zXLa^$ypGckeh!!5}&(_D9pvGcInT&^a zSMV>-40z)pCNZuPl{_$5ssB#snS8^4SQq~K@%O)v{-X~D41ufIrxo&QB!o;t$0Pf% z3fcA{0B_4WDG^4g=Zsvp==^g{Qe#mBIO5Mt7;d>T6k4i4AhhNW3W&=G62U2+1c_IsOrN9w<>>bP$}In+&g_LZs>!RCd1h(z6-mElNbcHsUeUpB(PvT} zXoI)L^7m>Sd3Hk_?nig1Ha7~&{41t#Ovd<@)qnm2aGsS5KWVic;_NA@d2+}kqbNO` zdrCu;Z<4x*=Exx8UL!0svqbWL4>*!<0ep|#WyN*$a&voJDua6@nFAw-HMT&mt(+rl zV1E!y$4bGHoL^If+jw76KaXDEdYm9a-)OkjTsadBCE8$5>1 zPEPjI7?`fO&l>SSVF)YT`{Cj-=WVX~1gK&5uu3RRuPwpw;DEnx>Xg32`sOUh0ix}9v4xaA8aa8xOfZo36_7* zYBn=WxZ9moB`F7+jQ;wg4ThIF&sZL=9_*|a^gCM*FxuPH8M+tHUJwd82NtJ6H9#gg2}j8SB5@-xMeR0*ijhF+d7?YoFci6XPKWnz?0}c5yD>_!4r67 z|2+NsmK=rDoYHdFZ#gz;#8XUw<(~IctXhC9Ips+APa45gWd)6)BmGs07u^4E9f2c! zK92(x??n?P;P;`W)j0t;vLE1|k3iK9%n56ji}zE_d3W;VEbtv+WmDHYBFI= z1TC+J06;Mmj=x-3Bl&J8VICJOn-}jz^2>j;{q3q6H$c3WJ_H%J-v@T@x>Bp+IPyvK zHWpG4wb_0eTOfC)SV74QRM>%@{f^;USZShHi5~zT^Q)o)M+r-aaXLiT+{sn-^p5T$ z5%<2U6kJ-zDT~lFSaGP{`kHC-%D>8)mo8+RR4{Cev=cjCX{Qs*^fnaQ8KBw%HbHE; z@fv$6haDALK)=?2!tI1o?-ioqfBYvWBG7khFdVYJ?6rU@Fo%UPP$ww3KOULVT40U; z!@a>bX1Ih78WBGpUznz>5~l>mf~GB-7F5+rh&*x()-WZp;^e&mDosz9T%}^Dko{B>=Dehvwk*Ej=eV+XkD=RT}vEl&MqYpyo#q`)x9nRWjNHpuqh}va0m*p-gWTzED6l1 zO-2OlR)^<+SLusl6Q?`8EAlKWYoMRI12S)u@L)L|DThzZS|L{M;^EUK^F|T)( zz_|Cf_DQxsao|>Y_nm9ji zSjUA(9w#Z&NzWCiez8_S2Bl!LOjRPlXU?fy%*E39 z0+8whTImtl^b_In$zUkWL7Wk@M*N`QR>+tS!rnLt3Dal*4>NU0x~B-6iO_0Yor8OK zB%-)pc{p$wz>BW0!e9IbYgQsG_B@9=8)J?M}t?{Nq(s669gbzZR`Bek02S-BsN`BpRD`?tAjup;|X5e2N%n!8GC0)sCUPz!5J}2`} zHGrg^-!*r@7vaO z-=rOFWCR5pOYYIX33{E&}X+&Ub+)fL}(wEI;;?QG#z4 zC2GQWo)ImTS5`lZYOL`EZs_iJiYDz$ z?byD_9S3CVU1JmR>sVEWQ5|RT6#liTMYb8weB?aXGO){$wD09`xLSWr-%(@YM5efw z8^9^M@NHZ6D8(T@N#chLdlKG(8oq46CT+r&JJ_oT{Bc-Jd?AQoI>+mf?Xx*y2reEmLMBe}JglAi$FLcbK>Sgl5%5 z_oVbZY+z-HySmQa7`SjIfkXDvw2g*h4yro^Gp2x2zc#=k4cx%&9olR%Lnx zcPCT{TCP*ZX>?2YxI5eWQ>L_KlHX?&h}gPt%FF7fluOlE{~+z=Fv(1?j-2K>X{dYq zjvd*|}6bWDJrhp=Y&Zy1!K{pO^<$};j1 zQ(0SvT(_GnaqIl1TWv#9qVdyiD7Fr@N#dP3pDF8iYO_!sa8S7myOR-nyf9!MQJrxR8g{J%EMqQp5R=x_kq=m%i1#!yCRc*7Sk|!#`!XPOC%q zSL)ftu;dRy7ECpQOaq&xtKuKc9hH{WN%>AlA;*oNk&uYNmAqsA;))C{##1c&${K;o za~om1-Rw!aW}A5&f=Q2+$w&aI#k8K;CvsPF`+X6n_CWfH?9$wyiMu(nMZ#SGl;iM< z(LLS;!${G3!3$gvg=Rafxrh+U3Kr>;l~d2j@ zv2N=iYK+2c=&zsc#VC*hA`E-Mj1aGybBUuG-$a1 zU8ZjiHjyuyvBRygkJ3jr3sWvlLF^LlN>@THUx|$=?{k@%k9YlU_#=AJj|JOvd29&J z(cK{_*ji29cligC6Z?0|oWb*PN#l*m(br@M~a3IXW^%2z7>9TiY#i!>wT}?}alBnVwNS6{@aGueTL&EXht} z?B1@dk|7k&Of9RL|A2W2>!FXzo!K2wSR;$8s?n{kV(qu42G8TPp(nn=*wtz94+1iK zX#=j=1!PkOa^nv3&7Ya4uH8Y#Q+7UZeA>#uD}3l90{b*|S8i)t%~zfqUn zyY&)!G@}Hx&tDkTTj%XHH~Rw|rigWP)@20}Yg7wzA~qBMPBu?>4N$zi2(MwW?n|u2 z2qS*t;e1XOrhI6c)VK^k7%odY@>N^}xoMbn3oC>8WT+PT zT384aaDxr9SKj|wG`S${SBm3wa~ZlM+txgC*|#Y(EXj9-Zx@nZT62W)mS~aUmfarp z)o#2@Vt=SO3V-ILT&R~x7G&yXOzfqN|HN`x!?`=-H-Vstl8oIpT{9w{Is4Nwnz`|NX&Q>Hb+#KnL5}!LJhzhxHGco;Nhs%MaZQMzdb#0SSSbWCVpG5J2xC9S2y5-y+aFK_rR>*jlS&!IdVC6#IPiv{ zx2*LMfx__W@A)^PV5q!64YEZR7up*Wpd~9c{s9P83hHk~X->e=A_b3EaX~tnS}jHm zMEGlpV*U{{Q0IHH^D}}{4bJ!|(0Vy+sgZoGM>_FRc+k-puQ2GxYb3bXNvxCwVD5oT zKz>jI@oJ1Nldy*Zj%nKX2Slwx7pN)j*MSfCe<7kf+GMVcDYwI{M5?u*zUAX197)Yt zMiYimx9Ujpm8nk+&pT2aa9{U=uV@b(^C6Rf3{|4xjYP-!&gcz46eWSLr$e)iIE7CP zM=s&VYO$)DKMln`#`^=|6#$RS1HgAY#t2}b$98CM{l4a2OFejsjHvCgU=A-=98(!y zJtMSR5sb=gt6}*h=Y#q5q;$@?q&@RMs{To*;r zyGrE9k2auLfttqLIqz_#j30H%hUOhgb2=Y)@RZPtYA;SIX^gn2DubFk?D{$Q-!V3) zGq=T&^Ugz#;>SQex{yVQiUGrZ&MEk9On{4ipwCd?5m(3f7}u!uSHzD{AHLTg#(!g= zHxSEKu$ms4$(IkF`{cjXd=5qeUwdr? zw3v*H*v}RRmWtuREVOD#E~9JniZH@RP#YrLu_&3Vs7i>bWjL`3B4iqCF2%(_Tu(x8 z;5Z?dnEJ{bE}30{nkmNvZ02wYxQv6%h`eRwsi=ny%5&488B|sNPpLsthitLF7#6l;J6hn! z?_1Vu=9Au8pSCW@VKATr(C6|kGPm;8mD-563C)xT|HrZKT|%An5%>tOJx^{}(mb~~ zm_Dd1f7YuGB^VCaSI_1|-zb7s{V-Ns_M0T3>T11W;7^-pRr1P1To_yw=(c+cW2mQp zcQK4`{+-=XUQS()Hbq!z(=pd?~MR3MU)wwgH!2jr*d4EbZ>8%;#4(!mRIR&f9W3 zfVmhx6vL}n=|myBjjr2soTGA*6E0b3+xa)@rsSu8$DC^w?zpYdAy0!G_2n72w6nn^ zD!S8`qn7XUp?v-i2~_eZ5+oG+fpLNv@Qwn7KWTZzyohv?>(L^RJk6j1bH$!9<-9Pp zTVnU%S14HS;$#`Y3W!$RUeZQ%c32JXwh)Uok<v&)b|L9 zx<4-M@uSSI+4ty#jo%qxC|B8H)WIJxuR*Ea+iJgAZ_)qqY`gph+xg&B)8CcFO`l-) zw()saXU+EHb2f>twE);MNmx4vJFcF?foP@so}B1(bg_xKT-#)IM2Y`}{v-l=5!B;Du;j|O--V^!FeJ`%wI-Vs)noj9Y ztwXfK9lM$-PU_F@k{ZfE{qE4u!-eUpHBI_-sp(X%nQR=XLBw<4zLuhc?dUhR^ta?R z0TM?)IxTG3)f*R{ESBj;u$2zaAKin#&aXu~=9J7xK41ywGHF z;l{&Fzqt5tZAUx|bUU7_C9^FVr-onhvpcKohVA3rU-UXQhYygy4{xGg0FJvS}zZPbhYq72qZr8@6WXM~VhIn2EOG$`shre$Q=jI8tFJ6BQisartO(h{1PrvHrp z!q=OXF|{JjT8syKN4#w#G}@cH0E?u~fi^W3;8a&?4_`+xuPT!SyQ~f}j&rekqWpTK z@xH(IXVxG>FmYNJE=)KWm*zqBi1>PVNA9E01zS9W8(pp?P3^UAs7-tGnZl1O4kNoZZ-ny5vg%=DOgb-o} z;90Yo1GI*p+HdCKDJ=iYNKCf&rP6L$tqwCFP~?@Ai1&$W-$hY9+5|| z%x-3yoXKAx+$Mlt5A&!O3Th5O;x3R_qy0ANbZ0sWFFO(!K{;wkyHo?KuSkGZ(GXIR zVNNbms;b;6cPutl@nw}X`rb5m1sSjl&KCtF&1lpVS@+mt6XRbu_&sxC`g=GO0U8y&f-OoaGy$H zFQ~Y3O+Lj|S=FVQj;#oXp;{asny^*qPq!$*W%{y-YnLsnt6*ZS$k1f9EGMy628GKk zkH|lWF{Po=DzqR}>R0jp$j5TiEcQ@gy$4AT!*>%&-V{gjNJx~Dn6$F!dKYiRA%YYcG_N=6 zqJSq!sSs}uZqujG;{6+oI0Q}*Om*KK1yZ(?1qbe^qLUYXwd@P%Rp} zyN~7{WpsO))odj+;;O+RXA3lCqLv)$D8RW~)i57( z7HC({x-GlYbrj&|!Fqz?gCP44I7=+auCx-(1%J~IpYwX&L zCFDym-YnBlHor6lEK=Ie^2^9X8n?=#P~^hbF0p8;?csn?*_xZ>H5WPQe&|Kejq)2kQXVq)ME8fb}A4g|8-*%$07Nj zMgwFu9R8S*fxUCfJpr!`!{5&AO~Mj|Tfnu(3%7xeck1jB^&;iddf~+PC8HGiB?8OZ zCv8lmd2-|sphp>$ZK}Cj5BHo}N)|>p*T9tU{=d?0`!DTNmcVn3TRo%53ZjR)njM| zq2;Mx(xlnzSH*t*0<*o3oC_zl(Q8r1v6vPXVUSJMb>Qi^jzl~cO$1->&!ubD0+J=J zo?pPmTSXaV#E>flx7EX_Nh1~wY~R4Lnl<0znxkW}aChP{qY_cW5fjT2f!P7nfdIHA z)lkqj7q?1zMY%0t6<0I}6~o}%ot*}5KSx8Y)^(7bp|Ew#Y@$RjO89X2Sl% zx4>_?SKoY}!S}3-cZ<}vfVC{zxSOBwMwo_3JcQUo9auq|A1Ji0j3{;(bqlLhyG_c( zgWv|U_MO5%lw9%By%6Y3EfA=c*cDuZ(6b9(b!y$nbrztsQ#(^lHxzaYobo^y*==dR zur_;7SWr`}MZ`jP|C{`^_M?p1Supk-z`cX_AXk0Z3E}kk4x`Uag8M8)4FTMzD}mPwj}nk%W8Q$Uf?!+v)D72-r@1$_gKy7voyCV zs`MLjuNIJ={IFR6B;Mb;A64|1Tn|PB*Dt1>G&1Nldfg3;A0fdLsen?7-5NjGit!UwMVbp4p1jKjFL zptf1PAQ0M}pglO06Bsi0`~-ggdVOUvy#?i9um`FD1z!JxKCeiHFoERWaxB=>s^q@k z{bNBDzX!*%`-BCw3J7{FKpaG!S@urCeKz(M#7H5cR?%69{SI+4c0lK@7&-ztXa{-% zQXnRR0EuvIrG8vQ`YCpeg8sSorqO@pp-N;Jm?oB>N@5lSw|HQNY1Yh@eajSqGfw39z9zhSf{wX5hWhH3_A5k|-`5+*2AeDyV8uqo%!&fAb_+-c zl7buT5f+Cie+Q_`pCd#GuOW-uL8!}up8TmhE<7O?-|-uJkc>qh3>o_pp=vT{rRYne zKP_)5G|Y3i4JQ2_C=i-6_>E=6o7*xRd4gKV-J!27@{9e}K<$q~@R#Fz0yITo!f`jN zB8!;@-2&OKX>YrNxIxZk~>81j&Sj+gLwoEyo8IXu_nMZ6!c7H7z;C7cV>h z8^zzqjqmlyFGY@sTsjO5fZvSN=oH8#{YNPuBjtJMN??jn)8iOk9;t-B{kX7SA@Qlj z-AMuKg7n%UY z9ejeW9e7c&fTlCx{9pMSW?YOa2&^QN6fT-UekKU$?y6H9GbYQZ-|}x`*7NB}920Z*@2?s$q`@E%!=W}TSMK)CgMb>-zUoq*=Y*sf=rSzkyLd8HEHbV{c6@*y*J zpMS;ryXfH7yboeB`bC$nM_P?^p`0SEa=_gS=Todb2h7l5LR#uA2v7B~_)ecn6v9AJ zY8du9q0b6%I2sah_;z(QR@E;#7SOi1*Qod}6NX0mBtud!0NJC@hRuBDzTize!R}un zxvyC>`A&cL5fN4DDO5vMMKEIC=*v0Eq|hwBDT2XlV1b^Xa6~}|2>QD=*w8^_+@1{y zt`ceDve$fq@Z_c8Xlw2`=AePq7Vg9dI4j<^FA>*>aSV_292NW8rg>xr^8ga56>o6< z#(DTFLfr(%f_a-8#P5SZ&YK@%-!^8qO#&+2<&J%2apNvILB9@J6a>US8bJ>{K7*E_+Whm z)wx)n2vVg{AED_IRERWW-wMZ)#l9}C;PceM%raV@Wg7(PF{u4AqsQ&--wXxLV`HU? z)_HayL+3pYXO@A-uLH$X*BjhDV0vQqiYD(d(DUtt_Uxe8?IMQ|o?z?7C~k52>il4M zfqTdk8N-{pu??uOn%=<#I!)m9e4a_g87qtKgS+` zsDM@);Ua)b4o0^C=Qj3!3QNv*NkOVQ^}^1-#!gbelD>hBL;o)08tDM(!#_K%R3R(c5LbvK(g@#=0Qr`;n)^8I2w8!K1x|tD8Ak|Uoq7HXO_mZ&Bgt`&DcuR_1e}a5|>lYkx<_;9h#2g;fe3WjK zIY9f8n~Lb{(jj95>atF1ga67N6)1cgdrB0~T2!W|5Ps3-Bp~G!j%#JF?aX9c#kM=uci>+X{VD zA+1-v+_*RqLd0qWsap#5&t;WqQG_b0NclE^*h&&NkKmTjE3;tZY0xZ6llQ3-LN=s) zlEC47%v?MvrgrhfKFPe{@-s3h25u9?z!#P>B(n;zl(*Z z5_!g0u}cOtuNNXOKidaAaMVhf-0Vgy@p)!XdcZi3sq)$xli|3W_X?ew7ct~9R=mRr|w<(8JJbp_k38$4oU zj#qmvS{?6qW0mY)rTjs=tpC8hHH0r|}JOZVm zzxuxVZo}KY_g+^n!todE-5{n7^S{isZ(&#_E?nFTYk-D}=M>WcpB{QY+VtAs@{ z-L+|3&pYd9%r&|Zp=g1>4?gtPQKSr@g zG1^MO@QjHH@l}!qB}1qne-Xpg<=R6IFMgB+$>SX%?~As{m&Nb?6sHWMq#hfqMhZ6{ zM+IjMfmV@o5T06bEs>rE97}(s*0U7ak5upPH?Rn?y{W?+w|F^3vkwZ3#PB}JOex|T z6Bc)tAStEFX*z?~s29)aizxA#tH{;_#Kroh82YrZU*YXuvTEE*P#bL2v~n7*SaUft zk=NGrH+43r{S8oHH$u#Q?oMG)VU8Ty(A&;b$xLwz*wQI-St;XiGToQ|gtQ-jTUrRc zjhqINkMEswP~Uyai@TK_;Ct(U%k1f?{CF>hhlYv_iwKtzmz0Bs$$mj?u zNok3x(ebtPGQ+Ry68>^TwAPdFk7^pT9f# z0x4d)c8A*g$!|HeHDEcpvgP34pszmA}s%Fv3MQlOFjH#Zu09>khCJmNle|w>{ zm6t*GCn+x9{=Hu^wAQ$Pc)dY|h)JNM`w!lKq(I`6CMS2lUT~8|O&R{*j#fB9dQpML z_~p_yX3gB&I=&1z(d3KkUiI45?3>%)c0Aco2?dxbhu{hcs49!NKC`XezCYywb@)LF zSw$K;Nv0?0scNh2t*$Tdv2wHYwYE3-xgqB3zx{q8Pqf8JcINzFLY3{NKm1XPT~(X* zix^~$!xoL)S#+(V7ee`r>Nq(7l6cA^WvuOKv0W1!x>$OI4LR8Q|0QeGe>ehvmrh>! zck%fWU_gr%)VmR-OR6cGR8&|tG*9rED>0AAZLG-NHP%&jmZtWVZmn+Zi4)`|;Nml{ zL>!W{$mRUQN+*8$XVv7{Gecx0=7%rTX$_6m?dx3q7}=RHNfo@{5j}f1ka*z|d2=U- z#NlJRk6LiRuVa{?0w9i*zcAW>y2%X-&=6{eV5fg}Ai_z_&i=$E)gY!sYjG)HO&2U? z^-k_Ls^`?k(&Q~sH)y&?}V@an~&D`F1YUkC-&E+tk?-!ns(Bv_n?uAeh zI=jFCA_PPFclhC6e`I7WWA&BCN#K$iuMDP&y^F@(!g=WfxC4!g6l^fc8>%vWZ?S5W z^r+6Eny&A|-hSbzoU*fR#oVPV&{vqSJS=%ewM*&d1$+qc|1uohVgv5#Lm)#$BFki? zYUkqB6Xf8$+d$i#wd)_D?b`2!KfDb}V zR6|^m#`U?IuZ^R*yKyowdn-`nCr0nk%`)7gfx6LLuN6an6ij*3#hU=eutdg@h{m$a z=F=d@^km0fTmdr4uwKI&jtw54m;2i^y3{rU?WR31|F1$0iN-F9$`12R9}KmNX_r=h z9J!OpCl_BH-5W@Fd|sdXCgmDsOQN`4bigms|F3Mx#w^x`iGOG4-k*KS6HytY7~u6-my=LegzT=Edq~NA_*ZY$ zr)6Hbh*Vxtt6gcdbsz7W@ubfjN0NqbuFm~OXQlx~W+6vz0!c>A`?i)c?9!7i+VFs& zFM_B8lIi;b9`4?@u8y8|aJ-(qJ1BP=a-kIBf79gPeDRw9$6l1WGHX6~ycG}ri4PCb z@LYl8299k!Jpc-azKpT=6@~wH;--d{`sPMgJ0}Mh`>V=*5e<|a)Jyulpivi6tIW;_ zlGQe@x3)Iv*xp*!7!SWE2n zx@PGbXTqW^_O4gJAU;8_tBX~HB(Lsg9|(zr*R76boaNVZho8s_nu{pL*IOb=_UQlEYq&>RJ|UujNat>dz+k zVFVVcyp|AxYc~(d`gP=h^6(26c*@9rsc};oVEE5GX?)my?bwn66>$H+84su%oJh6%KDOdzXCS_*TKt&yD`UVNYKXU}*3 zIv&Pn!#??Uf0zv!OB>I@9n|nOtO{fxsAPrl5je)cPJ}f1k?61`<&7qTQea{AOw~&) zu|i0H_bO@ieNMgE6v1JHi8jKbg%VV57=nQyCYxX7P3FTh5Mlq`3v5*0u5FseBISR=Bl}+IqqoHDI>oLSZ|7*jT%uFs+3Hyg`+Cn8d1V$(1 zSLVlD^h8n}XRT*}sIENW_YpP*`~1itjflIdAsk|FQ*HW(ukP3T-QdSzml3*F0~RY> z^#be)UcP}UhvGz&Oc*74ngi($W~*!ZaiSoZU)ssT7CN$RT(cCv5I<%hECnBSN$iKpJrFwyWt+@9pW`>bEr*_c#N>0 znnfD=1WgCZ7)1oo^8>pQz_a4UaQJDI5F~yqwrMKsaXY;c0R@PL+~4B!WZ1uUyhKr@ zf1FjHs*~8#pWy?YUc^{BcV&9r1GBw@1eAKkoMrbcZ1cP;!l7)Wo6Kv5s&@sOjPOCs zQ(`q|hlYmi!}Sns0~H$@OaF>=#Be`bz5A45b{n7s9=D)z*9GIN)|Hv=0_~N$Smrh0 zEY(0?&*M^tb=q=a?iRSO7SKi>xQJ@S19LC3PJiFgX1VYk|4DCoi~&a`F`K@I|MWGj z%%wqjV922n7bS_64@kr&cO@j79o5Z+YXJI{111XGR~RSZ*GI7d6S=5lLhe8dPMK)7 z)h4VU77gL1t(%wgSi5Cy#XEm^0Vq%f3aRJ2CFjkyGwRM$zJQSSx#B-M;aHa%?S0dx zB+>sBV0|+0u510?A9B9F&QRKxP#%~lD+#gk0 zTF>+6X^$UFW}kR54~qcC!*m_7M-5L2E7kvZYcMJTM`9&;RVhoEdaWsOA#w2i-#<%< zD)+y$z0`ZClrZ$qXhLaOW7?RlPv)WotzPxO3PETySYQVL&`MeFlfCmZ46`P}m^(KD zm3|26ozy1Sel$jm^=+)$eFH5aeUdeM0(`G;{I>_}RB+f71p%$Z=Rvn=)|5dxuB|l~ zo9VNh>;4^z9jubGa};(ra4~u)MTEIlgwAV>0!j`V$iI4}h;*|~$p*lu;aE8PJ8h|1 zCQZ`EKKd~@elgeSpn2BKriz`^4gH099uU>3Q8PiHxGdkD((|a9DRU&lY44SBTxH^k zq$Ps!)h%bGk6;^|O0hmOT^y}e_*X|d=ZIM(v9HrYi$mXnXH|~+jM?UHX)Op%{q>vh zfWj95tbE&u3XlnI%{JHb>_<`h>+~fXfSZW~1W6vFRZU$ihnM<4VgJ(x1TDm z|M7>M`eS?n&W)QAcOVq_d#7yh^a8;oIkn(9tHPI)?N%391$d=g1+KD;H>IhL@*|L+tvQq$zX4n*w9-P%803fX0-tY5^)pEfKgZgn^)8^Gq`646|0MjX6$YEAvZe zg~NE2#bngxP~qZUcn?fTN^tjxBh=dv&hVcdg*6Vn`m?UA8m%5~0Dw*Um1O2H3TI*m zGK`-5rYv|Uj)J3a?;7P4H3d4gNyBS3UP|NrxWx{wXtB+Y@N5*F-ljfEyDB@+0%mZg zNJ2a>VrINMMvA0!=D_QyE}w9wiylnNnT0M&WuTmJ8kJkeBGeO%++16gLN!j5hnur@ zQFBYM_nC82nArl?W&WlU%wYLwI7eaH!Cf)#3}KM>INW17g;M)^pACRVo)$p}%y^k( z^)G3lvZ6+G<{WP~vK48;Eq;$t^y9$^<`TCEfKyojpS7xynGT0HX^vVEljVgeh(PH= zP4jf5hx}Dh4U}phP+g!34VMs5hajpO>s{&{@zM$o!dwy^L}g8zK>eK7j58F`4*3E@ z0cHSF9s~y6h5^&s&Fr7$Lxap6jq^{(b3z*maRSQm0j(g8v%cftU^o!4SWSQX922sX^!Bk$kZ1)JoH_<=Zdm|wt#q~$M5!GH1Zo01B;Xfikzv#) zRxxGn2@&Cc8{g>XKWK*)7!L~i5FgyHXOcWW|4#XD9tV+Mmg;X0sB-?>VSxV&WRiGS zfmTsI2<9{c5Cjkq5U4z%?Cmc)|Ju>L2d&yIG)}$(;y{p;r^!Sj^HZU!z2*x9%y7&_ zQF$L*J{)rNFZ?7LnaG&2g7qPEU>5TD%f1els)Zhw1cQ&=<17=rXCwA|52$49HbJqa=;&! zNk}T4C^VFFA)*duAu&c-EUJie)l(i>UGWD?^n5SXB@+0*ADcZ*zFK3STKHAAo9nrf z_8sLnazbT+hWRvFAk7yj7ddOx zxhQZ0@ls!`F?e(#pbXo|H4$sUJGWj>+59^vIk`FLc0kL?2NVYH*hG4r+=ez~z0ZU6 zR;`|%*IwezRf6GFmq#Y}6cI8P6X0pEHsBtrV6Z_5e(*_Eya^ZlK`}|GbraHwxjphg zokIt-z;wMM=xjUQ@xr|NdwNuUkKaf8FJm2%rA{wyGo!-qj&98{^3b~)!}O119d;-d zEZH~l#R}~!GI|`+PG`ONTK*<`fyKs0Ips@+ybk8h2%DZ7^GSK$G@)UJ69&PSD^M%i z%?j&fHfw&K1QG8Jn5Mhx;?W*6#?FcNH`U4zNSsGN4Ur-FhY>7QCJo!*1=mWJjvD2z zsL!dKz9pITCM*<7{)9R9hmT*hu~KvSRvFLsBhVEi|HWgJz~L07$C7I9NrUyw{9Exu zZz%IaHlPHo6fEzX84x2In)_Q+#c?qfJ}WsTluH6Wk7Lw5m9BHj4QwK6yJ1g`OwS1? z&JK`_1q5mjk%Z%Sr!ASfpVC9++3@h;(mLj~laq4-Pn-CDsnnsF{oOVQ5q<#q;oJ40)O%+$%8w-9pWwPPDfyG2KY06e`n6wpI13&0op~XHG#% zhP$sZsp*!PbTO^^FG3olyVb0whaYhXzm4T{32r*UMG$5@>{QXx(rif;GBXzHox>b5 zXJbb{tDIA;lmbm)=F+I&i?vwS9^!obVvUB*yKGx{q%kK}Wjo(U--Z4LlpbofU=^%4 zL?2&A>=kQ)od2P;@79V%y1Na_MmWYdvw^zY5P{COI(J=R?&QdqAZ*v|r%D9;_KPMy co9oT>vo6PH({6W8l-tK``s?mi)4z!QFGBu2CIA2c literal 0 HcmV?d00001 diff --git a/src/addLevel.js b/src/addLevel.js index 9630ce7..49deb67 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -let {roleSetup} = require("../simplyxp"); +let { roleSetup } = require("../simplyxp"); /** * @param {Discord.Message} message @@ -14,9 +14,9 @@ async function addLevel(message, userID, guildID, level) { if (!level) throw new Error("[XP] Level amount is not provided."); - let {client} = message; + let { client } = message; - const user = await levels.findOne({user: userID, guild: guildID}); + const user = await levels.findOne({ user: userID, guild: guildID }); if (!user) { const newUser = new levels({ diff --git a/src/addXP.js b/src/addXP.js index 2fb30b1..dd75142 100644 --- a/src/addXP.js +++ b/src/addXP.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -let {roleSetup} = require("../simplyxp"); +let { roleSetup } = require("../simplyxp"); /** * @param {Discord.Message} message @@ -15,7 +15,7 @@ async function addXP(message, userID, guildID, xp) { if (!xp) throw new Error("[XP] XP amount is not provided."); - let {client} = message; + let { client } = message; let min; let max; @@ -47,7 +47,7 @@ async function addXP(message, userID, guildID, xp) { xp = Math.floor(Math.random() * (max - min) + min); } - const user = await levels.findOne({user: userID, guild: guildID}); + const user = await levels.findOne({ user: userID, guild: guildID }); let lvl = Math.floor(0.1 * Math.sqrt(xp)); diff --git a/src/charts.js b/src/charts.js index 84b2676..b2a0565 100644 --- a/src/charts.js +++ b/src/charts.js @@ -6,14 +6,9 @@ let leaderboard = require("./leaderboard"); */ async function charts(message, options) { - try { - require("canvas"); - } catch { - throw "[XP] This requires canvas to be installed. \n\"npm install canvas\""; - } const ChartJS = require("chart.js"); - const Canvas = require("canvas"); - let {client} = message; + const Canvas = require("@napi-rs/canvas"); + let { client } = message; let data = []; let pos = options?.position || 5; diff --git a/src/create.js b/src/create.js index 233b952..978d581 100644 --- a/src/create.js +++ b/src/create.js @@ -10,7 +10,7 @@ async function create(userID, guildID) { if (!guildID) throw new Error("[XP] User ID was not provided."); - let uzer = await levels.findOne({user: userID, guild: guildID}); + let uzer = await levels.findOne({ user: userID, guild: guildID }); if (uzer) return; diff --git a/src/fetch.js b/src/fetch.js index 5bc73d3..c6cc1c6 100644 --- a/src/fetch.js +++ b/src/fetch.js @@ -1,4 +1,5 @@ const levels = require("../src/models/level.js"); +const getUserPosition = require("./utils/getUserPosition"); /** * @param {string} userID @@ -25,24 +26,7 @@ async function fetch(userID, guildID) { await user.save(); } - const leaderboard = await levels - .find({ - guild: guildID - }) - .sort([["xp", "descending"]]) - .exec(); - - if (user === null) - return { - level: 0, - xp: 0, - reqxp: 100, - rank: leaderboard.findIndex((i) => i.user === userID) + 1, - shortxp: 0, - shortreq: 100 - }; - - user.position = leaderboard.findIndex((i) => i.user === userID) + 1; + user.position = (await getUserPosition(userID, guildID)) || 1; let targetxp = user.level + 1; diff --git a/src/leaderboard.js b/src/leaderboard.js index 18801ad..10f7d5d 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -const {options} = require("../simplyxp"); +const { options } = require("../simplyxp"); /** * @param {Discord.Client} client @@ -13,9 +13,14 @@ async function leaderboard(client, guildID, limit) { let g = client.guilds.cache.get(guildID); if (!g) throw new Error("[XP] Guild was not found."); - let leaderboard = await levels.find({guild: guildID}).sort([["xp", "descending"]]); + const leaderboard = await levels + .find({ guild: guildID }) + .sort([["xp", "descending"]]); - let led = [], subtractPos = 0; + const led = []; + let subtractPos = 0; + const shouldPurge = Boolean(options?.auto_purge); + const limitNumber = limit ? Number(limit) : null; function shortener(count) { const COUNT_ABBRS = ["", "k", "M", "T"]; @@ -26,13 +31,22 @@ async function leaderboard(client, guildID, limit) { return result; } - const led2 = leaderboard.map(async (key) => { + for (let i = 0; i < leaderboard.length; i += 1) { + const key = leaderboard[i]; const user = await g.members.fetch(key.user).catch(() => null); - if (!user && options?.auto_purge) return levels.deleteOne({user: key.user, guild: guildID}); - if (key.xp === 0 || !user) return subtractPos++; + if (!user && shouldPurge) { + await levels.deleteOne({ user: key.user, guild: guildID }); + } + if (key.xp === 0 || !user) { + subtractPos += 1; + continue; + } - let pos = leaderboard.indexOf(key) + 1 - subtractPos; - if (limit && pos > Number(limit)) return; + const pos = i + 1 - subtractPos; + if (limitNumber && pos > limitNumber) { + if (!shouldPurge) break; + continue; + } led.push({ guildID: key.guild, @@ -44,8 +58,9 @@ async function leaderboard(client, guildID, limit) { username: user.user.username, tag: user.user.tag }); - }); - return Promise.all(led2).then(() => led); + } + + return led; } module.exports = leaderboard; \ No newline at end of file diff --git a/src/models/level.js b/src/models/level.js index 6558f22..d4e6253 100644 --- a/src/models/level.js +++ b/src/models/level.js @@ -1,10 +1,12 @@ const mongoose = require("mongoose"); const Levelz = new mongoose.Schema({ - user: {type: String, unique: true}, - guild: {type: String}, - xp: {type: Number, default: 0}, - level: {type: Number, default: 0} + user: { type: String, unique: true }, + guild: { type: String }, + xp: { type: Number, default: 0 }, + level: { type: Number, default: 0 } }); +Levelz.index({ guild: 1, xp: -1 }); + module.exports = mongoose.model("Simply-XP", Levelz); \ No newline at end of file diff --git a/src/models/lvlrole.js b/src/models/lvlrole.js index 45a82e1..75fba2e 100644 --- a/src/models/lvlrole.js +++ b/src/models/lvlrole.js @@ -1,8 +1,8 @@ const mongoose = require("mongoose"); const rol = new mongoose.Schema({ - gid: {type: String}, - lvlrole: {type: Array} + gid: { type: String }, + lvlrole: { type: Array } }); module.exports = mongoose.model("Simply-XP-LevelRole", rol); \ No newline at end of file diff --git a/src/rank.js b/src/rank.js index 25312f4..9439a2f 100644 --- a/src/rank.js +++ b/src/rank.js @@ -1,5 +1,6 @@ const levels = require("../src/models/level.js"); -const {join} = require("path"); +const { join } = require("path"); +const getUserPosition = require("./utils/getUserPosition"); /** * @param {Discord.Message} message @@ -19,14 +20,7 @@ async function rank(message, userID, guildID, options = []) { }); if (!user) throw new Error("[XP] NO_DATA | User has no XP data."); - const leaderboard = await levels - .find({ - guild: guildID - }) - .sort([["xp", "descending"]]) - .exec(); - - user.position = leaderboard.findIndex((i) => i.user === userID) + 1; + user.position = (await getUserPosition(userID, guildID)) || 1; let targetxp = user.level + 1; @@ -48,7 +42,7 @@ async function rank(message, userID, guildID, options = []) { try { const Canvas = require("@napi-rs/canvas"); Canvas.GlobalFonts.registerFromPath( - join(__dirname, "Fonts", "Baloo-Regular.ttf"), + join(__dirname, "Fonts", "Baloo2-Regular.woff2"), "Sans Serif" ); @@ -114,7 +108,12 @@ async function rank(message, userID, guildID, options = []) { ctx.fillRect(0, 0, 1080, 400); let background = await Canvas.loadImage(BackGroundImg); ctx.globalAlpha = 0.7; - ctx.drawImage(background, 0, 0, 1080, 400); + const canvasWidth = canvas.width; + const canvasHeight = canvas.height; + const scale = canvasWidth / background.width; + const scaledHeight = background.height * scale; + const yOffset = (canvasHeight - scaledHeight) / 2; + ctx.drawImage(background, 0, yOffset, canvasWidth, scaledHeight); ctx.restore(); ctx.fillStyle = DrawLayerColor; diff --git a/src/reset.js b/src/reset.js index 1a7594c..2f47ae6 100644 --- a/src/reset.js +++ b/src/reset.js @@ -11,12 +11,12 @@ async function reset(userID, guildID) { if (!guildID) throw new Error("[XP] User ID was not provided."); await levels - .findOneAndUpdate({user: userID, guild: guildID}, {xp: 0, level: 0}) + .findOneAndUpdate({ user: userID, guild: guildID }, { xp: 0, level: 0 }) .catch((err) => { throw new Error(err); }); - return {user: userID, guild: guildID, xp: 0, level: 0}; + return { user: userID, guild: guildID, xp: 0, level: 0 }; } module.exports = reset; diff --git a/src/roleSetup.js b/src/roleSetup.js index 312f773..375d6b3 100644 --- a/src/roleSetup.js +++ b/src/roleSetup.js @@ -36,7 +36,7 @@ class roleSetup { await newrol.save(); } - newrol.lvlrole.push({lvl: options.level, role: options.role}); + newrol.lvlrole.push({ lvl: options.level, role: options.role }); await newrol .save() @@ -75,7 +75,7 @@ class roleSetup { gid: guildID }, { - $pull: {lvlrole: {lvl: options.level}} + $pull: { lvlrole: { lvl: options.level } } } ); diff --git a/src/setLevel.js b/src/setLevel.js index 35ad41d..af630b1 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -const {roleSetup} = require("../simplyxp"); +const { roleSetup } = require("../simplyxp"); /** * @param {Discord.Message} message @@ -12,12 +12,12 @@ async function setLevel(message, userID, guildID, level) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (!level || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); - const {client} = message; + const { client } = message; const user = await levels.findOneAndUpdate( - {user: userID, guild: guildID}, - {xp: (level * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((level * 10) ** 2))}, - {upsert: true, new: true} + { user: userID, guild: guildID }, + { xp: (level * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((level * 10) ** 2)) }, + { upsert: true, new: true } ); if (user.level !== level) { diff --git a/src/setXP.js b/src/setXP.js index 0f18e52..b2e92ff 100644 --- a/src/setXP.js +++ b/src/setXP.js @@ -6,9 +6,9 @@ async function setXP(userID, guildID, xp) { if (!xp || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); const user = await levels.findOneAndUpdate( - {user: userID, guild: guildID}, - {xp: xp}, - {upsert: true} + { user: userID, guild: guildID }, + { xp: xp }, + { upsert: true } ); const lvl = Math.floor(0.1 * Math.sqrt(xp)); @@ -17,7 +17,7 @@ async function setXP(userID, guildID, xp) { await user.save().catch((e) => console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`)); } - return {xp}; + return { xp }; } module.exports = setXP; \ No newline at end of file diff --git a/src/utils/getUserPosition.js b/src/utils/getUserPosition.js new file mode 100644 index 0000000..5e1a8c9 --- /dev/null +++ b/src/utils/getUserPosition.js @@ -0,0 +1,22 @@ +const levels = require("../models/level.js"); + +async function getUserPosition(userID, guildID) { + const cursor = levels.find({ guild: guildID }).sort({ xp: -1 }).cursor(); + let position = 0; + + try { + for await (const entry of cursor) { + position += 1; + if (entry.user === userID) { + return position; + } + } + return null; + } finally { + if (typeof cursor.close === "function") { + await cursor.close(); + } + } +} + +module.exports = getUserPosition; \ No newline at end of file From 8b1557fc1041db438eecf27016b25e5e732ce9cb Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 22:58:34 -0500 Subject: [PATCH 05/33] Satisfy Codacy (v1.3.8-fix.0) Extracted level up notification and XP shortener functions into separate utility modules for better code reuse and maintainability. Updated addLevel, setLevel, fetch, leaderboard, and rank modules to use these utilities. Also simplified ESLint config file patterns and bumped package version to 1.3.8-fix.0. --- eslint.config.cjs | 25 +------------ package.json | 2 +- src/addLevel.js | 6 +-- src/fetch.js | 10 +---- src/leaderboard.js | 10 +---- src/rank.js | 72 ++++++++++-------------------------- src/setLevel.js | 6 +-- src/utils/levelUpNotifier.js | 8 ++++ src/utils/shortener.js | 24 ++++++++++++ 9 files changed, 60 insertions(+), 103 deletions(-) create mode 100644 src/utils/levelUpNotifier.js create mode 100644 src/utils/shortener.js diff --git a/eslint.config.cjs b/eslint.config.cjs index 0339167..5c8d4ee 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -1,29 +1,6 @@ module.exports = [ { - files: ["src/**/*.js"], - languageOptions: { - globals: { - require: "readonly", - module: "readonly", - __dirname: "readonly", - __filename: "readonly", - process: "readonly", - console: "readonly" - }, - parserOptions: { - ecmaVersion: "latest", - sourceType: "module" - } - }, - rules: { - indent: ["error", "tab"], - "linebreak-style": ["error", "unix"], - quotes: ["error", "double"], - semi: ["error", "always"] - } - }, - { - files: ["*.js"], + files: ["src/**/*.js", "src/*.js", "*.js"], languageOptions: { globals: { require: "readonly", diff --git a/package.json b/package.json index 8732a15..fc62403 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simply-xp", - "version": "1.3.8", + "version": "1.3.8-fix.0", "description": "A Simple, Easy and Beginner Friendly XP System", "main": "simplyxp.js", "typings": "index.d.ts", diff --git a/src/addLevel.js b/src/addLevel.js index 49deb67..feebfc5 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -let { roleSetup } = require("../simplyxp"); +const notifyLevelUp = require("./utils/levelUpNotifier"); /** * @param {Discord.Message} message @@ -52,9 +52,7 @@ async function addLevel(message, userID, guildID, level) { guildID }; - let role = await roleSetup.find(client, guildID, level); - - client.emit("levelUp", message, data, role); + await notifyLevelUp(message, data, level); } return { diff --git a/src/fetch.js b/src/fetch.js index c6cc1c6..c6c4d33 100644 --- a/src/fetch.js +++ b/src/fetch.js @@ -1,5 +1,6 @@ const levels = require("../src/models/level.js"); const getUserPosition = require("./utils/getUserPosition"); +const shortener = require("./utils/shortener"); /** * @param {string} userID @@ -32,15 +33,6 @@ async function fetch(userID, guildID) { let target = targetxp * targetxp * 100; - function shortener(count) { - const COUNT_ABBRS = ["", "k", "M", "T"]; - - const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); - let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); - result += `${COUNT_ABBRS[i]}`; - return result; - } - let shortXP = shortener(user.xp); let shortReqXP = shortener(target); diff --git a/src/leaderboard.js b/src/leaderboard.js index 10f7d5d..58ec2f9 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -1,5 +1,6 @@ const levels = require("../src/models/level.js"); const { options } = require("../simplyxp"); +const shortener = require("./utils/shortener"); /** * @param {Discord.Client} client @@ -22,15 +23,6 @@ async function leaderboard(client, guildID, limit) { const shouldPurge = Boolean(options?.auto_purge); const limitNumber = limit ? Number(limit) : null; - function shortener(count) { - const COUNT_ABBRS = ["", "k", "M", "T"]; - - const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); - let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); - result += `${COUNT_ABBRS[i]}`; - return result; - } - for (let i = 0; i < leaderboard.length; i += 1) { const key = leaderboard[i]; const user = await g.members.fetch(key.user).catch(() => null); diff --git a/src/rank.js b/src/rank.js index 9439a2f..ea1c4d9 100644 --- a/src/rank.js +++ b/src/rank.js @@ -1,6 +1,7 @@ const levels = require("../src/models/level.js"); const { join } = require("path"); const getUserPosition = require("./utils/getUserPosition"); +const shortener = require("./utils/shortener"); /** * @param {Discord.Message} message @@ -86,6 +87,23 @@ async function rank(message, userID, guildID, options = []) { CurrentXP = options.currentXP, NeededXP = options.neededXP; + const drawStatBadge = (x, y, text, textY) => { + ctx.save(); + RoundedBox(ctx, x, y, 180, 50, 20); + ctx.strokeStyle = "#BFC85A22"; + ctx.stroke(); + ctx.clip(); + ctx.fillStyle = BoxColor; + ctx.globalAlpha = 1; + ctx.fillRect(x, y, 180, 50); + ctx.globalAlpha = 1; + ctx.fillStyle = "#ffffff"; + ctx.font = "32px \"Sans Serif\""; + ctx.textAlign = "center"; + ctx.fillText(text, x + 90, textY); + ctx.restore(); + }; + ctx.beginPath(); ctx.moveTo(Number(BackgroundRadius), 0); ctx.lineTo(1080 - Number(BackgroundRadius), 0); @@ -131,35 +149,8 @@ async function rank(message, userID, guildID, options = []) { ctx.drawImage(avatar, 70, 30, 180, 180); ctx.restore(); - ctx.save(); - RoundedBox(ctx, 70, 240 + 50 + 30, 180, 50, 20); - ctx.strokeStyle = "#BFC85A22"; - ctx.stroke(); - ctx.clip(); - ctx.fillStyle = BoxColor; - ctx.globalAlpha = 1; - ctx.fillRect(70, 320, 180, 50); - ctx.globalAlpha = 1; - ctx.fillStyle = "#ffffff"; - ctx.font = "32px \"Sans Serif\""; - ctx.textAlign = "center"; - ctx.fillText(TextEXP, 160, 358); - ctx.restore(); - - ctx.save(); - RoundedBox(ctx, 70, 240, 180, 50, 20); - ctx.strokeStyle = "#BFC85A22"; - ctx.stroke(); - ctx.clip(); - ctx.fillStyle = BoxColor; - ctx.globalAlpha = 1; - ctx.fillRect(70, 240, 180, 50, 50); - ctx.globalAlpha = 1; - ctx.fillStyle = "#ffffff"; - ctx.font = "32px \"Sans Serif\""; - ctx.textAlign = "center"; - ctx.fillText(LvlText, 70 + 180 / 2, 278); - ctx.restore(); + drawStatBadge(70, 320, TextEXP, 358); + drawStatBadge(70, 240, LvlText, 278); ctx.save(); ctx.textAlign = "left"; @@ -267,28 +258,5 @@ function RoundedBox(ctx, x, y, width, height, radius) { ctx.closePath(); } -function shortener(count) { - const COUNT_ABBRS = [ - "", - "k", - "M", - "B", - "T", - "Q", - "Q+", - "S", - "S+", - "O", - "N", - "D", - "U" - ]; - - const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); - let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); - result += `${COUNT_ABBRS[i]}`; - return result; -} - module.exports = rank; diff --git a/src/setLevel.js b/src/setLevel.js index af630b1..15b349d 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -1,5 +1,5 @@ const levels = require("../src/models/level.js"); -const { roleSetup } = require("../simplyxp"); +const notifyLevelUp = require("./utils/levelUpNotifier"); /** * @param {Discord.Message} message @@ -28,9 +28,7 @@ async function setLevel(message, userID, guildID, level) { guildID }; - let role = await roleSetup.find(client, guildID, level); - - client.emit("levelUp", message, data, role); + await notifyLevelUp(message, data, level); } return { diff --git a/src/utils/levelUpNotifier.js b/src/utils/levelUpNotifier.js new file mode 100644 index 0000000..15d6641 --- /dev/null +++ b/src/utils/levelUpNotifier.js @@ -0,0 +1,8 @@ +const { roleSetup } = require("../simplyxp"); + +async function notifyLevelUp(message, data, roleLevel) { + const role = await roleSetup.find(message.client, data.guildID, roleLevel); + message.client.emit("levelUp", message, data, role); +} + +module.exports = notifyLevelUp; diff --git a/src/utils/shortener.js b/src/utils/shortener.js new file mode 100644 index 0000000..898e36f --- /dev/null +++ b/src/utils/shortener.js @@ -0,0 +1,24 @@ +function shortener(count) { + const COUNT_ABBRS = [ + "", + "k", + "M", + "B", + "T", + "Q", + "Q+", + "S", + "S+", + "O", + "N", + "D", + "U" + ]; + + const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); + let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); + result += `${COUNT_ABBRS[i]}`; + return result; +} + +module.exports = shortener; From b9c0d2208ac2e38f1346649a16275650c4718255 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:06:28 -0500 Subject: [PATCH 06/33] Refactor level payload creation to utility function Extracted the repeated level payload construction logic from addLevel.js and setLevel.js into a new utility function, buildLevelPayload, in src/utils/levelPayload.js. This improves code reuse and maintainability. --- src/addLevel.js | 8 ++------ src/setLevel.js | 8 ++------ src/utils/levelPayload.js | 10 ++++++++++ 3 files changed, 14 insertions(+), 12 deletions(-) create mode 100644 src/utils/levelPayload.js diff --git a/src/addLevel.js b/src/addLevel.js index feebfc5..3288668 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -1,5 +1,6 @@ const levels = require("../src/models/level.js"); const notifyLevelUp = require("./utils/levelUpNotifier"); +const buildLevelPayload = require("./utils/levelPayload"); /** * @param {Discord.Message} message @@ -45,12 +46,7 @@ async function addLevel(message, userID, guildID, level) { ); if (level1 !== level) { - let data = { - xp: user.xp, - level: user.level, - userID, - guildID - }; + const data = buildLevelPayload(user, userID, guildID); await notifyLevelUp(message, data, level); } diff --git a/src/setLevel.js b/src/setLevel.js index 15b349d..ffe70d7 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -1,5 +1,6 @@ const levels = require("../src/models/level.js"); const notifyLevelUp = require("./utils/levelUpNotifier"); +const buildLevelPayload = require("./utils/levelPayload"); /** * @param {Discord.Message} message @@ -21,12 +22,7 @@ async function setLevel(message, userID, guildID, level) { ); if (user.level !== level) { - let data = { - xp: user.xp, - level: user.level, - userID, - guildID - }; + const data = buildLevelPayload(user, userID, guildID); await notifyLevelUp(message, data, level); } diff --git a/src/utils/levelPayload.js b/src/utils/levelPayload.js new file mode 100644 index 0000000..b56d843 --- /dev/null +++ b/src/utils/levelPayload.js @@ -0,0 +1,10 @@ +function buildLevelPayload(user, userID, guildID) { + return { + xp: user.xp, + level: user.level, + userID, + guildID + }; +} + +module.exports = buildLevelPayload; From afbf0d3940bda01853fd0212ef64fefa6c88b2e0 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:20:04 -0500 Subject: [PATCH 07/33] Refactor leaderboard and add JSDoc comments Improved leaderboard logic for robustness and variable clarity. Added JSDoc comments to utility functions for better documentation. Minor cleanup in addLevel and setLevel by removing unused variables. Updated README with new badges and improved formatting. --- README.md | 43 ++++++++++++++++-------------------- src/addLevel.js | 2 -- src/leaderboard.js | 26 +++++++++++++--------- src/setLevel.js | 2 -- src/utils/getUserPosition.js | 6 +++++ src/utils/levelPayload.js | 7 ++++++ src/utils/levelUpNotifier.js | 11 +++++++-- src/utils/shortener.js | 43 ++++++++++++++++++++---------------- 8 files changed, 80 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index b471f6c..08ca18f 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,24 @@ -

- -

Simply-XP

+
+ XP Logo

- A simple, beginner-friendly XP system for Discord.js.
- Developed by Rahuletto & Maintained by Abadima +

A simple, beginner-friendly XP System for Discord.js bots

+

Originally by Rahuletto, maintained by Abadima

+
-
-

- -
- -

+
+ +[![Downloads](https://img.shields.io/npm/dt/simply-xp?style=for-the-badge)](https://www.npmjs.com/package/simply-xp) +[![Version](https://img.shields.io/npm/v/simply-xp.svg?style=for-the-badge)](https://www.npmjs.com/package/simply-xp) +[![CodeFactor](https://www.codefactor.io/repository/github/abadima/simply-xp/badge/lts?style=for-the-badge)](https://www.codefactor.io/repository/github/abadima/simply-xp/overview/lts) -
+[![Documentation](https://img.shields.io/badge/SimplyXP-Documentation-6b46d4?style=for-the-badge)](https://simplyxp.js.org/docs/next/intro/) +[![Support](https://img.shields.io/badge/Discord-Support-5865F2?style=for-the-badge&logo=discord)](https://discord.gg/hjhnjYJNHX) -## 🖥️ How to install? +
+ +## 🖥️ How to install? ``` npm install simply-xp @@ -28,9 +30,7 @@ npm install simply-xp yarn add simply-xp ``` -
- -# 🎉 Recent Updates +## 🎉 Recent Updates - Fixed Various Bugs - Updated `Chart.js` @@ -46,13 +46,8 @@ yarn add simply-xp - Lightweight & Flexible - Beginner Friendly -
+## **Need Help?** Join the [Discord Server](https://discord.gg/3JzDV9T5Fn) -## **Need Help ? Join the [Discord Server](https://discord.gg/3JzDV9T5Fn)** +## 👥 Contact & Support -
- -

👥 Contact & Support

-

- -

+[![Discord invite](https://invidget.switchblade.xyz/3JzDV9T5Fn)](https://discord.gg/3JzDV9T5Fn) diff --git a/src/addLevel.js b/src/addLevel.js index 3288668..8afba9c 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -15,8 +15,6 @@ async function addLevel(message, userID, guildID, level) { if (!level) throw new Error("[XP] Level amount is not provided."); - let { client } = message; - const user = await levels.findOne({ user: userID, guild: guildID }); if (!user) { diff --git a/src/leaderboard.js b/src/leaderboard.js index 58ec2f9..ad81690 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -25,11 +25,15 @@ async function leaderboard(client, guildID, limit) { for (let i = 0; i < leaderboard.length; i += 1) { const key = leaderboard[i]; - const user = await g.members.fetch(key.user).catch(() => null); - if (!user && shouldPurge) { - await levels.deleteOne({ user: key.user, guild: guildID }); + if (!key || typeof key !== "object") { + continue; + } + const { guild: entryGuildID, user: userID, xp, level } = key; + const member = await g.members.fetch(userID).catch(() => null); + if (!member && shouldPurge) { + await levels.deleteOne({ user: userID, guild: entryGuildID }); } - if (key.xp === 0 || !user) { + if (xp === 0 || !member) { subtractPos += 1; continue; } @@ -41,14 +45,14 @@ async function leaderboard(client, guildID, limit) { } led.push({ - guildID: key.guild, - userID: key.user, - xp: key.xp, - shortxp: shortener(key.xp), - level: key.level, + guildID: entryGuildID, + userID, + xp, + shortxp: shortener(xp), + level, position: pos, - username: user.user.username, - tag: user.user.tag + username: member.user.username, + tag: member.user.tag }); } diff --git a/src/setLevel.js b/src/setLevel.js index ffe70d7..e0b124b 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -13,8 +13,6 @@ async function setLevel(message, userID, guildID, level) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (!level || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); - const { client } = message; - const user = await levels.findOneAndUpdate( { user: userID, guild: guildID }, { xp: (level * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((level * 10) ** 2)) }, diff --git a/src/utils/getUserPosition.js b/src/utils/getUserPosition.js index 5e1a8c9..81128e4 100644 --- a/src/utils/getUserPosition.js +++ b/src/utils/getUserPosition.js @@ -1,5 +1,11 @@ const levels = require("../models/level.js"); +/** + * Walks the sorted leaderboard for a guild to discover a user's global position. + * @param {string} userID + * @param {string} guildID + * @returns {Promise} + */ async function getUserPosition(userID, guildID) { const cursor = levels.find({ guild: guildID }).sort({ xp: -1 }).cursor(); let position = 0; diff --git a/src/utils/levelPayload.js b/src/utils/levelPayload.js index b56d843..c84e073 100644 --- a/src/utils/levelPayload.js +++ b/src/utils/levelPayload.js @@ -1,3 +1,10 @@ +/** + * Build the shared payload used when notifying about a level change. + * @param {Object} user + * @param {string} userID + * @param {string} guildID + * @returns {{xp:number,level:number,userID:string,guildID:string}} + */ function buildLevelPayload(user, userID, guildID) { return { xp: user.xp, diff --git a/src/utils/levelUpNotifier.js b/src/utils/levelUpNotifier.js index 15d6641..d5ac731 100644 --- a/src/utils/levelUpNotifier.js +++ b/src/utils/levelUpNotifier.js @@ -1,8 +1,15 @@ const { roleSetup } = require("../simplyxp"); +/** + * Emits the shared level-up event using the configured role setup. + * @param {Discord.Message} message + * @param {Object} data + * @param {number|string} roleLevel + * @returns {Promise} + */ async function notifyLevelUp(message, data, roleLevel) { - const role = await roleSetup.find(message.client, data.guildID, roleLevel); - message.client.emit("levelUp", message, data, role); + const role = await roleSetup.find(message.client, data.guildID, roleLevel); + message.client.emit("levelUp", message, data, role); } module.exports = notifyLevelUp; diff --git a/src/utils/shortener.js b/src/utils/shortener.js index 898e36f..645e5c8 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -1,24 +1,29 @@ +/** + * Format a large XP count using common abbreviations. + * @param {number} count + * @returns {string} + */ function shortener(count) { - const COUNT_ABBRS = [ - "", - "k", - "M", - "B", - "T", - "Q", - "Q+", - "S", - "S+", - "O", - "N", - "D", - "U" - ]; + const COUNT_ABBRS = [ + "", + "k", + "M", + "B", + "T", + "Q", + "Q+", + "S", + "S+", + "O", + "N", + "D", + "U" + ]; - const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); - let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); - result += `${COUNT_ABBRS[i]}`; - return result; + const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); + let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); + result += COUNT_ABBRS[i]; + return result; } module.exports = shortener; From 301838083a4a766290365143304c763c8f0c1869 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:24:08 -0500 Subject: [PATCH 08/33] Refactor leaderboard and shortener logic Improves leaderboard entry handling by cloning objects before destructuring, enhancing data safety. Refactors shortener to handle non-numeric input and index bounds more robustly. Updates README for improved clarity and formatting. --- README.md | 25 +++++++++++-------------- src/leaderboard.js | 7 ++++--- src/utils/shortener.js | 8 +++++--- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 08ca18f..8aa6ccc 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,19 @@ -
- XP Logo -

-

A simple, beginner-friendly XP System for Discord.js bots

-

Originally by Rahuletto, maintained by Abadima

+ Simply-XP logo

-
- -
-[![Downloads](https://img.shields.io/npm/dt/simply-xp?style=for-the-badge)](https://www.npmjs.com/package/simply-xp) -[![Version](https://img.shields.io/npm/v/simply-xp.svg?style=for-the-badge)](https://www.npmjs.com/package/simply-xp) -[![CodeFactor](https://www.codefactor.io/repository/github/abadima/simply-xp/badge/lts?style=for-the-badge)](https://www.codefactor.io/repository/github/abadima/simply-xp/overview/lts) +A simple, beginner-friendly XP system that brings levels, ranks, and role rewards to Discord.js. -[![Documentation](https://img.shields.io/badge/SimplyXP-Documentation-6b46d4?style=for-the-badge)](https://simplyxp.js.org/docs/next/intro/) -[![Support](https://img.shields.io/badge/Discord-Support-5865F2?style=for-the-badge&logo=discord)](https://discord.gg/hjhnjYJNHX) +

+ npm version + npm downloads + CodeFactor grade +

-
+

+ Docs + Discord support +

## 🖥️ How to install? diff --git a/src/leaderboard.js b/src/leaderboard.js index ad81690..cda4f4d 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -24,11 +24,12 @@ async function leaderboard(client, guildID, limit) { const limitNumber = limit ? Number(limit) : null; for (let i = 0; i < leaderboard.length; i += 1) { - const key = leaderboard[i]; - if (!key || typeof key !== "object") { + const rawEntry = leaderboard[i]; + if (!rawEntry || typeof rawEntry !== "object") { continue; } - const { guild: entryGuildID, user: userID, xp, level } = key; + const entry = Object.assign(Object.create(null), rawEntry); + const { guild: entryGuildID, user: userID, xp, level } = entry; const member = await g.members.fetch(userID).catch(() => null); if (!member && shouldPurge) { await levels.deleteOne({ user: userID, guild: entryGuildID }); diff --git a/src/utils/shortener.js b/src/utils/shortener.js index 645e5c8..c627d3a 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -20,9 +20,11 @@ function shortener(count) { "U" ]; - const i = 0 === count ? count : Math.floor(Math.log(count) / Math.log(1000)); - let result = parseFloat((count / Math.pow(1000, i)).toFixed(2)); - result += COUNT_ABBRS[i]; + const numericCount = Number(count) || 0; + const rawIndex = numericCount === 0 ? 0 : Math.floor(Math.log(numericCount) / Math.log(1000)); + const safeIndex = Math.max(0, Math.min(rawIndex, COUNT_ABBRS.length - 1)); + let result = parseFloat((numericCount / Math.pow(1000, safeIndex)).toFixed(2)); + result += COUNT_ABBRS[safeIndex]; return result; } From 732fccb442c3c9901ee67895ce7d75417dd0606e Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:28:17 -0500 Subject: [PATCH 09/33] is it fixed yet.. Updated leaderboard position calculation to use entryIndex for accuracy and refactored the loop to use for...of. Improved shortener function by safely handling suffix assignment. Also standardized formatting and type definitions in index.d.ts for consistency. --- index.d.ts | 80 +++++++++++++++++++++--------------------- src/leaderboard.js | 7 ++-- src/utils/shortener.js | 3 +- 3 files changed, 46 insertions(+), 44 deletions(-) diff --git a/index.d.ts b/index.d.ts index 4e2789f..753bbf4 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,108 +1,108 @@ -import { Message, Client } from 'discord.js' +import { Message } from "discord.js"; -type HexColorString = `#${string}` | string +type HexColorString = `#${string}` | string; export type connectOptions = { - auto_purge?: boolean, - notify?: boolean -} + auto_purge?: boolean; + notify?: boolean; +}; export declare function connect( db: string, options?: connectOptions -): Promise +): Promise; export declare function addLevel( message: Message, userID: string, guildID: string, level: number -): Promise +): Promise; export declare function addXP( message: Message, userID: string, guildID: string, xp: number -): Promise +): Promise; export type chartsOptions = { - position?: string - background?: HexColorString - type?: 'bar' | 'line' | 'radar' | 'doughnut' | 'polarArea' -} + position?: string; + background?: HexColorString; + type?: "bar" | "line" | "radar" | "doughnut" | "polarArea"; +}; export declare function charts( message: Message, options?: chartsOptions -): Promise +): Promise; -export declare function create(userID: string, guildID: string): Promise +export declare function create(userID: string, guildID: string): Promise; -export declare function fetch(userID: string, guildID: string): Promise +export declare function fetch(userID: string, guildID: string): Promise; export declare function leaderboard( userID: string, guildID: string, limit?: number -): Promise +): Promise; export declare function lvlRole( message: Message, userID: string, guildID: string -): Promise +): Promise; export type rankOptions = { - slash?: boolean - background?: string - color?: HexColorString -} + slash?: boolean; + background?: string; + color?: HexColorString; +}; export declare function rank( message: Message, userID: string, guildID: string, options?: rankOptions -): Promise +): Promise; -export declare function reset(userID: string, guildID: string): Promise +export declare function reset(userID: string, guildID: string): Promise; export type lvladdOptions = { - level: string - role: string -} + level: string; + role: string; +}; export type lvlremoveOptions = { - level: string -} + level: string; +}; export declare function setLevel( message: Message, userID: string, guildID: string, level: number -): Promise +): Promise; export declare function setXP( userID: string, guildID: string, xp: number -): Promise +): Promise; /** For levelUp event */ export type Data = { - xp: string - level: number - userID: string - guildID: string -} + xp: string; + level: number; + userID: string; + guildID: string; +}; export type Role = { - lvl: string - role: string -} + lvl: string; + role: string; +}; -declare module 'discord.js' { +declare module "discord.js" { export interface ClientEvents { - levelUp: [Message, Data, Role] + levelUp: [Message, Data, Role]; } } diff --git a/src/leaderboard.js b/src/leaderboard.js index cda4f4d..2afe33a 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -20,11 +20,12 @@ async function leaderboard(client, guildID, limit) { const led = []; let subtractPos = 0; + let entryIndex = 0; const shouldPurge = Boolean(options?.auto_purge); const limitNumber = limit ? Number(limit) : null; - for (let i = 0; i < leaderboard.length; i += 1) { - const rawEntry = leaderboard[i]; + for (const rawEntry of leaderboard) { + entryIndex += 1; if (!rawEntry || typeof rawEntry !== "object") { continue; } @@ -39,7 +40,7 @@ async function leaderboard(client, guildID, limit) { continue; } - const pos = i + 1 - subtractPos; + const pos = entryIndex - subtractPos; if (limitNumber && pos > limitNumber) { if (!shouldPurge) break; continue; diff --git a/src/utils/shortener.js b/src/utils/shortener.js index c627d3a..ab058c2 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -23,8 +23,9 @@ function shortener(count) { const numericCount = Number(count) || 0; const rawIndex = numericCount === 0 ? 0 : Math.floor(Math.log(numericCount) / Math.log(1000)); const safeIndex = Math.max(0, Math.min(rawIndex, COUNT_ABBRS.length - 1)); + const safeSuffix = COUNT_ABBRS[safeIndex] ?? ""; let result = parseFloat((numericCount / Math.pow(1000, safeIndex)).toFixed(2)); - result += COUNT_ABBRS[safeIndex]; + result += safeSuffix; return result; } From 59bb4477e0508427be1ed6dd0757d51950f01f26 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:32:40 -0500 Subject: [PATCH 10/33] Update shortener.js --- src/utils/shortener.js | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/src/utils/shortener.js b/src/utils/shortener.js index ab058c2..05cba3d 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -4,29 +4,11 @@ * @returns {string} */ function shortener(count) { - const COUNT_ABBRS = [ - "", - "k", - "M", - "B", - "T", - "Q", - "Q+", - "S", - "S+", - "O", - "N", - "D", - "U" - ]; - const numericCount = Number(count) || 0; - const rawIndex = numericCount === 0 ? 0 : Math.floor(Math.log(numericCount) / Math.log(1000)); - const safeIndex = Math.max(0, Math.min(rawIndex, COUNT_ABBRS.length - 1)); - const safeSuffix = COUNT_ABBRS[safeIndex] ?? ""; - let result = parseFloat((numericCount / Math.pow(1000, safeIndex)).toFixed(2)); - result += safeSuffix; - return result; + const suffixes = ["", "k", "M", "B", "T", "Q", "Q+", "S", "S+", "O", "N", "D", "U"]; + const index = numericCount === 0 ? 0 : Math.floor(Math.log10(numericCount) / 3); + const safeIndex = Math.min(Math.max(index, 0), suffixes.length - 1); + return (numericCount / Math.pow(1000, safeIndex)).toFixed(2) + suffixes[safeIndex]; } module.exports = shortener; From ee855029972f16f237c4a377368e3f628e70b68a Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:46:14 -0500 Subject: [PATCH 11/33] Fix Typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/create.js b/src/create.js index 978d581..9889cba 100644 --- a/src/create.js +++ b/src/create.js @@ -8,7 +8,7 @@ const levels = require("../src/models/level.js"); async function create(userID, guildID) { if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error("[XP] User ID was not provided."); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); let uzer = await levels.findOne({ user: userID, guild: guildID }); From 8e49516ba6e18b098735f8d8c38ea03c5f33dd4a Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:47:57 -0500 Subject: [PATCH 12/33] Allow "level 0" Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/setLevel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setLevel.js b/src/setLevel.js index e0b124b..5fd7d03 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -11,7 +11,7 @@ const buildLevelPayload = require("./utils/levelPayload"); async function setLevel(message, userID, guildID, level) { if (!userID) throw new Error("[XP] User ID was not provided."); if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!level || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); + if (level == null || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); const user = await levels.findOneAndUpdate( { user: userID, guild: guildID }, From 1efe2c3243e1fbbe5a9cc185ac820838b8b58016 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:48:41 -0500 Subject: [PATCH 13/33] Update src/setXP.js Allow xp = 0 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/setXP.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setXP.js b/src/setXP.js index b2e92ff..fa3601d 100644 --- a/src/setXP.js +++ b/src/setXP.js @@ -3,7 +3,7 @@ const levels = require("../src/models/level.js"); async function setXP(userID, guildID, xp) { if (!userID) throw new Error("[XP] User ID was not provided."); if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!xp || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); + if (xp == null || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); const user = await levels.findOneAndUpdate( { user: userID, guild: guildID }, From 0a009752bf5f99cf2e8be9363dfa3e00e00a90cf Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:49:24 -0500 Subject: [PATCH 14/33] fix typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/reset.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reset.js b/src/reset.js index 2f47ae6..ad8e435 100644 --- a/src/reset.js +++ b/src/reset.js @@ -8,7 +8,7 @@ const levels = require("../src/models/level.js"); async function reset(userID, guildID) { if (!userID) throw new Error("[XP] User ID was not provided."); - if (!guildID) throw new Error("[XP] User ID was not provided."); + if (!guildID) throw new Error("[XP] Guild ID was not provided."); await levels .findOneAndUpdate({ user: userID, guild: guildID }, { xp: 0, level: 0 }) From 55587e84bbb5b2733b61bc31e1fc133849c8e529 Mon Sep 17 00:00:00 2001 From: Solstice Date: Sun, 25 Jan 2026 23:50:48 -0500 Subject: [PATCH 15/33] Update src/leaderboard.js Remove unnecessary const Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/leaderboard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/leaderboard.js b/src/leaderboard.js index 2afe33a..82a6c4e 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -29,8 +29,8 @@ async function leaderboard(client, guildID, limit) { if (!rawEntry || typeof rawEntry !== "object") { continue; } - const entry = Object.assign(Object.create(null), rawEntry); - const { guild: entryGuildID, user: userID, xp, level } = entry; + const { guild: entryGuildID, user: userID, xp, level } = + typeof rawEntry.toObject === "function" ? rawEntry.toObject() : rawEntry; const member = await g.members.fetch(userID).catch(() => null); if (!member && shouldPurge) { await levels.deleteOne({ user: userID, guild: entryGuildID }); From b87ea8081a59dfaf60276d098a9326daa6ee37a2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 04:53:28 +0000 Subject: [PATCH 16/33] Initial plan From b39a7032b84a955c3ca3fea09ed192705985521e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 04:55:03 +0000 Subject: [PATCH 17/33] Fix levelUp event comparison to compare previous level with new level Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/addLevel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addLevel.js b/src/addLevel.js index 8afba9c..30d2705 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -43,7 +43,7 @@ async function addLevel(message, userID, guildID, level) { console.log(`[XP] Failed to add Level | User: ${userID} | Err: ${e}`) ); - if (level1 !== level) { + if (level1 !== user.level) { const data = buildLevelPayload(user, userID, guildID); await notifyLevelUp(message, data, level); From e9b44c85ed7fa8657d1ebe19f29cf830d0a534af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 04:59:15 +0000 Subject: [PATCH 18/33] Initial plan From 8f3374fe34d971f5e858869f90d1ad09c64f4b86 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 04:59:41 +0000 Subject: [PATCH 19/33] Initial plan From 793f2fff1295fdf913a5302dc80d8f82f7752df1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:01:03 +0000 Subject: [PATCH 20/33] Fix race condition in setXP by updating xp and level atomically Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/setXP.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/setXP.js b/src/setXP.js index fa3601d..cc7fcaf 100644 --- a/src/setXP.js +++ b/src/setXP.js @@ -5,17 +5,13 @@ async function setXP(userID, guildID, xp) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (xp == null || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); - const user = await levels.findOneAndUpdate( + const lvl = Math.floor(0.1 * Math.sqrt(xp)); + + await levels.findOneAndUpdate( { user: userID, guild: guildID }, - { xp: xp }, + { xp: xp, level: lvl }, { upsert: true } - ); - - const lvl = Math.floor(0.1 * Math.sqrt(xp)); - if (user.level !== lvl) { - user.level = lvl; - await user.save().catch((e) => console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`)); - } + ).catch((e) => console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`)); return { xp }; } From 207db13fa46b7759755ac5f086d0622663cfb6a8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:01:26 +0000 Subject: [PATCH 21/33] Fix setLevel to capture previous level before updating Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/setLevel.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/setLevel.js b/src/setLevel.js index 5fd7d03..d9ad003 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -13,16 +13,24 @@ async function setLevel(message, userID, guildID, level) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (level == null || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); + // Coerce level to number for consistent comparison + const newLevel = Number(level); + + // Get the previous user document to capture the old level + const previousUser = await levels.findOne({ user: userID, guild: guildID }); + const previousLevel = previousUser ? previousUser.level : 0; + const user = await levels.findOneAndUpdate( { user: userID, guild: guildID }, - { xp: (level * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((level * 10) ** 2)) }, + { xp: (newLevel * 10) ** 2, level: Math.floor(0.1 * Math.sqrt((newLevel * 10) ** 2)) }, { upsert: true, new: true } ); - if (user.level !== level) { + // Compare previous level with new level to determine if levelUp should be emitted + if (previousLevel !== user.level) { const data = buildLevelPayload(user, userID, guildID); - await notifyLevelUp(message, data, level); + await notifyLevelUp(message, data, user.level); } return { From a96625e5bd5de855c6286b260e09db6ae7a7fcb8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:01:40 +0000 Subject: [PATCH 22/33] Initial plan From 6bf2ab85b037890d85420ca4b6b5b62946e045bc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:01:53 +0000 Subject: [PATCH 23/33] Return both xp and level from setXP for consistency Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/setXP.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setXP.js b/src/setXP.js index cc7fcaf..8caf055 100644 --- a/src/setXP.js +++ b/src/setXP.js @@ -13,7 +13,7 @@ async function setXP(userID, guildID, xp) { { upsert: true } ).catch((e) => console.log(`[XP] Failed to set XP | User: ${userID} | Err: ${e}`)); - return { xp }; + return { xp, level: lvl }; } module.exports = setXP; \ No newline at end of file From 52594fc18d762e074fcfc7d4ce13e74aee7fd2c5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:03:14 +0000 Subject: [PATCH 24/33] Ensure level is coerced to number before comparison Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/setLevel.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/setLevel.js b/src/setLevel.js index 5fd7d03..e89ed9c 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -12,6 +12,9 @@ async function setLevel(message, userID, guildID, level) { if (!userID) throw new Error("[XP] User ID was not provided."); if (!guildID) throw new Error("[XP] Guild ID was not provided."); if (level == null || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); + + // Coerce level to number to ensure proper comparisons + level = Number(level); const user = await levels.findOneAndUpdate( { user: userID, guild: guildID }, From a384d7e432cd61e2b0a68108136193ef89f9744e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:04:06 +0000 Subject: [PATCH 25/33] Update JSDoc to reflect level accepts string or number Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/setLevel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setLevel.js b/src/setLevel.js index e89ed9c..41d9cab 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -6,7 +6,7 @@ const buildLevelPayload = require("./utils/levelPayload"); * @param {Discord.Message} message * @param {string} userID * @param {string} guildID - * @param {string} level + * @param {string|number} level */ async function setLevel(message, userID, guildID, level) { if (!userID) throw new Error("[XP] User ID was not provided."); From ec35b9f4d10a2dfb093d41fd959507f057fc4541 Mon Sep 17 00:00:00 2001 From: Solstice Date: Mon, 26 Jan 2026 00:19:01 -0500 Subject: [PATCH 26/33] small patches --- src/leaderboard.js | 2 +- src/utils/levelPayload.js | 12 ++++++------ src/utils/levelUpNotifier.js | 2 +- src/utils/shortener.js | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/leaderboard.js b/src/leaderboard.js index 82a6c4e..b082de2 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -1,6 +1,6 @@ const levels = require("../src/models/level.js"); -const { options } = require("../simplyxp"); const shortener = require("./utils/shortener"); +const { options } = require("../simplyxp"); /** * @param {Discord.Client} client diff --git a/src/utils/levelPayload.js b/src/utils/levelPayload.js index c84e073..eca7f50 100644 --- a/src/utils/levelPayload.js +++ b/src/utils/levelPayload.js @@ -6,12 +6,12 @@ * @returns {{xp:number,level:number,userID:string,guildID:string}} */ function buildLevelPayload(user, userID, guildID) { - return { - xp: user.xp, - level: user.level, - userID, - guildID - }; + return { + xp: user.xp, + level: user.level, + userID, + guildID + }; } module.exports = buildLevelPayload; diff --git a/src/utils/levelUpNotifier.js b/src/utils/levelUpNotifier.js index d5ac731..49ec863 100644 --- a/src/utils/levelUpNotifier.js +++ b/src/utils/levelUpNotifier.js @@ -1,4 +1,4 @@ -const { roleSetup } = require("../simplyxp"); +const { roleSetup } = require("../../simplyxp"); /** * Emits the shared level-up event using the configured role setup. diff --git a/src/utils/shortener.js b/src/utils/shortener.js index 05cba3d..96d4188 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -4,11 +4,11 @@ * @returns {string} */ function shortener(count) { - const numericCount = Number(count) || 0; - const suffixes = ["", "k", "M", "B", "T", "Q", "Q+", "S", "S+", "O", "N", "D", "U"]; - const index = numericCount === 0 ? 0 : Math.floor(Math.log10(numericCount) / 3); - const safeIndex = Math.min(Math.max(index, 0), suffixes.length - 1); - return (numericCount / Math.pow(1000, safeIndex)).toFixed(2) + suffixes[safeIndex]; + const numericCount = Number(count) || 0; + const suffixes = ["", "k", "M", "B", "T", "Q", "Q+", "S", "S+", "O", "N", "D", "U"]; + const index = numericCount === 0 ? 0 : Math.floor(Math.log10(numericCount) / 3); + const safeIndex = Math.min(Math.max(index, 0), suffixes.length - 1); + return (numericCount / Math.pow(1000, safeIndex)).toFixed(2) + suffixes[safeIndex]; } module.exports = shortener; From 0371ecead2ea73f9b3e69fd6e9bffce6139544ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:25:19 +0000 Subject: [PATCH 27/33] Initial plan From eaefb2bd51dc78ff9f7e04dff4ec56035ef638e3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:27:47 +0000 Subject: [PATCH 28/33] Apply review feedback: fix level params, negative numbers, indentation, member checks, and logging Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/addLevel.js | 2 +- src/connect.js | 4 ++-- src/rank.js | 4 ++++ src/setLevel.js | 3 --- src/utils/levelUpNotifier.js | 4 ++-- src/utils/shortener.js | 8 ++++++-- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/addLevel.js b/src/addLevel.js index 30d2705..fbf7106 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -46,7 +46,7 @@ async function addLevel(message, userID, guildID, level) { if (level1 !== user.level) { const data = buildLevelPayload(user, userID, guildID); - await notifyLevelUp(message, data, level); + await notifyLevelUp(message, data, user.level); } return { diff --git a/src/connect.js b/src/connect.js index 2ee476e..19243f4 100644 --- a/src/connect.js +++ b/src/connect.js @@ -5,7 +5,7 @@ const mongoose = require("mongoose"); * @param {import("../index").connectOptions} options */ -async function connect(db, options = []) { +async function connect(db, options = {}) { if (!db) throw new Error("[XP] Database URL was not provided"); mongoose.set("strictQuery", true); @@ -15,7 +15,7 @@ async function connect(db, options = []) { }); - if (options.notify) return console.log("{ XP } Database Connected"); + if (options.notify !== false) return console.log("{ XP } Database Connected"); } module.exports = connect; \ No newline at end of file diff --git a/src/rank.js b/src/rank.js index ea1c4d9..2ad4aca 100644 --- a/src/rank.js +++ b/src/rank.js @@ -49,6 +49,10 @@ async function rank(message, userID, guildID, options = []) { const member = options.member; + if (!member) { + throw new Error("[XP] Member not found or not cached."); + } + const canvas = Canvas.createCanvas(1080, 400), ctx = canvas.getContext("2d"); diff --git a/src/setLevel.js b/src/setLevel.js index aacffee..64b9969 100644 --- a/src/setLevel.js +++ b/src/setLevel.js @@ -14,9 +14,6 @@ async function setLevel(message, userID, guildID, level) { if (level == null || isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); // Coerce level to number to ensure proper comparisons - level = Number(level); - - // Coerce level to number for consistent comparison const newLevel = Number(level); // Get the previous user document to capture the old level diff --git a/src/utils/levelUpNotifier.js b/src/utils/levelUpNotifier.js index 49ec863..d0b7579 100644 --- a/src/utils/levelUpNotifier.js +++ b/src/utils/levelUpNotifier.js @@ -8,8 +8,8 @@ const { roleSetup } = require("../../simplyxp"); * @returns {Promise} */ async function notifyLevelUp(message, data, roleLevel) { - const role = await roleSetup.find(message.client, data.guildID, roleLevel); - message.client.emit("levelUp", message, data, role); + const role = await roleSetup.find(message.client, data.guildID, roleLevel); + message.client.emit("levelUp", message, data, role); } module.exports = notifyLevelUp; diff --git a/src/utils/shortener.js b/src/utils/shortener.js index 96d4188..5c7d70a 100644 --- a/src/utils/shortener.js +++ b/src/utils/shortener.js @@ -5,10 +5,14 @@ */ function shortener(count) { const numericCount = Number(count) || 0; + const isNegative = numericCount < 0; + const absCount = Math.abs(numericCount); const suffixes = ["", "k", "M", "B", "T", "Q", "Q+", "S", "S+", "O", "N", "D", "U"]; - const index = numericCount === 0 ? 0 : Math.floor(Math.log10(numericCount) / 3); + const index = absCount === 0 ? 0 : Math.floor(Math.log10(absCount) / 3); const safeIndex = Math.min(Math.max(index, 0), suffixes.length - 1); - return (numericCount / Math.pow(1000, safeIndex)).toFixed(2) + suffixes[safeIndex]; + const scaled = absCount / Math.pow(1000, safeIndex); + const formatted = scaled.toFixed(2) + suffixes[safeIndex]; + return isNegative ? "-" + formatted : formatted; } module.exports = shortener; From c6d1dc7e594d73a9aa03e3abb73a83def279a5f8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:35:10 +0000 Subject: [PATCH 29/33] Revert connect.js to only notify when explicitly set to true Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/connect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connect.js b/src/connect.js index 19243f4..d4ae7a1 100644 --- a/src/connect.js +++ b/src/connect.js @@ -15,7 +15,7 @@ async function connect(db, options = {}) { }); - if (options.notify !== false) return console.log("{ XP } Database Connected"); + if (options.notify) return console.log("{ XP } Database Connected"); } module.exports = connect; \ No newline at end of file From c1f15b9e15ab9d02772aa6b2bccebd6c095099e5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:49:13 +0000 Subject: [PATCH 30/33] Initial plan From be32272c5b7754859da362eb0eb318cc92ee093b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:51:34 +0000 Subject: [PATCH 31/33] Apply review feedback: fix validation, performance, and config issues Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- eslint.config.cjs | 2 +- src/addLevel.js | 2 +- src/addXP.js | 2 +- src/connect.js | 5 +++++ src/leaderboard.js | 31 ++++++++++++++++++++++++++----- src/rank.js | 1 + 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/eslint.config.cjs b/eslint.config.cjs index 5c8d4ee..3745651 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -12,7 +12,7 @@ module.exports = [ }, parserOptions: { ecmaVersion: "latest", - sourceType: "module" + sourceType: "script" } }, rules: { diff --git a/src/addLevel.js b/src/addLevel.js index fbf7106..5a9c39c 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -13,7 +13,7 @@ async function addLevel(message, userID, guildID, level) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!level) throw new Error("[XP] Level amount is not provided."); + if (level == null || Number.isNaN(Number(level))) throw new Error("[XP] Level amount is not provided."); const user = await levels.findOne({ user: userID, guild: guildID }); diff --git a/src/addXP.js b/src/addXP.js index dd75142..d45fda9 100644 --- a/src/addXP.js +++ b/src/addXP.js @@ -13,7 +13,7 @@ async function addXP(message, userID, guildID, xp) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (!xp) throw new Error("[XP] XP amount is not provided."); + if (xp == null || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); let { client } = message; diff --git a/src/connect.js b/src/connect.js index d4ae7a1..e20aba5 100644 --- a/src/connect.js +++ b/src/connect.js @@ -1,4 +1,5 @@ const mongoose = require("mongoose"); +const simplyxp = require("../simplyxp"); /** * @param {string} db @@ -14,6 +15,10 @@ async function connect(db, options = {}) { useUnifiedTopology: true }); + // Propagate auto_purge option to module options + if (options.auto_purge !== undefined) { + simplyxp.options.auto_purge = options.auto_purge; + } if (options.notify) return console.log("{ XP } Database Connected"); } diff --git a/src/leaderboard.js b/src/leaderboard.js index b082de2..7fb2ff4 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -24,14 +24,35 @@ async function leaderboard(client, guildID, limit) { const shouldPurge = Boolean(options?.auto_purge); const limitNumber = limit ? Number(limit) : null; - for (const rawEntry of leaderboard) { + // Fetch all members concurrently to avoid sequential awaits in the loop + const entriesWithMembers = await Promise.all( + leaderboard.map(async (rawEntry) => { + if (!rawEntry || typeof rawEntry !== "object") { + return { rawEntry: null, member: null }; + } + + const normalizedEntry = + typeof rawEntry.toObject === "function" ? rawEntry.toObject() : rawEntry; + + const { user: userID } = normalizedEntry; + let member = null; + if (userID) { + member = await g.members.fetch(userID).catch(() => null); + } + + return { rawEntry: normalizedEntry, member }; + }) + ); + + for (const entry of entriesWithMembers) { entryIndex += 1; - if (!rawEntry || typeof rawEntry !== "object") { + + const { rawEntry, member } = entry; + if (!rawEntry) { continue; } - const { guild: entryGuildID, user: userID, xp, level } = - typeof rawEntry.toObject === "function" ? rawEntry.toObject() : rawEntry; - const member = await g.members.fetch(userID).catch(() => null); + + const { guild: entryGuildID, user: userID, xp, level } = rawEntry; if (!member && shouldPurge) { await levels.deleteOne({ user: userID, guild: entryGuildID }); } diff --git a/src/rank.js b/src/rank.js index 2ad4aca..ef738cb 100644 --- a/src/rank.js +++ b/src/rank.js @@ -125,6 +125,7 @@ async function rank(message, userID, guildID, options = []) { ctx.lineTo(0, Number(BackgroundRadius)); ctx.quadraticCurveTo(0, 0, Number(BackgroundRadius), 0); ctx.closePath(); + ctx.save(); ctx.clip(); ctx.fillStyle = "#000000"; ctx.fillRect(0, 0, 1080, 400); From 051f656c796111d9001eb850a4a6467bf09fdfd0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:52:02 +0000 Subject: [PATCH 32/33] Update error message in addLevel to match validation logic Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/addLevel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addLevel.js b/src/addLevel.js index 5a9c39c..411e778 100644 --- a/src/addLevel.js +++ b/src/addLevel.js @@ -13,7 +13,7 @@ async function addLevel(message, userID, guildID, level) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (level == null || Number.isNaN(Number(level))) throw new Error("[XP] Level amount is not provided."); + if (level == null || Number.isNaN(Number(level))) throw new Error("[XP] Invalid level amount."); const user = await levels.findOne({ user: userID, guild: guildID }); From a82c91f49ec021b3c09d05579d20c90ebac17c20 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 05:53:11 +0000 Subject: [PATCH 33/33] Improve consistency and performance in validation and deletion Co-authored-by: Abadima <39747270+Abadima@users.noreply.github.com> --- src/addXP.js | 2 +- src/leaderboard.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/addXP.js b/src/addXP.js index d45fda9..7cd9f83 100644 --- a/src/addXP.js +++ b/src/addXP.js @@ -13,7 +13,7 @@ async function addXP(message, userID, guildID, xp) { if (!guildID) throw new Error("[XP] Guild ID was not provided."); - if (xp == null || isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); + if (xp == null || Number.isNaN(Number(xp))) throw new Error("[XP] Invalid XP amount."); let { client } = message; diff --git a/src/leaderboard.js b/src/leaderboard.js index 7fb2ff4..ee1a2cf 100644 --- a/src/leaderboard.js +++ b/src/leaderboard.js @@ -44,6 +44,9 @@ async function leaderboard(client, guildID, limit) { }) ); + // Collect entries to purge for batch deletion + const entriesToPurge = []; + for (const entry of entriesWithMembers) { entryIndex += 1; @@ -54,7 +57,7 @@ async function leaderboard(client, guildID, limit) { const { guild: entryGuildID, user: userID, xp, level } = rawEntry; if (!member && shouldPurge) { - await levels.deleteOne({ user: userID, guild: entryGuildID }); + entriesToPurge.push({ user: userID, guild: entryGuildID }); } if (xp === 0 || !member) { subtractPos += 1; @@ -79,6 +82,13 @@ async function leaderboard(client, guildID, limit) { }); } + // Batch delete purged entries + if (entriesToPurge.length > 0) { + await levels.deleteMany({ + $or: entriesToPurge + }); + } + return led; }

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≪_|i7Bu*6@H(&io^`qui8dp)?yN85s6wr-4YUW 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 z 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