From e020b64c865191198d474e633f3edfd1315f440b Mon Sep 17 00:00:00 2001 From: Riccardo Balbo Date: Sat, 11 Oct 2025 18:10:45 +0200 Subject: [PATCH] update to latest engine release candidate --- .gitattributes | 2 + .github/workflows/build.yml | 49 +- .gitignore | 13 +- .vscode/launch.json | 18 +- .vscode/settings.json | 15 +- app/build.gradle | 7 +- app/src/main/java/org/ngengine/app/Main.java | 21 +- .../org/ngengine/demo/adc/HudComponent.java | 22 +- .../demo/adc/LoadingScreenComponent.java | 25 +- .../org/ngengine/demo/adc/MapComponent.java | 1 - app/src/main/resources/ngeapp.json | 47 + gradle.properties | 17 +- gradle/libs.versions.toml | 3 +- gradle/libs/android-icon-gen.gradle | 54 + gradle/libs/class-finder.gradle | 231 ++ gradle/libs/props.gradle | 15 + icon.icns | Bin 38722 -> 0 bytes local.properties | 9 +- platform-android/build.gradle | 41 +- platform-android/src/main/AndroidManifest.xml | 7 +- .../platform/AndroidLauncherActivity.java | 12 +- .../platform/AndroidLauncherFragment.java | 308 --- .../drawable-v24/ic_launcher_foreground.xml | 41 +- .../res/drawable/ic_launcher_background.xml | 172 +- .../src/main/res/mipmap-hdpi/.gitkeep | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 8342 bytes .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 2513 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 8342 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 8342 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 5175 -> 0 bytes .../src/main/res/mipmap-mdpi/.gitkeep | 0 .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3997 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 1778 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 3997 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3997 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 3184 -> 0 bytes .../src/main/res/mipmap-xhdpi/.gitkeep | 0 .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 14092 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 3477 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 14092 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 14092 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 7138 -> 0 bytes .../src/main/res/mipmap-xxhdpi/.gitkeep | 0 .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 29720 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 5311 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 29720 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 29720 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 10718 -> 0 bytes .../src/main/res/mipmap-xxxhdpi/.gitkeep | 0 .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 48812 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 6990 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 48812 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 48812 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 14156 -> 0 bytes .../src/main/res/navigation/.gitkeep | 0 .../src/main/res/values-land/.gitkeep | 0 .../src/main/res/values-night/.gitkeep | 0 .../src/main/res/values-v23/.gitkeep | 0 .../src/main/res/values-w1240dp/.gitkeep | 0 .../src/main/res/values-w600dp/.gitkeep | 0 platform-android/src/main/res/values/.gitkeep | 0 platform-desktop/build.gradle | 111 +- .../ngengine/platform/DesktopLauncher.java | 4 +- .../trace/reachability-metadata.json | 156 +- platform-desktop/trace/resource-config.json | 2 +- platform-web/build.gradle | 445 ++++ platform-web/package-lock.json | 2033 +++++++++++++++++ platform-web/package.json | 5 + .../platform/TeaReflectionSupplier.java | 744 ++++++ .../org/ngengine/platform/WebLauncher.java | 21 + .../org.teavm.classlib.ReflectionSupplier | 1 + platform-web/src/main/resources/manifest.json | 13 + release-logging.properties | 11 + settings.gradle | 75 +- 74 files changed, 3862 insertions(+), 889 deletions(-) create mode 100644 app/src/main/resources/ngeapp.json create mode 100644 gradle/libs/android-icon-gen.gradle create mode 100644 gradle/libs/class-finder.gradle create mode 100644 gradle/libs/props.gradle delete mode 100644 icon.icns delete mode 100644 platform-android/src/main/java/org/ngengine/platform/AndroidLauncherFragment.java create mode 100644 platform-android/src/main/res/mipmap-hdpi/.gitkeep create mode 100644 platform-android/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 platform-android/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 platform-android/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 platform-android/src/main/res/mipmap-mdpi/.gitkeep create mode 100644 platform-android/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 platform-android/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 platform-android/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 platform-android/src/main/res/mipmap-xhdpi/.gitkeep create mode 100644 platform-android/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 platform-android/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 platform-android/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 platform-android/src/main/res/mipmap-xxhdpi/.gitkeep create mode 100644 platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/.gitkeep create mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 platform-android/src/main/res/navigation/.gitkeep create mode 100644 platform-android/src/main/res/values-land/.gitkeep create mode 100644 platform-android/src/main/res/values-night/.gitkeep create mode 100644 platform-android/src/main/res/values-v23/.gitkeep create mode 100644 platform-android/src/main/res/values-w1240dp/.gitkeep create mode 100644 platform-android/src/main/res/values-w600dp/.gitkeep create mode 100644 platform-android/src/main/res/values/.gitkeep create mode 100644 platform-web/build.gradle create mode 100644 platform-web/package-lock.json create mode 100644 platform-web/package.json create mode 100644 platform-web/src/main/java/org/ngengine/platform/TeaReflectionSupplier.java create mode 100644 platform-web/src/main/java/org/ngengine/platform/WebLauncher.java create mode 100644 platform-web/src/main/resources/META-INF/services/org.teavm.classlib.ReflectionSupplier create mode 100644 platform-web/src/main/resources/manifest.json create mode 100644 release-logging.properties diff --git a/.gitattributes b/.gitattributes index ff21364..6bc25bc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,8 +3,10 @@ # # Linux start script should use lf /gradlew text eol=lf + # These are Windows script files and should use crlf *.bat text eol=crlf + # Binary files should be left untouched *.jar binary *.bin filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 30c69cc..fbdb198 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,10 +13,6 @@ jobs: steps: - uses: actions/checkout@v3 - with: - lfs: true - fetch-depth: 1 - - name: Set up JDK 21 uses: actions/setup-java@v3 @@ -35,6 +31,37 @@ jobs: path: dist/portable/*-portable.jar retention-days: 7 + build-web: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + id-token: write + pages: write + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + cache: gradle + + - name: Build Web Application + run: ./gradlew buildBundledWebApp + + - name: Upload pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: 'dist/web-bundle' + + - name: Deploy to GitHub Pages + if: github.event_name == 'release' + id: deployment + uses: actions/deploy-pages@v4 + + build-native: runs-on: ${{ matrix.os }} strategy: @@ -51,10 +78,7 @@ jobs: steps: - uses: actions/checkout@v3 - with: - lfs: true - fetch-depth: 1 - + - name: Set up GraalVM uses: graalvm/setup-graalvm@v1 with: @@ -62,15 +86,6 @@ jobs: distribution: 'graalvm' github-token: ${{ secrets.GITHUB_TOKEN }} native-image-job-reports: 'true' - - - name: Build Installer for ${{ matrix.platform }} - shell: bash - run: | - if [[ "${{ matrix.platform }}" == "linux" ]]; then - sudo apt-get install -y rpm - fi - ./gradlew buildInstaller - ls -R dist - name: Build Native Executable for ${{ matrix.platform }} shell: bash diff --git a/.gitignore b/.gitignore index 4c54fec..f7c2d9f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,15 @@ -# Ignore Gradle project-specific cache directory .gradle - -# Ignore Gradle build output directory build bin dist *.hprof .idea -.DS_Store \ No newline at end of file +.DS_Store +gradle-local.properties +.idea/ +node_modules/ +*.map +.sourcemaps +.settings +platform-web/.env.nostr-deploy.local +local.properties \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index c01fa40..4e0f238 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,22 +4,22 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { "type": "java", - "name": "Current File", - "request": "launch", - "mainClass": "${file}" - }, - { - "type": "java", - "name": "DesktopLauncher", + "name": "Debug Application", "request": "launch", "mainClass": "org.ngengine.platform.DesktopLauncher", "projectName": "platform-desktop", "osx": { "vmArgs": "-XstartOnFirstThread" - } + }, + "linux": { + "env": { + "__GL_THREADED_OPTIMIZATIONS": "0" + } + }, + "vmArgs": "-ea -Dthreadwarden=true -Djava.util.logging.config.file=${workspaceFolder}/dev-logging.properties", + } ] } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index e0f15db..595047f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,16 @@ { - "java.configuration.updateBuildConfiguration": "automatic" + "java.configuration.updateBuildConfiguration": "automatic", + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/gradle": true, + "**/.gradle": true, + // "**/build": true, + "**/bin": true, + // "platform-*": true + + } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e63f4f3..0bf0251 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,6 +23,7 @@ dependencies { java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} \ No newline at end of file + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} diff --git a/app/src/main/java/org/ngengine/app/Main.java b/app/src/main/java/org/ngengine/app/Main.java index 77a00fb..7bc8136 100644 --- a/app/src/main/java/org/ngengine/app/Main.java +++ b/app/src/main/java/org/ngengine/app/Main.java @@ -12,34 +12,15 @@ import org.ngengine.demo.adc.PhysicsComponent; import org.ngengine.demo.adc.PostprocessingComponent; import org.ngengine.demo.adc.SoundComponent; import org.ngengine.gui.win.NWindowManagerComponent; -import org.ngengine.nostr4j.keypair.NostrPublicKey; - -import com.jme3.system.AppSettings; public class Main { public static NGEAppRunner main(String arg[]){ - AppSettings settings = new AppSettings(true); - settings.setRenderer(AppSettings.LWJGL_OPENGL32); - settings.setWidth(1280); - settings.setHeight(720); - settings.setGammaCorrection(true); - settings.setSamples(2); - settings.setStencilBits(8); - settings.setDepthBits(24); - settings.setVSync(true); - settings.setGraphicsDebug(false); - settings.setX11PlatformPreferred(true); - settings.setTitle("Nostr Game Engine Demo"); - settings.setEmulateMouse(true); - settings.setEmulateKeyboard(true); - - NostrPublicKey appId = NostrPublicKey.fromBech32("npub1tc32kq8hr992tzvt09rwuc5wk6aa08pquqawasv20acjp4umny5q6axr4t"); - NGEAppRunner appRunner = NGEApplication.createApp(appId, settings, app -> { + NGEAppRunner appRunner = NGEApplication.createApp( app -> { ImmersiveAdComponent dep = app.enableAds(); ComponentManager mng = app.getComponentManager(); diff --git a/app/src/main/java/org/ngengine/demo/adc/HudComponent.java b/app/src/main/java/org/ngengine/demo/adc/HudComponent.java index 0e332ce..04fa561 100644 --- a/app/src/main/java/org/ngengine/demo/adc/HudComponent.java +++ b/app/src/main/java/org/ngengine/demo/adc/HudComponent.java @@ -15,7 +15,7 @@ import com.simsilica.lemur.HAlignment; import com.simsilica.lemur.VAlignment; public class HudComponent implements Component, InputHandlerFragment { - private Runnable closeHud; + private NHud hud; @Override public void onEnable(ComponentManager mng, Runner runner, DataStoreProvider dataStore, boolean firstTime, @@ -26,22 +26,18 @@ public class HudComponent implements Component, InputHandlerFragment { windowManager.showCursor(false); - this.closeHud= windowManager.showWindow( - NHud.class, - (win, err) -> { - win.setFitContent(false); - win.setFullscreen(true); - NLabel crossair = new NLabel("+"); - crossair.setTextVAlignment(VAlignment.Center); - crossair.setTextHAlignment(HAlignment.Center); - win.getCenter().addChild(crossair); - } - ); + this.hud = windowManager.showWindow( NHud.class ); + hud.setFitContent(false); + hud.setFullscreen(true); + NLabel crossair = new NLabel("+"); + crossair.setTextVAlignment(VAlignment.Center); + crossair.setTextHAlignment(HAlignment.Center); + hud.getCenter().addChild(crossair); } @Override public void onDisable(ComponentManager mng, Runner runner, DataStoreProvider dataStore) { - this.closeHud.run(); + hud.close(); } @Override diff --git a/app/src/main/java/org/ngengine/demo/adc/LoadingScreenComponent.java b/app/src/main/java/org/ngengine/demo/adc/LoadingScreenComponent.java index 0203514..51607cd 100644 --- a/app/src/main/java/org/ngengine/demo/adc/LoadingScreenComponent.java +++ b/app/src/main/java/org/ngengine/demo/adc/LoadingScreenComponent.java @@ -16,7 +16,7 @@ import com.simsilica.lemur.HAlignment; import com.simsilica.lemur.VAlignment; public class LoadingScreenComponent implements Component, LogicFragment { - private Runnable closeHud; + private NHud hud; private NLabel txt; @Override public void onEnable(ComponentManager mng, Runner runner, DataStoreProvider dataStore, boolean firstTime, @@ -28,23 +28,20 @@ public class LoadingScreenComponent implements Component, LogicFragment windowManager.showCursor(false); txt = new NLabel("Loading"); - - this.closeHud= windowManager.showWindow( - NHud.class, - (win, err) -> { - win.setFitContent(false); - win.setFullscreen(true); - txt.setFontSize(32); - txt.setTextVAlignment(VAlignment.Center); - txt.setTextHAlignment(HAlignment.Center); - win.getCenter().addChild(txt); - } - ); + + hud = windowManager.showWindow(NHud.class); + hud.setFitContent(false); + hud.setFullscreen(true); + txt.setFontSize(32); + txt.setTextVAlignment(VAlignment.Center); + txt.setTextHAlignment(HAlignment.Center); + hud.getCenter().addChild(txt); + } @Override public void onDisable(ComponentManager mng, Runner runner, DataStoreProvider dataStore) { - this.closeHud.run(); + hud.close(); } float time = 0; diff --git a/app/src/main/java/org/ngengine/demo/adc/MapComponent.java b/app/src/main/java/org/ngengine/demo/adc/MapComponent.java index 7013944..56296c2 100644 --- a/app/src/main/java/org/ngengine/demo/adc/MapComponent.java +++ b/app/src/main/java/org/ngengine/demo/adc/MapComponent.java @@ -83,7 +83,6 @@ public class MapComponent implements Component, AsyncAssetLoadingFragmen preload.accept(sky); } catch(Exception e){ e.printStackTrace(); - System.exit(1); } } diff --git a/app/src/main/resources/ngeapp.json b/app/src/main/resources/ngeapp.json new file mode 100644 index 0000000..76fa507 --- /dev/null +++ b/app/src/main/resources/ngeapp.json @@ -0,0 +1,47 @@ +{ + + "AppId": "npub146wutmuxfmnlx9fcty0lkns2rpwhnl57kpes26mmt4hygalsakrsdllryz", + "Display": 0, + "Width": 1280, + "Height": 720, + "Fullscreen": false, + "Resizable": true, + "Title": "AdCity", + "Version": "1.0.0", + "VersionCode": 1, + "ShortName": "adc", + "Namespace":"org.ngengine.adc", + "Copyright": "", + "VSync": true, + "GammaCorrection": true, + "ScreenOrientation": "landscape", + "relays": { + "blossom": { + "default": [ + "https://blossom.primal.net", + "https://blossom.band/" + ] + }, + "nostr": { + "ads":[ + "wss://nostr.rblb.it", + "wss://relay.damus.io" + ], + "default": [ + "wss://relay.ngengine.org", + "wss://relay2.ngengine.org", + "wss://relay.damus.io", + "wss://relay.primal.net", + "wss://relay.nostr.band", + "wss://relay.snort.social", + "wss://nos.lol" + ], + "nip46": [ + "wss://relay.nsec.app", + "wss://relay.ngengine.org", + "wss://relay2.ngengine.org" + ] + } + } + +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 135e75e..9ff9933 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,19 +2,8 @@ org.gradle.configuration-cache=false org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true +teaVmVersion=0.12.3 # NGE versions -ngePlatformVersion=0.1.3 -ngeVersion=0.1 - -# Build targets -withDesktopPlatform=true -withAndroidPlatform=false - -# Project settings -version=1.0.0 -versionCode=1 -projectName=adcity -applicationId=org.ngengine.demo.AdcDemo -copyright=Copyright (c) 2025 -javaOptions= +ngePlatformVersion=0.2.1 +ngeVersion=0.2-rc3 \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 466d564..14a0352 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,9 +8,8 @@ constraintlayout = "2.2.1" espressoCore = "3.7.0" guava = "33.3.1-jre" junit = "4.13.2" -junitVersion = "4.13.3-SNAPSHOT" +junitVersion = "4.13.2" material = "1.12.0" -ngePlatformAndroid = "0.1.0-SNAPSHOT" navigationFragment = "2.6.0" navigationUi = "2.6.0" diff --git a/gradle/libs/android-icon-gen.gradle b/gradle/libs/android-icon-gen.gradle new file mode 100644 index 0000000..2789485 --- /dev/null +++ b/gradle/libs/android-icon-gen.gradle @@ -0,0 +1,54 @@ +import javax.imageio.ImageIO +import java.awt.Image +import java.awt.image.BufferedImage +import java.awt.geom.Ellipse2D + +gradle.ext.generateAndroidIcons = { inputLogoPath, outputDirPath -> + def inputLogo = file(inputLogoPath) + def outputDir = file(outputDirPath) + + def densities = [ + mdpi : 48, + hdpi : 72, + xhdpi: 96, + xxhdpi: 144, + xxxhdpi: 192 + ] + + if (!inputLogo.exists()) { + throw new GradleException("Logo file not found at ${inputLogo}") + } + + def original = ImageIO.read(inputLogo) + + densities.each { name, size -> + def dir = new File(outputDir, "mipmap-${name}") + dir.mkdirs() + + // --- Regular square launcher --- + def square = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB) + def g = square.createGraphics() + g.drawImage(original.getScaledInstance(size, size, Image.SCALE_SMOOTH), 0, 0, null) + g.dispose() + + def launcherFile = new File(dir, "ic_launcher.png") + ImageIO.write(square, "png", launcherFile) + def launcherFileF = new File(dir, "ic_launcher_foreground.png") + ImageIO.write(square, "png", launcherFileF) + println "Generated ${launcherFile} (${size}x${size})" + + // --- Round launcher --- + def round = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB) + def gr = round.createGraphics() + + // Create circular clipping mask + gr.setClip(new Ellipse2D.Float(0, 0, size, size)) + gr.drawImage(original.getScaledInstance(size, size, Image.SCALE_SMOOTH), 0, 0, null) + gr.dispose() + + def roundFile = new File(dir, "ic_launcher_round.png") + ImageIO.write(round, "png", roundFile) + println "Generated ${roundFile} (circular ${size}x${size})" + } + +} diff --git a/gradle/libs/class-finder.gradle b/gradle/libs/class-finder.gradle new file mode 100644 index 0000000..dfd4f7a --- /dev/null +++ b/gradle/libs/class-finder.gradle @@ -0,0 +1,231 @@ +project.ext { + dynamicTargetTypes = [ + 'com.jme3.export.Savable', + 'com.jme3.asset.AssetLoader', + 'com.jme3.asset.plugins.FileLocator', + 'com.jme3.network.Message', + // 'com.jme3.network.serializing.Serializable', + // 'org.ngengine.network.protocol.NetworkSafe', + 'org.ngengine.components.fragments.Fragment', + 'org.ngengine.components.Component', + 'com.jme3.asset.cache.AssetCache', + 'com.jme3.asset.AssetProcessor', + 'com.jme3.post.Filter', + 'com.jme3.util.BufferAllocator', + 'com.jme3.asset.AssetLocator', + 'com.jme3.anim.util.JointModelTransform', + 'com.jme3.material.logic.TechniqueDefLogic', + 'com.jme3.material.Technique', + 'com.jme3.material.TechniqueDef', + 'com.jme3.util.clone.JmeCloneable', + 'com.jme3.system.JmeSystem', + 'com.jme3.system.JmeSystemDelegate', + 'com.jme3.util.SafeArrayList', + 'com.jme3.plugins.json.JsonParser', + 'java.lang.Cloneable', + 'com.jme3.asset.CloneableSmartAsset', + 'com.jme3.post.SceneProcessor', + 'com.jme3.util.res.ResourceLoader', + 'org.ngengine.nostr4j.listeners.NostrRelayComponent', + 'org.ngengine.auth.Auth', + 'org.ngengine.gui.win.NWindow', + 'org.ngengine.auth.AuthStrategy', + 'org.ngengine.auth.AuthConfig', + 'com.simsilica.lemur.core.GuiComponent', + 'com.simsilica.lemur.Panel', + + 'com.simsilica.lemur.style.Styles', + 'com.simsilica.lemur.style.StyleTree', + // 'com.simsilica.lemur.style.StyleDefaults', + // 'com.simsilica.lemur.style.StyleAttribute', + 'com.simsilica.lemur.style.Selector', + 'com.simsilica.lemur.style.ElementId', + 'com.simsilica.lemur.style.Attributes', + + + + + ] + + dynamicAdditionalClasses = [ + + ] + dynamicScanSubclasses = true + dynamicExcludePatterns = [ + 'org\\.teavm\\..*', + 'java\\.lang\\..*', + 'org\\.joda\\.time\\..*', + 'java\\..*', + 'javax\\..*', + 'kotlin\\..*', + 'com\\.google\\.gson\\..*', + 'org\\.threeten\\..*', + 'org\\.apache\\..*', + 'com\\.simsilica\\.lemur\\.ColorChooser.*', + 'org\\.slf4j\\..*' + + + + ] + dynamicClassesFound = new TreeSet() + dynamicReflectionClasses = new TreeSet() +} + +ext.scanClasspathForClasses = { project -> + // Create a collection to hold all classpath entries + Set classpath = new LinkedHashSet<>() + + // Add project's compiled classes + if (project.sourceSets.findByName('main')) { + classpath.addAll(project.sourceSets.main.output.classesDirs.files) + classpath.addAll(project.sourceSets.main.output.resourcesDir) + } + + // Add runtime dependencies + if (project.configurations.findByName('runtimeClasspath')) { + classpath.addAll(project.configurations.runtimeClasspath.files) + } + + // Add compile dependencies (some may not be in runtime) + if (project.configurations.findByName('compileClasspath')) { + classpath.addAll(project.configurations.compileClasspath.files) + } + + // Keep only existing dirs/jars + classpath = classpath.findAll { + it.exists() && (it.isDirectory() || it.name.endsWith('.jar')) + } as LinkedHashSet + + println "Scanning ${classpath.size()} classpath entries" + + // Build a single loader for EVERYTHING + URL[] urls = classpath.collect { it.toURI().toURL() } as URL[] + ClassLoader scanLoader = new URLClassLoader(urls, this.class.classLoader) + + // println "Target types: ${project.ext.dynamicTargetTypes}" + + // Reset results + project.ext.dynamicClassesFound.clear() + project.ext.dynamicReflectionClasses.clear() + + // Check target types loadable with the same loader + project.ext.dynamicTargetTypes.each { targetType -> + try { + Class.forName(targetType, false, scanLoader) + // println "✓ Target type $targetType is loadable" + } catch (Throwable t) { + println "✗ Target type $targetType is not loadable: ${t.class.simpleName}: ${t.message}" + } + } + + // Seed manual classes + project.ext.dynamicAdditionalClasses.each { cn -> + project.ext.dynamicClassesFound.add(cn) + project.ext.dynamicReflectionClasses.add(cn) + } + + int totalProcessed = 0 + int totalMatched = 0 + + classpath.each { file -> + if (file.isDirectory()) { + def r = scanDirectory(file, file, project.ext.dynamicTargetTypes, + project.ext.dynamicClassesFound, project.ext.dynamicReflectionClasses, + project.ext.dynamicScanSubclasses, project.ext.dynamicExcludePatterns, + scanLoader) + totalProcessed += r.processed; totalMatched += r.matched + } else { + def r = scanJar(file, project.ext.dynamicTargetTypes, + project.ext.dynamicClassesFound, project.ext.dynamicReflectionClasses, + project.ext.dynamicScanSubclasses, project.ext.dynamicExcludePatterns, + scanLoader) + totalProcessed += r.processed; totalMatched += r.matched + } + } + + println "Processed ${totalProcessed} classes total" + println "Matched ${totalMatched} classes" + println "Found ${project.ext.dynamicClassesFound.size()} dynamic classes" + + [classes: project.ext.dynamicClassesFound, reflectionClasses: project.ext.dynamicReflectionClasses] +} +def scanDirectory(baseDir, dir, targetTypes, classesFound, reflectionClasses, scanSubclasses, excludePatterns, ClassLoader scanLoader) { + int processed = 0, matched = 0 + dir.eachFileRecurse { file -> + if (file.isFile() && file.name.endsWith('.class')) { + def rel = baseDir.toPath().relativize(file.toPath()).toString() + def className = rel.substring(0, rel.length() - 6).replace(File.separator, '.') + processed++ + if (!className.contains('$') && className != 'module-info' && className != 'package-info' && !isExcluded(className, excludePatterns)) { + try { + Class clazz = Class.forName(className, false, scanLoader) + if (isCompatibleType(clazz, targetTypes, scanSubclasses, scanLoader)) { + classesFound.add(className) + reflectionClasses.add(className) + matched++ + } + } catch (Throwable ignored) {} + } + } + } + [processed: processed, matched: matched] +} + +def scanJar(jarFile, targetTypes, classesFound, reflectionClasses, scanSubclasses, excludePatterns, ClassLoader scanLoader) { + int processed = 0, matched = 0 + try { + new java.util.jar.JarFile(jarFile).withCloseable { jar -> + jar.entries().findAll { !it.isDirectory() && it.name.endsWith('.class') }.each { e -> + def className = e.name.substring(0, e.name.length() - 6).replace('/', '.') + processed++ + if (!className.contains('$') && className != 'module-info' && className != 'package-info' && !isExcluded(className, excludePatterns)) { + try { + Class clazz = Class.forName(className, false, scanLoader) + if (isCompatibleType(clazz, targetTypes, scanSubclasses, scanLoader)) { + classesFound.add(className) + reflectionClasses.add(className) + matched++ + } + } catch (Throwable ignored) {} + } + } + } + } catch (Throwable t) { + println "Error scanning JAR ${jarFile.name}: ${t.message}" + } + [processed: processed, matched: matched] +} + +def isCompatibleType(Class clazz, Collection targetTypes, boolean scanSubclasses, ClassLoader scanLoader) { + if (clazz == null) return false + + // Assignable to any target class/interface + for (def targetType : targetTypes) { + try { + Class targetClass = Class.forName(targetType, false, scanLoader) + if (targetClass.isAssignableFrom(clazz)) return true + } catch (Throwable ignored) {} + } + + // Traverse interfaces + for (def iface : clazz.interfaces) { + if (targetTypes.contains(iface.name) || (scanSubclasses && isCompatibleType(iface, targetTypes, scanSubclasses, scanLoader))) { + return true + } + } + + // Traverse superclass + scanSubclasses && isCompatibleType(clazz.superclass, targetTypes, scanSubclasses, scanLoader) +} + +// Helper to check if a class should be excluded +def isExcluded(String className, Collection excludePatterns) { + for (def pattern : excludePatterns) { + if (className.matches(pattern)) { + return true + } + } + return false +} + + diff --git a/gradle/libs/props.gradle b/gradle/libs/props.gradle new file mode 100644 index 0000000..7c5a851 --- /dev/null +++ b/gradle/libs/props.gradle @@ -0,0 +1,15 @@ +import groovy.json.JsonSlurper + +gradle.ext.loadNgeAppProperties = { path -> + def ngeappFile = file(path) + if (ngeappFile.exists()) { + def jsonSlurper = new JsonSlurper() + def fileContent = ngeappFile.text.replaceAll(/\/\/.*?$/, '').trim() + def ngeappConfig = jsonSlurper.parseText(fileContent) + + return ngeappConfig + } else { + logger.warn(path+" file not found") + return [:] + } +} \ No newline at end of file diff --git a/icon.icns b/icon.icns deleted file mode 100644 index 0b992fb75dc55f4eec3cdeea1c4016957cb525be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38722 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 WH4Cg+V9f$+7Fe^ungyO?f&T-dTHP7| diff --git a/local.properties b/local.properties index 27d9bd5..8d16733 100644 --- a/local.properties +++ b/local.properties @@ -1,8 +1 @@ -## This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. -# -# Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -#Mon Sep 01 09:13:24 CEST 2025 -sdk.dir=/home/riccardobl/Android/Sdk +sdk.dir=/home/riccardobl/Android/Sdk \ No newline at end of file diff --git a/platform-android/build.gradle b/platform-android/build.gradle index b9f5cb3..ec1e0f2 100644 --- a/platform-android/build.gradle +++ b/platform-android/build.gradle @@ -2,19 +2,31 @@ plugins { id 'com.android.application' } +def localPropsFile = file("${rootDir}/local.properties") +if (!localPropsFile.exists()) { + def userHome = System.getProperty('user.home') + localPropsFile.text = "sdk.dir=${userHome}/Android/Sdk" + println "Created local.properties with sdk.dir=${userHome}/Android/Sdk" +} + android { compileSdk 36 - namespace "${project.applicationId}" + namespace "${project.Namespace}" defaultConfig { - applicationId "${project.applicationId}" + applicationId "${project.Namespace}" minSdk 33 targetSdk 33 - versionCode project.versionCode.toInteger() - versionName project.version - + versionCode project.VersionCode.toInteger() + versionName project.Version testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + manifestPlaceholders = [ + appLabel : (project.findProperty('Title') ?: "NGE Unnamed App"), + screenOrientation: (project.findProperty('ScreenOrientation') ?: "landscape") + ] } + packagingOptions { jniLibs { useLegacyPackaging = true @@ -27,14 +39,17 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } + buildFeatures { viewBinding true } + } @@ -52,7 +67,19 @@ dependencies { implementation project(':app') implementation "org.ngengine:nge-platform-android:${ngePlatformVersion}" implementation "org.ngengine:nge-app:${ngeVersion}" - implementation "org.ngengine:jme3-android:${ngeVersion}" - implementation "org.ngengine:jme3-android-native:${ngeVersion}" + implementation "org.ngengine:nge-android:${ngeVersion}" } + +apply from: "${rootDir}/gradle/libs/android-icon-gen.gradle" + +task generateAndroidLauncherIcons (){ + doLast { + gradle.ext.generateAndroidIcons("${rootDir}/icon.png", "${projectDir}/src/main/res") + } +} + +android.applicationVariants.all { variant -> + variant.mergeResourcesProvider.configure { dependsOn(generateAndroidLauncherIcons) } +} + \ No newline at end of file diff --git a/platform-android/src/main/AndroidManifest.xml b/platform-android/src/main/AndroidManifest.xml index 5a62138..825365d 100644 --- a/platform-android/src/main/AndroidManifest.xml +++ b/platform-android/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ + android:screenOrientation="${screenOrientation}" + android:theme="@style/Theme.AppCompat.NoActionBar" + > diff --git a/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherActivity.java b/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherActivity.java index d0a8cfd..5d90d6d 100644 --- a/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherActivity.java +++ b/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherActivity.java @@ -13,22 +13,22 @@ import androidx.navigation.Navigation; import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; +import org.ngengine.app.Main; +import org.ngengine.platform.android.AndroidThreadedPlatform; -import org.ngengine.demo.AdcDemo.R; public class AndroidLauncherActivity extends AppCompatActivity { - private AndroidLauncherFragment launcherFragment; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_android_launcher); + int layoutId = getResources().getIdentifier("activity_android_launcher", "layout", getPackageName()); + setContentView(layoutId); - launcherFragment = new AndroidLauncherFragment(); + int containerId = getResources().getIdentifier("fragment_container", "id", getPackageName()); getSupportFragmentManager() .beginTransaction() - .add(R.id.fragment_container, launcherFragment) + .add(containerId, new AndroidLauncherFragment(Main::main, AndroidThreadedPlatform::new)) .commit(); } diff --git a/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherFragment.java b/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherFragment.java deleted file mode 100644 index cfebea4..0000000 --- a/platform-android/src/main/java/org/ngengine/platform/AndroidLauncherFragment.java +++ /dev/null @@ -1,308 +0,0 @@ - -package org.ngengine.platform; - -import android.content.Context; -import android.opengl.GLSurfaceView; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.fragment.app.Fragment; - -import com.jme3.audio.AudioRenderer; -import com.jme3.input.JoyInput; -import com.jme3.input.android.AndroidSensorJoyInput; - -import com.jme3.system.AppSettings; -import com.jme3.system.SystemListener; -import com.jme3.system.android.JmeAndroidSystem; -import com.jme3.system.android.OGLESContext; -import com.jme3.util.AndroidLogHandler; -import com.jme3.util.AndroidNativeBufferAllocator; -import com.jme3.util.BufferAllocatorFactory; - -import android.app.AlertDialog; -import org.ngengine.NGEApplication.NGEAppRunner; - -import org.ngengine.NGEApplication; -import org.ngengine.app.Main; -import org.ngengine.platform.android.AndroidThreadedPlatform; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.logging.Handler; -import java.util.logging.Level; -import java.util.logging.LogManager; -import java.util.logging.Logger; - - -public class AndroidLauncherFragment extends Fragment implements - SystemListener { - private static final Logger logger = Logger.getLogger(AndroidLauncherFragment.class.getName()); - - protected GLSurfaceView view = null; - - private NGEApplication app = null; - private boolean finishOnAppStop = true; - - - @Override - public void onAttach(Context context) { - super.onAttach(context); - } - - public void setCloseActivityOnAppStop(boolean close){ - this.finishOnAppStop = close; - } - - /** - * onCreate is called once for this Fragment instance. - * Note: AppSettings configuration has been removed. Configure settings in your app. - */ - @Override - @SuppressWarnings("unchecked") - public void onCreate(Bundle savedInstanceState) { - initializeLogHandler(); - logger.fine("onCreate"); - super.onCreate(savedInstanceState); - - System.setProperty( BufferAllocatorFactory.PROPERTY_BUFFER_ALLOCATOR_IMPLEMENTATION, AndroidNativeBufferAllocator.class.getName()); - NGEPlatform.set(new AndroidThreadedPlatform(this.getContext())); - NGEAppRunner runner = Main.main(new String[0]); - app = runner.app(); - - AppSettings settings = app.getSettings(); - settings.setAudioRenderer(AppSettings.ANDROID_OPENAL_SOFT); - - app.start(); - - - OGLESContext ctx = (OGLESContext) app.getJme3App().getContext(); - ctx.setSystemListener(this); - } - - /** - * Create the GLSurfaceView and return it as the Fragment's view. - */ - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - logger.fine("onCreateView"); - view = ((OGLESContext) app.getJme3App().getContext()).createView(requireActivity()); - JmeAndroidSystem.setView(view); - return view; - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - logger.fine("onActivityCreated"); - super.onActivityCreated(savedInstanceState); - } - - @Override - public void onStart() { - logger.fine("onStart"); - super.onStart(); - } - - /** - * When the Fragment resumes, call gainFocus() in the jME application. - */ - @Override - public void onResume() { - logger.fine("onResume"); - super.onResume(); - gainFocus(); - } - - /** - * When the Fragment pauses, call loseFocus() in the jME application. - */ - @Override - public void onPause() { - logger.fine("onPause"); - loseFocus(); - super.onPause(); - } - - @Override - public void onStop() { - logger.fine("onStop"); - super.onStop(); - } - - /** - * Clear references to the GLSurfaceView. - */ - @Override - public void onDestroyView() { - logger.fine("onDestroyView"); - if (view != null) { - if (view.getParent() instanceof ViewGroup) { - ((ViewGroup) view.getParent()).removeView(view); - } - } - view = null; - JmeAndroidSystem.setView(null); - super.onDestroyView(); - } - - /** - * Called by the system when the application is being destroyed. - */ - @Override - public void onDestroy() { - logger.fine("onDestroy"); - if (app != null) { - app.stop(); - } - app = null; - super.onDestroy(); - } - - /** - * Called when an error has occurred. Shows an error message and logs the exception. - */ - @Override - public void handleError(final String errorMsg, final Throwable t) { - String stackTrace = ""; - String title = "Error"; - - if (t != null) { - // Convert exception to string - StringWriter sw = new StringWriter(100); - t.printStackTrace(new PrintWriter(sw)); - stackTrace = sw.toString(); - title = t.toString(); - } - - final String finalTitle = title; - final String finalMsg = (errorMsg != null ? errorMsg : "Uncaught Exception") - + "\n" + stackTrace; - - logger.log(Level.SEVERE, finalMsg); - - requireActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity()); - builder.setTitle(finalTitle); - builder.setMessage(finalMsg); - - AlertDialog dialog = builder.create(); - dialog.show(); - } - }); - } - - - - - /** - * Removes the standard Android log handler due to an issue with not logging - * entries lower than INFO level and adds a handler that produces - * JME formatted log messages. - */ - protected void initializeLogHandler() { - Logger log = LogManager.getLogManager().getLogger(""); - for (Handler handler : log.getHandlers()) { - if (log.getLevel() != null && log.getLevel().intValue() <= Level.FINE.intValue()) { - Log.v("AndroidHarness", "Removing Handler class: " + handler.getClass().getName()); - } - log.removeHandler(handler); - } - Handler handler = new AndroidLogHandler(); - log.addHandler(handler); - handler.setLevel(Level.ALL); - } - - @Override - public void initialize() { - app.getJme3App().initialize(); - - } - - @Override - public void reshape(int width, int height) { - app.getJme3App().reshape(width, height); - } - - @Override - public void rescale(float x, float y) { - app.getJme3App().rescale(x, y); - } - - @Override - public void update() { - app.getJme3App().update(); - } - - @Override - public void requestClose(boolean esc) { - app.getJme3App().requestClose(esc); - } - - @Override - public void destroy() { - if (app != null) { - app.getJme3App().destroy(); - } - if (finishOnAppStop) { - requireActivity().finish(); - } - } - - @Override - public void gainFocus() { - logger.fine("gainFocus"); - if (view != null) { - view.onResume(); - } - - if (app != null) { - // resume the audio - AudioRenderer audioRenderer = app.getJme3App().getAudioRenderer(); - if (audioRenderer != null) { - audioRenderer.resumeAll(); - } - // resume the sensors (aka joysticks) - if (app.getJme3App().getContext() != null) { - JoyInput joyInput = app.getJme3App().getContext().getJoyInput(); - if (joyInput instanceof AndroidSensorJoyInput) { - ((AndroidSensorJoyInput) joyInput).resumeSensors(); - } - } - app.getJme3App().gainFocus(); - } - } - - @Override - public void loseFocus() { - logger.fine("loseFocus"); - if (app != null) { - app.getJme3App().loseFocus(); - } - - if (view != null) { - view.onPause(); - } - - if (app != null) { - // pause the audio - AudioRenderer audioRenderer = app.getJme3App().getAudioRenderer(); - if (audioRenderer != null) { - audioRenderer.pauseAll(); - } - // pause the sensors (aka joysticks) - if (app.getJme3App().getContext() != null) { - JoyInput joyInput = app.getJme3App().getContext().getJoyInput(); - if (joyInput instanceof AndroidSensorJoyInput) { - ((AndroidSensorJoyInput) joyInput).pauseSensors(); - } - } - } - } - - -} \ No newline at end of file diff --git a/platform-android/src/main/res/drawable-v24/ic_launcher_foreground.xml b/platform-android/src/main/res/drawable-v24/ic_launcher_foreground.xml index 7706ab9..2d4cc47 100644 --- a/platform-android/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ b/platform-android/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -1,30 +1,11 @@ - - - - - - - - - - - + + + \ No newline at end of file diff --git a/platform-android/src/main/res/drawable/ic_launcher_background.xml b/platform-android/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..0001463 100644 --- a/platform-android/src/main/res/drawable/ic_launcher_background.xml +++ b/platform-android/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/platform-android/src/main/res/mipmap-hdpi/.gitkeep b/platform-android/src/main/res/mipmap-hdpi/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/platform-android/src/main/res/mipmap-hdpi/ic_launcher.png b/platform-android/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d7cce2b2be3c02520e209f7f27ecfc4b1e98cc9a GIT binary patch literal 8342 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-hdpi/ic_launcher.webp b/platform-android/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index 3e37e739a315f39c55e22bd7bc1a12748d6f8ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2513 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.png b/platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..d7cce2b2be3c02520e209f7f27ecfc4b1e98cc9a GIT binary patch literal 8342 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/platform-android/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index 992a775b7d11dfbd4a2d8006bb0073c377e68588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5175 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 DwsG$x literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-mdpi/ic_launcher.webp b/platform-android/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 60e2f8cefc8b6f9657c2a81c9823504eeceb2f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1778 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 DwsG$x literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.png b/platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..c47d1eca3ccae92837d93f967edaa99ba1c6b65a GIT binary patch literal 3997 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 DwsG$x literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/platform-android/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 04c69c0df9fcfb85faa930a62ff666f5ad88dfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3184 zcmZuz*-zA06#lUd<2YflGlQ(dHVlj4AbVwzfdNF6L1a;2*oH+}6evr9aZ(@b5@Xub z))!N$CQTZfKG@d8bW3bvQsWY9qfOQLWK3V$q<=xb&vW}5OiaG>opTrN@7%N8;o#n; zrhk6^(V%HP9=EsKTiI*UG%XIY^Cjxrye<9VnihslQ;)A5g#tR)2EgT6$>14C_c$nG z8l+?KB+Q};GSEM&FO@9(4qF19^_I#Li(D z@h-=9C<>2Es(w4%HOkPdL z)>TFkXl)QZ66NsIpQ+)n$wSaX5MyWe!&3&{x`Te4*s{X{1=OnBCf(Y==-#iP95@D*Bs0QMP{H^I=b7Hk2+*U^{-^JBs}yyuVPdv+^B%E% z^jV;?-#L}&PRTfdxp_m4s*DWT!H~Pf1kbIU^d_4gem!a|mbpTx@T5YP%*_v3FNRl~ z&G09LFLz;@*%X)pOJW=m6yh7-vBP z^knuCt?WFO5zBIRaltgUxEEGhpQ=_>c9`Pqetv$wfGOuii+9h0fuN`gQ7VND@;=Cc ztcIBZSy65$mD63o$N5sRc~ikW6e|Z{)AlS@O;}qEctz4jA~nV}ffSbS(p*|?Aze~A zj^TFA95&LYIon|Bc*foYQu9FUt^H3gfsH0m?NFU+S`5^EVAVkQJn^m-N7})RA4iO` zj{hfR!Y-;>RA!KQ9e}8az>4M;J~QlfRjjaHi(P|_L0K?Bv8XnKXY%WSn+N(w4zrNi z!~l=3iYcCX6M8xoG|BzXJ^}%yC83U$88CZxj5Wz4a#VA{+-tTbKzSZ+s6JR@W`Qn- zJ)mlJ8TRnPc5qY<2r!oRFpDMLg#c6yqy-{~jb&{4MPTUni###N-~#F^u%2K2PNu+4 z-BLG{G0Rx6oL8aSFz#O7Jo2cs8ASJRtc;qnUh7e24yy}lzLa$hQLtyAg?ubsCv}*=<_j{!!J{?JyzCV%juhE z|NN=SmbERhev%&9IzWaRkTcxQqGvP*J3$GM(A9XaObDP7&hM%6T#*H@RW%@nK1dpq zmLJ*7N_Z_oZ)B7Db&zeUr!k;+e_wpx_2S)6VJ*lqI55sbOK)7CVAJvI}bD#z^3V5`0bM!|1a!N>W{jCIxVu*>r-Y~wu;W>6&>7Jm`iAuD|RC^|Go3K;fJ zGI)ZrITs9dYX(AXs*&Xh^=^(bTJ+0WA`7?PgJ!oRoHWL_T6RA@l^VvZcgu3<3hLdU zOUEHj7LPmqNL-qak@)w^kH6vDz-9HRmFlU%0Sti@gL*o7auY=5EKN1Tu24S@t32># zbjz>8$*z3D2!^g)&sc^vf|hxF93&qCR6-^oETE>XAmEqtpeN^K5NcA4?O9H%+rpnU ztE}cYY+_W{8pJqJ(wQZe@HCV*1Y$3xEP_}P{&sIQ6ws9|nhm>dq-O%YXA6+7+ozRV zTIgX6V8H<~O@V;tm#;BxKLy&U+GB}^^2-2Okyfk2K>r0D( zRzqH-Et6Hc+dK+RfwZe~f%(T3(BzA=8@aql6l9g#1mgH#AizDqp?&d#g<^sSvOuc)x4`UXS*eZ<24ELK0OlDe zTVv?=4HSU)L*^3tTlv?ltcE)Ebgz|hN$^%IG^20;!rlScH-Nn-AO`qA&-^-f0!#NU zfLAqFK`c`*=y>pnH;q3|^t|uz{nNA1Cm)>+rb16bfFjmoEyR5cw3y2@0t@wx6)`QE GX8I2WfAhxx diff --git a/platform-android/src/main/res/mipmap-xhdpi/.gitkeep b/platform-android/src/main/res/mipmap-xhdpi/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/platform-android/src/main/res/mipmap-xhdpi/ic_launcher.png b/platform-android/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..97e953978e62ce89f480406abacd2d2b09ef7871 GIT binary patch literal 14092 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xhdpi/ic_launcher.webp b/platform-android/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 13410d77ac289fd08f3113d264b155ae44d9fdfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3477 zcmZWr`A<|=6n=mma4;|+o60gQiijY)po}mq!@z(bn{2}%44Z7S4%XS$>-4_u{*6`#M2M5W%F!Gat6?haT<7GbgUV=<0p=5fndph@S|BOhSOZ?V^XcXbL19 z;!Y=f8~I%O)(|kjh2{^6U2_V$0+O6s4_*wPRwcT{@AO(g4=>(cgEB#ei$DxazyiiW ztm_}^zCymzSnRddcEgB<7%dG&`Ou8y0Hg=xv}}>0U7W^$z%DIGTL(c zHT@YFdmzk)8<=X(;%9VlvFIpwYA06?ZWe!}5xT>O-Z6(5G!27zlHa}_tw%eO9S*w; zl4#_fY9@A4#|{us-y8kJ1uL=?fVX}aocDvY3p?tR=^7MW242j~VC5Y*S zQlINOPQU4}OzehoKtj6JYT{<><7#Ueodwc6#c~3VuC0z#GoxEqKqtis?wRLn0QbKp zocU6KIY?b1h>ZtiL$bIokY-FV-8lzit`QW^cgu4?F#$X(6Ep?!x-~T^rYY53x=T!# zFN}evxd3s-irNYlHmpJs7uY=0Jpq-*ENiUG+`oO0K1g>LNC$gPu*jk%L0)b!bgm1; zYOmCS1gfF9gv%dff%FbI!4Iy0d~vQb>E?WmTdFDxi?0CpZ-TgJ|6{eOJbs}NAXRCY zHb|3rbAm;KH_m{3Yd(0pbPx_dhE@*=spYx;{rt_1n@m7Q2ds9k2;_zGnFXhR{)=60itX*IP_ms{tc+?z7L>S&V)g1n|{!V6oP}oX<5r|KcoE zPTccX8F_IgNJncjOfRd*84r3$~&p%KCsS>l`2_5Wq(|(l>D+BcYx%Porn|VS8tj+LdKaUo`dNU`$&>WiL z6tkup`nMa=6OlIay-(@}dBxcwCs;UOnOhi?ImNuHD>(pEfQE?sm$`$pyer zJvM`!-2f_Zs34ff64yEk(UA^I9hU@g8Xj@iBZoFluc$*F!|h`^dmy=4)8M6?Ffjem z5boN45aCv52mTR#?vJnj^&EFX9YJ1$K+8_G7UOF73kWKo9vV-s;#~lEcqsuU2x~p- zyN_hT!|onq?!dCBtxz-U8bO9`!3b0fwx-mvRshcuFms}M{f$_$!91sjdx~mipjVkr z0YnE2_X>m`EbvtFwa4$W%4}R9TvWQJf${c30=XxgJ;^+o&fO1>v2p7noM3^GUt4DQ zQN_A*6xPV@TpmEP?i7QIcRKC43`I~VYNbi{B>qm%v1%oo?c?9?ZWu=4n0!BjH2 zx{kXy##B6}v`uLb2P5D?x$-qA~_67s^@E z?fD4|k@sAbOsS)NoT1fDi4VL7lAhE7=DAb-l*2-E24KA%&68le?atRw>_PT1w>cQ% ziys3)kZ!?fjxld>m#4yF_>bR`IW8!eYqN1VhUtbdryUNXJ!gLwuNwz5%d9jE9pv5u z{4HiKGjnlZ1`4PT8VlxT#bKWp4OX`*F93E1E1zVEetzv741oJp1L6Hx7xmZ0PsDJd+oXfN}#TrC)asHaOs42-ZCDUb?|mHaY@0wt9&z52B)Bomc@Wg%-;3n zEDxZdUd8+J4{CI-I4f3+d>#1y!YX^&ySH4%;9u5CbQ?zdv)5ZTkHy{%)xg62{H8wn z<0b9sX&G^K-e;_dU`142$Pu=t4zp9tQ9fNHHqQw+XO>5ZhF}n?*u{FdQrTv=FR@90 zSl=@kEkO#HwDAxqYl`Q28lt-O1WcfL<8xj{zn%fP57mh?CeLe!#eNm=erRA0cQ12$ zcya)@!3wTmZ>2#3Abndvsmwvp6>nJ%(?>AMLO>%f(1Kbe+RB6kDG9pCQv_@a{plOA Lm=B`@G|l)AlbX$% diff --git a/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..97e953978e62ce89f480406abacd2d2b09ef7871 GIT binary patch literal 14092 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..97e953978e62ce89f480406abacd2d2b09ef7871 GIT binary patch literal 14092 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 literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/platform-android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 554b15e12d958e2d7ef973c2a1acf64300131d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7138 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 Smm9R4KhE(2#_>P$4F3TvT{hbQ diff --git a/platform-android/src/main/res/mipmap-xxhdpi/.gitkeep b/platform-android/src/main/res/mipmap-xxhdpi/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.png b/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..352c635e083174f42e3a1eff08790d051cdc0e8b GIT binary patch literal 29720 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 Uq=ENu;^+TlBoxJKMU8|14<0+f;s5{u literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index fe6bf91d5a2bf828c21582e692494f4c7b451fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5311 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 Q2Zt#In88{6lTv5+KP4QRB>(^b diff --git a/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..352c635e083174f42e3a1eff08790d051cdc0e8b GIT binary patch literal 29720 zcmb4JV|Qgu)4pfI2`9E~+qQXP+jb_ld2)h@C!W~GiEU17+fUw~@P6p-y>|CrRlBNs zb=Or_l(M1}A{;KJKG%TK@abbxTHEMBU5atkY9nV!v<6xf*b#!$DHL1}}Q(am?qWRLQbPF)^Huq4C zvi@pSnnJ1-3rq{N_r8rf?=n@I&3_h7I2&~qt_kcnE(0|y7Kpx<(tXW|S7~lxP8Dhr zss0#Bu1KdtkFKq%suFtlA`p0i|M6sK&I-&|Ez7P_E-Of-)#%cxs#Y!2XjZ3P&@I;4 zDATM!QKm+3Xl%Sa-lf{?@(0&jPI=#5u^?Xv?R~sQn7mwVo8}67Po8QyT3J~Y6&FLb z>M?%2I`A&gF8F>aDpjSaRiR$4mnPe&vr^n}dUiJdeEs5cM}>Yxlm&X03KL}!DORmg zEmH@|7S|~jYj&!YEx4q~N|ee=n(j*F^7~H~$7u2BXpTHEK#^B%^}Y4kz_W8m?eM?# zSp!R$TrIuW#yohMFy(;k7KCC7rDO~BW?B0t{2ToMyxJg!vXwI$n%%dRG5)}hWG2Hb z71~r2#A4MlgFmU|CTX(!U+PfKDl+w62^|zmeWFo7RtqzI*~_3K0BV;bdIXx|3%(UnO42Q2i=5Tnt zc;WE{WTNFPKXYBG4Y~%~Jui=srsw5p)7liu)V0dgX#@9ewtJ=oIA%Z1eu%JK8Md`C zYtpFa)25xY$rh^y#F=k)Rvhj{>6nMJdMOa>wMCcp#*&ns8VP;&IvS_qA5c2U?-W6{*vzRH*03 z7TrVB0~Rr7nfE8|l{Rc@+C8+C;P_ML$J9*(-}e|2A;oUm%rVqh)Mngu(D z8s6SoGL0-}g-jGdVcP&rEA68?8`-?qqFdTa<4a%KPdExbXzq%<6hmlygi?37%~h<_&!lr8keYZxn|r? za0s@k5)&AOS(uTZfAOQgL(RPz7hI~yx~fRuB!XZ$v`O>}WvxKkvi|>2F7_4^yNmyW z;qwfC%o~dQc;KFTJnZ=(^Rs@rSrE7XirXyJGCjzC4&tlJgKFUZkDS-b+15(@ z=Vj7Vh#QrMDKYExm_GK$Jdku&glKZYY|DRPML%1M{%e&XsbeX2Qxxb~EB0;0?#vkH zSOZ$NXXjHk$#Zy8dM)@kY_{C`KYn(J=0~2NoSb}`dfy#=h6wh4t}GO1=c|{?g{he2 z%dIb8B@yVlYV)r}7>BFXE&xRuqNu=96gM_5oCGPd1GvH#tr3%Z@P7Pm8K+-9Z{@*a zN?72YLL??P5?Gt9U+$nuN&I~uOR)V*g$N##_bIW<8>c*}60g5}7Ya6DnzzuVF&YIK)I*oX1N+auy3ZOw&UaQ82XUhQuCDn3Ll_3muq!;!jOHbYf5o7T`ug=hWcpWfDG~ zpp3GID%`mr|8Mr+M0XXuWi_3lpm*?cYiH)(Qw};7{z2b!1wNn7VB0V{=G3hjP>z{q zWQ|+JBRQkgaW2V~pmmI8uOE(`BgyKwUTX5X!>wOc5ZnN+G;=~7UYJUk^wJe+mgU)Q zwbTzD!ZP~C2hnoV-gN-oaw|guI3YI@B3U-A+#p~5!di>=oUmW$O(8 zH`gr%XuGC2`L#kLSn1DvuP@JO-DG|*5mWBvzc(E8An7&W(I^r8OT!(W=QU) z$)C4y{s>owbxCoSXNEufmg%QP9S&o}9Oaka?HJg$yz(H2Kpi2s_mNq}2##P9SZ++WQE;o z8842($yMQ);X%$=G~oe99QG(zsEcqR+~ep)54@8n=`OA8ZHgP7esL?XtdA2$0O^*K z0OJ$j8n0Q>U6=N3HCBpJzWr3LX0?x6plO^TH*Jx^`Fz7@%j)7_3?o!tnk=t|>?$ws z@HqXz7E^T9@rqtWtN3dWpBo~U4G@2Ch-aNeKL58Pb-Nn`cNtN?Tw$!^L6Rp}N)(YI zQ_^l$obAViPVO+wG2_mwmr1^PL{vJ|q+CC@(*dd{ulc$PS$CPT0RP;AIce%#!v5o> zfoOiJr(0}gdfD2^p3Qw2Bh+yO-QW60@s|o7wMGkowU?GE9H7U29Onwen2Ev#M(B}+x zWn6c?L^1dBGq|vNVldBpAhN2mjT2(?1nBq*uE*ieHZjhnx7wR z_28L+qo^_HG~U`|t@AvXdHy59UK82yi_yAkm}?i-;@Kx>BhplQ3t13O2-3P5TW*BH zy8*Q4{M(Q`el;HZp4D>JOpA3=|Lf*|kf}O>5>{6&&q&nKWQlZs`N0VB@nIBUa@Wha zA0|d%V-A#`coD;pZ}I@kgK-lCV|dK*o%2PUn0s);r{MWT9sT zQ&<*r2ds`sOOO=@N2)Mu$Q)sxiK)u-Lm)C7ndMm_bjOOb%e#7t+bUA4mlcYFgqpsET5d2N6%^LqQu*Qw;YBEaifO#=Vtx2@ebSvF&JJ}G=DRD^kok;4>nP{@0M z_8$S{vT8)Ms*RO^*Kg)<9KLBMlccS*?b3`ycc$JS?P?-?V$r_%2JWGAadQ7xrvRU9!;UN#Zfb4P>=!z!tL z<)>d6gF)({0jj7kPi)2*OWHV%Y1{AT*9Mp}H>>QNU5-~Ok#+(zl`xr6;EJ=6y1+mYK47V1zt$2*e9b@kO z0zJB`N~KGP4XYi-FH|eXQb%6iwM#x7QmG0J729cfOZ7GKHVTYRZ#}hnUt$gb>z0HO zh)c7?8`nABAIym*qgdayNr)Hj9L&gKtl-Okzu!|O@62M8Hkv1H>QzSA^_bs7eXr(< zg4VhJljQ8`cdc6+ALiPj%|3?b3vZd8$zV~xNy~cI&wOqlR`!6NUX(*|1)%Ek%(_|+ zjC1!@RMYm3A_Gs=GM&Q0z>U%{@=H%%n7GtMkGx}{yQ|4Nc%bkA!p@d+CsrfHQ5WqG zbe;ibJWGl2WNRDGXb9w3Lou;8-lmx%0b9zIzH6qdQ{fcO$992gN}8p~Ijjqv_N-}^ zaBo{e>E~M=tb(_J<_#769!+Hq7j`Oj$L3^;Kh{`gn|c&2DT~9mJ2+Mpm%jEB)Ejs{ zsN*$*7P2PTJ5;2-TISVi(=VQ`w8n@ffRWM%6Ja_h>^?EB1#C#Q=S*izwEraJU>59( zEfR1FXq!$@nLUm@vJVO*vW$MMvIyCv9S^AQleeY44H>(p?vh+j!ZX9l$>(fNw``xf zcHTADL93p{^#m>*TY9&2hQq9td;Kkrh5=Qybhl=`>Xx_W8BB!S;S$Ou4IS(>yK&T_lrdHvQ_IqT0$+CP|WXS%ECn7V88QcX?esb!a4|JolRA;Op0WY@w8pg%fT zH)Kn#o2-5_=2tMHmoqQT$0@(UF1%@(^+zAwl^1Ofv3)rz^R0bInC!Kc&EJlau6c`U zM-0n2PCvBcC0I+6W><=v+2P3U-~puc>q6Dz5uQ?4C{;oS9(#H$3q{fuHjZ~RJk`af zS?k8*);mix@8F@*4@q{1dyOd!$r`1O1}14jNcOOU%#AyBMzA!tiO0NwmoVSl07v0= z)GFIEvN;Cny6+seCYY|ZwJrM|iDf+JVDOO7(Yldd{6n9CZcpQA;m5UdJ9z>)*&g!V zSz>l9Sf;)MwyI0|q|}4cv%I^=z1(H4E%8HpGO%9O`mmYdyu1peyO5_U=#HxCnIm)i z#=OW1F23}u2HOAA|2&@uSzPs+fj!TPL}(LfRGCJKHod42hxnekt3sJtGs*(5)5#*@ z(Qq3SV;zTZo>xXX_-NPG|O_E9; zt(XX{LK#NDP8JcB8s9>#Y7&;ZjvL@2x^T}^;a=up)t6;3<;A%^la7>#WDWAkP%_1_ zdD(TOtw~zzaVl;%kVm=fYCqsgB-#I*Hw+m#gnoKmp*x6{*wdRz9cr}t_t^(h*7Xw{U z%U2c7T^<#x%5}>aXcssAgG|RYV;kwQt2xr-t*J3eoaZwKRcvX0GP%h1&j&4xWdO&i+L_j`hZ<0CUMu`o{;wy?`08G%qgG%hb8ls#9Q4p*&UogEcRR0kvgpuXaJ$l+9XP)h%hR>nmY{{LF`Lj zXEV$1#Rhy&dtY>xu1hCPaq@UTrZoR0lmwwwXLqGqf(%R;{M$-;AVyG2$U%f9Wk?EP zvXY$GTRXeUzUd`$UTHt?H)i|2G;E$cS0}~GMjo|{Q>JK?{>Nn(W9)QY@3T!E_@d)dy7Ndh_UfouW^dnJ)KpfXs=E-qH-xnAifpO4aM z` z>mFaB<#6+~&9*7vE!E%u*dSf5|cd@#&Jog9**a?QG)u0>8wG#qt_yTH zG@;J^A#M;6kq*iJ{lfTG&9Q^7EOzuu;p~YaGt)4`^l=UWKM*wby(+B5iortSlH%#k zWw56CmCMh!eS2dqt|wsZ2eWoijTzLKLdN#|Ru~QhrU}n9N=&|MEn)qyqrZ@{b+WBq zJM=Y7{3XY4uA7I3dqc_miuW<4l7=Y}IwV5j->>JfDI&d>ek$2}0@Sg=C?$uJUJSb7 zu`Xr-Cl1M3=H!iYY4iDQb(-}$`;Ik~vNl=+lpGbHWL(eYj77FkHF?Nc zhE@t8WyLYEhw$A?_RfT6R$nRqf)~!Ma0G2ShE$3xn!dB~Y(B;ev}vPy*9Taliqu#& zXt8Q%w*Ti>66;}cu(xj)J+`Mfq0wcge^4kPh?tyX(uLPWx*-uV;&7tisp42CcdJvE z0!@-2s?4x4=q>{{_R4KsVi^{uMopr1k+@u~N!3)wo4l6BiT9bV=?&}3i3b9Gvg9k= ze+3OgLclXhd!qWdyd|@ery$3y7ca~n*{PwhmM7XG#W>v$Q@)+I@C+0d{)eOAEt4D$@_rVm28*}Pi% zeH6lcE^Qm%WQtk#;1|f`0=!`xeaAPqjNP)sUKf3?bvJ#dv!*$D6CX_3w9VfqZuS6Vjb zXI2tsvN`zn18fnNb;C?2%-G>b>vxgRFi4;Az2E7~-Ga?+j~^e+GkJMk!lWYWiBm&H zl}_l>i|C_H2mX^MUyO&XTB11GQDxWrjlO&BnR#|Pm%4)4z>8=*#*xDCt=#IN3N-=L zL1%qaRxncY0#j~vQ}r=~wPlmljuHTWa-I*N;DSq9#^IQ4gBZ47f?_r zRBS=&_$@ftaSfPFUXRS1BTM=WvD;FJjB zL5JE`MNbt|G2#r{K!-9{!_HRNezaCrr1|<7ICCPGM3;kxiniNALycoF zgN@WeHJ=5PXAf+Wx;5yBS@gbBeaBo>dVwB8_Zbu|A9d(Uc^UscQrIp&_d>y+_1Fo4 zdZFMz{YbD79DUzzUiS5qH4UNAk7HE+01u0mDMk9vK_EsqZxsEjI|~<5?zZ0q)PcP2 zh;oQTCTM`!Uzr!PBq^5j!AyE<5Mf4l*va2A{Dk3mcf5cqgK^?y@Q2T$cAWk|e3kb) zk9*uyhQU?&875Y<#$P7-h>4h#$V}{5P%d3{r@r>$TF!pw#?{Gw{FEcEU!W^kX#jD{ zQ2**>AuX+&-h8k|PWw8BZ7l5cL&EhutAl&@AqA~kh-aJhs-De(RI%lwpjUr*%~6s5 zbbtJ2Q%*d)0rLylQ3@o}rDVLKx)6iEX85^P(v>(pIoO zJ@A($hGnVAvNV9YCf4&>vkvr_ywQ|Gq;b8}wX>#AhY|guSHk_0RPi&<(cd`XD;+lKXXKG`UttFUeQ@m?tr7 zo;%5PLq@dfo`{JtzHildKj+r;eiC(LSX_&6A1>YETBMiBoE8Rq;0PKE_e1_jQV1ug|Obyjt+Z;PB_7%Da<2@n4G5uGdp z_HYhzfdGcksr80*(iH-yvKd=0MH@4g-h5@xC0&Tg(~;DO(Q2^%JPF< zda(GCs%qm+_gAGw6LIHo;IwLS&)SrsMh#N&+Q)Q4Xm@QZjJ-I#xs0Pju55oJT&G$R zpWH(dozlPZNXQF1Dvn@)BZ{)E<0GbT2mE@IF|+FVrsh`Yx6+oNU+zw{-;$cj)?-IG zYjE&ZZ3Whf-yKHZ zZUNPRo7&>#7hHQZ13BkjCQPJe87G(Y$!Yo1dZFuaY>&X}`Ohu#)L>s5#7(wS?TbLf zEiockU&g}UfZho#M`@YO_~(|^uc%0ZSb+hsPNLa%wrc-4;x(z-jg0eR$g<5U*u8@3 z^WCtDKV&V&+xD`_^Oj!#g3-^tm#wA-B`paxd2jzN0*FltJAc1AW=+X2Z*Z5u411koF?);O|+Z{99N6eG1fMG+~4TcD#5Dl zNSIE^LXX{*V6K_wwUXQCItl3b?ttp_BmmkR`(uBychbl=o^{bTdCs%meH*#jgBp*# zH82u@_h(+Ipw1CB?IlY6LGFYyNj8L>7BTtj)bB3vR%+>@?I$lsO!>nqTcApwl(I$A zp=F*bon}m`0Uf1&k2YK6&^9$Qv2?42O`dH2lcah!?MQpaKz*ofX=1=XwZc@0X0g)I z?(-b%dz+zrcRG1J!^BrnXxLPL0Dy-G=ObOHHH#4;Rw}}2$l9B8$Wm%ggpuM zWf&PGTiNj}=Gt0f!v&VOmDPtTX~u9?r*PW8;n07)6Vp{yTxV%UWbAtTEv=ilFZj9$ z(X}ir(_e6MPRvG)?lyJ^1!Pz(p*0}T7inZERXFJ<`{@kWPA+v&;mg5)xVPP|TBMie z2QpT@yIK(>zQ#2LZNP%xU9H*1iYL^G4e9B&@$D)5TGhIV< z8_UFhwYr^CTjLeE#}jDdsBv%<3=djh&T?ln@HF{Xh7>MH^L)QZiDC*7P@qE_oUHOV$R~yV<(CC%wlOp$cPsI*Tsfm^TF~8;FkMq&v#(M zZb!I27z;5Eu#XWoRR_zcVOT(M%3HT0H88Wyh-Q2r#>{K5+!_0v(0H}u^K^+KNCr7- z5w@Pgll}~9QP9B%2kJDpcBPKNDklC)X4sQvIEun9lB7>gZ_||guz5(Ly z$S_N`$0o(KT5f>~HSm(0Pr+Oiw68F@ZSX%ycsx*Is<{Dw{(TswS{km%zo_>=4|B)Jt2quk&VijQ|{uO7iex?W}tVXqKP&JL1-c+rl` zXOG3&D>VZYqy(Rldb1%&%7+>wbH@?htATt)ax%U?jQ}Zu|(09Si60Q`V)|KyReLgfYlVAJLmr#mUBsR+o29c!CaTg~@*+_wIs@ z{QVVCfE^AvI^{g<(%S(mc%|6pn`P;Kw8AQWj?GcE?PcwLwGmE2kOPIx77S5mvDc|B zEVDD!3~4CplAEkvv)Wl*+EuTh_?_+$$!?>GcjOicX||m9b6X?GKI@W0@i5$(b_JSb zhdcdB`|ss8ow#0&<^8!5^5VL^&du)o^BmpHSw!AawhtPi%4_<+Xe#%iqL{cD(Is|4WlL+7X#uBB1JbfFGIt5B07?`e>J?`Y!geKDb42Y{d?1a7F;k zt>KDv%MycAc^F!?f{7Ww0%kp>?Kq$ON0&K#OS=u;N?!fFXP%KibIa zcpd72hvwQp{e1FOi7&TbKmN`9^+pEKALfpwr znfEKC`3K*#9){*M>8il)=+>uK!pD5H;G2{7K$mZ;aj_@taOdzIPQXqLnPecwD;9x; z?TvSEv*u1+*DqjzwLE|@VIkV9B*LMWq$;(Tq7gDp-_&-5K(VrO_?#xfn}lJfQRbUx z0n=Zf4UvH6yB<1!rhO(M=bICT;6hH5V_XT76*R)Hyl3s(pdT~MzYuaQHd(vu!HA?* zc5(c|dsFyZ3ntUZUVM7_U1w~SSkSX`M`>Q4?+}h3reTjG7-G>s+%`v+aie8y_W9dR z$8!DHqjz3FdUHs{%Bjy>48NFc*CQOA?E2e@9{% zPRG%wUg6DUcsez5+cK=Fq(P~AdfZS~#9<6;>_oCI2j;Q-UiJu|IlT*+=6XHPS}S6( z2I$9dxAap!OlX>bEFweT+tTW_okDM1l(DxKa@c|1kWgo|u^9f~e~$IrHtDBKrqV=w zXZUZ+>Fo(8b69@_+=EguN~sxnh3(|w<|=b=jI8=2uNCQGSL9tZ2^RP+t^=GI&LNPT z1$Rl19*kqNPQqM$cvh6w%6#wAixhydhWLHkeTRP8ZjeC0v5;;dWA#6575TMI(0Z$T zp0gMhb3+XuCnZRm{op^kO1kS@#sM+QD-V99fw%;_H}b<;c@ddwlJD<}iR~4U)pVDM z6Pu-gpHCYmQYgk_SovbaklmuR&@0bwSqJrcwk+>~%*r|^-IYNW)>GSmROBC}n=Bf1 ztX1hrA!oCG={&_>^ysJ#SQg@6_wwgwTXIX(+t^}khb_S}b#=L(cj@{Ec1Q)DDa~r-Nn*(B*ajc4tAw_b!V?7S3mV0@Yo1JI7$mO+UMx zh0{m9ZXeM5>*$XkQI>VBXmgfNDVdssRePZIxE5j28x{IcV>*UPY)~zpzy%OGXaz{!O87A8#cPv26MVogU)?iL? z+uSf>>a6|=yk)Xcp%~vl)B19TsIrX*IK~}%uU|SIZlz_Exj^;x?-P}pa4Ec;u`Bq^ z;#6u)a-kE`W=rgf;H%5*kh$Bf3h~S=XUQoQw-hx;l4YInJ+&`2+={T5IjhlW>+uZ| zV*dmtMhQ(GNDzA&?$YOJNKSfc@^Mm0XCbs%DAd^3oYw@eP$NK4R|YrrrxW`wm!8wu z7h&monmnZ)!o$_;j&o5l-aNh-S*_G-_bgjRd=+sAxwGKtfNHYS;b7)fY2E)Sv{0%% zGJa*ij7}^4wKyroH4Kr8kZrrSS zmG5RtWS#+G*G5et<4LT7R-GGehpMOOWs8#75$4&A5iJ1h(Fz(((AU1~Wj!#~m{Syd z!{=DE>Ggx?jvb~*sObh$M@?-4+iR1EpVx%%Wf-|S0(9*Adtv{Ib}M0-P!Y+GIe^cr z@YnOsU@5QFsbRFsnS3vWIEz(CM|ngnW)D$vBzWZQ^T42^yH`7b=k)%Btd{4lD3B*% zVrM%fRe~~pMpZx8C4wv24fb<8Uq7NAkcBhm*Yp~G+h$)^2o>gsiG6>5tsfi_pW_JVI5k0j3=fra2;hmb-YTl6VB#vhBrujsn zCQ>6U&*u{qUP{w$ofn3ZqrlEvIKqkN$w+T8_qdUPI@8!>8D4zFi+Bv=FO) z2Z%V%Y>B;jD?&-VgWfDTzkoXw7+t1tYXxJ6JgBFWw%sK#fzUSp>e$uN!;$0@;Y96~ z{s*ta(@_hn(sHcGSCQ{v>{?GvR$3N=gk}LIWX|?OM=qc*S&=uCGPeaE+cR~)_t_*! z#urpCZpqTM>QFg*L#*tJ<2-9rH_lb-{eYRS4Q*U$J7tAtSQ589+J__M{Mah(bRy71 z6gY8BW$5))H;F(d1dn+#uniKfGg2xdmvnE+Q)WWf&ObnIgL0idW~fB_)PQ(7A#>HZ z>#nCx8y@&ejnDLr21@iGUZ(lv~ zJ2wc>X*>6AYtB22;=coY;twgh=IX89<|);;Mm<3BzT~fTzM$2uUCH0^6~napT0;*_ zgDn|9KdlhhWgVfnL&#bL@5!}FbBeZKd=KRB&72%<53Klh3Omt-?6Ka$0=K~W>;;k4 ziEZ`e2{7My9UyI5cWUU zQNLPjnBp$aEB&`tr6|8;SwMYoJ=Y}~R(+Ikw>!JP-A?obr$d(APP%b<3#mrG1!8#L zHDwZBGW&Hcd_E=ScdK6ULO08wg4Dqkix_&jKFKe(xDX1nxs#F*M6|I5H1o*$)5NLY z3z=`?`i9w%$d3>@Dg#j$Jw_1Wk6GzOIlYh% zt3277^VlHVOIV}>Nm5`WSq~rWFhN8XW%?YGBwEsfH@UY=tAGBqM_-O&OJ+{?N{>OS z>HAVd9}b1`eTO?5Z!?^Hl@DN6UhaWq1ZX%pkID$@z5nW0XDYb^$^@|o%ck5v z+460#fpLfgEL9o$R(R;*b6in}GtrdZLW%1X`UW)U3}fqfshg^$tVsTtGlssjCH^IBqgFU`;f}_=q5kx>^k8!pf)5@ho`>IQH)>kfIw)eF0dp*~ zbr!-~JoF!(zsxnMv<=^~-xr#%44QMU<13ty70l&CaNsk<6Kh{FC(uR{WnzvIDliX6 z`XExUOD@OnK6JIYO^C+6lJacLh*Ez7x`P}tuPwY}15cM7H7a+@Y9sp#`R5rlw_I<@ zr2&B~Z@OAKrn{~#uEdfI^1D9%P=jSph$u4mb6A{~tXs^q?B?ouY^!K4HFt|-OI(q3 zcKkU*O0s8#ND_vX?nhWhgUpu<3g~NonwJ-bC(Aws9Fv<4Hv_;zyF9mL1VGb+hJ1jYG!jP76I1R{`%gR zaj#JGyK7Mksw`WpOGh}P_`XyP8h}OYrixb=5vD=?+$qZV0Ze95&(7;53p;5qnF327 zY60imVmVO>2;f6)zr{aZO-26r_Cvr!j(KqrBp-1}V-8t(N6a3~tu1>`1*pYw%Mr?H*F4tq%tY%rk*syf|X!#md;{~0E4 zI{_UxtcU0=Tc7bk_!HEl+$@{xT}g2nuqXb6_yL_I^6yt;Hc(G2$DQL+0>Ya`!jqB* zf^^v&H+-Z9jpf2TUVJP%8g0QZU~AxAjLFNjI4Jq7zeq>oX40(G>No2eAfhNQfTj1L_Oa;MS)Jt3Pi$F11X9l$rCb0GzG};DEOYBArc))bPT#%CD z6#JII4~JtVA#waxuj@5=Bn5w2+bxfb^B6y^vXHhhJe0w=mi^JJz?nEk^1^f^lT~wh zK2l*twtenN!jP(=I(J->2WyK{S=BF51fsEO!8>5$I%FV;h^+Sli);q#Xa|`7psmh+_xbINbFXU zcl$bQFFb2tJwrn(Sx^Qy>nq$NyrD|NEip>^w=)i%iTnWD$i@4grW1gerGF@C;OHWM zFT3Rg+Y=GJrqt~uXY`sg+1YA$a!3B9w*;ZhW}!GuFcH^}c-}e==9`}ZB!kP#PsB4# zW<}`?roKv+*^BH$4~?d=*LIRJ1lS}w{jekQlG0~56u^$* z*Qfd^kZR~?WGN{qS8#i6kP~vxY`GrnxdW^t0s)L;S+2~kul%{=_=j1?Y-(wAjdepx z4*|hr26e6ZF{8)~+12fl0fx4HHd}S%#ZhBpz}}oj8GFcu3z?8Yn&Dz zKtyz)@(dkyxt;yL)&3_bLbH!(cKX9mw6jdvlS+i9@%7#p9BXb+1hertX*#2xgv^Wz zZTy1sQ;$p?n_LuvLZ8PCsYX8N*&J9=wI1j@{UszM}L^+%P#_P0>#(POR3F|_up-DX)(k%f2mEq zkK2#@6|l~QgfqmdVC&(@^-&RIvBSn3UYMT2ZReWXyo3j28$=5+Na^xF@HLS8t;qlC-FKM`uA+$CA7Hi=7)ojdE8G}Q%Zai zy=!-;tbZr!8h+UJY{a8{v)uH4!qB6=U3dHb`1DSXFl7;csmbqO7kNcPZlghiV(fdR zlQX6F8Mn;yvU7|gW^fFkwIOo3xItso>jKY^H5S}v0pTX477uvi(YmzBdpA^m%?(LU;P%G}6|D?RJWU%bi3GhOW zFCIT(g|TP6Qe>Z&eR=0XOjSzS2Ow!1?kV=l-82*RI3_dcB0>yvB9Y7t<7Kb}sfX$P z(-|jl7~0&{JR@)bZ*I?Afcaalvwv_pm>H(Odn2&Je1t5CJ^wP#5MtC(_Ym+<^jXO* z6T#7<&md=C=B}|UkwT~r!UJHYMoaZbqF`;A;R~45y6eOYW)njrdGv@o(z2cR0gh|K zj;{R8>^h|Z&uof0fkXL)?v)9OmXi(UJ4pI{;p#)Hn9>al%%`Sc;m&6S7B`Fep5lTa z@*PqU+wfB+^PxL-dde{7zh705xL7k0X{ZbXk2<4VE*0GbC)*VnMz9{4!>&x_p#)3Y z7TlLqCTKQ$MIN%DjR86Y_wv$0)D$p{7Sx!VYVrUOz{@=A3`ZlVZ4b@gAPg z>;iIO#xq=@ge89yk|G{V_L0xfrfgIC354wh^ zh^fu~LatOTtQ84lNdBP_7nVE5ZCS}%39fE_9AHXyXA=_)Dk@Fq&0W&wDSoryM!eR7 zpr>Yz#8-@u`pa|8kx@BBq}zw=EfxmnE&GU;H>A>G0(zGO(~mPJJuC^7I@+{(L~lDe zCgZg)+7Mf`i~iH?hGLjJ zW#mEIz+s#3*70EF2Tf zNEX>rmOW45XH;k)Dfe7B8?vHfVIYTyEIJhaLyP_HgzNnCP{q6@mJzJaJTrjSqMO}A z^~@;Z+4XlD0Ka6&_3yGde6TEnn!!i(ecr_xBC-Y=)hCS=4Y5xDZ5p?AK%Ci^{wY zHR zc_)l=x;5y~x5UPiDxjXtPzeMZZ1(e;3OUX&P7;1+U7!P zv)a_j6Q?Q#o=zLltfm$Jt#f{lU5nHXh&!5_()N4#R(c^sLBWHZun?!dxV2xcPgkQp z=3UZ}BPBcNS8C9wu&d8s=dhht$DE@hk~m+WBK6`4nN=IBc{(<)o4vCQq~Zp^L9&Xd z+;A1p$YjP$Q4~VjH1JZPT1lxuV7g)!(05qQcSI=aj#u+Utgu~Tza9`4+h3@x9un?r z{{#5MZw?IeJ_WJ`Ib3ZOTp(phZQ$A=3%=Ja1@z}`TT2@MQMm6}<%i}gq@ZV}A6hGl zGP*_TV`zhI7F0~tXr@M41plZPQXDRr3nkYhwb*B1Id0y4l8g6S0>>Q^wLJIBwJ8~z z%pJJ+@fQF~&nL5wdowc~jKuDF(jEVR2blkJ$HBYf$YGf=9JXWNI+$?k9}@^}3fWL! zVo$~f$;}MG-PA1_*&GF>7ck6m=tuqGp2(_N;FiGr>$XHOtK(pT@i!PCs-kI&M!2d$ zpS2R3=YSXR@_M!CIAG~OXFOJo((#E|%ZD`QzWZ$^38$sX;rHJQN{+?BdAbAT>O{#P zJ@Og00-5---}K!vl!ITd_n8ex0qn-zsM3p3!#HDBb;rgV>(Hy7g#A7a|7Asc9ND%- z4q!dtD`ey)6cn{e|JJEjV~3-(J49A@upY2`=rdHvChnc9D`Vm9i|4UV#c5Ek-jW9f zpfz5+uIO%rMJZ5YlzwvY%>-|udHV`;o=h644par<)?x+r%5-o!&ee?;a4(_o|r>3DRZfF*33RiEtkb{Ojfw%UoNP@)& z?Vfr8Y{UJBj@%x1=*KeNf27AHh%5-vaXwfSH({Bh zWt<;kv?b?WU6WCD?DVQ`bhZNr*(;Y5$Or2A)(_dBGd9=#e-0N}a2x(`{)5a*fQ%vl zi>c;gOLt@(9d+9-X(dKXCT~A(i%e-@8mIyQ$f=ccW?S}ZD!G(`k_@}Tw@%wPU_Tr4<@ zlrZ)`b7*8{aU}*&7G-^<%*0=Sr>8&8;M|~G6)vG(@YTz;Ra5nqeD)Q!q*$eBf!Ykr zJD%-b9-X-t3Yw`;sPdxXfP5D$mw;@BFnyI-s1AZTuVUmC9K`3$uAWm!`%0Pm_S;yE z7Nno&Gnx)w*zaH31tt6A>K)Lg;hJXW5SJm1G=knCu5~}X)}DdBLi`5@Wk13r1Rq|T zoV4C&!97Ur_!opX6zz6*_D=dIV!+4LGYWB&gGEC-g|1uS z^vvAv^}&|&QFZLk!k_@M1iXIy=nD3WAz3nMJ0cY{S8Iw__7>VS?G35MD{xm`q;Rl~ z?-&R!K;`gC=_lIiP7SQk!$+FZ!%?4hS^D4FE5@YXmDP~=jWbgkaziRsbOB9za4drI z_0H5}fZR}RVv4Cx#Qq;AuwXugzZcFBIBpn+KEd^o2t$s2vz=;n9k;t!@5qFMtJH~S zl@AgS6$-5qa>I~j$(X@Won!4=a{bF%mws!biRmP#XC%8jqhy9ii1XiHkRTzysn$ZG zsq7|LBqSX5BRiGkM$5_+q%2m&jH;tu7BiSmH3*gT#zAo&$XRHGwRU?^u~iJ$Xwuf} zjp)i4s@@}mrPS@?1`9sDLp7GvJf`Dna0@>$p0G*HRSmHA7ET7ctT!Cr>GSsmTEr?~kCnpWkxwM~ChysBpzq8T) zCMtyKP^aCC(0n^Uh|f9vt18x>i7$MyRiJzmJiIZzMv)!`5i>`1-mQ-!pDD*hTH`vpp|6BSrLvm^MW`{4Qwr^yExXwPX=CA1ln(HaP((0U{jiHvnpGMtoKbRlkBjvwhDn!ULpTs?wnR8V99CTwW=4gGvcI zgW$+t8>IXtTPfedK)xlN#+kyOm9Fi73YD3$U@0wRwx%A{vq{P*z^n$FOpTVWns=Yj zZ_7(r`9x%MGo$KuwWI$+YlpP7h%fYS#?qw+@GPy&dxU5s!Ovh<{CCkbb^!$1-`<41 zE;q@=_6G57hF5*A60@2?6S@^F z!y=`%k|~{QvBbp9gf1;D0Q*|?l1WhBz%3)SrqS8@T<`O$sRDUKa9O;vkBFp+)6w}5 zp#tF@n<2=8&Nga9k$v?xjf<1+kG8;V_RB4-lRBlfr*p?jw)Ih}p#Ul$CH{7+uhEG;p!J__8fQ7m3f zO<|71^1uh1>7QYoC>;UI%pVELLH>|O*|S;=t6LWFi`~3!IwxJbq3ob@Y^-dIXy1aD zj~U3IC5Z{Kq(!je*yFMi>L(tBjpi2fx`!TM^?{u{C*!Y*C@;|h8ZC<1$WmZ8nJK5Y z;GpcLhkW*cm^CKi&R7i#Y1Pu$MGR)5@NAySCv^W79LaC38?GERtCaR7Iq3v~L&Zx& zE2RHMMw&*sAgfZQQ(i+!drDLA1wf;HW#XQ-7x4{ej_FMPcKc9(go9Gd=m^q{UUUoH z{%iYArHO+Lg!;w2HO@G>$gXR&E4%!h;#fI4<+Mi=B>6$@_$V(MtCV!+9U56KCVrCF zo}}-`<{`HE-WNAdOs0hCTBOB$J0!q0JF;k@n4O&$>QGL_>xpn?O|aHkk+-cO^?S=X zYkPC1!ED<)>Y+3_3-b0vP(c%85A z6&S@vXkefKU zyyy}AC(;(_t+psmZKOatMgtUgCFO2OmYj}46@bHXCJRnt7tz^Jk2yv(z>w($14+Lh zy{e#DlosMDiiQ@Kov10hBQLjlr}g4fMQ#w7MyudnU#+(@^2ToxHa3p4O8IrMz7ydN+aW$eIK|GYeG${3*9 zTn9M?g(!HIGj;Tr4xfyJuK-&gs6RT1pw5ZOrR$RCIt)UmF37z+sQZ6H1WC#i2S)zS zf6p72DOWRxovwa$Ei`w8_tL#}m$MI_2_%bX8D2zo(f?tscbBE3^w)&1-xURezs*(r zn2=0+&M7?NZgDd@(kKOHIUb!Yg~6`2E4{4WRc<-&8f?m3!p$mj+&s8b4-^^$zzi4qM#5#4lA zA;B6)+ZFBuVCIk)IK;*l@HTZOwbUMNkw+P^FXYtQrfF{6ioN=?ogQ$^&@x z5%Qp+oT!uv+#YWYLMyRBFVJZCb7fB13<$kT4?`}_i+ zJar{fQjfrdyv9)XS}eeYOJspVk61XTrf6EL`!fxHvSD%UPsoZUA;+ZC{01=l$${Tp z_io;n`nMsDh~+4(p;IvFcN5gldz0(&?i5P4zQPf3N15<;NPh_K=4mpUO3pZ3c@eDdvV1+~BY>4ZmP&3#Szlj9Y>*h4gm+@S31^s~ zC|@vec=79*p8$9Ny?=J=ja`0rRAj~OPbGtZNyRW+HWy6B9$q1%!>X~N zi`Z8tJ8PA-1W}5xicUjiR?!LpGkw)QvlW|eh!72a-Y@DSG3w#`aNE4gY(W8K`rfYE zP%EytAIK3j6e*>sET-}qdxn^oxk zX>DIO75tT4Eh%>S-H^Jk1);!-<=f3s#%r>dHFh_%*uCMJN@AbAE=ZO9s>)a{lUV?; z56_C>(T&m+4=-t?bmY*B{xz&P0(m9H?YvK~RjYr}Uo^_^zdjj_0@;oGF@*w|-|^@i znHMjXgH{Xp=AHs7<@3BcXDpJ0pS?0q<@V>l1iY}t3w;kg=LhchpX9$d{LaV@5#xV9 zW8%mE2V!&OHIQ0zF!oML>#y%Lls=xV%Kc4T7#WpO(b`#;F!bwT*#|FXlM%HE`PyCm z$K8$!O&cVAOe3QcnG5V=kA$P3F+DeOBZfBBVN+NjMxvFn9D6aQA&Cbrpwnw;n$|Sp z^DVn`E7FT}RJEzpd3RMu(Ywj}ag`_21B()g#T99_(Ke>L+P&f#A_oq_V@w`{3t1<1koVyE^fqGBm zzolmS-YEgRjsdubd%Mga6#wJ-TPtE@6j!U?8FY|?IiKv}C+}og?=a=p1jd`2KURA1 zj4f_RCqZB2keFbk`pUpR7?AnvD@#E=3fysda^t@Q*BdOqwd6_BZn?(WUeyj$f2@ZR z+#nwK_=r&`3DzJubUkkQUYInyZL1_U5H1T3MA!j=c@f;UdHFqY9ATT%K%IVwWGKXx z;JHL3VJ*&>b(irB+GDe-PHfMbU)@$${YuP2oxuQ}$i7Alt3ga+10AP}*=2E6S+_a*?c4+32D!oi zAfVCA22Mvgv}ng=N~4KIbLu~J9vFg_Wp3-VeGWBdDf>c52Eu?peNL7jjS$mx$FWtq|dr$?E;15@48Gl`v^?^zftKx$c=|J z!cjk1cLKSxBHx4T_~gWTO$hJH%lm@PNTz4XQTXH1$Gb1UUNWA zX>Doj;MIwBRiETlDV^O6uY{&B-`7Z&bAAJ4+Zk57P3j(R525GPuWri~U_cBi2i%@t z!e1UR@_tPd3|EcKr8<{!X~HD`>yiot6^oQ0u~-K#Vwrd}a*Gpnc;8MCT1}B>hH(#t zX_oLy-rPHVf>e1Yg6&PSdABm=7=;D>u^&{jh1ve(LbW?#mEcgcy_NUg_6XJbbaOyc z%8O(0P`Eco!L;TErrs*MX*4pLiVyMV;r3M1FVZzfm@2;OdT>7BA>)2x8U)AualSvt)ConAq)3 zWH#Zfe;1}Ne2KI^qNuu@LZLN4bBEWynMj;0elX3RRY}|~uTK1sy2k0mCh-y2q(!sZ zRGyHv;o0$yrI>y$*L4ls`p+yhyA{K{JzqEk4Q>IX^tbocj$&>1e*CRD?^s`BcNWmqr&&*48=;HpOVI`f~je`$x&~6-|g)|<^L6%_+?4kH@e@sb+w+vvjE#S1YynK zxe+p9Ko7Vy-wo5xJisOo8hLY-Ufs@!%&E-Zh1CAkz<@cUaU7nc)+`f9Y9t z8IJt|gV>@s&1%eaGk}mRVMjAs;w&m0Wd>u-I5CZkc2v)z{FWqXANLCGr~$G-qYg5E!5RV51nnWe_DP4?XH=NsP6r<|WW+aJtU)MeB)rN>6B zG%v2~*aufqpA-f2AVdWuExQoTy;Rr#A)IJT~Mu{_u$OMCVQNKwu?Qoe-=53m(EW|a7cT=u%>a}dbV(r-<@ zZlaui?IGD;NhKsQ7k1VpwyB-KO+|e~S&EV^9czE9Yzi$eSS*Ve>Sx5bmYJ`L+ z+KMEZdTL93;Ijq!)H5otBa?`0)*V;%s8nBCSSR0YmPXuY4C|Iv$}X=zL9H%TyLIX= zOAo~JKO_F_Fe>8DwlYywuRJv>FQ`O0qrdKjXhELIM`if2p-noMB5o=F^xD!QB7dc1 zK#qQ^WhCV&RI7`1suVXMO`H0Pug9!8A!^nb{kv8DAGNsFE;?EawvBOnf3N|j``Pg% z(T7%wnz8KMh>iBcl|BwbKZA1}0tt_<`LKFkvvG8c9{su91siZPvPF({U|sOC?f`He zm0+#yA$>Jr0zT&@JAGl(A?FxxSE`oMZJ?9nN}NnfH5+`zb)NWFUlUNp?0$dPw1!LH z5MWzafJm{d7|{sygpG}{V@GG24vt+r74t@oTe(`we6&A51eUpoQE~d<< z_*ed5H?8$l7U7GnSt@CzYU`SHE!ls&|NHSKI<^xz*j#fuF8P;r9D;4x@0f;?&At&s zR#h}}K%6ojG@wl^^p>bJdd+6MGGsQ4&I`a+ep2A2>jjPm=AbNE(AQ^P42qWF76va$ z$4#S&y?0-7(9eQ~Mp{bL?W&4Aq%ba4F_W`e5!=8=+~Q0Cia`6Ejd8}MFGNWSB z6zS58`l16&syZ0)1z4yzjUB(QM|aH|QujKL>*cY)jA8r0x@-EHw))7?Cdhez8YapI zMrVaf{_#j}NF2-fI_cASd{64pC~s9OVpr}Ht(Jq@0oRLB(m9Dr7K34EXiGYO((yIF zBDv<)B?|54&}L(~|NO(C9l!3M{@|D$$;)drGHc43#rY9-HU|Bc>H5oP9TFGAuT?SiOEY$fed7a1ZMt zAb52<6wHs?I$G@K^Rw%l9$g{uEAN{nJ^jZp z&*_j|EjUou;)tvYSU#k$Z+`+Pv~;OWu0Hu;~u3pyQ5(@VWz(zF~N7{+rQj*_x^$c-F)8k z3w-+Od*pqX_qNA$%+s+T&WM31fM-6}*1c_7a2PR@i<=w8|Y(qaOl}FOXks z!FtzgvF`9^%qRa@`*>CI^Jz_ou%jJ}Bhk~XnLG>!*`{}GTlVVDE-!24Nx4r0{#DR0 z+ctjQ%-T4{^sfNrxyS)`l?}9W5 z*?{!<^{;eZ=mQF{g15hMlSC$vB{a;RcszD>%nvLQa~LXJb9%&wtlyzvt$<+gOw!cu z8JW^MdwKIIEIR`@W|AKbwAgOxK41#&<8S(hGp_EO!5Dh4p8D^PbHr1Cw!!><5B&p> zt2;jG9t9TdsAm426LKD|;9Ka*XvHS>?hxthpZsnU&Pz1dpM(U<%i5L4W<|ZS-C5%n zlF)g)?p_zIQ6-3hpC0xCg$%YBMzSj!3!6S6Kf18Pn=4=2zvvxpnHJJlhuXUfje!F$Pf9fApiqm;-1?XmxG?rurec#VR{Rl$GVd+f zrx-n%_jV1!%=Yl)#_V?Xnv~7(WqxMI{g_wem=t|DJ8sFhWEAu6FM0J@$Zk3m)J^~N zB`zVf?i&c&Hp9d(mjv+6Y~kS(a>Ls&%u2v_l7^#T(gxSmzXF-dOa8EQEB=R&w9g!6 zUmwREpp}hL-nv%U+>M~ji-Et;>a$H>%gv)<*MAqE-a7^;#OsF|#-_(|_RGY)y0yx> zb7Ct4j05sddqtanBAyg;*e9G;s{b<^ap-nCzgxj-oW3$8Ng(a@c^`HehIq8srmevy zvKCwaT`K2W2(W&*=uAPw^R8jEkFSu$cf~B6!*pmwlPr`<4mNd+|LZP3&4yk(8gb-o zaiStPOoZK56yRcW#pHSo?9SjU65j^m}L#urt#1TI2gGPH*V7?1Prh3el#ttMHY`lZ3&dQkL9cSM! z5o2aXq&zf6Ih%zMM@j*Uk*H|(Qh&|Zs)D}6?;lW#d+;bfudEh8U+lkvfdqhyGpVHO zUNapfrV=S8G{U55zj$>Bcn{Fzb$fQ}@zOzGo}3qCU3a4X(krulf9s&*F+-%qcBKn4 z`=4%bG$azEdldE?&dI^B>|CDPTNv-96ojAowH%}MUFp$}2kseudj z4IWv$^{W}+fZl<4KD}N{Y9JgBeMLUKUQ%x%+*_@?AuWDTlov5t=7+W-c-SQvCksl&zWiMZ|#(3uEAn>BLs7A7V-0gA4xX>lxHqNaMXqvecwF5 zWhI$kuR%l8o-&g+q%@>BldsP76SbELwO!gdf%m}UbSv;9#Mj8pKA&Eh!3m$eYBb!v zk-Xl42J0vCu27fA6z6QdW=!n4q@6maah+ypv}M?u#A&TTbe9K*!y=vY!d6_*8-QK| zo<()cyj4F~n_w}Eo}K~6#zxe32!b8J2h{K{(0->23aByoBrh%OE8<*-UmjoCpB;V% zQnC($7~&}8E?zKQB1OV%-ZUz`>~tpGBV=caulE&41b2p-9|8g(Nsh1fLpBW!-`iXR zOo-$daGDrxh^%|%V4dYGg1nhK&x1z@Xi=lNPHE@|RO+DUV%>4+m`w6)upcZ-*=Fex z%uXPxgQJ|81ZB6TwTcBv$gkE>D?owduQR^rbzqFZH-;2`ap(Su(Av6M`B<0S}l9L%qZeaa1_e zX%uc2Vbf0t|MI0c?{=a5v7OCG8?3}rNsm%$8y0R0578?K^Rsw(hZq~`!}H{Ldd_yo ztIyI|g%!WWVjOuR{M#OER>oeYF+zyI;;Z-ml6?LFHGa%n!%~C1f-{c${%(9XoO#F2 z^D+~vQQX)1{n;92-aVh>T(VsibXy{gjsRp=2$syFu+C~>54jvm$3Zg>j9OPcC-=1o ztxFaNP6MjyM>OX$!(^{Vig6sF1eXt@ahRP1Y%aPuc~#!>89a7Ix5a;#_5^VU``crE^ohs(ild-}nM{C;B; z58-)x%RWtgpxWBu#oIEHfSo;sNF}`uLu>o971yL#=oII*B-6h#0R!DdB1tslZEWEW z8ix6lx-|m$D41C_M#{GFf(9=}s`F=Gf)FD$u5)c*pRW{YLTVz8%sh{sr}hk9SPS_4 z<~VH7;jP*8R-_{<{+y%R(_!CV5$A?0f6qV>=hNe{d#?KUW#95C)@bID_FqWuOl})N z>W=4|s;VjL&~}Nu^4_eUe>5$PVc1a9cg{43>Kj#oz%e3g{vcCv7eep2@FkbMLC^CH zn@fleoe`3&m*Dy;CGsNR*f-JchsZ_Jwy|K-W585^hH0>M?ws%|t)hR4j!Sz_0J;ys z%$6_r+}UR5Gj0a<_)47kf2UI4#J=C#ef>i9Hv4b3rSg5>E}uW8q((}Y`_R5#eml5V zj{p4Ez}jTF&$mRV27{^4ZDhxMK6+%LCb*xEYuw~hx1Nl z9cVD`BptbW6cxIcu_M*Teb?c4Hn|qky(7~J;+(A($!u`6jJf>LY!0S}!r%tBx?Z7R z8mYw>7#niY)C()>1}RKmwp}Axq49^i}4GcCI_U3>#Gf)_gK?tXJ)Y_6e%13|J` zCfrn*M0h05nWf63ZvsI}#rE~eGdTXl8hgG)rMBV$dIMlO8F8t%be_7zem({ZJ?u`2 zMw?gcCw8LUflN9-Bj-54D*4L0eJOu^ju?6vf42UFZ3nB*$?DxwUn+^|vom#Z5P{{< zmO4l>J^+qkXL!qCUPftI1wT4l261-8yc3}bpku-{o_Q!!pdM!=KiKxF9*{iwa zfjXcs<2xUZ(Ol6Q2Q$-Q@#1(vS%1k*wi$oW_6nP4yWvc~79yvJQJ|whY2K2Mur2T6 zaiM&kozVs9(`j1kOB;vdKVeQbR=-1cr-2R<3n z_q8H$J$sxg&i;gV=7MSUUd_ACKS{jH4o4e}x*E>PKvntN|6jB>f%8H?zW+LN!>7CX z!H}a62B8@ioC#f~@y}@$)aHIdrGXDM+Och6Yi9-qBqG8a-qD&W&zG-r|GfNm3C9C0 zpJYBBep`yyCapw^&a`a|S8q~-0mvE`htm`niKdjvjU)XPn!O}HG@N3tMaHfu3t8G6 zw(7$gF#@5^7AJv<%qQ?K&hQ$tDb}BIJk)knIj~u$Vk7NNg`+U0WPAUy7o=)U6GNUr z5o&SmbzJbXr8kpi>qOW|5+yHsuyB-MS1s{EEZ|4V+LLm&+?}+8NA^-;jt@g)K9fVD zqrY9P^NbRFE{Z(Bsb36<0yp>+Ouf^ z$^p>Dt@G#{fnHa?!m**RO!HB4(E7IPHkUa!bc$1xTlcJ$c~pI zq4VQs&fH`jmHzqHr^Sjh2q_$Z`>NSmUP+%Vp&Woq#f~ zMUCr{ME+_*7<<|n*%x#GJfSlqazQK6{a@$P_yX+d!XCa?SBrBP}1KH`?gKiyV9me>oOO zWO7&A5A>E3W!p%nT@gc^QlJJ1nJy*}{KGlajG6CU}s#nbN$EV7Vyx(8bDz zc~u=J@pJ+G-YwI(SCUP2Br5H()~_{+yX=bR$kK7FBVNhsgY>XV^z#5)zq^4|vf1s0 z^+5>tw%k;0Nox01?euMV)bJMnI`|(py0Oqv7o&3shQg2A@lt9zE1P23Cu=r(?!%u0 z7>mqBk>y6I(D@j1%J2Fqm0$<$w?yRu+@_p6z+LAr^Z0o3Kz)91&`8p~;~qWXO>AW~ zmf}VBolRee$sLROyY$Kh`W=eO(FbiM#94+cc)#*av6jLolsmXvPTrP3IcFy+ zsk_~MAw7TZdmgq|h?L0lVA1C$YZ21tX+DrNp)!Vp?FgGiiIzBj9B4US%>O$ZgV&F6;9d&H#;5Q`x1qS438O~Y{Yq*UumB=`-)HHg#P1YW! zeOTtvrrv3GWEl?U@~c%J2KmwAShUVjcH~UmH4G`i7U|otaHx8#D^3)6nF6W+#SLDf z{PPEc+UzqCp>QVbGRLm!E=U#!E|G*Jp)-`W?B@1!%eMn|KBTSqKQfe1ggre_*-l3H z8&2RYHLNl-R7QowweC^ovB;fAB(w@q^}-ZH84@dEhvHFBPKKIC(#OxH?XB@@1bKMe zzrjZ*Tt8p3U$O^xRJMf-Jq_mnL=|4u^~T4UlE$$`X_xDTB-;qyCGVeQ)yMg|r0TO( z_p5J5)LeKvn;W56#ciDoeMMZZdqj8t0U(a@s8Qw4SPUcaYcLck)ns}8;sDbw->No5 zN!@RDuv%bjC$B0~WQz5_aFdU~9B}tTM#Cw-DBc$+v*yVIr3(SjyX^Cj+s??iF?xUA zxk=!u0S!u(3CRl=+~h6cjgGD|BqY%V)f8+oAck_TV+MA* z4y3s{v-zf;|MXw>i=z`gGvn9s$SQh*u9Uv609-{dJ2G`Chk(M&Z(7+&o6OYY)gfvlc-1>D9w~)j0Ru8<@Dev<*H)SGFlFYvilUb-Pt%G zluam^l%)@d_UM`(yC>Q$DMZb)3_RL6C%_#T00?=Mx)d$Y*7eZnfz~RQczMe)`W{@If0L9TL)bJ_2^ogzLcdk zLLiCS2uLFR!E+v~@WWr8>KjudNOMauC&?2dZAaKok^=6mC`tD_y%>DFlXBTwzO>~3 zJ@NgRPv7=H0!P-Y)cr2QbS)X^>viG}=1)>iY?E+rge+BK({&w_YEAU_cLS^!dX zXp8(Z*toKqtx3bod0}1rZ~gXiefa+#mk$-B3nVO%s86(~ezHv4A@>s= zZk!&b^&J?4g=m>gk2J2)@hqNtTo0`zqvc@AkrL_*y{*`%P73M6tE1WRuGi61S;|7X z`KYP^?uInzarc*EPSms&;p%^w*8Wm*#twHz&b%KBmF;Zf;iYENQjTTj?zbHk@Vk%9 z&O0{nMTTo{CE|Wpj0;4st@(~)5CK(M;mazvgJaf0nbWd*AYe zYn7`bn8yY&hc11P9OA#>!OwL`QNE9x$ft;^_irtnfZ=*6@i?=CCw^R8to zrq0AhpTnhrFB4O5nCnjCLr)b6RJwBSSkdB_-5Kpn+l7~}I~uygOSy=jFl#4DQ3cFA zi#?@WEx^#4%o#Gspt>4isX)F-;T2WA0Lt1@GWI0CfPbPd;>*Z7ez4H?RB+H1Q3+6W zEd$)0tNfP2Tl+rmn{Wre5sG&RRusG6S*Y*9C}je_;=p>Pb`qWe{EO^c!xuCP8VB{c zX|d7g=%PpI=yZuetKxz3mM>;#O#x1OGZ>y?n~pb%{9ktNexJ)LFAUpU2k;x9QS;U> z!qg3MHyaEUYX$LQ4)mOjKaMs6d9;t*RI4Vr`VlG%j9?7g%v9~ksZe~&p&N7yOFxFr zyB6G$n*mA_u2x`|v+P!^l`7E}?PF*uXJjB3XARIx1s|G?BPU`0g`TYE%uCfrPQ^u1 z&CSK5N=0?%3y#s<{o5hf9r2rl^lH4z5&as)dl>YpjPG)95^p=aXV`S8Aav1H%sR*p z<*s1`#)4qhh#b%dgsv}supsEY;`I4*T}v2T$|<#PlwIlVJTjs2yq^r2w@8kdvpdGg z*stRxulNaaww$Th=^k`x&sVd5sjy~6$~cnq`iB~u1i#AIQ?hG#ZA**WP|O!m0?{ti zkcLWNODmjHm=(l;)(T7*i&+j-r5r>GvbGzUN%JY$IUTD!X4Vl)f#>K$tFR^@x66{RL!}HJg998ML&qK7G{@bU!Zr(Dtbj9~LYo;IKJl;xyI}P6Z$FIeofk&NnmaXp z-2>%+=TLICjt#`a+IyTkoeh2N1}ap2vyipy1*qySE{8UkHi_;t(Kfluxvb=!f-n6g zqj5Yx+&SGot;F_SzgXUOq^>exAkPv#BTyuFUcubELq%G|E!#KtTIwiWn(l$H0^h9? zxO8v#p5FqniHi64D?%m5SBr`h4$jfDHnB=m4myb$%j%g4%iUbGO&xSBO|SZ@l8cW+ z;50oTUNF0n+>{+pe#W{BJz0~xqpGH>x2)zvQuEYtJ@~Q*keTUg?&{L{bv+qqi)ch9 z>WDNJy7j(GR Uq=ENu;^+TlBoxJKMU8|14<0+f;s5{u literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..352c635e083174f42e3a1eff08790d051cdc0e8b GIT binary patch literal 29720 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 Uq=ENu;^+TlBoxJKMU8|14<0+f;s5{u literal 0 HcmV?d00001 diff --git a/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/platform-android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index f8baf99e963e6d8c84ef484f07db86dd545637e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10718 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 diff --git a/platform-android/src/main/res/mipmap-xxxhdpi/.gitkeep b/platform-android/src/main/res/mipmap-xxxhdpi/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c3243cbdceaa586a39f00b5dc1b5024e23f2911a GIT binary patch literal 48812 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 z%0D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 KgY4En{r>>gx}(tm diff --git a/platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/platform-android/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..c3243cbdceaa586a39f00b5dc1b5024e23f2911a GIT binary patch literal 48812 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 z%0D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 z%0D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", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.dispatch.ConvexConvexAlgorithm", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, { "type": "com.bulletphysics.collision.dispatch.UnionFind$Element", "methods": [ @@ -102,87 +78,6 @@ } ] }, - { - "type": "com.bulletphysics.collision.narrowphase.DiscreteCollisionDetectorInterface$ClosestPointInput", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.GjkEpaSolver$Face", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.GjkEpaSolver$He", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.GjkEpaSolver$Mkv", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.ManifoldPoint", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.PersistentManifold", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.collision.narrowphase.VoronoiSimplexSolver$SubSimplexClosestResult", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.dynamics.constraintsolver.SolverBody", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, - { - "type": "com.bulletphysics.dynamics.constraintsolver.SolverConstraint", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, { "type": "com.jme3.asset.CloneableAssetProcessor", "methods": [ @@ -273,15 +168,6 @@ { "type": "com.jme3.cursors.plugins.CursorLoader" }, - { - "type": "com.jme3.export.SavableWrapSerializable", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, { "type": "com.jme3.export.binary.BinaryLoader" }, @@ -294,24 +180,6 @@ } ] }, - { - "type": "com.jme3.light.PointLight", - "methods": [ - { - "name": "clone", - "parameterTypes": [] - } - ] - }, - { - "type": "com.jme3.light.SpotLight", - "methods": [ - { - "name": "clone", - "parameterTypes": [] - } - ] - }, { "type": "com.jme3.material.Material", "methods": [ @@ -482,15 +350,6 @@ } ] }, - { - "type": "com.jme3.scene.plugins.gltf.LightsPunctualExtensionLoader", - "methods": [ - { - "name": "", - "parameterTypes": [] - } - ] - }, { "type": "com.jme3.scene.plugins.gltf.UserDataLoader", "methods": [ @@ -578,9 +437,6 @@ { "type": "com.jme3.texture.plugins.AWTLoader" }, - { - "type": "com.jme3.texture.plugins.AWTWebpImageLoader" - }, { "type": "com.jme3.texture.plugins.DDSLoader" }, @@ -1230,8 +1086,7 @@ }, { "type": "java.nio.DirectFloatBufferU", - "allDeclaredFields": true, - "unsafeAllocated": true + "allDeclaredFields": true }, { "type": "java.nio.DirectIntBufferU", @@ -3152,9 +3007,6 @@ }, { "type": "org.ngengine.nostr4j.signer.NostrNIP46Signer" - }, - { - "type": "org.ngengine.store.DataStore$SerializableEntry" } ], "jni": [ @@ -3784,12 +3636,6 @@ { "type": "java.lang.System", "methods": [ - { - "name": "getProperty", - "parameterTypes": [ - "java.lang.String" - ] - }, { "name": "load", "parameterTypes": [ diff --git a/platform-desktop/trace/resource-config.json b/platform-desktop/trace/resource-config.json index d3b2df9..c7d2e81 100644 --- a/platform-desktop/trace/resource-config.json +++ b/platform-desktop/trace/resource-config.json @@ -1 +1 @@ -{"resources":{"includes":[]},"bundles":[{"name":"com.jme3.app/SettingsDialog","locales":["und"]},{"name":"com.sun.org.apache.xml.internal.serializer.XMLEntities","locales":["und"]},{"name":"com.sun.swing.internal.plaf.basic.resources.basic","classNames":["com.sun.swing.internal.plaf.basic.resources.basic"]},{"name":"com.sun.swing.internal.plaf.metal.resources.metal","classNames":["com.sun.swing.internal.plaf.metal.resources.metal"]},{"name":"sun.awt.resources.awt","locales":["en-US"],"classNames":["sun.awt.resources.awt"]},{"name":"sun.awt.resources.awtosx","locales":["en-US"]}],"globs":[{"glob":"Common/IBL/IBLKernels.frag"},{"glob":"Common/IBL/IBLKernels.j3md"},{"glob":"Common/IBL/IBLKernels.vert"},{"glob":"Common/IBL/Math.glsl"},{"glob":"Common/IBLSphH/IBLSphH.frag"},{"glob":"Common/IBLSphH/IBLSphH.j3md"},{"glob":"Common/IBLSphH/IBLSphH.vert"},{"glob":"Common/MatDefs/Blur/HGaussianBlur.frag"},{"glob":"Common/MatDefs/Blur/HGaussianBlur.j3md"},{"glob":"Common/MatDefs/Blur/VGaussianBlur.frag"},{"glob":"Common/MatDefs/Blur/VGaussianBlur.j3md"},{"glob":"Common/MatDefs/Light/PBRLighting.frag"},{"glob":"Common/MatDefs/Light/PBRLighting.j3md"},{"glob":"Common/MatDefs/Light/PBRLighting.vert"},{"glob":"Common/MatDefs/Misc/Particle.frag"},{"glob":"Common/MatDefs/Misc/Particle.j3md"},{"glob":"Common/MatDefs/Misc/Particle.vert"},{"glob":"Common/MatDefs/Misc/Sky.frag"},{"glob":"Common/MatDefs/Misc/Sky.vert"},{"glob":"Common/MatDefs/Misc/SkyNonCube.j3md"},{"glob":"Common/MatDefs/Misc/Unshaded.frag"},{"glob":"Common/MatDefs/Misc/Unshaded.j3md"},{"glob":"Common/MatDefs/Misc/Unshaded.vert"},{"glob":"Common/MatDefs/Post/BloomExtract.j3md"},{"glob":"Common/MatDefs/Post/BloomFinal.j3md"},{"glob":"Common/MatDefs/Post/FXAA.frag"},{"glob":"Common/MatDefs/Post/FXAA.j3md"},{"glob":"Common/MatDefs/Post/FXAA.vert"},{"glob":"Common/MatDefs/Post/Fog.frag"},{"glob":"Common/MatDefs/Post/Fog.j3md"},{"glob":"Common/MatDefs/Post/KHRToneMap.frag"},{"glob":"Common/MatDefs/Post/KHRToneMap.j3md"},{"glob":"Common/MatDefs/Post/LightScattering.frag"},{"glob":"Common/MatDefs/Post/LightScattering.j3md"},{"glob":"Common/MatDefs/Post/Post.vert"},{"glob":"Common/MatDefs/Post/ToneMap.frag"},{"glob":"Common/MatDefs/Post/ToneMap.j3md"},{"glob":"Common/MatDefs/Post/bloomExtract.frag"},{"glob":"Common/MatDefs/Post/bloomFinal.frag"},{"glob":"Common/MatDefs/SSAO/Textures/random.png"},{"glob":"Common/MatDefs/SSAO/normal.frag"},{"glob":"Common/MatDefs/SSAO/normal.vert"},{"glob":"Common/MatDefs/SSAO/ssao.frag"},{"glob":"Common/MatDefs/SSAO/ssao.j3md"},{"glob":"Common/MatDefs/SSAO/ssaoBlur.frag"},{"glob":"Common/MatDefs/SSAO/ssaoBlur.j3md"},{"glob":"Common/MatDefs/Water/Textures/foam2.jpg"},{"glob":"Common/ShaderLib/ColorUtils.glsl"},{"glob":"Common/ShaderLib/GLSLCompat.glsllib"},{"glob":"Common/ShaderLib/Hdr.glsllib"},{"glob":"Common/ShaderLib/Instancing.glsllib"},{"glob":"Common/ShaderLib/MaterialFog.glsllib"},{"glob":"Common/ShaderLib/Math.glsllib"},{"glob":"Common/ShaderLib/MorphAnim.glsllib"},{"glob":"Common/ShaderLib/MultiSample.glsllib"},{"glob":"Common/ShaderLib/Optics.glsllib"},{"glob":"Common/ShaderLib/PBR.glsllib"},{"glob":"Common/ShaderLib/Parallax.glsllib"},{"glob":"Common/ShaderLib/Skinning.glsllib"},{"glob":"Common/ShaderLib/module/Light.glsl"},{"glob":"Common/ShaderLib/module/PBRSurface.glsl"},{"glob":"Common/ShaderLib/module/pbrlighting/PBRLightingUtils.glsllib"},{"glob":"Interface/Fonts/Console.fnt"},{"glob":"Interface/Fonts/Console.png"},{"glob":"Interface/Fonts/Default.fnt"},{"glob":"Interface/Fonts/Default.png"},{"glob":"META-INF/linux/x64/org/lwjgl/glfw/libglfw.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/jemalloc/libjemalloc.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/liblwjgl.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/nanovg/liblwjgl_nanovg.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/openal/libopenal.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/opengl/liblwjgl_opengl.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/stb/liblwjgl_stb.so.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/glfw/libglfw.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/jemalloc/libjemalloc.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/liblwjgl.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/nanovg/liblwjgl_nanovg.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/openal/libopenal.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/opengl/liblwjgl_opengl.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/stb/liblwjgl_stb.dylib.sha1"},{"glob":"META-INF/services/java.lang.System$LoggerFinder"},{"glob":"META-INF/services/java.net.spi.InetAddressResolverProvider"},{"glob":"META-INF/services/java.net.spi.URLStreamHandlerProvider"},{"glob":"META-INF/services/java.nio.channels.spi.SelectorProvider"},{"glob":"META-INF/services/java.time.zone.ZoneRulesProvider"},{"glob":"META-INF/services/javax.imageio.spi.ImageInputStreamSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageOutputStreamSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageReaderSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageTranscoderSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageWriterSpi"},{"glob":"META-INF/services/javax.xml.parsers.SAXParserFactory"},{"glob":"Materials/PBR.frag"},{"glob":"Materials/PBR.j3md"},{"glob":"Models/boat/boat.bin"},{"glob":"Models/boat/boat.gltf"},{"glob":"Models/boat/boat_BaseColor.jpg"},{"glob":"Models/boat/boat_Metallic-boat_Roughness.jpg"},{"glob":"Models/boat/boat_Normal.jpg"},{"glob":"Models/boat/flag_Normal.jpg"},{"glob":"Models/boat/sail_Metallic-flag_Roughness.jpg"},{"glob":"Models/boat/smallSail_BaseColor.jpg"},{"glob":"Models/boat/smallSail_Metallic-smallSail_Roughness.jpg"},{"glob":"Models/boat/smallSail_Normal.jpg"},{"glob":"Sky/citrus_orchard_puresky_4k.hdr"},{"glob":"Sounds/Beach_Ocean_Waves_Fienup_001_mono.ogg"},{"glob":"Sounds/fato_shadow_-_lunar_strings.ogg"},{"glob":"Sounds/watersplash.ogg"},{"glob":"Textures/waterNoise.png"},{"glob":"adc/city/KB3D_NEC_AirCon_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_AirCon_metallic-KB3D_NEC_AirCon_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_AirCon_normal.jpg"},{"glob":"adc/city/KB3D_NEC_AsphaltHexagonRoof_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_AsphaltHexagonRoof_metallic-KB3D_NEC_AsphaltHexagonRoof_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_AsphaltHexagonRoof_normal.jpg"},{"glob":"adc/city/KB3D_NEC_BannerA_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_BannerA_metallic-KB3D_NEC_BannerA_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_BannerA_normal.jpg"},{"glob":"adc/city/KB3D_NEC_BlackCloth_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_BlackCloth_metallic-KB3D_NEC_BlackCloth_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_BlackCloth_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Brass_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Brass_metallic-KB3D_NEC_Brass_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Brass_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Cardboard_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Cardboard_metallic-KB3D_NEC_Cardboard_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Cardboard_normal.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteA_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteA_metallic-KB3D_NEC_ConcreteA_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteA_normal.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteB_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteB_metallic-KB3D_NEC_ConcreteB_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteB_normal.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteTiles_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteTiles_metallic-KB3D_NEC_ConcreteTiles_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteTiles_normal.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteWall_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteWall_metallic-KB3D_NEC_ConcreteWall_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_ConcreteWall_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Concrete_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Concrete_metallic-KB3D_NEC_Concrete_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Concrete_normal.jpg"},{"glob":"adc/city/KB3D_NEC_DarkPanels_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_DarkPanels_metallic-KB3D_NEC_DarkPanels_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_DarkPanels_normal.jpg"},{"glob":"adc/city/KB3D_NEC_DecalSheet_basecolor-KB3D_NEC_DecalSheet_opacity.png"},{"glob":"adc/city/KB3D_NEC_DecalSheet_metallic-KB3D_NEC_DecalSheet_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_DecalSheet_normal.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteB_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteB_metallic-KB3D_NEC_DecorConcreteB_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteB_normal.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCBeige_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCBeige_metallic-KB3D_NEC_DecorConcreteCBeige_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCBeige_normal.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCWhite_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCWhite_metallic-KB3D_NEC_DecorConcreteCWhite_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_DecorConcreteCWhite_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteelDirt_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteelDirt_metallic-KB3D_NEC_GalvanizedSteelDirt_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteelDirt_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteel_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteel_metallic-KB3D_NEC_GalvanizedSteel_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GalvanizedSteel_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBlack_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBlack_metallic-KB3D_NEC_GlassBlack_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBlack_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBottle_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBottle_metallic-KB3D_NEC_GlassBottle_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GlassBottle_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GlassLamps_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GlassLamps_metallic-KB3D_NEC_GlassLamps_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GlassLamps_normal.jpg"},{"glob":"adc/city/KB3D_NEC_GlassTinted_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_GlassTinted_metallic-KB3D_NEC_GlassTinted_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_GlassTinted_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LeavesBush_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LeavesBush_metallic-KB3D_NEC_LeavesBush_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LeavesBush_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Letters_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Letters_metallic-KB3D_NEC_Letters_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Letters_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LightBlue_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LightBlue_emissive.jpg"},{"glob":"adc/city/KB3D_NEC_LightBlue_metallic-KB3D_NEC_LightBlue_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LightBlue_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LightRed_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LightRed_emissive.jpg"},{"glob":"adc/city/KB3D_NEC_LightRed_metallic-KB3D_NEC_LightRed_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LightRed_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LightWhite_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LightWhite_metallic-KB3D_NEC_LightWhite_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LightWhite_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LightYellow_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LightYellow_metallic-KB3D_NEC_LightYellow_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LightYellow_normal.jpg"},{"glob":"adc/city/KB3D_NEC_LightsA_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_LightsA_emissive.jpg"},{"glob":"adc/city/KB3D_NEC_LightsA_metallic-KB3D_NEC_LightsA_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_LightsA_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalAccent_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalAccent_metallic-KB3D_NEC_MetalAccent_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalAccent_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalDarkWorn_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalDarkWorn_metallic-KB3D_NEC_MetalDarkWorn_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalDarkWorn_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalGrating_basecolor-KB3D_NEC_MetalGrating_opacity.png"},{"glob":"adc/city/KB3D_NEC_MetalGrating_metallic-KB3D_NEC_MetalGrating_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalGrating_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalLightGreyWorn_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalLightGreyWorn_metallic-KB3D_NEC_MetalLightGreyWorn_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalLightGreyWorn_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintRed_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintRed_metallic-KB3D_NEC_MetalPaintRed_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintRed_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWhiteWorn_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWhiteWorn_metallic-KB3D_NEC_MetalPaintWhiteWorn_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWhiteWorn_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWorn_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWorn_metallic-KB3D_NEC_MetalPaintWorn_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintWorn_normal.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintYellow_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintYellow_metallic-KB3D_NEC_MetalPaintYellow_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_MetalPaintYellow_normal.jpg"},{"glob":"adc/city/KB3D_NEC_OxidizedSteel_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_OxidizedSteel_metallic-KB3D_NEC_OxidizedSteel_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_OxidizedSteel_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlack_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlack_metallic-KB3D_NEC_PaintBlack_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlack_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlue_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlue_metallic-KB3D_NEC_PaintBlue_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaintBlue_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaintRed_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaintRed_metallic-KB3D_NEC_PaintRed_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaintRed_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaintWhiteRusty_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaintWhiteRusty_metallic-KB3D_NEC_PaintWhiteRusty_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaintWhiteRusty_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaintedMetal_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaintedMetal_metallic-KB3D_NEC_PaintedMetal_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaintedMetal_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PaperWhite_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PaperWhite_metallic-KB3D_NEC_PaperWhite_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PaperWhite_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticBlack_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticBlack_metallic-KB3D_NEC_PlasticBlack_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticBlack_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticWhite_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticWhite_metallic-KB3D_NEC_PlasticWhite_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticWhite_normal.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticYellow_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticYellow_metallic-KB3D_NEC_PlasticYellow_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_PlasticYellow_normal.jpg"},{"glob":"adc/city/KB3D_NEC_RedWhiteStripes_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_RedWhiteStripes_metallic-KB3D_NEC_RedWhiteStripes_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_RedWhiteStripes_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Rubber_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Rubber_metallic-KB3D_NEC_Rubber_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Rubber_normal.jpg"},{"glob":"adc/city/KB3D_NEC_SatinSteel_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_SatinSteel_metallic-KB3D_NEC_SatinSteel_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_SatinSteel_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Screens_basecolor-KB3D_NEC_Screens_opacity.png"},{"glob":"adc/city/KB3D_NEC_Screens_emissive.jpg"},{"glob":"adc/city/KB3D_NEC_Screens_metallic-KB3D_NEC_Screens_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Screens_normal.jpg"},{"glob":"adc/city/KB3D_NEC_SpeedwayTiles_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_SpeedwayTiles_metallic-KB3D_NEC_SpeedwayTiles_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_SpeedwayTiles_normal.jpg"},{"glob":"adc/city/KB3D_NEC_SteelRaw_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_SteelRaw_metallic-KB3D_NEC_SteelRaw_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_SteelRaw_normal.jpg"},{"glob":"adc/city/KB3D_NEC_StreetTiles_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_StreetTiles_metallic-KB3D_NEC_StreetTiles_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_StreetTiles_normal.jpg"},{"glob":"adc/city/KB3D_NEC_TarpA_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_TarpA_metallic-KB3D_NEC_TarpA_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_TarpA_normal.jpg"},{"glob":"adc/city/KB3D_NEC_TreeWalnutBark_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_TreeWalnutBark_metallic-KB3D_NEC_TreeWalnutBark_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_TreeWalnutBark_normal.jpg"},{"glob":"adc/city/KB3D_NEC_TreeWlnutLeaf_basecolor-KB3D_NEC_TreeWlnutLeaf_opacity.png"},{"glob":"adc/city/KB3D_NEC_TreeWlnutLeaf_metallic-KB3D_NEC_TreeWlnutLeaf_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_TreeWlnutLeaf_normal.jpg"},{"glob":"adc/city/KB3D_NEC_WhitePanels_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_WhitePanels_metallic-KB3D_NEC_WhitePanels_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_WhitePanels_normal.jpg"},{"glob":"adc/city/KB3D_NEC_WoodDarkGreyTower_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_WoodDarkGreyTower_metallic-KB3D_NEC_WoodDarkGreyTower_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_WoodDarkGreyTower_normal.jpg"},{"glob":"adc/city/KB3D_NEC_WoodLacquered_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_WoodLacquered_metallic-KB3D_NEC_WoodLacquered_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_WoodLacquered_normal.jpg"},{"glob":"adc/city/KB3D_NEC_Wood_basecolor.jpg"},{"glob":"adc/city/KB3D_NEC_Wood_metallic-KB3D_NEC_Wood_roughness.jpg"},{"glob":"adc/city/KB3D_NEC_Wood_normal.jpg"},{"glob":"adc/city/city.bin"},{"glob":"adc/city/city.gltf"},{"glob":"adc/city/missing-texture128x512.jpg"},{"glob":"adc/city/missing-texture256x512.jpg"},{"glob":"adc/city/missing-texture512x.jpg"},{"glob":"adc/city/missing-texture512x256.jpg"},{"glob":"adc/e.q._city.ogg"},{"glob":"adc/footstep.ogg"},{"glob":"adc/jump.ogg"},{"glob":"adc/night-sky.png"},{"glob":"com/jme3/app/Monkey.png"},{"glob":"com/jme3/asset/Desktop.cfg"},{"glob":"com/jme3/asset/General.cfg"},{"glob":"com/jme3/awt.cfg"},{"glob":"com/jme3/system/version.properties"},{"glob":"com/simsilica/lemur/icons/Check.png"},{"glob":"com/simsilica/lemur/icons/border.png"},{"glob":"data/nostrads/adkey.j3o"},{"glob":"data/ocean/iboceandata.j3o"},{"glob":"defaultPlayerImages/0.png"},{"glob":"defaultPlayerImages/1.png"},{"glob":"ibocean/FlipbookTexture.glsl"},{"glob":"ibocean/Ocean.frag"},{"glob":"ibocean/Ocean.glsl"},{"glob":"ibocean/Ocean.j3md"},{"glob":"ibocean/Ocean.vert"},{"glob":"ibocean/OceanRef.glsl"},{"glob":"icons/outline/activity.svg"},{"glob":"icons/outline/chevron-left.svg"},{"glob":"icons/outline/chevron-right.svg"},{"glob":"icons/outline/clipboard.svg"},{"glob":"icons/outline/copy.svg"},{"glob":"icons/outline/dice.svg"},{"glob":"icons/outline/eye-off.svg"},{"glob":"icons/outline/eye.svg"},{"glob":"icons/outline/info-square-rounded.svg"},{"glob":"icons/outline/loader-2.svg"},{"glob":"icons/outline/search.svg"},{"glob":"icons/outline/square-check.svg"},{"glob":"icons/outline/square.svg"},{"glob":"icons/outline/x.svg"},{"glob":"libEGL.so.1"},{"glob":"libGLX.so.0"},{"glob":"libSystem.dylib"},{"glob":"libobjc.dylib"},{"glob":"linux/x64/org/lwjgl/glfw/libglfw.so"},{"glob":"linux/x64/org/lwjgl/jemalloc/libjemalloc.so"},{"glob":"linux/x64/org/lwjgl/liblwjgl.so"},{"glob":"linux/x64/org/lwjgl/nanovg/liblwjgl_nanovg.so"},{"glob":"linux/x64/org/lwjgl/openal/libopenal.so"},{"glob":"linux/x64/org/lwjgl/opengl/liblwjgl_opengl.so"},{"glob":"linux/x64/org/lwjgl/stb/liblwjgl_stb.so"},{"glob":"macos/arm64/org/lwjgl/glfw/libglfw.dylib"},{"glob":"macos/arm64/org/lwjgl/jemalloc/libjemalloc.dylib"},{"glob":"macos/arm64/org/lwjgl/liblwjgl.dylib"},{"glob":"macos/arm64/org/lwjgl/nanovg/liblwjgl_nanovg.dylib"},{"glob":"macos/arm64/org/lwjgl/openal/libopenal.dylib"},{"glob":"macos/arm64/org/lwjgl/opengl/liblwjgl_opengl.dylib"},{"glob":"macos/arm64/org/lwjgl/stb/liblwjgl_stb.dylib"},{"glob":"native/linux/64/libwebp-imageio.so"},{"glob":"org/ngengine/NGE.cfg"},{"glob":"org/ngengine/nostrads/taxonomy/nostr-content-taxonomy.csv"},{"glob":"skies/alienSkyLOWEXP.png"},{"glob":"ui/blurred-qr.png"},{"glob":"ui/frame.png"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/nfc.nrm"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/nfkc.nrm"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/uprops.icu"},{"module":"java.base","glob":"sun/net/idn/uidna.spp"},{"module":"java.datatransfer","glob":"sun/datatransfer/resources/flavormap.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awt_en.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awt_en_US.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awtosx_en.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awtosx_en_US.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en_FR.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en_US.properties"},{"module":"java.xml","glob":"jdk/xml/internal/jdkcatalog/JDKCatalog.xml"}]} +{"resources":{"includes":[]},"bundles":[{"name":"com.jme3.app/SettingsDialog","locales":["und"]},{"name":"com.sun.org.apache.xml.internal.serializer.XMLEntities","locales":["und"]},{"name":"com.sun.swing.internal.plaf.basic.resources.basic","classNames":["com.sun.swing.internal.plaf.basic.resources.basic"]},{"name":"com.sun.swing.internal.plaf.metal.resources.metal","classNames":["com.sun.swing.internal.plaf.metal.resources.metal"]},{"name":"sun.awt.resources.awt","locales":["en-US"],"classNames":["sun.awt.resources.awt"]}],"globs":[{"glob":"Common/IBL/IBLKernels.frag"},{"glob":"Common/IBL/IBLKernels.j3md"},{"glob":"Common/IBL/IBLKernels.vert"},{"glob":"Common/IBL/Math.glsl"},{"glob":"Common/IBLSphH/IBLSphH.frag"},{"glob":"Common/IBLSphH/IBLSphH.j3md"},{"glob":"Common/IBLSphH/IBLSphH.vert"},{"glob":"Common/MatDefs/Light/PBRLighting.frag"},{"glob":"Common/MatDefs/Light/PBRLighting.j3md"},{"glob":"Common/MatDefs/Light/PBRLighting.vert"},{"glob":"Common/MatDefs/Misc/Particle.frag"},{"glob":"Common/MatDefs/Misc/Particle.j3md"},{"glob":"Common/MatDefs/Misc/Particle.vert"},{"glob":"Common/MatDefs/Misc/Sky.frag"},{"glob":"Common/MatDefs/Misc/Sky.vert"},{"glob":"Common/MatDefs/Misc/SkyNonCube.j3md"},{"glob":"Common/MatDefs/Misc/Unshaded.frag"},{"glob":"Common/MatDefs/Misc/Unshaded.j3md"},{"glob":"Common/MatDefs/Misc/Unshaded.vert"},{"glob":"Common/MatDefs/Post/Fog.frag"},{"glob":"Common/MatDefs/Post/Fog.j3md"},{"glob":"Common/MatDefs/Post/LightScattering.frag"},{"glob":"Common/MatDefs/Post/LightScattering.j3md"},{"glob":"Common/MatDefs/Post/Post.vert"},{"glob":"Common/MatDefs/Post/ToneMap.frag"},{"glob":"Common/MatDefs/Post/ToneMap.j3md"},{"glob":"Common/MatDefs/Water/Textures/foam2.jpg"},{"glob":"Common/ShaderLib/ColorUtils.glsl"},{"glob":"Common/ShaderLib/GLSLCompat.glsllib"},{"glob":"Common/ShaderLib/Instancing.glsllib"},{"glob":"Common/ShaderLib/MaterialFog.glsllib"},{"glob":"Common/ShaderLib/Math.glsllib"},{"glob":"Common/ShaderLib/MorphAnim.glsllib"},{"glob":"Common/ShaderLib/MultiSample.glsllib"},{"glob":"Common/ShaderLib/Optics.glsllib"},{"glob":"Common/ShaderLib/PBR.glsllib"},{"glob":"Common/ShaderLib/Parallax.glsllib"},{"glob":"Common/ShaderLib/Skinning.glsllib"},{"glob":"Common/ShaderLib/module/Light.glsl"},{"glob":"Common/ShaderLib/module/PBRSurface.glsl"},{"glob":"Common/ShaderLib/module/pbrlighting/PBRLightingUtils.glsllib"},{"glob":"Interface/Fonts/Console.fnt"},{"glob":"Interface/Fonts/Console.png"},{"glob":"Interface/Fonts/Default.fnt"},{"glob":"Interface/Fonts/Default.png"},{"glob":"META-INF/linux/x64/org/lwjgl/glfw/libglfw.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/jemalloc/libjemalloc.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/liblwjgl.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/openal/libopenal.so.sha1"},{"glob":"META-INF/linux/x64/org/lwjgl/opengl/liblwjgl_opengl.so.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/glfw/libglfw.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/jemalloc/libjemalloc.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/liblwjgl.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/nanovg/liblwjgl_nanovg.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/openal/libopenal.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/opengl/liblwjgl_opengl.dylib.sha1"},{"glob":"META-INF/macos/arm64/org/lwjgl/stb/liblwjgl_stb.dylib.sha1"},{"glob":"META-INF/services/java.lang.System$LoggerFinder"},{"glob":"META-INF/services/java.net.spi.InetAddressResolverProvider"},{"glob":"META-INF/services/java.net.spi.URLStreamHandlerProvider"},{"glob":"META-INF/services/java.nio.channels.spi.SelectorProvider"},{"glob":"META-INF/services/java.time.zone.ZoneRulesProvider"},{"glob":"META-INF/services/javax.imageio.spi.ImageInputStreamSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageOutputStreamSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageReaderSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageTranscoderSpi"},{"glob":"META-INF/services/javax.imageio.spi.ImageWriterSpi"},{"glob":"META-INF/services/javax.xml.parsers.SAXParserFactory"},{"glob":"Materials/PBR.frag"},{"glob":"Materials/PBR.j3md"},{"glob":"Models/boat/boat.bin"},{"glob":"Models/boat/boat.gltf"},{"glob":"Models/boat/boat_BaseColor.jpg"},{"glob":"Models/boat/boat_Metallic-boat_Roughness.jpg"},{"glob":"Models/boat/boat_Normal.jpg"},{"glob":"Models/boat/flag_Normal.jpg"},{"glob":"Models/boat/sail_Metallic-flag_Roughness.jpg"},{"glob":"Models/boat/smallSail_BaseColor.jpg"},{"glob":"Models/boat/smallSail_Metallic-smallSail_Roughness.jpg"},{"glob":"Models/boat/smallSail_Normal.jpg"},{"glob":"Sky/citrus_orchard_puresky_4k.hdr"},{"glob":"Sounds/Beach_Ocean_Waves_Fienup_001_mono.ogg"},{"glob":"Sounds/fato_shadow_-_lunar_strings.ogg"},{"glob":"Sounds/watersplash.ogg"},{"glob":"Textures/waterNoise.png"},{"glob":"com/jme3/app/Monkey.png"},{"glob":"com/jme3/asset/Desktop.cfg"},{"glob":"com/jme3/asset/General.cfg"},{"glob":"com/jme3/system/version.properties"},{"glob":"com/simsilica/lemur/icons/Check.png"},{"glob":"com/simsilica/lemur/icons/border.png"},{"glob":"data/ocean/iboceandata.j3o"},{"glob":"defaultPlayerImages/0.png"},{"glob":"defaultPlayerImages/1.png"},{"glob":"ibocean/FlipbookTexture.glsl"},{"glob":"ibocean/Ocean.frag"},{"glob":"ibocean/Ocean.glsl"},{"glob":"ibocean/Ocean.j3md"},{"glob":"ibocean/Ocean.vert"},{"glob":"ibocean/OceanRef.glsl"},{"glob":"icons/outline/activity.svg"},{"glob":"icons/outline/chevron-left.svg"},{"glob":"icons/outline/chevron-right.svg"},{"glob":"icons/outline/clipboard.svg"},{"glob":"icons/outline/copy.svg"},{"glob":"icons/outline/dice.svg"},{"glob":"icons/outline/eye-off.svg"},{"glob":"icons/outline/eye.svg"},{"glob":"icons/outline/info-square-rounded.svg"},{"glob":"icons/outline/loader-2.svg"},{"glob":"icons/outline/search.svg"},{"glob":"icons/outline/square-check.svg"},{"glob":"icons/outline/square.svg"},{"glob":"icons/outline/x.svg"},{"glob":"libGLX.so.0"},{"glob":"libSystem.dylib"},{"glob":"libobjc.dylib"},{"glob":"linux/x64/org/lwjgl/glfw/libglfw.so"},{"glob":"linux/x64/org/lwjgl/jemalloc/libjemalloc.so"},{"glob":"linux/x64/org/lwjgl/liblwjgl.so"},{"glob":"linux/x64/org/lwjgl/openal/libopenal.so"},{"glob":"linux/x64/org/lwjgl/opengl/liblwjgl_opengl.so"},{"glob":"macos/arm64/org/lwjgl/glfw/libglfw.dylib"},{"glob":"macos/arm64/org/lwjgl/jemalloc/libjemalloc.dylib"},{"glob":"macos/arm64/org/lwjgl/liblwjgl.dylib"},{"glob":"macos/arm64/org/lwjgl/nanovg/liblwjgl_nanovg.dylib"},{"glob":"macos/arm64/org/lwjgl/openal/libopenal.dylib"},{"glob":"macos/arm64/org/lwjgl/opengl/liblwjgl_opengl.dylib"},{"glob":"macos/arm64/org/lwjgl/stb/liblwjgl_stb.dylib"},{"glob":"native/linux/64/libwebp-imageio.so"},{"glob":"org/ngengine/NGE.cfg"},{"glob":"skies/alienSkyLOWEXP.png"},{"glob":"ui/blurred-qr.png"},{"glob":"ui/frame.png"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/nfc.nrm"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/nfkc.nrm"},{"module":"java.base","glob":"jdk/internal/icu/impl/data/icudt76b/uprops.icu"},{"module":"java.base","glob":"sun/net/idn/uidna.spp"},{"module":"java.datatransfer","glob":"sun/datatransfer/resources/flavormap.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awt_en.properties"},{"module":"java.desktop","glob":"sun/awt/resources/awt_en_US.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en_FR.properties"},{"module":"java.logging","glob":"sun/util/logging/resources/logging_en_US.properties"},{"module":"java.xml","glob":"jdk/xml/internal/jdkcatalog/JDKCatalog.xml"}]} diff --git a/platform-web/build.gradle b/platform-web/build.gradle new file mode 100644 index 0000000..94c1d76 --- /dev/null +++ b/platform-web/build.gradle @@ -0,0 +1,445 @@ + +plugins { + id 'com.github.node-gradle.node' version '7.1.0' + id "java" + id "war" + id "org.teavm" version "${teaVmVersion}" +} + +import java.security.MessageDigest +import java.nio.file.Files +import java.nio.file.Paths +apply from: "${rootDir}/gradle/libs/class-finder.gradle" + +configurations { + withResources { + canBeResolved = true + } +} + +node { + download = true + distBaseUrl = null + version = "22.18.0" +} + +configurations.configureEach { + exclude group: 'org.ngengine', module: 'jme3-jbullet' +} + +dependencies { + implementation "org.teavm:teavm-jso:${teaVmVersion}" + implementation "org.teavm:teavm-jso-apis:${teaVmVersion}" + implementation "org.teavm:teavm-metaprogramming-api:${teaVmVersion}" + implementation "org.teavm:teavm-classlib:${teaVmVersion}" + implementation "org.teavm:teavm-tooling:${teaVmVersion}" + implementation "org.teavm:teavm-core:${teaVmVersion}" + + implementation "org.ngengine:nge-platform-teavm:${ngePlatformVersion}" + implementation "org.ngengine:nge-app:${ngeVersion}" + implementation "org.ngengine:jme3-plugins-json:${ngeVersion}" + implementation "org.ngengine:nge-web:${ngeVersion}" + implementation "org.ngengine:nge-web-bullet:${ngeVersion}" + + implementation project(':app') + + withResources project(':app') + withResources "org.ngengine:nge-platform-teavm:${ngePlatformVersion}" + withResources "org.ngengine:nge-web:${ngeVersion}" + withResources "org.ngengine:nge-web-bullet:${ngeVersion}" +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +sourceSets { + test { + resources { + srcDirs = ['src/test/resources', 'src/main/resources'] + } + } +} + +def binaryExclusions = [ + '**/*.class', + '**/*.dll', + '**/*.so', + '**/*.dylib', + '**/package.html', + "**/*.kotlin_builtins", + "**/build.data", + "**/*.xml", + "**/test*.png", + // '**/*.java' +] + + + +def generateHashes(File dir) { + def hashes = [] + Files.walk(Paths.get(dir.toURI())).filter { + Files.isRegularFile(it) + }.forEach { file -> + def relativePath = dir.toPath().relativize(file).toString() + if(relativePath.endsWith(".class")) return; + if(relativePath.endsWith(".java")) return; + def hash = generateSHA256(file.toFile()) + def size = file.toFile().length() + hashes << "$hash $size $relativePath" + } + return hashes.join('\n') +} + +def generateSHA256(file) { + def messageDigest = MessageDigest.getInstance("SHA-256") + file.eachByte(4096) { bytes, len -> + messageDigest.update(bytes, 0, len) + } + return messageDigest.digest().collect { String.format("%02x", it) }.join() +} + +task copyAllResources { + + dependsOn configurations.runtimeClasspath.getTaskDependencyFromProjectDependency(true, 'jar') + dependsOn 'jar' + + ['compileTeavmJava','processTeavmResources','compileJava','processResources'] + .each { tn -> if (tasks.findByName(tn) != null) dependsOn tn } + + doLast { + def dest = file("${rootDir}/dist/web") + dest.mkdirs() + + def safeCopy = { spec -> + copy { + into dest + from spec + exclude(*binaryExclusions) + exclude '**/module-info.class' + includeEmptyDirs = false + duplicatesStrategy = DuplicatesStrategy.INCLUDE + } + } + safeCopy('src/main/resources') + + def runtimeFiles = configurations.runtimeClasspath.resolvedConfiguration.lenientConfiguration.files + runtimeFiles.each { f -> + if (!f.exists()) return + if (f.isDirectory()) { + safeCopy(f) + } else if (f.name.endsWith('.jar')) { + safeCopy(project.zipTree(f)) + } + } + + println "Resource aggregation complete. Total files: " + fileTree(dest).matching { exclude(*binaryExclusions) }.files.size() + + def manifestFile = file("${rootDir}/dist/web/manifest.json") + if (manifestFile.exists()) { + def manifest = new groovy.json.JsonSlurper().parseText(manifestFile.text) + manifest.name = Title + manifest.short_name = ShortName + + manifestFile.text = groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(manifest)) + println "Updated manifest.json: name=$Title, short_name=$ShortName" + } + + def outputDir = file("${rootDir}/dist/web/") + def outputFile = file("${rootDir}/dist/web/resources.index.txt") + + outputFile.text = generateHashes(outputDir) + } +} + + +def generateClassListFile(File outputFile, Collection classes, Closure lineFormatter) { + outputFile.parentFile.mkdirs() + outputFile.text = classes.collect(lineFormatter).join('\n') + println "Generated class list at ${outputFile.absolutePath}" +} + +def generateCodeFromTemplate(File outputFile, String template, Map vars) { + outputFile.parentFile.mkdirs() + String result = template + vars.each { key, value -> + result = result.replace("{{$key}}", value.toString()) + } + outputFile.text = result + println "Generated code at ${outputFile.absolutePath}" +} + +task scanClasspathForTeaVM { + dependsOn configurations.compileClasspath.getTaskDependencyFromProjectDependency(true, 'classes') + doLast { + def scanResults = project.scanClasspathForClasses(project) + + def preserveListFile = file("${buildDir}/generated/teaReflectList.txt") + generateClassListFile(preserveListFile, scanResults.classes) { className -> + "**/${className.replace('.', '/')}.java" + } + + def reflectionSupplierFile = file("${buildDir}/generated/teaReflect.java") + def template = """private static void initGenerated() { +{{classInitializers}} + }""" + generateCodeFromTemplate(reflectionSupplierFile, template, [ + classInitializers: scanResults.reflectionClasses.collect { + " TeaReflectionSupplier.addReflectionClass(\"${it}\");" + }.join('\n') + ]) + } +} + +task updateTeaReflectionSupplier { + dependsOn scanClasspathForTeaVM + doLast { + def reflectionSupplierFile = file("${buildDir}/generated/teaReflect.java") + def teaReflectionSupplierFile = file("${projectDir}/src/main/java/org/ngengine/platform/TeaReflectionSupplier.java") + + if (reflectionSupplierFile.exists() && teaReflectionSupplierFile.exists()) { + def content = teaReflectionSupplierFile.text + def initGeneratedContent = reflectionSupplierFile.text + content = content.replaceAll(/(?s)private static void initGenerated\(\)\s*\{.*?\}/, initGeneratedContent) + teaReflectionSupplierFile.text = content + println "Updated TeaReflectionSupplier.java with generated initGenerated() method" + } + } +} + +tasks.named('compileJava').configure { + dependsOn 'updateTeaReflectionSupplier' +} + +teavm.js { + addedToWebApp = false + mainClass = "org.ngengine.platform.WebLauncher" + obfuscated = false + debugInformation = true + strict= false + outOfProcess=false + // optimization=org.teavm.gradle.api.OptimizationLevel.NONE + sourceMap=true + moduleType = org.teavm.gradle.api.JSModuleType.ES2015 + + def classesToPreserve=[] + def preserveListFile = file("${buildDir}/generated/teaReflectList.txt") + if (preserveListFile.exists()) { + preserveListFile.readLines().each { line -> + if (line.trim()) { + classesToPreserve.add(line.trim()) + } + } + } + + def fqcnToPreserve = new LinkedHashSet() + + def toFqcn = { File baseDir, File f -> + def rel = f.path.substring(baseDir.path.length() + 1) + rel = rel.replaceAll(/\.java$/, '').replaceAll(/\.class$/, '') + rel.replace('/', '.') + } + + rootProject.allprojects.each { prj -> + def ss = prj.extensions.findByName('sourceSets') + def mainSS = ss?.findByName('main') + if (mainSS == null) return + mainSS.java.srcDirs.each { srcDir -> + if (!srcDir.exists()) return + fileTree(srcDir).matching { include classesToPreserve }.forEach { f -> + def fqcn = toFqcn(srcDir, f) + fqcnToPreserve.add(fqcn) + } + } + } + + def rtArtifacts = configurations.runtimeClasspath.resolvedConfiguration.lenientConfiguration.files + rtArtifacts.each { artifact -> + if (!artifact.exists()) return + if (artifact.isDirectory()) { + fileTree(artifact).matching { include classesToPreserve.collect { it.replace('.java', '.class') } }.forEach { f -> + def fqcn = toFqcn(artifact, f) + fqcnToPreserve.add(fqcn) + } + } else if (artifact.name.endsWith('.jar')) { + def classFilePatterns = classesToPreserve.collect { it.replace('.java', '.class') } + .collect { it.replace('**/', '') } + + try { + def jarFile = new java.util.jar.JarFile(artifact) + def entries = jarFile.entries() + + while (entries.hasMoreElements()) { + def entry = entries.nextElement() + if (entry.isDirectory()) continue + + def entryName = entry.getName() + if (classFilePatterns.any { pattern -> + entryName.endsWith(pattern) || entryName.matches(pattern.replace("*", ".*")) + }) { + def fqcn = entryName.replaceAll(/\.class$/, '').replace('/', '.') + fqcnToPreserve.add(fqcn) + } + } + jarFile.close() + } catch (Exception e) { + println "WARNING: Could not process JAR file: ${artifact.name} - ${e.message}" + } + } + } + + fqcnToPreserve.each { + preservedClasses.add(it) + } + + targetFileName = "webapp.js" +} + + + +task buildWebApp { + dependsOn 'compileJava', 'generateJavaScript', 'copyAllResources' + doLast { + def jsDir = file("$buildDir/generated/teavm/js") + def distDir = file("${rootDir}/dist/web") + distDir.mkdirs() + copy { + from jsDir + into distDir + } + println "Copied web app to: $distDir" + } +} + + +task buildBundledWebApp { + dependsOn buildWebApp + doLast { + def jsDir = file("$rootDir/dist/web") + def bundledJsDir = file("$rootDir/dist/web-bundle") + def bundleIgnoreFile = file("$jsDir/bundle-ignore.txt") + def zipFile = file("$bundledJsDir/ngeapp-bundle.zip") + def configFile = file("$bundledJsDir/ngeapp.json") + + bundledJsDir.mkdirs() + + // Read ignore patterns from bundle-ignore.txt + def ignorePatterns = [] + if (bundleIgnoreFile.exists()) { + bundleIgnoreFile.eachLine { line -> + if (line.trim() && !line.startsWith('//')) ignorePatterns.add(line.trim()) + } + println "Found ${ignorePatterns.size()} patterns to exclude from bundle" + } else { + println "Warning: bundle-ignore.txt not found at ${bundleIgnoreFile}. No files will be excluded from the bundle." + } + + + // Create zip with everything except ignored files + ant.zip(destfile: zipFile) { + fileset(dir: jsDir) { + ignorePatterns.each { pattern -> + if (pattern.endsWith('/')) { + exclude(name: "${pattern}**") + } else { + exclude(name: pattern) + } + } + } + } + + + // Copy ignored files to bundledjs directory + if (!ignorePatterns.isEmpty()) { + println "Copying excluded files to bundled directory..." + + delete fileTree(bundledJsDir).matching { include '**/*' exclude 'ngeapp-bundle.zip', 'ngeapp-config.json' } + + fileTree(jsDir).visit { fileDetails -> + if (fileDetails.isDirectory()) return + + def relativePath = fileDetails.relativePath.toString() + def matchesPattern = false + + for (pattern in ignorePatterns) { + if (pattern.endsWith('/')) { + if (relativePath.startsWith(pattern) || relativePath.startsWith(pattern.substring(0, pattern.length() - 1))) { + matchesPattern = true + break + } + } else { + if (relativePath == pattern) { + matchesPattern = true + break + } + } + } + + if (matchesPattern) { + println "Copying excluded file: $relativePath" + copy { + from fileDetails.file + into new File(bundledJsDir, fileDetails.relativePath.parent.toString()) + } + } + } + println "Finished copying excluded files" + } + // Calculate hash of zip file + def hash = generateSHA256(zipFile) + + // Set bundle in config file + def config = [:] + if (configFile.exists()) { + try { + config = new groovy.json.JsonSlurper().parseText(configFile.text) + println "Updating existing config file: $configFile.path" + } catch (Exception e) { + println "Warning: Could not parse existing config file: $e.message" + config = [:] + } + } + + config.bundle = "ngeapp-bundle.zip" + config.bundleHash = hash + configFile.text = groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(config)) + + println "Created bundle: $zipFile.path" + println "Bundle hash: $hash" + println "Config written to: $configFile.path" + + + + } +} + + +task npmCi(type: NpmTask) { + workingDir = file("${projectDir}") + args = ['ci'] +} + +task runWebApp(type: NpxTask) { + dependsOn buildWebApp + workingDir = file("$rootDir/dist/web") + command = 'http-server' + args = [ '.', '-p', '8000'] +} + +task runBundledWebApp(type: NpxTask) { + dependsOn buildBundledWebApp + workingDir = file("$rootDir/dist/web-bundle") + command = 'http-server' + args = [ '.', '-p', '8000'] +} + +task deployWebApp(type: NpxTask) { + dependsOn buildBundledWebApp + dependsOn npmCi + command = 'nostr-deploy-cli' + args = ['deploy','--skip-setup', '-d', "${rootDir}/dist/web-bundle"] + workingDir = file("${projectDir}") +} + diff --git a/platform-web/package-lock.json b/platform-web/package-lock.json new file mode 100644 index 0000000..5267673 --- /dev/null +++ b/platform-web/package-lock.json @@ -0,0 +1,2033 @@ +{ + "name": "platform-web", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "nostr-deploy-cli": "^0.7.6" + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", + "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.0", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.5.0.tgz", + "integrity": "sha512-p0SjJ3TuuleIvjPM4aYfvYw8Fk1Hn/zAVyPJZTtZ2eE9/MIer6/18ROxX6N/e6edVSfvuZBqhxAj3YgsmSjQ/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "@peculiar/asn1-x509-attr": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.5.0.tgz", + "integrity": "sha512-ioigvA6WSYN9h/YssMmmoIwgl3RvZlAYx4A/9jD2qaqXZwGcNlAxaw54eSx2QG1Yu7YyBC5Rku3nNoHrQ16YsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.5.0.tgz", + "integrity": "sha512-t4eYGNhXtLRxaP50h3sfO6aJebUCDGQACoeexcelL4roMFRRVgB20yBIu2LxsPh/tdW9I282gNgMOyg3ywg/mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.5.0.tgz", + "integrity": "sha512-Vj0d0wxJZA+Ztqfb7W+/iu8Uasw6hhKtCdLKXLG/P3kEPIQpqGI4P4YXlROfl7gOCqFIbgsj1HzFIFwQ5s20ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.5.0", + "@peculiar/asn1-pkcs8": "^2.5.0", + "@peculiar/asn1-rsa": "^2.5.0", + "@peculiar/asn1-schema": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.5.0.tgz", + "integrity": "sha512-L7599HTI2SLlitlpEP8oAPaJgYssByI4eCwQq2C9eC90otFpm8MRn66PpbKviweAlhinWQ3ZjDD2KIVtx7PaVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.5.0.tgz", + "integrity": "sha512-UgqSMBLNLR5TzEZ5ZzxR45Nk6VJrammxd60WMSkofyNzd3DQLSNycGWSK5Xg3UTYbXcDFyG8pA/7/y/ztVCa6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.5.0", + "@peculiar/asn1-pfx": "^2.5.0", + "@peculiar/asn1-pkcs8": "^2.5.0", + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "@peculiar/asn1-x509-attr": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.5.0.tgz", + "integrity": "sha512-qMZ/vweiTHy9syrkkqWFvbT3eLoedvamcUdnnvwyyUNv5FgFXA3KP8td+ATibnlZ0EANW5PYRm8E6MJzEB/72Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.5.0.tgz", + "integrity": "sha512-YM/nFfskFJSlHqv59ed6dZlLZqtZQwjRVJ4bBAiWV08Oc+1rSd5lDZcBEx0lGDHfSoH3UziI2pXt2UM33KerPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.5.0.tgz", + "integrity": "sha512-CpwtMCTJvfvYTFMuiME5IH+8qmDe3yEWzKHe7OOADbGfq7ohxeLaXwQo0q4du3qs0AII3UbLCvb9NF/6q0oTKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.5.0.tgz", + "integrity": "sha512-9f0hPOxiJDoG/bfNLAFven+Bd4gwz/VzrCIIWc1025LEI4BXO0U5fOCTNDPbbp2ll+UzqKsZ3g61mpBp74gk9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.0.tgz", + "integrity": "sha512-Yc4PDxN3OrxUPiXgU63c+ZRXKGE8YKF2McTciYhUHFtHVB0KMnjeFSU0qpztGhsp4P0uKix4+J2xEpIEDu8oXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.5.0", + "@peculiar/asn1-csr": "^2.5.0", + "@peculiar/asn1-ecc": "^2.5.0", + "@peculiar/asn1-pkcs9": "^2.5.0", + "@peculiar/asn1-rsa": "^2.5.0", + "@peculiar/asn1-schema": "^2.5.0", + "@peculiar/asn1-x509": "^2.5.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" + } + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@types/node": { + "version": "24.5.2", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~7.12.0" + } + }, + "node_modules/acme-client": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/acme-client/-/acme-client-5.4.0.tgz", + "integrity": "sha512-mORqg60S8iML6XSmVjqjGHJkINrCGLMj2QvDmFzI9vIlv1RGlyjmw3nrzaINJjkNsYXC41XhhD5pfy7CtuGcbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/x509": "^1.11.0", + "asn1js": "^3.0.5", + "axios": "^1.7.2", + "debug": "^4.3.5", + "node-forge": "^1.3.1" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/archiver": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.2.tgz", + "integrity": "sha512-UQ/2nW7NMl1G+1UnrLypQw1VdT9XZg/ECcKPq7l+STzStrSivFIXIp34D8M5zeNGW5NoOupdYCHv6VySCPNNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^4.0.1", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/archiver-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", + "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^8.0.0", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/asn1js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", + "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "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/axios": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", + "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz", + "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "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/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "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/compress-commons": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.3.tgz", + "integrity": "sha512-/UIcLWvwAQyVibgpQDPtfNM3SvqN7G9elAPAV7GM0L53EbNWwWiCsWtK8Fwed/APEbptPHXs5PuW+y8Bq8lFTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.1.tgz", + "integrity": "sha512-lO1dFui+CEUh/ztYIpgpKItKW9Bb4NWakCRJrnqAbFIYD+OZAwb2VfD5T5eXMw2FNcsDHkQcNl/Wh3iVXYwU6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "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", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "11.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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/graceful-fs": { + "version": "4.2.11", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "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-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/external-editor": "^1.0.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/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/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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-deploy-cli": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/nostr-deploy-cli/-/nostr-deploy-cli-0.7.6.tgz", + "integrity": "sha512-iTLMnhGwDD9ZKkCHZiIiIzdvv5X5bEk/sHLy+vi9uh9XrBmJR2foCdsqV543+yWhuLuwGXh4G5ubK/m/crEa8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acme-client": "^5.0.0", + "archiver": "^6.0.1", + "axios": "^1.6.2", + "chalk": "^4.1.2", + "commander": "^11.1.0", + "dotenv": "^16.3.1", + "form-data": "^4.0.0", + "fs-extra": "^11.2.0", + "inquirer": "^8.2.6", + "nostr-tools": "^2.1.0", + "ora": "^5.4.1", + "websocket-polyfill": "^0.0.3" + }, + "bin": { + "nostr-deploy-cli": "dist/cli.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/nostr-deploy-cli/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/nostr-tools": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.17.0.tgz", + "integrity": "sha512-lrvHM7cSaGhz7F0YuBvgHMoU2s8/KuThihDoOYk8w5gpVHTy0DeUCAgCN8uLGeuSl5MAWekJr9Dkfo5HClqO9w==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "@noble/ciphers": "^0.5.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.1", + "@scure/base": "1.1.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1", + "nostr-wasm": "0.1.0" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/nostr-wasm": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/nostr-wasm/-/nostr-wasm-0.1.0.tgz", + "integrity": "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "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/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "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/tslib": { + "version": "2.8.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/tstl": { + "version": "2.5.16", + "resolved": "https://registry.npmjs.org/tstl/-/tstl-2.5.16.tgz", + "integrity": "sha512-+O2ybLVLKcBwKm4HymCEwZIT0PpwS3gCYnxfSDEjJEKADvIFruaQjd3m7CAKNU1c7N3X3WjVz87re7TA2A5FUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/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/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undici-types": { + "version": "7.12.0", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/websocket": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.63", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz", + "integrity": "sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==", + "dev": true, + "dependencies": { + "tstl": "^2.0.7", + "websocket": "^1.0.28" + } + }, + "node_modules/websocket/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/websocket/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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/zip-stream": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.2.tgz", + "integrity": "sha512-LfOdrUvPB8ZoXtvOBz6DlNClfvi//b5d56mSWyJi7XbH/HfhOHfUhOqxhT/rUiR7yiktlunqRo+jY6y/cWC/5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" + } + } + } +} diff --git a/platform-web/package.json b/platform-web/package.json new file mode 100644 index 0000000..6d8a22a --- /dev/null +++ b/platform-web/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "nostr-deploy-cli": "^0.7.6" + } +} diff --git a/platform-web/src/main/java/org/ngengine/platform/TeaReflectionSupplier.java b/platform-web/src/main/java/org/ngengine/platform/TeaReflectionSupplier.java new file mode 100644 index 0000000..d3f1c0d --- /dev/null +++ b/platform-web/src/main/java/org/ngengine/platform/TeaReflectionSupplier.java @@ -0,0 +1,744 @@ +package org.ngengine.platform; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import java.util.regex.Pattern; + +import org.teavm.classlib.ReflectionContext; +import org.teavm.classlib.ReflectionSupplier; +import org.teavm.model.ClassReader; +import org.teavm.model.FieldReader; + +import org.teavm.model.MethodDescriptor; +import org.teavm.model.MethodReader; +import org.teavm.model.ValueType; + +public class TeaReflectionSupplier implements ReflectionSupplier { + private static ArrayList regexPatterns = new ArrayList<>(); + + private static ArrayList> clazzList = new ArrayList<>(); + private static ArrayList clazzNameList = new ArrayList<>(); + static { + init(); + } + + private static void initGenerated() { + TeaReflectionSupplier.addReflectionClass("com.jcraft.jzlib.Deflate"); + TeaReflectionSupplier.addReflectionClass("com.jcraft.jzlib.GZIPHeader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.AnimClip"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.AnimComposer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.AnimLayer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.AnimTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.Armature"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.ArmatureMask"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.Joint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.MatrixJointModelTransform"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.MorphControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.MorphTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.SeparateJointModelTransform"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.SingleLayerInfluenceMask"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.SkinningControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.TransformTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.AbstractTween"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.Tween"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.action.Action"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.action.BaseAction"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.action.BlendAction"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.action.BlendableAction"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.tween.action.ClipAction"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.util.HasLocalTransform"); + TeaReflectionSupplier.addReflectionClass("com.jme3.anim.util.JointModelTransform"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.AnimControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.Animation"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.AudioTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.Bone"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.BoneTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.ClonableTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.CompactArray"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.CompactFloatArray"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.CompactQuaternionArray"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.CompactVector3Array"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.EffectTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.Pose"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.PoseTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.Skeleton"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.SkeletonControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.SpatialTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.Track"); + TeaReflectionSupplier.addReflectionClass("com.jme3.animation.TrackInfo"); + TeaReflectionSupplier.addReflectionClass("com.jme3.app.StatsView"); + TeaReflectionSupplier.addReflectionClass("com.jme3.app.state.ScreenshotAppState"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.AssetKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.AssetLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.AssetLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.AssetProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.CloneableAssetProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.CloneableSmartAsset"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.FilterKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.MaterialKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.ModelKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.ShaderNodeDefinitionKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.TextureKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.cache.AssetCache"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.cache.SimpleAssetCache"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.cache.WeakRefAssetCache"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.cache.WeakRefCloneAssetCache"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.plugins.ClasspathLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.plugins.FileLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.plugins.HttpZipLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.plugins.UrlLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.asset.plugins.ZipLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.AudioBuffer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.AudioData"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.AudioKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.AudioNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.AudioStream"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.BandPassFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.Filter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.HighPassFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.LowPassFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.plugins.OGGLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.audio.plugins.WAVLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bounding.BoundingBox"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bounding.BoundingSphere"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bounding.BoundingVolume"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.BoneLink"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.DacConfiguration"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.DacLinks"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.DynamicAnimControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.PhysicsLink"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.RangeOfMotion"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.animation.TorsoLink"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.PhysicsCollisionObject"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.BoxCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.CapsuleCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.CollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.CompoundCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.ConeCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.CylinderCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.GImpactCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.HeightfieldCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.HullCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.MeshCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.PlaneCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.SimplexCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.SphereCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.collision.shapes.infos.ChildCollisionShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.AbstractPhysicsControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.BetterCharacterControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.CharacterControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.GhostControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.KinematicRagdollControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.PhysicsControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.RigidBodyControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.control.VehicleControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.AbstractPhysicsDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.BulletCharacterDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.BulletGhostObjectDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.BulletJointDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.BulletRigidBodyDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.debug.BulletVehicleDebugControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.ConeJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.HingeJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.PhysicsJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.Point2PointJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.SixDofJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.joints.SliderJoint"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.objects.PhysicsCharacter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.objects.PhysicsGhostObject"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.objects.PhysicsRigidBody"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.objects.PhysicsVehicle"); + TeaReflectionSupplier.addReflectionClass("com.jme3.bullet.objects.VehicleWheel"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.Cinematic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.KeyFrame"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.MotionPath"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.TimeLine"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.AbstractCinematicEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.AnimEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.AnimationEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.AnimationTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.CameraEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.CinematicEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.MotionEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.MotionTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.SoundEvent"); + TeaReflectionSupplier.addReflectionClass("com.jme3.cinematic.events.SoundTrack"); + TeaReflectionSupplier.addReflectionClass("com.jme3.collision.bih.BIHNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.collision.bih.BIHTree"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.ParticleEmitter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.ParticleMesh"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.ParticlePointMesh"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.ParticleTriMesh"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.influencers.DefaultParticleInfluencer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.influencers.EmptyParticleInfluencer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.influencers.NewtonianParticleInfluencer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.influencers.ParticleInfluencer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.influencers.RadialParticleInfluencer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterBoxShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterMeshConvexHullShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterMeshFaceShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterMeshVertexShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterPointShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.effect.shapes.EmitterSphereShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.environment.EnvironmentProbeControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.environment.util.BoundingSphereDebug"); + TeaReflectionSupplier.addReflectionClass("com.jme3.environment.util.Circle"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.JmeImporter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.NullSavable"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.Savable"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.binary.BinaryImporter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.binary.BinaryLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.export.xml.XMLImporter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.BitmapCharacter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.BitmapCharacterSet"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.BitmapFont"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.BitmapText"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.BitmapTextPage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.GlyphParser"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.Kerning"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.Rectangle"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.StringBlock"); + TeaReflectionSupplier.addReflectionClass("com.jme3.font.plugins.BitmapFontLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.input.ChaseCamera"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.AmbientLight"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.DirectionalLight"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.Light"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.LightList"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.LightProbe"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.OrientedBoxProbeArea"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.PointLight"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.ProbeArea"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.SphereProbeArea"); + TeaReflectionSupplier.addReflectionClass("com.jme3.light.SpotLight"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.MatParam"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.MatParamOverride"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.MatParamTexture"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.Material"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.MaterialList"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.MaterialProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.RenderState"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.ShaderGenerationInfo"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.Technique"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.TechniqueDef"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.DefaultTechniqueDefLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.MultiPassLightingLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.SinglePassAndImageBasedLightingLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.SinglePassLightingLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.StaticPassLightingLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.logic.TechniqueDefLogic"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.plugins.J3MLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.material.plugins.ShaderNodeDefinitionLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.ColorRGBA"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Line"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.LineSegment"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Matrix3f"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Matrix4f"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Plane"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Quaternion"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Ray"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Rectangle"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Ring"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Spline"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Transform"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Triangle"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Vector2f"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Vector3f"); + TeaReflectionSupplier.addReflectionClass("com.jme3.math.Vector4f"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.AbstractMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.Message"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.ChannelInfoMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.ClientRegistrationMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.CompressedMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.DisconnectMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.GZIPCompressedMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.SerializerRegistrationsMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.message.ZIPCompressedMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.rmi.RemoteMethodCallMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.rmi.RemoteMethodReturnMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.rmi.RemoteObjectDefMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.service.rpc.msg.RpcCallMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.network.service.rpc.msg.RpcResponseMessage"); + TeaReflectionSupplier.addReflectionClass("com.jme3.plugins.gson.GsonParser"); + TeaReflectionSupplier.addReflectionClass("com.jme3.plugins.json.JsonParser"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.Filter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.FilterPostProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.HDRRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.PreDepthProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.SceneProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.BloomFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.CartoonEdgeFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.ColorOverlayFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.ComposeFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.ContrastAdjustmentFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.CrossHatchFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.DepthOfFieldFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.FXAAFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.FadeFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.FogFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.GammaCorrectionFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.KHRToneMapFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.LightScatteringFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.PosterizationFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.RadialBlurFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.SoftBloomFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.ToneMapFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.filters.TranslucentBucketFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.post.ssao.SSAOFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.renderer.Camera"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.AssetLinkNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.BatchNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.CameraNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.CollisionData"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.Geometry"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.GeometryGroupNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.LightNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.Mesh"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.Node"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.SimpleBatchNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.Spatial"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.UserData"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.VertexBuffer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.AbstractControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.BillboardControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.CameraControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.Control"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.LightControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.LodControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.control.UpdateControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.Arrow"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.Grid"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.SkeletonDebugger"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.SkeletonInterBoneWire"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.SkeletonPoints"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.SkeletonWire"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.WireBox"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.WireFrustum"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.WireSphere"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.custom.ArmatureDebugger"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.custom.ArmatureInterJointsWire"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.custom.ArmatureNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.debug.custom.JointShape"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.instancing.InstancedGeometry"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.instancing.InstancedNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.mesh.MorphTarget"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.IrBoneWeightIndex"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.IrVertex"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.MTLLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.OBJLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.ContentTextureKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.ContentTextureLocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.FbxLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.SceneKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.SceneLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.fbx.SceneWithAnimationLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.gltf.BinDataKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.gltf.BinLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.gltf.GlbLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.gltf.GltfLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.gltf.GltfModelKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.MaterialLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.MeshLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.OgreMeshKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.SceneLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.SceneMeshLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.SkeletonLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.plugins.ogre.matext.OgreMaterialKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.AbstractBox"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Box"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.CenterQuad"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Curve"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Cylinder"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Dome"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Line"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.PQTorus"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Quad"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.RectangleMesh"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Sphere"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.StripBox"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Surface"); + TeaReflectionSupplier.addReflectionClass("com.jme3.scene.shape.Torus"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.Shader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.ShaderNode"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.ShaderNodeDefinition"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.ShaderNodeVariable"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.VariableMapping"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.bufferobject.BufferObject"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.bufferobject.BufferRegion"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.plugins.GLSLLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shader.plugins.ShaderAssetKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.AbstractShadowFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.AbstractShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.BasicShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.DirectionalLightShadowFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.DirectionalLightShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.PointLightShadowFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.PointLightShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.PssmShadowFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.PssmShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.SpotLightShadowFilter"); + TeaReflectionSupplier.addReflectionClass("com.jme3.shadow.SpotLightShadowRenderer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.system.AppSettings"); + TeaReflectionSupplier.addReflectionClass("com.jme3.system.JmeSystem"); + TeaReflectionSupplier.addReflectionClass("com.jme3.system.JmeSystemDelegate"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.GeoMap"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.LODGeomap"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.MultiTerrainLodControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.NormalRecalcControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainGrid"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainGridLodControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainGridTileLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainLodControl"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainPatch"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.TerrainQuad"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.grid.AssetTileLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.grid.FractalTileLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.grid.ImageTileLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.lodcalc.LodCalculator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.lodcalc.LodThreshold"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.lodcalc.PerspectiveLodCalculator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.terrain.geomipmap.lodcalc.SimpleLodThreshold"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.FrameBuffer"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.Image"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.Texture"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.Texture2D"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.Texture3D"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.TextureArray"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.TextureCubeMap"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.TextureProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.plugins.DDSLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.plugins.PFMLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.plugins.SVGTextureKey"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.plugins.TGALoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.texture.plugins.ktx.KTXLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.ui.Picture"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.BufferAllocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.IntMap"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.ListMap"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.NativeObject"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.PrimitiveAllocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.ReflectionAllocator"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.SafeArrayList"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.clone.JmeCloneable"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.res.DefaultResourceLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.res.ResourceLoader"); + TeaReflectionSupplier.addReflectionClass("com.jme3.util.struct.StructStd140BufferObject"); + TeaReflectionSupplier.addReflectionClass("com.jme3.water.ReflectionProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.water.SimpleWaterProcessor"); + TeaReflectionSupplier.addReflectionClass("com.jme3.water.WaterFilter"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.ActionButton"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Button"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Checkbox"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Container"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.GridPanel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Insets3f"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Label"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.ListBox"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.OptionPanel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Panel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.PasswordField"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.ProgressBar"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.RollupPanel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Selector"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Slider"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.Spinner"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.TabbedPanel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.TextField"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.AbstractGuiComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.BorderLayout"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.BoxLayout"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.DynamicInsetsComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.IconComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.InsetsComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.QuadBackgroundComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.SpringGridLayout"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.TbtQuadBackgroundComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.Text2d"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.TextComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.component.TextEntryComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.AbstractNodeControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.CommandMap"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.GuiComponent"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.GuiControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.GuiLayout"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.GuiMaterial"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.LightingMaterialAdapter"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.core.UnshadedMaterialAdapter"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.dnd.DragAndDropControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.effect.EffectControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.event.CursorEventControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.event.MouseEventControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.focus.DefaultFocusTraversalControl"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.geom.DMesh"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.geom.MBox"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.geom.TbtQuad"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.list.DefaultCellRenderer"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.Attributes"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.ContainsSelector"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.ElementId"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.ElementSelector"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.Selector"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.StyleTree"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.style.Styles"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.text.DefaultDocumentModel"); + TeaReflectionSupplier.addReflectionClass("com.simsilica.lemur.value.DefaultValueRenderer"); + TeaReflectionSupplier.addReflectionClass("de.jarnbjo.vorbis.Floor1"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.ads.ImmersiveAdComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.ads.ImmersiveAdControl"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.Auth"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.AuthConfig"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.AuthSelectionWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.AuthStrategy"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.Nip46AuthStrategy"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nip07.Nip07Auth"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nip07.Nip07AuthWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nip46.Nip46Auth"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nip46.Nip46AuthWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nip46.Nip46ChallengeWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nsec.NsecAuth"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.nsec.NsecAuthWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.auth.stored.StoredAuthSelectionWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.Component"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.StallingComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.AppFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.AssetLoadingFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.AsyncAssetLoadingFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.Fragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.GuiViewPortFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.InputHandlerFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.LogicFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.MainViewPortFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.components.fragments.RenderFragment"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.CharacterComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.HudComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.LoadingScreenComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.MapComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.PhysicsComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.PostprocessingComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.demo.adc.SoundComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.CollectionSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.MapSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.Nip46MetadataSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.Nip46SignerSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NostrEventSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NostrKeyPairSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NostrPrivateKeySavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NostrPublicKeySavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NostrRelayInfoSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.NumberSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.SavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.export.StringSavableWrapper"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NAspectPreservingQuadBackground"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NButton"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NIconButton"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NLabel"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NLoadingSpinner"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NQrViewer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NSVGIcon"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NTextInput"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.NVSpacer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.containers.NColumn"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.containers.NContainer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.containers.NMultiPageList"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.containers.NPanel"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.components.containers.NRow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.qr.BitBuffer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.NToast"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.NWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.NWindowManagerComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.std.NConfirmDialogWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.std.NErrorWindow"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.gui.win.std.NHud"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.lnurl.LnUrlPayerData"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.Lobby"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.LocalLobby"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.BinaryMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.ByteDataMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.ClassRegistrationAckMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.CompressedMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.TextDataMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.network.protocol.messages.TextMessage"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.NostrFilter"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.NostrRelayInfo"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.NostrRelayLifecycleManager"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.NostrRelaySubManager"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.event.NostrEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.event.SignedNostrEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.event.UnsignedNostrEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.keypair.NostrKey"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.keypair.NostrKeyPair"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.keypair.NostrPrivateKey"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.keypair.NostrPublicKey"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.listeners.NostrRelayComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip01.Nip01UserMetadataFilter"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip05.Nip05Nip46Data"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip46.BunkerUrl"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip46.Nip46AppMetadata"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip46.NostrconnectUrl"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.nip50.NostrSearchFilter"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.rtc.turn.NostrTURNSettings"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.signer.NostrKeyPairSigner"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.signer.NostrNIP07Signer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.signer.NostrNIP46Signer"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostr4j.signer.NostrSigner"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.AdBidEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.AdBidFilter"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.AdEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdAcceptOfferEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdBailEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdNegotiationEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdOfferEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdPaymentRequestEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdPayoutEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.nostrads.protocol.negotiation.AdPowNegotiationEvent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.platform.RTCSettings"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.player.PlayerManagerComponent"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.context.HeapAllocator"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.context.WebSystem"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.filesystem.WebImageLoader"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.filesystem.WebLocator"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.filesystem.WebResourceLoader"); + TeaReflectionSupplier.addReflectionClass("org.ngengine.web.json.TeaJSONParser"); + } + + private static void init() { + initGenerated(); + } + + public static void addReflectionClass(Class c) { + clazzList.add(c); + } + + public static void addReflectionClass(String className) { + clazzNameList.add(className); + } + + + public static void addRegex(String regex) { + regexPatterns.add(Pattern.compile(regex)); + } + public TeaReflectionSupplier() { + System.out.println("TeaReflectionSupplier initialized"); + + } + + @Override + public Collection getAccessibleFields(ReflectionContext context, String className) { + Set fields = new HashSet<>(); + ClassReader cls = context.getClassSource().get(className); + if (cls == null) { + return Collections.emptyList(); + } + try { + + Class clazz = context.getClassLoader().loadClass(className); + + if (cls != null) { + if (canHaveReflection(clazz)) { + for (FieldReader field : cls.getFields()) { + String name = field.getName(); + fields.add(name); + } + } + } + } catch (ClassNotFoundException e) { + new RuntimeException(e); + } + + return fields; + } + + private boolean isWhitelistedType(ReflectionContext context, ValueType t) throws ClassNotFoundException{ + boolean canHaveReflection = false; + if (t instanceof ValueType.Void) { + return true; + } + if (t instanceof ValueType.Array) { + ValueType.Array a = (ValueType.Array) t; + t = a.getItemType(); + + } + if (t instanceof ValueType.Object) { + ValueType.Object obj = (ValueType.Object) t; + if(obj.getClassName().startsWith("java.lang")) { + canHaveReflection = true; + } else { + Class sc = context.getClassLoader().loadClass(obj.getClassName()); + canHaveReflection = canHaveReflection(sc); + } + } else if (t instanceof ValueType.Primitive) { + canHaveReflection = true; + } + return canHaveReflection; + + } + + @Override + public Collection getAccessibleMethods(ReflectionContext context, String className) { + Set methods = new HashSet<>(); + + ClassReader cls = context.getClassSource().get(className); + if (cls == null) { + return Collections.emptyList(); + } + try { + Class clazz = context.getClassLoader().loadClass(className); + + if (canHaveReflection(clazz)) { + Collection methods2 = cls.getMethods(); + int constructors = 0; + for (MethodReader method : methods2) { + + boolean isConstructor = method.getName().equals(""); + if(isConstructor) { + constructors++; + } + + boolean canHaveReflection = true; + + + if (canHaveReflection && !isConstructor) { + ValueType t = method.getResultType(); + canHaveReflection = isWhitelistedType(context, t); + } + + if (!canHaveReflection) { + continue; + } + + MethodDescriptor descriptor = method.getDescriptor(); + methods.add(descriptor); + } + } + } catch (ClassNotFoundException e) { + new RuntimeException(e); + } + return methods; + } + + private boolean canHaveReflection(Class clazz) { + for (Class c : clazzList) { + + if (c.isAssignableFrom(clazz) || c.equals(clazz)) { + return true; + } + } + String className = clazz.getName(); + for(String cn : clazzNameList) { + if(cn.equals(className)) { + return true; + } + } + for (Pattern pattern : regexPatterns) { + if (pattern.matcher(className).matches()) { + return true; + } + } + + return false; + } +} \ No newline at end of file diff --git a/platform-web/src/main/java/org/ngengine/platform/WebLauncher.java b/platform-web/src/main/java/org/ngengine/platform/WebLauncher.java new file mode 100644 index 0000000..e1c61cf --- /dev/null +++ b/platform-web/src/main/java/org/ngengine/platform/WebLauncher.java @@ -0,0 +1,21 @@ +package org.ngengine.platform; + +import org.ngengine.NGEApplication.NGEAppRunner; +import org.ngengine.app.Main; +import org.ngengine.platform.teavm.TeaVMPlatform; +import org.ngengine.web.context.WebSystem; +import com.jme3.system.JmeSystem; + + +public class WebLauncher { + + public static void main(String[] args) { + new Thread(()->{ // must be a thread to run in a suspendable context in teavm + NGEPlatform.set(new TeaVMPlatform()); + JmeSystem.setSystemDelegate(new WebSystem()); + + NGEAppRunner runner = Main.main(args); + runner.start(); + }).start(); + } +} \ No newline at end of file diff --git a/platform-web/src/main/resources/META-INF/services/org.teavm.classlib.ReflectionSupplier b/platform-web/src/main/resources/META-INF/services/org.teavm.classlib.ReflectionSupplier new file mode 100644 index 0000000..69e2408 --- /dev/null +++ b/platform-web/src/main/resources/META-INF/services/org.teavm.classlib.ReflectionSupplier @@ -0,0 +1 @@ +org.ngengine.platform.TeaReflectionSupplier diff --git a/platform-web/src/main/resources/manifest.json b/platform-web/src/main/resources/manifest.json new file mode 100644 index 0000000..264545b --- /dev/null +++ b/platform-web/src/main/resources/manifest.json @@ -0,0 +1,13 @@ +{ + "name": "Nostr Game Engine Web App", + "short_name": "ngewebapp", + "start_url": "index.html", + "display": "standalone", + "icons": [{ + "src": "logo.webp", + "sizes": "4096x4096", + "type": "image/webp" + }], + "background_color": "#08020c", + "theme_color": "#08020c" +} diff --git a/release-logging.properties b/release-logging.properties new file mode 100644 index 0000000..4774e96 --- /dev/null +++ b/release-logging.properties @@ -0,0 +1,11 @@ +# Global logging level - set to a higher threshold +.level = INFO + +# Handler (console or file) +handlers = java.util.logging.ConsoleHandler +java.util.logging.ConsoleHandler.level = INFO +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter + +# Set FINEST logging only for org.ngengine.nostr4j and its children +org.ngengine.nostr4j.level = INFO +org.ngengine.level = INFO \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 7eaa4dd..15ac6df 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,9 +5,11 @@ pluginManagement { google() mavenCentral() gradlePluginPortal() + maven { url = uri("https://teavm.org/maven/repository") } + mavenLocal() } plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" id("com.android.application") version '8.12.2' apply false id("com.android.library") version '8.12.2' apply false id("org.jetbrains.kotlin.android") version "2.1.20" apply false @@ -16,8 +18,19 @@ pluginManagement { +plugins { + id("org.gradle.toolchains.foojay-resolver") version "1.0.0" +} - +toolchainManagement { + jvm { + javaRepositories { + repository("foojay") { + resolverClass = org.gradle.toolchains.foojay.FoojayToolchainResolver + } + } + } +} dependencyResolutionManagement { repositories { @@ -27,18 +40,58 @@ dependencyResolutionManagement { maven { url = uri("https://central.sonatype.com/repository/maven-snapshots") } + maven { url = uri("https://teavm.org/maven/repository") } + ivy { + name = "Node.js" + setUrl("https://nodejs.org/dist/") + patternLayout { + artifact("v[revision]/[artifact](-v[revision]-[classifier]).[ext]") + } + metadataSources { + artifact() + } + content { + includeModule("org.nodejs", "node") + } + } } } - -rootProject.name = settings.projectName -include('app') - -if(withDesktopPlatform) { - include('platform-desktop') +if (!gradle.hasProperty('ext')) { + gradle.ext {} } -// if (withAndroidPlatform) { -// include('platform-android') -// } \ No newline at end of file +gradle.beforeProject { p -> + if (p == p.rootProject) { + p.tasks.register("cleanDist", org.gradle.api.tasks.Delete) { + delete p.layout.projectDirectory.dir("dist") + } + p.gradle.projectsEvaluated { + def cleanTask = p.tasks.findByName("clean") ?: p.tasks.register("clean") + cleanTask.configure { dependsOn("cleanDist") } + } + } +} + +// import json properties +apply from: "${rootDir}/gradle/libs/props.gradle" +def ngeConfig = gradle.ext.loadNgeAppProperties("${rootDir}/app/src/main/resources/ngeapp.json") +gradle.beforeProject { p -> + ngeConfig.each { k, v -> p.ext.set(k, v) } + if (ngeConfig.Version) p.version = ngeConfig.Version.toString() + if (ngeConfig.Namespace) p.group = ngeConfig.Namespace.toString() +} + +print("Build with config: "+ngeConfig) +rootProject.name = ngeConfig.ShortName +include('app') + +// ENABLE DESKTOP BUILD TARGET +include('platform-desktop') + +// ENABLE ANDROID BUILD TARGET +include('platform-android') + +// ENABLE WEB BUILD TARGET +include('platform-web')