From ab1435a7b6749265c651607e37e2b296fb184d06 Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Thu, 13 Aug 2026 18:44:03 +0530 Subject: [PATCH 1/6] feat: added icons and api --- config.xml | 100 + hooks/post-process.js | 38 + package-lock.json | 5239 +---------------- package.json | 4 +- .../ic_acode_aurora_pulse_background.xml | 39 + .../ic_acode_aurora_pulse_foreground.xml | 20 + .../ic_acode_blueprint_background.xml | 21 + .../ic_acode_blueprint_foreground.xml | 52 + .../ic_acode_midnight_circuit_background.xml | 24 + .../ic_acode_midnight_circuit_foreground.xml | 52 + res/android/drawable/ic_acode_monochrome.xml | 14 + .../ic_acode_pixel_party_background.xml | 21 + .../ic_acode_pixel_party_foreground.xml | 26 + .../ic_acode_solar_flare_background.xml | 21 + .../ic_acode_solar_flare_foreground.xml | 20 + .../ic_acode_terminal_glow_background.xml | 21 + .../ic_acode_terminal_glow_foreground.xml | 52 + .../ic_acode_aurora_pulse.xml | 6 + .../ic_acode_aurora_pulse_round.xml | 6 + .../mipmap-anydpi-v26/ic_acode_blueprint.xml | 6 + .../ic_acode_blueprint_round.xml | 6 + .../ic_acode_midnight_circuit.xml | 6 + .../ic_acode_midnight_circuit_round.xml | 6 + .../ic_acode_pixel_party.xml | 6 + .../ic_acode_pixel_party_round.xml | 6 + .../ic_acode_solar_flare.xml | 6 + .../ic_acode_solar_flare_round.xml | 6 + .../ic_acode_terminal_glow.xml | 6 + .../ic_acode_terminal_glow_round.xml | 6 + .../mipmap-hdpi/ic_acode_aurora_pulse.webp | Bin 0 -> 4732 bytes .../ic_acode_aurora_pulse_round.webp | Bin 0 -> 4970 bytes .../mipmap-hdpi/ic_acode_blueprint.webp | Bin 0 -> 4394 bytes .../mipmap-hdpi/ic_acode_blueprint_round.webp | Bin 0 -> 4590 bytes .../ic_acode_midnight_circuit.webp | Bin 0 -> 2986 bytes .../ic_acode_midnight_circuit_round.webp | Bin 0 -> 3210 bytes .../mipmap-hdpi/ic_acode_pixel_party.webp | Bin 0 -> 3592 bytes .../ic_acode_pixel_party_round.webp | Bin 0 -> 3708 bytes .../mipmap-hdpi/ic_acode_solar_flare.webp | Bin 0 -> 5316 bytes .../ic_acode_solar_flare_round.webp | Bin 0 -> 5202 bytes .../mipmap-hdpi/ic_acode_terminal_glow.webp | Bin 0 -> 2978 bytes .../ic_acode_terminal_glow_round.webp | Bin 0 -> 3206 bytes .../mipmap-mdpi/ic_acode_aurora_pulse.webp | Bin 0 -> 2986 bytes .../ic_acode_aurora_pulse_round.webp | Bin 0 -> 3080 bytes .../mipmap-mdpi/ic_acode_blueprint.webp | Bin 0 -> 2742 bytes .../mipmap-mdpi/ic_acode_blueprint_round.webp | Bin 0 -> 3130 bytes .../ic_acode_midnight_circuit.webp | Bin 0 -> 2106 bytes .../ic_acode_midnight_circuit_round.webp | Bin 0 -> 2162 bytes .../mipmap-mdpi/ic_acode_pixel_party.webp | Bin 0 -> 2446 bytes .../ic_acode_pixel_party_round.webp | Bin 0 -> 2554 bytes .../mipmap-mdpi/ic_acode_solar_flare.webp | Bin 0 -> 3216 bytes .../ic_acode_solar_flare_round.webp | Bin 0 -> 3262 bytes .../mipmap-mdpi/ic_acode_terminal_glow.webp | Bin 0 -> 2068 bytes .../ic_acode_terminal_glow_round.webp | Bin 0 -> 2216 bytes .../mipmap-xhdpi/ic_acode_aurora_pulse.webp | Bin 0 -> 6704 bytes .../ic_acode_aurora_pulse_round.webp | Bin 0 -> 7182 bytes .../mipmap-xhdpi/ic_acode_blueprint.webp | Bin 0 -> 6108 bytes .../ic_acode_blueprint_round.webp | Bin 0 -> 6378 bytes .../ic_acode_midnight_circuit.webp | Bin 0 -> 4042 bytes .../ic_acode_midnight_circuit_round.webp | Bin 0 -> 4304 bytes .../mipmap-xhdpi/ic_acode_pixel_party.webp | Bin 0 -> 4664 bytes .../ic_acode_pixel_party_round.webp | Bin 0 -> 5044 bytes .../mipmap-xhdpi/ic_acode_solar_flare.webp | Bin 0 -> 7678 bytes .../ic_acode_solar_flare_round.webp | Bin 0 -> 7608 bytes .../mipmap-xhdpi/ic_acode_terminal_glow.webp | Bin 0 -> 4058 bytes .../ic_acode_terminal_glow_round.webp | Bin 0 -> 4402 bytes .../mipmap-xxhdpi/ic_acode_aurora_pulse.webp | Bin 0 -> 11232 bytes .../ic_acode_aurora_pulse_round.webp | Bin 0 -> 12100 bytes .../mipmap-xxhdpi/ic_acode_blueprint.webp | Bin 0 -> 9498 bytes .../ic_acode_blueprint_round.webp | Bin 0 -> 10134 bytes .../ic_acode_midnight_circuit.webp | Bin 0 -> 5806 bytes .../ic_acode_midnight_circuit_round.webp | Bin 0 -> 6292 bytes .../mipmap-xxhdpi/ic_acode_pixel_party.webp | Bin 0 -> 6258 bytes .../ic_acode_pixel_party_round.webp | Bin 0 -> 6634 bytes .../mipmap-xxhdpi/ic_acode_solar_flare.webp | Bin 0 -> 12590 bytes .../ic_acode_solar_flare_round.webp | Bin 0 -> 12388 bytes .../mipmap-xxhdpi/ic_acode_terminal_glow.webp | Bin 0 -> 5796 bytes .../ic_acode_terminal_glow_round.webp | Bin 0 -> 6258 bytes .../mipmap-xxxhdpi/ic_acode_aurora_pulse.webp | Bin 0 -> 17164 bytes .../ic_acode_aurora_pulse_round.webp | Bin 0 -> 17026 bytes .../mipmap-xxxhdpi/ic_acode_blueprint.webp | Bin 0 -> 12508 bytes .../ic_acode_blueprint_round.webp | Bin 0 -> 13212 bytes .../ic_acode_midnight_circuit.webp | Bin 0 -> 7670 bytes .../ic_acode_midnight_circuit_round.webp | Bin 0 -> 8332 bytes .../mipmap-xxxhdpi/ic_acode_pixel_party.webp | Bin 0 -> 8334 bytes .../ic_acode_pixel_party_round.webp | Bin 0 -> 8972 bytes .../mipmap-xxxhdpi/ic_acode_solar_flare.webp | Bin 0 -> 18510 bytes .../ic_acode_solar_flare_round.webp | Bin 0 -> 18444 bytes .../ic_acode_terminal_glow.webp | Bin 0 -> 7692 bytes .../ic_acode_terminal_glow_round.webp | Bin 0 -> 8392 bytes .../android/com/foxdebug/system/System.java | 52 + src/plugins/system/system.d.ts | 7 + src/plugins/system/www/plugin.js | 9 + www/icons/ic_acode_aurora_pulse.svg | 37 + www/icons/ic_acode_blueprint.svg | 38 + www/icons/ic_acode_midnight_circuit.svg | 33 + www/icons/ic_acode_pixel_party.svg | 29 + www/icons/ic_acode_solar_flare.svg | 28 + www/icons/ic_acode_terminal_glow.svg | 33 + 98 files changed, 931 insertions(+), 5171 deletions(-) create mode 100644 res/android/drawable/ic_acode_aurora_pulse_background.xml create mode 100644 res/android/drawable/ic_acode_aurora_pulse_foreground.xml create mode 100644 res/android/drawable/ic_acode_blueprint_background.xml create mode 100644 res/android/drawable/ic_acode_blueprint_foreground.xml create mode 100644 res/android/drawable/ic_acode_midnight_circuit_background.xml create mode 100644 res/android/drawable/ic_acode_midnight_circuit_foreground.xml create mode 100644 res/android/drawable/ic_acode_monochrome.xml create mode 100644 res/android/drawable/ic_acode_pixel_party_background.xml create mode 100644 res/android/drawable/ic_acode_pixel_party_foreground.xml create mode 100644 res/android/drawable/ic_acode_solar_flare_background.xml create mode 100644 res/android/drawable/ic_acode_solar_flare_foreground.xml create mode 100644 res/android/drawable/ic_acode_terminal_glow_background.xml create mode 100644 res/android/drawable/ic_acode_terminal_glow_foreground.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse_round.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_blueprint.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_blueprint_round.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit_round.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_pixel_party.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_pixel_party_round.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_solar_flare.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_solar_flare_round.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_terminal_glow.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_terminal_glow_round.xml create mode 100644 res/android/mipmap-hdpi/ic_acode_aurora_pulse.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_aurora_pulse_round.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_blueprint.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_blueprint_round.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_midnight_circuit.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_midnight_circuit_round.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_pixel_party.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_pixel_party_round.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_solar_flare.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_solar_flare_round.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_terminal_glow.webp create mode 100644 res/android/mipmap-hdpi/ic_acode_terminal_glow_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_aurora_pulse.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_aurora_pulse_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_blueprint.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_blueprint_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_midnight_circuit.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_midnight_circuit_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_pixel_party.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_pixel_party_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_solar_flare.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_solar_flare_round.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_terminal_glow.webp create mode 100644 res/android/mipmap-mdpi/ic_acode_terminal_glow_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_aurora_pulse.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_aurora_pulse_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_blueprint.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_blueprint_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_midnight_circuit.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_midnight_circuit_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_pixel_party.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_pixel_party_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_solar_flare.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_solar_flare_round.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_terminal_glow.webp create mode 100644 res/android/mipmap-xhdpi/ic_acode_terminal_glow_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_aurora_pulse.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_aurora_pulse_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_blueprint.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_blueprint_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_midnight_circuit.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_midnight_circuit_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_pixel_party.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_pixel_party_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_solar_flare.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_solar_flare_round.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_terminal_glow.webp create mode 100644 res/android/mipmap-xxhdpi/ic_acode_terminal_glow_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_aurora_pulse.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_aurora_pulse_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_blueprint.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_blueprint_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_pixel_party.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_pixel_party_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_solar_flare.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_solar_flare_round.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_terminal_glow.webp create mode 100644 res/android/mipmap-xxxhdpi/ic_acode_terminal_glow_round.webp create mode 100644 www/icons/ic_acode_aurora_pulse.svg create mode 100644 www/icons/ic_acode_blueprint.svg create mode 100644 www/icons/ic_acode_midnight_circuit.svg create mode 100644 www/icons/ic_acode_pixel_party.svg create mode 100644 www/icons/ic_acode_solar_flare.svg create mode 100644 www/icons/ic_acode_terminal_glow.svg diff --git a/config.xml b/config.xml index 1667557e80..764a3fb358 100644 --- a/config.xml +++ b/config.xml @@ -78,6 +78,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hooks/post-process.js b/hooks/post-process.js index 16f310469e..f4e0112cb9 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -29,6 +29,7 @@ enableLegacyJni(); enableStaticContext(); removeLegacyKeyboardWorkaround(); patchTargetSdkVersion(); +stripLauncherFilterFromMainActivity(); function getPackageName() { const configPath = path.resolve(__dirname, '../config.xml'); @@ -65,6 +66,43 @@ function getTmpDir() { } } +/** + * Removes the MAIN/LAUNCHER intent-filter from MainActivity in the generated + * AndroidManifest. The launcher role is handled by activity-aliases instead + * (see config.xml), so that switching app icons at runtime only toggles aliases + * and never disables the running MainActivity component (which would otherwise + * force-stop/restart the app). + */ +function stripLauncherFilterFromMainActivity() { + const prefix = execSync('npm prefix').toString().trim(); + const manifestPath = path.join( + prefix, + 'platforms/android/app/src/main/AndroidManifest.xml' + ); + + if (!fs.existsSync(manifestPath)) { + console.warn('[Cordova Hook] ⚠️ AndroidManifest.xml not found'); + return; + } + + let content = fs.readFileSync(manifestPath, 'utf-8'); + const updated = content.replace( + /(]*\bname="MainActivity"[^>]*>)\s*]*>\s*]*\/>\s*]*\/>\s*<\/intent-filter>/, + '$1' + ); + + if (updated !== content) { + fs.writeFileSync(manifestPath, updated, 'utf-8'); + console.log( + '[Cordova Hook] ✅ Removed launcher intent-filter from MainActivity' + ); + } else { + console.log( + '[Cordova Hook] ✅ Launcher intent-filter already removed, skipping' + ); + } +} + function patchTargetSdkVersion() { const prefix = execSync('npm prefix').toString().trim(); const gradleFile = path.join(prefix, 'platforms/android/app/build.gradle'); diff --git a/package-lock.json b/package-lock.json index 2facaba1c1..373ddf61f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4125,13 +4125,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true, - "license": "MIT" - }, "node_modules/@iconify/types": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", @@ -4679,34 +4672,6 @@ "node": ">=10" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@npmcli/name-from-folder": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", @@ -5720,16 +5685,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/@sphinxxxx/color-conversion": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", @@ -5743,29 +5698,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", @@ -6607,53 +6539,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -6675,33 +6560,6 @@ "node": ">= 14" } }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", @@ -6779,61 +6637,6 @@ "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", "license": "MIT" }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -6844,16 +6647,6 @@ "node": ">=6" } }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -6909,48 +6702,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "license": "ISC" - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "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==", "license": "Python-2.0" }, - "node_modules/array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -6960,16 +6717,6 @@ "node": ">=8" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -6989,43 +6736,6 @@ "node": "*" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/autoprefixer": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", @@ -7069,23 +6779,6 @@ "integrity": "sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==", "license": "MIT" }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true, - "license": "MIT" - }, "node_modules/babel-loader": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", @@ -7171,16 +6864,6 @@ "node": ">=6.0.0" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", @@ -7253,227 +6936,69 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/body-parser": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", - "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", - "dev": true, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.15.1", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" + "big-integer": "1.6.x" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">= 5.10.0" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, + "node_modules/brace-expansion": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "license": "MIT", "dependencies": { - "ms": "2.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", - "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -7509,23 +7034,6 @@ "node": ">=4.0" } }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/cacache": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz", @@ -7547,82 +7055,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -7666,13 +7098,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/chai": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", @@ -7709,13 +7134,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" - }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", @@ -7765,23 +7183,6 @@ "node": ">=6.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/cli": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", @@ -7796,39 +7197,6 @@ "node": ">=0.2.5" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true, - "license": "ISC" - }, "node_modules/cli/node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -7896,19 +7264,6 @@ "node": ">=20" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cmd-shim": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", @@ -7918,16 +7273,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/codemirror": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", @@ -7993,19 +7338,6 @@ "resolved": "src/plugins/pluginContext", "link": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -8024,86 +7356,6 @@ "node": ">= 18" } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/compression/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ], - "license": "MIT" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -8111,60 +7363,6 @@ "dev": true, "license": "MIT" }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conf/node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conf/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", @@ -8191,57 +7389,6 @@ "date-now": "^0.1.4" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ], - "license": "MIT" - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -8249,23 +7396,6 @@ "dev": true, "license": "MIT" }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, "node_modules/cordova": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/cordova/-/cordova-13.0.0.tgz", @@ -8576,61 +7706,6 @@ "resolved": "src/plugins/websocket", "link": true }, - "node_modules/cordova-serve": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-4.0.1.tgz", - "integrity": "sha512-YbfXaZ60yr5dkqmDFQgrU7TSKnzCqYsxHgIUzDeX8RggZb6mz1F9jMfUBbaYyaU7JjcuJ0aoRPYLvwSGQVhGkw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "chalk": "^3.0.0", - "compression": "^1.7.4", - "express": "^4.17.1", - "open": "^7.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": ">= 10", - "npm": ">= 5.6.0" - } - }, - "node_modules/cordova-serve/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cordova-serve/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/cordova-serve/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, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/cordova/node_modules/semver": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", @@ -8833,19 +7908,6 @@ "node": ">=4" } }, - "node_modules/currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-find-index": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cytoscape": { "version": "3.33.3", "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.3.tgz", @@ -9354,19 +8416,6 @@ "lodash-es": "^4.17.21" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -9379,32 +8428,6 @@ "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "license": "MIT" }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debounce-fn/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -9435,19 +8458,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/dedent": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", @@ -9476,23 +8486,6 @@ "node": ">=0.12" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true, - "license": "MIT" - }, "node_modules/delaunator": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", @@ -9502,73 +8495,13 @@ "robust-predicates": "^3.0.2" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "license": "MIT", "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/dep-graph": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dep-graph/-/dep-graph-1.1.0.tgz", - "integrity": "sha512-/6yUWlSH0Uevjj6HWvO86rDeFzuYfzbaKDqifTEemwfwEPyBrODTb3ox/jFzqmc2+UmgJ3IDMS88BKEBh1Nm2Q==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "dependencies": { - "underscore": "1.2.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/dep-graph/node_modules/underscore": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.2.1.tgz", - "integrity": "sha512-HRhh6FYh5I5/zTt7L9MnHRA/nlSFPiwymMCXEremmzT7tHR+8CNP0FXHPaUpafAPwvAlNrvZiH91kQwoo/CqUA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=8" } }, "node_modules/detect-libc": { @@ -9693,52 +8626,12 @@ "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/editor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", "integrity": "sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==", "license": "MIT" }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.357", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz", @@ -9800,37 +8693,6 @@ "node": ">=14" } }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/endent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", @@ -9883,13 +8745,6 @@ "node": ">=6" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -9900,16 +8755,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", @@ -9926,19 +8771,6 @@ "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-toolkit": { "version": "1.46.1", "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.46.1.tgz", @@ -9958,23 +8790,6 @@ "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -10071,16 +8886,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -10140,156 +8945,6 @@ "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "license": "Apache-2.0" }, - "node_modules/express": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", - "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.5", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.15.1", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.15.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", - "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "es-define-property": "^1.0.1", - "side-channel": "^1.1.1" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ], - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/extsprintf": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", @@ -10378,29 +9033,6 @@ } } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/filesize": { "version": "11.0.17", "resolved": "https://registry.npmjs.org/filesize/-/filesize-11.0.17.tgz", @@ -10422,42 +9054,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -10485,64 +9081,6 @@ "flat": "cli.js" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fraction.js": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", @@ -10584,31 +9122,6 @@ } } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -10652,75 +9165,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -10762,45 +9206,6 @@ "node": "*" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -10813,16 +9218,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "13.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", @@ -10852,32 +9247,6 @@ "node": ">= 6" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -10898,55 +9267,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -11001,55 +9321,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "license": "MIT", - "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/har-validator/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, - "license": "MIT" - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11060,36 +9331,6 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/hasown": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", @@ -11184,27 +9425,6 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -11218,22 +9438,6 @@ "node": ">= 14" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -11256,16 +9460,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -11341,16 +9535,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/import-meta-resolve": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", @@ -11370,23 +9554,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true, - "license": "ISC" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -11414,346 +9581,22 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/init-package-json": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", - "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", - "dev": true, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "license": "ISC", - "dependencies": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/init-package-json/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "node_modules/ip-address": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "license": "MIT", "engines": { - "node": ">=10" - } - }, - "node_modules/init-package-json/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/init-package-json/node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/init-package-json/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/init-package-json/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/inquirer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/insight": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/insight/-/insight-0.11.1.tgz", - "integrity": "sha512-TBcZ0qC9dgdmcxL93OoqkY/RZXJtIi0i07phX/QyYk2ysmJtZex59dgTj4Doq50N9CG9dLRe/RIudc/5CCoFNw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "async": "^2.6.2", - "chalk": "^4.1.1", - "conf": "^10.0.1", - "inquirer": "^6.3.1", - "lodash.debounce": "^4.0.8", - "os-name": "^4.0.1", - "request": "^2.88.0", - "tough-cookie": "^4.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/insight/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/insight/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/insight/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" + "node": ">= 12" } }, "node_modules/is-arrayish": { @@ -11776,19 +9619,6 @@ "node": ">=8" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.16.2", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", @@ -11804,22 +9634,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -11851,43 +9665,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -11957,26 +9734,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true, - "license": "MIT" - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12001,13 +9758,6 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true, - "license": "MIT" - }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -12081,13 +9831,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true, - "license": "MIT" - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -12158,13 +9901,6 @@ "node": "*" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true, - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", @@ -12174,13 +9910,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -12188,13 +9917,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz", - "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/json-stringify-nice": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", @@ -12204,13 +9926,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "license": "ISC" - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -12230,19 +9945,6 @@ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -12252,32 +9954,6 @@ ], "license": "MIT" }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/jsprim/node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -12318,34 +9994,11 @@ "katex": "cli.js" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/khroma": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "license": "MIT", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/layout-base": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", @@ -12715,20 +10368,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loud-rejection": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.2.0.tgz", - "integrity": "sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -12739,16 +10378,6 @@ "get-func-name": "^2.0.1" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "11.5.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", @@ -12758,19 +10387,6 @@ "node": "20 || >=22" } }, - "node_modules/macos-release": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", - "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", @@ -12904,55 +10520,12 @@ "node": ">= 18" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/md5-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", - "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", - "dev": true, - "license": "MIT", - "bin": { - "md5-file": "cli.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "license": "MIT" }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -13009,16 +10582,6 @@ "node": ">= 20" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -13044,19 +10607,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -13091,16 +10641,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/mini-css-extract-plugin": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz", @@ -13137,16 +10677,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minimizer-webpack-plugin": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", @@ -13288,30 +10818,6 @@ "node": ">=8" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", - "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -13800,13 +11306,6 @@ "mustache": "bin/mustache" } }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true, - "license": "ISC" - }, "node_modules/nanoid": { "version": "3.3.16", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", @@ -13908,61 +11407,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -13973,16 +11417,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm-bundled": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", @@ -14126,63 +11560,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/objectorarray": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", @@ -14203,29 +11580,6 @@ "node": ">=12.20.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -14251,70 +11605,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-name": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", - "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "macos-release": "^2.5.0", - "windows-release": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -14359,32 +11649,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/package-manager-detector": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", @@ -14480,16 +11744,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -14560,13 +11814,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-to-regexp": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", - "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", - "dev": true, - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -14593,13 +11840,6 @@ "node": "*" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true, - "license": "MIT" - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -14619,95 +11859,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/plist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.1.tgz", @@ -14895,16 +12046,6 @@ "dev": true, "license": "MIT" }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", @@ -14976,37 +12117,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", - "dev": true, - "license": "ISC", - "dependencies": { - "read": "1" - } - }, "node_modules/properties-parser": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.6.0.tgz", @@ -15017,44 +12127,6 @@ "node": ">= 0.3.1" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -15074,41 +12146,6 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.5.tgz", - "integrity": "sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -15145,45 +12182,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/raw-loader": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", @@ -15258,66 +12256,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-chunk": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", - "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/read-cmd-shim": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-6.0.0.tgz", @@ -15327,118 +12265,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/read-package-json": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.2.tgz", - "integrity": "sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==", - "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/read-package-json-fast/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "license": "ISC" - }, - "node_modules/read-package-json/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, - "license": "MIT" - }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "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/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "license": "ISC" - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -15506,32 +12332,6 @@ "node": ">=4" } }, - "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "license": "MIT", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", @@ -15552,73 +12352,6 @@ "regjsparser": "bin/parser" } }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/request/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15675,63 +12408,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -15742,76 +12418,6 @@ "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==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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, - "license": "MIT" - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "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/rimraf/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/robust-predicates": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", @@ -15864,16 +12470,6 @@ "points-on-path": "^0.2.1" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15903,26 +12499,6 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "license": "BSD-3-Clause" }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -16032,107 +12608,22 @@ "semver": "bin/semver.js" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "license": "BSD-3-Clause", + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, - "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -16154,82 +12645,6 @@ "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -16350,28 +12765,6 @@ "node": ">=0.10.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-correct/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -16405,32 +12798,6 @@ "node": ">=0.2.4" } }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ssri": { "version": "13.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", @@ -16450,16 +12817,6 @@ "dev": true, "license": "MIT" }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/std-env": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz", @@ -16525,16 +12882,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -16716,13 +13063,6 @@ "license": "MIT", "peer": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -16774,16 +13114,6 @@ "node": ">=14.14" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16796,37 +13126,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -16899,26 +13198,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, "node_modules/type-detect": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", @@ -16929,56 +13208,6 @@ "node": ">=4" } }, - "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, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -17015,13 +13244,6 @@ "dev": true, "license": "MIT" }, - "node_modules/underscore": { - "version": "1.13.8", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz", - "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==", - "dev": true, - "license": "MIT" - }, "node_modules/undici": { "version": "6.27.0", "resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz", @@ -17082,26 +13304,6 @@ "node": ">=4" } }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -17114,26 +13316,6 @@ "node": ">=8" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -17175,56 +13357,14 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "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, "license": "BSD-2-Clause", "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" + "punycode": "^2.1.0" } }, "node_modules/url-parse": { @@ -17237,35 +13377,12 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uuid": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", @@ -17285,28 +13402,6 @@ "integrity": "sha512-zaSmOW6ykXwrkX0YTuFUSoALNEKGaQHpxBJQLb3TXspRNDpBwbfrIQCZqAQ0LKBlKuyn2YOq7NNd6415hvZ33g==", "license": "Apache-2.0" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/validate-npm-package-name": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", @@ -17325,38 +13420,6 @@ "@sphinxxxx/color-conversion": "^2.2.2" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" - }, "node_modules/vite": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.0.tgz", @@ -17733,200 +13796,6 @@ "node": ">=8" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wide-align/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wide-align/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/windows-release": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", - "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^4.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/windows-release/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/with-open-file": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", - "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/workerpool": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", @@ -18147,974 +14016,6 @@ "xml2js": "0.4.23" } }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, - "engines": { - "node": ">= 10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true, - "license": "ISC" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "license": "ISC", - "dependencies": { - "infer-owner": "^1.0.4" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "license": "ISC" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/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, - "license": "MIT" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/cordova/-/cordova-11.0.0.tgz", - "integrity": "sha512-Hu2YeT0naeP/1sEm/xfJYUsXN48XV6zagxbi1+4q0Ei9c5TKsIq8v4EWukvSHF4UO2pnh+9ViaDlGMcS1Wrnfg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "configstore": "^5.0.1", - "cordova-common": "^4.0.2", - "cordova-create": "^4.0.0", - "cordova-lib": "^11.0.0", - "editor": "^1.0.0", - "execa": "^5.1.1", - "fs-extra": "^10.0.0", - "insight": "^0.11.1", - "loud-rejection": "^2.2.0", - "nopt": "^5.0.0", - "semver": "^7.3.5", - "systeminformation": "^5.9.17", - "update-notifier": "^5.1.0" - }, - "bin": { - "cordova": "bin/cordova" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-app-hello-world": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-6.0.0.tgz", - "integrity": "sha512-wPZsm+fzNUwdiTRODT+fQuPV410RNmd3Buiw63vT8BPxjC+cn6Bu8emrgwrDM4pbmU5sa5Unwu3xPcbQGQ3G3g==", - "dev": true, - "license": "Apache-2.0" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-common": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.1.0.tgz", - "integrity": "sha512-sYfOSfpYGQOmUDlsARUbpT/EvVKT/E+GI3zwTXt+C6DjZ7xs6ZQVHs3umHKSidjf9yVM2LLmvGFpGrGX7aGxug==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.2.0", - "cross-spawn": "^7.0.1", - "elementtree": "^0.1.7", - "endent": "^1.4.1", - "fast-glob": "^3.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "plist": "^3.0.1", - "q": "^1.5.1", - "read-chunk": "^3.2.0", - "strip-bom": "^4.0.0", - "underscore": "^1.9.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-common/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-create": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-4.1.0.tgz", - "integrity": "sha512-8VQohB5w5WwuxurQJ+2L+lAFVhBr//kFvlxLOmF0P3SzTdfIU02pNalbOeLalC0DXD7rfBXJZOxJ+KSM5TOq+Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cordova-app-hello-world": "^6.0.0", - "cordova-common": "^4.1.0", - "cordova-fetch": "^3.1.0", - "fs-extra": "^10.1.0", - "globby": "^11.1.0", - "import-fresh": "^3.3.0", - "isobject": "^4.0.0", - "npm-package-arg": "^8.1.5", - "path-is-inside": "^1.0.2", - "tmp": "^0.2.1", - "valid-identifier": "0.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-fetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-3.1.0.tgz", - "integrity": "sha512-qOT3HlNzVWbsCZVvbkZ6PdvAG1byiK8vWG+/Z+7s+8ZB76rOYKdzMvrmmMwrTTX6nglDnz5uJ/4XjQHJB770GQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cordova-common": "^4.1.0", - "fs-extra": "^9.1.0", - "npm-package-arg": "^8.1.5", - "pacote": "^11.3.5", - "pify": "^5.0.0", - "resolve": "^1.22.1", - "semver": "^7.3.8", - "which": "^2.0.2" - }, - "engines": { - "node": ">= 10", - "npm": ">= 5.6.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-fetch/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/cordova-lib": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-11.1.0.tgz", - "integrity": "sha512-/XM+/wFag72bD4SNSxwX8b3OWatHNNlnmJpgb5pepp2Pobb957nWyR0GPwIkKyOyszdZesWM3Vv8uH9e2Z1k2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cordova-common": "^4.1.0", - "cordova-fetch": "^3.1.0", - "cordova-serve": "^4.0.0", - "dep-graph": "^1.1.0", - "detect-indent": "^6.1.0", - "detect-newline": "^3.1.0", - "elementtree": "^0.1.7", - "execa": "^5.1.1", - "fs-extra": "^10.1.0", - "globby": "^11.1.0", - "init-package-json": "^2.0.5", - "md5-file": "^5.0.0", - "pify": "^5.0.0", - "semver": "^7.3.8", - "stringify-package": "^1.0.1", - "write-file-atomic": "^3.0.3" - }, - "engines": { - "node": ">=12" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/endent": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", - "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dedent": "^0.7.0", - "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.4" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "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" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true, - "license": "ISC" - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", - "dev": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/pify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", - "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "src/plugins/cordova-plugin-advanced-http/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "src/plugins/cordova-plugin-advanced-http/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, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "src/plugins/cordova-plugin-buildinfo": { "version": "4.0.0", "dev": true, diff --git a/package.json b/package.json index 30297fa42a..44502626e4 100644 --- a/package.json +++ b/package.json @@ -45,10 +45,10 @@ "com.foxdebug.acode.rk.exec.proot": {}, "cordova-plugin-iap": {}, "com.foxdebug.acode.rk.customtabs": {}, - "cordova-plugin-system": {}, "cordova-plugin-crashhandler": {}, "cordova-plugin-advanced-http": {}, - "cordova-plugin-acode-webview": {} + "cordova-plugin-acode-webview": {}, + "cordova-plugin-system": {} }, "platforms": [ "android" diff --git a/res/android/drawable/ic_acode_aurora_pulse_background.xml b/res/android/drawable/ic_acode_aurora_pulse_background.xml new file mode 100644 index 0000000000..ce30f7f4c3 --- /dev/null +++ b/res/android/drawable/ic_acode_aurora_pulse_background.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_aurora_pulse_foreground.xml b/res/android/drawable/ic_acode_aurora_pulse_foreground.xml new file mode 100644 index 0000000000..99dbb87b8d --- /dev/null +++ b/res/android/drawable/ic_acode_aurora_pulse_foreground.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_blueprint_background.xml b/res/android/drawable/ic_acode_blueprint_background.xml new file mode 100644 index 0000000000..11b508de04 --- /dev/null +++ b/res/android/drawable/ic_acode_blueprint_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_blueprint_foreground.xml b/res/android/drawable/ic_acode_blueprint_foreground.xml new file mode 100644 index 0000000000..d48af39543 --- /dev/null +++ b/res/android/drawable/ic_acode_blueprint_foreground.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_midnight_circuit_background.xml b/res/android/drawable/ic_acode_midnight_circuit_background.xml new file mode 100644 index 0000000000..0ef755aa3b --- /dev/null +++ b/res/android/drawable/ic_acode_midnight_circuit_background.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_midnight_circuit_foreground.xml b/res/android/drawable/ic_acode_midnight_circuit_foreground.xml new file mode 100644 index 0000000000..42de5c1761 --- /dev/null +++ b/res/android/drawable/ic_acode_midnight_circuit_foreground.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_monochrome.xml b/res/android/drawable/ic_acode_monochrome.xml new file mode 100644 index 0000000000..38536a8a9a --- /dev/null +++ b/res/android/drawable/ic_acode_monochrome.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/res/android/drawable/ic_acode_pixel_party_background.xml b/res/android/drawable/ic_acode_pixel_party_background.xml new file mode 100644 index 0000000000..2a5fc569c7 --- /dev/null +++ b/res/android/drawable/ic_acode_pixel_party_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_pixel_party_foreground.xml b/res/android/drawable/ic_acode_pixel_party_foreground.xml new file mode 100644 index 0000000000..2898db06e5 --- /dev/null +++ b/res/android/drawable/ic_acode_pixel_party_foreground.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_solar_flare_background.xml b/res/android/drawable/ic_acode_solar_flare_background.xml new file mode 100644 index 0000000000..6f9589c538 --- /dev/null +++ b/res/android/drawable/ic_acode_solar_flare_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_solar_flare_foreground.xml b/res/android/drawable/ic_acode_solar_flare_foreground.xml new file mode 100644 index 0000000000..06eeca1ad2 --- /dev/null +++ b/res/android/drawable/ic_acode_solar_flare_foreground.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_terminal_glow_background.xml b/res/android/drawable/ic_acode_terminal_glow_background.xml new file mode 100644 index 0000000000..afd79b72b2 --- /dev/null +++ b/res/android/drawable/ic_acode_terminal_glow_background.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_terminal_glow_foreground.xml b/res/android/drawable/ic_acode_terminal_glow_foreground.xml new file mode 100644 index 0000000000..ee65cf2ef5 --- /dev/null +++ b/res/android/drawable/ic_acode_terminal_glow_foreground.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse.xml b/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse.xml new file mode 100644 index 0000000000..6b8c715762 --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse_round.xml new file mode 100644 index 0000000000..6b8c715762 --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_aurora_pulse_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_blueprint.xml b/res/android/mipmap-anydpi-v26/ic_acode_blueprint.xml new file mode 100644 index 0000000000..6415762a4d --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_blueprint.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_blueprint_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_blueprint_round.xml new file mode 100644 index 0000000000..6415762a4d --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_blueprint_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit.xml b/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit.xml new file mode 100644 index 0000000000..5b709ba70f --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit_round.xml new file mode 100644 index 0000000000..5b709ba70f --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_midnight_circuit_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_pixel_party.xml b/res/android/mipmap-anydpi-v26/ic_acode_pixel_party.xml new file mode 100644 index 0000000000..a622de3912 --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_pixel_party.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_pixel_party_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_pixel_party_round.xml new file mode 100644 index 0000000000..a622de3912 --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_pixel_party_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_solar_flare.xml b/res/android/mipmap-anydpi-v26/ic_acode_solar_flare.xml new file mode 100644 index 0000000000..8d0f1caf5e --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_solar_flare.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_solar_flare_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_solar_flare_round.xml new file mode 100644 index 0000000000..8d0f1caf5e --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_solar_flare_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow.xml b/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow.xml new file mode 100644 index 0000000000..7f47bfab6a --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow_round.xml new file mode 100644 index 0000000000..7f47bfab6a --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_terminal_glow_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-hdpi/ic_acode_aurora_pulse.webp b/res/android/mipmap-hdpi/ic_acode_aurora_pulse.webp new file mode 100644 index 0000000000000000000000000000000000000000..39deea40e14634ded4b17e7ceec3aba6fefc717d GIT binary patch literal 4732 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 KTY=ShvSkEHbD^gI literal 0 HcmV?d00001 diff --git a/res/android/mipmap-hdpi/ic_acode_aurora_pulse_round.webp b/res/android/mipmap-hdpi/ic_acode_aurora_pulse_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..c9cb2bd1acbc954921e0b565a90db38e013a997b GIT binary patch literal 4970 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-hdpi/ic_acode_blueprint.webp b/res/android/mipmap-hdpi/ic_acode_blueprint.webp new file mode 100644 index 0000000000000000000000000000000000000000..42cf0c189dd1030ed880e0e96295df61166e7466 GIT binary patch literal 4394 zcmV+_5!LQeNk&E@5dZ*JMM6+kP&iB#5dZ)$N5Byf4M1$$Mvw&Axx4>Yw*P`>?rVtX z{{&D}msOY3W7l&Ldby6GD6=XG_O_+)3H+f{8WIf2kK$5wB~Xs-KE z^N;XbI3x7T)>UcanUVzCNRpiN0~XfjA0=9DT|t&4S+&wD?vrzQN9JA*evtqF4R*wH zmqPZuB_93H=oY$5 z#RB*bQ4}3Q2n$i*Il~vwtPTK`RI2ioh(a-?R zhW8j@rExXJA&T%fWf?|7I2c-icBLqX9Kz}4Mg~!iPYfg7dLYoQ{aB7=mMh-msO6Cs zPr)A?8q1c8n=L;3kw=b3#-b=Xjv(VV(uC z$KWx`5H|cZ z`yA-0&u*l4!SJ2MZT$DwD#NUyBe;ZYOQ!?Okj-%uAp9xrhCl>Xu>{qU1u}us33m+$ zzvQAujqO+ms_~AKpy6ClONIvvV*i5_!+@bTP>c|WTA*@)rd$BU{XuhTh|@7d18o~7 z41cS_T`eQq)EQ#xDxykr0)i4QoggR}-ejA0!^?7vj~`pjoy#_@>D9P+z zw#hipcd`vLpuCXH5yFGtpav7xm`j8Z`9gjnTOtE=&o9jR3w{R96R^N4T;t`aLT=g- zv}NAhKJpP~0=+ae82$j`FLn&Q=VTk5E~P>Ozv24K)AeBfwJZ=yNBkN$0>aOvV-S4e zrVyM2^u!X)lwjodxDH{Fw((9H!LVu=2E&>m3JApc!h~~y5Frv5s8MMUOG%(o0keRi z%<#^@aJm8~AfYwYR7wB#AMFk^Y!6?(dFM|c%#Ip*_W%DW%Me^BIMt&vQ^sbRGb6b; z(9E3Mkv8KR=}2daKvE^X>2dzAoc_R&7pNU5x%K%kTTrDw7t{00A$SNigN_b-CCMBa zPhN_IO4emLos*sD-(z~ljGB@f;p@wnPv_0MiIW9^`f^`eMuf=WDaaT0{zraIR+4~$ ziD(d?PIQigF4=mF86!i=wjPix&R_gUKygi z3l+}s$2s~B=j@8aLF=UpmdiE_D%O&U^31_-->e8T5ELTWnr}eIm_Q*iB}1~QyiwzV z=#?TC6}V$2$*$=-(JO~#rc_M`!%stEnW(c8H(;PENe2`%dn6;TLCbgttxp8s(hfe- z=`!1a@Gy_cd1VNi#Z#+94fn4M{MT?olEF0TAJ~433@$<7Yg)ln8JJn*V`w?|kAk{9 z@jP*`K1lXOSD89P&YO@blz>2$K+S#fBvVot+(FC(50AT!#kuTf2qqzI(lUwAQD#4g z(l65laY)*pK~O;mgkSJSqC9`11{$eJ8%z~X1R6QsnL5uV&^AUKgb2bbGUr)FI*l%K zIVE%|B-K>(UMnc00o`L~U(IWhS16G};|r5JZvu7LU$^D>#Eaw6yqq3Qf`8vxOT zw4+MMTz4qN^}Co7CtNx}EWHBeFjO+K)*>}R9Gb1CsSQK{K_sI5G=&H^NI9-%T8W^J z$BaF3ijbcfn(D0{RBH}z(kTe-LC;ju4O5P*@EA&?6BKPiwCL8WNOLbbw|q^t@P$uc zMrO*_{3(cmDacbqQTdziX11aF4e>!^bv>sXSDp3hUo-#v6)_Osb2u#$l*Axwct_L< z&ctaOWWoZgfN%qDq>k58jbKx_33r1)8F7gWik(0H_JhCuK0q73s7I(7LpctWNzbt3 z5APBT;DcXzNa|xC?!XpFCjv1;KQN99?tX2RBtS?2YS20p9fRPw@eGkbDgb86jD*|V zSfHX^H_HI$0G*Cc1&*B80teoyT<*%0Lka@9OeYYgqzM50)cg7H0XGW(+pqxu*PVCB z&t3rlFOml8k~AWu75UVVoJ{aGSk!CT!`YG z3c%GZ?LNUVm@xqGrPnDk8i8Q^fl?|aa+()1v6ra;XG3XdO2>>_l2A~J8!WE|j05={0 z(l|2^QGB!c(K1CDY88=|DX$Eap%Cequ}KNySDjyR5)A;qyBr^YuHOgXT_)7D8*g?8 z;MzkHB2AS)xRYl9E#)`G?=1KapVh*f7uB0;0@2YiL~taF3=R?01JRxy<^w>|lGKRn z1mL|Tvo^eK0Itnxb_OlO={&#Zg|W;|?Uw635?5UAr!GlJj*r4V_;XKDZ( zB#NR{=KT{hkKTqj5~mA9F^fsTVgQjr2delbnhQx{1ex)d_&GJc<+jhEqFDt1j2ySQ z-I&L_3)x0)-q;Vo^_iR_0P1l~J&WucZxDDVCv!P?q8ho0hDJd=Xh40icG3ytL@U|x z>=@TmnpS^easi~|t&*0L2JZ$f0Zg4g`ZdHY5#2~zc;O;cv;(59g@w3<1o9h&ibUCOA@F85|xK z=rscH9zQEK1n&UAJLHR;qQ(r_KD5k^W(SahqT@N62dcM(EaDw8za7+wubtj0_&r%< zsYS?D&>joD348++@U@ zBk0uRp1csP;d$TzR6B42fuD)CgyrtYIFj^PI^!x!b2wx53IF>jvk34SbUi7-JI}Ys zOB+LC0K?(9U@a4`#H=5Qj69lYvgB1r$lW`jz=I{zRS<3<;NwfI9=!K3kuy#j~w*Jj5vdp)hw0u zeE|j|4f-v8(QDa;^3B3Kt>C#!3_jxYoabX`2VF(c z-G7Z!UW80X>wLBC(l}x=zvp*o(~EUP9>=dX8#PI zt3)3Zz4Df*Z}T{Y00w7^ogb6)Zp|sI5fYVT_+)reX$A%&VuZwbg_*%E7zTbP?)C`s zm90lXps6{6jBJ=q$eoG>1ygokys1hyJn`X%C*D~lAnUM-IdJ>T=9c~zkclKI42ayM zVx7Sq@DMzG;mB8#$jHgbgcO_{yvTw~^kCy&IumBd3(*Sj&@Z5R_syFjd5y>b`Q$<- zFkE-lIfsCQr5dYPP(I@|L4-z2m;tTQM4%}t;^fXaDV!tYl_MT4#hDG_l$ldn0it>3 zZbvox`g2f-csMnIS-^1F@Y8S-OrRP3e{Fy#4nz=%X=IT$h)h|6Xc-r*&EWvPx*I_! zJvvg_s7%g+xhg{xWa7q`H;3yOK(3_i5F!tnR;1u;!CP$z5$`yG5O?t@;>3aiLX9C3 zXaz9qH^fL8NfQL#S+3QnfEI`VYD80cnOkTrDgc4j4c~y25)Jh_dpgQ9HJ}{Y5$$|U zmo%ljepA)$^5agvumpN(SOmZ$BSZGnv2(zg0+2`A!1mWb0zsKef?#B#R$lN6LOJ*g zm(k4e&fE(RbGf(>)KMNUGWuoIN!-#@;G$Ud1tKV3aYjsq&MXk(>8H&-MdwvE!LK|= zC?nC#xp2xE;=&QA@#YjkM!%eN7?i?r+pN~`e8K;REH2=t52*Y{6C4DUXZS#`4c$~U z!#hKR*{UH>;RKJPT3v;Cp+FmEvs5<2Kf`c=GQ&|r;AHCZrg}0M0)}&emJMH6)J_dO kW_gCbK>KF*4L^emod_qO8nck$ui=x~QJ2m)JWd11jU>sc(tqnP zVZ>=0jY9p`JKzJONRkxgfq?a|a9_uK9UG8j+g6>N7T?|r&;E~lnwkF?(!`0gahDNL z{hxs7^-4`k+yWhl=tUo|bSwib0NfB3ZYDSRo8h)W2p$Nd8O>l2MT_W1QN+S?c6Ux=az(IS#U6t%pC1!{6& za%7TenQwX_COnNe+|~(j1CBKj$jK3s0+AC~;Wt7ck+>ota$l}ljFc&92&})gAOLIz zBRM*9^0_Q0j)`V4V!qws;U71^0H_g;Oe}@SBJ{r`o;alwLih&Zw>or~!!DN0XSI^> z|HSb-TnIPZ5Xc9{zyvFXN{mMSYA{*bwoHgPGYQW~M36n7sonz%aE(o_VO_1$g8sjBG8y(ADJb z;)M9WKjIri6nX=O8qJA5Ts6lPKf1Ml4RAkZQC-BQrl>~)B%&{Vul}G zUr5Q7S}VnadZpQ0DMqo8BuA2D9zA>a|3~x}_1R2P0tA3yBhA{jZQK0Wwr$%sivQZS zZQDMpb}kbTNX2D5i8MjA1JyGsBr0D}xrM2C|b!QX?RwfZ3#yOR(FMI)TW*_0Xlj!N4z9*2e#33Um(*%&{TR z{zD+LCkPfI$n|WO+h+Th0tr{lx%WS^HX0U~87fQ;KnSuY2v$L`OA-YB3WS9=eeR0b z@RcrOa-!LR+)^6=Be>WTx}AK2RS>L=ECTsLV*~#NR%UGtBwxOb`Dzvl%T?7KsV;Eg zVy_W!>m&V+)c^#m3tUi=jCYB~2QFTwQ~&y83~oc%m_Vw0OL`%o!XhRM7kf<*>38~z zj~jr`Ew!Q-M{fsdCit89ZxfD|Hf9S}rHMGz~3P!WWJ$UxUimKNEv(gRXO z=AgJl5G#UE5rjQLN$>9RU7|p~v`C)?pcoLGkx8;8<(wyzTPkJHE$Oz5w{)Lb z`pg?Y^rE)6tiKESO3ZUE8N*s}1o|Wi!p)sb4i2^#ZaZiFg_4p29RlYsCdH4y!%%i` zv@+~zd(aQKtf#|9aVy-(Sr0CEQb5RC+7*QNrWL0x8_YR*<<`&`T<)Y|XJ-iOgP3Up zp~yg;z^4oAs_%i1q1s@#XV?QHh=8RsCMP(Dla-N%z!DLxh~N@ADcg-(WyLHJV5duV zB=9KIB#?L^pUSukQkd>Y>fr62Q3xq5r=Ww|VIbK6h+stoD?*+b7Ek4@Fh>i?Fmv!6 z7}yq=cp<5`Hy;I&Y6M1bd*`3~DUCPAjkR|<`XfRDZh(+S26e{Cx=boh!@#`vTv2g} zVBV8D^~}FG9afUD`Qp77EdfCa1@o>|;M(~j?xfX=d;|&+T)daQ(IqXce~HYHVQfAc zb#AP+P~?L{^1n^+T+8V~guJC)LC%t)vtE1w1gYl3%hanKNIp+K>}2y}@{vM-g)Z6& zFAPGtZ$%$b;+>y~_g}LzsR-`1KPIn|RA3Q-mu?UdmRCQqI?pF2$tD~I z@}AUzQRPUbnC*o-FNEjPngy5-(%L^Ul?=qpJRevW%0m?-6Zq)byL?2X<})1b99shx z5QGXMRL-7sf>M&z%BtxBWC6mnf$4z_Gl4CE->86iz?#`Ej{b;{0IB`OiGNZB_XMGW z2o=iAGzhzJ6vogbQbCYHzXwVO;vtX_m`xQy4n~~5_>4#u8i0x*R0N@dtjdjT&o0Pn zvPFi>E(lTy^b72U!1lmJM3CB>bvf4nsqfkT#Ic`5tO!Cy5GsfaWs{VEIFQDC1_Y@P zIvZ#M`7k&i0{Kh?qY)D+U>b8uvbiBw^COcht8epOa?(|BK@@MjYw&lZZs!D9g@$}j z@%qiYBm+opc^~8>Y<*0nRGtiXkcqj0l%$7!1OEq#2Yw-~rhoqPF5X(OCohg0sd#ls z3WJ69uMt~FAo$kV#^0J(9YL5L|fNv&;N{{|SPym&uN7JtwW?Bf#Dht1g0RPp9b`YB0XdO$WGM*NP(&zi zP;J19$XPk^qtpO-rGzF}5yVpAF>}60$eSP ztcn#uT;gMs^F1Jq%Yx>H&yUAv82!%I7_w{jB7Zya5w3N%E2W9OT6*xr$5& zf6q+BOl<-xnnzx{x$hi@NerDX}mBpWHjVz$XpkbIGMz`*MCRE4y% zzYou)HMj|fL+YeA2wqJM1EvrD@=uR{Fu)MrdHX0MTX4R!Wc$X6#-HCQ0(=wa*Wmw= zlW>Hzof^Vg5u8+nP_L&RBy=QH62J&pDjkdfVM8_p(m)#kCdrNRhR1*le6;Ao-X6ev zUltPCt3rZoqzYo7RG}Pz3tZa6{|Kg*QIJU526KOUoiBgI<6-6~9D#iscAp0~T0XWEutptS<}+u5+0C#xJ~??wUu#%tP=1XXX(yxbYL$ zOmEC#07aM<+Z==eXG%&%5UGJ|fvi9mwj_#}z!^9%p=XS~nj zGUtK8%p)ViTZ&=A%;8QZ^3+$kMt+~0XAXUGBBNy zr>~S`!QAO&F@>|AzjO~Chna`W-NnrDFW(|$=*<2$nL}f?9_Pg4obndt@S zPx6`ejsz0ZT})c#mO{*X(u#{$!c0tR1Tb2-wP0>fq8PNKg^!-TWoPDLxgTaW?`*uG z&9qCNOCg6j95roav=TxghSzcOY5{5nRwzdXM1ugs;rZSzp*P4FHcB zfK|8?ZZ{(Uc09M?3j{-&D!c0#-x_MNa8!H2|@a zdb&O9?;_OoFkC;vGea}ejL4&8<{>f}!~HUIe9K^gK^Rt;EwEWL>NB`8IbXmGhgw`B zf`yJWcqfPzM{CAggknlE4gDmy)EN>qiI19@hX<26-VgH{vjWVW)U*&afOPQQQb7a@ z39Rl8@A3{}cP8&KfbKK-O5Re*Gf#TXCQb%(2(mHf$;r%v(p~g&&*RKIy3uoFwr-8o zN#%6dN64lph&MB_65f!}Q_oWmSkn`!1Fn5V%+s!53WLTm=a{4$+hh)ZC4B(eVfl^82uD}ImAj0^39EKM{z_ZVDh=5?lmqO11fzSy+5J#^$0VRNp;Y<+~Irtj@ zhGga;ew$35f%`c#E$IVrKm%-K5S%h^j{w1ngsxmCFd0O#(wj{I9OkjkYe^3wU`aNfIkbXcRSaB$K#@QI1S_tYPeVwl z3Df3Lq!{gG{q;u_-bH2};+N?Q!UHh#0P{}HbR>lCF%0Bb<`|$QabwHjcL-L&>w!ZM z__f2S~@*b=7MTQ803jm|F9jOQMM!N#GRQyLSS=fZAFA#R$5lcnSY_|!aHrpdbRta)**aA1VIjg3T?Z)~{ zgaQ+jNv>Rd?^dx1w~`QWGwkp0cLPqq+iimM7kL9K{qALc7IwZsO6rYI_kw9n4ZycP zu*k*noVKw>)*7obp9`QPDIjDsC=$HNQ#q^V6I(DWRuVJW0ZWCH+$=4laBJXk-tMj> z1J9+`u@VZlz43wM^AWfi2&pK~0QX8F+$lYb!}TTsK?VWjV2!LK8X&mjU{d+ih}`}w zXz#iEk3qyejM&Nr7n%`xBslYe$iQqQAW8+{06=hwXE@Wa>cL97$JqiHco1>m!UBn* zUV%ttMud{Qr#{KY2JEq0L2yQ}RQ5K=f31wX02NW(!$3sDC@wPaDbP8T!2aX`g0LHe zH}7C3@C2MF@&gcj`z$c)Sk6I54#{EY4S*;_a_g^tFpw1J$;D^OktyBrmBTMtdkMH` zim8C~C+!o3bUP72<9X0is0Bx>-^_dV`|PxDF)J3*5nXL$;709 zaJ^k4m=98q1uzgyy&PQHKK|;pCn2Le(@YjdWeCz8Nga@Zq@q;9a0Z&0tFPqBQV=Xe z5ZuE+Vm?H1ssHKgTDS8K2Xd5_X0jM0Q_c~%Zw{rB_oNj>mSNzf#Y>ciAXo*#ih+nw z7cPC7l_=HTP{V~&86>jjLKad5ktzsQL2xO7Pk|p?&c~7A7_D1rjgLr$?1>Ac3IbIS zse(`vd~e|9N4U&qww@LW8K8RI6Pu!li)w$8cf=m@#dVPWA|EM4xS4@n?D4#%v4JEm z_a{cpq$#y1t+@^IB3Bz&JR^A{tw9b$K1e-?-I2B;ni=h^apiD}s16@MkDIu#hWu@`H?lZlM7g0YH#K1hFDWC{S=V_3a284kU0z zXA}-h2pkRk2UbL}07B@$z_rlDLWcssbEOAD0$l>R18DKKAh^JR2xP^nU_S zJS2%xWus|(kpq%=oS-zUK*jrA!U3pMk*tyotEzk9#2VGgqPvGGD;ul8xgg|MnNe106{70 zOf3Pxq*Tv}6{k98-~cerQ6)@9PsjlrnRv(QGm0D$H(`RGFFQ_1xiCSNg3ars-+6Fi z0Z>sP8|R3EA%Ax4W51#tA?#S8c+RyMJC-O@0yx8vF~E`l1Q`Mf)W+8Vphi(e^91-H z!5?ZYTid5d^74zUu8}s}-QC?`#|?1Uvvt{V5nKTGz|NQM?(VKFV?AA+an58&7FX~h z{r|8)6E9o?j}_jBj;(ELBk8`s)GAdqGc!}hy$ecdQeH$ylg$=*!Z{O9#>}&TX6E8@ zm3~RvwjGai-EY1x8GCX}ZQHinoqvLDbLUmNw7s-#cU;>@o%j1*Iidg%bo1iL_GBlu zdji|GaflqCwrx$eZQE_UeL9dNscjY($%&dnNAMR6F~nt~uaaXJ>S(ZqTC0>;lxm1G z;y_pgM-ZqqLejHk>m2BVRW9qV9&ZhINL?7AQ@Uh8V$P zhzsJeDClrvyUl4fJj!UJFG@2kGK?}L5X78>se?igji`g0LxRy5!vmvjd%mwSbfk2X z@w!=t-eK1&qnetjB~>j_gi(xPmczZ@8D7U)?~4W*?iy8>{1}$T=Vf&Fe8*%|X3-6! z;gKA^IUF^lJ5U~T@Y$7dNx2{&O9@3Y$}pTT`W?v7V)Vx-t2D@0q1#*-LnE4+gS(L5 zu8~|H@f!MxqrZ;+0ftV)Jth|eMRWxvTyAq=w8U3n^ysz)OH7l|IYT=b))=C=$PLHS z?2N1t!ycz=p1Fi^DvgIxz(Td*1BRo}R63Hxtb-ed~AT(Cra13dLZr}jjVv1pf3 zUFfRcJaX+YubsMS$&3I{I>5ILc+5>a@T1W#1F923)$s6MtGkvMr56Qc_gmY^llDyW z{8vY@M6IKUjv|MVZzhaU%WGa=Np^^j9^^A8cl-NWUKBekP2%Y-k!LB*KqM?I1izNT z{PG*z=Zi?uvbW4yb?23>&G|&dMS4h1EzvwEL3V;BS7jpWGGcV6DpY)snN6z{*$Ig0 zjw+{A40c-HwV*P2{-Qic!KG=vixG@*|Y~aYHV$)YB_sYf}SpDxK-8GtLNV zs0mj<%WOy5+*AjVuG9C{7mIB1kp7}43Mj&?PXSc|5V4thVr{Q%sE-w{Yb6tK4ZVtS z1Ge1D3886A9kH&qqJf?@f$EflQ*g5ieg=&qah)IlaQ$Qb0r$%W>!pS>iJQw1 z>(p4T`BS#$<99b|2c2}=Ac0b)1MvA{xE1ueY>T^ zyKNHE_yHQ*ObEGv6xH!!_BR5(=jZKs`?m*u4dA?b<+JlHRwplTRSz z>4}R#rZ!X~D>>L+fIuJkvlvkq7l+U9t50E_uw&cAr+;Npm=t5a`plZg~H1 z`^8hJh90pUy&@C5p)TPQ0^q@K8LorHfsKh82JJj7<%K$)a}O#F+D=1#ljLIjs%ui+ zC+p1nOoRLoc=;ETy!7L-fO_p+&D`qLFt<82)K>-{&HnYikIz8LzLZ6Lk?>Jn^>1lw zb!~%o6zGhktDf_*;two@6Hz%=^7uO|H3 z{Ne#vt5NsKXoT-^42u2Ru%|X^J93e!&AL=1%HCv!z9!8?sbBo>!n2oB9Nn1U;dsnC zGjcm>t;~w=miwXrU#&sAlf}CDTq3CZ_n#Q_%Z~4gW*wplou80p#I{grn%G#6c_-9Q zJiKVo&g)`dq5XFMUZp`FbJBa7UEt6UScP#$t}`N23(+}sbs*pa&b@hN(9Y`;UGcS* z_8vYlXg6hEkTDz&wd*3v*rt+es^SA?=~~~$${K*1^|(Z!)xAfbSp~4AE*CkY$S+Te zvl5ZtKoxi;lsSHs>qNT1al~g95)N4^+S*c`D-pnrI_IFkRW!7iOS&}q3()cXH4%PQ zE^HqNaxd>h&IJb?Md!rp9%>2Tnk^P3bb@N#d-xf^`a~5r1d?a}L=$?-)=$AFBZ=eY zY+1}lZXGcn&&Fc(%Pu*JgR1nNAMg2C&iZ67`||r8aItyqD8GqOWmUtjS`mosxm{Jg z(0K_f7WwN?Lin^UkA66q{lqwOjCD1*L~TxGxV8EaqH#TOt+lwxx+OCpBwW&60;%D_9 zt2!zmL}gYy&$zhWvu++R=Ya}}yhWfvcpS%$=ijTjhyG=BA zdyQm{AIbC_m1nKV1vh|s#23S25Du{+Xw+p$k6i?0jvq>FM`KD;YmeP%y!Cwl?M{|?8oS8Dv?x8HpF zbK_B;882Rl_;^HB&{jq}4VPmsCt}W*KW>7OORMU&cQykkb;A$T7Q`5>1({&slA{wA z0xTJR;-+eQb1h_JYfZtcRWk&P&Kg<_hx52;#?-=EHR3}O#^|`=KZfpxC|B0Rt3Y|Y z%&HXkreu(T7Xp{7^-YW-7Mj8E&|#Zcmtm**=7<%etWJKQ_IpBxY`l&Ihu(-_t z#;h>BP<3SaKNH`Kqf&Mc@uUh1udQnPAVZhY5DWh^XJpX04;zcof0@}(758M+YM2(1 z7(O|SG_F-6!mqhT6@B2}GqTxKS-}-s7#4#Vt{KzI@X{h3;+NxN5Byf0SA#JNlH}L@Xq01@XP`dBKki8 z{8z>G;OIqav|j^C!3IkCdk)!4e z^phUv%5^0k+dWDBA+?+bZerVZmG#NxFUj1BK>+?WeGm8EM^M0~kt9bIoi;r4-Y$P+ z58wf~jcr?17VhvO+}&OKZ{(FgYC-=e03}TTV2H0u#fu@TOcOQAiD406o=^}#9&OY- zT87;?8(tj87=kB2vmz#jvo!=@_CRQ+a#NOw#1MSA@B%*@Qp5Zf8pvO^qYNXOoJ*kNV}GBYzX4p=m1@1s?b)k>|k zwXrimN87e#k8)n`pZt^gad&s?oR$T6M@7pjW)qaIrL}Za?kvEgxFuu%YkAwY;}e_n z`hJ*WVmqVQPF7Cpo$&|Q+aBH7E3fT#W!r9J+xo@xo8LzZl5EqqmDjdy+qP}nw*6(> zwr$(@*|u@)b+-daQsZVY@{wzi5K_K?WU#>QVJihy4=SrNC{4wYfwBb|2%^>hh>qzy z^(DT-hx9%I_&?Y^Y!yULYJtW41T>??y=fThn_ST%_%uV z5Fii&lZQYR2?e-Ehk`SRyD>Jajf|lYh1sF}Kp+Za7x}F~s(9#c*+%OTej}_`8>ujk zadD6z00Ih-rks`t91G1nA0rAYv_ObWA;XUua(}NF=37^4c zW25=b^Cv|mqtH)-wQHsv*TBdo; zc!lrIziG%^pt&93&kh&f^1|Qz{P_ReY6&P@YT(;8ue$PeY4D7yzi{&s@7j8g&-)Qr zaEMuou4Ri7Kt$**8npBG9;?l*7*9UD`8A*SBR@I1*0FswMsGo$wO9p#yFCQ38IxP! z1VR7=j_uNH$y-`lo53vAf%e%VGW++V@P#{gv3k;bUiSm zcS8gL5-0)Hq2Lp$UV$VW0f4GJJ>~EmL;!^R%l-c3PK)v^c|(f=q-1(kbg&)&R^^F= zT=krmld9j0XGGmBF=Vl~(@bd%D>VAX+*J-l@X)6^drodS;DYfE=t2^2l>vLrFTumiAgR zr-wvCf`Uod0);C}MlV2MbNNZK101c6!>F&i)iVmvd33+$Y9|H4I+`Q8x9iKdLB;*g zyTaHKbgiIyD`BH@s_IEa&ia-h0Z9mfwG-6b<2zB8UVmEpZS1cW2)0M-bh9Ba+Hon{+e7{ zO5gPI=Rd7%@a?xhp%w0WY*?8Kg9+H#RiN}w1c-bfSrjKmGvG- z!~jf=&mLkhv)UirItFbO|v3;|Ny|JIe4ki>5vYKnMs=NMqL|rRtSCJG6J^RDoKk>iA8zi=e z3#%ny29)*jZ2$nflTW+-_q*Kr`+deU&jSEhFLsn5N?BypKDI{-iGP3pSHJ)CTk0t! zk{3ZF!n@1SH+DYY2Ya7UBK^S2o*TpxjQ~zpJ0{L{u2-xKCT`ok&BQ%A*|^vh4ay?J zV%_umwEeC9r7r*aTkr7ISKkZ(#Qm;6!(;D%g~#6ia*w_LvMKYoUgAntmnw3n@rrp#2Cfs`ZSOjOhK{4sQM02 zU~)k#%)aa{15rW<8Jfx(tXGD`nv>OWCeB=Im~$jGn-YVvP9D&eeSo=AN}XpUJHasZ zQFl2agpio5j_o7Md)nRaH!NlVU~JdryxCw*Ty~pc1pxLY&kxAYfDr(xy-5BhRfF+8 zgw0rvqJ$``H0DGzYGyZ1paesVQYzmkj<56n99mS zm!qpeOcWryqg{9X{WJg=%nZu_X?0=S=r8~PPMiJKmhx1&Ev}46T1N;x;Pw{-0JzTv zyRi}lh!7Xsj{pETSsliDrKPWwW`jQp=O+*+8%UFX;hzO6C#%hU{AK5x_O}iJyE6;t za@`1sAmle6{@dUBm4EgJ|LhNb@7wNN-0!+)5twB~d5cyfHvNFwhJRA^41wk^!K8Y$ za=V2B*!7&Pg*;lfPCx1D@L`Nd7@Rm>G`IeDKaX=FAZZpp&=C|xsT$0urI0{0W&*(7 zUh9FzoE?j~qU_m676D3G?&7ePqtTQC3e;Xe1WB(YCqf}Y$$K4)M5-E8eYOi5Jy?AAKg+9Ec~Hpf!s#}M zr#^TaWFhnRl%iV>iZmoCqR0h+k%lnSn4VI68|u2(?D~Tpo%T=e(&)TpChD6arM!QC z@Y=TrUp|^7{9V2KvXCxJy6&3={p}_IX_i(Z?swf88igp^*3xf)l#i^e&<7Whl1Ag* zvcQQT_qbvcbYt5p^arxcl8N0&fo_QF?>kAWunIEcMI<3&X1ut7bZCL_EN|{EzLYAY zI!MIgFPLxY+oI2vf_9#fM&Of^UPj<&SYq;rdX3QBKNF?YQIU*<@PvMbWrlb(!bbpP z-ir$CPQRcv8yG*vX(Yf>LlvaLbo^80S$9g2KYa5`wG#Y8`|uKO!jMF}FcrV{f2^s4 z;4f^&ek8#S846N548%G6^H=1DG-OFXp5A{k4d;7|My24|Koy8!7v;{ w9NetocWgm7WG|#d4H-czaULJwJI4QzfCT)9@9+W6V8C3<2j{+KTm0O+t9!Tu0WJYakCJKVPnRwYGnGkaVJ66%QZaZ$F**Sn5*|w^xaocqZ_xxjHLI}V2X|n-fhXq& z4$wdP2e!6tH*H5A(>=CPws+F*j@q`nk8InvZCgjSk8InFTCq{JcCsF{?b$ zwr$$BwQaeMxxM$XZQHhOn^8MtTQOT<QZ}pdYFDak^5OnnBWZTVNQ(E$tyq(Rwe0SNleOKLW+h+Te zD9K7#OUHM1uNvaP5G22V7%1BrTOG`i`lL?ONF_s=yV zE)XJsaK)l09r)LO6uwoog&n5nQXig_KmqdOukxP76>!=bXSr<4rvZUvcf*~I&V5L+ zIYiP}B_;SJ4HUq8gbTk43WZK#a{6wwvri-;DTI6G!KH~!DJir`Afbko2t@iNeF?x% ze69E-oO8@ouJ`C606*I0Epk6bLtyDulHmVOzId;neDQx?cjsdoMtR$$Z}hzf{^5G% zo&t$Glsg5paac435_s!F&y`&-6$X`Apsp|C4*)hH3X)B^!iB@B2uOC1AN9wHzaSDx zkXN<@08)MI0YCWS9`K;E4lDMIykqfQ?&1bL-agze`>Gb|@k@9KI1NA^lSA&7=K_Fl zE&ZWqdb{$T0<>Gj^ksLP;$?T7>a*`20Ob+@5efr|G>h3Ywti&}f&fBF;?4*}sE{Jfh zE0B-@6J)@i5P(bt02rElX@^7##X~t8U!SYQ3UW$3`ydD~l>Z+Bz}x?Sr>vtx0wo9q zQXqfuSI?e!7YRrzK3};Na%R2OZEHcn^VWC|Wupt^-wA{vDO3^3o<8QA{RxmrhT1kC zR0xBBZ~47E2|X*i!fM5T!qB)E%9pf4P;`J2H3>tv9;Ly*H|Fmn}js_T@QNl06 z5HzKigTj@RrU~sWQQ%+qexIUI7#byl0sZjM*9{U{&etDQ2-kvL6Mfea1wZ(rV_yFd zuYYjBRo)Z@G8w@;r5Ihm^WqLiGBC|aBvxnVHIClymIx2 z-e6)CDsq(K@=DV%fRss<3_I=M{=@T}x%zHS2POajupDms%3GXwHUqSEDBKCdA@{uW zmXk=x!2Be+t*cG$NGah?=U;B&R_enwTPO_U;YNgEK_(%0a-Fo_T8W45_X^i~_8yJ- zb`UC(VWBRGeKJ4fylykSH6_*?i6lu${{lw?zg-y`~1h>|B>;Z z?yx*9(_2wuEy#`5-0uaO@3FAYQ%-Ko5o6Cn&Oh!vQ|s(j3@dqorED5Gj6pOq7}*eD zNSd1qPao$|M{@cpCj)>Lc|zXkC%5e}z6vEy59i{Zn{V^nho8;>0DSJH*V*{Si_C1k zPxYcv4%?r9QGk&Xu@0d%BZS~uMz=fw0OPpVtPMxE&tDf(6SYQ;ZH|EqSi;IA-3lr< zSMpUq{?>mB|_W8c#NguiZb zOmDCkKy@(*fDVN*B%>@DE5^#gK)@7!yll(bCmH)=GPXKwJ2Dnz-v;9kum4|~PSmp^ z*L(Garq zpYCTMSZ>Ase-I244sCgWpN%xi*qpWE=jsHj%h!NW3BBI3E1G7_Hf4v^VJ!a-2$-~% zMDpcTSg^;`#*EEQ#%5#j=VZ)haZVP~8=d6fdrV_o#%7GD>OkpMFgAl~{_3f$+w+i+ z9wZ6tc6)_&yS+k4EbEt@@8Bz3@ht+5m-!jYZF2y;b8XgUkLm3KJw{_1cLsxPJjMZWSKo5xortI*Yi&y@C4aNjz zpS=2GZus_D=C;}I85`YYA$!bhOX#nJ^MAHD@oPeNdXtlEyYZJc4&xiY`=&SD@h#&k z6C&xA%irfoKYF*ZsR5|0lN0IDxlaNK_V^B-R3_Cu36?n*lHyX@~spcmE*~dP*wwV;VBi#T3S7kN9_T z%tZOSK){KAam<#*Uy-r4Yh&1YQC3#~0pm#1FeQzY!vG@mObOH|kx0gdMe4#RQCTOi ze|NjFm6NeKjDE-Fbyr5eO2$H%@8aMt1UU(_5Yj-!wpc+>nj{igNG4^{hVeN>Sr@M$ zjgsT|KV|g$#g=uBIq@61ae7SSWwt;ZOQQ{GluEX#5ZdQ$j=k|@yh$^t3Hf(f4vW9L z*XA6vx|EZ@qo!j@(rAQjY7eKR)Lr|=5G3O^j3Z6U**D!Qn`CTBVD!6tZLtE2KP6*1 zOh}KZkVd2t1M;z;gma;tH;F7#vN*~|*Ic{qMJsbVZ|OE--IhD-_!Z&G<$1>}|NpQ( z-E<_!E&hazpBZ1r%p2$0Ki;x)`Efg*KHci#3^}Yq1=l*dLnkFEF=Y2tByg+Uc6jX- zA9Lb&WNenvZ~q6nvenAyCuD33Pgwi`+iriK%GN45wSK{- z-+d|P{AH(ZCyuPgA$;gRU+|Z&-RtB(hepT$tbC^T`t@TgyS{qFzvhnL%h$tCe)Bi` z-dzONhA+NsoVp7@B>%YP%YevGvfhNocV?wBV<>&=u;*0(Ae15+hH~_4w2$Dh{W?HU zASAqc?koN5siUl83Tn#y6oNi7L!tu+gY-CmILRg#0kSa{A`;=imlwqgRibAssUsC= zzK4vkbxIgc0boy_u*pT0hQi$h87h6%hhURG>e&rtx_hI3VL=0)IagASgrgp zQij+v>S6{EG8Off<$m#DzR?BV{@*+F--2%+ZdXl0LocY@Jz(ea9Q}S63S=tA?#o;w z_0LzOh_4O`D9z+nbtiwKUFXSr-#2EqV_CPq)xL;>a^ev0!%l0q$7m9Wsd-0SxF19s*1Itbw> OZm9!Uz%0hyQU?HBMaY!^ literal 0 HcmV?d00001 diff --git a/res/android/mipmap-hdpi/ic_acode_pixel_party_round.webp b/res/android/mipmap-hdpi/ic_acode_pixel_party_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..30626db1c1b953d66799b10a78629635bcc4b8eb GIT binary patch literal 3708 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

o#?LS_N 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 WulHRa8KK1f3f>BNkZ~>SjE4yAcr1qi literal 0 HcmV?d00001 diff --git a/res/android/mipmap-hdpi/ic_acode_solar_flare_round.webp b/res/android/mipmap-hdpi/ic_acode_solar_flare_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..da58ca975f8aacdd09e5d8295f0d49d801cc7f88 GIT binary patch literal 5202 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 M%w2a^%QJYB01%(yIsgCw literal 0 HcmV?d00001 diff --git a/res/android/mipmap-hdpi/ic_acode_terminal_glow.webp b/res/android/mipmap-hdpi/ic_acode_terminal_glow.webp new file mode 100644 index 0000000000000000000000000000000000000000..71b0ff5e2e8f3f4f0747478d995bed69acf18b79 GIT binary patch literal 2978 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%0Dx;= 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-mdpi/ic_acode_midnight_circuit_round.webp b/res/android/mipmap-mdpi/ic_acode_midnight_circuit_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..019f90f83178dc9ad9a99825284a97aa57ebb5fd GIT binary patch literal 2162 zcmV-&2#xnrNk&F$2mkr3_%LWPxnZRxT)H zfeerhCo?lMGdG8NrmFsn%F6EX;N!x{{PiLuI?ko!fFd&DTruz4l9L&hzugHwoWBzs zI9Ci#oG~Ovk|alRJgaAR?Z7!_8VoX|lkpS0oO3|rv(qKVwzgw?&h@;0zu)HPKS|9h zX*~gR24?$D;2T7oHUn@fTfc4lg&aTt2q3y__qJ`1UTxd9ZQGk|P5*1I>22Ft6Cebz z>4ks!%A#&Urz&bJsw*T_6fL6Yzwo1?m!ii)is*sxnS;D=A)B;tAva67DV(k_OXwxk z7bOTGzZVjI@Ec(kRm4KNS|_XM%>NI<;6itG(Mr)~p*^Oy0^pEMMMSv@$3;7Y4_nli z4XMI3VZ0CtP%&nCCcxNqR^W>AgzbM33b&#{T{UBcXeK>>R%3883(VAjuZdPuQI4X) z!qd$uYOYWZXfd6GsRp;eAq)T18oenYMhFK3bPgs>Q=7eeru4+wRB03Q<%Lxg%v8tt zv}5>ZjhSrg45m9xn|u0JP>&VTXs~4a&vMR>5(R+*FnIWX!}5N@9!NAmxHj#Ed8B?tnYS+|W6xSUVHz7uZELr%XxV+Kc+X*$75-P$L3ms@ zxR4F4T4{<}U6_(<_q~o+kJ=VY^Ij~w6X@8xhkA?>UnJ6OSN2tJ-YdXh8m5Ib zq0?~}i&cbjCfgcQ`^Ndua{UAFfxPvs(?M+7Au1PD5xO#IFb$v4SB!hh#4sx!#WKZU zFeF)MNTE)xgN9*nnTe;njM~SICV*+4g(&RlQDcWYY{0xxoYeyftR!NtDvrbzhLga z?+gORU#%grC?(YIIIQToqIkde&1c4ksMT(iX#k6nr>xSK2OF8Q|JM>2+%I~~?pUnY z@oj^##5ht0Km-g)ioXA?Glz^ZjA4`nu*`V!QS{$3Py~zlY58LxSa?{rvBsVsxnal& zCmU#&l7s@Lrb{U701OV#9jcU$06nRSA*rVq_Ka?@m>-ru{saAcMWqtsj=XTYVLAW6 zV3gf(>@_PC@JT1>C{*~6sSS4*oS!9tJ!`j_7Bx!aSsm%I!IEEAKlg)~)wL&GJenJx z?}kyf!Ev?6*^VPjI-Hc~yXY5_fjjTJnX_R5GhDaccF-Pf7|v0c<-&dqgR1odI_euH?a`$aoFoQ=ouY#vB#Uxs z4a7XpCB555*7<-P@6@ODMd!u^FHgAcS$Q$sx-yQ*hbFaW0Tb&CI0m59Nx{wPP zz}Y$Rkc=wP%}$S!a<25K*X4z=9U7J%&&;$fsFCKRG`d8|UZI*2{wZ3@&!8t1*FCFgFP4bR;= z>oR>de&0RQxi|_zOij{Zf6_@h{2kKa^e3O<1Fb~7`7qXqrl-nIdjFU|3I>D0gh_`7 z&$`TB2zE zPQK%CoscVh5^k_rAy#N8WK+L0;qW%3(_n<>qK9nd?6D#E*tZP^19+R96`J7zb`bJ} zo5EYRSg0!O{x{RNNsnp^z`xZT5snB&Y_%}&Z+{SG3aJm*kq+WvAw^iMuu=HTK@@%n o2ZYW-pjwsG40%L!Pk18fPf<}kr0AQPSC5E>3cZDc!cR5}04swdS^xk5 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-mdpi/ic_acode_pixel_party.webp b/res/android/mipmap-mdpi/ic_acode_pixel_party.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f5702fda9376fdc14458e69fc5fd29457e0c28f GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-mdpi/ic_acode_solar_flare.webp b/res/android/mipmap-mdpi/ic_acode_solar_flare.webp new file mode 100644 index 0000000000000000000000000000000000000000..c7cbf81bf27f467b2a7014a7352b382c90c8055a GIT binary patch literal 3216 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 C=p@<4BW=H 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-mdpi/ic_acode_terminal_glow.webp b/res/android/mipmap-mdpi/ic_acode_terminal_glow.webp new file mode 100644 index 0000000000000000000000000000000000000000..100406746efc77a3d2791b8e12b0f90979f82059 GIT binary patch literal 2068 zcmWlbdpy&NAI3l5ZDv?&Tg7B$a~qD15u%i}pRkT3-Q21rms~@skbK>WLN2A@5JgC# ze#N?QW+FN6`MDEOl9EGI!p?qwJ%2v0=XpKv*XwcMSy>SY0Ec&R?GM?T+Dc>r^z}sw zWaP5{fDP4s;%LkKv6=C(_>U5tkp{26Br^5xVUOzTSSKHuk`;PoR8!Q;R89Vm%) zb|P7q^J2R1Vom(j<#zupe6oJUUBWR<)_A?o&@MlpymzU}|CU#6T((UbU8g12j5qS* z&2yy%KM9Mm^gS(O33B*Ec78wK_(1hIIO2bmpS-;B%!ot27)hEp%bLwHW?-hMY)FU`xK;b2MH?jtZHp!Sg9dZE<^AIw>u7b3gd6DML5Z; z+dzZ{_|H?aDR&SHT8If5vCAY=7ZumF6_(TxB#fIT?BQ zk>zYf0_44pD)86^xN%3lKk5PZxvy9TP$CWk;LrGS>XJDL;8OCp@uDpp5eL1Gpf`f_ z9=QSjl^|`!?}ZoRCf5h|^)0?Ns^zrdS|Ab(BP2wTC1A*)wYGh*>x9-{ek&<=-B}n{ zmmI35Jo|@bGKDJWI;m4InrBAe5sxR^XBZ?j#ZO=iASI8=TXoWrSE+50Pp+$ZxD$y8 zoiiW-z2(cve{7-+QUw%8l;{S0W{qOZDScbD(b4kq{l`wg4fE-#YGv|ZbMMbf=(7@BQQDT=Ye^WPS5x2lU}5^Mw@wpku6n;LQy?)`Gbgro zD4pxNLXR`jya~i6(qE3}u%eBUh{B$_%b8zH!b71#bCD%}*MrdfQSzl)x#CpsxfYOr z?bZbl_Mvq1t5&F>sXJM5w7(l~ez;E-m7fg3PZ0DtKqVF<56~6&^BX{POITDc*?4VU z5yBiYp2+B3E_vUbGq>0qNP-*R_A1t?mn2ZlGE$iUB?5u#(x|F0f+lR=Oo#5QH}%nG z=Ui1I^L48HurNcQfvuZ_6uAoc#_n#kCJ)sW8!VdJ4B+iFh1)#Q^q@!I7a&lm1ROPl zyXSf2)bCei3W9&u*oAA>-ZwipEDP;*i6r1-ZPHBZr@AE<3owe}VGZfp=+5GiMzQ9z zg^PNWimBO;ZzWr&ENUWl91YzFc)^>@ZK`olkvp#BHQf`CJv5AJ3ZK4WKU*!{B@`8; zv(;-)A_DFbSrPED+Uh}6EYL<0dlXQf7da+f4rX%ngsnTjB8=2l2mjq`wb?-MK=Jtz zB;r%|Qw|7xCV&=OS4>3s`S+!WF*ebpGf@j!P?B`GR*4HE<~)3F@(-^03Z*Oi@N>4`lbwS^{SwB=mzJit!# z`$#hWt+7Fs^;^W;l>TE1n~Pw%mI){`Ro;*zaLuhb_B7LZv8Tfd_@M_bH#t39orpVg z`JE+(o$YEiIj3Pa8S?&c#?mS)z_*8W>_JuLKkc9b3cDjW&0B2AOB$jEF5HyFYFo;v zBN%yrbPtcv>l`9DO2sr%~PdW?@C((0~9dnIKboJOea^?w>NF?@<#KNc*rdF&WM zfKnF0Q)AdTPwLH|&p!Ay^@mw!bX5JHL-q#O?NR1chB57RqkBq4Be0E>HSmeh85$dE z`iOT9sM3^L@0n{6?7qk1kXp|u3_j%!E(M8Z){`q6f#FWOy^}CUdm+Kl5F4>QeLd%# z_HZg6b&T_dq|Q@UBWeCbAI|;;MvT#l89NVAKdxR&n28CgQwOWl++iFrD>;D!O}{2| zpB-U>BBIVgvZQGQE2E`|x~2611`i{P$qOb+-1R@KKPjn@HQ}YDW>n(l9T>i4Y>1Om lJZAbh*QYLn8Kp!h3vG|~ZTr3nvmoB8_(!{Z`i%4nz`wT?Tr&Uw literal 0 HcmV?d00001 diff --git a/res/android/mipmap-mdpi/ic_acode_terminal_glow_round.webp b/res/android/mipmap-mdpi/ic_acode_terminal_glow_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..9e5d1de40b20c7d01bdb20718fefa75e1589a614 GIT binary patch literal 2216 zcmV;Z2v_$~Nk&GX2mk~v@1>7F;B62Q{ht6J zxI$$6;utGK$|ws1;2dMrBNnBzgUh1ILXdDN;U{H`U4m z|6L^;+(@#mDqSCqs6qC>Hg^q)C^wNLIZ~QE{gS}*rzh>%{wI7?P!#wiDd?got_pYp z*cHB9aWgIgS7YO9>;j6e_O!|ZU~EJn#)1HV)kfai&hhj=Gi<{)-66ng9U9D4*6TK$ zzOql?C>9uLIMICjNfiYY3&0TB=BMCAkM|Q;!9cEf;}6CFpcn8FL*PFwZQFi6n!Km; z$v>4}+U`PgY}>Q7{ROnMZO_WKXKUN`tQu7{Y!~wXzo|UO4aYfRB}>Y>$z9BYut}d|fVg+qUCx&f2zZyB+-p z*qUs2v~AmVJGE5Zq4O=(0hq|miZ?L!Sv z6N2JY&MEcy*zy`l!Atyxll1!evBAdqaY@FE(7*r`=>P$sdILIQOp6c*QgMl{BIhKu zetv9u>GRk9!B=sB1OP%H01E{$hz#0zjJNOaOr~_EdbJL3mvYU-4<0)LI5v{t_662LT|kCfo9-TPB7e z(F<{0KOK*L0sQ?7X>L6k1Iuejz z#i`Et1%Mx=oGwWK9#{FxY$1v3=ooFd$AIr)uvYAR^TCZXnqiS zprA{tppvwxgSt?~73ol&!U1NI0xXoH4RQeM0nU0 zvYAiK5CE)fcK{yH1ONu%p_2xStzAMI1WB`u;Vb%A(_pIs09dbwQ3C+50L)1+kYJMs z3;}@E{kyP_5qgzyApoi|2}l4W3~2xoOtQbIYe9fOU@eSMaat}#)*mkq>s!e&lW(kt z%L=Hx<>~U8N4gEep<{DV7N_ncQh-S@G?h~HqwuUv9XpT!z!B>AC>GKk=S^`PcSz5dgMj2LKy6 zPR#N4d3r%!E-e6Na@g5JO$wv|#OnT4oFY>IKqDa`FFk*<4uG9Gt^mM#T}HT}j(4qx ze*pkaI8My~Kuv->hGNtYS?u296>b1cvfg2?S$X?Uhs_0Khh`2mo*iQU>8^Zf}45q7k?e zaWen_Fg=jt{g@9J(=!ZJ(Cd%OzQEmwPyGGaa~}M5zkFps04BI5$F+5|0&tOx7tfxT zdra$(B#IwoP#*#W@s zRVy00Ph? z3;+ORU{ZidU=qCu0+d^J*^H&daB_`YBma|`0PKXW0&^w)>ljF98q82oQ%ysV)(n4; zhCv|^2$A#?L&oSN(kj-!xrWdZe~$pDbEBn$&u zvT%bS0SKfpfrBmNtPOyv>?SEplYIF5@0tJ`xMn|?6o3R|VCG~7AR%1>KtqIJDG3tT z=mTI^4s$RmhBy59-DMfrK!g-vDiTZ&La7@7s9Dnfk_Zby%*+fV1mH)t&!wejq+p9mZ|5s7lb^`$5 zN3aRoLzdlN(m(=c$B_a63F!Rqz<(eCkm%c;0?+;Uhf=hi6tz=O3JVObR3c=EG9s~UDEa;lwf)m+Feydi0z&9|GVJW#xJZ$+OWk)PJ(`TPnrY(0wYOW qX4jAlCu8K`Fov?GX_K)(dCuM-H%A=tv|PNwbL__yF%WZMl>q>k4cgTJ literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_aurora_pulse.webp b/res/android/mipmap-xhdpi/ic_acode_aurora_pulse.webp new file mode 100644 index 0000000000000000000000000000000000000000..f1c02e51d285f6960fbc7e1476f2b5c450514e44 GIT binary patch literal 6704 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 GkOKgP3gSor literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_aurora_pulse_round.webp b/res/android/mipmap-xhdpi/ic_acode_aurora_pulse_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0954ac52f06c9dce911eada06da950e79ad09ac GIT binary patch literal 7182 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_blueprint.webp b/res/android/mipmap-xhdpi/ic_acode_blueprint.webp new file mode 100644 index 0000000000000000000000000000000000000000..eb9c22ffa5e836928bb4d7479559ac8a04aacaab GIT binary patch literal 6108 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_blueprint_round.webp b/res/android/mipmap-xhdpi/ic_acode_blueprint_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..9ee9d89350fc152dbbd58630cb693edbbf020cd2 GIT binary patch literal 6378 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 RJx<-g$C#Y9A1Mn0;C~R%8TtSK literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_midnight_circuit.webp b/res/android/mipmap-xhdpi/ic_acode_midnight_circuit.webp new file mode 100644 index 0000000000000000000000000000000000000000..881a1aecf98ff2fa8096cc1e1dfe109500c56c94 GIT binary patch literal 4042 zcmV;*4>j;oNk&G(4*&pHMM6+kP&iDs4*&o!U%(d-0mp3{NfKn$uXgeexcb6I5Yhh$ z0K`k^ZsJ3lxXX!x)C-_t#YwNIu?197EjZXNo*s3RzW@e3LS1QhlB(LAcDSOdl7u*c zEZnhBHx`{FA2;+M=?xpH76`DIUQ)xC%$p3W{E`>OkL0L#!rAtx12?g4yUP0ildD&f zxeD+v3juU55(K!7BuSC-zyM|j5gz@w>ctnJ+P1B_nc+tP#dN}v%>VEE36Yggc2xC$ z0x*^opS)IDhzdyn0Evb=1&R^&N<=OGU8bd@Ua3q9Qq)N(KuT2pr0UqgIXm1>#jgyo zb9{gA78VTz0TAH8;|j3j*}OcZgd=JI2ugq+4CmFk*>QLD49@`5j4zRafMp8MkL3gI zo_BDxYyj}X7i9wCJGk->F0il!IvJ5#wv-+Tcmd!{83QyEp#TZM9|0~L?qNa# z5?UDvK$jAo33@1o9NqD2gbpMy{tnrw?|uQmv$oBOB+0h*iK=;6dYGAeaAq+xGjm-- zwYaLqRZZqLb5*bUj7?@{X67n0XLEB?dCF8oh79!^@S|J4P?cOKWfk$YUPGsEULmLf>l%+qPqmr1SdzxXq*nrBsh?+xE=P zwvCl-+q1Q`vuCPpcTd@=9-1WY@)q?>-N~I$P6t&^TMX*Sw$7n3%$GG*~w{C{<2>^mY zu7&E5Iy;I`-JysY0v{qwcFQf`A%?nTZ6X6W0)Uh)f^|%R3g``=Jtn)AdgwN)Tx+b+ z$-LRwW&?Ri;G~Jch5(>^=;8oHa0=A{f=b!j_bt2ibN4a83J4eC+B(IRZOkm;8R`Y$ z9uR>$s5=lr>Q<%++f<)mofnS=)`$o!f~7ssF(n8@G`1E3!QljmD4dAo$V{I?Frgr{ zf*%0DPvJTcA@;B69A}$pW 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_midnight_circuit_round.webp b/res/android/mipmap-xhdpi/ic_acode_midnight_circuit_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..96207773f7ba9ce50fab2a210cac5b894db9d234 GIT binary patch literal 4304 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_pixel_party.webp b/res/android/mipmap-xhdpi/ic_acode_pixel_party.webp new file mode 100644 index 0000000000000000000000000000000000000000..df57252484756402d2e2572409e66383fc91eb8d GIT binary patch literal 4664 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_pixel_party_round.webp b/res/android/mipmap-xhdpi/ic_acode_pixel_party_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..4514e58f715913601810550d1a3d0a3ad47164cd GIT binary patch literal 5044 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 KmoVd$f2je9{3+1@ literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_solar_flare.webp b/res/android/mipmap-xhdpi/ic_acode_solar_flare.webp new file mode 100644 index 0000000000000000000000000000000000000000..0f217b7e15e9fe50855b7ccf4ca0533b4b954426 GIT binary patch literal 7678 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

48Zx*2-gb5YoB#tKIToLQ?HzIZZlZ)IOlRzQ zt%i903$$(Tou1IIo;Wf-`pENmot4<($w&^abw{n@5HwqW!?6>?PlM^G)X3qZ@hcar zXFo^n%87iPko13>eUNE zBhdh3yayv}Qr#WJ#!~r@uin6 za!G4h1h`89StktEJg=~^R3AMvLyu?{V#6Y6G<|{|f#!CV0y@+sv)YP;)Slr!XFG34_l^Rv20 JgM}^t{{tN5moxwX literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_terminal_glow.webp b/res/android/mipmap-xhdpi/ic_acode_terminal_glow.webp new file mode 100644 index 0000000000000000000000000000000000000000..fb96a64a8e22d927b25996845489498505bfb72c GIT binary patch literal 4058 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 M^m1xoG(46908FP@-v9sr literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xhdpi/ic_acode_terminal_glow_round.webp b/res/android/mipmap-xhdpi/ic_acode_terminal_glow_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..8d62dfe0b203479e1c043d2993f3aff980b45206 GIT binary patch literal 4402 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_aurora_pulse.webp b/res/android/mipmap-xxhdpi/ic_acode_aurora_pulse.webp new file mode 100644 index 0000000000000000000000000000000000000000..28a57cc13bfb0e6d289ad629abf75cb491ec99bf GIT binary patch literal 11232 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_blueprint.webp b/res/android/mipmap-xxhdpi/ic_acode_blueprint.webp new file mode 100644 index 0000000000000000000000000000000000000000..78078a8b05f05b29084a315ce24281b08721d1b7 GIT binary patch literal 9498 zcmV+#CFR;uNk&EzB>(_dMM6+kP&iBlB>(^~kH8}k0f=qe2$CQ>f7pYz|AsTW|KCAG z|0jT>{|vOR`l<>^Xf5_l`l>kLM)8l~MoIgs+NWwyvugTu?t@@QQ3lp#fxAminekiu zRJbl%i`rsWi!~xi3Da^?6s_V$5QG6;?crNBr>>S2W6dsoOAZj`(K#(|LgLQX4}@bWjD>kMMpb6pr>k2o1Z-)jz z_%}c7jO98|vMtm0s{jmui~pf%qP;(QWwl zc32HLtAuzKfLH@d*MS1tk6*WdIEG|o08>22tejOqb}K+Quc9@e?O;0qPhT^jZFU>l z0K^z$+84~49>2~wTb_it57-wBTL`DF0s$xx3VfS~1y0@O`3dkmJ$jV*ieVKah8!Mo zKSrR4-k|gX1-7FC@f8SnKOZCR2h7@y0XVHj#MdbyW+h->aq#|Y10se1L`2*Rn3Yk0 zr5l$-1YjLy2WWMp08Suw&rc9_*#CPCkUA7#m|`Oeh9P>u^V=lL7D7~@{KNL(Hr z0KSdk5Jj7b(&B!6LboZ#BEDjl%hNlYSAO4bqx`x5UcWtWmVZDw#x8OH^R^&{D~YTLGLc`B{;32Uv*TVfUCvDF=aX^UIK#iNZ@$dh6f!&23#0DrPK%hOL4p}Wi z0|3a{M|U}(fQ)A2k$34VfCtdPswMC3`lE|Dh!w;>o6eQ@PNS| zc{0vvb4%6-1JZ_M9mA#p(x$|C<)OfN!W}}{m_pudYlWEt;|Prv02}}ZV8Dtwcr+XU z2fzWcmI4z%NF$si>?TByA>`c#kS!q@OQ?*O9n{89AT%MHb^lGm20~cPkat&2!WfcK zM|*ypXi8(oCVF4tps=Nc{5qk~jWC5!4FGE6Q5!f=M^qU?%u~W+=a6qzlp7rht?=@I z+WQ`LXaK^0!j^P%S8@#bR&BD2=|-g*csSFHody6b0A8`zRaV<66snTdNv;n7jeQJ^ zm+_2YH&H>u$Q~;hPDrzduu3Eia1_cojDfMS{eqpF@4)-|G_C+79fdt5>un8^0D~jxnt5@gAH4A&BG_NwFmeB_w$`3Ks7~13TU#-;4$C)+_)BoygJ& zg?yy<_X-jKnygE@fjc*AA8CE#zFXcs{+~-b@A4`b@-}G=lU2666^~35VK_;f8^^u0 zflE8@(L6KQQve_m1rbJ%#SiE%f)lyD0Z_J*u!f8DZUlIt)H$J9!XV+W=e zxcb<@PaZIh+`T-q2jVJ>GgB))fV3f5g@EaWNwOZtv19(l>o^pl0>k`|H)7$U7{02~1jVhO=! z5LUv4CoC8T4e#vhVR-m6L(BvqTWva|HE?j&ymByUDIqAuR3e-pgdYcC*?qI&#*X*q|E){oG<*5Ki8V5Y!TYn8 zfKj?nwidu!3J1o4{gSf%nDOCRa776MLo5c?nQY%9Kw!Q?8fuLJJFr3yRHTB+G?h{c zDTd=Eh0r4aK?3pEgv;HraswAhJVh62_^b)3goOZM25MD7{ZWMW+ni3 z&Cp|W7yyX%GzwbtwC8D`(_IX{{ha|^06>^}AB2-|+T>=XHMN1y+9mf%A2=ZGAS4lq zVl0Szp%Sn}jK}M&Y`k2bQW0ey-YrO0FzhLgDTg5f%31h?tr^`V%cqy6phZk2;Rq!Jz(Yj< zaz+DL%kE2h_l%whigo)L6AQ4i{faFf*QP`3C97A3M8c%CzZ8^iv;;iNTFDfH-5Ulq zilj9YVCtdON^bJcxup4m$~mm**A$OLXPK)=u83xk$@>gjm=;|B2gQN32Ht3Fx zPp$*5KE~C-b;We18p+j2s&R~7E4f;f=1aSH>=pDB5iEVS=H5-`9C%<*lT_i>IkF+S zjtP)9Ij)s&_U_ZGQO@i&i|^B#k=7*ZaFhQ@ypFCAujyP8EpqOoHB%;DK%j`3Y6$k|6WAkQYyQb!((b0Rpc~PO0UWO z9pyOY)~h`qPU{?i@`_i;J{$l82%Cul954c%41b)J|h$Y z7vKT_-*4EvOYfcw-(HqJK7zo?_DcZ7D=cu=E7=vYHm(5E<%NkYRp`d_BXb2vov-OGs(1}ygqmMlBd$%L+qhky2G$aUh2({`~ZiYcK4({ljkHt?0poJeRK5aNU zZRuk=i|pU!aD(zP&M?Dl7QPRTgHQ>zN~LjLIs_FAjDR=@!InF#pkkfoa5_40tSh+a zHi}sLZi<69?A&CcJjj7;qRS`)z!{KL8Vh*$R3*-0U~;#J_G_{ZfBti(C}4dEIi2$l z0PJtZ;f`p=`45+YXK4WB9ic~Q8Z&C)?PlIVVHzvTFc?xPLJ<*{%B&p93&3DUb)s{g zDWJqzz(}_@zz+wqeiQ?X?*c#Fxgl$#96KJNh6pOCg5;d|A{2Sq@!n$zt{6EG1fiD$ zqalZH)2~_h5CE%R1&RP5hi|tkk+kFxwRwj|xi+6?MU7>B$g z-N0N@`aPWo(g8V;odTuHVs$)WOf&LOkIL-%k{C+l9ccqO%y-MXq%~YK^&!e59RbdS z&_v#p4Q7_7ThP}K%H31}Q!6=+-2mOAvm{x=HB`DGsRnn2Pm(ISOft*NEb;s@Gh?wj zW~(qX58v=8AXEZ?e;?m~v>{my?gvehbr}3CBbf|9k#!QmveGKR6tW>+hjBiowB}f` z(hZne8CT&hsgrmWu9wKE{bWEWk5A*-$Xhr7e|j)J_LXHgCo~al-@|pnkz`LJimaSt ztwqwb%7};%L4kQx$6>OyGO?n(M42a*NM_*ylo*(0F$a3uRwlOjPbqf=u_c96i6)~A zLg$5V5d`&t`#$iX%qhoIBS{N<{M< z-oyAemiodkB%EQlbjKQu2%lg7p4N;iQxiCYy;}y`j0RXrWs8U)GK^gf;53H2OSX!4 z8!%-H-_ya4{Wmz^@*v)Y;+Xx{={K+t*@G<8aY7giP6{G&K}o?P+TXJOdW{BZ;PZB* zHQX6_mkCGze&oBPb^3RSii_cq^_c)wunXr{ZAYuE6YglZ1b6^oUHCJRLG$@-DK0BR@oL;o7OQAgRKA zx5)!;zcppyQMmN(39v;H6sltWZb-qAjbj%{RHznkp%3qxRujwnQnVH--u zesN@%tOSA4v-Cj6V;GPVFqotEq#JhCPMe-IA5sHzv2jqS|d&d#n_%|i7j{WT= z7rQZqcPWkKiFGm;EE>T0sU(C)25k?(!x0ZRd^e9hPztE7hVJJ42nEHpV~wwg;0cqP73Hv*+$Mtt8=h|w7ksbAc%)SO;q_jNe8L{Pd@tqA zi3QH6$lPw3s}9a)?+pW^6h3$Fu*|W5tX<_P)hS#mxhWa$V7B#Le+C5(-KYT^97$`qG^b%C zOIYk0LxC}CELo-xNiHc4Fp?5(K{ET1anOqQ*r;)dwfLI$L1i?oY03r;-xZSKhJL^1 z4em{hET;!%*~$A%OtW$%YpG5nt>GSe<)@Jz!d31(AL;PHI&q10L$TzEJPkRZ6o&nq z;bjxKjXB-r3^~S3+aq8cj-+|WG|bM<4@tK$4SiHMP0V*f;30!{!4eExl6AP2oy6$B^yW`*cp;v+h_)_x$8U*R^K|H-}#d3+85Edk7q>t&&#$Upp2K^nHL;&wwt^NZG zA3x$1&&_|sO97`5O`!tim^qNvJ}i^jzyOHI2%PXPR|wFc@Q8r( z*m=fu`Ky?1CL%2WxF~10XolbD0yurEU;;{q_XsC>%-ltGGC7M&GIELlfWy6}%bd^v zYt@k5mdyhvE`*qp*vgiyFFBPc-IgN?=s zUy0H=;f{)FqD2fR0hWDyf&b{k{A&m%tha-SS?B;a@r3~?@8^7pVo^K`GDZ@i0u^DB zyjK)a4gfpM7YiyvBm{WVWA(=vs*gJWK0e*Q^)2~NphPj|P6rd$;Yt}M*8P8~APn$D z@MZI5zah}=-{OWtNGS8R(+GtVxQjD#9F|!@06rc90+yDyJ0pd{#EV1{Cek5$E#Vo! zm;8weEShZy1R1ZvsRRZUY2Y0yrFQ|92k)Vylvlt<4wXUxQSe@qwF%%t0_U*Sq&0s4 zWj~M)SVSWt$T6kam_An1FoT?cfwCC=d`#JIfMY4x?-OG!v^ZM@a!TN9r zvi=X`4!t(zut|i0#~+bDSNIr06#xRx@RdBcKRU`P3>hJmg88F$wlsZW4Ubs9+Ovxg zWDuARF;0{Z?A)>;HeeezM!L%vBlpe!to47aof{0j<63Dn$<9q=3yMdw2XuwNp>kCz zB#HxaOXuRENzQrvlg1zqg1whi0{|NpRGG>=D3spA3uS=wz{Iu0V>;zRS}^0ih?pRI zv}>Y$NvT+LRpR-69!mTxv{T|GT54JQCf~msMsib_VItpS7!4oudiH?)6>|)C7MS%> z5$4$=O2|99iv%QXFn&k&zCjhl#ab*L;bef1VR=&pLGW4>B(anNj7$LB5mBT{xdu#h zK*XB4q8bAQ0NPV*Wh}lJg3J}`PPwi{x(oDl8kuMp+=$x?9Px4(xyvo_RlwW~c@uW* zgfU7}C4w@h$6Q1xNQ~{`^X8MVn*>Z;PhgaC1vra451HphDSB2_U?~s?2HGXNtji1o zc%>ji6x206t2n3J5@fZt{``7uN_z<6vXG=0iU`%tj{G z2rOS8))K;sV}eQxfnllnU`048GK#Psf0LsWWw^NV-5Q-Poakl~CPH$#kAHqOuL%=t zc?Bg*4zzgpUcBMsUl))9rZ`m!LEtd2k=DdR6d_g#oX7qN!q1UVg#f-p^_6ae`^7+A(sIH6@Ujg2}mLy)U6 za1{60rD-q$00I!gGJ6m63W6w)Frdlek}RMlyc66Ryhv0${%=Is%zb)DJWuXagiqo=bt{YURzyntd6KiP&C71*(%f8Cw3E)u)64IKaeBLR#5C zkrEoPp_CFniQgblVt@PSjiZy{Ob!_>Ke7}RVe*v?%q4YHH@VIlG(0n#Xwe)@@*r6c za}}tRo2G;W2oPVPShj_om{H9*6imFR1WK3_PxCOIg6o2b+nG^8wO9dIn(b*2zz;g^ z9KLg)+l#z#ZT{*)L3aYvA184Y^9tv?i5H1UX+}?Q_g8%=QUHL2Y_WX(1aJPE#V!Jm zKMAE=O>o!Df1TEk7dP-x27n**44>A<@IM^}NAbknuEJ(rA9NF;8T^VOoMcJ>KsgGE z0Y3g6elOlJF<*VKV0@JVCWEtm0RRPnuYv%${HDDo(VRAn8_cZf*P}||l;)JDeJ=r87y2sW6xR(- zbmc27rzit$A7_VNhrwkc2*a~Mvlc!Ghr{<^+lBKumtK@FJ>XiXHDmcxy2}^}tqWf2 zAOE;x#L(j7;=)8sR){Y|km08G5-@#)>~m{X2^#_1uM zCqiM;rp$gY8wnLSUog%9i#|%yHzs_y$w%f^qq9Ur0Qj|lTU4OxF`X|16L%|^=uzZU zguj6Gw0oq=nHTQB9kj%pvIh;%;XT6xno{~md^QM#0(jgQVQ1mD%~Y;tm{^C&;SODY zzr#D=_u)M)V4B}blXXcOILV_LN={?`jx24`o*jdl3?!sVN&xM>L@05`8AVnhi~%Uf ziA-o>igbaAYnjSPkE3`RN1k#EynM>a7$z3prO5}X6c3;YOR5o|pR*C9M0x-qlec*^ z1;_)3@a$5$$aD~BwbIxh_K^(?M|G3yp|_qfAgzu` zeb))%03d@$-73eFB#UjvB(@nV z#1Q*c!o-XDr%;_Ro5{14>ZTG*P!Y{09fo0I($)xz^aucWcHeR-*8^o@uc18)c-0Zv z0!2nf_xN=UCO(v3!5i=}2E_*eH=M%)kOLrx|LBm0!FvE5k6e_X^^z4o9)RI-9PBuF z1Nf~Z2c!kM*cO@bSB&^He(MFkgfhc``yT;+-5+|)Pxu0c2!a5>2sTdKKBfc)064g# zG=*@a0RWx`aA_!V(CZ#MH_3av=M_m9NIOfGI0| z`&oMClwffHGfTn=s7AEgyJ80m5M7Xb3{XKJ08}}>-A9Eu@`#rRg-u7E(((ub=?4JR z!Pf?uo(AT@5v-k$=DFdu0{}!p_cydk)EJcl_+n4qV0)I{S<_x2f{G{yD95q;__A%h zw>ETkB2X$*2^TzA*mB`IXuL8N1n__dBo;s9T%-V9L2eVT0KC(q{nUv|Jg_55SR~fm zPDiIvvXpUZb9*nr*8+f2Dy^-K%2--!8Yuv<<^OBPG0O*Vr6~$B=o&yN!k9LV!7Wxc z(lBlA1^^)Mk~T4CU;8`urkN58DLsw1QzMO@<#ByfL{n%E%mBJ%mLbP*53}=r$U00j zZNJPRnS+%gOuOAP>atW)cn48BE^`!l$T8;ZI~*cAIEIJFEnL2x1<4AoT_(vo+`jpa zJ+@;U!gVj9oP$Vof`}M)a!Yp=vqh9r!Ej7mf&-AG6)Zpqz-d5alehvH4Ggy9>0Fie z8H%7^Q=}|R5rk>_x8f?gLRUnhYZg*2a}45*EFN*e)O^7sUc}hfo?CK#MNU)mD7H1W z;DQiJ<|IOhN?de01RijBqpA(9VB`@P0P880BN*3y2O#%j`z7sp=HFkP#ej!A1Oa6!R0BK@HXoMuoEWy0v_L^%qvJ9HS zNx9r|zG=ytT7aGS(Ga|dr z!0C{Pn1f=X@A(?jFIgU0wjQ?M)w{l9f420=s8V)brMHP60~Q;92wCuWH3$LlU@=Rj zQ@ate36Wf{TC$RlIAqlTRdC?74}Iv8PKp4KpF;0sm^>?3by`tkO=$Q%96>p4|u`M891@_5=h2fE|zASx6`) z7h7ICkb{avU?bg=wQp=5ieR!Q?ts5P4=p1dqx~&BX(+H_8W8>v`wFo4n0Cf+paJ0Y ziuCKT^0bqf4@$TL8}ZnG{hi|Y&XV@-?aCkCS@efb^tarGJyS&%$gBw!GI+;rUGszl zc3*#o^#C_$$X*iuq)iEgR*YWWhpCl&&K8gP*=I9+A_vF;Q!ABYdv{Th;gP|Xev@iU zP|{rxdYlVdjxM7j$j1x=nJ}YtayW>Ligg;A7#2r54Dhmhdj&sRiqHtVC&ER;uD zzR88z{Eck5YbwO=cmxQXXG^6Cfa86Kb&RzZrHPNQCf!3gBzPD3EY~kV?1@5Xu!!+p7!PEF3j@snOpZ&i6?!VA8aR zHZ?G_WW@+40D!QQP|978rN#(MhCyDyAwUs-h878p63iJ*W0 zh`|w$mlfMS2qnsP7#R^ZnkGt#$t7Yc$R_a$ZV{^8$B}U=l}_&ru?lW@)Yyl@78pUO zNfrfTeqqfx0B5YZHx~F7a>pX75KGu>2B8h1ueLgE>fm7oF9QuMz>dN{!c;c46O>W^X;QWy1+)>Rz7tPz`L=JFS<_DgG85F}VCmh2*vVlu`c!=D= zwbOIC!z&_ilkm+l`NkJ&D%>Y@2jn*K6|3LnWBwS^G;I>E;M(x$z51ys{rnB?jOTAK zskE2mC*o>bGtYc=RDUyVtg5rW{| z{|Xidpkwuzb}y1YVViJj9Ch@V5`K{khkff_yc!a&lXV{x-sy}fmOnxcuwson9i`;R3iX(87unle-p@6W6@Yl6c`?}Pf{Oj}N4Z=FY zN4Rc;&4htu(ZJaMQ4%*S?N%Q`6k!VCDcm>06GAXyHKD{b9RpmN7Haj9lY+7`g@Xc1 zYyCT804khNc8aWw`|EMz#QQM}8mH-(P)ax^up9L^Lij0RA0gFyw>E_Rl48Nw@g7h} zd4;fs5Q(vDgcz~~WYfrw5fYph3J#Z)6<`07;$NB}#1oDX&J*qtVllRjP)@i(m_!I5 sn@ZS1xI*~#79or9pJN=$EC8qn0K7uTQiy$r5K0z8_(OQ<{O{!f07>;a3IG5A literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_blueprint_round.webp b/res/android/mipmap-xxhdpi/ic_acode_blueprint_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b808964308233863c1a88a3ef286ce6d47407aed GIT binary patch literal 10134 zcmV;HCu!JHNk&GFCjbCfMM6+kP&iD1CjbC1kH8}k0f}uJ36ccaeT!MBKmUNMd-g+! z=>G)pt7pjTcPUn@U*x~;UUDzvKemTrZ^iHDdC}&@xtFyrg~iyQ3{bRkD_P4g z_EvZvJ2H|(J0g;luv+YCD_TWyAP5VTS;x1QoH|`jk~N2B4wllQGF1!L<6!r z6e&rnpQMD6jL>2azF4EEf+VFc*c;RZ`T}KvvIi-)`8)}V#bU`?_TP(^eE2+%I{xS( z-6ud%1n`KW?EPXXTP*qE-z#`gt@hCC1uBZyvG;FltrUC7-v0v#q_OHgUIx@uYg;5q zhxipFFCPytA4R+Ge?hL}E#vMH8EqSYXxdo;6d^>Mn+0e9 ze0f}ddEAu1!FIMxH3%UPXBM!HMVwD30Ii1*OMbt6dl4D{;oD@u`33ws1r#{>QXT+B zTX%0?1z-%ga$UBJC=knU69MHCC=KT$*C8N8#lh&GAAyKXW;2a=; z=s?T(hl61S;hs-B@o+=MHr|$sFx8zCK!G@%KqwHWc#rPk+vBjgc-C1Z#EVz}u>yt; zlo9(6zqUZ!Lu#A?nBo;?nFXA>3lJ`8XbB8^><1ufK-+W=Z2)47G5rm*rl(&sE}lX> z1S|{M4&gLxz-&N)P~h71V9A|3|J+Q$H#1|woIRfwSimJJ6VekBkw1Rx^fWx%W&1z3mUnuq{Qqg0@^b0-jo zOLvGiT>L$)fEWreOc7Bq4ABE#9xKbTMbv0OxkSKr@bV21o%nJ21ptQ1OCm-9c(tuW ztjbHo-IO@`T&Km>1jo}B1HWMY|TR`^| zrDQBH%eDIlWLSP*?od4ZX`i1r(41bSceT~ zIc*T4M+2JJknt1S=#c@4_H7D|2A~LSJshK>Tw>NT<|$(pzuKyaWk3;Hnzl;?1rT-s zgb+c*_T^i{E|=K0)*99+91pJ&06|0!Kc0RhfB+!G+}7V_i+7IpDg`J9pa_#8haA$l zNBwr2e=g^?Mfn4i4v1>z zh(}P$HI*i%E28JHpRzAzl+5sGNYm^{MN2NNmZn*SC0|oYL8J7jC~WVc8hZ^J+qSgzNp18=i*AXGj*C2BE6P?T3eg{vLoA8ZKcmepWDp=kBPv@iO=WmuDIOcIFckM%H9QDC;c}R zwadr>1b|?it0!aX@5Q9a=4jitZQJ%}zWufBCbfc^0YtZLD@o1?n41@zZrjZ4^?tzf zwtZ?FYuk2INwO@3lTN2G-Pg@rw&+aw4nYlaAVX#%D zvZShQ#igILXzpp-wnvR-+d7{&K){gFLV542`osNgLR_gdnDL75?D*Cb1?b#07%dO$!-FhpuXxlbzNB!k0)_FI!ZQHhO z+qUhpZ9BHU{8hFc-SZ?-lC7YQjyWl7eI|1*AZXklKry&vy!@B%lKIWlASyrwr~pX_ zARq#WKs=DoJtx0*7edHF7-57XpHBo4L?Cz!zk_$+HvhvGXV#L^3hEQ}%>FJ>ZjXq8 z06+jRca*#G^$-9=)!#p_?9R==HMnHr0zUnOba$vMbP4o;jzrZcwPb?K0VM<700Hm> zxk!T(@c%nOAAOxwUmq_W(FIKcF+g}@4)hU-FmP7!2E2Xcsy<4BSEsup&56yF)&Phu?$H80Jq|c0bC7>ksy=E# zY%{k30NBs2J}f}8F$k36uy01 zsJaz{WyC642w<$Mv>zULe7x=H!`WQ`ZkOA$1@=P52H#szCG@5 zhT@7lh5~Q{rpNT^n!Ss#2i8IOR;s#H173ngTN3xz!|ixceG2A|au;de^pv{@ML#ce z_2XNyJER7?zZq^<7Wr;>47bY*$bji7w*vqGH!qGx!_CX7x-}7wK;Agopcc(K%>Y;c z#y$X{)7^G93kNTx>Q(}F!MuKy!x8%c0AQz#xyV^i7@7fq83PN@11-=Qg~lTIi<9_y zysG{Vpu`(Av1-sAt{iU==zbN)5Dku&SQ0`WRfR4(7pRtd)A@GKZNPv3+xqm7(a@}hj2m+PduBb|Iq8b&D|WtufN;~oOm*O#JVj{y-uy+!1*I9b4l?8-uCUm(fs)}l??O6LN`87+9s;AsVTIblF@~i0^!0ajC zXW4YKKW5e^B&%O#>l>siOi#Iu;0U{?*d|6Ow&ZWfZnFNZwNfcIEMp*m`uMn4f&Ua| zphXOAh7_BCAoqUA@KFL-oN{ATaz8w2Y}c_7m5iJ+5xqZQ}__ z%%=~)7{eF?00{G*tIsq0BlmxL+5YyS8!ew4001c76I(#A1*7*VT3V+xcfQZVpD(dF z5TeMnYMi4hwvEhXWy8o-Uv(5j(|BjU9M#j(U3R`ZhW9rWKF}A3_6RP+Jt0XDK-l>{ z3x)p<=fPmD#*U<72KsI%|G>BynEjaCtjj+z>$&`x?gAmmN~OXFeoDO^H>mD>0k^>$ zSrfbD65zfR6+j~1z#LR6O+U&lz&=5^x*cvv>{69c+(7-gOz-rt1r$^nH^_~xHWG;86wDD850mVyH`s2%*Kp z!Q=Z!HoMA*XyQ)M45=^A`1B|oLIw%2`@}F2(0xil-1c|lk*aP*iN{c43NYsc2@?s5 zuOVfxvz+(T&k*i?pCF*Y;Tghf~v+1XH?<14D7TE@)Gp~AcX0M!HjLVlefcL*V9+#d}9Vlh&mMl-VY zmOIdkkJN{RWY_|d8mi&p8|5{{>(DaJ0QF$uC{-VoftBOBF-^4jcM)> z782__od7T=>s?r?_)6{?4ro>)Gdbd<&l+%skmiSX0hb4-s^ra7{Cm=OR% zqKXK_4Y7Or74bO1d>E=ypJI;b+daqjNOqC~`y5Q@Reju+=2rQ;`LW!M{<>y+r(6A( zo2+b7Y%VJswsyzrE`kHE^AJFTq@odlm_6nDA^oCweq4R58s%~T5aduY>{QYY5Cqsg z#Wn)72UFH=C^ngH=>J^XQ|uxQDSM$<2C|_!uC*ezQUJo3WmW)GMZ=?54|hN^0D_;m z`TTKR*}-}dfkgWPrW1~ps~TC$?lnOGkiqPyq$^a5Ds)Hxs5rvyNU;onqiEad?nn!B z3xPlZKmbWgRMa9N_@dlI@?yTaXQx<09DC3t-TW6Sp-?hpV2;T)bXiG_2R}s#7&hFA zfM&?A1t;PBY#RV2-JEWW9|OuAs~bp_`X%wlS8)PNXf32PgUs48{g5~UAj3ncLkpD% zAc5K_^3c2%tQvb15KP5B0YJH%hnOA=pyagGsP+~0!)P` zmx4#(1kriSQRpOyD<(-=)S-SL*FICoW~Tp#uT*Iz^tb zXpm?_JX#nfjz*Iw41^HkQZ(U$lV0MWDoT2>1;E2&InRcwj5K)h|8xR|wjaztJbWTR zc0>=MyKpFLjjaGc@3&H@j2e@SC0C1p5CXUZ0N>GlH~^;eab*QVqG|9d<6Z-12zY0& zfmW~TOWB%%2Ny*?Gq}n3DY_VU9SDFPcfwFShtX_XA2^wDg$TLZ2oup#VgkIsORod} zqZh^MkH!vRqLW(0Vigvk6#!%wh{~CLOuE9K5gJ8_z|9eJ zL8?oTq@|t!qsA{$4*)(El>W_Q$~QEh5FqU%uYSqxt5bcjY0jfQV|38I6n!vap-t0X zkW82s));p=fqLNOKVM1HE8aUpZ0~NV{e#?uog{kRxLE2&>I42VOpo-?%Uy;!Mw+?Z ze3zCUr`QJc?e6)jJ^y_i@l3FZ&krA51DNv%#ntVktucCu zq)WNEm}91^@wfQP#{7W@;s*a3mpL{!k77-+CQtr$OtC~TtY>A5=mkZWoS7LZRuQ@( zw1NtftKPY&=tc^eLs~W2JAT^n;#2y0v*dgH+e3i!Vu3N56}J_=NT|G!-z?ghYF%STRvX1*RwgY*nLw-#Q7#%G4FS+(WFm1~d?3iq_meCDwMe=_ z&fBeS*$TqZka0Tvr!VOZpi5+qWElti~jMKqCeMzqY@2)73L6QX;{YO~4g{nv?Gc*7&=@LJ3 zl9E2g!WUhViF8z5CA&_KNg)N0^;!9Y_vBZAUUK+61ii7yYp*GE@DE=~Hcl5=EUpM~|2t_mI zY(UW8KJuqGQRwg=|0f`6fX~4ftQR!-^rA{b3P2*v_*$bLibp6v0YU*1^j(>}83DDt z0HCn_>UK8LR0KT}D}u}+SD%w?0O0ff29E*E33NdqM3zu=0A5B58RUbMnE*b>9I->? zRX{BVUjaaMylc6R0VG*S3r%*HlwkLmki6GaEf15@%4RG}Ve`X+& zhoAAmho&-nd|?KFU!l8V2N)O-P&3{lH~xh7K>Zx&<)+l8f9Cd0zeyXP#sa-@Kg37=(QSYaqx>mFwd_8aF})^q}PV$$)V-5xkz%rzhY*6%QbBn$G32>TX0P|`*h{DfYl z&#~4;RX~ZM!AIyn3419}==lU_r#yi~adw-H^-GXAm2V785I~>DWU(%d$C3a-r~qvg zrwA7K3#k!Hb^zVsXGlUr8g3tO915~J_znPQ#3Zj}RN6N{I}TBYzvA70dh}8euv#=f z?>USFyCDO7Eug~$z+Zf6=fX`Y2`z1l$ng(zLM5WopWc-AasdM9@jitTdHgAacFNOv zDF`~4mtG)b;O6b`ZnggN=8Xar#mQHIPV#h87Ar&%8X!P*!RjD!Twe%@oaD_VUiOjd zcC@F^;~`lHQ^K4=wjt;5*D&P9?qmxGjMrqN$e;lC8Ab_Vq(BX{kpy>HU`1uSdRaQPRNmmcmDDr8L z1yxLXC`ed7Egl*GObS<#Xwoj5*0-!4fl}Xf&-YCKa`x%gBXE~o9w_wu0Pte~kPaN9 zlca+LHXSBEmsFKfe&jo41s;)LQ5c12c zJCigBa-d{M8X}CNLqL|2r)_{cJq_a0R4<8EBB~g;dN1as8<~-Guv}8e25CW<5I_Kd z_KL+s);&6DrOcdQKBZX4C0^>3G*np9NQ=PTN{Jw04j^n4Yen^Lv;3fLqydNu@Bq32 zl0pjER(z5tqYMaAkJ{&)MN>l+7Nxy*!W>g>pa?U~{FUPFAUHZ8P2#{`vSfS`3LQ*K zF90Ok8rTmrZUO+^;U>hITPTUwaUCF!;SaOFe}9`X$;5H_PNVl-to? z1%}GY(4hnX#gfq0!0xM4s1<(2Z6WAcMOTtJ#Z~Mv#Rl;FhC-(^ZHK>E8Utl(pc{Zt zJ#%*Y#!cOxd69ZXur@oUON92Ydx~B9BmBjZy8z(2*h~UKAzf%+knXSMXr?S-C@coP ze$oH^za=gLm!AYdo?cOnng6@2U+8W?R@VT4Pz@|z*3tN1xgohh7p4^;eWY)|9RP4? zl)-c&3DrG8BuFDsQ-?-V)cSAyQF{~g_IR@y2!6_)!M!WaD6IV2DK8)|a9RLBVFnf_ zLb%LVvgweL&4Vs-8D+o)04YLp8F&oImHc;-ASk{XMTsF_8Y*T0TI@pFi8q%Ty_>n&IV+eX@3m+6>HFLbk19(k)CVtLFG0p(5gGj{Nh>ZYgu~xZ4 zpyn3wO^P|D*Z`vS+lvwLD%^#Bl&3R--rYpuc2A6dJwO;?agEiM6hg=n{D*gYBAbCPy|icx)grbd zfdT@>2YWoF&=aH;KaC)uH%cdsdzPTXVeA8d!0Nd(RK*waz2yaT@w5Lc0Dw&P3=%?0 zvDy({Bo;vdv?1pB-_Qtp zw_gI?1PDl-;)5Y5t&wy@G!Fmsj17IS-679#MTe-BdII1r_)?rrV6SY*0IFE>v#sfbDx|ss7kN4s4ha=X;lF#x7s-YVIfEGs=PEYC3^P1Dm z7j&U1#u~tWAPO!pI~S;^R}#(Iot`xWl_45*GJhc(<~3C@k4hEM@pC&0=pk|n@H7fX)j0nq^2Yszl}Vje$d_V7_t zfPfcssEQcaUXo_$hRp*2U<6 z0f5jv;r0wYOV77V-lG~`?s&R!TpnM}L)4&hoce;U_~46{ek&mr1<(a%NwRbns4Ngd z@X+v(4Jfw0$+|Q}j9{fGz{uCROj0Z$0B})s*pe2H_A)vvenK+=37I`u;T#;UOa~gL zq2gf#An-d!B{W-H~Jy>1bYK z56;`T#q%sxSw~jnjZAteAFer%BezJXcr3;g3&0Jmq>W7^0Kh|I*=Jf*87#>tlJ1iZLo*vOlde~ znFZ%HPH?|al{zU4Rrumzl1t3dE@7G=ZL}FW000iB<%62X{t*DIaULeJ(N=yl00G!b zmhPsv$8Ve=CMDdIY=B%k<+uCOEE3z#iO`Q(7Cy#8#v z4KEkTED;CLxDmIg8yb6!1WPW-tFdeogJD;|^TfmbDE7#RQ~?0Kag%k8Ii`|NQ2-<( zEd~TsmFpH;lsTp@Ql}Y#4X`s{AzX}7B-N>{##>l~Mcgtv@x>D300_P@57&$Muv(c+ zhfYR1BL7b%PVNe1rfFSH&3! ztCbC;!6v;6MMFfuh}8$G1r=d;KviZn;qT~-#hHMS1{Os{C;7xiqr(}F+T)AU-FLsH zChg1H_4F_`gXi1dd~?ewu7Ypbl+}<_2*4)e)-@3Z;Iq@+W&!0-sR&1eKh_RDg*@OY zIq}$7eYWBgdxj)unhb|NZ=eh1dzuKjZVW-G8=!3K<(d0r(}|;h4xbudeVxs1g=dihNM4 zLLy{0n0ArhU0iDwp&n8nuutQ5BwLUmYsr$VB|}nCEn1XJI$W466X4;CF0^4$G-whp zs-jwU+bD9$jc7%X{-%~a+litJ0Fau6d6>ojxdKAz1xLjsGYDRTC|K@~pJPH~A7(-? z;?ST$8=96S#(8@*;YEFm1c1;bL)wuWX^|U~qMk?5A%ljf`jceX@QEvGGKn#8Tud^3 z;dRJ8Yymy-y)Xd2r7J@4EnRV(+hStRM~R_>swAQc0sx@_NZt$sfRGpmjtsa%WX3IO>h}jqoOxdnDHr%t!di3sesiA%;J*4VEs9@bplAx`WIQg%0Bd!#cKL+m}0lXbcm;5soAE+5%K6c!O{L9xs0 zTU_L{#(v$tVFc-`#$Rv*BZ0s*v!(Zm|;3QpoY9?54!xBvH%82;lSih`5ag<#$8BnMPV#e9{s997fl>ky z{ht5;0k^Ukk7nYjP*3P*D$%NAs8uHzRaxL!4;Mh+>_!!81HhUVz=P$R!{6~Ea4Z4x zB>*$XteaYEpw}b`RZGjLNgy?D(j00uGL5(2PG;BWTn zT_8yQ44iP#TvyyQ0w~aobu;ao$5pc)=uK7$;8~93#wxXQ$SS=sIbu|@rPn^fmgT4b zb>vb9P$b)St#o}&xbhb&XC(6<5i(;>c!%U2H@p&4-t!-Pi zGV%NPc5oub!5!{*LHaM_mOxC@{|Ue_Ng~ql%gGLrEe6`B4cWC_cDIndQ4`omcN(IS z28B@tkiFCY@#FKT0wex9ed1K0O%!B<4j@in1smyrlOK@y8_6G0l04BLBO3sAPNz09 zpCJ?J%-|Uy1C`$iGI=aH0GK6Azb*#=$StYO$^gKMWdia=0L%#%W5L$yO>Nmq=MH78oTsBQ)kX*dPNRJ{SNf;F z{U8;#GpW9n)?q)Pus`sxYr&D*wt*!6|Jj>nI*Z+VL`*z{$+qSLuNCE_a0F%qM z?dH9*ZQC`yvTfV-vu)e_P1&|JNtA52ZX0m!gsH6f;z59*)E}U;|DWPE8d%9rv|1^g zHpk3ZGGj+QLrX1mSMj}vOMf+Y%*+&)%(gT$2ebcK>lOSC?EjIvW9GZ*vU%k6?yAmIZS@O4I(o-t zjiG@%YC{4L0iY68E@;UC@{thSfg(vHNbUsSONgACL1GpJ5DGTzt67A_nsAZ=U%)T$ zW5)v|_rN`HWioPH))<-zv;^IDG=dakl49^s42jA(sJup;1-roskQ5}BHHMS}3qfyC zaEjTb7RedFf4b?YRs+cguyx0B@H9X!YYYhh)4;%u7Bt=V&j4ri1BuCRK(;=qF=`HY z&?%QShGYjl7wHZ%vd}Vc%%M>O$pi*~c(C>(&rc?TpFILNN%Y0tZ2$!tH+;hT^R14Y<9?--ayw13&IokTzM%MXf%bva-ZDYfV#*Ct8)D zz{eAQoAPIHLn0?L(Ehq&Y@{bFFHp$vs2PpOQfk)Xz67M@1XIBbOTZlahMKwaK6=oI|X+tUG=4 z!?-1RBv=YYkYKb?vMjE4;in56#JwmusrMDgIzg7AXguTf_AU@Sk1 zM~~o+qh2C*+s9w^rWt`H2(=0HCwOgA6d5JViHzGJYRxYk{qpXAuXNjgvMawlQ@ndB ze}khP4<2?d9c5SVoKd4rUHl6uad~rCP)n0Nq7qxI=C%9_YfjW)792HKo^bBVJm4a{ zqd|e7KxL>}u43o22qK{+u*JJ)xjHfI z7Q6+n+J__09=-O|(JmhRFczee1oJ^ao4f=_E%dhR^3K0|y``&1fF_FG|H+PF28^gJ z0`VtJ5OU!0jgjR6LYWqkBgw0JHalm-cwDcw7krsKD79wPH)$`H;5QeDd&$teyyT=v zE8XeJ&L#kMTar4k_9ZOLMK1B;T_*=~aV}_{n!GjLuG2b9j8_;lFMjSN-;cbJ8XT0frt~TcU7|M&z`hHYqFEDIV5YAYz*Q&OM0Rn#20D_d zN~KeDd3H73Zlla4(I1kB(Z0w;!4jC%w+`!yyRf$gzQnt>^28K0wSM~bx5$(-Y$!Y0 z7m?ZpV{i4BBDNCZJy&17GpK!`CA|4XHnt9JbOgL6Hue!w_Rn#dAUjK;jrp0MjFW4N3>~eJ#iYNR-d6W|Nd*19lQ79ar-X= z+EfJ>z#M`?q zC4_9WL)s=*PI@|p<`8W)riPP9s-st=de6GOIqo4Elh2KHbJq# zpv=Hu#oWf`Sw=cd50gzWx>&P3YFk4pX{_{NyM+2QJxn$s2`i@;&ANIc<{a8Yuk2E2tNTEqv7NUU1yms|<(j77KhxF4{mwL`xHmjwFwaY;=AQ0(&nmFoQg0d`DyM%rCBji=g#|p_7%7*7ag! zbeYtFOo;ZdQMk&b6nSpIr1*jVN7yeo?cly;5jG+qy~6HJWkn;A2CW#Gl1}aqtG^*| zh#@K)g%C)aw$&V3Ta;D?BlEfq~y7wjbP=+d!O68%#a4D(mEvc@-w{f zR5Sx%NklcRqM8f0gJA2bltl8D-Y@QdGY15%*6S}E-e7UK>&htS0(j}iVT&8UVp(&U zy#smYHmBvGp$?8yZbva5Q<&k{w z6tqR-lQ4h}@ICfe(R+uWJ60b3_w`H1cUTR@t1r*bZ1j?Rk_H-NPe1;9P$B0AeNQ`+ zz+!_&iiu=Z;VL0ulr%xR{np_ctkKdW`24{&u(IEewg^b@Tu9F!RjeJRA;&)fyIj`l6>j-jt?e0RD)#6s3}3P z|M=(H)BC8LkHl|Ob=A|PNrk}kOZArnysr6@E<&@RIT2at$aQHFvprYG6fR02x#i)b z41>~2r4w9xde7dl^^o*0CmdZ2MY|q|7Kyz-N?pTRtlI{s*a`Q_#s(Dc5c>5#S zNVLbPdicdmJ_n~HsH~7oN<}(`qe)Ot4K|6$8Dz7P$LziUl1^26W#D30<&H|MF4nAh zFQ!N+P~nHIS-St~dH!FEXkSKp@$enbMnQ5SS58Q;&Q(jUg0%c|ypiCGM>p`OoMYHc zg1YHjtVHyvPuGvxdG^RnTj=X(9%!waj0J40Wc2^al+M1l&SJ%f}*BQZN3V@B|%dpl++01nvv%QlYJZ|5~u_OTn=V!X1zhs?oDF@M_{;V zQe&p6en(`RX^S)l5Ct^6Mt33va)rAfv^meOz7kFi1O8rI8RipnGaM71DE#hn`jlyfmRjat;O)qDkLsh;O`rw@5~X?!H1EQ%GZ zU5I=Nat?9^CABcD;9j4*_VhldXjgjoPiOTzqX`09ycn(a8z{*iELD@&p4{i36NN(; zx!1D7o`Rf#xi7^F(Qdwmf_pRA`laK0Tq2Bldx-A*VizH=GyK-M#ZOD;jaxExm`G%g zx427i+jCrh1vIJ`9QkKb3ID}M#|&kUMdPy%7x>vA?4mOGWvU%0cKAO*fx+Z_#V!&2 z2o)dC^O?PjAD>1~(m3DU=Q8w4M{nL%f z26V~L5Y{o*wPz1-V_x`6Jr6Bu7<8({tW`Oh2mK8CQ)_k>1n1G1CMiB@eh#bC`SogX zbE_zw`sv2JWSu^>;!FAzL|qqcn0e3tOUR)BYdp?S2KcnK9##*rfC@tC7c;NT zeb#BANvi9i5zqa-tB01Xdt?E1#Pk1KhI--moe0{1zO-Vf^O@RfIXMoSqt=e8d`y1% z>ScX;M32g=4aP6{wgtgT03FHFXzjNr1l9zs+0&h0)UB|34c9QT^3t(Ux>a|MSHZ9t zlvvG%G1UIB;{Agq%Ln>QR@oOg#MZ1{9`%FxlbaZJOPaSNdEe;Fr>iZ`v1cdAFP`4< zkQ1VUnL0gweVr2qC&WHrlETXJ{usYtRgIOJp#zED{K7@7Zc7RimhVsmW`T&WYHG4K zPR_*$X1?;IWCkz?e}ian`?8(6Y=^5=He(8c+i{?LEvOtblJQ7jlSf}P7G4aK)fs`U!S*7Y(~kFIgP)0W_-SAU=bMCvQ}(TizCY4^o7$ae-3a3N3b-Bnt?gPuDymgD?s z11}(79q($JQ2fQH-OSni)Z*(MNBN#)@Q%&hUeuiFhd-=QQ3A2xF-dX`R+Bw};P!>5 z8^2-uL*S|@NVY(50OejgX9Vk-9JJuIGDAKWj+NksMqHD)|9(-u zo@EltQgI`^eaSL$x~agiSBHs49V@X4L?Eu!LjI)-b@*oN#S9A_N53!vJu)~zL}hRn zymHuIv-@SLegZMp)S_GtxoOLt7L;vF5%B^%Aj)QvBuBnX50%eI5HX1Nh0-!&bAddWs5yzCkZlvcfH$ok~w10I|IqimAJ7$KB}i5n+$jl zPLm)RvYjM3=4Gnj$BXIOM`TK7^B}N=B*9YfzY#jk)fjlOfiSL;NNu%xP)T6znSkeD zyA`KvXa(w>i`n+4$H*!I_=fycY5O~{ku3hdd-=ov!s6<-OmD^s3%%U7#~J9uUScVr zFJehW0L(2}r9`gv)n~n9@K=VbII?K1@&Q@E0OSDK!IM(GrK`c?j7uhKZ(&dWO3a2y zYcNRAACe;vC=VL^x$v2e2hhHJ*|P|Zn6W?aN5;9@f% zL3#@$Av3}8ETQ-Xk)80iFRg$oLjrOXthWWEBD#QUkuOa~Sca!Yi=Cp>n?b)?EI=VJ zq(vV5hP2<2Na|qP7sg``5A|Tcx446x_qU0GkDw0JH62v@QucHNCc&>CdI*8f(9--K zQrn@lFD@z_CQX6&zw(g>KS66S4w8~1+m{|U_Oefq0;YpMUSc2(%ttf$AVG{?4p;3e1qBEeYjJd7WE@&22Qzmx>2nSX z4G!MbLVdX)U3~MAge_o-QLOc;mh%3e9$xr+F0`RsgAPekTPg!O09K;oL9*zGTs(?N zj!GqPWpHCj&M9WV)yf)9I$LZyH+Od0$7y?`NxkO(JT0y@n`c?f06N+nEp%vo;N)v_ zcrJn)AwJ&O>2OpH4{_|@7>S)3@N`b|QOb=w>IF~y%_ou!;o*&rGLJ!TQ;{HfQPQLW~bWL137~1CXpM{as9<0L3d> zKC`Lr^myGc;!XsraU83gO(_S&>%8fTK@--i7&78B4kzv;WtyD%j|=Xpa!(I+TbhMM zrZYap<#yPMCNjr%_aZgEgj8*#RdFZCL_pE#MKjMk%iLNo%1eAMPI7;QC09!i@e5c# z!YHt=h7z~RMQX(Jq{Dqr)bNx}4PT|I;4xQ}W8w1$JXS>@@*i&~~p9^yDE5t#s ztDXKPMp<`9vWBJd@yU5!(!}|^{`vZh0z@MLyIM0=pvGPk)CYevAr=|#gnPNp7xvVL zZEL#3_DoUbOH;5%t3~kMslul=NjXtpts}7)J0`6)PZQfrd3)+i)t>A1-(`{*vUb~U z69280-#;y(z^#FS zAtmMK(o8d#g8Re}Iz8+|t<9DG@Q6ufTgF{9Znb?=vQd|i z3Tz%6%#upTlho{J!JhOC%!rRjQZve!T0JFo*O==DQJ7>vivVSs@QSBc< zVd;LFXDKBm#fp71F_)B^+E$jMG(0LfJ7$$fA+9mF@#WId z9W8mQb0jS_Z~&K%&D|>EGh9RPE%CEz-ryjy>VpJ~k}<43U`Lbeb_%DiaeRZQv3IQoBaBvg&2~K1kC)3efW( z@KScAI^KUMELFcQgW38ZJ-YpcxALhwfMxSj2&iKU5>5Df#ib6qvV-9?B{SnCB{cC+ z7F2+>(~eyOSeW~wLz>!w)BZ5sr;H>t;k1;VXNPNx*MUFwVxQbxiTiu_@^o7makQ%T zYD0yP1`@D%mPI9PQYXDYds;@J=;w2It0gr~bY&qLykrD94|PK5W4R8bACYGHFu#ax zth2Zjr(emMlhN*JAVcQLLG&yIn{k3b+)^0n7CUr%ik+A^!Fts5!#O;W3BV%Pw0fL#`2&=%WQ$fl_nvI!GyEJ!OigE6Mjnz!%|(7vR3c1+ z5w}4$TnoCjX(TES(QlEr1y-O!D6YhYxm3y2x{i{Gu*}lOD38u9gt~So?vHsc@#K>s ziMq(sxEFo}Z|S{lksb4VXr7h3Kuv6Cy})43iD8WwZX_eJoyM&X3DxQr*BlI=DGsI* z95)u2Iz9G6mz-!o_ZV&+*HY*GH%cOMs0)2}f4JbNy0J@zJE`8cV|&Vo^t^!9e9_SF zFgK}jhn;`5gcpJ-cdXkvJdT;qDX+zsv!@+@yr|jSZEcQ3c(fIGZ~Qe9Z_)#=vVG*d z?4!)zInaZ!{**s9EWcOi#4w4d`$taUFE2jLu?cK^N#)%xCFqL(C+hQeTYJWir$m+ zf01{8EfRL^+sdEnSXFfP30R#pXPX}cK$47AY?G{Vp4wq(06Ox#zlEN2ccOO{H&XZv zq-?BTr!jA>kGxtIg^*c`zQ48>8(gM-kQ=B<1MCxKJ1T%Tdwl{NL!tq6rAZQkUFSO`nJ8Bxms7@HJQ_N( zDQZ}?Z5b(6q#ph{!|k~i|M9t-Bhy$4FJa_~oO-zLtCov4+z_WoqMPkgQ~N#l!#);r zbTAT(G1(*5oK>|{=|O-TKRh(M?rMgNS4J8b;kVKgF(=o>;%TnK82Sna3t1J~iOFE7 z)n{YlF@lM-5Zu2WI!k&>ntu-#?- zT&!n^Frh10McaWzC;FL_Zv#RcW$7m#{D5%|T*~rJl8D-Q<4vvuN@H6`l$2vc*jtU-xPQl|cGv8Zav5(<}yKPpo19{UR=mfs-mh);A@ zqagVqFp`SU9@nwVClT7WE1RUj@z(NG2YmMude@^Dz9;yBPfAAI!9n{s9KjvieX#hD z=8z1VBx8{Z5&n31Rt1Z(8l3G2xwplBI!&1w zMFw(m+?nt$R&HQ%z2Pt>YUP(lrVy8LMT7(-mken*;FH5s2MblWfVy3|m(BCpNn^9S z7yl`>nJ6y0K;S3G*$H%(%6vGJJ9*f`X0v!|X)G6F?#wXOk9H8$v(kSnZ5X8bbL05n zo!->1Oim&MtU{lG7EHh1h%Om+PmHaw8)j>ID+vdx!8THNB1t#Q)8L)_ zXLnu=tKoy_XSn9>!H%^z80GF{^^JrVSlT|BsKQE#x`tyA$P_K07W6C=) zVWBSJDzt|UW?31)R*y694d*@&5ak?97prEVfncCAIGgE}9A1d_Crx~eiYlHqlnm<2 z2tK&^_A2^|Lw19^TfWv@7Zy{0l<{09qm~z7HFRgGlARPKW2&CkpT3f6tkJ!0thIb8e5g1O0kSLi{mYRC(A{10P{ogN{N+Cf%WI-D8(h}4^UUh>`&QBkhV z$~;X3t04Th6fr=Z@<2~oSLPhchQ#dMyFoqwB-YkSxi@Z01iKz}V()iH3@wBUT<+sk z-lHuzM_hS>R8J#As!r4WIL)aP1}<5YS(M8|Qk8pefxOE4mGwiV&e@mBsr4&mKAop zJ_d3K;7J6uj5#g9%v3>6xu-+y_x#FwXS@NYdf1vBzWCo}$1XpGDC14v5ii3}w^jJh zkAK|pXBB#|Dx?=k-=};sqIOz%3x?R795=}BOo7SMQp5126U-*$fVXAJ*t0hCK*lNQ z)n_Sh0o#9ms72aBZ^%4353*A+6_AkSOavI2R~-9sW{twVBz}(CSAqD=PHNJGwIC)C zWT0=vG^iW@sR4t4kP?dS0yWs_;eHJE+q%yh757WbTU>e}Y?Oly3F`F$K#twfR-zS; zn!j~R`d-5i`wUG0II!643JJ12i-j6WIArxt1^R-q< z84JP-hTpcOWJRKUh37%5xXz^KPF6{iG6l-H8W!~P5*016f1N=Uzw1I_Mzk`Xxpnkt z=LoQFCBBb2>Dx;uCndd4Y8!LD-ojo%5=qpB(MOkD+~ACggQx|gXk!5uAM{wATQx8` z9!m=c^1K2Mn3|e1U5GUI;-4oDJ-J3T2(Z+rS5Bzl)2RElzw>45Lss1cnQ5;z#O^-4 zwJ*$gvbDmxNL4-lCCk^|)J-yHOckW&#d+7Gh zh98DOC5v(HU-4ARTu+8!$L?gPc}r4&9Oug-pYsqi{7@K!@G*5oR-erv42-}@%6|Vz zM+DHia>Ul&a`AYDNZFA0uOvlgJxfvxl!x#Sa)`0XL6SO7kKxk^)7IBi=t{#<(WDKs zDlS~kcmY8790h5s5*i9^u2|)pxL9)G%t6jE0)xP7iR9#ITrnrmt6lE0Lp|r^cQ6q| z=Q`X_)z?L*Ns}-TV$rXQFtX6si9>Dh>59{ATL}|b52fCBRj{NemlgIwVEpMcDzyl% z7H`xm{e+e7p?B@Lz~Ga4r?u@6{A~&dfM<_x5*Lus=iAY)@MN>g^n$hehdIs(t);pk zH*Rp+PIZ4ZQ^T6zbn4+aoD70w-FqTA-F8pF9h}n9O;8NWOl^K!CvyF z(P?-xA(6tT?CxoG&k;)Jo(pR@nOdCCnm@A4B|GLd|%9mK|lO^ z;J(d}r?Gf+K$Rzh7+P0#YZsKBl z8c_1manhIVJ4W9_;ZoL_5ZX+taL)O30kS;$Ayxy|{5q2_#&z9Bt$<5lW1;}!!0RQL zHK2eaJ|q{OOrH(y!vGDw*+pB#(e-=mGPz=sOyw`Fpayfy`~HnW@BkvDC^XCrm}&r! zydLxZot`YA`M&}~iz)hqhf+4MEH4Lg$Qd@a*&4Zkb-hX#E&2DJB)p!(HOMe&``VO) z%3Y9=&*&>F6-ApmoTXJ~ibXnd=nb5|qy>{x;iJ&fPj>H?k97#Ino^&!@bjao*xbH( zP1P4Un?7Y(ZguV|o^@`znXDDayF+odQGx0^x;iG49w|8U_QUQFp3D2g=$g7Po&#iy z>q9$}LV=h$(_;ufs7%d$TctBoJ69{ZYAS-VHt)xEM1U@O%C~G(k_`1kfBDbn+p~p+ z`HXRm0ne8sD;WJeI$2oes>Iap4&-&8+-eP_^G5r&-~T|Q0_A+~lYaARUzUiG+&@Lc zKT1FjCjk}S;@GCPl+E6L@u=M3yvcwp57~DZU^7 zlzSm!B{zSJabUPZ387YnLn0Q%6fH;d#7RXCt3EW7dY#fnxxs*d zL24Xmw|Wvob=V^85uAKR;W4|?f7{f`G2@4>uZLoZ4^!)$3z=We%Wq*wkW1j5H3^r zoon-IxFa4#3bfDB+U%;#{;x+xjjIkuY_{C0GwK50aiszbT@&ZjzO;>6Fn&QpX%Xu2 zW$r6$jP`fx3ndlWt9TzB8q+m()L$_CWDja;Iow48e{#sN5UU&T%h6l?^x$x(z&-jr zuVFHzlX`dIsA$FFEJmOe4!8NR9CI3OG*rd^JKHi63T0Rsio8n<#DW3njGAiNUcPQh zwI%pW1z2r+L}g0i$;H2ZE;XPE4ye3E^D&4(AK-Zft6pQa1_KiFDEE0CM;IboH=kN; z>GX(-7>1?N{z;y`az}DmoO^V%`dg8+Vh~{Hd8!noQ%<7IUkU@#jnDk*r6ou2KCBi4 zFjbLx{om=2E27Tpqep&9u3D5Lxsx28Radpvsr0tOY!<%qSMf!p6S2JEK(c1&BQa(g zx++2Rnov-JLWA(Qe0vF#{-tn@@RSuc{D<$%5I)Oh8&L?_c^yRW0yE_r&HdL1`%?E{gg_>ob z@ej1yu~Ot`UGvj(F%PS=*UO&#gR-!jZ5KKa?hZwHz}=|*?9Q@vEn&^8of3{BsiUmL zoN`j{kQld6&Q9qU3ElUIYr=Iyx29H=uQ1+|IE9_N&|9TBX|sA-XMIn2ds;x|MVhRn zsxp{x!xCA^e)mR1L=*wsP>C@!UEqlOA`M`QeQLKJzkl$CbSgVeqBlX{m|<>_!0aBikI5y%D9Ixws4`bvrM0NkOp{-){(9p&9j|jd@hwAd5Ao4O ztfMRe`O)5)SaXf4BSl4=_=;sSlFRq9MHQk=T&THh$?K F{tqQhCh-6O literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_pixel_party.webp b/res/android/mipmap-xxhdpi/ic_acode_pixel_party.webp new file mode 100644 index 0000000000000000000000000000000000000000..f70c7da9538cdeea5438ddfaf9d9274e508c08fb GIT binary patch literal 6258 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 o`aw3)QKaG~!UAv?H*ppF literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_solar_flare.webp b/res/android/mipmap-xxhdpi/ic_acode_solar_flare.webp new file mode 100644 index 0000000000000000000000000000000000000000..9f172e6cf8dcd6643d30bdafa2ea371c5bff0a14 GIT binary patch literal 12590 zcmV+}G11OaNk&E{F#rHpMM6+kP&iB(F#rHBkH8}k0f&*KhRysxATc8S7YtHdLPY;3 z001O>7#(+A-(t27K#$Wof7zQpqptOZUrd=3pQ5j2)#u z@4cs#io*355#b+XY8=qa9_lkQ+xMzE{Vgul&)QXfmix&rK>*lxcXuaAABPkw%&e|r2IXc<9qMj01^ZMNtKyvx!107H6W+oX_?i%_SHHxVNhQG z2!RI&pvHf!N8oxsuyI91Trl;?ZitAOpmUK#yZ+W%5xCov-BW+S)~z_LrRXo%54f$r z3VG4A{;R6O1I%oFR4;&;eN?I{Ndrl$wzt)D(#&6s5yBW@j1gHu_CLxpGODAVD81Kf z*}6M`YTLH!WTq$d4id>X@c#lC`6L}w#u*u}Y;gtT*tXj?2lyWn1csqkIdJRj{;OdL zETR7sfSrXxDL?_|Effj`00?s694M4h01BYLDre{c3Izb@lYLXWkQY?gD&arEf1pq( z6o3$YRDu}Z;SfSXS00{tr zefz%xhW-hxIL$O*+F<$$pnn3GfRAl7Pyqk?i2$HqaQfarWKST1AV38K9$tN21W@K5ANi_&g$ST&kP{OVz*hn|O^gK5W)OoCuSz6=)A?N_F$!W7 zO?o-VUI9iXCIW$x2mm4ovIUp>5(kME7wyW{aZ)H0D(H*`o!;57fjTFx)9FVzz_GEL zlYR&s4O(*GoLX?uMv^0y`NQ7X@Bu(XOhAYFV!!4)>}D{x?iH{fhb9}X)#3f*$f`3_if&YBjxW;$p)LEK+FKwr$$BYM<-!W$=Qxtzh22ZDWnm>DIQbY+L5KzeGP!6Or}6 zAp5DsX~H9KfJj>)W01Ma`~A$%=WAJc14^9Jp=cNSuP5*@9%R&FvF}DDGQ+@5ir|mj~)jmvVBHn;s}LUDD)8 zk*lofLM|TU@H8EsR(h)>p@*wvrZ7QFNC=zE&B9i01O}|dT$2DIbflqsf-l{B)~9BX zB`udrnz_hu?3Xm`A+s;Cex>mv-5$ugm&UzxJ15-Zvn;>o?N{S|&wH=7{=FZ*wr+|O z@<4&7IaaPbJUv}APA5+Zy_rzlCL>1SYU{Ao1Tjq6tN>Rgm(ua>rfCq8gq$2O2?Pcq zN|H*SLwC8oPUE=Dwx)4N2z*BHd)|1pgfMkV%OyHV6c`UrigHi0@9alGYBgi#^C(Oi z3)2iyfrjSjo*FbCND@fccFn+4%uHs|Aj2MV6EZ%ed+TM)7M^|v@Vj4qwOnG9L|-9S z!eC@h9x$i>@MPI%GHBLW*nHUGhUNRm?S!QJo;D);ZVs4tN zqA7LUuuwuy`bUitnzJ*Nje)O~qN7wC@1&+q!((R;$Fq_pC#8}LWfG!BHK=HYw<>L!aUY&J zd_Rw4l$>TvDn%-C5`0+S6)w*lHZcimL3v30jtTh9>*^?47HzndSW4wRLysd?G1yDA5 z9-1=fXdiJq*d!boIeyDb`jU%#*6_v6?T1kBq8jtv4T@dsCj7*_k9exqEo_iwZ|2;RhjH1F19DX3{Au zt2qE$8%m5>c2Ha$u`q670J(C)m(F|+-j-tH>m?~>%TDeat_qaBmDPi_UywRm0jZ0! zo|~m&rsh*Ii!qy>=z~#`r%)X{z0Z9fN^@IPuwrbeoWct6ESE0D73Zm;yM&U4=f;(3 z-=-XW_g$TTMXT0dr7i1~)RhvXwrD5NYRep>a1Ahd#DLwhVCyl#o}z|f*<-~3_Nh5b zI6XUf^Bz?9JZDo*+plqaGwG@tWTuj;_K{j!Kw^cgfayy21mKiq80~&qD4;rcGE*p- zP@C~BShFQNfD=@MleZvykfZ5~A_)Z@J`fR@p1Z+?hY~8O)$=u3|5L3}AlyrAN{dOS zoKST<9TE-Qkvp6hA`zHnho{IL*m~2?gBCV&MQN22u;NylD=FUGyY*wluA(#JI0AO2 zZZ&?e0VXr_69bm?U}=$BCp^qB)i9}mELXc|e-#RDipxF#u*%P4G7=hQxxI;t#*kb> zFn6qUW38SEV27tOr#3$CNZ3%so*U;BhqDovB#4vU-9zQ?pklTA#jcm1ml_KQ&t)x8 zbEuxs4W}v$*D;%)MLyM($%=@h#LU_giW$B<0RSgxtvD6!Jqmh{I7wrbtVe|zQv zz&G`8wNhtrrY@E^jrq};ul2CvCefwQH0pBM;IeJDgYnqt?xuy&fr*#is?|COW@29=m4!&O}} z7c*lj-Y!x-g#fbFtNZ-m7>63ebk#J7k#c}{wA)N|u09)Evt}7{uy$NgPs=t(0bm!_ zJaaCkJDG-#&W*zm#}8g1^jGCunInp4YHzxdq6V>x$qr#$E~(ZC`;qnfdWpfYkAu8G zj(3&{a5Nit*6ZZtGnf^1A|?y#ZOy1&Pv~IVUVom|w~`T2(M^$$&^-)4#gTkHG8AzY za~o7(p*yYyxma3aZZ5L(h0yKyy#8thA#Lva82d4X9v~(&aHmzhvf|RbbC_Ir&-xxv z)dM0l9)^}*cR&GHR0#kmTYCgZK`25p#8k+^3^6L?ywFhnH55ZI7=>HIozCLBN_QN2 z04bLytC1Xaaui357~}mohM40?Z5PdJa9fn(y00>#ukMcO4!fPg z2~{biHP78M1kC4ruz-HF7`*Jt;<|Dvz2j{hbGjo&92}P>JF*s>*zClKrbpfzVwI#b!PZMyIc~Jr&GBxVxZi!ZsithU))ud8oi8J=BBsVX;QSP z*9ya7bc>lgBA{bh<{h`0g8=|_}^x!ybOqpnl7ZsdGDqqWg zfX`LgL(6X2s!?*10OJTpun*wrG6H?XwI=vY@UVs(V)5l_ZCea(J946E2%lfhR;0sOs(y&Hq$j!w{WtGiV^nwsfp=_LyNC zw*oYvuYlGG%a$07e^Y+IK#4w(r1|i+(}#!Jltv7cB>bC>H1st%CK+sNO= zIB*@(xeH$h!&Gv3(;bJ2%G(|1ep)ea!ZSypREUX36zo}Y1Sx3H8ql%>CcDR6j^I9N zriDq%2K#?9NWxK6JM5^&8N_~Jl5F!BOhn{JQLQ>$!Kh8b^&JqWA>m<{@-I6;a+r|% zZq91lNyoBRl#&*rl&Y1--0G$*wX_bz6{_EP+oYb;tt{IEe({$^wjoluDP?Exs1spu z=thW>OAM-IO4!GyElQj+h&jADE=@zquuQ5D9riXLpKEva&Ulc z?0arK#>RLL2caa6$?)V(!)sh&Pl!t*z)SNp6ddCV+-6%)FO9cvy;mk-pSbh*xyU)X z$|A7g`tm87y}4q-bF=Sk0L}r$dA4V}Gb8Wya3c=M#M97^NFJ}Uf5}J&~XKl1tpwOYDUfb6ts^g3~qQZ``wauOvSeIRu2W?**zhhT=Ga zp`J5vreKjb1fYbjK?K_`JN!r~h`0x|Mi7towkbvDrS$W%2IxCp+w4+;_u;;`3hg_t z7FAAAJ^8kWcHLlibGTgd*(*kW3bXqP%^r7bXJD6!=T3wl77HX?IP--Lojg zY*se{cZFLGci40nBN_vul-A)ykc&pxh^h;OnZ$s zMP7&l(6T%G=G%^EbUhq<@Lo*DK~0+IO;$6Ci<2&`GMtteBoQzrhTblGhs}d}qJ?N? zE76G@j^;#l9ON@PUvLpcXyK4FlbSmaPb`bwi83lg( zpdwiDC-=Zs+%VL%sWMDY1x^9m>QSdJW|C%Pm?|@qu85qlLvvBg5KVN0n8q3;J$5|= zxe6Uf@nm(eF@p*A6Ixgh%_PfC)?@O-6Bkhv^KD@!9o-g=#-W^w<)tZ2BS|u~R3|BY zPC(Oh*jjm*Xd>uYYs;e5Ri9)A4wz!W=I#DNGDrmGy2W`*l44gDM z*1=d=O)=$Wcy${5a>PdMy3t_U`LZ{Dx6gmCF9MiW%%r(~4j|0u{pL@6F|@8IJWA=8 z2{rZ94Z}!3G^l+=-*Pe+EAlUv|AZe02SJRHKNT57V=^fO`i+TZh3kAT+uMu!V>13U zR-1%n5=hORelDSJCBX?H=cMiU0A%Iwd~?elt>UEg@qx7BxdV-S0es-GgHma!EaSg6 zV<_Lq&%F9$5#RwvaO?^cu$pQv?=8wfPz)Rq*obEi6P2vV@bQr-G?ni6C>_VRBdAk+ zk62cWdo@>9d$Lx=R!r;U_=O+|?(XpL`dl2V;+LB9SK?-7V<-qI?P%&iRUcH`x^t^h z#PYm8zKv%gg7riB1fi6YH2QM^FHY7<)lu`F3Uy2QFOMOkQ(G$z@O?db(CPMp!8h7} zF3aPITeJ!_ri9S-F|<;Q**Y>Fgdao<$$W$rE@2(MeALV#s6KJin$|&71|*`7)(gz{eN?*%qZM$AExE z+>q-tP$tXyrbtCEcEvT+s;j+mH`TZBzniXzmR$p)nC@dS-#0x&t&dA%rQ9b{O|j;y zCm<(d?2N%M$*fkfWxq{LtobB{qHe9V-rhdavRt+VjhWPhb$tu}+w5!(Rl2chUWCTu zowVLsYc7eg!PTnfSj);2EsSvt0&2EE=`&Ce|ic*2x5WXsKLwbjf_xq4OwTr4YI5!G^e{YcY?zjhOM zP*8A%<(LNZ5++<(*s;#Z{3$JZ@GEE;!rU{JItj5Y?Ut5B(p%36&G4(<$9 zIV<0cMH^J)!V&;`6E<*^;sUu(ZNQkl0&Q^0MI5W!@-4n&K zC;%t=$0*Lq`XbBAc8&zj*r?J+$;05#ajZfsrJ~Xgb5F78<%bUxmzin*Q`4lfm`;9F z-l3K^%T0r2_sd>=)>D~DW%wrVpZ8Ry6jh^c+>QmOp!7tk*FE=JeC|u00SN#?U-dWJ zC1EsL*AKBhcYHZ;zf_y{9VgPS7Lz9*Nq~|nU|N02%jP_$CaO74`Wo*YcOyW-HKv{I z7~P3cmzGXp%A>!+JI35l%;GK2nY1R9h$4*&o_?8oCo6$hDHfoRzh41n`m7g@xLgue z^EJ;0*w&E%3tMk|0B1diDyS50=DHTo1y%0zll&Jcx8PG~xRrSv1!j3%|M4fj_U8?Z zxoLaOv?)FT!;r@jECEwa-Bk;!;k*A)tk5r^;TZ~GD$oRS|KPhX{ew?_wE51~nfD5G zFWo0s{Emn`kVd1%WBKlj8UHR)>aRrP4v$(_Q~ACIqCVp}Aomx)`OrW5^(!p>1KFVH z0oQ@-ix^7pEc@$U`bwP;pEo2L^wzKd+fLR1JKbL~k7IuTo#st}e#6?LH*h%xX# z79^ml`PlhOU%BL$5^j$yyLhE@+>tD-qe?X4MKgfi z&Ixoq90*5F!QFiasewt{GF)j;OC1Aq_r<+?uN=L~3~9i|dd^mtUAhoshrTYeRR~XL}bKT{qGcO<&x=kdB#E+NKVlT9A|rdZV@U zo1X9uULj{Rh!V0j8*i0s{`b2+C3E5Jj4s?+?LRULkIhEF)*x;)gIZKZliXK$@uxjq zw;IhUyW#ZpidPy_pQ}#*wJN&Vd0#4&($Q5tk~ z)%oV=t1JE+Nt}J0Dxui~=mipU^{@8j^*4X_ERi=kKL)-+pTslCQ*63 z^UW&-NPV+u(yLQv|9bZ?yxgGUU~p+PV$f>RTH>k;oIcV`3~i& z{KOwVGym0fkB+$LEug2ZB`$8;Y!>dsEB-ChERH5jLI6GMu|ML=AoY#>=1+OozyF4B z{}u0xI1XJS8hC*c0N;y91qorj;^-yQNfeLxE+-aYEvJXL*Q{dr5r5za{2Bt(iqhnoZD%r=0pBU;17jlQN7y+?V_(KN9)I zAD8a^0eu;exhtd$&k5@9vq%u*@Fu856?>7lxn){l+VX?{;0NyCQ6McwhE|oap0FmA zxb)bE{EO^{zG+_~dBt_5Cp-Y|-24j2u!h~l7_I%ywZGCzF=@FIg;M#mdx3yEge+37 zG1$R_NnF?HYu{a`c1tl^0}1ekJW~8OC{HN39lmr&q3kcZkc)3yU3i5{=eqwvr7Y}J z@fiS;i&XM`t{ekvauTi5Z_$0f<(Yl6 zy%h?T22&zo1pa$FEm@qS)+KkA-CcnN>+%P|5qRn5r8`uC z3agY25-NCaD(L{7?fCH65-Sy72B-m24x1W%+iXEfrs4{#Wq{=!+Lk#xmPLyxft(m< zv16iMUb>UqL3gICCCD0rTC>`)Y~-ek=i#JQjBHwy>+Kx-(uD8b@QeBZyH3Uap-;CcCAbBh>a zj$9bDDt|J=kul6=z7lFcGDfVSlw~SrmsA3zR#QO7|wU@i10z^QhOKx#JC<*09_rPoCN{TY{#qp>D9R%A?< zm?3U1jsViewuEh#bGBMLuW+Hk4X3vomu&@b`4ZL;18AYf{ZqRNu;cy|pZ}i`j`7g7 z2pYnOMWbe%hd_2*i^E-vTY@87Od7|mCK}y&>tgmutuX2GD1{;ZGPwmoYM8d^TwARR z_k`AX*ZhB*EDIoz@+BN%)?w5dYgsW2nwiEf#$7T%6jgalE;$NSu@Hth3frME2_Z(Q zS4T83KAGf{vOzU%ZpW!_$vxZQn-BT4(C<_@MECak84N&7+hTjp+iLT3j4upXw!b~0 zP*Zt)VT{R;L4wGLz3iO_)!*)8^Mhx^*xj|%XiS{rwlD<%+!gzhaAT!KOhyq; zC_PFZ!0i)~ja__3RUuxrGh=BVgY!CLLhweGI0k?j?@m^myctFCA%quiTvO(*(*x{q z@Y(L|@wj2EtX2oDuFh4pi;laAgDQL3`EB1m_FMjW&T|hzz~9cd#FVhvL(6W1!mC<&=C4dnIZ(!d&6h)}aNTy7j8P794Q}3~4LRak201*;? z6ksWDLg-sSnW6w_|MYvl_Gcys0r3}n!Am&bncxUV?oPP#%r~5u_=n+F|MoorfJQO^ z9jZZ(8Q|I7yZ!;<_!M`=xC)lk&p={+MEmoUFGqa#sj?Rj_Mn4|+>b19h}@~*_Wj$e zK?{&cgl3m=^r%l5At@~){RjfF(x`Y6KseIrL}V`Ae$dBVc3SH}-H3XG3XxI258+ zmWGCB5R=)~lu{F}hFX5}Wfz*cS9JIgjz#~MttCc3J5hd%)>?y52wD|W(PiBm3Gm_W zj!G@uV=uqN62oVdl9mxvq)fwo*OFp@NDlCE(ICaA#ut_jDD`>IkhtKC*WAqAizD2{ zWe=~oDDmpc=KS$j4h<<;r7gleG!2yjc@PQbvX{AyjKru&QZ7N+*uJA@whc!;4(>Db z?7V9}0_ZN9_cou@5qyo8N&Krb&8BmwrqlXAC0@I4%AeFIrchd}Fs%t0Tt2YUz!r5! z+;9mSdnm76O4$-710z67_=c-~v|F(se+VN#h(VR!Uy8;S07>;--d=%o{i8|B2Tys6 zB7iIYFY(&rN&cxnc?uS9KhZm?aDEV8@UIkJ?x>NRGVd5z+EL^LxP`lVfJVEi^E`j8 zdapZZt@Ykn(qLi=r|=!UxdMODPa@|_ro)|~DF5P*5`Kqi<)a4Ozvv6S_tsjvv)549 zWd;}b+_~ORmY4_u_12ET3-}I*fezmV( zZolcgU5@n?o zdHJzWqN_07Pq@uwm?X-r0`6@j8GUqv3C7B{L=?%C#O}eK*h1g4@sE}vgU!jHAt(jM zfye5p8~tVZw0xI-X5q(}UzRX_AR>;@Mzk%A6};e3lW*=NXwzOK>!G{Jf^k+6S!Iiz zi$&{|s+jxEy|-LB<0Mt-d)Q(3ghX=iC6^bOXW@SW5ulT@bR77N;D-M>AK^~AG;K`V zKS)g%M;cE%_NFT>9@XSusd{nf&r%l4x-xg{f=w_to8fF`CV}GDf5eF++lNYwV!jx` zN|_bFDezvWVN)hPFedIYG8_e5f94J^n@{EcC8VZ!AFDqgN~{JWIn{JH!_gH2dR+`P zTo_2mWhyFdR{?1-<#L{3QE-f*;M94BNVG6DpE_Zr2`dvL@f6P^<>`X2ysb1Q?08uA*wtKE-Gl<4~}ua{?pGWJdQ>R2S1lNAaZWIKdGEj^GJ)-DB|R zv8XT&{c5yh{DHsqdIh*Onc|>Djqx01@6du9Byk@&hNUW|x=$ssLexFU;TUogb6mQMn*X;$}gFbF<0qJL4ZvO*}Ta+%vSQZdEV=2dIP<_ZU$Gx&jf-z9Tw z5Thrg#uua%J{7OA7nLp&nTfEBuTtrpv&Y#M8-plMsG^15dsa6-t~UOStbqtE5#lG$ z12AQ!6C>^BTNy?y(tEGL_S|98K|b#xZqDM|SiSoMcX4p|vFR!CfoS09$m-e@YnMl$ zR(}fWqFSdYa!up0404l(JdfgVl&$F)J@p}glQS4n5Y;BU#+&fHI|EN$mZrxXa`6<1 zXio*}_7it#&|xspF&id22;SVBAG!HvZ(f?zh%_JK=stu6HF4wp81~25CIe9|Y7t_m z@*Kz5XOyTSgk*Ma{(FE?6kUyCl4klm^94jja#oyx{eI`h>N>X?eQYZ7U7*F%c3NW5 z3PXx-rgL!ac+pdhM`H#e4n*y)lK@8u7H2o;C`Xo1HKGzWlK0U!*J z%r9Lb-}KnB6sGnrS;3qgY`5EzeZUOORJXKH-Afuc5teab{tJc5c}!U>Ln>U&z4hM5 z8F+~#DOQ^nC!#otu6#QZHAEsRf+(x=JuGJEB0lH^K7Rbz+;Rf2KlqGebRzcN+*LYg zrtqqTNURh>!d>CmsM*)g(Hnc`kpCurEnL69Y%d0uKf>ydoS2A zIZTW9AHUC3IV)pdiuZ12mK7C7Ld}%0ruIVki;OiAg@CB{)~rdV>EBz*a!HFV9vFV3 zD~vYT;w6WowDys#IK28l3BalUNzj;LMzV=n?C%e#u_6Osq+BkS2QxF3TB~;!uqK%} z0qH-jB)Xi4GAj1s7njycm1TOy8)Sno9C1PI;-S7*|3?By$WZ)@TgerC%uL3$;Kr_H ztcqXtISut$O~s7WgLt zul7G1UHP>Jxto8x0NqkFVb^DI9J1JhrDAqMQ3iz*iT4w?K?us&n1(ThQFW>TOt7h# z$2Uyc{IBGJ|4^7@;5#uik4P%P$lNRc4@o*`rCoaTUvnPlJhM+rr#q3(bDW5s{ zgo$+kY0Q+{|LUk#gR69wsaQaKxulz(?xejZB{OY1QS_$9DLl6O|4&ODD~33Wp1L0; zJC@32F4u=^4UC#%B5)TAGYHSq*eDTya#S94pWy*#`;Cx)NB*1iFX=xx_L)$WwTL*# zT)fKv*i?d-eo4c|DgRKhC$p{kGx7&cFi4PyORPo}xs4Y(Frjv@G>qbWCu}+MlfMq~ zFX_MenV*>wh@D~!R%#^bM)5@bnf%X>c(Qgup4ulbnmO{2odU0gt@H{KU7j(cn7>31 zA--~r6;bN3=W;f}&%X-)7M}nM*oM*-tT=rCLFO!|y3kxRy&~J?Ad=xh=B(bboSx)l z_&^&A2h6B26A2RCDd6RgOOk3|;bv%-O7?!RD}))JG&7xz7;L~TKS|Ca#jSyq2(v#84;e%_XlTy)4B`p*dYEdgfBOwNi zs~CN`J!I=K3(i@+f@e7o0thTCEZlvrhHZAz#hXjXdb7i_#xBQ&DYP*Z;{iEy^VAtz z!*-D!m6X|o&QeS&xfP=8#LI6NEmhOXvC1V20yY#`;F`#spVjoHW{iOtq6!VCxNK)$ z3?a$2_>Igh+Ac%R|I$=oCBLE;YEKqTy$FdC8Bl|(U4t+SVo_9OGH+%}<^Ou7P<@iU zR_<>P7qbqT3!0edBXYn#Yg4)Cz#4#%Cy~slA|%Vo!U|qpdiH1>1a@{!94xu9%qoQq zNjL^*3DeS*2QwvG&=lSxHQ5-mQT09h&Es9FcPy#Yi3Cm;sj%?H3cH$L;Gz06d&I&< z0B4*tM)4YP3S^d(ySQ;Je%`M%Vj_iwqe;mDsiR!fFaMQ8VK(8HR5bS~iT}d42lVmt z063c$Z@^eA+S?$^wbss;p~V7qYnWnko>|je8{SBnOdF4H?2?vzr58HY6Ax1FrG9h2 zGSx4s(?Ur9<3%`UJ7;FoWP~g4GpNhlX7-{XGFGTn&NZ_KrQwZbT;D9w#`(=0r5uz_ zZ8^UnbxrugeTxv0x}54oakZUAa-W=y%`%mYp}qAh>oH#aNy@%XboF3Y<6?HDFht5&B!MYpl!{FDHR*@& Q^JmkVEThLy-TPVw024X*cK`qY literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_solar_flare_round.webp b/res/android/mipmap-xxhdpi/ic_acode_solar_flare_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..c9ae98cb087f95edff07d51b4f2604ab3cd17613 GIT binary patch literal 12388 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_terminal_glow.webp b/res/android/mipmap-xxhdpi/ic_acode_terminal_glow.webp new file mode 100644 index 0000000000000000000000000000000000000000..6dc9706dd5b088426cb9f466c1340e0c940b2bf7 GIT binary patch literal 5796 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 UY2s`XQ3YHSg6?Tv_w5DXe+18LO8@`> literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxhdpi/ic_acode_terminal_glow_round.webp b/res/android/mipmap-xxhdpi/ic_acode_terminal_glow_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..44739c9f26d1d65c685898b4d14d4033fbd0826a GIT binary patch literal 6258 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Ⓢ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 T?ZxIV6p26n<3(n%`a7Ot>c9)` literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_aurora_pulse_round.webp b/res/android/mipmap-xxxhdpi/ic_acode_aurora_pulse_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..8b7a9e5d82d8e123f2674b2b059e315bfcf64e3d GIT binary patch literal 17026 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_blueprint.webp b/res/android/mipmap-xxxhdpi/ic_acode_blueprint.webp new file mode 100644 index 0000000000000000000000000000000000000000..04dcc97dd4248367f5e5d8eba91f7c159bbcd1a1 GIT binary patch literal 12508 zcmV<2FeA@WNk&H0FaQ8oMM6+kP&iD;FaQ8AzrZgL0f}uRNsYjmm{WrL(YwkRV z=>G)p`T+gY2dIcSo@DOyA|)kmM;ZOfZ84>vjCx@y7`u3FE+o?${VHRff*SO zexvo{jTh^nzejJ5R9=kE=sZBhg43CTfQm|i3iU8+k;fb1&yv&;(z}&17m_l+*Gd_^ zl9{!9L&BfgW-YHODk=pk0s$sDq@Wqy&sIfB%wF-u#mBD?P0jMLqe?mJDm= zr8*S>6%~6$MKBfBNhwM1W|aCpBQtt8diD8SIitT%UX0Eh{O^t zBWv9O>Wntu&E|?;2HL2rii#ElybuEe0iCI?{%-5=yvb}@N{afjR!W~$ZBU~AtJa#0 zS>*{y@v3^M1q5^^pi-csx>0AX86_kjBxTkjrMzPn>q5zkbx=N^&z744pBbFl>f~B; zdLG!QsEA_~1r-$n)iZkWBq{TqGI(GEo;$6iyzyn;X!zMvoC{F?SVFy5nj2-~QQ~+rHk4*>#fVl&$Ib}Ta3>4Vg!P+K&-CV~d z1nh3u^ypYmb3Eg!U$*@8c^TkvC;Hvi0~0{tijlE=cgR=(AjARD@DxOiW9VkAqeNNa zL|{#<3IOK`fVsmGmiV%H0x)-t5Wg1y3IIjdx+4l8lyldB0ziTN%jLR60RXb=*dLp@ ze-9AdDJEPq<}X_Un2N_Y{R9pU=4_E5@U%{`T;pk-0pRmC^30*HdhfDlVeKmafj5DJ8NyFiE@X8?8)D}Tfgd!X6J z0LFfI?%w*5&+^Q0I|NTI|3tb0F2y60Wi%0lWkK0#4Ug&N)+tB zdzS!W3IMn;U}OQ%$0l9?O!E;!1b~k|%E<2lbQK4m)&)SBnpX;dv+dkP0Y>h)iV_1b z&1;AnfbyyGX(WJX7XpB}17dCf5AUY3C=W^jutdZFjNEZ5e?5)Kq zT8{u4*!f+s0iZxBB>)6q#g z?Giw=*?Q=+CjkhN0X*S6RRCOVF#>mt2p!w1Q)mE)yxSTM69B^9R!1fPbco0T+uicX&#vnL5Hh;RJq3UQ zK!Iq{mN-4FE1*DRWbycB?pj=j#>?8fyxWcd8i;HzuTN7npaGzPgVS8s?zZ;%L&wEv z8E`RbH=ivXT$2gwn4-mg>vFi;@}s`uy4(~S2;uA2p4Jw2bh^CTeA(W_cI1Tspa9X$ z8wURt;fh&q5+@*kWX(KfCd1*Ul9ZX03u*BU?`DY z>sI`Q5o1i)7`}+M^;fc45fRZ=0e{C;ToYx92~fUAIidj20MGzJa{@F=C`xF zR?ZKopwdz4yp4;NCS>l`l};);hb0?T&?DT`g=Srqp;9UxJr0)T?8J);jm{23*sUFv zjw+hGsFc!L8T(c(RC>k2A*v`GkZDhqLRUpa-Wp1}YNl_gG`Syr3sppgPWYzKRd?un z1}&-bS)r{ycgvW0;bnAGg1&d|{=7=KsW`Y{@egR@+5aa+u4UV@NGX+~3~5kt)fiO^ zy7UIj%S~b0m^Il(GvS`XM0+IuaONmB-)MKD_1=%E7QX}ol*IS{7zyd4 z7~8h%wpsfE%Ap3wGTos|$Q@8w`T+i=1O@;BxJhmEW!tuG+qP}nwr$R~z1lk4pu{$k zBuTOy0RiN6mAS{|QC*X}Z%^9(xp5BkU#_?j)O!-1gKiTPbf80mL*XsN6L7PY+JQ$+qOKH+WHua znWMBJxOCZaY+bhy%s8mmnteyIt=hJ2TOPUg$#aUZK+LtimIS2ZQh;edO#z8*BS(?| zZ>-sM)r1bSbN45tLG*R^w?7IJDig}SOR6jx1&MNz%0ZNkkQD$(X(fX&02~CK3}}Tx zH~<(tGX~FxF{S`C!e)pGVKiqp!+5qCbI%7Mo=3(^>ln-efD}RuvC%}4#D)_E5bjgw ze=;68{6z>LSngFWRFkwlINe1`iv01EY*c{gyw`Hgq{vr0SSO5G{XW& zXxwn{2~xxXm}jQI6jE0S@eUsqI6=5hNLYgELSe!T!f--3W0wIWS zgw&SQstZLO%^*yA2Wl({OiKY5hip}HA$nUmoG-9~@F=0`LUzJ3!W2RV0MI2!M^@$_ z0@+kf0e}@@8({?@I+Z4c&INW6iU7z;fRtcaM2rklZye?mP9#yilaJI|PINlHU z=>G6%Vw^RI!o_jp)0FWtR0Su#G6*jT)d|782%&^Oz1`lye~@Fwi^#kS?eLWKueVk6 zt4p@#;XJO7Fd$41;VPjAFTzQ%kR}QG1nG_$2Pu)m$*6M5I0`rZKql3laE+70J;E#f z;((>r=>RhCCT?*6l<3?9W=OpxlxNC#LL}il0Gx(8Jr2VXKpY0bTEc=*gk6M0AZyXJ zrQsRBucshB4l<}XIY^Nz8H#Waz^Mc=?Ucsr>c%M?@&%w9Yl*Nu5Mc!&RvqS2Fq}5* z->(&AGV#y>N5F~@M_BKP@c!k9UHPjtPN;#Q+G2gwa?|ogRPi|Ag?P<9ZN==I_Q=d%9>M10akf#79vCm2x0PjPq&9WXt0}&>OS31ppb=#@UQmAJ7}{0^<#dGpZ%m z(%AE^=C$t5T$tUmsL23$>fFuhF|F6eDDfCCHAK}~t%NQPIRV0eD02PJmZ}3C%3?*u zD30D!TjoBPY%}~G+erosHs%>D>CZxjz)hRMIOUwcV%IURX?^mgsGQLMjYpN>ej4x;jsSbq*m7@#YO0qkN;oYCHWmo#UlaePd ztC64;gC)!{Gw+D3xyquRUEPDjBL@Xj4>lt%Z`g_g2_XYCfI&q6W8Cdk=^->Hl!K8W zu1+5bdtre77rpbd`$h=~s;j$u|6aWj#M*hAQ>!k9?Hqu~VXjoz3aBd%awe}}Gon8j z5p{aL$rJ2RQy?{-P!DO2WK_``lB$zCd+KgWtkb7{J>7D6 zWY|+#8?I)8tT9){AV(e%2-`@NNl@rgz{fs8!~!Ws6-Pd}vLblZD%?OB(8wA^nIdVa zur?jMa%@%YaFz*V07ohIDj!kHNVx@|L8Ljj2(YS7QO; zH$o0JY9(Qq)^J5+Ma_1@u@erI%N6NH3%NqVq{d8)ghyPFqLeT?Sto=?#O8=4bEy^( z8v7s$2pPi$Y z23X|FTL3QtnY~9aDGyys*RHxc`1>Ixve4BN&?+B@Uf1AzyvdWKD2AT)l{lhTP%4F% zp4A){h%`o2wN5wx@|VT^&iq___=2Z(8w~))9h?>0B^%y=l!fHpG#S;0K)^ zO70Q6NyBPgw6VgQ<`Ylj{SzWZKvSMhq-ynbLYv)i0EVth*DNQieli+X{vb9jg&0pC zAwki8`dQ5>dfVZ1FK0EC8BIqu;6w>!3o<_!nyTy}c!NG=0^mq{UJw4uMvY3JCejgU zfFM3@j{5g+Klk#ZuUgVxaYMxtOs6>&k-i-jOYSP34EGW>7cYSuJ;}~FdxBHm$SgRvTnOtxqaOUaH za`L?)X=$#ulyRi~^*+Z2Io9Z@2L*sG`@D8tq2sh}hB@PkJoZJ3@Rn6hxe9A4!yJ(? zscnKu{~S%z{-`938@7L2pHaT9eK!};b$S-!7^l^?nSyb?e7VhQM|7qWrXW?_Xpa+d zMF|XgGBCgKs8I~!832*RgQpqeZy{Z8ZZAj+AY!OwMZ-a!x)V8LaTyPzI` zJW9Lea_K-qN(nd^yh}25cswkcWl2C?=th9Y`!$x_|Kjc_Lk1^3X=U7DaSPAs2t5WW zDR3zH!S&d7EcTwSSc}o~*IVlu6Yr%P%|7&prS zxWwsl+YGaYveAZGvRDjaTN2lEg+ub4k6}ms;rIAymE@SAxIEm72{oSQM%kywh=Q|m zcZgEaT&L0ZK@pwC$1!#AR`l+T2UndXwB4X?8<_ecZG<*YiQ5t11CiNM{LvxxQA2Mq z)R?~PRf9o}rctOQkL1KuxYS7wC>fBkir|slbN6mhPQh#f$`U{%Y7gy%RDxYj`OsGK zwT5>KNcb%r=qM*PxenQ5dX#EkCw7NatE8l^?hrNmrZAXZ6ahH}&ij!%usC#@D$Ple zVl@qOO;g{cz*=FHA-&q!Xp8i>##3~{>e~3Nw?7yCCqo8};GHX4w;q1OrIeld^3Ao9 zGtvN=v)VeUEdY@7w^yH%EC>LpY`aB@k1iYl{POwZM>|gdoPyR-0Z>CS%Cq?@eqOd8$n`nzxu@U!@C%7Dfr zhk{`{I5Z9%WXm9BLTg;*Co?X_Hdarqn>sS(;_%PFiLWj{_m3zH*dpD#3?WCBP7ess*_*`0&f`pZ}r?iyaEX5uNRHR#T^hVOWlA%VGZD zNXB5o)(pv1uH|-MA&A4UKHYcx#6Qa)`yp}QaGO}7EbY2=2}asv0?eWS3~|_DHAqt~ zkxc2dbu`VHSn>ln@|)lOw;utE0mwOzpR5hzscLS*5QXW;tVtVJY=#fR`H;+}=7dV2HWXV=qx?SDf0O9@%?g2ag$1b&vuMYCu z`3H@=kxXruYpE+%I;%MfUf5XxekeAQsPPg`#5)4iTH+>1i$f=jwRN}NY{nY7!)U50 ziv$UrjY$L)3)`bVj1+bHT|uwKq8Ca%0l?a}f(i>xp(EQ|*RF^`M^R<#Oof35No)EM zs-Y)dw*|cx4fpFPdrDkGlI_UeMj{RXfEvWnq@c4nBA6NN5q44(C|ukxa=swwZBVVteTQEg#OZjw%-*VU;k{D|@JS=`4vLb+gVOLap!54Df0>i*m` zSdT!jr9&PC(Q9p+>KLpO@BC6-b#LgkvuqQoGtx zreU+nZ}r#CaaP8Wy62rT8Paa~`TOBBPan)!0c7%l58wE*n1Jg3T={hKd2j~3@@Xf! z?`-g>x@Y(VTJq=r$h{*S37oX;TLb57z$<>UuPkL6X zw!~Cc7Z*1Y{}Ax&{HNuC%gYD+x_|2=0CzQrxE91Na3(lVeu43@3g?8!e|`AAsy!{= zKFLwm+A#dwN=eRFXvvU}mVba>Ha}Sy_`G~S{iFcg(Et%Q=t2hYyNrh>ycHF#WK~t1 zTFWzXtG)Tmy!aSW$LhGU<*Y2tE^^xbXZ!( zFB%c{d-fZZUIn5>Y*hb8y6 z@P-#@EkTG&g(0$S;DHngzh`;;avN!8b8Ml46+ik9S|1FVhE<0Z%Jdq&sWsW%P#EUa z1K6aKkO@ySsW2}I5N(KbXJ#=gfS)s(^KSkKJKuZs)O*0ja!u=Sf6dqhoFAM)@h2F@ z)Z1}Iwo1^LNk!ox>R_uVt37PTkwq)pyOT*C4(&_!N{GC&2s)H_7(DaA40euxRR6OZ1L(FQ3-9tF zkSa$y^+phEMERtCKm!z(XCB6sHBtsVN1EgY3F>?WpK!ne7#|r{<^irhO-vDebvoWIsO}I2_%xgbDE_bQ^j&a#6A#mLF-~@J5+H>YKt-ZkVVc{KJ z*OQ52;v9#Jq~E^$3}G06Fx8#xcx*7@%bopq?YNZSPu2QMuf)MR#~c1*EvE9AluPJe3g9Fp0J=~F2sFZjFL@DwVf?~6 zXxd`iquDaAu)Jy(<`YY8E@Cm#9}jP-=0QRy6)s=;V$KFUz|jdI6J)}XO$PP#@JkLd zu$r9MehcF{xvO^Ur))*RXMf8V{*FsDYopBGeD~9z|49)*p&T7DE_ied?(g%t40iC` zWF_wW=Yy#~iIi!4$(8T2W@2_t{R)l_jCTiiaBj{h)4`1fM*#jgL8F34Iq%yroX0B5 zFc}C<9-i3dEd2t-2X=H&@wjsb?UC7u?3GP|-WMOFJ{T4b4ivpHT#TuVU~TISc*-YT zha!aa;n-V;;Og_D{%YEj=h4HEYmOC0ylh^3tA#SvX zT~1L%@y;-$u32=9eHCF8bOO~r2yO=!(okX+fDQNnXj)!X$84jw9fEGO0OEd_&n(>j z@9K?kgxicS7K-M5zVpp~{A<>BT>&=C1CuKlFImG|1{fLnP;S1*vK|k?ra2 z|Ah>_K5TRs7Xy&hT7LWPA6Q9=P=#mvCDBepC!O?Wb61%B)MtNytgp3q3%vk92F|gh z>l#@37Ur>V`@f(!f{(6%uhO9ivW z4gMB50668Y3$KEFl%RWzX=A&&{U5M4f{*S`^`io0wQv6V``^i@lZ;5ygHNv7hl|cV zC$Pj z{v6V^zM$wKNFEd23?&u?yeOM);PphQy0tdOvn>OJwl%U-buQ}DWxo`9|%0OfK? zM-RT3vf~pi$ojG$^WDE@TCupXHip-%q;*{!7QwM>BNjVkjmf28bUj=TMWiHVdR^ZD zThs%vzOhv7GGp2BHmMd15E79KLGn9Nfe8mcl`TI|42NRI z5!{F?mkz7p%BW>oxSqU+uEi<4%$My6_z0GK7X-2n4_`9{kc{34i6{&~sM{Vn>fjnU z5(3+QS9G?(nQnMF|DEc zfZtx{&0)Wc(kql9ye^|=b_M|0C^4D2p#X~ppuvN;F%zfj=`jF1Bcf^R1n?n)gw;(B z4=#CbX?>^$b7x;UgoG4ZesPzX4wr%-S1wOqPWC}Z*8n&KE@rzocI!(tZGi-Uw@Oa1 zAxu@Dn)_CJPU|8WX&oaA>mp)@bLu~(vf+QLut9$AjE|_$97>vIoohO6;z#AEJh*zY zFyG1y!}Cd1D^wQX{3{C!haRy#ON$%|<0?v(32?d|%fsmPT0zQ!I3L4tU2&hxfA46# zgY8`d1|k119wu+sb)_PiGdECqA9IoIZJiEQOwNJ%fWI$K&?9ESp<+vJ~PbV=%%QpO^FDDguDS zp)@wG2HCruT=77qYn7}u6T7$~@^zDS#vo>9+I0bxRqYyIe#6Ta7(C2r*5`--IK#v- zdvH7WAb}=JAuR8u!5v`iT@?m3SRe7xUVyDwbE)#pu#;={pI>*In0d$19MoM!=IgvH zAGIm}{Dfd0N-atiU=JOu!{dS|mu4|x+mMZoI8@l&6|rbrQ|OJ>c(0@mA13Em z+{uCEZMa0D)R}m9-D;sHH6`$A0L#Sl*hjbIfFQr|)xFvfdLwaPD?--^@LypZQ8zl6 z1Jh2~sAFp>l1{g!V<&OSEIx21eboELpDMm|Zu@qu+U007Mo ze(x`SS1z6l<*oZF3r*Oj5z>Sal9h{bIJww zIC-U!C7V-h97ji(v9zeED||O;4B>S>eFu1t`%Rav=dzN2OYg(% zzk&erQ#t9ur5J2RY=tOBse;BavPhm=M`e+QXIoQwtk2k%r07NR+RSr;B&+>`i_K3J zmE#-Ksq)PFt>hV46-nn!S|4o+JI;Cjs}ns zF-Vgh-xl=VzvH5(@B{!=LAj1+N;r^XS?x#RV*z+&xDEgjtEe=GACu#XiFxg~d2xR2 zYJdS_%P@^p=$`*COuTF2-IeS{jCAqns^~@Z7~`jQKr(*U!|U=or(U2u!RV?pv@o+I zI?dbz_H(c@R*^cB4P>2`SK7`_&L(A@z6^k9=+>>PAHSjSXcg{U;PtT|0F*rdn22#f zFt?dmI)N{94+pRVjnmD3R$&`;p3}qY=`aZsQ(=}>2~v#ED<&uDWGVQH%v?|31G)#C zsSNu_1h0hvdq@?Xu|uH`v4kT4K%HPE(9!5LMpO=)18I=k8MjTDM2x~VWrl^q13?=U z@fd(1f*|}!kcX+K7zGlcCnQHXC!swDN&Ar7GsfbYU~6_d#VI`aShRR4t<@gE0p3Zh z+SZJ+kCO5UpyDteQ@enyX&voEBQ(>8GBrM*-$3_(!2saHQLa3}ilu(8`UE&U{&0I8 zog9P?7^A{X$qud}007ZM;;!X1rjJgHzfJ!M#>4MdV`ZQq-^~IR4FbSlD!=o9(>KE< zK(CLdgM5t&M)uU4m!>C!U?zJKU7fyEjI=j8Jl8X*zI0#Z;daAepMUb#*rzI2$oCn( z!UR~Ed=O~@gEiPq-zvr$dGr9Z7?210 zCcO?*db?FI=g4{ZIRJ|$YXf{UPFY-$zJ+7J?(@Ui698`UsQOqR6POwA(8RI1H*vZ^ zTc>mAOj!g_LtuSHo8dKF*qkIB++fM#bd0Aw+a_Lo{;m^3EeivA_$ zT11oMx{J$$P^JzdI@T2Jl$cGGk)VQ34ikQKV0y`;mt6TUzP0hwNAj<44-f1<=S1#7 z*Px7pF6;qDuD6B;y2;(*9ugJFG57Hu6lI(mG9-Yh4%$m`vKoFdNPTY6#1FYum7n`OZ=Su?!a14*LwJrLg{Kw5=YZzGN0r07)Tw(K=KVOT2!J#If$yq-SsWBQJSRtQ z>_iuDOM$gM<2(QmIMtJ6yCqZ5PE{W^Gsou$M;MQB+5!7dXMuLVJ24U%JNN`)<5rcNH!NozbDo`PZSdjMnGgEmjlq&lx7% zJs-Y{G?)~1x&**-jig&2bBY+~IXO;q_Wn`l-*~}*)Q0sOm-z%hb7$7jWBJ?q!!J*@ zpnL7QC_MmDO3C@AZ*cz=&NiTs5h^?3Kl|TnKF#|?!?B;PT-j1`v_R7J<}M{X8zk=> zqwLd*^ZQ{v{eOkb0Q7Wrkt%W?0C40vl!dy)b3-O;1H9B?PY&rgU|gu!+)H4&I|$X^ z-+kUMH2$;y?at@blW7v+T|&%(?e=U zAxID55g{@TgB}1`Y|x~AlhPrY%S&KX+m!8fZ(}uC4OPrJE)K%4gm)>(%2eotqn=J= zibe|x6wb34H1DMrR=r-v+UcylU*oGV2<=!vxa)8~1z+Ha7U1Mm>m}T8xznC%&|qFP zM@{_3bC9pPq|mwb^(}eS*|yAb%q#)`!qx)!JzFtUIRFq-Xf|gSeuv+n^Rd(Fh_pTQ za72qK@Jp>sPm5D~zQAU5dVg|tH6d=Co33rF2=`xPv!QE`au7RnqCe)nx8d*i2tl0c z^};PL9TuS4hzN1QAUs`4*qV*;=^}QTW>u`27vV2LD%Y1P7ObNKv2o#K@Xav(uc4(q z(&%g>?-(6Waq}-v?)>WmjnxdNG%kk+66r>wH}+NxrjRDGQ=G2n4$v7Qd70EdgaE?7 zaeHg0+$uh(O9WHWUHEDsBUUuq%ogg&mNgDjw42LadwEbq^}KdBlQM^|boYR-LPGNr zNE7*yg=I1+47jJK;1Fv%K^io$b1bt=+TwbEXFwciD#K=^mR(#UwbTqWGs zk1~?TnuN4WeYJZ*AD@=IqG=aB0k*Z^Wf&74wFHGLsvxhs$0lnID7^a_|#EDLMC;gn*jlz4nYFU+NLZ^L`&I$ zU6TVKMT{pO&(Vd`>(MjhM#$Hq>!nQ%RVDfmUg6Y1M2Y}DwGp|uA~+B1N#>|y#`*IN zmG!{PLx?T#BR~iz^(7gdBLERUe8?ggpAVxc#llRu0RRpsnVw9;%uRwf{!sTL0H9J?rBjEZ9JGaV z`CD(HgEs~n{NO5rSg?w#+llIQ*$v_3i3;3xD$q9@has*VRp@rf&V^LnNEniU_+%0S z2*00*kVrVXG!Wj60l*EAr2~W`z6ZhSX$>hd=UB&3VKhErmG!(ofsl4l9kK28Z#q=2faNEB|e zavmi_Y1Ls9;dLm&TtYU&Ggeww&jS1lW!*C0SQM?<%ehhdq#Mi>V{giu0VLIM-w{ff`CSeF}9rXEKM0D!;y<%#`4UDqWg%~Ef%5YiFW zC`OlSn@-r`g_si+lDfrW?W|9j`4j|u1iYv+byPX>b3i4kJ{WKHYl^ElOtlEk6~cD& z-v3GMsb{=L;?-?iF{c+^hGh^tmGB)D*D$ih(R2WKF_@YUeB(OU%p7IeNxAUPAfBpJ zIpsR+8+p$GmD;b5ENN~o$OvWFJcDyZi0L|F02bcm&lRwI?88#`V;|-S9Ci~XL8IMB z8d68e80x!YjSW-tsYaA>a{O}vMh-M zklQ(!q0?Sq^`=-KuMZ9UDIA}oeqHTBjGaIOh68l(gwkDvd~YlOQiQV$6C34alSqVobj+hXeg literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_blueprint_round.webp b/res/android/mipmap-xxxhdpi/ic_acode_blueprint_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..63e5981b27087bb78aa55fb9a39997e6b9b24d10 GIT binary patch literal 13212 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit.webp b/res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit.webp new file mode 100644 index 0000000000000000000000000000000000000000..d3c296fd15cea2d54da4a2b0f8c2da169a4c5073 GIT binary patch literal 7670 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit_round.webp b/res/android/mipmap-xxxhdpi/ic_acode_midnight_circuit_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..7483fbb3b9d1df1033399cbdeb332f9878237717 GIT binary patch literal 8332 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 YnUP`}T+{l5ft@H6(W-<8>hV!2q8Ab>1gA-Dv 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 F;D0yrOTYjC literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_solar_flare.webp b/res/android/mipmap-xxxhdpi/ic_acode_solar_flare.webp new file mode 100644 index 0000000000000000000000000000000000000000..5295472a055ce141966d28bc3f995b585ef8a001 GIT binary patch literal 18510 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 literal 0 HcmV?d00001 diff --git a/res/android/mipmap-xxxhdpi/ic_acode_solar_flare_round.webp b/res/android/mipmap-xxxhdpi/ic_acode_solar_flare_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..fbe5fb4ce3d0cd1ab9213939a5dc032a8056ee83 GIT binary patch literal 18444 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 f3>YhhXgJ APP_ICON_ALIASES = Map.of( + "default", "MainActivityIconDefault", + "midnight_circuit", "MainActivityIconMidnightCircuit", + "aurora_pulse", "MainActivityIconAuroraPulse", + "terminal_glow", "MainActivityIconTerminalGlow", + "solar_flare", "MainActivityIconSolarFlare", + "blueprint", "MainActivityIconBlueprint", + "pixel_party", "MainActivityIconPixelParty" + ); + private Activity activity; private Context context; private int REQ_PERMISSIONS = 1; @@ -159,6 +169,9 @@ public void run() { } ); return true; + case "set-app-icon": + setAppIcon(arg1, callbackContext); + return true; case "get-cordova-intent": getCordovaIntent(callbackContext); return true; @@ -2185,6 +2198,45 @@ private void setNativeContextMenuDisabled(boolean disabled) { webView.setNativeContextMenuDisabled(disabled); } + /** + * Dynamically changes the app icon by toggling activity-alias components. + * + *

The launcher icon is always represented by an activity-alias (including + * the default icon) so that the running MainActivity component never has to + * be disabled. Disabling the currently running component would make Android + * force-stop/restart the app, so only aliases are toggled here. + * + * @param iconName Icon id (e.g. "midnight_circuit") or "default" to restore + * the original launcher icon. + * @param callback Callback invoked with the result. + */ + private void setAppIcon(String iconName, CallbackContext callback) { + try { + String packageName = context.getPackageName(); + PackageManager pm = context.getPackageManager(); + String key = iconName == null ? "default" : iconName.toLowerCase(); + + if (!APP_ICON_ALIASES.containsKey(key)) { + callback.error("Unknown app icon: " + iconName); + return; + } + + for (Map.Entry entry : APP_ICON_ALIASES.entrySet()) { + boolean enabled = entry.getKey().equals(key); + pm.setComponentEnabledSetting( + new ComponentName(packageName, packageName + "." + entry.getValue()), + enabled + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ); + } + callback.success(); + } catch (Exception e) { + callback.error(e.toString()); + } + } + private void extractAsset( String assetName, String destinationPath, diff --git a/src/plugins/system/system.d.ts b/src/plugins/system/system.d.ts index aa2ef8bf7f..6131045068 100644 --- a/src/plugins/system/system.d.ts +++ b/src/plugins/system/system.d.ts @@ -295,6 +295,13 @@ interface System { onSuccess?: () => void, onFail?: OnFail, ): void; + /** + * Change the app icon at runtime. + * @param iconName Icon id, e.g. "midnight_circuit", or "default" to restore the original icon + * @param onSuccess + * @param onFail + */ + setAppIcon(iconName: string, onSuccess: OnSuccessBool, onFail: OnFail): void; } interface Window{ diff --git a/src/plugins/system/www/plugin.js b/src/plugins/system/www/plugin.js index 8bebd47efd..c8722e7e4a 100644 --- a/src/plugins/system/www/plugin.js +++ b/src/plugins/system/www/plugin.js @@ -231,6 +231,15 @@ module.exports = { [String(!!disabled)] ); }, + /** + * Change the app icon at runtime. + * @param iconName Icon id, e.g. "midnight_circuit", or "default" to restore the original icon + * @param onSuccess + * @param onFail + */ + setAppIcon: function (iconName, onSuccess, onFail) { + cordova.exec(onSuccess, onFail, 'System', 'set-app-icon', [iconName]); + }, getGlobalSetting: function (key, onSuccess, onFail) { cordova.exec(onSuccess, onFail, 'System', 'get-global-setting', [key]); }, diff --git a/www/icons/ic_acode_aurora_pulse.svg b/www/icons/ic_acode_aurora_pulse.svg new file mode 100644 index 0000000000..f188ae3dde --- /dev/null +++ b/www/icons/ic_acode_aurora_pulse.svg @@ -0,0 +1,37 @@ + + Acode Aurora Pulse app icon + White Acode mark floating over cyan, violet, and pink aurora ribbons. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_blueprint.svg b/www/icons/ic_acode_blueprint.svg new file mode 100644 index 0000000000..129975a8aa --- /dev/null +++ b/www/icons/ic_acode_blueprint.svg @@ -0,0 +1,38 @@ + + Acode Blueprint app icon + Technical blue Acode mark over a crisp drafting grid. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_midnight_circuit.svg b/www/icons/ic_acode_midnight_circuit.svg new file mode 100644 index 0000000000..772e82baf2 --- /dev/null +++ b/www/icons/ic_acode_midnight_circuit.svg @@ -0,0 +1,33 @@ + + Acode Midnight Circuit app icon + Electric blue Acode mark on a midnight circuit board. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_pixel_party.svg b/www/icons/ic_acode_pixel_party.svg new file mode 100644 index 0000000000..40e37b72aa --- /dev/null +++ b/www/icons/ic_acode_pixel_party.svg @@ -0,0 +1,29 @@ + + Acode Pixel Party app icon + White Acode mark with cyan and pink pixel offsets on deep purple. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_solar_flare.svg b/www/icons/ic_acode_solar_flare.svg new file mode 100644 index 0000000000..df2a783193 --- /dev/null +++ b/www/icons/ic_acode_solar_flare.svg @@ -0,0 +1,28 @@ + + Acode Solar Flare app icon + Warm white Acode mark over a vivid radial sunset. + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_terminal_glow.svg b/www/icons/ic_acode_terminal_glow.svg new file mode 100644 index 0000000000..f5285aba12 --- /dev/null +++ b/www/icons/ic_acode_terminal_glow.svg @@ -0,0 +1,33 @@ + + Acode Terminal Glow app icon + Phosphor green Acode mark on a dark terminal grid. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 52092e2f08ae8551b90293263b37f5f69d05db5f Mon Sep 17 00:00:00 2001 From: Rohit Kushvaha Date: Thu, 13 Aug 2026 18:49:35 +0530 Subject: [PATCH 2/6] Update src/plugins/system/android/com/foxdebug/system/System.java Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --- .../android/com/foxdebug/system/System.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/plugins/system/android/com/foxdebug/system/System.java b/src/plugins/system/android/com/foxdebug/system/System.java index 24e3342aa2..094c4eab6d 100644 --- a/src/plugins/system/android/com/foxdebug/system/System.java +++ b/src/plugins/system/android/com/foxdebug/system/System.java @@ -76,15 +76,19 @@ public class System extends CordovaPlugin { private static final String TAG = "SystemPlugin"; private CallbackContext requestPermissionCallback; - private static final Map APP_ICON_ALIASES = Map.of( - "default", "MainActivityIconDefault", - "midnight_circuit", "MainActivityIconMidnightCircuit", - "aurora_pulse", "MainActivityIconAuroraPulse", - "terminal_glow", "MainActivityIconTerminalGlow", - "solar_flare", "MainActivityIconSolarFlare", - "blueprint", "MainActivityIconBlueprint", - "pixel_party", "MainActivityIconPixelParty" - ); + private static final Map APP_ICON_ALIASES; + + static { + Map aliases = new HashMap<>(); + aliases.put("default", "MainActivityIconDefault"); + aliases.put("midnight_circuit", "MainActivityIconMidnightCircuit"); + aliases.put("aurora_pulse", "MainActivityIconAuroraPulse"); + aliases.put("terminal_glow", "MainActivityIconTerminalGlow"); + aliases.put("solar_flare", "MainActivityIconSolarFlare"); + aliases.put("blueprint", "MainActivityIconBlueprint"); + aliases.put("pixel_party", "MainActivityIconPixelParty"); + APP_ICON_ALIASES = Collections.unmodifiableMap(aliases); + } private Activity activity; private Context context; From 369d3b1a36160deeef746c7f5e97e6b27f9646bd Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Fri, 21 Aug 2026 16:10:07 +0530 Subject: [PATCH 3/6] feat: added frontend --- src/lang/en-us.json | 3 + src/lang/index.d.ts | 3 + src/lib/appIcons.js | 46 ++++++++++ src/lib/settings.js | 1 + src/pages/appIconSetting/appIconSetting.js | 94 ++++++++++++++++++++ src/pages/appIconSetting/appIconSetting.scss | 89 ++++++++++++++++++ src/pages/appIconSetting/index.js | 5 ++ src/settings/appSettings.js | 27 ++++++ tests/unit/appIcons.test.js | 36 ++++++++ 9 files changed, 304 insertions(+) create mode 100644 src/lib/appIcons.js create mode 100644 src/pages/appIconSetting/appIconSetting.js create mode 100644 src/pages/appIconSetting/appIconSetting.scss create mode 100644 src/pages/appIconSetting/index.js create mode 100644 tests/unit/appIcons.test.js diff --git a/src/lang/en-us.json b/src/lang/en-us.json index fa275a3766..95ddfa20fa 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -766,7 +766,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", "save selected tabs": "Save selected tabs", "close selected tabs": "Close selected tabs", diff --git a/src/lang/index.d.ts b/src/lang/index.d.ts index 076f096961..ad4f4e7c91 100644 --- a/src/lang/index.d.ts +++ b/src/lang/index.d.ts @@ -769,7 +769,10 @@ declare type LangStrings = { "pinned tab": string; "unpin tab before closing": string; "app font": string; + "app icon": string; + "app icon changed": string; "settings-info-app-font-family": string; + "settings-info-app-icon": string; "unsaved selected tabs warning": string; "save selected tabs": string; "close selected tabs": string; diff --git a/src/lib/appIcons.js b/src/lib/appIcons.js new file mode 100644 index 0000000000..e0d814782d --- /dev/null +++ b/src/lib/appIcons.js @@ -0,0 +1,46 @@ +/** + * Available app icons that can be selected from the settings. + * The `id` matches the icon names accepted by `system.setAppIcon`. + * The `image` is a relative path (relative to the www root) to an SVG + * preview that is rendered inside the UI. + */ +export const APP_ICONS = [ + { id: "default", label: "Default", image: "logo.svg" }, + { + id: "midnight_circuit", + label: "Midnight Circuit", + image: "icons/ic_acode_midnight_circuit.svg", + }, + { + id: "aurora_pulse", + label: "Aurora Pulse", + image: "icons/ic_acode_aurora_pulse.svg", + }, + { + id: "terminal_glow", + label: "Terminal Glow", + image: "icons/ic_acode_terminal_glow.svg", + }, + { + id: "solar_flare", + label: "Solar Flare", + image: "icons/ic_acode_solar_flare.svg", + }, + { + id: "blueprint", + label: "Blueprint", + image: "icons/ic_acode_blueprint.svg", + }, + { + id: "pixel_party", + label: "Pixel Party", + image: "icons/ic_acode_pixel_party.svg", + }, +]; + +export const APP_ICON_IDS = APP_ICONS.map((icon) => icon.id); + +export function getAppIconLabel(id) { + const icon = APP_ICONS.find((item) => item.id === id); + return icon ? icon.label : APP_ICONS[0].label; +} diff --git a/src/lib/settings.js b/src/lib/settings.js index 7421f3d2cd..8827faadbc 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -217,6 +217,7 @@ class Settings { developerMode: false, shiftClickSelection: true, showShareButton: true, + appIcon: "default", }; this.value = structuredClone(this.#defaultSettings); } diff --git a/src/pages/appIconSetting/appIconSetting.js b/src/pages/appIconSetting/appIconSetting.js new file mode 100644 index 0000000000..f532a7b0d3 --- /dev/null +++ b/src/pages/appIconSetting/appIconSetting.js @@ -0,0 +1,94 @@ +import "./appIconSetting.scss"; +import Page from "components/page"; +import Ref from "html-tag-js/ref"; +import actionStack from "lib/actionStack"; +import { APP_ICONS, getAppIconLabel } from "lib/appIcons"; +import appSettings from "lib/settings"; +import helpers from "utils/helpers"; + +export default function appIconSetting() { + const title = strings["app icon"] || "App icon"; + const $page = Page(title); + const $list = Ref(); + let resolve; + $page.classList.add("app-icon-page"); + + actionStack.push({ + id: "appIcon", + action: () => { + $page.hide(); + $page.removeEventListener("click", clickHandler); + }, + }); + + $page.onhide = () => { + actionStack.remove("appIcon"); + resolve(); + }; + + $page.body =

; + + app.append($page); + renderIcons(); + helpers.showAd(); + + $page.addEventListener("click", clickHandler); + + return new Promise((res) => { + resolve = res; + }); + + function renderIcons() { + const current = appSettings.value.appIcon || "default"; + $list.el.content = APP_ICONS.map((icon) => { + const isCurrent = icon.id === current; + return ( + + ); + }); + } + + async function clickHandler(e) { + const $target = e.target.closest("[data-icon]"); + if (!$target) return; + const iconId = $target.dataset.icon; + await selectIcon(iconId); + } + + async function selectIcon(iconId) { + const current = appSettings.value.appIcon || "default"; + + if (iconId === current) return; + + try { + await new Promise((resolve, reject) => { + system.setAppIcon( + iconId, + async () => { + try { + await appSettings.update({ appIcon: iconId }); + renderIcons(); + resolve(); + } catch (error) { + reject(error); + } + }, + (error) => { + reject(error); + }, + ); + }); + } catch (error) { + helpers.error(error); + } + } +} diff --git a/src/pages/appIconSetting/appIconSetting.scss b/src/pages/appIconSetting/appIconSetting.scss new file mode 100644 index 0000000000..814f6d9e28 --- /dev/null +++ b/src/pages/appIconSetting/appIconSetting.scss @@ -0,0 +1,89 @@ +wc-page.app-icon-page { + background: var(--secondary-color); + + .app-icon-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr)); + gap: 0.9rem; + width: 100%; + max-width: 48rem; + margin: 0 auto; + padding: 1rem 1rem 5.5rem; + box-sizing: border-box; + } + + .app-icon-item { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.6rem; + margin: 0; + padding: 1rem 0.75rem; + border: none; + border-radius: 1rem; + background: transparent; + cursor: pointer; + font-family: inherit; + transition: background-color 140ms ease; + + &:focus, + &:active { + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-text-color) 4% + ); + } + + &.current { + background: color-mix(in srgb, var(--secondary-color), var(--active-color) 10%); + } + + &.current .app-icon-preview { + box-shadow: 0 0 0 2px var(--active-color); + } + } + + .app-icon-preview { + display: block; + width: 4.2rem; + height: 4.2rem; + border-radius: 0.9rem; + overflow: hidden; + background: var(--popup-background-color); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25); + + img { + display: block; + width: 100%; + height: 100%; + object-fit: contain; + } + } + + .app-icon-name { + display: block; + font-size: 0.85rem; + line-height: 1.3; + font-weight: 600; + color: var(--popup-text-color); + text-align: center; + word-break: break-word; + } + + .app-icon-check { + position: absolute; + top: 0.4rem; + right: 0.4rem; + display: flex; + align-items: center; + justify-content: center; + width: 1.2rem; + height: 1.2rem; + border-radius: 50%; + background: var(--active-color); + color: var(--button-text-color); + font-size: 0.8rem; + } +} diff --git a/src/pages/appIconSetting/index.js b/src/pages/appIconSetting/index.js new file mode 100644 index 0000000000..6718f0c619 --- /dev/null +++ b/src/pages/appIconSetting/index.js @@ -0,0 +1,5 @@ +export default function appIconSetting(...args) { + return import( + /* webpackChunkName: "appIconSetting" */ "./appIconSetting" + ).then((module) => module.default(...args)); +} diff --git a/src/settings/appSettings.js b/src/settings/appSettings.js index a7f912f74c..2817bb52ff 100644 --- a/src/settings/appSettings.js +++ b/src/settings/appSettings.js @@ -6,11 +6,13 @@ import loader from "dialogs/loader"; import select from "dialogs/select"; import actions from "handlers/quickTools"; import actionStack from "lib/actionStack"; +import { getAppIconLabel } from "lib/appIcons"; import config from "lib/config"; import fonts from "lib/fonts"; import lang from "lib/lang"; import openFile from "lib/openFile"; import appSettings from "lib/settings"; +import appIconSetting from "pages/appIconSetting"; import FontManager from "pages/fontManager"; import QuickToolsSettings from "pages/quickTools"; import encodings, { getEncoding } from "utils/encodings"; @@ -64,6 +66,17 @@ export default function otherSettings() { info: strings["settings-info-app-fullscreen"], category: categories.interface, }, + { + key: "appIcon", + text: strings["app icon"] || "App icon", + value: values.appIcon || "default", + valueText: (value) => getAppIconLabel(value), + info: + strings["settings-info-app-icon"] || + "Choose the app icon displayed on your device.", + category: categories.interface, + chevron: true, + }, { key: "uiZoom", text: strings["ui zoom"] || "UI zoom", @@ -391,6 +404,20 @@ export default function otherSettings() { FontManager(); return; + case "appIcon": + await appIconSetting(); + { + const item = items.find((i) => i.key === "appIcon"); + if (item) item.value = appSettings.value.appIcon || "default"; + const $value = this.get(".setting-trailing-value"); + if ($value) { + $value.textContent = getAppIconLabel( + appSettings.value.appIcon || "default", + ); + } + } + return; + case "appFont": await fonts.setAppFont(value); break; diff --git a/tests/unit/appIcons.test.js b/tests/unit/appIcons.test.js new file mode 100644 index 0000000000..35309e7dc7 --- /dev/null +++ b/tests/unit/appIcons.test.js @@ -0,0 +1,36 @@ +import { describe, expect, it } from "vitest"; +import { APP_ICONS, getAppIconLabel } from "lib/appIcons"; + +describe("appIcons", () => { + it("exposes the default icon first", () => { + expect(APP_ICONS[0].id).toBe("default"); + }); + + it("includes every runtime icon alias", () => { + expect(APP_ICONS.map((icon) => icon.id)).toEqual([ + "default", + "midnight_circuit", + "aurora_pulse", + "terminal_glow", + "solar_flare", + "blueprint", + "pixel_party", + ]); + }); + + it("references an svg preview for each icon", () => { + for (const icon of APP_ICONS) { + expect(icon.image).toMatch(/\.svg$/); + } + }); + + describe("getAppIconLabel", () => { + it("returns the label for a known icon", () => { + expect(getAppIconLabel("midnight_circuit")).toBe("Midnight Circuit"); + }); + + it("falls back to the default label for unknown icons", () => { + expect(getAppIconLabel("unknown_icon")).toBe("Default"); + }); + }); +}); From 144b2286d6e4bfb50715d98ae2090434f0fb99d1 Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Fri, 21 Aug 2026 16:22:27 +0530 Subject: [PATCH 4/6] feat: added frontend --- src/lib/appIcons.js | 4 +- tests/unit/appIcons.test.js | 12 -- www/icons/ic_acode_default.svg | 227 +++++++++++++++++++++++++++++++++ 3 files changed, 230 insertions(+), 13 deletions(-) create mode 100644 www/icons/ic_acode_default.svg diff --git a/src/lib/appIcons.js b/src/lib/appIcons.js index e0d814782d..44c3343815 100644 --- a/src/lib/appIcons.js +++ b/src/lib/appIcons.js @@ -4,8 +4,10 @@ * The `image` is a relative path (relative to the www root) to an SVG * preview that is rendered inside the UI. */ + +// Update system.java map too if this is updated export const APP_ICONS = [ - { id: "default", label: "Default", image: "logo.svg" }, + { id: "default", label: "Default", image: "icons/ic_acode_default.svg" }, { id: "midnight_circuit", label: "Midnight Circuit", diff --git a/tests/unit/appIcons.test.js b/tests/unit/appIcons.test.js index 35309e7dc7..77df9a0050 100644 --- a/tests/unit/appIcons.test.js +++ b/tests/unit/appIcons.test.js @@ -6,18 +6,6 @@ describe("appIcons", () => { expect(APP_ICONS[0].id).toBe("default"); }); - it("includes every runtime icon alias", () => { - expect(APP_ICONS.map((icon) => icon.id)).toEqual([ - "default", - "midnight_circuit", - "aurora_pulse", - "terminal_glow", - "solar_flare", - "blueprint", - "pixel_party", - ]); - }); - it("references an svg preview for each icon", () => { for (const icon of APP_ICONS) { expect(icon.image).toMatch(/\.svg$/); diff --git a/www/icons/ic_acode_default.svg b/www/icons/ic_acode_default.svg new file mode 100644 index 0000000000..751a762f59 --- /dev/null +++ b/www/icons/ic_acode_default.svg @@ -0,0 +1,227 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b2f3cc67b8a59a06efdfc9853a9cb3f3a597ca10 Mon Sep 17 00:00:00 2001 From: Rohit Kushwaha Date: Fri, 21 Aug 2026 16:27:56 +0530 Subject: [PATCH 5/6] fix: add missing entries --- src/lang/ar-ye.json | 3 +++ src/lang/be-by.json | 3 +++ src/lang/bn-bd.json | 3 +++ src/lang/cs-cz.json | 3 +++ src/lang/de-de.json | 3 +++ src/lang/es-sv.json | 3 +++ src/lang/fr-fr.json | 3 +++ src/lang/he-il.json | 3 +++ src/lang/hi-in.json | 3 +++ src/lang/hu-hu.json | 3 +++ src/lang/id-id.json | 3 +++ src/lang/ir-fa.json | 3 +++ src/lang/it-it.json | 3 +++ src/lang/ja-jp.json | 3 +++ src/lang/ko-kr.json | 3 +++ src/lang/ml-in.json | 3 +++ src/lang/mm-unicode.json | 3 +++ src/lang/mm-zawgyi.json | 3 +++ src/lang/pl-pl.json | 3 +++ src/lang/pt-br.json | 3 +++ src/lang/pu-in.json | 3 +++ src/lang/ru-ru.json | 3 +++ src/lang/tl-ph.json | 3 +++ src/lang/tr-tr.json | 3 +++ src/lang/uk-ua.json | 3 +++ src/lang/uz-uz.json | 3 +++ src/lang/vi-vn.json | 3 +++ src/lang/zh-cn.json | 3 +++ src/lang/zh-hant.json | 3 +++ src/lang/zh-tw.json | 3 +++ 30 files changed, 90 insertions(+) diff --git a/src/lang/ar-ye.json b/src/lang/ar-ye.json index 70ca153df6..473b04bcda 100644 --- a/src/lang/ar-ye.json +++ b/src/lang/ar-ye.json @@ -717,7 +717,10 @@ "pinned tab": "تبويب مثبت", "unpin tab before closing": "قم بإلغاء تثبيت التبويب قبل إغلاقه.", "app font": "خط التطبيق", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "اختيار الخط المستخدم في واجهة التطبيق.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (تشغيل أمر ثنائي)", "lsp-transport-method-websocket": "WebSocket (الاتصال عبر رابط ws/wss)", "lsp-websocket-url": "رابط WebSocket", diff --git a/src/lang/be-by.json b/src/lang/be-by.json index 98f392e34e..d66afe7c82 100644 --- a/src/lang/be-by.json +++ b/src/lang/be-by.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/bn-bd.json b/src/lang/bn-bd.json index 36323c674a..43e6fb41d7 100644 --- a/src/lang/bn-bd.json +++ b/src/lang/bn-bd.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/cs-cz.json b/src/lang/cs-cz.json index 52e5bbb078..4fd8d00241 100644 --- a/src/lang/cs-cz.json +++ b/src/lang/cs-cz.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/de-de.json b/src/lang/de-de.json index d1fb0ed422..caf309f716 100644 --- a/src/lang/de-de.json +++ b/src/lang/de-de.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/es-sv.json b/src/lang/es-sv.json index 8c3108cb68..3b6b47ab87 100644 --- a/src/lang/es-sv.json +++ b/src/lang/es-sv.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/fr-fr.json b/src/lang/fr-fr.json index f4edc7a62f..832f1e77b6 100644 --- a/src/lang/fr-fr.json +++ b/src/lang/fr-fr.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/he-il.json b/src/lang/he-il.json index 9d67df02ca..8c9e736a04 100644 --- a/src/lang/he-il.json +++ b/src/lang/he-il.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/hi-in.json b/src/lang/hi-in.json index 794624bad6..f859aad689 100644 --- a/src/lang/hi-in.json +++ b/src/lang/hi-in.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/hu-hu.json b/src/lang/hu-hu.json index 2a4d4ae4c4..5039b958ff 100644 --- a/src/lang/hu-hu.json +++ b/src/lang/hu-hu.json @@ -717,7 +717,10 @@ "pinned tab": "Rögzített lap", "unpin tab before closing": "Lap rögzítésének megszüntetése bezárás előtt.", "app font": "Alkalmazás betűtípusa", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Válassza ki az alkalmazás egész felületén használandó betűtípust.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (bináris parancs futtatása)", "lsp-transport-method-websocket": "WebSocket (kapcsolódás ws/wss webcímhez)", "lsp-websocket-url": "WebSocket webcím", diff --git a/src/lang/id-id.json b/src/lang/id-id.json index 4f2baf5c81..056e56d11e 100644 --- a/src/lang/id-id.json +++ b/src/lang/id-id.json @@ -717,7 +717,10 @@ "pinned tab": "Tab yang tersematkan", "unpin tab before closing": "Lepas sematan tab sebelum ditutup.", "app font": "Font Aplikasi", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Pilih font yang digunakan di seluruh antarmuka aplikasi.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (luncurkan perintah biner)", "lsp-transport-method-websocket": "WebSocket (hubungkan ke sebuah URL ws/wss)", "lsp-websocket-url": "URL WebSocket", diff --git a/src/lang/ir-fa.json b/src/lang/ir-fa.json index b19d8c385d..6a2cd28e9f 100644 --- a/src/lang/ir-fa.json +++ b/src/lang/ir-fa.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/it-it.json b/src/lang/it-it.json index dbb883ce3c..773406b7f4 100644 --- a/src/lang/it-it.json +++ b/src/lang/it-it.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/ja-jp.json b/src/lang/ja-jp.json index ddd1e5b633..e6cd76ce51 100644 --- a/src/lang/ja-jp.json +++ b/src/lang/ja-jp.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/ko-kr.json b/src/lang/ko-kr.json index 20ae0a3146..59b042f120 100644 --- a/src/lang/ko-kr.json +++ b/src/lang/ko-kr.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/ml-in.json b/src/lang/ml-in.json index bcc5171dcf..cdb382f146 100644 --- a/src/lang/ml-in.json +++ b/src/lang/ml-in.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/mm-unicode.json b/src/lang/mm-unicode.json index 00262a2a54..5d129f6a0d 100644 --- a/src/lang/mm-unicode.json +++ b/src/lang/mm-unicode.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/mm-zawgyi.json b/src/lang/mm-zawgyi.json index 84cf0cfc9f..15a20628ff 100644 --- a/src/lang/mm-zawgyi.json +++ b/src/lang/mm-zawgyi.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/pl-pl.json b/src/lang/pl-pl.json index 1634787b00..08c033ef7d 100644 --- a/src/lang/pl-pl.json +++ b/src/lang/pl-pl.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/pt-br.json b/src/lang/pt-br.json index 9f6552f768..bfa58da503 100644 --- a/src/lang/pt-br.json +++ b/src/lang/pt-br.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/pu-in.json b/src/lang/pu-in.json index 0cdbc0b314..fea22b68f2 100644 --- a/src/lang/pu-in.json +++ b/src/lang/pu-in.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/ru-ru.json b/src/lang/ru-ru.json index 4095204dc4..032234b11a 100644 --- a/src/lang/ru-ru.json +++ b/src/lang/ru-ru.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/tl-ph.json b/src/lang/tl-ph.json index 509640d0c0..cb4698d93b 100644 --- a/src/lang/tl-ph.json +++ b/src/lang/tl-ph.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/tr-tr.json b/src/lang/tr-tr.json index 327b4556db..f0a5b2faa8 100644 --- a/src/lang/tr-tr.json +++ b/src/lang/tr-tr.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/uk-ua.json b/src/lang/uk-ua.json index 1f14b264af..983a7630f7 100644 --- a/src/lang/uk-ua.json +++ b/src/lang/uk-ua.json @@ -717,7 +717,10 @@ "pinned tab": "Закріплена вкладка", "unpin tab before closing": "Відкріпіть вкладку перед її закриттям.", "app font": "Шрифт програми", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Виберіть шрифт, який буде використовуватися в інтерфейсі програми.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (запуск бінарної команди)", "lsp-transport-method-websocket": "WebSocket (підключення до URL-адреси ws/wss)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/uz-uz.json b/src/lang/uz-uz.json index eec005214b..3d0e77b3c1 100644 --- a/src/lang/uz-uz.json +++ b/src/lang/uz-uz.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/vi-vn.json b/src/lang/vi-vn.json index 4c992e2502..69a9fcc1ed 100644 --- a/src/lang/vi-vn.json +++ b/src/lang/vi-vn.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index 377aa0f004..9e80d2ef52 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -717,7 +717,10 @@ "pinned tab": "已固定的标签页", "unpin tab before closing": "关闭前请先取消固定该标签页。", "app font": "应用字体", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "选择在应用界面中使用的字体。", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO(启动可执行命令)", "lsp-transport-method-websocket": "WebSocket(连接到 ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/zh-hant.json b/src/lang/zh-hant.json index 2e450d79c3..f71439ad9f 100644 --- a/src/lang/zh-hant.json +++ b/src/lang/zh-hant.json @@ -717,7 +717,10 @@ "pinned tab": "已固定的標籤頁", "unpin tab before closing": "關閉前請先取消固定該標籤頁。", "app font": "應用字體", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "選擇在應用介面中使用的字體。", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO(啟動可執行命令)", "lsp-transport-method-websocket": "WebSocket(連線至 ws/wss URL)", "lsp-websocket-url": "WebSocket URL", diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index 734c10caf0..947f624e2e 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -717,7 +717,10 @@ "pinned tab": "Pinned tab", "unpin tab before closing": "Unpin the tab before closing it.", "app font": "App font", + "app icon": "App icon", + "app icon changed": "App icon changed", "settings-info-app-font-family": "Choose the font used across the app interface.", + "settings-info-app-icon": "Choose the app icon displayed on your device.", "lsp-transport-method-stdio": "STDIO (launch a binary command)", "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", "lsp-websocket-url": "WebSocket URL", From 90ef3aadf77cecbcc2cc1928d86d02984010a00f Mon Sep 17 00:00:00 2001 From: Ajit Kumar Date: Mon, 7 Sep 2026 18:55:50 +0530 Subject: [PATCH 6/6] fix: icons, new pro icon, icons for free version --- config.xml | 14 + hooks/post-process.js | 6 + package-lock.json | 96 ++--- .../ic_acode_aurora_pulse_background.xml | 6 +- .../ic_acode_aurora_pulse_foreground.xml | 4 +- .../ic_acode_blueprint_background.xml | 6 +- .../ic_acode_blueprint_foreground.xml | 4 +- .../ic_acode_midnight_circuit_background.xml | 6 +- .../ic_acode_midnight_circuit_foreground.xml | 4 +- res/android/drawable/ic_acode_monochrome.xml | 2 +- .../ic_acode_pixel_party_background.xml | 6 +- .../ic_acode_pixel_party_foreground.xml | 6 +- .../drawable/ic_acode_pro_background.xml | 14 + .../drawable/ic_acode_pro_foreground.xml | 47 +++ .../ic_acode_solar_flare_background.xml | 6 +- .../ic_acode_solar_flare_foreground.xml | 4 +- .../ic_acode_terminal_glow_background.xml | 6 +- .../ic_acode_terminal_glow_foreground.xml | 4 +- .../mipmap-anydpi-v26/ic_acode_pro.xml | 6 + .../mipmap-anydpi-v26/ic_acode_pro_round.xml | 6 + src/dialogs/confirm.js | 45 ++- src/handlers/purchase.js | 8 +- src/lang/ar-ye.json | 6 +- src/lang/be-by.json | 6 +- src/lang/bn-bd.json | 6 +- src/lang/cs-cz.json | 6 +- src/lang/de-de.json | 6 +- src/lang/en-us.json | 6 +- src/lang/es-sv.json | 6 +- src/lang/fr-fr.json | 6 +- src/lang/he-il.json | 6 +- src/lang/hi-in.json | 6 +- src/lang/hu-hu.json | 6 +- src/lang/id-id.json | 6 +- src/lang/index.d.ts | 4 + src/lang/ir-fa.json | 6 +- src/lang/it-it.json | 6 +- src/lang/ja-jp.json | 6 +- src/lang/ko-kr.json | 6 +- src/lang/ml-in.json | 6 +- src/lang/mm-unicode.json | 6 +- src/lang/mm-zawgyi.json | 6 +- src/lang/pl-pl.json | 6 +- src/lang/pt-br.json | 6 +- src/lang/pu-in.json | 6 +- src/lang/ru-ru.json | 6 +- src/lang/tl-ph.json | 6 +- src/lang/tr-tr.json | 6 +- src/lang/uk-ua.json | 6 +- src/lang/uz-uz.json | 6 +- src/lang/vi-vn.json | 6 +- src/lang/zh-cn.json | 6 +- src/lang/zh-hant.json | 6 +- src/lang/zh-tw.json | 6 +- src/lib/adRewards.js | 105 ++---- src/lib/appIconSelection.js | 61 ++++ src/lib/appIcons.js | 6 + src/lib/removeAds.js | 154 ++++++-- src/lib/rewardedAd.js | 120 ++++++ src/pages/appIconSetting/appIconSetting.js | 53 ++- .../admob/src/android/cordova/AdMob.kt | 9 + .../admob/src/android/cordova/Generated.kt | 1 + .../admob/src/android/cordova/ads/Rewarded.kt | 14 + src/plugins/admob/src/www/ads/base.ts | 21 +- src/plugins/admob/src/www/ads/rewarded.ts | 5 + src/plugins/admob/src/www/common.ts | 1 + src/plugins/admob/www/admob.js | 32 +- .../android/com/foxdebug/system/System.java | 1 + src/settings/mainSettings.js | 48 +-- tests/admob/adRewards.test.js | 73 ++++ tests/admob/rewardedAd.test.js | 342 ++++++++++++++++++ tests/unit/androidPrepare.test.js | 76 ++++ tests/unit/appIconSelection.test.js | 170 +++++++++ tests/unit/confirm.test.js | 117 ++++++ tests/unit/removeAds.test.js | 171 +++++++++ www/icons/ic_acode_aurora_pulse.svg | 4 +- www/icons/ic_acode_blueprint.svg | 4 +- www/icons/ic_acode_default.svg | 2 +- www/icons/ic_acode_midnight_circuit.svg | 4 +- www/icons/ic_acode_pixel_party.svg | 6 +- www/icons/ic_acode_pro.svg | 29 ++ www/icons/ic_acode_solar_flare.svg | 4 +- www/icons/ic_acode_terminal_glow.svg | 4 +- 83 files changed, 1797 insertions(+), 336 deletions(-) create mode 100644 res/android/drawable/ic_acode_pro_background.xml create mode 100644 res/android/drawable/ic_acode_pro_foreground.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_pro.xml create mode 100644 res/android/mipmap-anydpi-v26/ic_acode_pro_round.xml create mode 100644 src/lib/appIconSelection.js create mode 100644 src/lib/rewardedAd.js create mode 100644 tests/admob/adRewards.test.js create mode 100644 tests/admob/rewardedAd.test.js create mode 100644 tests/unit/androidPrepare.test.js create mode 100644 tests/unit/appIconSelection.test.js create mode 100644 tests/unit/confirm.test.js create mode 100644 tests/unit/removeAds.test.js create mode 100644 www/icons/ic_acode_pro.svg diff --git a/config.xml b/config.xml index d71d196c30..45838a5aa0 100644 --- a/config.xml +++ b/config.xml @@ -93,6 +93,20 @@ + + + + + + + =8.0.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -8830,42 +8815,6 @@ "node": ">=4" } }, - "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, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/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, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -10678,17 +10627,17 @@ } }, "node_modules/minimizer-webpack-plugin": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz", - "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.10.0.tgz", + "integrity": "sha512-2//60T4S0X1Ug/dqLDOgDaGlZsN1Lv8hf8oB0NOV/KIHSaXlPwXBBIbim79dE2Z7NEs52ES8YHoSv6Lmsk+XNg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.31", "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" + "schema-utils": "^4.3.3", + "terser": "^5.51.0" }, "engines": { "node": ">= 10.13.0" @@ -10704,6 +10653,9 @@ "@minify-html/node": { "optional": true }, + "@napi-rs/image": { + "optional": true + }, "@swc/core": { "optional": true }, @@ -10728,12 +10680,21 @@ "html-minifier-terser": { "optional": true }, + "imagemin": { + "optional": true + }, "lightningcss": { "optional": true }, "postcss": { "optional": true }, + "sharp": { + "optional": true + }, + "svgo": { + "optional": true + }, "uglify-js": { "optional": true } @@ -13036,9 +12997,9 @@ } }, "node_modules/terser": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.50.0.tgz", - "integrity": "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==", + "version": "5.51.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz", + "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -13699,9 +13660,9 @@ "license": "MIT" }, "node_modules/webpack": { - "version": "5.109.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", - "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", + "version": "5.110.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.110.3.tgz", + "integrity": "sha512-GuizBzRvo9YPpyoNMf3ag7AzxbaW85qrRSqTha345KyJbAFPt3/cMzBM0h+RWg7SK/7DdzRLINP3LvQ0hvr4hg==", "dev": true, "license": "MIT", "peer": true, @@ -13716,11 +13677,10 @@ "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.24.4", "es-module-lexer": "^2.1.0", - "eslint-scope": "5.1.1", "events": "^3.2.0", "graceful-fs": "^4.2.11", "mime-db": "^1.54.0", - "minimizer-webpack-plugin": "^5.6.1", + "minimizer-webpack-plugin": "^5.7.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", diff --git a/res/android/drawable/ic_acode_aurora_pulse_background.xml b/res/android/drawable/ic_acode_aurora_pulse_background.xml index ce30f7f4c3..8a22a85ce9 100644 --- a/res/android/drawable/ic_acode_aurora_pulse_background.xml +++ b/res/android/drawable/ic_acode_aurora_pulse_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -36,4 +39,5 @@ + diff --git a/res/android/drawable/ic_acode_aurora_pulse_foreground.xml b/res/android/drawable/ic_acode_aurora_pulse_foreground.xml index 99dbb87b8d..be024ec1ed 100644 --- a/res/android/drawable/ic_acode_aurora_pulse_foreground.xml +++ b/res/android/drawable/ic_acode_aurora_pulse_foreground.xml @@ -5,13 +5,13 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + diff --git a/res/android/drawable/ic_acode_blueprint_background.xml b/res/android/drawable/ic_acode_blueprint_background.xml index 11b508de04..a5d145a4f7 100644 --- a/res/android/drawable/ic_acode_blueprint_background.xml +++ b/res/android/drawable/ic_acode_blueprint_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -18,4 +21,5 @@ + diff --git a/res/android/drawable/ic_acode_blueprint_foreground.xml b/res/android/drawable/ic_acode_blueprint_foreground.xml index d48af39543..cadd5f8c44 100644 --- a/res/android/drawable/ic_acode_blueprint_foreground.xml +++ b/res/android/drawable/ic_acode_blueprint_foreground.xml @@ -5,13 +5,13 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + diff --git a/res/android/drawable/ic_acode_midnight_circuit_background.xml b/res/android/drawable/ic_acode_midnight_circuit_background.xml index 0ef755aa3b..523498c8a9 100644 --- a/res/android/drawable/ic_acode_midnight_circuit_background.xml +++ b/res/android/drawable/ic_acode_midnight_circuit_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -21,4 +24,5 @@ + diff --git a/res/android/drawable/ic_acode_midnight_circuit_foreground.xml b/res/android/drawable/ic_acode_midnight_circuit_foreground.xml index 42de5c1761..f5a20b48e5 100644 --- a/res/android/drawable/ic_acode_midnight_circuit_foreground.xml +++ b/res/android/drawable/ic_acode_midnight_circuit_foreground.xml @@ -5,13 +5,13 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + diff --git a/res/android/drawable/ic_acode_monochrome.xml b/res/android/drawable/ic_acode_monochrome.xml index 38536a8a9a..7efafe6edf 100644 --- a/res/android/drawable/ic_acode_monochrome.xml +++ b/res/android/drawable/ic_acode_monochrome.xml @@ -5,7 +5,7 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + diff --git a/res/android/drawable/ic_acode_pixel_party_background.xml b/res/android/drawable/ic_acode_pixel_party_background.xml index 2a5fc569c7..885b6071b2 100644 --- a/res/android/drawable/ic_acode_pixel_party_background.xml +++ b/res/android/drawable/ic_acode_pixel_party_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -18,4 +21,5 @@ + diff --git a/res/android/drawable/ic_acode_pixel_party_foreground.xml b/res/android/drawable/ic_acode_pixel_party_foreground.xml index 2898db06e5..e4de7dcaa6 100644 --- a/res/android/drawable/ic_acode_pixel_party_foreground.xml +++ b/res/android/drawable/ic_acode_pixel_party_foreground.xml @@ -5,19 +5,19 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + - + diff --git a/res/android/drawable/ic_acode_pro_background.xml b/res/android/drawable/ic_acode_pro_background.xml new file mode 100644 index 0000000000..17de912b4f --- /dev/null +++ b/res/android/drawable/ic_acode_pro_background.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_pro_foreground.xml b/res/android/drawable/ic_acode_pro_foreground.xml new file mode 100644 index 0000000000..0681f914bd --- /dev/null +++ b/res/android/drawable/ic_acode_pro_foreground.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/android/drawable/ic_acode_solar_flare_background.xml b/res/android/drawable/ic_acode_solar_flare_background.xml index 6f9589c538..d087b0ef40 100644 --- a/res/android/drawable/ic_acode_solar_flare_background.xml +++ b/res/android/drawable/ic_acode_solar_flare_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -18,4 +21,5 @@ + diff --git a/res/android/drawable/ic_acode_solar_flare_foreground.xml b/res/android/drawable/ic_acode_solar_flare_foreground.xml index 06eeca1ad2..f6dca5d8fe 100644 --- a/res/android/drawable/ic_acode_solar_flare_foreground.xml +++ b/res/android/drawable/ic_acode_solar_flare_foreground.xml @@ -5,13 +5,13 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + diff --git a/res/android/drawable/ic_acode_terminal_glow_background.xml b/res/android/drawable/ic_acode_terminal_glow_background.xml index afd79b72b2..36c8d69d38 100644 --- a/res/android/drawable/ic_acode_terminal_glow_background.xml +++ b/res/android/drawable/ic_acode_terminal_glow_background.xml @@ -5,7 +5,10 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + + + @@ -18,4 +21,5 @@ + diff --git a/res/android/drawable/ic_acode_terminal_glow_foreground.xml b/res/android/drawable/ic_acode_terminal_glow_foreground.xml index ee65cf2ef5..ea4edbb646 100644 --- a/res/android/drawable/ic_acode_terminal_glow_foreground.xml +++ b/res/android/drawable/ic_acode_terminal_glow_foreground.xml @@ -5,13 +5,13 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + - + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_pro.xml b/res/android/mipmap-anydpi-v26/ic_acode_pro.xml new file mode 100644 index 0000000000..0ba93a08ee --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_pro.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/android/mipmap-anydpi-v26/ic_acode_pro_round.xml b/res/android/mipmap-anydpi-v26/ic_acode_pro_round.xml new file mode 100644 index 0000000000..0ba93a08ee --- /dev/null +++ b/res/android/mipmap-anydpi-v26/ic_acode_pro_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/dialogs/confirm.js b/src/dialogs/confirm.js index e42e360458..d9d187a0cf 100644 --- a/src/dialogs/confirm.js +++ b/src/dialogs/confirm.js @@ -3,16 +3,26 @@ import DOMPurify from "dompurify"; import actionStack from "lib/actionStack"; import restoreTheme from "lib/restoreTheme"; +let nextConfirmId = 0; + /** * Confirm dialog box * @param {string} titleText Title text * @param {string} [message] Alert message * @param {boolean} [isHTML] Whether the message is HTML - * @param {{checkboxText?: string, returnState?: boolean}} [options] + * @param {{checkboxText?: string, returnState?: boolean, signal?: AbortSignal}} [options] * @returns {Promise} */ function confirm(titleText, message, isHTML, options = {}) { return new Promise((resolve) => { + if (options.signal?.aborted) { + resolve( + options.returnState ? { confirmed: false, checked: false } : false, + ); + return; + } + const actionId = `confirm-${++nextConfirmId}`; + let closed = false; if (!message && titleText) { message = titleText; titleText = ""; @@ -42,17 +52,11 @@ function confirm(titleText, message, isHTML, options = {}) { }; const okBtn = tag("button", { textContent: strings.ok, - onclick: function () { - hide(); - resolve(getResponse(true)); - }, + onclick: () => close(true), }); const cancelBtn = tag("button", { textContent: strings.cancel, - onclick: function () { - hide(); - resolve(getResponse(false)); - }, + onclick: cancel, }); const confirmDiv = tag("div", { className: "prompt confirm", @@ -71,24 +75,37 @@ function confirm(titleText, message, isHTML, options = {}) { }); actionStack.push({ - id: "confirm", - action: hideAlert, + id: actionId, + action: cancel, }); app.append(confirmDiv, mask); restoreTheme(true); + options.signal?.addEventListener("abort", cancel, { once: true }); + + function cancel() { + close(false); + } + + function close(confirmed) { + if (closed) return; + closed = true; + options.signal?.removeEventListener("abort", cancel); + hide(); + resolve(getResponse(confirmed)); + } function hideAlert() { confirmDiv.classList.add("hide"); restoreTheme(); setTimeout(() => { - app.removeChild(confirmDiv); - app.removeChild(mask); + confirmDiv.remove(); + mask.remove(); }, 300); } function hide() { - actionStack.remove("confirm"); + actionStack.remove(actionId); hideAlert(); } }); diff --git a/src/handlers/purchase.js b/src/handlers/purchase.js index 394ab9eb6c..980258eba5 100644 --- a/src/handlers/purchase.js +++ b/src/handlers/purchase.js @@ -3,7 +3,11 @@ import helpers from "utils/helpers"; export default function purchaseListener(onpurchase, onerror) { return [ (purchases) => { - const [purchase] = purchases; + const purchase = purchases?.[0]; + if (!purchase) { + onerror?.(strings.failed); + return; + } if (purchase.purchaseState === iap.PURCHASE_STATE_PURCHASED) { if (!purchase.isAcknowledged) { iap.acknowledgePurchase( @@ -36,7 +40,7 @@ export default function purchaseListener(onpurchase, onerror) { } let message = - error === iap.USER_CANCELED ? strings.failed : strings.canceled; + error === iap.USER_CANCELED ? strings.canceled : strings.failed; if (typeof onerror === "function") onerror(message); }, diff --git a/src/lang/ar-ye.json b/src/lang/ar-ye.json index 473b04bcda..e96e78e135 100644 --- a/src/lang/ar-ye.json +++ b/src/lang/ar-ye.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "هل تريد مشاهدة إعلان بمكافأة لتطبيق أيقونة التطبيق هذه؟", + "rewarded ad unavailable": "الإعلانات بمكافأة غير متاحة الآن. يُرجى المحاولة مرة أخرى.", + "rewarded ad failed": "تعذر إكمال الإعلان. يُرجى المحاولة مرة أخرى.", + "rewarded ad incomplete": "شاهد الإعلان حتى النهاية للحصول على المكافأة." } diff --git a/src/lang/be-by.json b/src/lang/be-by.json index d66afe7c82..6cddef6f07 100644 --- a/src/lang/be-by.json +++ b/src/lang/be-by.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Паглядзець рэкламу з узнагародай, каб ужыць гэты значок праграмы?", + "rewarded ad unavailable": "Рэклама з узнагародай зараз недаступная. Паспрабуйце яшчэ раз.", + "rewarded ad failed": "Не ўдалося завяршыць прагляд рэкламы. Паспрабуйце яшчэ раз.", + "rewarded ad incomplete": "Даглядзіце рэкламу да канца, каб атрымаць узнагароду." } diff --git a/src/lang/bn-bd.json b/src/lang/bn-bd.json index 43e6fb41d7..166738aff1 100644 --- a/src/lang/bn-bd.json +++ b/src/lang/bn-bd.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "এই অ্যাপ আইকনটি প্রয়োগ করতে একটি পুরস্কারযুক্ত বিজ্ঞাপন দেখবেন?", + "rewarded ad unavailable": "পুরস্কারযুক্ত বিজ্ঞাপন এখন উপলভ্য নেই। অনুগ্রহ করে আবার চেষ্টা করুন।", + "rewarded ad failed": "বিজ্ঞাপনটি সম্পূর্ণ করা যায়নি। অনুগ্রহ করে আবার চেষ্টা করুন।", + "rewarded ad incomplete": "পুরস্কার পেতে বিজ্ঞাপনটি সম্পূর্ণ দেখুন।" } diff --git a/src/lang/cs-cz.json b/src/lang/cs-cz.json index 4fd8d00241..69a1605a87 100644 --- a/src/lang/cs-cz.json +++ b/src/lang/cs-cz.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Chcete zhlédnout reklamu s odměnou a použít tuto ikonu aplikace?", + "rewarded ad unavailable": "Reklamy s odměnou nejsou nyní dostupné. Zkuste to znovu.", + "rewarded ad failed": "Reklamu se nepodařilo dokončit. Zkuste to znovu.", + "rewarded ad incomplete": "Pro získání odměny zhlédněte reklamu až do konce." } diff --git a/src/lang/de-de.json b/src/lang/de-de.json index caf309f716..1efd40fe58 100644 --- a/src/lang/de-de.json +++ b/src/lang/de-de.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Eine belohnte Anzeige ansehen, um dieses App-Symbol anzuwenden?", + "rewarded ad unavailable": "Belohnte Anzeigen sind derzeit nicht verfügbar. Bitte versuche es erneut.", + "rewarded ad failed": "Die Anzeige konnte nicht abgeschlossen werden. Bitte versuche es erneut.", + "rewarded ad incomplete": "Sieh dir die Anzeige bis zum Ende an, um die Belohnung zu erhalten." } diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 95ddfa20fa..53063bc74c 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -838,5 +838,9 @@ "managed": "Managed", "acode service": "Acode Service", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Watch one rewarded ad to apply this app icon?", + "rewarded ad unavailable": "Rewarded ads are unavailable right now. Please try again.", + "rewarded ad failed": "The ad could not be completed. Please try again.", + "rewarded ad incomplete": "Finish watching the ad to earn the reward." } diff --git a/src/lang/es-sv.json b/src/lang/es-sv.json index 3b6b47ab87..2147ba35fe 100644 --- a/src/lang/es-sv.json +++ b/src/lang/es-sv.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "¿Ver un anuncio con recompensa para aplicar este icono de la aplicación?", + "rewarded ad unavailable": "Los anuncios con recompensa no están disponibles en este momento. Inténtalo de nuevo.", + "rewarded ad failed": "No se pudo completar el anuncio. Inténtalo de nuevo.", + "rewarded ad incomplete": "Termina de ver el anuncio para obtener la recompensa." } diff --git a/src/lang/fr-fr.json b/src/lang/fr-fr.json index 832f1e77b6..ac2403ef35 100644 --- a/src/lang/fr-fr.json +++ b/src/lang/fr-fr.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Regarder une publicité récompensée pour appliquer cette icône d’application ?", + "rewarded ad unavailable": "Les publicités récompensées sont indisponibles pour le moment. Réessayez.", + "rewarded ad failed": "La publicité n’a pas pu être terminée. Réessayez.", + "rewarded ad incomplete": "Regardez la publicité jusqu’à la fin pour obtenir la récompense." } diff --git a/src/lang/he-il.json b/src/lang/he-il.json index 8c9e736a04..56b2071a6e 100644 --- a/src/lang/he-il.json +++ b/src/lang/he-il.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "לצפות בפרסומת מתגמלת כדי להחיל את סמל האפליקציה הזה?", + "rewarded ad unavailable": "פרסומות מתגמלות אינן זמינות כרגע. יש לנסות שוב.", + "rewarded ad failed": "לא ניתן היה להשלים את הפרסומת. יש לנסות שוב.", + "rewarded ad incomplete": "יש לצפות בפרסומת עד הסוף כדי לקבל את התגמול." } diff --git a/src/lang/hi-in.json b/src/lang/hi-in.json index bc5f49c45d..a26d5eaae9 100644 --- a/src/lang/hi-in.json +++ b/src/lang/hi-in.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "कॉपी करते टाइम एक्सक्लूज़न्स अप्लाई करें", "settings-info-app-use-file-operation-exclusions": "कॉपी और पेस्ट ऑपरेशन्स के दौरान एक्सक्लूज़न पैटर्न्स से मैच करने वाले फ़ाइल्स और फ़ोल्डर्स स्किप कर।", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "क्या इस ऐप आइकन को लागू करने के लिए इनाम वाला एक विज्ञापन देखना चाहते हैं?", + "rewarded ad unavailable": "इनाम वाले विज्ञापन अभी उपलब्ध नहीं हैं। कृपया फिर से कोशिश करें।", + "rewarded ad failed": "विज्ञापन पूरा नहीं हो सका। कृपया फिर से कोशिश करें।", + "rewarded ad incomplete": "इनाम पाने के लिए विज्ञापन पूरा देखें।" } diff --git a/src/lang/hu-hu.json b/src/lang/hu-hu.json index 208bdb9148..086b82bb69 100644 --- a/src/lang/hu-hu.json +++ b/src/lang/hu-hu.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Kizárások használata másoláskor", "settings-info-app-use-file-operation-exclusions": "A kizárási mintáknak megfelelő fájlok és mappák kihagyása másoláskor és beillesztéskor.", "horizontal scroll margin": "Vízszintes görgetési margó", - "settings-info-horizontal-scroll-margin": "A leghosszabb sor után egy üres hely lesz hozzáadva a képernyő széléhez, ha a sorok tördelése ki van kapcsolva. Adjon meg egy nem negatív egész pixelértéket." + "settings-info-horizontal-scroll-margin": "A leghosszabb sor után egy üres hely lesz hozzáadva a képernyő széléhez, ha a sorok tördelése ki van kapcsolva. Adjon meg egy nem negatív egész pixelértéket.", + "confirm app icon reward": "Megnézel egy jutalmazott hirdetést az alkalmazásikon beállításához?", + "rewarded ad unavailable": "A jutalmazott hirdetések jelenleg nem érhetők el. Próbáld újra.", + "rewarded ad failed": "A hirdetést nem sikerült befejezni. Próbáld újra.", + "rewarded ad incomplete": "Nézd végig a hirdetést a jutalom megszerzéséhez." } diff --git a/src/lang/id-id.json b/src/lang/id-id.json index 056e56d11e..dd62d02bb0 100644 --- a/src/lang/id-id.json +++ b/src/lang/id-id.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Terapkan pengecualian saat menyalin", "settings-info-app-use-file-operation-exclusions": "Lewati file dan folder yang cocok dengan pola pengecualian selama operasi salin dan tempel.", "horizontal scroll margin": "Margin gulir horizontal", - "settings-info-horizontal-scroll-margin": "Menambahkan ruang kosong setelah baris terpanjang saat pembungkusan kata (word wrap) nonaktif. Masukkan nilai piksel utuh non-negatif apa pun." + "settings-info-horizontal-scroll-margin": "Menambahkan ruang kosong setelah baris terpanjang saat pembungkusan kata (word wrap) nonaktif. Masukkan nilai piksel utuh non-negatif apa pun.", + "confirm app icon reward": "Tonton satu iklan berhadiah untuk menerapkan ikon aplikasi ini?", + "rewarded ad unavailable": "Iklan berhadiah saat ini tidak tersedia. Silakan coba lagi.", + "rewarded ad failed": "Iklan tidak dapat diselesaikan. Silakan coba lagi.", + "rewarded ad incomplete": "Tonton iklan hingga selesai untuk mendapatkan hadiah." } diff --git a/src/lang/index.d.ts b/src/lang/index.d.ts index ad4f4e7c91..84a5387d7c 100644 --- a/src/lang/index.d.ts +++ b/src/lang/index.d.ts @@ -842,6 +842,10 @@ declare type LangStrings = { "acode service": string; "horizontal scroll margin": string; "settings-info-horizontal-scroll-margin": string; + "confirm app icon reward": string; + "rewarded ad unavailable": string; + "rewarded ad failed": string; + "rewarded ad incomplete": string; }; declare var strings: LangStrings; diff --git a/src/lang/ir-fa.json b/src/lang/ir-fa.json index 6a2cd28e9f..c1ef78a612 100644 --- a/src/lang/ir-fa.json +++ b/src/lang/ir-fa.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "برای اعمال این نماد برنامه، یک تبلیغ پاداش‌دار تماشا می‌کنید؟", + "rewarded ad unavailable": "تبلیغات پاداش‌دار در حال حاضر در دسترس نیستند. لطفاً دوباره تلاش کنید.", + "rewarded ad failed": "تبلیغ کامل نشد. لطفاً دوباره تلاش کنید.", + "rewarded ad incomplete": "برای دریافت پاداش، تبلیغ را تا پایان تماشا کنید." } diff --git a/src/lang/it-it.json b/src/lang/it-it.json index 773406b7f4..775c346e91 100644 --- a/src/lang/it-it.json +++ b/src/lang/it-it.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Guardare un annuncio con ricompensa per applicare questa icona dell’app?", + "rewarded ad unavailable": "Gli annunci con ricompensa non sono disponibili al momento. Riprova.", + "rewarded ad failed": "Non è stato possibile completare l’annuncio. Riprova.", + "rewarded ad incomplete": "Guarda l’annuncio fino alla fine per ottenere la ricompensa." } diff --git a/src/lang/ja-jp.json b/src/lang/ja-jp.json index e6cd76ce51..326b525fc2 100644 --- a/src/lang/ja-jp.json +++ b/src/lang/ja-jp.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "リワード広告を1本視聴して、このアプリアイコンを適用しますか?", + "rewarded ad unavailable": "現在リワード広告を利用できません。もう一度お試しください。", + "rewarded ad failed": "広告を完了できませんでした。もう一度お試しください。", + "rewarded ad incomplete": "報酬を獲得するには、広告を最後まで視聴してください。" } diff --git a/src/lang/ko-kr.json b/src/lang/ko-kr.json index 59b042f120..b24526e9f9 100644 --- a/src/lang/ko-kr.json +++ b/src/lang/ko-kr.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "보상형 광고 한 편을 시청하고 이 앱 아이콘을 적용할까요?", + "rewarded ad unavailable": "현재 보상형 광고를 이용할 수 없습니다. 다시 시도해 주세요.", + "rewarded ad failed": "광고를 완료하지 못했습니다. 다시 시도해 주세요.", + "rewarded ad incomplete": "보상을 받으려면 광고를 끝까지 시청하세요." } diff --git a/src/lang/ml-in.json b/src/lang/ml-in.json index cdb382f146..cc44821d8f 100644 --- a/src/lang/ml-in.json +++ b/src/lang/ml-in.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "ഈ ആപ്പ് ഐക്കൺ ഉപയോഗിക്കാൻ പ്രതിഫലമുള്ള ഒരു പരസ്യം കാണണോ?", + "rewarded ad unavailable": "പ്രതിഫലമുള്ള പരസ്യങ്ങൾ ഇപ്പോൾ ലഭ്യമല്ല. ദയവായി വീണ്ടും ശ്രമിക്കുക.", + "rewarded ad failed": "പരസ്യം പൂർത്തിയാക്കാനായില്ല. ദയവായി വീണ്ടും ശ്രമിക്കുക.", + "rewarded ad incomplete": "പ്രതിഫലം ലഭിക്കാൻ പരസ്യം മുഴുവനായി കാണുക." } diff --git a/src/lang/mm-unicode.json b/src/lang/mm-unicode.json index 5d129f6a0d..2c0ca208c0 100644 --- a/src/lang/mm-unicode.json +++ b/src/lang/mm-unicode.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "ဤအက်ပ်အိုင်ကွန်ကို အသုံးပြုရန် ဆုရကြော်ငြာတစ်ခုကို ကြည့်မလား။", + "rewarded ad unavailable": "ဆုရကြော်ငြာများကို လောလောဆယ် မရနိုင်ပါ။ ထပ်မံကြိုးစားပါ။", + "rewarded ad failed": "ကြော်ငြာကို အဆုံးအထိ မပြသနိုင်ခဲ့ပါ။ ထပ်မံကြိုးစားပါ။", + "rewarded ad incomplete": "ဆုရရှိရန် ကြော်ငြာကို အဆုံးအထိ ကြည့်ပါ။" } diff --git a/src/lang/mm-zawgyi.json b/src/lang/mm-zawgyi.json index 15a20628ff..0e9f1b919e 100644 --- a/src/lang/mm-zawgyi.json +++ b/src/lang/mm-zawgyi.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "ဤအက္ပ္အိုင္ကြန္ကို အသုံးျပဳရန္ ဆုရေၾကာ္ျငာတစ္ခုကို ၾကည့္မလား။", + "rewarded ad unavailable": "ဆုရေၾကာ္ျငာမ်ားကို ေလာေလာဆယ္ မရႏိုင္ပါ။ ထပ္မံႀကိဳးစားပါ။", + "rewarded ad failed": "ေၾကာ္ျငာကို အဆုံးအထိ မျပသႏိုင္ခဲ့ပါ။ ထပ္မံႀကိဳးစားပါ။", + "rewarded ad incomplete": "ဆုရရွိရန္ ေၾကာ္ျငာကို အဆုံးအထိ ၾကည့္ပါ။" } diff --git a/src/lang/pl-pl.json b/src/lang/pl-pl.json index 08c033ef7d..843821641a 100644 --- a/src/lang/pl-pl.json +++ b/src/lang/pl-pl.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Obejrzeć reklamę z nagrodą, aby zastosować tę ikonę aplikacji?", + "rewarded ad unavailable": "Reklamy z nagrodą są teraz niedostępne. Spróbuj ponownie.", + "rewarded ad failed": "Nie udało się ukończyć reklamy. Spróbuj ponownie.", + "rewarded ad incomplete": "Obejrzyj reklamę do końca, aby otrzymać nagrodę." } diff --git a/src/lang/pt-br.json b/src/lang/pt-br.json index bfa58da503..6ac0faea49 100644 --- a/src/lang/pt-br.json +++ b/src/lang/pt-br.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Assistir a um anúncio com recompensa para aplicar este ícone do aplicativo?", + "rewarded ad unavailable": "Os anúncios com recompensa estão indisponíveis no momento. Tente novamente.", + "rewarded ad failed": "Não foi possível concluir o anúncio. Tente novamente.", + "rewarded ad incomplete": "Assista ao anúncio até o fim para receber a recompensa." } diff --git a/src/lang/pu-in.json b/src/lang/pu-in.json index fea22b68f2..c0030f7bb2 100644 --- a/src/lang/pu-in.json +++ b/src/lang/pu-in.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "ਕੀ ਇਸ ਐਪ ਆਈਕਨ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਇੱਕ ਇਨਾਮ ਵਾਲਾ ਇਸ਼ਤਿਹਾਰ ਦੇਖਣਾ ਹੈ?", + "rewarded ad unavailable": "ਇਨਾਮ ਵਾਲੇ ਇਸ਼ਤਿਹਾਰ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", + "rewarded ad failed": "ਇਸ਼ਤਿਹਾਰ ਪੂਰਾ ਨਹੀਂ ਹੋ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", + "rewarded ad incomplete": "ਇਨਾਮ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇਸ਼ਤਿਹਾਰ ਪੂਰਾ ਦੇਖੋ।" } diff --git a/src/lang/ru-ru.json b/src/lang/ru-ru.json index 032234b11a..3fa063c1db 100644 --- a/src/lang/ru-ru.json +++ b/src/lang/ru-ru.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Посмотреть рекламу с вознаграждением, чтобы применить этот значок приложения?", + "rewarded ad unavailable": "Реклама с вознаграждением сейчас недоступна. Повторите попытку.", + "rewarded ad failed": "Не удалось завершить просмотр рекламы. Повторите попытку.", + "rewarded ad incomplete": "Досмотрите рекламу до конца, чтобы получить награду." } diff --git a/src/lang/tl-ph.json b/src/lang/tl-ph.json index cb4698d93b..2d9d72f94c 100644 --- a/src/lang/tl-ph.json +++ b/src/lang/tl-ph.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Manood ng isang ad na may gantimpala upang gamitin ang icon na ito ng app?", + "rewarded ad unavailable": "Hindi available ngayon ang mga ad na may gantimpala. Pakisubukang muli.", + "rewarded ad failed": "Hindi nakumpleto ang ad. Pakisubukang muli.", + "rewarded ad incomplete": "Tapusin ang panonood ng ad upang makuha ang gantimpala." } diff --git a/src/lang/tr-tr.json b/src/lang/tr-tr.json index f0a5b2faa8..407ca5a8dc 100644 --- a/src/lang/tr-tr.json +++ b/src/lang/tr-tr.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Bu uygulama simgesini kullanmak için bir ödüllü reklam izlensin mi?", + "rewarded ad unavailable": "Ödüllü reklamlar şu anda kullanılamıyor. Lütfen tekrar deneyin.", + "rewarded ad failed": "Reklam tamamlanamadı. Lütfen tekrar deneyin.", + "rewarded ad incomplete": "Ödülü kazanmak için reklamı sonuna kadar izleyin." } diff --git a/src/lang/uk-ua.json b/src/lang/uk-ua.json index 983a7630f7..d4817eb12a 100644 --- a/src/lang/uk-ua.json +++ b/src/lang/uk-ua.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Переглянути рекламу з винагородою, щоб застосувати цю піктограму застосунку?", + "rewarded ad unavailable": "Реклама з винагородою зараз недоступна. Спробуйте ще раз.", + "rewarded ad failed": "Не вдалося завершити перегляд реклами. Спробуйте ще раз.", + "rewarded ad incomplete": "Додивіться рекламу до кінця, щоб отримати винагороду." } diff --git a/src/lang/uz-uz.json b/src/lang/uz-uz.json index 3d0e77b3c1..da3c2725e4 100644 --- a/src/lang/uz-uz.json +++ b/src/lang/uz-uz.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Ushbu ilova belgisini qo‘llash uchun bitta mukofotli reklamani ko‘rasizmi?", + "rewarded ad unavailable": "Mukofotli reklamalar hozir mavjud emas. Qayta urinib ko‘ring.", + "rewarded ad failed": "Reklamani yakunlab bo‘lmadi. Qayta urinib ko‘ring.", + "rewarded ad incomplete": "Mukofotni olish uchun reklamani oxirigacha tomosha qiling." } diff --git a/src/lang/vi-vn.json b/src/lang/vi-vn.json index 69a9fcc1ed..69f567b7ac 100644 --- a/src/lang/vi-vn.json +++ b/src/lang/vi-vn.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "Xem một quảng cáo có thưởng để áp dụng biểu tượng ứng dụng này?", + "rewarded ad unavailable": "Quảng cáo có thưởng hiện không khả dụng. Vui lòng thử lại.", + "rewarded ad failed": "Không thể hoàn tất quảng cáo. Vui lòng thử lại.", + "rewarded ad incomplete": "Xem hết quảng cáo để nhận phần thưởng." } diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index 9e80d2ef52..aaf2d0813f 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "复制时应用排除项", "settings-info-app-use-file-operation-exclusions": "在复制和粘贴操作期间,跳过符合排除规则的文件和文件夹。", "horizontal scroll margin": "水平滚动边距", - "settings-info-horizontal-scroll-margin": "在关闭自动换行时,为最长行的末尾添加空白区域。请输入任意非负整数的像素值。" + "settings-info-horizontal-scroll-margin": "在关闭自动换行时,为最长行的末尾添加空白区域。请输入任意非负整数的像素值。", + "confirm app icon reward": "观看一条激励广告以应用此应用图标?", + "rewarded ad unavailable": "激励广告暂时不可用,请重试。", + "rewarded ad failed": "广告未能完成,请重试。", + "rewarded ad incomplete": "请完整观看广告以获得奖励。" } diff --git a/src/lang/zh-hant.json b/src/lang/zh-hant.json index f71439ad9f..bf2ac76f22 100644 --- a/src/lang/zh-hant.json +++ b/src/lang/zh-hant.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "複製時應用排除項", "settings-info-app-use-file-operation-exclusions": "在複製和粘貼操作期間,跳過符合排除規則的文件和文件夾。", "horizontal scroll margin": "水平滾動邊距", - "settings-info-horizontal-scroll-margin": "在關閉自動換行時,爲最長行的末尾添加空白區域。請輸入任意非負整數的像素值。" + "settings-info-horizontal-scroll-margin": "在關閉自動換行時,爲最長行的末尾添加空白區域。請輸入任意非負整數的像素值。", + "confirm app icon reward": "觀看一則獎勵廣告以套用此應用程式圖示?", + "rewarded ad unavailable": "獎勵廣告暫時無法使用,請再試一次。", + "rewarded ad failed": "廣告未能完成,請再試一次。", + "rewarded ad incomplete": "請完整觀看廣告以獲得獎勵。" } diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index 947f624e2e..1204930d69 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -838,5 +838,9 @@ "apply exclusions when copying": "Apply exclusions when copying", "settings-info-app-use-file-operation-exclusions": "Skip files and folders matching the exclusion patterns during copy and paste operations.", "horizontal scroll margin": "Horizontal scroll margin", - "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value." + "settings-info-horizontal-scroll-margin": "Adds empty space after the longest line when word wrap is off. Enter any non-negative whole-pixel value.", + "confirm app icon reward": "觀看一則獎勵廣告以套用此應用程式圖示?", + "rewarded ad unavailable": "獎勵廣告目前無法使用,請再試一次。", + "rewarded ad failed": "廣告未能完成,請再試一次。", + "rewarded ad incomplete": "請完整觀看廣告以獲得獎勵。" } diff --git a/src/lib/adRewards.js b/src/lib/adRewards.js index b5b0b22e48..459226dd79 100644 --- a/src/lib/adRewards.js +++ b/src/lib/adRewards.js @@ -3,13 +3,15 @@ import { createRewardStateLifecycle, isRewardPassActive, } from "./adRewardBannerPolicy.mjs"; -import auth from "./auth"; import config from "./config"; +import showRewardedAd, { + isRewardedAdSupported, + isWatchingRewardedAd, +} from "./rewardedAd"; import secureAdRewardState from "./secureAdRewardState"; -import { adUnitIdRewarded, setBannerSuppressed } from "./startAd"; +import { setBannerSuppressed } from "./startAd"; const ONE_HOUR = 60 * 60 * 1000; -const REWARDED_RESULT_TIMEOUT_MS = 90 * 1000; const OFFERS = [ { @@ -153,78 +155,19 @@ async function getRewardIdentity() { } } -async function createRewardedAd(offer, step, sessionId) { - if (!admob?.RewardedAd) { - throw new Error("Rewarded ads are not available in this build."); - } - - const userId = await getRewardIdentity(); - const customData = [ - `session=${sessionId}`, - `offer=${offer.id}`, - `step=${step}`, - `ads=${offer.adsRequired}`, - ].join("&"); - - return new admob.RewardedAd({ - adUnitId: adUnitIdRewarded, +async function showRewardedStep(offer, step, sessionId) { + const earned = await showRewardedAd({ serverSideVerification: { - userId, - customData, + userId: await getRewardIdentity(), + customData: [ + `session=${sessionId}`, + `offer=${offer.id}`, + `step=${step}`, + `ads=${offer.adsRequired}`, + ].join("&"), }, }); -} - -function waitForRewardedResult(ad) { - return new Promise((resolve, reject) => { - let earned = false; - let settled = false; - const timeoutId = setTimeout(() => { - fail( - new Error("Rewarded ad timed out before completion. Please try again."), - ); - }, REWARDED_RESULT_TIMEOUT_MS); - - const finish = (result) => { - if (settled) return; - settled = true; - clearTimeout(timeoutId); - resolve(result); - }; - - const fail = (error) => { - if (settled) return; - settled = true; - clearTimeout(timeoutId); - reject( - error instanceof Error - ? error - : new Error(error?.message || "Rewarded ad failed."), - ); - }; - - ad.on("reward", () => { - earned = true; - }); - - ad.on("dismiss", () => { - finish({ earned }); - }); - - ad.on("showfail", fail); - ad.on("loadfail", fail); - }); -} - -async function showRewardedStep(offer, step, sessionId) { - const rewardedAd = await createRewardedAd(offer, step, sessionId); - const resultPromise = waitForRewardedResult(rewardedAd); - await rewardedAd.load(); - await rewardedAd.show(); - const result = await resultPromise; - if (!result.earned) { - throw new Error("Reward not earned. The ad was closed before completion."); - } + if (!earned) throw new Error(strings["rewarded ad incomplete"]); } export default { @@ -285,13 +228,13 @@ export default { return Boolean(!config.HAS_PRO && !this.isAdFreeActive()); }, isRewardedSupported() { - return Boolean(!config.HAS_PRO && admob?.RewardedAd && adUnitIdRewarded); + return isRewardedAdSupported(); }, getRewardedUnavailableReason() { if (config.HAS_PRO) { return "Ads are already disabled on this build."; } - if (!admob?.RewardedAd) { + if (!isRewardedAdSupported()) { return "Rewarded ads are unavailable on this device."; } return ""; @@ -303,7 +246,7 @@ export default { }; }, isWatchingReward() { - return Boolean(activeWatchPromise); + return Boolean(activeWatchPromise) || isWatchingRewardedAd(); }, async watchOffer(offerId, { onStep } = {}) { if (activeWatchPromise) { @@ -318,18 +261,18 @@ export default { throw new Error(this.getRewardedUnavailableReason()); } - await rewardLifecycle.refresh({ notifyExpiry: false }); - const redemptionStatus = this.canRedeemNow(); - if (!redemptionStatus.ok) { - throw new Error(redemptionStatus.reason); - } - const sessionId = typeof crypto?.randomUUID === "function" ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).slice(2, 10)}`; activeWatchPromise = (async () => { + await rewardLifecycle.refresh({ notifyExpiry: false }); + const redemptionStatus = this.canRedeemNow(); + if (!redemptionStatus.ok) { + throw new Error(redemptionStatus.reason); + } + for (let step = 1; step <= offer.adsRequired; step += 1) { onStep?.({ step, diff --git a/src/lib/appIconSelection.js b/src/lib/appIconSelection.js new file mode 100644 index 0000000000..feced46132 --- /dev/null +++ b/src/lib/appIconSelection.js @@ -0,0 +1,61 @@ +import toast from "components/toast"; +import confirm from "dialogs/confirm"; +import helpers from "utils/helpers"; +import adRewards from "./adRewards"; +import { APP_ICONS } from "./appIcons"; +import config from "./config"; +import { requestProPurchase } from "./removeAds"; +import showRewardedAd from "./rewardedAd"; +import appSettings from "./settings"; + +// Also exclude a newly opened picker while an earlier native change is pending. +let selecting = false; + +export default function createAppIconSelection({ signal, onBusy, onChange }) { + return async function selectIcon(iconId) { + const icon = APP_ICONS.find(({ id }) => id === iconId); + if (!icon || selecting || signal.aborted) return; + if (iconId === (appSettings.value.appIcon || "default")) return; + + selecting = true; + onBusy(true); + try { + if (icon.requiresPro && !config.HAS_PRO) { + await requestProPurchase({ signal }); + return; + } + if (iconId !== "default" && adRewards.canShowAds()) { + const confirmed = await confirm( + strings["app icon"], + strings["confirm app icon reward"], + false, + { signal }, + ); + if (!confirmed || signal.aborted) return; + // Pro or a pass may have become active while confirmation was open. + if (adRewards.canShowAds()) { + const earned = await showRewardedAd({ signal }); + if (signal.aborted) return; + if (!earned) { + toast(strings["rewarded ad incomplete"]); + return; + } + } + } + if (signal.aborted || (icon.requiresPro && !config.HAS_PRO)) return; + await helpers.promisify(system.setAppIcon, iconId); + // Once Android has applied the change, keep persisted state in sync + // even if the picker closed while the native callback was in flight. + await appSettings.update({ appIcon: iconId }, false); + if (!signal.aborted) { + onChange(); + toast(strings["app icon changed"]); + } + } catch (error) { + if (!signal.aborted) helpers.error(error); + } finally { + selecting = false; + if (!signal.aborted) onBusy(false); + } + }; +} diff --git a/src/lib/appIcons.js b/src/lib/appIcons.js index 44c3343815..3ad3737683 100644 --- a/src/lib/appIcons.js +++ b/src/lib/appIcons.js @@ -8,6 +8,12 @@ // Update system.java map too if this is updated export const APP_ICONS = [ { id: "default", label: "Default", image: "icons/ic_acode_default.svg" }, + { + id: "pro", + label: "Acode Pro", + image: "icons/ic_acode_pro.svg", + requiresPro: true, + }, { id: "midnight_circuit", label: "Midnight Circuit", diff --git a/src/lib/removeAds.js b/src/lib/removeAds.js index b825b7aeb0..fcb0bcb3b9 100644 --- a/src/lib/removeAds.js +++ b/src/lib/removeAds.js @@ -1,36 +1,138 @@ +import toast from "components/toast"; +import confirm from "dialogs/confirm"; +import loader from "dialogs/loader"; import purchaseListener from "handlers/purchase"; -import config from "./config.js"; -import { BANNER_SUPPRESSION_REASON, setBannerSuppressed } from "./startAd.js"; +import helpers from "utils/helpers"; +import auth from "./auth"; +import config from "./config"; +import customTab from "./customTab"; +import { BANNER_SUPPRESSION_REASON, setBannerSuppressed } from "./startAd"; -/** - * Remove ads after purchase - * @returns {Promise} - */ -export default function removeAds() { - return new Promise((resolve, reject) => { - iap.getProducts(["acode_pro_new"], (products) => { - const [product] = products; +let activePurchase = null; +let activeRequest = null; - iap.setPurchaseUpdatedListener(...purchaseListener(onpurchase, reject)); +function enablePro() { + config.HAS_PRO = true; + setBannerSuppressed(BANNER_SUPPRESSION_REASON.PRO, true); +} - iap.purchase( - product.productId, - (code) => { - // ignore - }, - (err) => { - alert(strings.error, err); +/** Purchase Pro through Play billing. Resolves only after purchase confirmation. */ +export default function removeAds({ signal } = {}) { + if (signal?.aborted) return Promise.reject(strings.canceled); + if (activePurchase) return activePurchase; + activePurchase = new Promise((resolve, reject) => { + let settled = false; + let launched = false; + let purchased = false; + function cancel() { + if (!launched) fail(strings.canceled); + } + function fail(error) { + if (settled) return; + settled = true; + signal?.removeEventListener("abort", cancel); + reject(error); + } + function onpurchase() { + // A pending purchase can be confirmed after the caller has settled. + if (purchased) return; + purchased = true; + settled = true; + signal?.removeEventListener("abort", cancel); + enablePro(); + // The cache is reverified by the existing startup purchase checks. + try { + localStorage.setItem("acode_pro", "true"); + } catch (error) { + console.warn("Unable to cache Pro purchase", error); + } + toast(strings["thank you :)"]); + resolve(); + } + signal?.addEventListener("abort", cancel, { once: true }); + try { + iap.getProducts( + ["acode_pro_new"], + (products) => { + if (settled) return; + try { + const product = products?.find( + ({ productId }) => productId === "acode_pro_new", + ); + if (!product) return fail(strings["no-product-info"]); + iap.setPurchaseUpdatedListener( + ...purchaseListener(onpurchase, fail), + ); + launched = true; + iap.purchase(product.productId, () => {}, fail); + } catch (error) { + fail(error); + } }, + fail, ); - }); + } catch (error) { + fail(error); + } + }).finally(() => { + activePurchase = null; + }); + return activePurchase; +} - function onpurchase() { - resolve(null); - // For caching, later verified so no need to worry about - localStorage.setItem("acode_pro", "true"); - config.HAS_PRO = true; - setBannerSuppressed(BANNER_SUPPRESSION_REASON.PRO, true); - toast(strings["thank you :)"]); +/** Reuse the Remove ads entry point; external checkout completes via its intent. */ +export function requestProPurchase({ signal } = {}) { + if (signal?.aborted) return Promise.resolve(false); + if (config.HAS_PRO) return Promise.resolve(true); + if (activeRequest) return activeRequest; + activeRequest = (async () => { + if (!helpers.shouldAllowExternalPurchase()) { + try { + await removeAds({ signal }); + return config.HAS_PRO; + } catch (error) { + if ( + error === strings.canceled || + error === globalThis.iap?.USER_CANCELED + ) + return false; + throw error; + } + } + + loader.create(strings.login, strings["loading..."]); + try { + let user = await auth.getLoggedInUser(); + if (signal?.aborted) return false; + if (!user) { + // Dismiss the modal loader so Android Back can cancel confirmation. + loader.destroy(); + const confirmed = await confirm( + strings.confirm, + strings["confirm-login"], + false, + { signal }, + ); + if (!confirmed || signal?.aborted) return false; + loader.create(strings.login, strings["loading..."]); + await auth.login(); + if (signal?.aborted) return false; + user = await auth.getLoggedInUser(); + } + if (signal?.aborted) return false; + if (!user) throw new Error(strings.failed); + if (user.acode_pro) { + enablePro(); + return true; + } + } finally { + loader.destroy(); } + if (signal?.aborted) return false; + await customTab(`${config.BASE_URL}/pro?redirect=app`); + return config.HAS_PRO; + })().finally(() => { + activeRequest = null; }); + return activeRequest; } diff --git a/src/lib/rewardedAd.js b/src/lib/rewardedAd.js new file mode 100644 index 0000000000..fcb375b6e5 --- /dev/null +++ b/src/lib/rewardedAd.js @@ -0,0 +1,120 @@ +import config from "./config"; +import startAd, { + adUnitIdRewarded, + getPrivacyState, + initialized, +} from "./startAd"; + +const RESULT_TIMEOUT_MS = 90_000; +let active = false; +let nextId = 0; + +export function isRewardedAdSupported() { + return Boolean( + !config.HAS_PRO && + typeof admob !== "undefined" && + admob.RewardedAd && + window.ANDROID_SDK_INT >= 29 && + adUnitIdRewarded, + ); +} + +export function isWatchingRewardedAd() { + return active; +} + +/** Show one reward, without granting an ad-free pass or applying its reward. */ +export default function showRewardedAd({ + serverSideVerification, + signal, +} = {}) { + if (signal?.aborted) return Promise.resolve(false); + if (active || !isRewardedAdSupported()) { + return Promise.reject(new Error(strings["rewarded ad unavailable"])); + } + active = true; + return new Promise((resolve, reject) => { + let earned = false; + let settled = false; + let presenting = false; + let cleaned = false; + const unsubscribe = []; + const timeout = setTimeout( + () => finish(new Error(strings["rewarded ad failed"])), + RESULT_TIMEOUT_MS, + ); + + function cleanup() { + // A cancelled/timed-out caller must not allow another full-screen ad + // until the native ad actually dismisses (show() resolves on opening). + if (presenting || cleaned) return; + cleaned = true; + for (const off of unsubscribe.splice(0)) off(); + active = false; + } + + function finish(error, result = false) { + if (!settled) { + settled = true; + clearTimeout(timeout); + signal?.removeEventListener("abort", cancel); + if (error) reject(error); + else resolve(result); + } + cleanup(); + } + + function cancel() { + finish(null); + } + + signal?.addEventListener("abort", cancel, { once: true }); + void (async () => { + await startAd(); + if (settled) return; + if ( + !isRewardedAdSupported() || + !initialized || + !getPrivacyState().canRequestAds + ) { + throw new Error(strings["rewarded ad unavailable"]); + } + const ad = new admob.RewardedAd({ + id: `acode-reward-${++nextId}`, + adUnitId: adUnitIdRewarded, + ...(serverSideVerification ? { serverSideVerification } : {}), + }); + unsubscribe.push( + ad.on("reward", () => { + if (!settled) earned = true; + }), + ad.on("dismiss", () => { + presenting = false; + finish(null, earned && !signal?.aborted); + }), + ad.on("showfail", () => { + presenting = false; + finish(new Error(strings["rewarded ad failed"])); + }), + ad.on("loadfail", () => + finish(new Error(strings["rewarded ad failed"])), + ), + () => { + void ad.destroy().catch((error) => { + console.warn("Failed to destroy rewarded ad", error); + }); + }, + ); + await ad.load(); + if (settled) return; + presenting = true; + if ((await ad.show()) === false) { + presenting = false; + finish(new Error(strings["rewarded ad failed"])); + } + })().catch(() => { + presenting = false; + finish(new Error(strings["rewarded ad failed"])); + }); + }); +} diff --git a/src/pages/appIconSetting/appIconSetting.js b/src/pages/appIconSetting/appIconSetting.js index f532a7b0d3..1d4afadffd 100644 --- a/src/pages/appIconSetting/appIconSetting.js +++ b/src/pages/appIconSetting/appIconSetting.js @@ -1,8 +1,10 @@ import "./appIconSetting.scss"; import Page from "components/page"; +import loader from "dialogs/loader"; import Ref from "html-tag-js/ref"; import actionStack from "lib/actionStack"; -import { APP_ICONS, getAppIconLabel } from "lib/appIcons"; +import createAppIconSelection from "lib/appIconSelection"; +import { APP_ICONS } from "lib/appIcons"; import appSettings from "lib/settings"; import helpers from "utils/helpers"; @@ -10,6 +12,21 @@ export default function appIconSetting() { const title = strings["app icon"] || "App icon"; const $page = Page(title); const $list = Ref(); + const controller = new AbortController(); + let busy = false; + const selectIcon = createAppIconSelection({ + signal: controller.signal, + onBusy(value) { + busy = value; + if (value) loader.showTitleLoader(); + else loader.removeTitleLoader(); + $list.el.setAttribute("aria-busy", String(value)); + for (const button of $list.el.querySelectorAll("button")) { + button.disabled = value; + } + }, + onChange: renderIcons, + }); let resolve; $page.classList.add("app-icon-page"); @@ -17,11 +34,13 @@ export default function appIconSetting() { id: "appIcon", action: () => { $page.hide(); - $page.removeEventListener("click", clickHandler); }, }); $page.onhide = () => { + controller.abort(); + loader.removeTitleLoader(); + $page.removeEventListener("click", clickHandler); actionStack.remove("appIcon"); resolve(); }; @@ -47,6 +66,8 @@ export default function appIconSetting() { className={`app-icon-item ${isCurrent ? "current" : ""}`} data-icon={icon.id} type="button" + disabled={busy} + aria-pressed={String(isCurrent)} > {icon.label} @@ -63,32 +84,4 @@ export default function appIconSetting() { const iconId = $target.dataset.icon; await selectIcon(iconId); } - - async function selectIcon(iconId) { - const current = appSettings.value.appIcon || "default"; - - if (iconId === current) return; - - try { - await new Promise((resolve, reject) => { - system.setAppIcon( - iconId, - async () => { - try { - await appSettings.update({ appIcon: iconId }); - renderIcons(); - resolve(); - } catch (error) { - reject(error); - } - }, - (error) => { - reject(error); - }, - ); - }); - } catch (error) { - helpers.error(error); - } - } } diff --git a/src/plugins/admob/src/android/cordova/AdMob.kt b/src/plugins/admob/src/android/cordova/AdMob.kt index 52ecec35d8..b3f459b728 100644 --- a/src/plugins/admob/src/android/cordova/AdMob.kt +++ b/src/plugins/admob/src/android/cordova/AdMob.kt @@ -45,6 +45,7 @@ class AdMob : CordovaPlugin() { Actions.START to ::executeStart, Actions.CONFIGURE to ::executeConfigure, Actions.AD_CREATE to ::executeAdCreate, + Actions.AD_DESTROY to ::executeAdDestroy, Actions.AD_IS_LOADED to ::executeAdIsLoaded, Actions.AD_LOAD to ::executeAdLoad, Actions.AD_SHOW to ::executeAdShow, @@ -140,6 +141,14 @@ class AdMob : CordovaPlugin() { } ?: ctx.reject("ad cls is missing") } + private fun executeAdDestroy(ctx: ExecuteContext) { + val id = ctx.optId() ?: return ctx.reject("id is required") + cordova.activity.runOnUiThread { + ads[id]?.onDestroy() + ctx.resolve() + } + } + private fun executeAdIsLoaded(ctx: ExecuteContext) { cordova.activity.runOnUiThread { ctx.optAdOrReject()?.let { ad -> diff --git a/src/plugins/admob/src/android/cordova/Generated.kt b/src/plugins/admob/src/android/cordova/Generated.kt index 53b3e11bde..20db58553e 100644 --- a/src/plugins/admob/src/android/cordova/Generated.kt +++ b/src/plugins/admob/src/android/cordova/Generated.kt @@ -3,6 +3,7 @@ package admob.plus.cordova object Actions { const val AD_CREATE = "adCreate" + const val AD_DESTROY = "adDestroy" const val AD_HIDE = "adHide" const val AD_IS_LOADED = "adIsLoaded" const val AD_LOAD = "adLoad" diff --git a/src/plugins/admob/src/android/cordova/ads/Rewarded.kt b/src/plugins/admob/src/android/cordova/ads/Rewarded.kt index 89a7a9dce1..545c5240d6 100644 --- a/src/plugins/admob/src/android/cordova/ads/Rewarded.kt +++ b/src/plugins/admob/src/android/cordova/ads/Rewarded.kt @@ -26,21 +26,35 @@ fun buildServerSideVerificationOptions(opts: JSONObject): ServerSideVerification class Rewarded(ctx: ExecuteContext) : AdBase(ctx) { private var mAd: RewardedAd? = null + private var destroyed = false + private var pendingLoad: ExecuteContext? = null + override fun onDestroy() { + if (destroyed) return + destroyed = true + pendingLoad?.reject("Ad is destroyed") + pendingLoad = null clear() super.onDestroy() } override fun load(ctx: ExecuteContext) { + if (destroyed) return ctx.reject("Ad is destroyed") + pendingLoad?.reject("Ad load replaced") + pendingLoad = ctx clear() RewardedAd.load(plugin.activity, adUnitId, adRequest, object : RewardedAdLoadCallback() { override fun onAdFailedToLoad(loadAdError: LoadAdError) { + if (destroyed || pendingLoad !== ctx) return + pendingLoad = null mAd = null emit(Events.AD_LOAD_FAIL, loadAdError) ctx.reject(loadAdError.toString()) } override fun onAdLoaded(rewardedAd: RewardedAd) { + if (destroyed || pendingLoad !== ctx) return + pendingLoad = null mAd = rewardedAd rewardedAd.onPaidEventListener = paidEventListener("rewarded") { rewardedAd.responseInfo } diff --git a/src/plugins/admob/src/www/ads/base.ts b/src/plugins/admob/src/www/ads/base.ts index 35395e0697..b9fab64dc9 100644 --- a/src/plugins/admob/src/www/ads/base.ts +++ b/src/plugins/admob/src/www/ads/base.ts @@ -19,6 +19,8 @@ export class MobileAd { protected readonly opts: T; private _initPromise: ReturnType | undefined; + private _destroyPromise: Promise | undefined; + private _destroyed = false; constructor(opts: T) { this.opts = opts; @@ -79,13 +81,30 @@ export class MobileAd { return execAsync("adHide", [{ id: this.id }]); } + protected destroy(): Promise { + if (this._destroyPromise) return this._destroyPromise; + this._destroyed = true; + if (MobileAd.allAds[this.id] === this) delete MobileAd.allAds[this.id]; + this._destroyPromise = (async () => { + // Creation may already be in flight; dispose only after it settles. + if (this._initPromise) { + await this._initPromise; + await execAsync("adDestroy", [{ id: this.id }]); + } + })(); + return this._destroyPromise; + } + protected async init() { + if (this._destroyed) throw new Error("Ad is destroyed"); // biome-ignore lint/suspicious/noAssignInExpressions: - return (this._initPromise ??= this._init()); + await (this._initPromise ??= this._init()); + if (this._destroyed) throw new Error("Ad is destroyed"); } private async _init() { await admob.start(); + if (this._destroyed) return; const cls = (this.constructor as unknown as { cls?: string }).cls ?? diff --git a/src/plugins/admob/src/www/ads/rewarded.ts b/src/plugins/admob/src/www/ads/rewarded.ts index 9f1b853e0c..c26ac659ce 100644 --- a/src/plugins/admob/src/www/ads/rewarded.ts +++ b/src/plugins/admob/src/www/ads/rewarded.ts @@ -23,4 +23,9 @@ export class RewardedAd extends MobileAd { public show() { return super.show(); } + + /** Release an Android rewarded ad after dismissal or before presentation. */ + public destroy() { + return super.destroy(); + } } diff --git a/src/plugins/admob/src/www/common.ts b/src/plugins/admob/src/www/common.ts index bdd8ef81ae..a3c0f0e133 100644 --- a/src/plugins/admob/src/www/common.ts +++ b/src/plugins/admob/src/www/common.ts @@ -2,6 +2,7 @@ export const CordovaService = "AdMob"; export type CordovaAction = | "adCreate" + | "adDestroy" | "adHide" | "adIsLoaded" | "adLoad" diff --git a/src/plugins/admob/www/admob.js b/src/plugins/admob/www/admob.js index a586f5832a..3dc046dac2 100644 --- a/src/plugins/admob/www/admob.js +++ b/src/plugins/admob/www/admob.js @@ -81,6 +81,7 @@ function execAsync(action, args) { class MobileAd { constructor(opts) { var _a; + this._destroyed = false; this.opts = opts; this.id = (_a = opts.id) !== null && _a !== void 0 ? _a : opts.adUnitId; MobileAd.allAds[this.id] = this; @@ -137,17 +138,38 @@ class MobileAd { return execAsync("adHide", [{ id: this.id }]); }); } + destroy() { + if (this._destroyPromise) + return this._destroyPromise; + this._destroyed = true; + if (MobileAd.allAds[this.id] === this) + delete MobileAd.allAds[this.id]; + this._destroyPromise = (() => __awaiter(this, void 0, void 0, function* () { + // Creation may already be in flight; dispose only after it settles. + if (this._initPromise) { + yield this._initPromise; + yield execAsync("adDestroy", [{ id: this.id }]); + } + }))(); + return this._destroyPromise; + } init() { - var _a; return __awaiter(this, void 0, void 0, function* () { + var _a; + if (this._destroyed) + throw new Error("Ad is destroyed"); // biome-ignore lint/suspicious/noAssignInExpressions: - return ((_a = this._initPromise) !== null && _a !== void 0 ? _a : (this._initPromise = this._init())); + yield ((_a = this._initPromise) !== null && _a !== void 0 ? _a : (this._initPromise = this._init())); + if (this._destroyed) + throw new Error("Ad is destroyed"); }); } _init() { - var _a; return __awaiter(this, void 0, void 0, function* () { + var _a; yield admob.start(); + if (this._destroyed) + return; const cls = (_a = this.constructor.cls) !== null && _a !== void 0 ? _a : this.constructor.name; return execAsync("adCreate", [Object.assign(Object.assign({}, this.opts), { id: this.id, cls })]); }); @@ -318,6 +340,10 @@ class RewardedAd extends MobileAd { show() { return super.show(); } + /** Release an Android rewarded ad after dismissal or before presentation. */ + destroy() { + return super.destroy(); + } } RewardedAd.cls = "RewardedAd"; diff --git a/src/plugins/system/android/com/foxdebug/system/System.java b/src/plugins/system/android/com/foxdebug/system/System.java index 094c4eab6d..53e0f6a6e7 100644 --- a/src/plugins/system/android/com/foxdebug/system/System.java +++ b/src/plugins/system/android/com/foxdebug/system/System.java @@ -81,6 +81,7 @@ public class System extends CordovaPlugin { static { Map aliases = new HashMap<>(); aliases.put("default", "MainActivityIconDefault"); + aliases.put("pro", "MainActivityIconPro"); aliases.put("midnight_circuit", "MainActivityIconMidnightCircuit"); aliases.put("aurora_pulse", "MainActivityIconAuroraPulse"); aliases.put("terminal_glow", "MainActivityIconTerminalGlow"); diff --git a/src/settings/mainSettings.js b/src/settings/mainSettings.js index 2946f57c72..d43a866ca4 100644 --- a/src/settings/mainSettings.js +++ b/src/settings/mainSettings.js @@ -1,14 +1,11 @@ import settingsPage from "components/settingsPage"; import confirm from "dialogs/confirm"; -import loader from "dialogs/loader"; import rateBox from "dialogs/rateBox"; import actionStack from "lib/actionStack"; -import auth from "lib/auth"; import config from "lib/config"; -import customTab from "lib/customTab"; import openFile from "lib/openFile"; import { bindPrivacyChoices } from "lib/privacyChoicesController.mjs"; -import removeAds from "lib/removeAds"; +import { requestProPurchase } from "lib/removeAds"; import appSettings from "lib/settings"; import settings from "lib/settings"; import { showPrivacyOptions, subscribePrivacyState } from "lib/startAd"; @@ -289,48 +286,7 @@ export default function mainSettings() { case "removeads": try { - if (!helpers.shouldAllowExternalPurchase()) { - await removeAds(); - this.remove(); - break; - } - - loader.create(strings.login, strings["loading..."]); - - try { - let user = await auth.getLoggedInUser(); - if (!user) { - const confirmation = await confirm( - strings.confirm, - strings["confirm-login"], - ); - - if (!confirmation) { - return; - } - - loader.show(); - await auth.login(); - - user = await auth.getLoggedInUser(); - } - - if (!user) { - throw new Error("Unable to fetch user"); - } - - if (user.acode_pro) { - this.remove(); - return; - } - } catch (error) { - helpers.error(error); - return; - } finally { - loader.destroy(); - } - - customTab(`${config.BASE_URL}/pro?redirect=app`).catch(helpers.error); + if (await requestProPurchase()) this.remove(); } catch (error) { helpers.error(error); } diff --git a/tests/admob/adRewards.test.js b/tests/admob/adRewards.test.js new file mode 100644 index 0000000000..de4fb1ffa8 --- /dev/null +++ b/tests/admob/adRewards.test.js @@ -0,0 +1,73 @@ +import { afterEach, beforeEach, expect, it, vi } from "vitest"; + +const mocks = vi.hoisted(() => ({ + show: vi.fn(), + getStatus: vi.fn(), + redeem: vi.fn(), + suppress: vi.fn(), +})); +vi.mock("components/toast", () => ({ default: vi.fn() })); +vi.mock("lib/config", () => ({ default: { HAS_PRO: false } })); +vi.mock("lib/rewardedAd", () => ({ + default: mocks.show, + isRewardedAdSupported: () => true, + isWatchingRewardedAd: () => false, +})); +vi.mock("lib/startAd", () => ({ setBannerSuppressed: mocks.suppress })); +vi.mock("lib/secureAdRewardState", () => ({ + default: { getStatus: mocks.getStatus, redeem: mocks.redeem }, +})); +let adRewards; +beforeEach(async () => { + vi.resetModules(); + vi.useFakeTimers(); + vi.clearAllMocks(); + vi.stubGlobal("window", {}); + vi.stubGlobal("user", { id: "test-user" }); + vi.stubGlobal("strings", { "rewarded ad incomplete": "Incomplete" }); + mocks.getStatus.mockResolvedValue({ canRedeem: true }); + mocks.show.mockResolvedValue(true); + mocks.redeem.mockResolvedValue({ + canRedeem: true, + isActive: true, + adFreeUntil: Date.now() + 3_600_000, + appliedDurationMs: 3_600_000, + }); + ({ default: adRewards } = await import("lib/adRewards")); +}); +afterEach(() => { + vi.useRealTimers(); + vi.unstubAllGlobals(); +}); + +it("shares duplicate pass requests during status refresh and preserves step verification", async () => { + let refreshed; + mocks.getStatus.mockImplementationOnce( + () => + new Promise((resolve) => { + refreshed = resolve; + }), + ); + const first = adRewards.watchOffer("focus"); + const duplicate = adRewards.watchOffer("focus"); + refreshed({ canRedeem: true }); + await Promise.all([first, duplicate]); + expect(mocks.show).toHaveBeenCalledTimes(2); + const firstMetadata = mocks.show.mock.calls[0][0].serverSideVerification; + const secondMetadata = mocks.show.mock.calls[1][0].serverSideVerification; + expect(firstMetadata.userId).toBe("test-user"); + expect(firstMetadata.customData).toContain("&offer=focus&step=1&ads=2"); + expect(secondMetadata.customData).toBe( + firstMetadata.customData.replace("step=1", "step=2"), + ); + expect(mocks.redeem).toHaveBeenCalledExactlyOnceWith("focus"); + expect(adRewards.isAdFreeActive()).toBe(true); +}); +it("never grants a pass for an incomplete reward and permits retry", async () => { + mocks.show.mockResolvedValueOnce(false); + await expect(adRewards.watchOffer("quick")).rejects.toThrow("Incomplete"); + expect(mocks.redeem).not.toHaveBeenCalled(); + expect(adRewards.isWatchingReward()).toBe(false); + await adRewards.watchOffer("quick"); + expect(mocks.redeem).toHaveBeenCalledExactlyOnceWith("quick"); +}); diff --git a/tests/admob/rewardedAd.test.js b/tests/admob/rewardedAd.test.js new file mode 100644 index 0000000000..06a726e271 --- /dev/null +++ b/tests/admob/rewardedAd.test.js @@ -0,0 +1,342 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { RewardedAd } from "../../src/plugins/admob/src/www/ads/rewarded"; +const mocks = vi.hoisted(() => ({ + start: vi.fn(), + config: { HAS_PRO: false }, + ready: true, + allowed: true, +})); +vi.mock("lib/config", () => ({ default: mocks.config })); +vi.mock("lib/startAd", () => ({ + default: mocks.start, + adUnitIdRewarded: "test-unit", + get initialized() { + return mocks.ready; + }, + getPrivacyState: () => ({ canRequestAds: mocks.allowed }), +})); +let showRewardedAd; +let instances; +const flush = async () => { + for (let i = 0; i < 8; i++) await Promise.resolve(); +}; +class Ad { + constructor(options) { + this.options = options; + this.id = options.id; + this.listeners = new Map(); + instances.push(this); + } + on(name, listener) { + this.listeners.set(name, listener); + return () => this.listeners.delete(name); + } + emit(name) { + this.listeners.get(name)?.(); + } + load = vi.fn().mockResolvedValue(); + show = vi.fn().mockResolvedValue(); + destroy = vi.fn().mockResolvedValue(); +} +beforeEach(async () => { + vi.resetModules(); + vi.useFakeTimers(); + instances = []; + mocks.config.HAS_PRO = false; + mocks.ready = true; + mocks.allowed = true; + mocks.start.mockReset().mockResolvedValue(); + vi.stubGlobal("window", { ANDROID_SDK_INT: 36 }); + vi.stubGlobal("admob", { RewardedAd: Ad }); + vi.stubGlobal("strings", { + "rewarded ad unavailable": "Unavailable", + "rewarded ad failed": "Failed", + }); + ({ default: showRewardedAd } = await import("lib/rewardedAd")); +}); +afterEach(() => { + vi.restoreAllMocks(); + vi.useRealTimers(); + vi.unstubAllGlobals(); +}); + +describe("shared rewarded ad lifecycle", () => { + it("waits for reward AND dismissal, retaining verification metadata and cleaning listeners", async () => { + const verification = { userId: "guest", customData: "offer=quick&step=1" }; + const done = vi.fn(); + const result = showRewardedAd({ serverSideVerification: verification }); + result.then(done); + await flush(); + const ad = instances[0]; + expect(ad.options.serverSideVerification).toEqual(verification); + expect(ad.options.adUnitId).toBe("test-unit"); + ad.emit("reward"); + await flush(); + expect(done).not.toHaveBeenCalled(); + ad.emit("dismiss"); + await expect(result).resolves.toBe(true); + expect(ad.listeners.size).toBe(0); + expect(ad.destroy).toHaveBeenCalledOnce(); + expect(vi.getTimerCount()).toBe(0); + }); + it.each([ + "dismiss", + "loadfail", + "showfail", + "load rejection", + "show rejection", + "show false", + ])("settles and cleans up on %s", async (event) => { + if (event === "loadfail") + vi.spyOn(Ad.prototype, "on").mockImplementationOnce( + function (name, callback) { + this.load.mockImplementation(async () => { + this.emit("loadfail"); + throw new Error("network"); + }); + this.listeners.set(name, callback); + return () => this.listeners.delete(name); + }, + ); + if (event === "load rejection") + vi.spyOn(Ad.prototype, "on").mockImplementationOnce( + function (name, callback) { + this.load.mockRejectedValue(new Error("network")); + this.listeners.set(name, callback); + return () => this.listeners.delete(name); + }, + ); + if (event === "show rejection") + vi.spyOn(Ad.prototype, "on").mockImplementationOnce( + function (name, callback) { + this.show.mockRejectedValue(new Error("show")); + this.listeners.set(name, callback); + return () => this.listeners.delete(name); + }, + ); + if (event === "show false") + vi.spyOn(Ad.prototype, "on").mockImplementationOnce( + function (name, callback) { + this.show.mockResolvedValue(false); + this.listeners.set(name, callback); + return () => this.listeners.delete(name); + }, + ); + const result = showRewardedAd(); + const assertion = + event === "dismiss" + ? expect(result).resolves.toBe(false) + : expect(result).rejects.toThrow("Failed"); + await flush(); + instances[0].emit(event); + await assertion; + expect(instances[0].listeners.size).toBe(0); + expect(instances[0].destroy).toHaveBeenCalledOnce(); + expect(vi.getTimerCount()).toBe(0); + const retry = showRewardedAd(); + await flush(); + instances[1].emit("reward"); + instances[1].emit("dismiss"); + await expect(retry).resolves.toBe(true); + vi.restoreAllMocks(); + }); + it.each([ + "paid", + "missing SDK", + "unsupported Android", + "no consent", + "not initialized", + ])("does not load ads for %s", async (reason) => { + if (reason === "paid") mocks.config.HAS_PRO = true; + if (reason === "missing SDK") vi.stubGlobal("admob", undefined); + if (reason === "unsupported Android") window.ANDROID_SDK_INT = 28; + if (reason === "no consent") mocks.allowed = false; + if (reason === "not initialized") mocks.ready = false; + await expect(showRewardedAd()).rejects.toThrow(); + expect(instances).toHaveLength(0); + }); + it("cancels loading and ignores late callbacks without unlocking a subsequent ad", async () => { + let finishInit; + mocks.start.mockImplementationOnce( + () => + new Promise((resolve) => { + finishInit = resolve; + }), + ); + const controller = new AbortController(); + const old = showRewardedAd({ signal: controller.signal }); + controller.abort(); + await expect(old).resolves.toBe(false); + const next = showRewardedAd(); + await flush(); + finishInit(); + await flush(); + expect(instances).toHaveLength(1); + await expect(showRewardedAd()).rejects.toThrow("Unavailable"); + instances[0].emit("dismiss"); + await next; + }); + it("holds the full-screen lock after cancellation until native dismissal", async () => { + const controller = new AbortController(); + const result = showRewardedAd({ signal: controller.signal }); + await flush(); + controller.abort(); + await expect(result).resolves.toBe(false); + expect(instances[0].destroy).not.toHaveBeenCalled(); + await expect(showRewardedAd()).rejects.toThrow("Unavailable"); + instances[0].emit("reward"); + instances[0].emit("dismiss"); + const next = showRewardedAd(); + await flush(); + instances[1].emit("dismiss"); + await next; + expect(instances[0].listeners.size).toBe(0); + expect(instances[0].destroy).toHaveBeenCalledOnce(); + }); + it("ignores an abandoned load rejection while a newer ad is active", async () => { + let rejectLoad; + vi.spyOn(Ad.prototype, "on").mockImplementationOnce( + function (name, callback) { + this.load.mockImplementation( + () => + new Promise((resolve, reject) => { + rejectLoad = reject; + }), + ); + this.listeners.set(name, callback); + return () => this.listeners.delete(name); + }, + ); + const controller = new AbortController(); + const old = showRewardedAd({ signal: controller.signal }); + await flush(); + controller.abort(); + await expect(old).resolves.toBe(false); + expect(instances[0].listeners.size).toBe(0); + expect(instances[0].destroy).toHaveBeenCalledOnce(); + const next = showRewardedAd(); + await flush(); + rejectLoad(new Error("Late failure")); + await flush(); + expect(instances[0].show).not.toHaveBeenCalled(); + await expect(showRewardedAd()).rejects.toThrow("Unavailable"); + instances[1].emit("dismiss"); + await next; + vi.restoreAllMocks(); + }); + it("rejects a presentation timeout and ignores late reward and dismissal", async () => { + const result = showRewardedAd(); + const assertion = expect(result).rejects.toThrow("Failed"); + await flush(); + await vi.advanceTimersByTimeAsync(90_000); + await assertion; + await expect(showRewardedAd()).rejects.toThrow("Unavailable"); + expect(instances[0].destroy).not.toHaveBeenCalled(); + instances[0].emit("reward"); + instances[0].emit("dismiss"); + expect(instances[0].listeners.size).toBe(0); + expect(instances[0].destroy).toHaveBeenCalledOnce(); + expect(vi.getTimerCount()).toBe(0); + }); + it("times out initialization and never presents a late ad", async () => { + let complete; + mocks.start.mockImplementation( + () => + new Promise((resolve) => { + complete = resolve; + }), + ); + const result = showRewardedAd(); + const assertion = expect(result).rejects.toThrow("Failed"); + await vi.advanceTimersByTimeAsync(90_000); + await assertion; + complete(); + await flush(); + expect(instances).toHaveLength(0); + expect(vi.getTimerCount()).toBe(0); + }); +}); + +describe("rewarded wrapper disposal", () => { + let calls; + beforeEach(() => { + calls = []; + admob.start = vi.fn().mockResolvedValue(); + vi.stubGlobal("cordova", { + exec: vi.fn((resolve, reject, service, action, args) => { + calls.push({ action, id: args[0].id, resolve, reject }); + if (action !== "adCreate" && action !== "adLoad") resolve(); + }), + }); + }); + it("disposes an unused ad once without creating native resources", async () => { + const ad = new RewardedAd({ id: "unused", adUnitId: "test" }); + expect(window.admobAds.unused).toBe(ad); + const disposed = ad.destroy(); + expect(ad.destroy()).toBe(disposed); + await disposed; + expect(window.admobAds.unused).toBeUndefined(); + expect(calls).toEqual([]); + await expect(ad.load()).rejects.toThrow("Ad is destroyed"); + }); + it.each(["SDK startup", "native creation"])( + "cancels during %s without issuing a late load or show", + async (phase) => { + let started; + if (phase === "SDK startup") { + admob.start.mockImplementation( + () => + new Promise((resolve) => { + started = resolve; + }), + ); + } + const ad = new RewardedAd({ id: "old", adUnitId: "test" }); + const loading = ad.load(); + const rejected = expect(loading).rejects.toThrow("Ad is destroyed"); + await flush(); + const disposed = ad.destroy(); + expect(ad.destroy()).toBe(disposed); + const next = new RewardedAd({ id: "next", adUnitId: "test" }); + if (started) started(); + else calls.find(({ action }) => action === "adCreate").resolve(); + await Promise.all([disposed, rejected]); + expect(calls.filter(({ action }) => action === "adLoad")).toEqual([]); + expect( + calls + .filter(({ action }) => action === "adDestroy") + .map(({ id }) => id), + ).toEqual(["old"]); + expect(window.admobAds.old).toBeUndefined(); + expect(window.admobAds.next).toBe(next); + await expect(ad.show()).rejects.toThrow("Ad is destroyed"); + await next.destroy(); + }, + ); + it("destroys a pending native load and ignores its late completion", async () => { + const ad = new RewardedAd({ id: "loading", adUnitId: "test" }); + const loading = ad.load(); + const rejected = expect(loading).rejects.toThrow("Ad is destroyed"); + await flush(); + calls[0].resolve(); + await flush(); + const load = calls.find(({ action }) => action === "adLoad"); + cordova.exec.mockImplementation( + (resolve, reject, service, action, args) => { + calls.push({ action, id: args[0].id }); + load.reject(new Error("Ad is destroyed")); + resolve(); + }, + ); + await ad.destroy(); + load.resolve(); + await rejected; + await ad.destroy(); + expect(calls.map(({ action }) => action)).toEqual([ + "adCreate", + "adLoad", + "adDestroy", + ]); + expect(window.admobAds.loading).toBeUndefined(); + }); +}); diff --git a/tests/unit/androidPrepare.test.js b/tests/unit/androidPrepare.test.js new file mode 100644 index 0000000000..8f29d5a15a --- /dev/null +++ b/tests/unit/androidPrepare.test.js @@ -0,0 +1,76 @@ +import fs from "node:fs"; +import { createRequire } from "node:module"; +import os from "node:os"; +import path from "node:path"; +import vm from "node:vm"; +import { expect, it } from "vitest"; + +const require = createRequire(import.meta.url); +const hook = fs.readFileSync( + new URL("../../hooks/post-process.js", import.meta.url), + "utf8", +); + +it("refreshes stale System plugin Java alongside icons on repeated Android prepares", () => { + const root = fs.mkdtempSync(path.join(os.tmpdir(), "acode-prepare-")); + const write = (file, content) => { + const target = path.join(root, file); + fs.mkdirSync(path.dirname(target), { recursive: true }); + fs.writeFileSync(target, content); + return target; + }; + try { + write("config.xml", ''); + write("build-extras.gradle", "// build configuration"); + write("res/android/drawable/ic_acode_pro.xml", ""); + const source = write( + "src/plugins/system/android/com/foxdebug/system/System.java", + 'aliases.put("pro", "MainActivityIconPro");', + ); + const generated = write( + "platforms/android/app/src/main/java/com/foxdebug/system/System.java", + 'aliases.put("default", "MainActivityIconDefault");', + ); + const unrelated = write( + "platforms/android/app/src/main/java/other/Plugin.java", + "// other plugin", + ); + const prepare = () => + vm.runInNewContext(hook, { + __dirname: path.join(root, "hooks"), + process: { env: { TMPDIR: root } }, + console: { log() {}, warn() {}, error() {} }, + require(id) { + if (id === "child_process") + return { + execSync(command) { + expect(command).toBe("npm prefix"); + return Buffer.from(root); + }, + }; + return require(id); + }, + }); + prepare(); + expect(fs.readFileSync(generated, "utf8")).toBe( + fs.readFileSync(source, "utf8"), + ); + fs.appendFileSync(source, "\n// subsequent native edit"); + prepare(); + expect(fs.readFileSync(generated, "utf8")).toBe( + fs.readFileSync(source, "utf8"), + ); + expect(fs.readFileSync(unrelated, "utf8")).toBe("// other plugin"); + expect( + fs.readFileSync( + path.join( + root, + "platforms/android/app/src/main/res/drawable/ic_acode_pro.xml", + ), + "utf8", + ), + ).toBe(""); + } finally { + fs.rmSync(root, { recursive: true, force: true }); + } +}); diff --git a/tests/unit/appIconSelection.test.js b/tests/unit/appIconSelection.test.js new file mode 100644 index 0000000000..fc78dfc5b0 --- /dev/null +++ b/tests/unit/appIconSelection.test.js @@ -0,0 +1,170 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; + +const mocks = vi.hoisted(() => ({ + config: { HAS_PRO: false }, + settings: { value: { appIcon: "default" }, update: vi.fn() }, + confirm: vi.fn(), + reward: vi.fn(), + purchase: vi.fn(), + toast: vi.fn(), + error: vi.fn(), + pass: false, +})); +vi.mock("components/toast", () => ({ default: mocks.toast })); +vi.mock("dialogs/confirm", () => ({ default: mocks.confirm })); +vi.mock("lib/config", () => ({ default: mocks.config })); +vi.mock("lib/settings", () => ({ default: mocks.settings })); +vi.mock("lib/adRewards", () => ({ + default: { canShowAds: () => !mocks.config.HAS_PRO && !mocks.pass }, +})); +vi.mock("lib/rewardedAd", () => ({ default: mocks.reward })); +vi.mock("lib/removeAds", () => ({ requestProPurchase: mocks.purchase })); +vi.mock("utils/helpers", () => ({ + default: { + error: mocks.error, + promisify: (fn, ...args) => + new Promise((resolve, reject) => fn(...args, resolve, reject)), + }, +})); +import createAppIconSelection from "lib/appIconSelection"; + +function harness() { + const controller = new AbortController(); + const onBusy = vi.fn(); + const onChange = vi.fn(); + return { + controller, + onBusy, + onChange, + select: createAppIconSelection({ + signal: controller.signal, + onBusy, + onChange, + }), + }; +} +beforeEach(() => { + vi.clearAllMocks(); + mocks.config.HAS_PRO = false; + mocks.pass = false; + mocks.settings.value.appIcon = "default"; + mocks.settings.update.mockImplementation(async ({ appIcon }) => { + mocks.settings.value.appIcon = appIcon; + }); + mocks.confirm.mockResolvedValue(true); + mocks.reward.mockResolvedValue(true); + mocks.purchase.mockResolvedValue(false); + vi.stubGlobal("strings", { + "app icon": "App icon", + "confirm app icon reward": "Watch?", + "app icon changed": "Changed", + "rewarded ad incomplete": "Incomplete", + }); + vi.stubGlobal("system", { setAppIcon: vi.fn((id, success) => success()) }); +}); + +describe("icon selection", () => { + it("opens Pro purchase without watching an ad or applying the locked icon", async () => { + mocks.pass = true; + const h = harness(); + mocks.purchase.mockImplementation(async () => { + mocks.config.HAS_PRO = true; + }); + await h.select("pro"); + expect(mocks.purchase).toHaveBeenCalledOnce(); + expect(mocks.reward).not.toHaveBeenCalled(); + expect(system.setAppIcon).not.toHaveBeenCalled(); + await h.select("pro"); + expect(system.setAppIcon).toHaveBeenCalledWith( + "pro", + expect.any(Function), + expect.any(Function), + ); + }); + it.each([ + "default", + "paid", + "pass", + ])("skips rewarded ads for %s", async (kind) => { + mocks.settings.value.appIcon = "pixel_party"; + mocks.config.HAS_PRO = kind === "paid"; + mocks.pass = kind === "pass"; + await harness().select(kind === "default" ? "default" : "midnight_circuit"); + expect(mocks.confirm).not.toHaveBeenCalled(); + expect(mocks.reward).not.toHaveBeenCalled(); + expect(mocks.settings.update).toHaveBeenCalledOnce(); + expect(mocks.toast).toHaveBeenCalledWith("Changed"); + }); + it("ignores current/unknown icons and serializes confirmation and reward", async () => { + const h = harness(); + await h.select("default"); + await h.select("unknown"); + expect(h.onBusy).not.toHaveBeenCalled(); + let confirm; + mocks.confirm.mockImplementation( + () => + new Promise((resolve) => { + confirm = resolve; + }), + ); + const first = h.select("pixel_party"); + await h.select("solar_flare"); + expect(mocks.confirm).toHaveBeenCalledOnce(); + expect(mocks.reward).not.toHaveBeenCalled(); + confirm(true); + await first; + expect(system.setAppIcon.mock.calls[0][0]).toBe("pixel_party"); + expect(h.onBusy.mock.calls).toEqual([[true], [false]]); + expect(mocks.toast).toHaveBeenCalledTimes(1); + }); + it.each([ + "decline", + "incomplete", + "load failure", + "native failure", + ])("keeps the current selection on %s", async (kind) => { + if (kind === "decline") mocks.confirm.mockResolvedValue(false); + if (kind === "incomplete") mocks.reward.mockResolvedValue(false); + if (kind === "load failure") + mocks.reward.mockRejectedValue(new Error("Unavailable")); + if (kind === "native failure") + system.setAppIcon.mockImplementation((id, ok, fail) => + fail("Native failure"), + ); + const h = harness(); + await h.select("pixel_party"); + expect(mocks.settings.value.appIcon).toBe("default"); + expect(mocks.settings.update).not.toHaveBeenCalled(); + expect(mocks.toast).not.toHaveBeenCalledWith("Changed"); + expect(h.onBusy).toHaveBeenLastCalledWith(false); + if (kind === "decline") expect(mocks.reward).not.toHaveBeenCalled(); + }); + it("ignores a reward received after leaving the picker", async () => { + let finish; + mocks.reward.mockImplementation( + () => + new Promise((resolve) => { + finish = resolve; + }), + ); + const h = harness(); + const pending = h.select("pixel_party"); + await vi.waitFor(() => expect(finish).toBeTypeOf("function")); + h.controller.abort(); + finish(true); + await pending; + expect(system.setAppIcon).not.toHaveBeenCalled(); + expect(h.onChange).not.toHaveBeenCalled(); + expect(mocks.toast).not.toHaveBeenCalled(); + }); + it("does not apply after leaving during confirmation", async () => { + const h = harness(); + mocks.confirm.mockImplementation(async () => { + h.controller.abort(); + return true; + }); + await h.select("pixel_party"); + expect(mocks.reward).not.toHaveBeenCalled(); + expect(system.setAppIcon).not.toHaveBeenCalled(); + }); +}); diff --git a/tests/unit/confirm.test.js b/tests/unit/confirm.test.js new file mode 100644 index 0000000000..0029941e48 --- /dev/null +++ b/tests/unit/confirm.test.js @@ -0,0 +1,117 @@ +import { Window } from "happy-dom"; +import { afterEach, beforeEach, expect, it, vi } from "vitest"; +vi.mock("lib/settings", () => ({ + default: { value: { confirmOnExit: false } }, +})); +vi.mock("lib/restoreTheme", () => ({ default: vi.fn() })); +vi.mock("components/checkbox", () => ({ + default: () => document.createElement("input"), +})); +import confirm from "dialogs/confirm"; +import actionStack from "lib/actionStack"; +let window; +beforeEach(() => { + vi.useFakeTimers(); + vi.clearAllMocks(); + actionStack.setMark(); + window = new Window(); + vi.stubGlobal("document", window.document); + vi.stubGlobal("app", window.document.body); + vi.stubGlobal("strings", { ok: "OK", cancel: "Cancel" }); + vi.stubGlobal("tag", (name, options) => { + const el = document.createElement(name); + for (const [key, value] of Object.entries(options)) { + if (key === "children") el.append(...value); + else if (value !== undefined) el[key] = value; + } + return el; + }); +}); +afterEach(() => { + actionStack.clearFromMark(); + vi.runAllTimers(); + vi.restoreAllMocks(); + vi.useRealTimers(); + vi.unstubAllGlobals(); + window.happyDOM.cancelAsync(); +}); +it.each([ + "back", + "cancel", + "abort", +])("settles %s as cancellation and cleans the dialog", async (method) => { + const controller = new AbortController(); + const result = confirm("Icon", "Watch?", false, { + signal: controller.signal, + }); + if (method === "back") await actionStack.pop(); + if (method === "cancel") document.querySelector("button").click(); + if (method === "abort") controller.abort(); + await expect(result).resolves.toBe(false); + vi.runAllTimers(); + expect(app.children.length).toBe(0); + expect(actionStack.length).toBe(0); +}); +it("preserves checkbox response and ignores subsequent dismissals", async () => { + const push = vi.spyOn(actionStack, "push"); + const remove = vi.spyOn(actionStack, "remove"); + const controller = new AbortController(); + const result = confirm("Icon", "Watch?", false, { + checkboxText: "Remember", + returnState: true, + signal: controller.signal, + }); + document.querySelector("input").checked = true; + document.querySelectorAll("button")[1].click(); + controller.abort(); + push.mock.calls[0][0].action(); + await expect(result).resolves.toEqual({ confirmed: true, checked: true }); + expect(remove).toHaveBeenCalledOnce(); + expect(actionStack.length).toBe(0); +}); + +it.each(["back", "cancel", "ok", "abort"])( + "preserves the lower confirmation's Back handler after %s dismisses the top", + async (method) => { + const firstClosed = vi.fn(); + confirm("First", "First confirmation").then(firstClosed); + const controller = new AbortController(); + const second = confirm("Second", "Second confirmation", false, { + signal: controller.signal, + }); + const top = document.querySelectorAll(".confirm")[1]; + if (method === "back") await actionStack.pop(); + if (method === "cancel") top.querySelector("button").click(); + if (method === "ok") top.querySelectorAll("button")[1].click(); + if (method === "abort") controller.abort(); + await expect(second).resolves.toBe(method === "ok"); + vi.runAllTimers(); + expect(document.querySelectorAll(".confirm")).toHaveLength(1); + expect(actionStack.length).toBe(1); + expect(firstClosed).not.toHaveBeenCalled(); + + await actionStack.pop(); + expect(firstClosed).toHaveBeenCalledExactlyOnceWith(false); + vi.runAllTimers(); + expect(app.children.length).toBe(0); + expect(actionStack.length).toBe(0); + }, +); + +it("preserves the top confirmation when the lower one is aborted", async () => { + const controller = new AbortController(); + const first = confirm("First", "First confirmation", false, { + signal: controller.signal, + }); + const secondClosed = vi.fn(); + confirm("Second", "Second confirmation").then(secondClosed); + controller.abort(); + await expect(first).resolves.toBe(false); + expect(actionStack.length).toBe(1); + expect(secondClosed).not.toHaveBeenCalled(); + await actionStack.pop(); + expect(secondClosed).toHaveBeenCalledExactlyOnceWith(false); + vi.runAllTimers(); + expect(app.children.length).toBe(0); + expect(actionStack.length).toBe(0); +}); diff --git a/tests/unit/removeAds.test.js b/tests/unit/removeAds.test.js new file mode 100644 index 0000000000..cb6fecc7a9 --- /dev/null +++ b/tests/unit/removeAds.test.js @@ -0,0 +1,171 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +const mocks = vi.hoisted(() => ({ + config: { HAS_PRO: false, BASE_URL: "https://acode.app" }, + toast: vi.fn(), + suppress: vi.fn(), + confirm: vi.fn(), + customTab: vi.fn(), + auth: { getLoggedInUser: vi.fn(), login: vi.fn() }, + loader: { create: vi.fn(), show: vi.fn(), destroy: vi.fn() }, + external: false, +})); +vi.mock("components/toast", () => ({ default: mocks.toast })); +vi.mock("dialogs/confirm", () => ({ default: mocks.confirm })); +vi.mock("dialogs/loader", () => ({ default: mocks.loader })); +vi.mock("utils/helpers", () => ({ + default: { + error: vi.fn(), + shouldAllowExternalPurchase: () => mocks.external, + }, +})); +vi.mock("lib/auth", () => ({ default: mocks.auth })); +vi.mock("lib/config", () => ({ default: mocks.config })); +vi.mock("lib/customTab", () => ({ default: mocks.customTab })); +vi.mock("lib/startAd", () => ({ + BANNER_SUPPRESSION_REASON: { PRO: "pro" }, + setBannerSuppressed: mocks.suppress, +})); +import removeAds, { requestProPurchase } from "lib/removeAds"; +let purchaseUpdated; +let purchaseError; +beforeEach(() => { + vi.clearAllMocks(); + mocks.config.HAS_PRO = false; + mocks.external = false; + mocks.auth.getLoggedInUser + .mockReset() + .mockResolvedValue({ acode_pro: false }); + mocks.auth.login.mockResolvedValue(); + mocks.confirm.mockResolvedValue(true); + mocks.customTab.mockResolvedValue(); + vi.stubGlobal("strings", { + "no-product-info": "No product", + "purchase pending": "Pending", + failed: "Failed", + canceled: "Cancelled", + "thank you :)": "Thanks", + "confirm-login": "Login?", + }); + vi.stubGlobal("localStorage", { setItem: vi.fn() }); + vi.stubGlobal("iap", { + USER_CANCELED: 1, + ITEM_ALREADY_OWNED: 7, + PURCHASE_STATE_PURCHASED: 1, + PURCHASE_STATE_PENDING: 2, + getProducts: vi.fn((ids, ok) => ok([{ productId: "acode_pro_new" }])), + setPurchaseUpdatedListener: vi.fn((ok, fail) => { + purchaseUpdated = ok; + purchaseError = fail; + }), + purchase: vi.fn(), + acknowledgePurchase: vi.fn((token, ok) => ok()), + }); +}); + +describe("shared Pro purchase flow", () => { + it.each([ + "empty products", + "product error", + "product exception", + "launch error", + "empty purchase", + "pending", + "cancel", + ])("settles %s without granting Pro", async (kind) => { + if (kind === "empty products") + iap.getProducts.mockImplementation((ids, ok) => ok([])); + if (kind === "product error") + iap.getProducts.mockImplementation((ids, ok, fail) => + fail("Products failed"), + ); + if (kind === "product exception") + iap.getProducts.mockImplementation(() => { + throw new Error("Billing unavailable"); + }); + if (kind === "launch error") + iap.purchase.mockImplementation((id, ok, fail) => fail("Launch failed")); + const pending = removeAds(); + const assertion = expect(pending).rejects.toBeDefined(); + if (kind === "empty purchase") purchaseUpdated([]); + if (kind === "pending") purchaseUpdated([{ purchaseState: 2 }]); + if (kind === "cancel") purchaseError(1); + await assertion; + expect(mocks.config.HAS_PRO).toBe(false); + expect(mocks.suppress).not.toHaveBeenCalled(); + }); + it("shares an active billing request and grants Pro once after acknowledgement", async () => { + const first = removeAds(); + const duplicate = removeAds(); + expect(duplicate).toBe(first); + const value = [ + { purchaseState: 1, isAcknowledged: false, purchaseToken: "test" }, + ]; + purchaseUpdated(value); + await first; + purchaseUpdated(value); + expect(iap.purchase).toHaveBeenCalledOnce(); + expect(mocks.config.HAS_PRO).toBe(true); + expect(mocks.toast).toHaveBeenCalledOnce(); + expect(mocks.suppress).toHaveBeenCalledWith("pro", true); + }); + it("treats cancelled billing as a cancelled request", async () => { + const result = requestProPurchase(); + purchaseError(1); + await expect(result).resolves.toBe(false); + }); + it("honors a later confirmed purchase after reporting its pending state", async () => { + const result = removeAds(); + const assertion = expect(result).rejects.toBe("Pending"); + purchaseUpdated([{ purchaseState: 2 }]); + await assertion; + expect(mocks.config.HAS_PRO).toBe(false); + purchaseUpdated([{ purchaseState: 1, isAcknowledged: true }]); + expect(mocks.config.HAS_PRO).toBe(true); + expect(mocks.toast).toHaveBeenCalledOnce(); + }); + it("cancels pending product lookup and ignores its late result", async () => { + let productsLoaded; + iap.getProducts.mockImplementation((ids, ok) => { + productsLoaded = ok; + }); + const controller = new AbortController(); + const result = requestProPurchase({ signal: controller.signal }); + controller.abort(); + await expect(result).resolves.toBe(false); + productsLoaded([{ productId: "acode_pro_new" }]); + expect(iap.purchase).not.toHaveBeenCalled(); + expect(mocks.config.HAS_PRO).toBe(false); + }); + it("uses the existing external checkout and does not grant Pro merely for opening it", async () => { + mocks.external = true; + await expect(requestProPurchase()).resolves.toBe(false); + expect(mocks.customTab).toHaveBeenCalledWith( + "https://acode.app/pro?redirect=app", + ); + expect(iap.purchase).not.toHaveBeenCalled(); + expect(mocks.loader.destroy).toHaveBeenCalledOnce(); + }); + it("refreshes confirmed account Pro without checkout", async () => { + mocks.external = true; + mocks.auth.getLoggedInUser.mockResolvedValue({ acode_pro: true }); + await expect(requestProPurchase()).resolves.toBe(true); + expect(mocks.config.HAS_PRO).toBe(true); + expect(mocks.customTab).not.toHaveBeenCalled(); + }); + it("honors login cancellation and page closure before checkout", async () => { + mocks.external = true; + mocks.auth.getLoggedInUser.mockResolvedValue(null); + mocks.confirm.mockResolvedValue(false); + await expect(requestProPurchase()).resolves.toBe(false); + expect(mocks.auth.login).not.toHaveBeenCalled(); + const controller = new AbortController(); + mocks.auth.getLoggedInUser.mockImplementation(async () => { + controller.abort(); + return { acode_pro: false }; + }); + await expect( + requestProPurchase({ signal: controller.signal }), + ).resolves.toBe(false); + expect(mocks.customTab).not.toHaveBeenCalled(); + }); +}); diff --git a/www/icons/ic_acode_aurora_pulse.svg b/www/icons/ic_acode_aurora_pulse.svg index f188ae3dde..a5341b80bf 100644 --- a/www/icons/ic_acode_aurora_pulse.svg +++ b/www/icons/ic_acode_aurora_pulse.svg @@ -31,7 +31,7 @@
- - + + diff --git a/www/icons/ic_acode_blueprint.svg b/www/icons/ic_acode_blueprint.svg index 129975a8aa..0c65026b46 100644 --- a/www/icons/ic_acode_blueprint.svg +++ b/www/icons/ic_acode_blueprint.svg @@ -32,7 +32,7 @@ - - + + diff --git a/www/icons/ic_acode_default.svg b/www/icons/ic_acode_default.svg index 751a762f59..8114270ea6 100644 --- a/www/icons/ic_acode_default.svg +++ b/www/icons/ic_acode_default.svg @@ -8,7 +8,7 @@ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="eqleqe3ploak1" - viewBox="0 0 544.369200 452.626030" + viewBox="-57.73621212 -103.60620137 659.84242424 659.84242424" shape-rendering="geometricPrecision" text-rendering="geometricPrecision" version="1.1" diff --git a/www/icons/ic_acode_midnight_circuit.svg b/www/icons/ic_acode_midnight_circuit.svg index 772e82baf2..7de6506f59 100644 --- a/www/icons/ic_acode_midnight_circuit.svg +++ b/www/icons/ic_acode_midnight_circuit.svg @@ -27,7 +27,7 @@ - - + + diff --git a/www/icons/ic_acode_pixel_party.svg b/www/icons/ic_acode_pixel_party.svg index 40e37b72aa..6c5981a6c1 100644 --- a/www/icons/ic_acode_pixel_party.svg +++ b/www/icons/ic_acode_pixel_party.svg @@ -22,8 +22,8 @@ - - - + + + diff --git a/www/icons/ic_acode_pro.svg b/www/icons/ic_acode_pro.svg new file mode 100644 index 0000000000..3eb809143b --- /dev/null +++ b/www/icons/ic_acode_pro.svg @@ -0,0 +1,29 @@ + + Acode Pro app icon + Golden Acode mark on a midnight gradient. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/icons/ic_acode_solar_flare.svg b/www/icons/ic_acode_solar_flare.svg index df2a783193..a5c1b38899 100644 --- a/www/icons/ic_acode_solar_flare.svg +++ b/www/icons/ic_acode_solar_flare.svg @@ -22,7 +22,7 @@ - - + + diff --git a/www/icons/ic_acode_terminal_glow.svg b/www/icons/ic_acode_terminal_glow.svg index f5285aba12..1dbaa40f10 100644 --- a/www/icons/ic_acode_terminal_glow.svg +++ b/www/icons/ic_acode_terminal_glow.svg @@ -27,7 +27,7 @@ - - + +