From 0d4882dbabcc61c4863109eac12eac507b7b1b34 Mon Sep 17 00:00:00 2001 From: Griefed <griefed@griefed.de> Date: Sun, 26 May 2024 15:19:53 +0200 Subject: [PATCH] milestone: New installers, stats & dashboard & up- and download tracking for the webservice --- .github/workflows/github-prerelease.yml | 340 +- .github/workflows/github_release.yml | 339 +- .github/workflows/test.yml | 248 +- .github/workflows/update_readme.yml | 3 +- .gitignore | 17 +- .gitlab-ci.yml | 46 +- .runConfigurations/Build All.run.xml | 1 - .../Build without tests with version.run.xml | 2 +- .../Build without tests.run.xml | 4 +- .runConfigurations/Clean.run.xml | 1 - .runConfigurations/Debug Fat Jar.run.xml | 2 +- Dockerfile | 2 +- HELP.md | 14 +- LICENSE | 46 - README.md | 7 + build.gradle.kts | 88 +- buildSrc/build.gradle.kts | 12 +- ...verpackcreator.java-conventions.gradle.kts | 2 - ...otlin-multiplatform-conventions.gradle.kts | 71 - ...rpackcreator.quasar-conventions.gradle.kts | 2 +- docker-compose-dev.yml | 2 +- docker-compose.yml | 2 +- gradle.properties | 4 +- img/banner_installer.png | Bin 0 -> 104129 bytes img/banner_installer_fin.png | Bin 0 -> 85205 bytes img/install.png | Bin 0 -> 175021 bytes img/install_128x128.png | Bin 0 -> 32583 bytes img/install_16x16.png | Bin 0 -> 3155 bytes img/install_256x256.png | Bin 0 -> 68721 bytes img/install_32x32.png | Bin 0 -> 7103 bytes img/install_48x48.png | Bin 0 -> 16241 bytes img/install_512x512.png | Bin 0 -> 171015 bytes img/uninstall.png | Bin 0 -> 174513 bytes img/uninstall_128x128.png | Bin 0 -> 32391 bytes img/uninstall_16x16.png | Bin 0 -> 3129 bytes img/uninstall_256x256.png | Bin 0 -> 68400 bytes img/uninstall_32x32.png | Bin 0 -> 7104 bytes img/uninstall_48x48.png | Bin 0 -> 16056 bytes img/uninstall_512x512.png | Bin 0 -> 170342 bytes licenses/LICENSE-AGREEMENT | 154 +- licenses/LICENSE-AGREEMENT.txt | 5595 +++++++++++++++++ .../META-INF/LICENSE.md | 29 + .../META-INF/NOTICE.md | 45 + .../byte-buddy-1.14.12.jar/META-INF/LICENSE | 180 + .../byte-buddy-1.14.12.jar/META-INF/NOTICE | 13 + .../byte-buddy-1.14.16.jar/META-INF/LICENSE | 180 + .../byte-buddy-1.14.16.jar/META-INF/NOTICE | 13 + .../byte-buddy-1.14.9.jar/META-INF/LICENSE | 180 + .../byte-buddy-1.14.9.jar/META-INF/NOTICE | 13 + .../META-INF/LICENSE.txt | 22 + licenses/classmate-1.7.0.jar/META-INF/LICENSE | 7 + licenses/classmate-1.7.0.jar/META-INF/NOTICE | 9 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 5 + .../META-INF/LICENSE.txt | 203 + .../commons-io-2.16.1.jar/META-INF/NOTICE.txt | 5 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 5 + licenses/flatlaf-3.4.jar/META-INF/LICENSE | 201 + .../flatlaf-extras-3.4.jar/META-INF/LICENSE | 201 + .../META-INF/LICENSE | 201 + .../formdev/flatlaf/fonts/inter/LICENSE.txt | 92 + .../META-INF/LICENSE | 201 + .../META-INF/LICENSE | 201 + licenses/index.html | 124 +- .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../jackson-core-2.15.4.jar/META-INF/LICENSE | 202 + .../jackson-core-2.15.4.jar/META-INF/NOTICE | 32 + .../jackson-core-2.17.0.jar/META-INF/LICENSE | 202 + .../jackson-core-2.17.0.jar/META-INF/NOTICE | 32 + .../jackson-core-2.17.1.jar/META-INF/LICENSE | 202 + .../jackson-core-2.17.1.jar/META-INF/NOTICE | 32 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 21 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 24 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 24 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 24 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE | 8 + .../META-INF/NOTICE | 17 + .../META-INF/LICENSE.md | 29 + .../META-INF/NOTICE.md | 91 + .../META-INF/LICENSE.md | 29 + .../META-INF/NOTICE.md | 47 + .../java-semver-0.10.2.jar/META-INF/LICENSE | 21 + .../jaxb-core-4.0.5.jar/META-INF/LICENSE.md | 28 + .../jaxb-core-4.0.5.jar/META-INF/NOTICE.md | 191 + .../META-INF/LICENSE.md | 28 + .../jaxb-runtime-4.0.5.jar/META-INF/NOTICE.md | 191 + licenses/licences.md | 160 +- .../log4j-api-2.23.1.jar/META-INF/LICENSE | 202 + licenses/log4j-api-2.23.1.jar/META-INF/NOTICE | 6 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 6 + .../log4j-core-2.23.1.jar/META-INF/LICENSE | 202 + .../log4j-core-2.23.1.jar/META-INF/NOTICE | 8 + .../log4j-jul-2.23.1.jar/META-INF/LICENSE | 202 + licenses/log4j-jul-2.23.1.jar/META-INF/NOTICE | 6 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 6 + .../META-INF/LICENSE | 201 + .../META-INF/NOTICE | 45 + .../META-INF/LICENSE | 201 + .../META-INF/NOTICE | 45 + .../META-INF/LICENSE | 201 + .../META-INF/NOTICE | 45 + .../META-INF/LICENSE | 201 + .../META-INF/NOTICE | 45 + .../postgresql-42.6.2.jar/META-INF/LICENSE | 33 + .../com.ongres.scram/client-2.1/LICENSE | 22 + .../com.ongres.scram/common-2.1/LICENSE | 22 + .../saslprep-1.1/LICENSE | 22 + .../stringprep-1.1/LICENSE | 22 + .../postgresql-42.7.3.jar/META-INF/LICENSE | 33 + .../com.ongres.scram/client-2.1/LICENSE | 22 + .../com.ongres.scram/common-2.1/LICENSE | 22 + .../saslprep-1.1/LICENSE | 22 + .../stringprep-1.1/LICENSE | 22 + .../slf4j-api-2.0.12.jar/META-INF/LICENSE.txt | 24 + .../slf4j-api-2.0.13.jar/META-INF/LICENSE.txt | 24 + .../spring-aop-6.1.5.jar/META-INF/license.txt | 297 + .../spring-aop-6.1.5.jar/META-INF/notice.txt | 11 + .../spring-aop-6.1.8.jar/META-INF/license.txt | 297 + .../spring-aop-6.1.8.jar/META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/LICENSE.txt | 202 + .../spring-boot-3.2.4.jar/META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../spring-boot-3.3.0.jar/META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/LICENSE.txt | 202 + .../META-INF/NOTICE.txt | 6 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../spring-core-6.1.5.jar/META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../spring-core-6.1.8.jar/META-INF/notice.txt | 11 + .../spring-data-commons-3.2.4.jar/license.txt | 216 + .../spring-data-commons-3.2.4.jar/notice.txt | 57 + .../spring-data-commons-3.3.0.jar/license.txt | 216 + .../spring-data-commons-3.3.0.jar/notice.txt | 57 + .../spring-data-jpa-3.2.4.jar/license.txt | 216 + licenses/spring-data-jpa-3.2.4.jar/notice.txt | 36 + licenses/spring-data-jpa-3.2.4.jar/readme.txt | 17 + .../spring-data-jpa-3.3.0.jar/license.txt | 216 + licenses/spring-data-jpa-3.3.0.jar/notice.txt | 36 + licenses/spring-data-jpa-3.3.0.jar/readme.txt | 17 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../spring-jcl-6.1.5.jar/META-INF/license.txt | 297 + .../spring-jcl-6.1.5.jar/META-INF/notice.txt | 11 + .../spring-jcl-6.1.8.jar/META-INF/license.txt | 297 + .../spring-jcl-6.1.8.jar/META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../spring-jdbc-6.1.5.jar/META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../spring-jdbc-6.1.8.jar/META-INF/notice.txt | 11 + .../spring-orm-6.1.5.jar/META-INF/license.txt | 297 + .../spring-orm-6.1.5.jar/META-INF/notice.txt | 11 + .../spring-orm-6.1.8.jar/META-INF/license.txt | 297 + .../spring-orm-6.1.8.jar/META-INF/notice.txt | 11 + .../spring-tx-6.1.5.jar/META-INF/license.txt | 297 + .../spring-tx-6.1.5.jar/META-INF/notice.txt | 11 + .../spring-tx-6.1.8.jar/META-INF/license.txt | 297 + .../spring-tx-6.1.8.jar/META-INF/notice.txt | 11 + .../spring-web-6.1.5.jar/META-INF/license.txt | 297 + .../spring-web-6.1.5.jar/META-INF/notice.txt | 11 + .../spring-web-6.1.8.jar/META-INF/license.txt | 297 + .../spring-web-6.1.8.jar/META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/license.txt | 297 + .../META-INF/notice.txt | 11 + .../META-INF/LICENSE | 858 +++ .../META-INF/NOTICE | 31 + .../META-INF/LICENSE | 858 +++ .../META-INF/NOTICE | 31 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 5 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 5 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 5 + .../META-INF/LICENSE | 202 + .../META-INF/NOTICE | 5 + licenses/txw2-4.0.5.jar/META-INF/LICENSE.md | 28 + licenses/txw2-4.0.5.jar/META-INF/NOTICE.md | 191 + misc/PRE-INFO.md | 7 +- root/defaults/serverpackcreator.properties | 2 +- .../s6-overlay/s6-rc.d/init-spc-config/run | 2 +- serverpackcreator-api/build.gradle.kts | 119 +- .../de/griefed/serverpackcreator/api/Api.kt | 147 - .../serverpackcreator/api/ApiPlugins.kt | 113 - .../serverpackcreator/api/ApiProperties.kt | 35 - .../serverpackcreator/api/ApiWrapper.kt | 54 - .../serverpackcreator/api/Configuration.kt | 546 -- .../api/ConfigurationHandler.kt | 82 - .../api/InclusionSpecification.kt | 56 - .../de/griefed/serverpackcreator/api/Pack.kt | 136 - .../serverpackcreator/api/PackConfig.kt | 105 - .../serverpackcreator/api/ServerPack.kt | 514 -- .../serverpackcreator/api/ServerPackFile.kt | 37 - .../api/ServerPackHandler.kt | 57 - .../api/modscanning/FabricScanner.kt | 32 - .../api/modscanning/ForgeAnnotationScanner.kt | 34 - .../api/modscanning/ForgeTomlScanner.kt | 36 - .../api/modscanning/ModScanner.kt | 45 - .../api/modscanning/NeoForgeTomlScanner.kt | 7 - .../api/modscanning/QuiltScanner.kt | 32 - .../api/plugins/ExtensionPoint.kt | 29 - .../plugins/swinggui/ExtensionConfigPanel.kt | 78 - .../api/plugins/swinggui/ExtensionTab.kt | 30 - .../api/plugins/swinggui/TabExtension.kt | 83 - .../api/utilities/CommentedConfig.kt | 26 - .../serverpackcreator/api/utilities/File.kt | 53 - .../serverpackcreator/api/utilities/Icon.kt | 33 - .../api/utilities/Optional.kt | 32 - .../api/utilities/TomlParser.kt | 27 - .../serverpackcreator/api/utilities/URL.kt | 30 - .../api/utilities/common/FileUtilities.kt | 214 - .../common/FileUtilitiesExtensions.kt | 44 - .../api/utilities/common/JarUtilities.kt | 27 - .../api/utilities/common/JsonUtilities.kt | 27 - .../api/utilities/common/SystemUtilities.kt | 29 - .../api/utilities/common/Utilities.kt | 37 - .../api/utilities/common/WebUtilities.kt | 133 - .../api/utilities/common/XmlUtilities.kt | 27 - .../api/versionmeta/VersionMeta.kt | 108 - .../api/versionmeta/fabric/FabricMeta.kt | 71 - .../api/versionmeta/forge/ForgeMeta.kt | 240 - .../legacyfabric/LegacyFabricMeta.kt | 73 - .../versionmeta/minecraft/MinecraftMeta.kt | 166 - .../api/versionmeta/neoforge/NeoForgeMeta.kt | 221 - .../api/versionmeta/quilt/QuiltMeta.kt | 53 - .../serverpackcreator/api/LoggingConfig.kt | 237 - .../api/modscanning/NeoForgeTomlScanner.kt | 8 - .../api/plugins/TypeAliases.kt | 25 - .../api/utilities/TypeAliases.kt | 52 - .../manifests/minecraft-manifest.json | 1 - .../resources/log4j2.component.properties | 3 - .../api/modscanning/ModScannerTest.kt | 229 - .../resources/fabric_tests/server_pack.zip | Bin 5418 -> 0 bytes .../resources/forge_tests/server_pack.zip | Bin 5418 -> 0 bytes .../legacyfabric_tests/server_pack.zip | Bin 5418 -> 0 bytes .../resources/log4j2.component.properties | 3 - .../resources/neoforge_tests/server_pack.zip | Bin 5418 -> 0 bytes .../overridestest/overrides/mods/aaaaa.jar | 0 .../overridestest/overrides/mods/bbbbb.jar | 0 .../overridestest/overrides/mods/ccccc.jar | 0 .../overridestest/overrides/mods/fffff.jar | 0 .../overridestest/overrides/mods/ggggg.jar | 0 .../overridestest/overrides/mods/hhhhh.jar | 0 .../overridestest/overrides/mods/iiiii.jar | 0 .../overridestest/overrides/mods/jjjjj.jar | 0 .../overridestest/overrides/mods/kkkkk.jar | 0 .../overridestest/overrides/mods/lllll.jar | 0 .../overridestest/overrides/mods/nnnnn.jar | 0 .../overridestest/overrides/mods/ppppp.jar | 0 .../overridestest/overrides/mods/qqqqq.jar | 0 .../overridestest/overrides/mods/rrrrr.jar | 0 .../overridestest/overrides/mods/uuuuu.jar | 0 .../overridestest/overrides/mods/vvvvv.jar | 0 .../overridestest/overrides/mods/wwwww.jar | 0 .../overridestest/overrides/mods/xxxxx.jar | 0 .../overridestest/overrides/mods/yyyyy.jar | 0 .../overridestest/overrides/mods/zzzzz.jar | 0 .../resources/quilt_tests/server_pack.zip | Bin 5418 -> 0 bytes .../resources/testresources/server_pack.zip | Bin 5418 -> 0 bytes .../server_pack/mods/testmod.jar | 0 .../i18n/Translations_en_GB.properties | 1 + .../i18n/Translations_pt_BR.properties | 1 + .../serverpackcreator/api/ApiPlugins.kt | 18 +- .../serverpackcreator/api/ApiProperties.kt | 292 +- .../serverpackcreator/api/ApiWrapper.kt | 159 +- .../serverpackcreator/api/ConfigCheck.kt | 0 .../api/ConfigurationHandler.kt | 586 +- .../serverpackcreator/api/ExclusionFilter.kt | 0 .../api/InclusionSpecification.kt | 20 +- .../serverpackcreator/api}/ModpackSource.kt | 4 +- .../serverpackcreator/api/PackConfig.kt | 108 +- .../serverpackcreator/api/ServerPackFile.kt | 6 +- .../api/ServerPackHandler.kt | 472 +- .../api/modscanning/FabricScanner.kt | 7 +- .../api/modscanning/ForgeAnnotationScanner.kt | 9 +- .../api/modscanning/ForgeTomlScanner.kt | 12 +- .../api/modscanning/JsonBasedScanner.kt | 2 +- .../api/modscanning/ModScanner.kt | 12 +- .../api/modscanning/NeoForgeTomlScanner.kt | 8 + .../api/modscanning/QuiltScanner.kt | 23 +- .../api/modscanning/Scanner.kt | 0 .../api/modscanning/ScanningException.kt | 0 .../api/plugins/BaseInformation.kt | 0 .../api/plugins/CustomPluginFactory.kt | 2 +- .../api/plugins/ExtensionException.kt | 0 .../api/plugins/ExtensionInformation.kt | 2 + .../api/plugins/PluginContext.kt | 0 .../api/plugins/ServerPackCreatorPlugin.kt | 16 +- .../ConfigCheckExtension.kt | 4 +- .../serverpackhandler/PostGenExtension.kt | 0 .../serverpackhandler/PreGenExtension.kt | 0 .../serverpackhandler/PreZipExtension.kt | 0 .../ServerPackHandlerBase.kt | 4 +- .../plugins/swinggui/ConfigPanelExtension.kt | 4 +- .../plugins/swinggui/ExtensionConfigPanel.kt | 13 +- .../api/plugins/swinggui/ExtensionTab.kt | 2 +- .../plugins/swinggui/ServerPackConfigTab.kt | 2 +- .../api/plugins/swinggui/TabExtension.kt | 18 +- .../api/utilities/ReticulatingSplines.kt | 0 .../api/utilities/SimpleStopWatch.kt | 0 .../api/utilities/common/Affirm.kt | 0 .../api/utilities/common/BooleanUtilities.kt | 2 +- .../api/utilities/common/ClassUtilities.kt | 6 - .../api/utilities/common/Comparison.kt | 2 +- .../api/utilities/common/FileType.kt | 0 .../api/utilities/common/FileUtilities.kt | 74 +- .../api/utilities/common/FilterType.kt | 0 .../utilities/common/InputStreamUtilities.kt | 0 .../common/InvalidFileTypeException.kt | 0 .../utilities/common/InvalidLinkException.kt | 0 .../utilities/common/JarAccessException.kt | 0 .../api/utilities/common/JarInformation.kt | 18 +- .../api/utilities/common/JarUtilities.kt | 15 +- .../api/utilities/common/JsonException.kt | 0 .../api/utilities/common/JsonUtilities.kt | 2 +- .../api/utilities/common/ListUtilities.kt | 2 +- .../api/utilities/common/RegexUtilities.kt | 0 .../common/SemanticVersionComparator.kt | 0 .../api/utilities/common/StringUtilities.kt | 0 .../api/utilities/common/SystemUtilities.kt | 25 +- .../api/utilities/common/Utilities.kt | 20 +- .../api/utilities/common/WebUtilities.kt | 24 +- .../api/utilities/common/XmlUtilities.kt | 2 +- .../api/utilities/common/ZipUtilities.kt | 0 .../api/versionmeta/InvalidTypeException.kt | 0 .../serverpackcreator/api/versionmeta/Meta.kt | 12 +- .../serverpackcreator/api/versionmeta/Type.kt | 0 .../api/versionmeta/VersionMeta.kt | 44 +- .../api/versionmeta/fabric/FabricArguments.kt | 0 .../api/versionmeta/fabric/FabricDetails.kt | 0 .../api/versionmeta/fabric/FabricInstaller.kt | 0 .../fabric/FabricIntermediaries.kt | 0 .../versionmeta/fabric/FabricIntermediary.kt | 0 .../api/versionmeta/fabric/FabricLibrary.kt | 0 .../api/versionmeta/fabric/FabricLoader.kt | 0 .../versionmeta/fabric/FabricLoaderDetails.kt | 0 .../api/versionmeta/fabric/FabricMeta.kt | 50 +- .../api/versionmeta/forge/ForgeInstance.kt | 0 .../api/versionmeta/forge/ForgeLoader.kt | 2 +- .../api/versionmeta/forge/ForgeMeta.kt | 50 +- .../legacyfabric/LegacyFabricGame.kt | 0 .../legacyfabric/LegacyFabricInstaller.kt | 0 .../legacyfabric/LegacyFabricLoader.kt | 0 .../legacyfabric/LegacyFabricMeta.kt | 40 +- .../legacyfabric/LegacyFabricVersioning.kt | 0 .../versionmeta/minecraft/MinecraftClient.kt | 0 .../minecraft/MinecraftClientMeta.kt | 2 +- .../versionmeta/minecraft/MinecraftMeta.kt | 30 +- .../versionmeta/minecraft/MinecraftServer.kt | 0 .../minecraft/MinecraftServerMeta.kt | 0 .../versionmeta/neoforge/NeoForgeInstance.kt | 0 .../versionmeta/neoforge/NeoForgeLoader.kt | 2 +- .../api/versionmeta/neoforge/NeoForgeMeta.kt | 50 +- .../neoforge/NewNeoForgeInstance.kt | 0 .../neoforge/OldNeoForgeInstance.kt | 0 .../api/versionmeta/quilt/QuiltInstaller.kt | 0 .../api/versionmeta/quilt/QuiltLoader.kt | 0 .../api/versionmeta/quilt/QuiltMeta.kt | 44 +- .../{jvmMain => main}/kotlin/io/ByteReader.kt | 0 .../{jvmMain => main}/kotlin/io/ByteWriter.kt | 0 .../src/{jvmMain => main}/kotlin/io/Bytes.kt | 0 .../kotlin/mslinks/LinkInfo.kt | 0 .../kotlin/mslinks/LinkTargetIDList.kt | 0 .../kotlin/mslinks/Serializable.kt | 0 .../kotlin/mslinks/ShellLink.kt | 0 .../kotlin/mslinks/ShellLinkException.kt | 0 .../kotlin/mslinks/ShellLinkHeader.kt | 0 .../kotlin/mslinks/ShellLinkHelper.kt | 0 .../mslinks/UnsupportedCLSIDException.kt | 0 .../mslinks/UnsupportedItemIDException.kt | 0 .../kotlin/mslinks/data/BitSet32.kt | 0 .../kotlin/mslinks/data/CNRLink.kt | 0 .../kotlin/mslinks/data/CNRLinkFlags.kt | 0 .../kotlin/mslinks/data/ConsoleFlags.kt | 0 .../mslinks/data/FileAttributesFlags.kt | 0 .../kotlin/mslinks/data/Filetime.kt | 0 .../kotlin/mslinks/data/GUID.kt | 0 .../kotlin/mslinks/data/HotKeyFlags.kt | 0 .../kotlin/mslinks/data/ItemID.kt | 0 .../kotlin/mslinks/data/ItemIDDrive.kt | 0 .../kotlin/mslinks/data/ItemIDFS.kt | 0 .../kotlin/mslinks/data/ItemIDRegFolder.kt | 0 .../kotlin/mslinks/data/ItemIDRegItem.kt | 0 .../kotlin/mslinks/data/ItemIDRoot.kt | 0 .../kotlin/mslinks/data/ItemIDUnknown.kt | 0 .../kotlin/mslinks/data/LinkFlags.kt | 0 .../kotlin/mslinks/data/LinkInfoFlags.kt | 0 .../kotlin/mslinks/data/Registry.kt | 0 .../kotlin/mslinks/data/Size.kt | 0 .../kotlin/mslinks/data/VolumeID.kt | 0 .../kotlin/mslinks/extra/ConsoleData.kt | 0 .../kotlin/mslinks/extra/ConsoleFEData.kt | 0 .../mslinks/extra/EnvironmentVariable.kt | 0 .../kotlin/mslinks/extra/Stub.kt | 0 .../kotlin/mslinks/extra/Tracker.kt | 0 .../kotlin/mslinks/extra/VistaIDList.kt | 0 .../{jvmMain => main}/resources/CHANGELOG.md | 12 + .../resources/CODE_OF_CONDUCT.md | 0 .../resources/CONTRIBUTING.md | 0 .../src/{jvmMain => main}/resources/HELP.md | 0 .../src/{jvmMain => main}/resources/LICENSE | 46 - .../src/{jvmMain => main}/resources/README.md | 7 + .../de/griefed/resources/cli_help.txt | 0 .../examples/serverpackcreator.example | 0 .../resources/lang/lang_de_de.properties | 0 .../resources/lang/lang_uk_ua.properties | 0 .../manifests/fabric-installer-manifest.xml | 7 +- .../fabric-intermediaries-manifest.json | 120 + .../resources/manifests/fabric-manifest.xml | 10 +- .../resources/manifests/forge-manifest.json | 77 +- .../legacy-fabric-game-manifest.json | 0 .../legacy-fabric-installer-manifest.xml | 0 .../legacy-fabric-loader-manifest.json | 30 +- .../resources/manifests/mcserver/1.0.json | 0 .../resources/manifests/mcserver/1.1.json | 0 .../manifests/mcserver/1.10-pre1.json | 0 .../manifests/mcserver/1.10-pre2.json | 0 .../resources/manifests/mcserver/1.10.1.json | 0 .../resources/manifests/mcserver/1.10.2.json | 0 .../resources/manifests/mcserver/1.10.json | 0 .../manifests/mcserver/1.11-pre1.json | 0 .../resources/manifests/mcserver/1.11.1.json | 0 .../resources/manifests/mcserver/1.11.2.json | 0 .../resources/manifests/mcserver/1.11.json | 0 .../manifests/mcserver/1.12-pre1.json | 0 .../manifests/mcserver/1.12-pre2.json | 0 .../manifests/mcserver/1.12-pre3.json | 0 .../manifests/mcserver/1.12-pre4.json | 0 .../manifests/mcserver/1.12-pre5.json | 0 .../manifests/mcserver/1.12-pre6.json | 0 .../manifests/mcserver/1.12-pre7.json | 0 .../manifests/mcserver/1.12.1-pre1.json | 0 .../resources/manifests/mcserver/1.12.1.json | 0 .../manifests/mcserver/1.12.2-pre1.json | 0 .../manifests/mcserver/1.12.2-pre2.json | 0 .../resources/manifests/mcserver/1.12.2.json | 0 .../resources/manifests/mcserver/1.12.json | 0 .../manifests/mcserver/1.13-pre1.json | 0 .../manifests/mcserver/1.13-pre10.json | 0 .../manifests/mcserver/1.13-pre2.json | 0 .../manifests/mcserver/1.13-pre3.json | 0 .../manifests/mcserver/1.13-pre4.json | 0 .../manifests/mcserver/1.13-pre5.json | 0 .../manifests/mcserver/1.13-pre6.json | 0 .../manifests/mcserver/1.13-pre7.json | 0 .../manifests/mcserver/1.13-pre8.json | 0 .../manifests/mcserver/1.13-pre9.json | 0 .../manifests/mcserver/1.13.1-pre1.json | 0 .../manifests/mcserver/1.13.1-pre2.json | 0 .../resources/manifests/mcserver/1.13.1.json | 0 .../manifests/mcserver/1.13.2-pre1.json | 0 .../manifests/mcserver/1.13.2-pre2.json | 0 .../resources/manifests/mcserver/1.13.2.json | 0 .../resources/manifests/mcserver/1.13.json | 0 .../mcserver/1.14 Pre-Release 1.json | 0 .../mcserver/1.14 Pre-Release 2.json | 0 .../mcserver/1.14 Pre-Release 3.json | 0 .../mcserver/1.14 Pre-Release 4.json | 0 .../mcserver/1.14 Pre-Release 5.json | 0 .../mcserver/1.14.1 Pre-Release 1.json | 0 .../mcserver/1.14.1 Pre-Release 2.json | 0 .../resources/manifests/mcserver/1.14.1.json | 0 .../mcserver/1.14.2 Pre-Release 1.json | 0 .../mcserver/1.14.2 Pre-Release 2.json | 0 .../mcserver/1.14.2 Pre-Release 3.json | 0 .../mcserver/1.14.2 Pre-Release 4.json | 0 .../resources/manifests/mcserver/1.14.2.json | 0 .../manifests/mcserver/1.14.3-pre1.json | 0 .../manifests/mcserver/1.14.3-pre2.json | 0 .../manifests/mcserver/1.14.3-pre3.json | 0 .../manifests/mcserver/1.14.3-pre4.json | 0 .../resources/manifests/mcserver/1.14.3.json | 0 .../manifests/mcserver/1.14.4-pre1.json | 0 .../manifests/mcserver/1.14.4-pre2.json | 0 .../manifests/mcserver/1.14.4-pre3.json | 0 .../manifests/mcserver/1.14.4-pre4.json | 0 .../manifests/mcserver/1.14.4-pre5.json | 0 .../manifests/mcserver/1.14.4-pre6.json | 0 .../manifests/mcserver/1.14.4-pre7.json | 0 .../resources/manifests/mcserver/1.14.4.json | 0 .../resources/manifests/mcserver/1.14.json | 0 .../manifests/mcserver/1.15-pre1.json | 0 .../manifests/mcserver/1.15-pre2.json | 0 .../manifests/mcserver/1.15-pre3.json | 0 .../manifests/mcserver/1.15-pre4.json | 0 .../manifests/mcserver/1.15-pre5.json | 0 .../manifests/mcserver/1.15-pre6.json | 0 .../manifests/mcserver/1.15-pre7.json | 0 .../manifests/mcserver/1.15.1-pre1.json | 0 .../resources/manifests/mcserver/1.15.1.json | 0 .../manifests/mcserver/1.15.2-pre1.json | 0 .../manifests/mcserver/1.15.2-pre2.json | 0 .../resources/manifests/mcserver/1.15.2.json | 0 .../resources/manifests/mcserver/1.15.json | 0 .../manifests/mcserver/1.16-pre1.json | 0 .../manifests/mcserver/1.16-pre2.json | 0 .../manifests/mcserver/1.16-pre3.json | 0 .../manifests/mcserver/1.16-pre4.json | 0 .../manifests/mcserver/1.16-pre5.json | 0 .../manifests/mcserver/1.16-pre6.json | 0 .../manifests/mcserver/1.16-pre7.json | 0 .../manifests/mcserver/1.16-pre8.json | 0 .../manifests/mcserver/1.16-rc1.json | 0 .../resources/manifests/mcserver/1.16.1.json | 0 .../manifests/mcserver/1.16.2-pre1.json | 0 .../manifests/mcserver/1.16.2-pre2.json | 0 .../manifests/mcserver/1.16.2-pre3.json | 0 .../manifests/mcserver/1.16.2-rc1.json | 0 .../manifests/mcserver/1.16.2-rc2.json | 0 .../resources/manifests/mcserver/1.16.2.json | 0 .../manifests/mcserver/1.16.3-rc1.json | 0 .../resources/manifests/mcserver/1.16.3.json | 0 .../manifests/mcserver/1.16.4-pre1.json | 0 .../manifests/mcserver/1.16.4-pre2.json | 0 .../manifests/mcserver/1.16.4-rc1.json | 0 .../resources/manifests/mcserver/1.16.4.json | 0 .../manifests/mcserver/1.16.5-rc1.json | 0 .../resources/manifests/mcserver/1.16.5.json | 0 .../resources/manifests/mcserver/1.16.json | 0 .../manifests/mcserver/1.17-pre1.json | 0 .../manifests/mcserver/1.17-pre2.json | 0 .../manifests/mcserver/1.17-pre3.json | 0 .../manifests/mcserver/1.17-pre4.json | 0 .../manifests/mcserver/1.17-pre5.json | 0 .../manifests/mcserver/1.17-rc1.json | 0 .../manifests/mcserver/1.17-rc2.json | 0 .../manifests/mcserver/1.17.1-pre1.json | 0 .../manifests/mcserver/1.17.1-pre2.json | 0 .../manifests/mcserver/1.17.1-pre3.json | 0 .../manifests/mcserver/1.17.1-rc1.json | 0 .../manifests/mcserver/1.17.1-rc2.json | 0 .../resources/manifests/mcserver/1.17.1.json | 0 .../resources/manifests/mcserver/1.17.json | 0 .../manifests/mcserver/1.18-pre1.json | 0 .../manifests/mcserver/1.18-pre2.json | 0 .../manifests/mcserver/1.18-pre3.json | 0 .../manifests/mcserver/1.18-pre4.json | 0 .../manifests/mcserver/1.18-pre5.json | 0 .../manifests/mcserver/1.18-pre6.json | 0 .../manifests/mcserver/1.18-pre7.json | 0 .../manifests/mcserver/1.18-pre8.json | 0 .../manifests/mcserver/1.18-rc1.json | 0 .../manifests/mcserver/1.18-rc2.json | 0 .../manifests/mcserver/1.18-rc3.json | 0 .../manifests/mcserver/1.18-rc4.json | 0 .../manifests/mcserver/1.18.1-pre1.json | 0 .../manifests/mcserver/1.18.1-rc1.json | 0 .../manifests/mcserver/1.18.1-rc2.json | 0 .../manifests/mcserver/1.18.1-rc3.json | 0 .../resources/manifests/mcserver/1.18.1.json | 0 .../manifests/mcserver/1.18.2-pre1.json | 0 .../manifests/mcserver/1.18.2-pre2.json | 0 .../manifests/mcserver/1.18.2-pre3.json | 0 .../manifests/mcserver/1.18.2-rc1.json | 0 .../resources/manifests/mcserver/1.18.2.json | 0 .../resources/manifests/mcserver/1.18.json | 0 .../manifests/mcserver/1.19-pre1.json | 0 .../manifests/mcserver/1.19-pre2.json | 0 .../manifests/mcserver/1.19-pre3.json | 0 .../manifests/mcserver/1.19-pre4.json | 0 .../manifests/mcserver/1.19-pre5.json | 0 .../manifests/mcserver/1.19-rc1.json | 0 .../manifests/mcserver/1.19-rc2.json | 0 .../manifests/mcserver/1.19.1-pre1.json | 0 .../manifests/mcserver/1.19.1-pre2.json | 0 .../manifests/mcserver/1.19.1-pre3.json | 0 .../manifests/mcserver/1.19.1-pre4.json | 0 .../manifests/mcserver/1.19.1-pre5.json | 0 .../manifests/mcserver/1.19.1-pre6.json | 0 .../manifests/mcserver/1.19.1-rc1.json | 0 .../manifests/mcserver/1.19.1-rc2.json | 0 .../manifests/mcserver/1.19.1-rc3.json | 0 .../resources/manifests/mcserver/1.19.1.json | 0 .../manifests/mcserver/1.19.2-rc1.json | 0 .../manifests/mcserver/1.19.2-rc2.json | 0 .../resources/manifests/mcserver/1.19.2.json | 0 .../manifests/mcserver/1.19.3-pre1.json | 0 .../manifests/mcserver/1.19.3-pre2.json | 0 .../manifests/mcserver/1.19.3-pre3.json | 0 .../manifests/mcserver/1.19.3-rc1.json | 0 .../manifests/mcserver/1.19.3-rc2.json | 0 .../manifests/mcserver/1.19.3-rc3.json | 0 .../resources/manifests/mcserver/1.19.3.json | 0 .../manifests/mcserver/1.19.4-pre1.json | 0 .../manifests/mcserver/1.19.4-pre2.json | 0 .../manifests/mcserver/1.19.4-pre3.json | 0 .../manifests/mcserver/1.19.4-pre4.json | 0 .../manifests/mcserver/1.19.4-rc1.json | 0 .../manifests/mcserver/1.19.4-rc2.json | 0 .../manifests/mcserver/1.19.4-rc3.json | 0 .../resources/manifests/mcserver/1.19.4.json | 0 .../resources/manifests/mcserver/1.19.json | 0 .../resources/manifests/mcserver/1.2.1.json | 0 .../resources/manifests/mcserver/1.2.2.json | 0 .../resources/manifests/mcserver/1.2.3.json | 0 .../resources/manifests/mcserver/1.2.4.json | 0 .../resources/manifests/mcserver/1.2.5.json | 0 .../manifests/mcserver/1.20-pre1.json | 0 .../manifests/mcserver/1.20-pre2.json | 0 .../manifests/mcserver/1.20-pre3.json | 0 .../manifests/mcserver/1.20-pre4.json | 0 .../manifests/mcserver/1.20-pre5.json | 0 .../manifests/mcserver/1.20-pre6.json | 0 .../manifests/mcserver/1.20-pre7.json | 0 .../manifests/mcserver/1.20-rc1.json | 0 .../manifests/mcserver/1.20.1-rc1.json | 0 .../resources/manifests/mcserver/1.20.1.json | 0 .../resources/manifests/mcserver/1.20.2.json | 0 .../resources/manifests/mcserver/1.20.3.json | 0 .../resources/manifests/mcserver/1.20.4.json | 0 .../resources/manifests/mcserver/1.20.6.json | 1 + .../resources/manifests/mcserver/1.20.json | 0 .../resources/manifests/mcserver/1.3.1.json | 0 .../resources/manifests/mcserver/1.3.2.json | 0 .../resources/manifests/mcserver/1.3.json | 0 .../resources/manifests/mcserver/1.4.1.json | 0 .../resources/manifests/mcserver/1.4.2.json | 0 .../resources/manifests/mcserver/1.4.3.json | 0 .../resources/manifests/mcserver/1.4.4.json | 0 .../resources/manifests/mcserver/1.4.5.json | 0 .../resources/manifests/mcserver/1.4.6.json | 0 .../resources/manifests/mcserver/1.4.7.json | 0 .../resources/manifests/mcserver/1.4.json | 0 .../resources/manifests/mcserver/1.5.1.json | 0 .../resources/manifests/mcserver/1.5.2.json | 0 .../resources/manifests/mcserver/1.5.json | 0 .../resources/manifests/mcserver/1.6.1.json | 0 .../resources/manifests/mcserver/1.6.2.json | 0 .../resources/manifests/mcserver/1.6.3.json | 0 .../resources/manifests/mcserver/1.6.4.json | 0 .../resources/manifests/mcserver/1.6.json | 0 .../resources/manifests/mcserver/1.7.1.json | 0 .../manifests/mcserver/1.7.10-pre1.json | 0 .../manifests/mcserver/1.7.10-pre2.json | 0 .../manifests/mcserver/1.7.10-pre3.json | 0 .../manifests/mcserver/1.7.10-pre4.json | 0 .../resources/manifests/mcserver/1.7.10.json | 0 .../resources/manifests/mcserver/1.7.2.json | 0 .../resources/manifests/mcserver/1.7.3.json | 0 .../resources/manifests/mcserver/1.7.4.json | 0 .../resources/manifests/mcserver/1.7.5.json | 0 .../manifests/mcserver/1.7.6-pre1.json | 0 .../manifests/mcserver/1.7.6-pre2.json | 0 .../resources/manifests/mcserver/1.7.6.json | 0 .../resources/manifests/mcserver/1.7.7.json | 0 .../resources/manifests/mcserver/1.7.8.json | 0 .../resources/manifests/mcserver/1.7.9.json | 0 .../resources/manifests/mcserver/1.7.json | 0 .../manifests/mcserver/1.8-pre1.json | 0 .../manifests/mcserver/1.8-pre2.json | 0 .../manifests/mcserver/1.8-pre3.json | 0 .../manifests/mcserver/1.8.1-pre1.json | 0 .../manifests/mcserver/1.8.1-pre2.json | 0 .../manifests/mcserver/1.8.1-pre3.json | 0 .../manifests/mcserver/1.8.1-pre4.json | 0 .../manifests/mcserver/1.8.1-pre5.json | 0 .../resources/manifests/mcserver/1.8.1.json | 0 .../manifests/mcserver/1.8.2-pre1.json | 0 .../manifests/mcserver/1.8.2-pre2.json | 0 .../manifests/mcserver/1.8.2-pre3.json | 0 .../manifests/mcserver/1.8.2-pre4.json | 0 .../manifests/mcserver/1.8.2-pre5.json | 0 .../manifests/mcserver/1.8.2-pre6.json | 0 .../manifests/mcserver/1.8.2-pre7.json | 0 .../resources/manifests/mcserver/1.8.2.json | 0 .../resources/manifests/mcserver/1.8.3.json | 0 .../resources/manifests/mcserver/1.8.4.json | 0 .../resources/manifests/mcserver/1.8.5.json | 0 .../resources/manifests/mcserver/1.8.6.json | 0 .../resources/manifests/mcserver/1.8.7.json | 0 .../resources/manifests/mcserver/1.8.8.json | 0 .../resources/manifests/mcserver/1.8.9.json | 0 .../resources/manifests/mcserver/1.8.json | 0 .../manifests/mcserver/1.9-pre1.json | 0 .../manifests/mcserver/1.9-pre2.json | 0 .../manifests/mcserver/1.9-pre3.json | 0 .../manifests/mcserver/1.9-pre4.json | 0 .../manifests/mcserver/1.9.1-pre1.json | 0 .../manifests/mcserver/1.9.1-pre2.json | 0 .../manifests/mcserver/1.9.1-pre3.json | 0 .../resources/manifests/mcserver/1.9.1.json | 0 .../resources/manifests/mcserver/1.9.2.json | 0 .../manifests/mcserver/1.9.3-pre1.json | 0 .../manifests/mcserver/1.9.3-pre2.json | 0 .../manifests/mcserver/1.9.3-pre3.json | 0 .../resources/manifests/mcserver/1.9.3.json | 0 .../resources/manifests/mcserver/1.9.4.json | 0 .../resources/manifests/mcserver/1.9.json | 0 .../manifests/mcserver/1.RV-Pre1.json | 0 .../resources/manifests/mcserver/13w16a.json | 0 .../resources/manifests/mcserver/13w16b.json | 0 .../resources/manifests/mcserver/13w17a.json | 0 .../resources/manifests/mcserver/13w18a.json | 0 .../resources/manifests/mcserver/13w18b.json | 0 .../resources/manifests/mcserver/13w18c.json | 0 .../resources/manifests/mcserver/13w19a.json | 0 .../resources/manifests/mcserver/13w21a.json | 0 .../resources/manifests/mcserver/13w21b.json | 0 .../resources/manifests/mcserver/13w22a.json | 0 .../resources/manifests/mcserver/13w23a.json | 0 .../resources/manifests/mcserver/13w23b.json | 0 .../resources/manifests/mcserver/13w24a.json | 0 .../resources/manifests/mcserver/13w24b.json | 0 .../resources/manifests/mcserver/13w25a.json | 0 .../resources/manifests/mcserver/13w25b.json | 0 .../resources/manifests/mcserver/13w25c.json | 0 .../resources/manifests/mcserver/13w26a.json | 0 .../resources/manifests/mcserver/13w36a.json | 0 .../resources/manifests/mcserver/13w36b.json | 0 .../resources/manifests/mcserver/13w37a.json | 0 .../resources/manifests/mcserver/13w37b.json | 0 .../resources/manifests/mcserver/13w38a.json | 0 .../resources/manifests/mcserver/13w38b.json | 0 .../resources/manifests/mcserver/13w38c.json | 0 .../resources/manifests/mcserver/13w39a.json | 0 .../resources/manifests/mcserver/13w39b.json | 0 .../resources/manifests/mcserver/13w41a.json | 0 .../resources/manifests/mcserver/13w41b.json | 0 .../resources/manifests/mcserver/13w42a.json | 0 .../resources/manifests/mcserver/13w42b.json | 0 .../resources/manifests/mcserver/13w43a.json | 0 .../resources/manifests/mcserver/13w47a.json | 0 .../resources/manifests/mcserver/13w47b.json | 0 .../resources/manifests/mcserver/13w47c.json | 0 .../resources/manifests/mcserver/13w47d.json | 0 .../resources/manifests/mcserver/13w47e.json | 0 .../resources/manifests/mcserver/13w48a.json | 0 .../resources/manifests/mcserver/13w48b.json | 0 .../resources/manifests/mcserver/13w49a.json | 0 .../resources/manifests/mcserver/14w02a.json | 0 .../resources/manifests/mcserver/14w02b.json | 0 .../resources/manifests/mcserver/14w02c.json | 0 .../resources/manifests/mcserver/14w03a.json | 0 .../resources/manifests/mcserver/14w03b.json | 0 .../resources/manifests/mcserver/14w04a.json | 0 .../resources/manifests/mcserver/14w04b.json | 0 .../resources/manifests/mcserver/14w05a.json | 0 .../resources/manifests/mcserver/14w05b.json | 0 .../resources/manifests/mcserver/14w06a.json | 0 .../resources/manifests/mcserver/14w06b.json | 0 .../resources/manifests/mcserver/14w07a.json | 0 .../resources/manifests/mcserver/14w08a.json | 0 .../resources/manifests/mcserver/14w10a.json | 0 .../resources/manifests/mcserver/14w10b.json | 0 .../resources/manifests/mcserver/14w10c.json | 0 .../resources/manifests/mcserver/14w11a.json | 0 .../resources/manifests/mcserver/14w11b.json | 0 .../resources/manifests/mcserver/14w17a.json | 0 .../resources/manifests/mcserver/14w18a.json | 0 .../resources/manifests/mcserver/14w18b.json | 0 .../resources/manifests/mcserver/14w19a.json | 0 .../resources/manifests/mcserver/14w20a.json | 0 .../resources/manifests/mcserver/14w20b.json | 0 .../resources/manifests/mcserver/14w21a.json | 0 .../resources/manifests/mcserver/14w21b.json | 0 .../resources/manifests/mcserver/14w25a.json | 0 .../resources/manifests/mcserver/14w25b.json | 0 .../resources/manifests/mcserver/14w26a.json | 0 .../resources/manifests/mcserver/14w26b.json | 0 .../resources/manifests/mcserver/14w26c.json | 0 .../resources/manifests/mcserver/14w27a.json | 0 .../resources/manifests/mcserver/14w27b.json | 0 .../resources/manifests/mcserver/14w28a.json | 0 .../resources/manifests/mcserver/14w28b.json | 0 .../resources/manifests/mcserver/14w29a.json | 0 .../resources/manifests/mcserver/14w29b.json | 0 .../resources/manifests/mcserver/14w30a.json | 0 .../resources/manifests/mcserver/14w30b.json | 0 .../resources/manifests/mcserver/14w30c.json | 0 .../resources/manifests/mcserver/14w31a.json | 0 .../resources/manifests/mcserver/14w32a.json | 0 .../resources/manifests/mcserver/14w32b.json | 0 .../resources/manifests/mcserver/14w32c.json | 0 .../resources/manifests/mcserver/14w32d.json | 0 .../resources/manifests/mcserver/14w33a.json | 0 .../resources/manifests/mcserver/14w33b.json | 0 .../resources/manifests/mcserver/14w33c.json | 0 .../resources/manifests/mcserver/14w34a.json | 0 .../resources/manifests/mcserver/14w34b.json | 0 .../resources/manifests/mcserver/14w34c.json | 0 .../resources/manifests/mcserver/14w34d.json | 0 .../resources/manifests/mcserver/15w14a.json | 0 .../resources/manifests/mcserver/15w31a.json | 0 .../resources/manifests/mcserver/15w31b.json | 0 .../resources/manifests/mcserver/15w31c.json | 0 .../resources/manifests/mcserver/15w32a.json | 0 .../resources/manifests/mcserver/15w32b.json | 0 .../resources/manifests/mcserver/15w32c.json | 0 .../resources/manifests/mcserver/15w33a.json | 0 .../resources/manifests/mcserver/15w33b.json | 0 .../resources/manifests/mcserver/15w33c.json | 0 .../resources/manifests/mcserver/15w34a.json | 0 .../resources/manifests/mcserver/15w34b.json | 0 .../resources/manifests/mcserver/15w34c.json | 0 .../resources/manifests/mcserver/15w34d.json | 0 .../resources/manifests/mcserver/15w35a.json | 0 .../resources/manifests/mcserver/15w35b.json | 0 .../resources/manifests/mcserver/15w35c.json | 0 .../resources/manifests/mcserver/15w35d.json | 0 .../resources/manifests/mcserver/15w35e.json | 0 .../resources/manifests/mcserver/15w36a.json | 0 .../resources/manifests/mcserver/15w36b.json | 0 .../resources/manifests/mcserver/15w36c.json | 0 .../resources/manifests/mcserver/15w36d.json | 0 .../resources/manifests/mcserver/15w37a.json | 0 .../resources/manifests/mcserver/15w38a.json | 0 .../resources/manifests/mcserver/15w38b.json | 0 .../resources/manifests/mcserver/15w39a.json | 0 .../resources/manifests/mcserver/15w39b.json | 0 .../resources/manifests/mcserver/15w39c.json | 0 .../resources/manifests/mcserver/15w40a.json | 0 .../resources/manifests/mcserver/15w40b.json | 0 .../resources/manifests/mcserver/15w41a.json | 0 .../resources/manifests/mcserver/15w41b.json | 0 .../resources/manifests/mcserver/15w42a.json | 0 .../resources/manifests/mcserver/15w43a.json | 0 .../resources/manifests/mcserver/15w43b.json | 0 .../resources/manifests/mcserver/15w43c.json | 0 .../resources/manifests/mcserver/15w44a.json | 0 .../resources/manifests/mcserver/15w44b.json | 0 .../resources/manifests/mcserver/15w45a.json | 0 .../resources/manifests/mcserver/15w46a.json | 0 .../resources/manifests/mcserver/15w47a.json | 0 .../resources/manifests/mcserver/15w47b.json | 0 .../resources/manifests/mcserver/15w47c.json | 0 .../resources/manifests/mcserver/15w49a.json | 0 .../resources/manifests/mcserver/15w49b.json | 0 .../resources/manifests/mcserver/15w50a.json | 0 .../resources/manifests/mcserver/15w51a.json | 0 .../resources/manifests/mcserver/15w51b.json | 0 .../resources/manifests/mcserver/16w02a.json | 0 .../resources/manifests/mcserver/16w03a.json | 0 .../resources/manifests/mcserver/16w04a.json | 0 .../resources/manifests/mcserver/16w05a.json | 0 .../resources/manifests/mcserver/16w05b.json | 0 .../resources/manifests/mcserver/16w06a.json | 0 .../resources/manifests/mcserver/16w07a.json | 0 .../resources/manifests/mcserver/16w07b.json | 0 .../resources/manifests/mcserver/16w14a.json | 0 .../resources/manifests/mcserver/16w15a.json | 0 .../resources/manifests/mcserver/16w15b.json | 0 .../resources/manifests/mcserver/16w20a.json | 0 .../resources/manifests/mcserver/16w21a.json | 0 .../resources/manifests/mcserver/16w21b.json | 0 .../resources/manifests/mcserver/16w32a.json | 0 .../resources/manifests/mcserver/16w32b.json | 0 .../resources/manifests/mcserver/16w33a.json | 0 .../resources/manifests/mcserver/16w35a.json | 0 .../resources/manifests/mcserver/16w36a.json | 0 .../resources/manifests/mcserver/16w38a.json | 0 .../resources/manifests/mcserver/16w39a.json | 0 .../resources/manifests/mcserver/16w39b.json | 0 .../resources/manifests/mcserver/16w39c.json | 0 .../resources/manifests/mcserver/16w40a.json | 0 .../resources/manifests/mcserver/16w41a.json | 0 .../resources/manifests/mcserver/16w42a.json | 0 .../resources/manifests/mcserver/16w43a.json | 0 .../resources/manifests/mcserver/16w44a.json | 0 .../resources/manifests/mcserver/16w50a.json | 0 .../resources/manifests/mcserver/17w06a.json | 0 .../resources/manifests/mcserver/17w13a.json | 0 .../resources/manifests/mcserver/17w13b.json | 0 .../resources/manifests/mcserver/17w14a.json | 0 .../resources/manifests/mcserver/17w15a.json | 0 .../resources/manifests/mcserver/17w16a.json | 0 .../resources/manifests/mcserver/17w16b.json | 0 .../resources/manifests/mcserver/17w17a.json | 0 .../resources/manifests/mcserver/17w17b.json | 0 .../resources/manifests/mcserver/17w18a.json | 0 .../resources/manifests/mcserver/17w18b.json | 0 .../resources/manifests/mcserver/17w31a.json | 0 .../resources/manifests/mcserver/17w43a.json | 0 .../resources/manifests/mcserver/17w43b.json | 0 .../resources/manifests/mcserver/17w45a.json | 0 .../resources/manifests/mcserver/17w45b.json | 0 .../resources/manifests/mcserver/17w46a.json | 0 .../resources/manifests/mcserver/17w47a.json | 0 .../resources/manifests/mcserver/17w47b.json | 0 .../resources/manifests/mcserver/17w48a.json | 0 .../resources/manifests/mcserver/17w49a.json | 0 .../resources/manifests/mcserver/17w49b.json | 0 .../resources/manifests/mcserver/17w50a.json | 0 .../resources/manifests/mcserver/18w01a.json | 0 .../resources/manifests/mcserver/18w02a.json | 0 .../resources/manifests/mcserver/18w03a.json | 0 .../resources/manifests/mcserver/18w03b.json | 0 .../resources/manifests/mcserver/18w05a.json | 0 .../resources/manifests/mcserver/18w06a.json | 0 .../resources/manifests/mcserver/18w07a.json | 0 .../resources/manifests/mcserver/18w07b.json | 0 .../resources/manifests/mcserver/18w07c.json | 0 .../resources/manifests/mcserver/18w08a.json | 0 .../resources/manifests/mcserver/18w08b.json | 0 .../resources/manifests/mcserver/18w09a.json | 0 .../resources/manifests/mcserver/18w10a.json | 0 .../resources/manifests/mcserver/18w10b.json | 0 .../resources/manifests/mcserver/18w10c.json | 0 .../resources/manifests/mcserver/18w10d.json | 0 .../resources/manifests/mcserver/18w11a.json | 0 .../resources/manifests/mcserver/18w14a.json | 0 .../resources/manifests/mcserver/18w14b.json | 0 .../resources/manifests/mcserver/18w15a.json | 0 .../resources/manifests/mcserver/18w16a.json | 0 .../resources/manifests/mcserver/18w19a.json | 0 .../resources/manifests/mcserver/18w19b.json | 0 .../resources/manifests/mcserver/18w20a.json | 0 .../resources/manifests/mcserver/18w20b.json | 0 .../resources/manifests/mcserver/18w20c.json | 0 .../resources/manifests/mcserver/18w21a.json | 0 .../resources/manifests/mcserver/18w21b.json | 0 .../resources/manifests/mcserver/18w22a.json | 0 .../resources/manifests/mcserver/18w22b.json | 0 .../resources/manifests/mcserver/18w22c.json | 0 .../resources/manifests/mcserver/18w30a.json | 0 .../resources/manifests/mcserver/18w30b.json | 0 .../resources/manifests/mcserver/18w31a.json | 0 .../resources/manifests/mcserver/18w32a.json | 0 .../resources/manifests/mcserver/18w33a.json | 0 .../resources/manifests/mcserver/18w43a.json | 0 .../resources/manifests/mcserver/18w43b.json | 0 .../resources/manifests/mcserver/18w43c.json | 0 .../resources/manifests/mcserver/18w44a.json | 0 .../resources/manifests/mcserver/18w45a.json | 0 .../resources/manifests/mcserver/18w46a.json | 0 .../resources/manifests/mcserver/18w47a.json | 0 .../resources/manifests/mcserver/18w47b.json | 0 .../resources/manifests/mcserver/18w48a.json | 0 .../resources/manifests/mcserver/18w48b.json | 0 .../resources/manifests/mcserver/18w49a.json | 0 .../resources/manifests/mcserver/18w50a.json | 0 .../resources/manifests/mcserver/19w02a.json | 0 .../resources/manifests/mcserver/19w03a.json | 0 .../resources/manifests/mcserver/19w03b.json | 0 .../resources/manifests/mcserver/19w03c.json | 0 .../resources/manifests/mcserver/19w04a.json | 0 .../resources/manifests/mcserver/19w04b.json | 0 .../resources/manifests/mcserver/19w05a.json | 0 .../resources/manifests/mcserver/19w06a.json | 0 .../resources/manifests/mcserver/19w07a.json | 0 .../resources/manifests/mcserver/19w08a.json | 0 .../resources/manifests/mcserver/19w08b.json | 0 .../resources/manifests/mcserver/19w09a.json | 0 .../resources/manifests/mcserver/19w11a.json | 0 .../resources/manifests/mcserver/19w11b.json | 0 .../resources/manifests/mcserver/19w12a.json | 0 .../resources/manifests/mcserver/19w12b.json | 0 .../resources/manifests/mcserver/19w13a.json | 0 .../resources/manifests/mcserver/19w13b.json | 0 .../resources/manifests/mcserver/19w14a.json | 0 .../resources/manifests/mcserver/19w14b.json | 0 .../resources/manifests/mcserver/19w34a.json | 0 .../resources/manifests/mcserver/19w35a.json | 0 .../resources/manifests/mcserver/19w36a.json | 0 .../resources/manifests/mcserver/19w37a.json | 0 .../resources/manifests/mcserver/19w38a.json | 0 .../resources/manifests/mcserver/19w38b.json | 0 .../resources/manifests/mcserver/19w39a.json | 0 .../resources/manifests/mcserver/19w40a.json | 0 .../resources/manifests/mcserver/19w41a.json | 0 .../resources/manifests/mcserver/19w42a.json | 0 .../resources/manifests/mcserver/19w44a.json | 0 .../resources/manifests/mcserver/19w45a.json | 0 .../resources/manifests/mcserver/19w45b.json | 0 .../resources/manifests/mcserver/19w46a.json | 0 .../resources/manifests/mcserver/19w46b.json | 0 .../resources/manifests/mcserver/20w06a.json | 0 .../resources/manifests/mcserver/20w07a.json | 0 .../resources/manifests/mcserver/20w08a.json | 0 .../resources/manifests/mcserver/20w09a.json | 0 .../resources/manifests/mcserver/20w10a.json | 0 .../resources/manifests/mcserver/20w11a.json | 0 .../resources/manifests/mcserver/20w12a.json | 0 .../resources/manifests/mcserver/20w13a.json | 0 .../resources/manifests/mcserver/20w13b.json | 0 .../resources/manifests/mcserver/20w14a.json | 0 .../manifests/mcserver/20w14infinite.json | 0 .../resources/manifests/mcserver/20w15a.json | 0 .../resources/manifests/mcserver/20w16a.json | 0 .../resources/manifests/mcserver/20w17a.json | 0 .../resources/manifests/mcserver/20w18a.json | 0 .../resources/manifests/mcserver/20w19a.json | 0 .../resources/manifests/mcserver/20w20a.json | 0 .../resources/manifests/mcserver/20w20b.json | 0 .../resources/manifests/mcserver/20w21a.json | 0 .../resources/manifests/mcserver/20w22a.json | 0 .../resources/manifests/mcserver/20w27a.json | 0 .../resources/manifests/mcserver/20w28a.json | 0 .../resources/manifests/mcserver/20w29a.json | 0 .../resources/manifests/mcserver/20w30a.json | 0 .../resources/manifests/mcserver/20w45a.json | 0 .../resources/manifests/mcserver/20w46a.json | 0 .../resources/manifests/mcserver/20w48a.json | 0 .../resources/manifests/mcserver/20w49a.json | 0 .../resources/manifests/mcserver/20w51a.json | 0 .../resources/manifests/mcserver/21w03a.json | 0 .../resources/manifests/mcserver/21w05a.json | 0 .../resources/manifests/mcserver/21w05b.json | 0 .../resources/manifests/mcserver/21w06a.json | 0 .../resources/manifests/mcserver/21w07a.json | 0 .../resources/manifests/mcserver/21w08a.json | 0 .../resources/manifests/mcserver/21w08b.json | 0 .../resources/manifests/mcserver/21w10a.json | 0 .../resources/manifests/mcserver/21w11a.json | 0 .../resources/manifests/mcserver/21w13a.json | 0 .../resources/manifests/mcserver/21w14a.json | 0 .../resources/manifests/mcserver/21w15a.json | 0 .../resources/manifests/mcserver/21w16a.json | 0 .../resources/manifests/mcserver/21w17a.json | 0 .../resources/manifests/mcserver/21w18a.json | 0 .../resources/manifests/mcserver/21w19a.json | 0 .../resources/manifests/mcserver/21w20a.json | 0 .../resources/manifests/mcserver/21w37a.json | 0 .../resources/manifests/mcserver/21w38a.json | 0 .../resources/manifests/mcserver/21w39a.json | 0 .../resources/manifests/mcserver/21w40a.json | 0 .../resources/manifests/mcserver/21w41a.json | 0 .../resources/manifests/mcserver/21w42a.json | 0 .../resources/manifests/mcserver/21w43a.json | 0 .../resources/manifests/mcserver/21w44a.json | 0 .../resources/manifests/mcserver/22w03a.json | 0 .../resources/manifests/mcserver/22w05a.json | 0 .../resources/manifests/mcserver/22w06a.json | 0 .../resources/manifests/mcserver/22w07a.json | 0 .../resources/manifests/mcserver/22w11a.json | 0 .../resources/manifests/mcserver/22w12a.json | 0 .../resources/manifests/mcserver/22w13a.json | 0 .../mcserver/22w13oneblockatatime.json | 0 .../resources/manifests/mcserver/22w14a.json | 0 .../resources/manifests/mcserver/22w15a.json | 0 .../resources/manifests/mcserver/22w16a.json | 0 .../resources/manifests/mcserver/22w16b.json | 0 .../resources/manifests/mcserver/22w17a.json | 0 .../resources/manifests/mcserver/22w18a.json | 0 .../resources/manifests/mcserver/22w19a.json | 0 .../resources/manifests/mcserver/22w24a.json | 0 .../resources/manifests/mcserver/22w42a.json | 0 .../resources/manifests/mcserver/22w43a.json | 0 .../resources/manifests/mcserver/22w44a.json | 0 .../resources/manifests/mcserver/22w45a.json | 0 .../resources/manifests/mcserver/22w46a.json | 0 .../resources/manifests/mcserver/23w03a.json | 0 .../resources/manifests/mcserver/23w04a.json | 0 .../resources/manifests/mcserver/23w05a.json | 0 .../resources/manifests/mcserver/23w06a.json | 0 .../resources/manifests/mcserver/23w07a.json | 0 .../resources/manifests/mcserver/23w12a.json | 0 .../resources/manifests/mcserver/23w13a.json | 0 .../manifests/mcserver/23w13a_or_b.json | 0 .../resources/manifests/mcserver/23w14a.json | 0 .../resources/manifests/mcserver/23w16a.json | 0 .../resources/manifests/mcserver/23w17a.json | 0 .../resources/manifests/mcserver/23w18a.json | 0 .../mcserver/3D Shareware v1.34.json | 0 .../manifests/minecraft-manifest.json | 1 + .../manifests/neoforge-manifest-new.xml | 162 +- .../resources/manifests/neoforge-manifest.xml | 11 +- .../manifests/quilt-installer-manifest.xml | 7 +- .../resources/manifests/quilt-manifest.xml | 17 +- .../server_files/default_template.ps1 | 0 .../server_files/default_template.sh | 0 .../resources/server_files/server-icon.png | Bin .../resources/server_files/server.properties | 0 .../griefed/resources/serverpackcreator.conf | 0 .../resources/log4j2.component.properties | 3 + .../{jvmMain => main}/resources/log4j2.xml | 20 - .../resources/serverpackcreator.properties | 4 +- .../serverpackcreator/api/ApiPluginsTest.kt | 4 +- .../api/ApiPropertiesTest.kt | 20 +- .../api/ConfigurationHandlerTest.kt | 108 +- .../serverpackcreator/api/PackConfigTest.kt | 8 +- .../api/ServerPackHandlerTest.kt | 26 +- .../api/common/BooleanUtilitiesTest.kt | 2 +- .../api/common/FileUtilitiesTest.kt | 18 +- .../api/common/JarUtilitiesTest.kt | 2 +- .../api/common/ListUtilitiesTest.kt | 2 +- .../api/common/StringUtilitiesTest.kt | 2 +- .../api/common/SystemUtilitiesTest.kt | 2 +- .../api/common/WebUtilitiesTest.kt | 2 +- .../api/modscanning/ModScannerTest.kt | 229 + .../api/versionmeta/VersionMetaTest.kt | 2 +- .../resources/application.properties | 2 +- .../resources/curseforge_tests/modpack.zip | Bin .../resources/custom_template.ps1 | 0 .../resources/custom_template.sh | 0 .../fabric_tests/config/testfile.txt | 0 .../fabric_tests/defaultconfigs/testfile.txt | 0 .../fabric_tests/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/fabric_tests/mods/aaaaa.jar | Bin .../resources/fabric_tests/mods/bbbbb.jar | Bin .../resources/fabric_tests/mods/ccccc.jar | Bin .../resources/fabric_tests/mods/ddddd.jar | Bin .../resources/fabric_tests/mods/eeeee.jar | Bin .../resources/fabric_tests/mods/fffff.jar | Bin .../resources/fabric_tests/mods/ggggg.jar | Bin .../resources/fabric_tests/mods/hhhhh.jar | Bin .../resources/fabric_tests/mods/iiiii.jar | Bin .../resources/fabric_tests/mods/jjjjj.jar | Bin .../resources/fabric_tests/mods/kkkkk.jar | Bin .../resources/fabric_tests/mods/lllll.jar | Bin .../resources/fabric_tests/mods/mmmmm.jar | Bin .../resources/fabric_tests/mods/nnnnn.jar | Bin .../resources/fabric_tests/mods/ooooo.jar | Bin .../resources/fabric_tests/mods/ppppp.jar | Bin .../resources/fabric_tests/mods/qqqqq.jar | Bin .../resources/fabric_tests/mods/testmod.jar | 0 .../fabric_tests/scripts/testscript.zs | 0 .../fabric_tests/seeds/testjson.json | 0 .../forge_old/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/forge_old/mods/aaaaa.jar | Bin .../resources/forge_old/mods/bbbbb.jar | Bin .../resources/forge_old/mods/ccccc.jar | Bin .../resources/forge_old/mods/ddddd.jar | Bin .../resources/forge_old/mods/eeeee.jar | Bin .../resources/forge_old/mods/fffff.jar | Bin .../resources/forge_old/mods/ggggg.jar | Bin .../resources/forge_old/mods/hhhhh.jar | Bin .../resources/forge_old/mods/iiiii.jar | Bin .../resources/forge_old/mods/jjjjj.jar | Bin .../resources/forge_old/mods/kkkkk.jar | Bin .../resources/forge_old/mods/lllll.jar | Bin .../resources/forge_old/mods/mmmmm.jar | Bin .../resources/forge_old/mods/nnnnn.jar | Bin .../resources/forge_old/mods/ooooo.jar | Bin .../resources/forge_old/mods/ppppp.jar | Bin .../resources/forge_old/mods/qqqqq.jar | Bin .../resources/forge_tests/config/testfile.txt | 0 .../forge_tests/defaultconfigs/testfile.txt | 0 .../I_dont_want_to_be_included.file | 0 .../ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE | 0 .../I_dont_want_to_be_included.file | 0 .../dont_include_me_either.ogg | 0 .../I_dont_want_to_be_included.file | 0 .../forge_tests/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/forge_tests/mods/aaaaa.jar | Bin .../resources/forge_tests/mods/bbbbb.jar | Bin .../resources/forge_tests/mods/ccccc.jar | Bin .../resources/forge_tests/mods/ddddd.jar | Bin .../resources/forge_tests/mods/fffff.jar | Bin .../resources/forge_tests/mods/ggggg.jar | Bin .../resources/forge_tests/mods/hhhhh.jar | Bin .../resources/forge_tests/mods/iiiii.jar | Bin .../resources/forge_tests/mods/jjjjj.jar | Bin .../resources/forge_tests/mods/kkkkk.jar | Bin .../resources/forge_tests/mods/lllll.jar | Bin .../resources/forge_tests/mods/nnnnn.jar | Bin .../resources/forge_tests/mods/ppppp.jar | Bin .../resources/forge_tests/mods/qqqqq.jar | Bin .../resources/forge_tests/mods/rrrrr.jar | Bin .../resources/forge_tests/mods/testmod.jar | Bin .../resources/forge_tests/mods/uuuuu.jar | Bin .../resources/forge_tests/mods/vvvvv.jar | Bin .../resources/forge_tests/mods/wwwww.jar | Bin .../resources/forge_tests/mods/xxxxx.jar | Bin .../resources/forge_tests/mods/yyyyy.jar | Bin .../resources/forge_tests/mods/zzzzz.jar | Bin .../forge_tests/scripts/testscript.zs | 0 .../resources/forge_tests/seeds/testjson.json | 0 .../resources/forge_tests/test.txt | 0 .../resources/forge_tests/test2.txt | 0 .../legacyfabric_tests/config/testfile.txt | 0 .../defaultconfigs/testfile.txt | 0 .../mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../legacyfabric_tests/mods/aaaaa.jar | Bin .../legacyfabric_tests/mods/bbbbb.jar | Bin .../legacyfabric_tests/mods/ccccc.jar | Bin .../legacyfabric_tests/mods/ddddd.jar | Bin .../legacyfabric_tests/mods/eeeee.jar | Bin .../legacyfabric_tests/mods/fffff.jar | Bin .../legacyfabric_tests/mods/ggggg.jar | Bin .../legacyfabric_tests/mods/hhhhh.jar | Bin .../legacyfabric_tests/mods/iiiii.jar | Bin .../legacyfabric_tests/mods/jjjjj.jar | Bin .../legacyfabric_tests/mods/kkkkk.jar | Bin .../legacyfabric_tests/mods/lllll.jar | Bin .../legacyfabric_tests/mods/mmmmm.jar | Bin .../legacyfabric_tests/mods/nnnnn.jar | Bin .../legacyfabric_tests/mods/ooooo.jar | Bin .../legacyfabric_tests/mods/ppppp.jar | Bin .../legacyfabric_tests/mods/qqqqq.jar | Bin .../legacyfabric_tests/mods/testmod.jar | 0 .../legacyfabric_tests/scripts/testscript.zs | 0 .../legacyfabric_tests/seeds/testjson.json | 0 .../resources/log4j2.component.properties | 3 + .../{jvmTest => test}/resources/log4j2.xml | 20 - .../resources/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/mods/aaaaa.jar | Bin .../resources/mods/bbbbb.jar | 0 .../resources/mods/ccccc.jar | 0 .../resources/mods/ddddd.jar | 0 .../resources/mods/eeeee.jar | 0 .../resources/mods/fffff.jar | 0 .../resources/mods/ggggg.jar | 0 .../resources/mods/hhhhh.jar | 0 .../resources/mods/iiiii.jar | 0 .../resources/mods/jjjjj.jar | 0 .../resources/mods/kkkkk.jar | 0 .../resources/mods/lllll.jar | 0 .../resources/mods/mmmmm.jar | 0 .../resources/mods/nnnnn.jar | 0 .../resources/mods/ooooo.jar | 0 .../resources/mods/ppppp.jar | 0 .../resources/mods/qqqqq.jar | 0 .../neoforge_tests/config/testfile.txt | 0 .../defaultconfigs/testfile.txt | 0 .../I_dont_want_to_be_included.file | 0 .../ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE | 0 .../I_dont_want_to_be_included.file | 0 .../dont_include_me_either.ogg | 0 .../I_dont_want_to_be_included.file | 0 .../neoforge_tests/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/neoforge_tests/mods/aaaaa.jar | Bin .../resources/neoforge_tests/mods/bbbbb.jar | Bin .../resources/neoforge_tests/mods/ccccc.jar | Bin .../resources/neoforge_tests/mods/ddddd.jar | Bin .../resources/neoforge_tests/mods/fffff.jar | Bin .../resources/neoforge_tests/mods/ggggg.jar | Bin .../resources/neoforge_tests/mods/hhhhh.jar | Bin .../resources/neoforge_tests/mods/iiiii.jar | Bin .../resources/neoforge_tests/mods/jjjjj.jar | Bin .../resources/neoforge_tests/mods/kkkkk.jar | Bin .../resources/neoforge_tests/mods/lllll.jar | Bin .../resources/neoforge_tests/mods/nnnnn.jar | Bin .../resources/neoforge_tests/mods/ppppp.jar | Bin .../resources/neoforge_tests/mods/qqqqq.jar | Bin .../resources/neoforge_tests/mods/rrrrr.jar | Bin .../resources/neoforge_tests/mods/testmod.jar | Bin .../resources/neoforge_tests/mods/uuuuu.jar | Bin .../resources/neoforge_tests/mods/vvvvv.jar | Bin .../resources/neoforge_tests/mods/wwwww.jar | Bin .../resources/neoforge_tests/mods/xxxxx.jar | Bin .../resources/neoforge_tests/mods/yyyyy.jar | Bin .../resources/neoforge_tests/mods/zzzzz.jar | Bin .../neoforge_tests/scripts/testscript.zs | 0 .../neoforge_tests/seeds/testjson.json | 0 .../resources/neoforge_tests/test.txt | 0 .../resources/neoforge_tests/test2.txt | 0 .../resources/overrides/config/testfile.txt | 0 .../overrides/defaultconfigs/testfile.txt | 0 .../resources/overrides/scripts/testscript.zs | 0 .../resources/overrides/seeds/seed1.json | 0 .../resources/overrides/seeds/testjson.json | 0 .../overrides/config/testfile.txt | 0 .../overrides/defaultconfigs/testfile.txt | 0 .../overridestest}/overrides/mods/aaaaa.jar | 0 .../overridestest}/overrides/mods/bbbbb.jar | 0 .../overridestest}/overrides/mods/ccccc.jar | 0 .../overridestest}/overrides/mods/fffff.jar | 0 .../overridestest}/overrides/mods/ggggg.jar | 0 .../overridestest}/overrides/mods/hhhhh.jar | 0 .../overridestest}/overrides/mods/iiiii.jar | 0 .../overridestest}/overrides/mods/jjjjj.jar | 0 .../overridestest}/overrides/mods/kkkkk.jar | 0 .../overridestest}/overrides/mods/lllll.jar | 0 .../overridestest}/overrides/mods/nnnnn.jar | 0 .../overridestest}/overrides/mods/ppppp.jar | 0 .../overridestest}/overrides/mods/qqqqq.jar | 0 .../overridestest}/overrides/mods/rrrrr.jar | 0 .../overridestest}/overrides/mods/testmod.jar | 0 .../overridestest}/overrides/mods/uuuuu.jar | 0 .../overridestest}/overrides/mods/vvvvv.jar | 0 .../overridestest}/overrides/mods/wwwww.jar | 0 .../overridestest}/overrides/mods/xxxxx.jar | 0 .../overridestest}/overrides/mods/yyyyy.jar | 0 .../overridestest}/overrides/mods/zzzzz.jar | 0 .../overrides/scripts/testscript.zs | 0 .../overridestest/overrides/seeds/seed1.json | 0 .../overrides/seeds/testjson.json | 0 .../resources/quilt_tests/config/testfile.txt | 0 .../quilt_tests/defaultconfigs/testfile.txt | 0 .../quilt_tests/mods/Ping-1.19-1.9.1.jar | Bin .../mods/Ping-Wheel-1.6.1-forge-1.20.1.jar | Bin .../resources/quilt_tests/mods/aaaaa.jar | Bin .../resources/quilt_tests/mods/bbbbb.jar | Bin .../resources/quilt_tests}/mods/testmod.jar | 0 .../quilt_tests/scripts/testscript.zs | 0 .../resources/quilt_tests/seeds/testjson.json | 0 .../resources/serverpackcreator.db | Bin .../resources/serverpackcreator.properties | 0 .../resources/testresources/SCP_icon.png | Bin .../Survive_Create_Prosper_4_invalid.zip | Bin .../Survive_Create_Prosper_4_valid.zip | Bin .../curseforge/fabric_manifest.json | 0 .../curseforge/fabric_minecraftinstance.json | 0 .../curseforge/forge_manifest.json | 0 .../curseforge/forge_minecraftinstance.json | 0 .../gdlauncher/fabric_config.json | 0 .../gdlauncher/forge_config.json | 0 .../testresources/kreezxil.properties | 0 .../testresources/languages/de_de.properties | 0 .../testresources/languages/en_us.properties | 0 .../langMissing/lang_de_de.properties | 0 .../langMissing/lang_ef_gh.properties | 0 .../langMissing/lang_en_us.properties | 0 .../langMissing/lang_uk_ua.properties | 0 .../testresources/languages/uk_ua.properties | 0 .../modrinth/fabric_modrinth.index.json | 0 .../modrinth/forge_modrinth.index.json | 0 .../modrinth/quilt_modrinth.index.json | 0 .../multimc/all_the_mods_instance.cfg | 0 .../multimc/better_mc_instance.cfg | 0 .../multimc/fabric_mmc-pack.json | 0 .../testresources/multimc/forge_mmc-pack.json | 0 .../testresources/multimc/quilt_mmc-pack.json | 0 .../testresources/plugins/disabled.txt | 0 .../serverpackcreator-plugin-example-dev.jar | Bin .../properties/filters/contains.properties | 0 .../properties/filters/either.properties | 0 .../properties/filters/end.properties | 0 .../properties/filters/regex.properties | 0 .../properties/filters/start.properties | 0 .../server_pack}/mods/testmod.jar | 0 .../spcconfs/scriptSettings.conf | 0 .../spcconfs/serverpackcreator.conf | 6 +- .../spcconfs/serverpackcreator_copydirs.conf | 2 +- .../spcconfs/serverpackcreator_fabric.conf | 6 +- .../spcconfs/serverpackcreator_javapath.conf | 2 +- .../serverpackcreator_legacyfabric.conf | 6 +- .../serverpackcreator_minecraftversion.conf | 2 +- .../serverpackcreator_modloaderfalse.conf | 2 +- .../serverpackcreator_modloaderversion.conf | 2 +- .../spcconfs/serverpackcreator_neoforge.conf | 6 +- .../spcconfs/serverpackcreator_quilt.conf | 6 +- serverpackcreator-app/build.gradle.kts | 11 +- .../app/ServerPackCreator.kt | 20 +- serverpackcreator-cli/build.gradle.kts | 4 +- .../cli/ConfigurationEditor.kt | 2 +- serverpackcreator-gui/build.gradle.kts | 22 +- .../gui/components/ConvenientJTable.kt | 2 +- .../gui/themes/ThemeManager.kt | 6 +- .../gui/tips/TipOfTheDayManager.kt | 7 +- .../gui/window/KeyComboManager.kt | 2 +- .../gui/window/UpdateDialogs.kt | 2 +- .../gui/window/configs/ConfigEditor.kt | 4 +- .../gui/window/configs/TabbedConfigsTab.kt | 2 +- .../configs/components/SuggestionProvider.kt | 2 +- .../advanced/AdvancedSettingsPanel.kt | 2 +- .../components/inclusions/InclusionsEditor.kt | 2 +- .../gui/window/control/ControlPanel.kt | 2 +- .../window/menu/file/MainLogToHasteBinItem.kt | 2 +- .../gui/window/settings/GlobalSettings.kt | 66 +- .../gui/window/settings/SettingsHandling.kt | 1 - .../griefed/resources/gui/LICENSE-AGREEMENT | 154 +- .../build.gradle.kts | 12 +- serverpackcreator-updater/build.gradle.kts | 4 +- .../updater/MigrationManager.kt | 2 +- .../updater/UpdateChecker.kt | 2 +- .../griefed/versionchecker/GitHubChecker.kt | 13 +- .../griefed/versionchecker/GitLabChecker.kt | 13 +- .../griefed/versionchecker/VersionChecker.kt | 12 +- .../build.gradle.kts | 10 - .../package-lock.json | 2326 ++++--- serverpackcreator-web-frontend/package.json | 34 +- .../quasar.config.js | 1 + .../src/boot/apexcharts.js | 6 + .../src/boot/axios.ts | 25 +- .../src/components/ExampleComponent.vue | 64 - .../src/components/HistoryTable.vue | 30 +- .../src/components/ModpacksTable.vue | 34 +- .../src/components/ServerPacksTable.vue | 32 +- .../src/components/SubmitModPackForm.vue | 4 +- .../components/charts/AreaTimeSeriesChart.vue | 83 + .../components/charts/DiskUsageBarGraph.vue | 128 + .../charts/ModServerRunPieChart.vue | 92 + .../src/pages/DownloadsPage.vue | 6 +- .../src/pages/IndexPage.vue | 138 +- .../src/pages/ModPackDownload.vue | 90 +- .../src/pages/ServerPackDownload.vue | 96 +- serverpackcreator-web/build.gradle.kts | 29 +- .../serverpackcreator/web/WebService.kt | 12 +- .../serverpackcreator/web/data/ModPackView.kt | 39 - .../web/data/ServerPackView.kt | 34 - .../web/{data => modpack}/ModPack.kt | 16 +- ...packController.kt => ModPackController.kt} | 52 +- .../web/modpack/ModPackDownload.kt | 18 + .../web/modpack/ModPackDownloadRepository.kt | 9 + ...packRepository.kt => ModPackRepository.kt} | 11 +- .../{ModpackService.kt => ModPackService.kt} | 50 +- .../{ModpackStatus.kt => ModPackStatus.kt} | 2 +- .../web/{data => modpack}/ZipResponse.kt | 6 +- .../web/scheduling/DatabaseCleanupSchedule.kt | 14 +- .../web/scheduling/FileCleanupSchedule.kt | 6 +- .../web/scheduling/VersionRefreshSchedule.kt | 2 +- .../web/{data => serverpack}/ServerPack.kt | 3 +- .../web/serverpack/ServerPackController.kt | 18 +- .../web/serverpack/ServerPackDownload.kt | 18 + .../ServerPackDownloadRepository.kt | 9 + .../web/serverpack/ServerPackRepository.kt | 10 +- .../web/serverpack/ServerPackService.kt | 18 +- .../customizing}/ClientMod.kt | 2 +- .../customizing/ClientModRepository.kt | 3 +- .../customizing/ModRepository.kt | 2 +- .../customizing}/RunConfiguration.kt | 2 +- .../customizing}/StartArgument.kt | 2 +- .../customizing/StartArgumentRepository.kt | 3 +- .../customizing}/WhitelistedMod.kt | 2 +- .../customizing/WhitelistedModRepository.kt | 3 +- .../RunConfigurationController.kt | 4 +- .../RunConfigurationRepository.kt | 10 +- .../RunConfigurationService.kt | 16 +- .../web/stats/StatsController.kt | 107 + .../web/stats/creation/AmountPerDate.kt | 3 + .../stats/creation/CreationStatsService.kt | 50 + .../web/stats/disk/DiskStatsData.kt | 10 + .../web/stats/disk/DiskStatsService.kt | 59 + .../stats/downloads/DownloadStatsService.kt | 93 + .../web/stats/packs/AmountStatsData.kt | 3 + .../web/stats/packs/AmountStatsService.kt | 19 + .../web/storage/FileSystemStorageService.kt | 8 +- .../web/{data => storage}/SavedFile.kt | 2 +- .../web/storage/StorageSystem.kt | 6 +- .../web/{data => task}/ErrorEntry.kt | 2 +- .../web/task/ErrorRepository.kt | 1 - .../web/task/EventController.kt | 5 +- .../web/task/EventService.kt | 8 +- .../web/{data => task}/QueueEvent.kt | 8 +- .../web/task/QueueEventRepository.kt | 5 +- .../serverpackcreator/web/task/TaskDetail.kt | 6 +- .../web/task/TaskExecutionService.kt | 2 +- .../web/task/TaskExecutionServiceImpl.kt | 68 +- .../{data => versions}/VersionMetaResponse.kt | 2 +- .../web/{ => versions}/VersionsController.kt | 3 +- .../src/main/resources/application.properties | 2 +- .../serverpackcreator/web/WebServiceTest.kt | 2 +- .../src/test/resources/log4j2.xml | 20 - spc.install4j | 2313 +++++++ 1518 files changed, 38133 insertions(+), 8334 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/serverpackcreator.kotlin-multiplatform-conventions.gradle.kts create mode 100644 img/banner_installer.png create mode 100644 img/banner_installer_fin.png create mode 100644 img/install.png create mode 100644 img/install_128x128.png create mode 100644 img/install_16x16.png create mode 100644 img/install_256x256.png create mode 100644 img/install_32x32.png create mode 100644 img/install_48x48.png create mode 100644 img/install_512x512.png create mode 100644 img/uninstall.png create mode 100644 img/uninstall_128x128.png create mode 100644 img/uninstall_16x16.png create mode 100644 img/uninstall_256x256.png create mode 100644 img/uninstall_32x32.png create mode 100644 img/uninstall_48x48.png create mode 100644 img/uninstall_512x512.png create mode 100644 licenses/LICENSE-AGREEMENT.txt create mode 100644 licenses/angus-activation-2.0.2.jar/META-INF/LICENSE.md create mode 100644 licenses/angus-activation-2.0.2.jar/META-INF/NOTICE.md create mode 100644 licenses/byte-buddy-1.14.12.jar/META-INF/LICENSE create mode 100644 licenses/byte-buddy-1.14.12.jar/META-INF/NOTICE create mode 100644 licenses/byte-buddy-1.14.16.jar/META-INF/LICENSE create mode 100644 licenses/byte-buddy-1.14.16.jar/META-INF/NOTICE create mode 100644 licenses/byte-buddy-1.14.9.jar/META-INF/LICENSE create mode 100644 licenses/byte-buddy-1.14.9.jar/META-INF/NOTICE create mode 100644 licenses/checker-qual-3.42.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/classmate-1.7.0.jar/META-INF/LICENSE create mode 100644 licenses/classmate-1.7.0.jar/META-INF/NOTICE create mode 100644 licenses/commons-codec-1.16.1.jar/META-INF/LICENSE.txt create mode 100644 licenses/commons-codec-1.16.1.jar/META-INF/NOTICE.txt create mode 100644 licenses/commons-io-2.16.1.jar/META-INF/LICENSE.txt create mode 100644 licenses/commons-io-2.16.1.jar/META-INF/NOTICE.txt create mode 100644 licenses/commons-lang3-3.14.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/commons-lang3-3.14.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/flatlaf-3.4.jar/META-INF/LICENSE create mode 100644 licenses/flatlaf-extras-3.4.jar/META-INF/LICENSE create mode 100644 licenses/flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE create mode 100644 licenses/flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt create mode 100644 licenses/flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE create mode 100644 licenses/flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-annotations-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-annotations-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-annotations-2.17.0.jar/META-INF/LICENSE create mode 100644 licenses/jackson-annotations-2.17.0.jar/META-INF/NOTICE create mode 100644 licenses/jackson-annotations-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-annotations-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-core-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-core-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-core-2.17.0.jar/META-INF/LICENSE create mode 100644 licenses/jackson-core-2.17.0.jar/META-INF/NOTICE create mode 100644 licenses/jackson-core-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-core-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-databind-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-databind-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-databind-2.17.0.jar/META-INF/LICENSE create mode 100644 licenses/jackson-databind-2.17.0.jar/META-INF/NOTICE create mode 100644 licenses/jackson-databind-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-databind-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-module-kotlin-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-module-kotlin-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE create mode 100644 licenses/jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE create mode 100644 licenses/jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/LICENSE create mode 100644 licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/NOTICE create mode 100644 licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/LICENSE create mode 100644 licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/NOTICE create mode 100644 licenses/jakarta.activation-api-2.1.3.jar/META-INF/LICENSE.md create mode 100644 licenses/jakarta.activation-api-2.1.3.jar/META-INF/NOTICE.md create mode 100644 licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/LICENSE.md create mode 100644 licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/NOTICE.md create mode 100644 licenses/java-semver-0.10.2.jar/META-INF/LICENSE create mode 100644 licenses/jaxb-core-4.0.5.jar/META-INF/LICENSE.md create mode 100644 licenses/jaxb-core-4.0.5.jar/META-INF/NOTICE.md create mode 100644 licenses/jaxb-runtime-4.0.5.jar/META-INF/LICENSE.md create mode 100644 licenses/jaxb-runtime-4.0.5.jar/META-INF/NOTICE.md create mode 100644 licenses/log4j-api-2.23.1.jar/META-INF/LICENSE create mode 100644 licenses/log4j-api-2.23.1.jar/META-INF/NOTICE create mode 100644 licenses/log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE create mode 100644 licenses/log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE create mode 100644 licenses/log4j-core-2.23.1.jar/META-INF/LICENSE create mode 100644 licenses/log4j-core-2.23.1.jar/META-INF/NOTICE create mode 100644 licenses/log4j-jul-2.23.1.jar/META-INF/LICENSE create mode 100644 licenses/log4j-jul-2.23.1.jar/META-INF/NOTICE create mode 100644 licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/LICENSE create mode 100644 licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/NOTICE create mode 100644 licenses/micrometer-commons-1.12.4.jar/META-INF/LICENSE create mode 100644 licenses/micrometer-commons-1.12.4.jar/META-INF/NOTICE create mode 100644 licenses/micrometer-commons-1.13.0.jar/META-INF/LICENSE create mode 100644 licenses/micrometer-commons-1.13.0.jar/META-INF/NOTICE create mode 100644 licenses/micrometer-observation-1.12.4.jar/META-INF/LICENSE create mode 100644 licenses/micrometer-observation-1.12.4.jar/META-INF/NOTICE create mode 100644 licenses/micrometer-observation-1.13.0.jar/META-INF/LICENSE create mode 100644 licenses/micrometer-observation-1.13.0.jar/META-INF/NOTICE create mode 100644 licenses/postgresql-42.6.2.jar/META-INF/LICENSE create mode 100644 licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE create mode 100644 licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE create mode 100644 licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE create mode 100644 licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE create mode 100644 licenses/postgresql-42.7.3.jar/META-INF/LICENSE create mode 100644 licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE create mode 100644 licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE create mode 100644 licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE create mode 100644 licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE create mode 100644 licenses/slf4j-api-2.0.12.jar/META-INF/LICENSE.txt create mode 100644 licenses/slf4j-api-2.0.13.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-aop-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-aop-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-aop-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-aop-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-aspects-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-aspects-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-aspects-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-aspects-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-beans-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-beans-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-beans-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-beans-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-boot-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-devtools-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-devtools-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-json-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-json-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-json-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-json-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-web-3.2.6.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-web-3.2.6.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt create mode 100644 licenses/spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt create mode 100644 licenses/spring-context-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-context-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-context-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-context-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-core-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-core-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-core-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-core-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-data-commons-3.2.4.jar/license.txt create mode 100644 licenses/spring-data-commons-3.2.4.jar/notice.txt create mode 100644 licenses/spring-data-commons-3.3.0.jar/license.txt create mode 100644 licenses/spring-data-commons-3.3.0.jar/notice.txt create mode 100644 licenses/spring-data-jpa-3.2.4.jar/license.txt create mode 100644 licenses/spring-data-jpa-3.2.4.jar/notice.txt create mode 100644 licenses/spring-data-jpa-3.2.4.jar/readme.txt create mode 100644 licenses/spring-data-jpa-3.3.0.jar/license.txt create mode 100644 licenses/spring-data-jpa-3.3.0.jar/notice.txt create mode 100644 licenses/spring-data-jpa-3.3.0.jar/readme.txt create mode 100644 licenses/spring-expression-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-expression-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-expression-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-expression-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-jcl-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-jcl-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-jcl-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-jcl-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-jdbc-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-jdbc-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-jdbc-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-jdbc-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-orm-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-orm-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-orm-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-orm-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-tx-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-tx-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-tx-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-tx-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-web-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-web-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-web-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-web-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/spring-webmvc-6.1.5.jar/META-INF/license.txt create mode 100644 licenses/spring-webmvc-6.1.5.jar/META-INF/notice.txt create mode 100644 licenses/spring-webmvc-6.1.8.jar/META-INF/license.txt create mode 100644 licenses/spring-webmvc-6.1.8.jar/META-INF/notice.txt create mode 100644 licenses/tomcat-embed-core-10.1.19.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-core-10.1.19.jar/META-INF/NOTICE create mode 100644 licenses/tomcat-embed-core-10.1.24.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-core-10.1.24.jar/META-INF/NOTICE create mode 100644 licenses/tomcat-embed-el-10.1.19.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-el-10.1.19.jar/META-INF/NOTICE create mode 100644 licenses/tomcat-embed-el-10.1.24.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-el-10.1.24.jar/META-INF/NOTICE create mode 100644 licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/NOTICE create mode 100644 licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/LICENSE create mode 100644 licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/NOTICE create mode 100644 licenses/txw2-4.0.5.jar/META-INF/LICENSE.md create mode 100644 licenses/txw2-4.0.5.jar/META-INF/NOTICE.md delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Api.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Configuration.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Pack.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPack.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionPoint.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/CommentedConfig.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/File.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Icon.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Optional.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/TomlParser.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/URL.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilitiesExtensions.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt delete mode 100644 serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt delete mode 100644 serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/LoggingConfig.kt delete mode 100644 serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt delete mode 100644 serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/TypeAliases.kt delete mode 100644 serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/TypeAliases.kt delete mode 100644 serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/minecraft-manifest.json delete mode 100644 serverpackcreator-api/src/jvmMain/resources/log4j2.component.properties delete mode 100644 serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt delete mode 100644 serverpackcreator-api/src/jvmTest/resources/fabric_tests/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/forge_tests/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/log4j2.component.properties delete mode 100644 serverpackcreator-api/src/jvmTest/resources/neoforge_tests/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/aaaaa.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/bbbbb.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ccccc.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/fffff.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ggggg.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/hhhhh.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/iiiii.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/jjjjj.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/kkkkk.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/lllll.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/nnnnn.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ppppp.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/qqqqq.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/rrrrr.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/uuuuu.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/vvvvv.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/wwwww.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/xxxxx.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/yyyyy.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/zzzzz.jar delete mode 100644 serverpackcreator-api/src/jvmTest/resources/quilt_tests/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/testresources/server_pack.zip delete mode 100644 serverpackcreator-api/src/jvmTest/resources/testresources/server_pack/mods/testmod.jar rename serverpackcreator-api/src/{commonMain => main}/i18n/Translations_en_GB.properties (99%) rename serverpackcreator-api/src/{commonMain => main}/i18n/Translations_pt_BR.properties (99%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt (91%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt (77%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/ConfigCheck.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt (63%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/ExclusionFilter.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt (84%) rename {serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack => serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api}/ModpackSource.kt (91%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt (82%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt (61%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt (82%) create mode 100644 serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt (88%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/Scanner.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/modscanning/ScanningException.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/BaseInformation.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt (96%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionException.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/PluginContext.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt (91%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt (96%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PostGenExtension.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreGenExtension.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreZipExtension.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt (95%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt (96%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt (91%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt (98%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt (88%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/ReticulatingSplines.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/SimpleStopWatch.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/Affirm.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt (91%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt (99%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileType.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt (88%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/FilterType.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/InputStreamUtilities.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidFileTypeException.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidLinkException.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarAccessException.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt (89%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt (97%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonException.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt (99%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt (99%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/RegexUtilities.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/SemanticVersionComparator.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/StringUtilities.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt (68%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt (88%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt (94%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt (96%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/utilities/common/ZipUtilities.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/InvalidTypeException.kt (100%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt (93%) rename serverpackcreator-api/src/{commonMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/Type.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt (95%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricArguments.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricDetails.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricInstaller.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediaries.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediary.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLibrary.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoader.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoaderDetails.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt (75%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeInstance.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt (87%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricGame.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricInstaller.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricLoader.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt (70%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricVersioning.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClient.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt (98%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt (95%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServer.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServerMeta.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeInstance.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt (99%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt (86%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NewNeoForgeInstance.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/OldNeoForgeInstance.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltInstaller.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltLoader.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt (60%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/io/ByteReader.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/io/ByteWriter.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/io/Bytes.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/LinkInfo.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/LinkTargetIDList.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/Serializable.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/ShellLink.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/ShellLinkException.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/ShellLinkHeader.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/ShellLinkHelper.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/UnsupportedCLSIDException.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/UnsupportedItemIDException.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/BitSet32.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/CNRLink.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/CNRLinkFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ConsoleFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/FileAttributesFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/Filetime.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/GUID.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/HotKeyFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemID.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDDrive.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDFS.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDRegFolder.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDRegItem.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDRoot.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/ItemIDUnknown.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/LinkFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/LinkInfoFlags.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/Registry.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/Size.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/data/VolumeID.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/ConsoleData.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/ConsoleFEData.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/EnvironmentVariable.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/Stub.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/Tracker.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/kotlin/mslinks/extra/VistaIDList.kt (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/CHANGELOG.md (99%) rename serverpackcreator-api/src/{jvmMain => main}/resources/CODE_OF_CONDUCT.md (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/CONTRIBUTING.md (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/HELP.md (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/LICENSE (92%) rename serverpackcreator-api/src/{jvmMain => main}/resources/README.md (99%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/cli_help.txt (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/examples/serverpackcreator.example (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/lang/lang_de_de.properties (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/lang/lang_uk_ua.properties (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml (94%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json (93%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/fabric-manifest.xml (97%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/forge-manifest.json (98%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/legacy-fabric-game-manifest.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/legacy-fabric-installer-manifest.xml (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json (90%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.0.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.10-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.10-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.10.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.10.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.10.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.11-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.11.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.11.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.11.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.12.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre10.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13-pre9.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.13.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.14.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.15.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-pre8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.3-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.4-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.5-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.16.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.17.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-pre8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-rc3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18-rc4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.2-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.18.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.19.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.2.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.2.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.2.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.2.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.2.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.1-rc1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.4.json (100%) create mode 100644 serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.6.json rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.20.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.3.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.3.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.5.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.5.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.6.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.6.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.6.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.6.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.10.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.9.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.5.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.6.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.7.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.9.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.8.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9-pre4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre2.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.3.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.4.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.9.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/1.RV-Pre1.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w16b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w18b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w18c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w21a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w21b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w22a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w23a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w23b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w24a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w24b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w25a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w25b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w25c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w26a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w36a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w36b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w37a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w37b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w38a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w38b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w38c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w39a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w39b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w41a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w41b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w42b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w47a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w47b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w47c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w47d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w47e.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w48a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w48b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/13w49a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w02a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w02b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w02c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w03b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w04a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w04b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w05b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w06b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w08a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w10a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w10b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w10c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w11b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w18b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w20a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w20b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w21a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w21b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w25a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w25b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w26a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w26b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w26c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w27a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w27b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w28a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w28b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w29a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w29b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w30a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w30b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w30c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w31a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w32a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w32b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w32c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w32d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w33a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w33b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w33c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w34a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w34b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w34c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/14w34d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w31a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w31b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w31c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w32a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w32b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w32c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w33a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w33b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w33c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w34a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w34b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w34c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w34d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w35a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w35b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w35c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w35d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w35e.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w36a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w36b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w36c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w36d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w37a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w38a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w38b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w39a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w39b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w39c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w40a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w40b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w41a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w41b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w43b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w43c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w44b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w47a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w47b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w47c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w49a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w49b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w50a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w51a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/15w51b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w02a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w04a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w05b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w07b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w15b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w20a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w21a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w21b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w32a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w32b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w33a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w35a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w36a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w38a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w39a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w39b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w39c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w40a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w41a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/16w50a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w13b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w16b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w17b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w18b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w31a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w43b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w45b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w47a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w47b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w48a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w49a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w49b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/17w50a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w01a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w02a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w03b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w07b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w07c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w08a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w08b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w09a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w10a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w10b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w10c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w10d.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w14b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w19b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w20a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w20b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w20c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w21a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w21b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w22a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w22b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w22c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w30a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w30b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w31a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w32a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w33a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w43b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w43c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w47a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w47b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w48a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w48b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w49a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/18w50a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w02a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w03b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w03c.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w04a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w04b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w08a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w08b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w09a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w11b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w12a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w12b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w13b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w14b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w34a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w35a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w36a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w37a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w38a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w38b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w39a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w40a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w41a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w45b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/19w46b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w08a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w09a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w10a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w12a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w13b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w14infinite.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w20a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w20b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w21a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w22a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w27a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w28a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w29a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w30a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w48a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w49a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/20w51a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w05b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w08a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w08b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w10a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w20a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w37a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w38a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w39a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w40a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w41a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/21w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w11a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w12a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w13oneblockatatime.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w15a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w16b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w19a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w24a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w42a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w43a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w44a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w45a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/22w46a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w03a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w04a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w05a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w06a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w07a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w12a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w13a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w13a_or_b.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w14a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w16a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w17a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/23w18a.json (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/mcserver/3D Shareware v1.34.json (100%) create mode 100644 serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/minecraft-manifest.json rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml (62%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/neoforge-manifest.xml (88%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml (85%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/manifests/quilt-manifest.xml (94%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/server_files/default_template.ps1 (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/server_files/default_template.sh (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/server_files/server-icon.png (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/server_files/server.properties (100%) rename serverpackcreator-api/src/{jvmMain => main}/resources/de/griefed/resources/serverpackcreator.conf (100%) create mode 100644 serverpackcreator-api/src/main/resources/log4j2.component.properties rename serverpackcreator-api/src/{jvmMain => main}/resources/log4j2.xml (78%) rename serverpackcreator-api/src/{jvmMain => main}/resources/serverpackcreator.properties (99%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt (90%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt (90%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt (90%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt (95%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt (93%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt (93%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt (61%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt (95%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt (98%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt (86%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt (89%) rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt (93%) create mode 100644 serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt rename serverpackcreator-api/src/{jvmTest => test}/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/application.properties (92%) rename serverpackcreator-api/src/{jvmTest => test}/resources/curseforge_tests/modpack.zip (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/custom_template.ps1 (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/custom_template.sh (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/eeeee.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/mmmmm.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/ooooo.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/fabric_tests/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/eeeee.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/mmmmm.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/ooooo.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_old/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/exclude_me/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/rrrrr.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/uuuuu.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/vvvvv.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/wwwww.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/xxxxx.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/yyyyy.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/mods/zzzzz.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/test.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/forge_tests/test2.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/eeeee.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/mmmmm.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/ooooo.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/legacyfabric_tests/seeds/testjson.json (100%) create mode 100644 serverpackcreator-api/src/test/resources/log4j2.component.properties rename serverpackcreator-api/src/{jvmTest => test}/resources/log4j2.xml (77%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/eeeee.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/mmmmm.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/ooooo.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/exclude_me/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/ddddd.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/rrrrr.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/uuuuu.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/vvvvv.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/wwwww.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/xxxxx.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/yyyyy.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/mods/zzzzz.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/test.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/neoforge_tests/test2.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overrides/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overrides/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overrides/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overrides/seeds/seed1.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overrides/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overridestest/overrides/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overridestest/overrides/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/ccccc.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/fffff.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/ggggg.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/hhhhh.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/iiiii.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/jjjjj.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/kkkkk.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/lllll.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/nnnnn.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/ppppp.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/qqqqq.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/rrrrr.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/uuuuu.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/vvvvv.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/wwwww.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/xxxxx.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/yyyyy.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources => test/resources/overridestest}/overrides/mods/zzzzz.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overridestest/overrides/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overridestest/overrides/seeds/seed1.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/overridestest/overrides/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/config/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/defaultconfigs/testfile.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/mods/Ping-1.19-1.9.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/mods/aaaaa.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/mods/bbbbb.jar (100%) rename serverpackcreator-api/src/{jvmTest/resources/overridestest/overrides => test/resources/quilt_tests}/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/scripts/testscript.zs (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/quilt_tests/seeds/testjson.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/serverpackcreator.db (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/serverpackcreator.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/SCP_icon.png (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/Survive_Create_Prosper_4_invalid.zip (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/Survive_Create_Prosper_4_valid.zip (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/curseforge/fabric_manifest.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/curseforge/fabric_minecraftinstance.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/curseforge/forge_manifest.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/curseforge/forge_minecraftinstance.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/gdlauncher/fabric_config.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/gdlauncher/forge_config.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/kreezxil.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/de_de.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/en_us.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/langMissing/lang_de_de.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/langMissing/lang_ef_gh.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/langMissing/lang_en_us.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/langMissing/lang_uk_ua.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/languages/uk_ua.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/modrinth/fabric_modrinth.index.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/modrinth/forge_modrinth.index.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/modrinth/quilt_modrinth.index.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/multimc/all_the_mods_instance.cfg (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/multimc/better_mc_instance.cfg (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/multimc/fabric_mmc-pack.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/multimc/forge_mmc-pack.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/multimc/quilt_mmc-pack.json (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/plugins/disabled.txt (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/plugins/serverpackcreator-plugin-example-dev.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/properties/filters/contains.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/properties/filters/either.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/properties/filters/end.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/properties/filters/regex.properties (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/properties/filters/start.properties (100%) rename serverpackcreator-api/src/{jvmTest/resources/quilt_tests => test/resources/testresources/server_pack}/mods/testmod.jar (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/scriptSettings.conf (100%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator.conf (98%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_copydirs.conf (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_fabric.conf (97%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_javapath.conf (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf (97%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf (99%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_neoforge.conf (97%) rename serverpackcreator-api/src/{jvmTest => test}/resources/testresources/spcconfs/serverpackcreator_quilt.conf (97%) create mode 100644 serverpackcreator-web-frontend/src/boot/apexcharts.js delete mode 100644 serverpackcreator-web-frontend/src/components/ExampleComponent.vue create mode 100644 serverpackcreator-web-frontend/src/components/charts/AreaTimeSeriesChart.vue create mode 100644 serverpackcreator-web-frontend/src/components/charts/DiskUsageBarGraph.vue create mode 100644 serverpackcreator-web-frontend/src/components/charts/ModServerRunPieChart.vue delete mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPackView.kt delete mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPackView.kt rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => modpack}/ModPack.kt (86%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/{ModpackController.kt => ModPackController.kt} (84%) create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownload.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownloadRepository.kt rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/{ModpackRepository.kt => ModPackRepository.kt} (72%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/{ModpackService.kt => ModPackService.kt} (76%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/{ModpackStatus.kt => ModPackStatus.kt} (97%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => modpack}/ZipResponse.kt (93%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => serverpack}/ServerPack.kt (95%) create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownload.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownloadRepository.kt rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => serverpack/customizing}/ClientMod.kt (96%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/customizing/ClientModRepository.kt (90%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/customizing/ModRepository.kt (94%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => serverpack/customizing}/RunConfiguration.kt (98%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => serverpack/customizing}/StartArgument.kt (92%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/customizing/StartArgumentRepository.kt (91%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => serverpack/customizing}/WhitelistedMod.kt (96%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/customizing/WhitelistedModRepository.kt (89%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/runconfiguration/RunConfigurationController.kt (93%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/runconfiguration/RunConfigurationRepository.kt (83%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => serverpack}/runconfiguration/RunConfigurationService.kt (91%) create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/StatsController.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/AmountPerDate.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/CreationStatsService.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsData.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsService.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/downloads/DownloadStatsService.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsData.kt create mode 100644 serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsService.kt rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => storage}/SavedFile.kt (95%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => task}/ErrorEntry.kt (97%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => task}/QueueEvent.kt (94%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{data => versions}/VersionMetaResponse.kt (95%) rename serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/{ => versions}/VersionsController.kt (98%) create mode 100644 spc.install4j diff --git a/.github/workflows/github-prerelease.yml b/.github/workflows/github-prerelease.yml index fe25cf9cb..1a27f52d5 100644 --- a/.github/workflows/github-prerelease.yml +++ b/.github/workflows/github-prerelease.yml @@ -28,7 +28,7 @@ jobs: - name: Use tag run: echo ${{steps.tag.outputs.tag}} - jar: + jar-and-media: needs: preparations runs-on: ubuntu-latest @@ -54,20 +54,26 @@ jobs: with: gradle-version: wrapper + - uses: luangong/setup-install4j@v1 + with: + version: 10.0.7 + license: ${{ secrets.INSTALL4J_LICENSE }} + - name: Build release env: GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test + ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build media --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test # UPLOAD ARTIFACTS - uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: build-artifacts + name: jar-media-build-artifacts path: | + media serverpackcreator-api/build serverpackcreator-app/build serverpackcreator-cli/build @@ -87,283 +93,20 @@ jobs: - uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: jar-release-artifacts + name: jar-media-release path: | + media/*.deb + media/*.rpm + media/*.dmg + media/*.sh + media/*.gz + media/*.exe + media/*.zip serverpackcreator-app/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}.jar serverpackcreator-plugin-example/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}-Example-Plugin.jar if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - mac-01: - runs-on: macos-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename MacOs - run: mv serverpackcreator-app/build/dist/ServerPackCreator*.pkg serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: mac-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: mac-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - windows-01: - runs-on: windows-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename Windows - run: mv serverpackcreator-app/build/dist/ServerPackCreator*.msi serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - windows-02: - runs-on: windows-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - id: java - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Prepare - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build :serverpackcreator-app:copyDependencies :serverpackcreator-app:copyJar --info --full-stacktrace - - - name: Build Image - run: | - $Version = "${{ needs.preparations.outputs.version }}".split("-") - jpackage ` - --app-version $Version[0] ` - --copyright "Copyright (C) 2024 Griefed" ` - --description "Create server packs from Minecraft Forge, NeoForge, Fabric, Quilt or LegacyFabric modpacks." ` - --dest "serverpackcreator-app\build\dist" ` - --icon "serverpackcreator-app\jpackagerResources\app.ico" ` - --input "serverpackcreator-app\build\jars" ` - --java-options "-Dfile.encoding=UTF-8" ` - --java-options "-Dlog4j2.formatMsgNoLookups=true" ` - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt ` - --main-jar serverpackcreator-app-${{ needs.preparations.outputs.version }}.jar ` - --name ServerPackCreator ` - --resource-dir "serverpackcreator-app\jpackagerResources" ` - --runtime-image "${{ steps.java.outputs.path }}" ` - --temp "serverpackcreator-app\build\tmp\jpackager" ` - --type "app-image" ` - --vendor "griefed.de" ` - --verbose - - - name: List - run: dir serverpackcreator-app\build\dist - - - name: Archive - uses: thedoctor0/zip-release@0.7.1 - with: - type: 'zip' - directory: serverpackcreator-app/build/dist - path: 'ServerPackCreator' - filename: 'ServerPackCreator-Portable-Windows.zip' - - - name: Rename Archive - run: mv serverpackcreator-app/build/dist/ServerPackCreator-Portable-Windows.zip serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip - - - name: List - run: dir serverpackcreator-app\build\dist - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-02-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-02-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-01: - runs-on: ubuntu-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename - run: mv serverpackcreator-app/build/dist/serverpackcreator*.deb serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-02: + appimage: runs-on: ubuntu-latest needs: preparations steps: @@ -410,7 +153,7 @@ jobs: --input serverpackcreator-app/build/jars \ --java-options "-Dfile.encoding=UTF-8" \ --java-options "-Dlog4j2.formatMsgNoLookups=true" \ - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt \ + --main-class org.springframework.boot.loader.launch.JarLauncher \ --main-jar serverpackcreator-app-${{ needs.preparations.outputs.version }}.jar \ --name ServerPackCreator \ --resource-dir serverpackcreator-app/jpackagerResources \ @@ -460,25 +203,15 @@ jobs: uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: ubuntu-02-release-artifacts + name: appimage-release path: | serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Linux-x86_64.AppImage if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-02-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - prerelease: if: ${{ always() }} runs-on: ubuntu-latest - needs: [preparations, jar, mac-01, windows-01, windows-02, ubuntu-01, ubuntu-02] + needs: [preparations, jar-and-media, appimage] steps: # GET THE LATEST CODE @@ -529,27 +262,11 @@ jobs: - uses: actions/download-artifact@v4 with: - name: jar-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: mac-01-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: windows-01-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: windows-02-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: ubuntu-01-release-artifacts + name: jar-media-release - uses: actions/download-artifact@v4 with: - name: ubuntu-02-release-artifacts + name: appimage-release # GENERATE RELEASE - name: Create Release @@ -564,10 +281,13 @@ jobs: prerelease: true fail_on_unmatched_files: false files: | - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip + media/*.deb + media/*.rpm + media/*.dmg + media/*.sh + media/*.gz + media/*.exe + media/*.zip ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Linux-x86_64.AppImage serverpackcreator-app/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}.jar serverpackcreator-plugin-example/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}-Example-Plugin.jar diff --git a/.github/workflows/github_release.yml b/.github/workflows/github_release.yml index 8cb3599cd..091a93879 100644 --- a/.github/workflows/github_release.yml +++ b/.github/workflows/github_release.yml @@ -26,7 +26,7 @@ jobs: - name: Use tag run: echo ${{steps.tag.outputs.tag}} - jar: + jar-and-media: needs: preparations runs-on: ubuntu-latest @@ -52,20 +52,26 @@ jobs: with: gradle-version: wrapper + - uses: luangong/setup-install4j@v1 + with: + version: 10.0.7 + license: ${{ secrets.INSTALL4J_LICENSE }} + - name: Build release env: GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test + ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build media --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test # UPLOAD ARTIFACTS - uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: build-artifacts + name: jar-media-build-artifacts path: | + media serverpackcreator-api/build serverpackcreator-app/build serverpackcreator-cli/build @@ -85,282 +91,20 @@ jobs: - uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: jar-release-artifacts + name: jar-media-release path: | + media/*.deb + media/*.rpm + media/*.dmg + media/*.sh + media/*.gz + media/*.exe + media/*.zip serverpackcreator-app/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}.jar serverpackcreator-plugin-example/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}-Example-Plugin.jar if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - mac-01: - runs-on: macos-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename MacOs - run: mv serverpackcreator-app/build/dist/ServerPackCreator*.pkg serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: mac-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Installer Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: mac-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - windows-01: - runs-on: windows-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename Windows - run: mv serverpackcreator-app/build/dist/ServerPackCreator*.msi serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - windows-02: - runs-on: windows-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - id: java - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Prepare - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" build :serverpackcreator-app:copyDependencies :serverpackcreator-app:copyJar :serverpackcreator-app:cleanTmpPackager --info --full-stacktrace - - - name: Build Image - run: | - jpackage ` - --app-version "${{ needs.preparations.outputs.version }}" ` - --copyright "Copyright (C) 2024 Griefed" ` - --description "Create server packs from Minecraft Forge, NeoForge, Fabric, Quilt or LegacyFabric modpacks." ` - --dest "serverpackcreator-app\build\dist" ` - --icon "serverpackcreator-app\jpackagerResources\app.ico" ` - --input "serverpackcreator-app\build\jars" ` - --java-options "-Dfile.encoding=UTF-8" ` - --java-options "-Dlog4j2.formatMsgNoLookups=true" ` - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt ` - --main-jar serverpackcreator-app-${{ needs.preparations.outputs.version }}.jar ` - --name ServerPackCreator ` - --resource-dir "serverpackcreator-app\jpackagerResources" ` - --runtime-image "${{ steps.java.outputs.path }}" ` - --temp "serverpackcreator-app\build\tmp\jpackager" ` - --type "app-image" ` - --vendor "griefed.de" ` - --verbose - - - name: List - run: dir serverpackcreator-app\build\dist - - - name: Archive - uses: thedoctor0/zip-release@0.7.1 - with: - type: 'zip' - directory: serverpackcreator-app/build/dist - path: 'ServerPackCreator' - filename: 'ServerPackCreator-Portable-Windows.zip' - - - name: Rename Archive - run: mv serverpackcreator-app/build/dist/ServerPackCreator-Portable-Windows.zip serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip - - - name: List - run: dir serverpackcreator-app\build\dist - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-02-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-02-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-01: - runs-on: ubuntu-latest - needs: preparations - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion="${{ needs.preparations.outputs.version }}" generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage -Pversion="${{ needs.preparations.outputs.version }}" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test - - - name: List After Build - run: ls serverpackcreator-app/build/dist/ - - - name: Rename - run: mv serverpackcreator-app/build/dist/serverpackcreator*.deb serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - - - name: Artifacts - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-01-release-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-01-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-02: + appimage: runs-on: ubuntu-latest needs: preparations steps: @@ -406,7 +150,7 @@ jobs: --input serverpackcreator-app/build/jars \ --java-options "-Dfile.encoding=UTF-8" \ --java-options "-Dlog4j2.formatMsgNoLookups=true" \ - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt \ + --main-class org.springframework.boot.loader.launch.JarLauncher \ --main-jar serverpackcreator-app-${{ needs.preparations.outputs.version }}.jar \ --name ServerPackCreator \ --resource-dir serverpackcreator-app/jpackagerResources \ @@ -456,25 +200,15 @@ jobs: uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: ubuntu-02-release-artifacts + name: appimage-release path: | serverpackcreator-app/build/dist/ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Linux-x86_64.AppImage if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-02-installer-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - release: if: ${{ always() }} runs-on: ubuntu-latest - needs: [preparations, jar, mac-01, windows-01, windows-02, ubuntu-01, ubuntu-02] + needs: [preparations, jar-and-media, appimage] steps: # GET THE LATEST CODE @@ -524,27 +258,11 @@ jobs: - uses: actions/download-artifact@v4 with: - name: jar-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: mac-01-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: windows-01-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: windows-02-release-artifacts - - - uses: actions/download-artifact@v4 - with: - name: ubuntu-01-release-artifacts + name: jar-media-release - uses: actions/download-artifact@v4 with: - name: ubuntu-02-release-artifacts + name: appimage-release # GENERATE RELEASE - name: Create Release @@ -559,10 +277,13 @@ jobs: prerelease: false fail_on_unmatched_files: false files: | - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-MacOS.pkg - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Windows.msi - ServerPackCreator-${{ needs.preparations.outputs.version }}-Installer-Ubuntu-amd64.deb - ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Windows.zip + media/*.deb + media/*.rpm + media/*.dmg + media/*.sh + media/*.gz + media/*.exe + media/*.zip ServerPackCreator-${{ needs.preparations.outputs.version }}-Portable-Linux-x86_64.AppImage serverpackcreator-app/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}.jar serverpackcreator-plugin-example/build/libs/ServerPackCreator-${{ needs.preparations.outputs.version }}-Example-Plugin.jar diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6b7c2c0ee..de0ebc572 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - jar: + jar-and-media: runs-on: ubuntu-latest steps: @@ -28,16 +28,22 @@ jobs: with: gradle-version: wrapper + - uses: luangong/setup-install4j@v1 + with: + version: 10.0.7 + license: ${{ secrets.INSTALL4J_LICENSE }} + - name: Build with Gradle run: | ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} build --info --full-stacktrace + ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} build media --info --full-stacktrace - uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: build-artifacts-jar + name: jar-and-media path: | + media build buildSrc/build serverpackcreator-api/build @@ -49,233 +55,7 @@ jobs: serverpackcreator-plugin-example/build if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - mac-01: - runs-on: macos-latest - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage --info --full-stacktrace - - - name: Rename - run: mv serverpackcreator-app/build/dist/* serverpackcreator-app/build/dist/ServerPackCreator-Installer-MacOS-dev.pkg - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: mac-01-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - windows-01: - runs-on: windows-latest - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - if: matrix.os == 'windows-latest' - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage --info --full-stacktrace - - - name: Rename - run: mv serverpackcreator-app/build/dist/* serverpackcreator-app/build/dist/ServerPackCreator-Installer-Windows-dev.msi - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-01-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ig - - windows-02: - runs-on: windows-latest - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - id: java - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Prepare wix-toolset - if: matrix.os == 'windows-latest' - run: echo "${env:path};${env:wix}bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 - - - name: Prepare - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew build :serverpackcreator-app:copyDependencies :serverpackcreator-app:copyJar --info --full-stacktrace - - - name: Build Image - run: | - jpackage ` - --app-version "6.6.6" ` - --copyright "Copyright (C) 2024 Griefed" ` - --description "Create server packs from Minecraft Forge, NeoForge, Fabric, Quilt or LegacyFabric modpacks." ` - --dest "serverpackcreator-app\build\dist" ` - --icon "serverpackcreator-app\jpackagerResources\app.ico" ` - --input "serverpackcreator-app\build\jars" ` - --java-options "-Dfile.encoding=UTF-8" ` - --java-options "-Dlog4j2.formatMsgNoLookups=true" ` - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt ` - --main-jar serverpackcreator-app-dev.jar ` - --name ServerPackCreator ` - --resource-dir "serverpackcreator-app\jpackagerResources" ` - --runtime-image "${{ steps.java.outputs.path }}" ` - --temp "serverpackcreator-app\build\tmp\jpackager" ` - --type "app-image" ` - --vendor "griefed.de" ` - --verbose - - - name: List - if: ${{ always() }} - run: dir serverpackcreator-app\build\dist - - - name: Archive - uses: thedoctor0/zip-release@0.7.1 - with: - type: 'zip' - directory: serverpackcreator-app/build/dist - path: 'ServerPackCreator' - filename: 'ServerPackCreator-Portable-Windows.zip' - - - name: List - run: dir serverpackcreator-app\build\dist - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: windows-02-artifacts - path: | - serverpackcreator-app/build/dist/ServerPackCreator-Portable-Windows.zip - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-01: - runs-on: ubuntu-latest - steps: - # GET THE LATEST CODE - - name: Checkout latest code - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - # BUILD PROJECT AND PUBLISH - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '21' - check-latest: true - cache: 'gradle' - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - uses: gradle/actions/setup-gradle@v3 - with: - gradle-version: wrapper - - - name: Build installer - env: - GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew :serverpackcreator-app:jpackage --info --full-stacktrace - - - name: Rename - run: mv serverpackcreator-app/build/dist/* serverpackcreator-app/build/dist/ServerPackCreator-Installer-Ubuntu-dev-amd64.deb - - # UPLOAD OS-SPECIFICS - - name: Upload - uses: actions/upload-artifact@v4 - if: ${{ always() }} - with: - name: ubuntu-01-artifacts - path: | - serverpackcreator-app/build - if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` - - ubuntu-02: + appimage: runs-on: ubuntu-latest steps: # GET THE LATEST CODE @@ -307,7 +87,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | ./gradlew -Pversion=${{ steps.branch-name.outputs.current_branch }} generateLicenseReport --info --full-stacktrace - ./gradlew build :serverpackcreator-app:copyDependencies :serverpackcreator-app:copyJar --info --full-stacktrace + ./gradlew build --info --full-stacktrace - name: Build Image run: | @@ -317,10 +97,10 @@ jobs: --description "Create server packs from Minecraft Forge, NeoForge, Fabric, Quilt or LegacyFabric modpacks." \ --dest serverpackcreator-app/build/dist \ --icon serverpackcreator-app/jpackagerResources/app.png \ - --input serverpackcreator-app/build/jars \ + --input serverpackcreator-app/build/libs \ --java-options "-Dfile.encoding=UTF-8" \ --java-options "-Dlog4j2.formatMsgNoLookups=true" \ - --main-class de.griefed.serverpackcreator.app.ServerPackCreatorKt \ + --main-class org.springframework.boot.loader.launch.JarLauncher \ --main-jar serverpackcreator-app-dev.jar \ --name ServerPackCreator \ --resource-dir serverpackcreator-app/jpackagerResources \ @@ -372,7 +152,7 @@ jobs: uses: actions/upload-artifact@v4 if: ${{ always() }} with: - name: ubuntu-02-artifacts + name: appimage path: | serverpackcreator-app/build/dist/ServerPackCreator-Portable-Linux-x86_64.AppImage if-no-files-found: warn # 'warn' or 'ignore' are also available, defaults to `warn` diff --git a/.github/workflows/update_readme.yml b/.github/workflows/update_readme.yml index 0f5850e5b..7ba6669b7 100644 --- a/.github/workflows/update_readme.yml +++ b/.github/workflows/update_readme.yml @@ -12,9 +12,10 @@ jobs: uses: actions/checkout@v4 - name: Add GitHub Sponsors to Readme - uses: JamesIves/github-sponsors-readme-action@v1.3.1 + uses: JamesIves/github-sponsors-readme-action@v1.4 with: token: ${{ secrets.GITHUB_TOKEN }} + active-only: false - uses: actions-cool/contributor-helper@v1.2.1 with: diff --git a/.gitignore b/.gitignore index d18156163..9461539b3 100644 --- a/.gitignore +++ b/.gitignore @@ -377,11 +377,12 @@ serverpackcreator-app/src/main/resources/static serverpackcreator-api/main/resources/VERSION.txt serverpackcreator-api/tests/* !serverpackcreator-api/tests/.gitkeep -serverpackcreator-api/src/jvmTest/resources/forge_tests_copy/ -serverpackcreator-api/src/jvmTest/resources/fabric_tests_copy/ -serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests_copy/ -serverpackcreator-api/src/jvmTest/resources/quilt_tests_copy/ -serverpackcreator-api/src/jvmTest/resources/fabric_tests_server_pack.zip -serverpackcreator-api/src/jvmTest/resources/forge_tests_server_pack.zip -serverpackcreator-api/src/jvmTest/resources/quilt_tests_server_pack.zip - +serverpackcreator-api/src/test/resources/forge_tests_copy/ +serverpackcreator-api/src/test/resources/fabric_tests_copy/ +serverpackcreator-api/src/test/resources/legacyfabric_tests_copy/ +serverpackcreator-api/src/test/resources/quilt_tests_copy/ +serverpackcreator-api/src/test/resources/fabric_tests_server_pack.zip +serverpackcreator-api/src/test/resources/forge_tests_server_pack.zip +serverpackcreator-api/src/test/resources/quilt_tests_server_pack.zip + +/media/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e75fb4b8a..1f0cb09d3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,6 +39,18 @@ Build Test: script: - echo "**** Building ServerPackCreator ****" - "./gradlew build --info --full-stacktrace" + - "./gradlew cyclonedxBom --info --full-stacktrace" + - echo "**** Uploading BOM ****" + - | + curl -X "POST" "$DEPENDENCYTRACK_URL" \ + -H 'Content-Type: multipart/form-data' \ + -H "X-Api-Key: $DEPENDENCYTRACK_TOKEN" \ + -F "autoCreate=true" \ + -F "projectName=ServerPackCreator" \ + -F "projectVersion=$CI_COMMIT_BRANCH" \ + -F "parentName=ServerPackCreator" \ + -F "parentVersion=branches" \ + -F "bom=@build/reports/bom.xml" retry: 1 rules: - if: '$CI_SERVER_HOST == "git.griefed.de"' @@ -64,7 +76,7 @@ Build Test: expire_in: 1 week reports: junit: - - serverpackcreator-api/build/test-results/jvmTest/TEST-*.xml + - serverpackcreator-api/build/test-results/test/TEST-*.xml cache: - key: $CACHE_KEY policy: $POLICY @@ -135,7 +147,8 @@ Build Release: script: - echo "**** Building ServerPackCreator ****" - "./gradlew generateLicenseReport -Pversion=${CI_COMMIT_TAG} --info --full-stacktrace" - - "./gradlew build -Pversion=${CI_COMMIT_TAG} --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew build -Pversion=${CI_COMMIT_TAG} --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" + - "./gradlew cyclonedxBom -Pversion=${CI_COMMIT_TAG} --info --full-stacktrace" - echo "**** Listing build directory ****" - LC_COLLATE=C ls -ahl --group-directories-first --color=auto */build - LC_COLLATE=C ls -ahl --group-directories-first --color=auto */build/* @@ -143,6 +156,25 @@ Build Release: - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file serverpackcreator-app/build/libs/serverpackcreator-app-${CI_COMMIT_TAG}.jar "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar"' - echo "**** Create asset links ****" - 'curl --request POST --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" --data tag_name="${CI_COMMIT_TAG}" --data name="${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar" --data url="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/${CI_COMMIT_TAG}/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.jar" --data link_type="package" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/releases/${CI_COMMIT_TAG}/assets/links"' + - echo "**** Uploading BOM ****" + - | + curl -X "POST" "$DEPENDENCYTRACK_URL" \ + -H 'Content-Type: multipart/form-data' \ + -H "X-Api-Key: $DEPENDENCYTRACK_TOKEN" \ + -F "autoCreate=true" \ + -F "projectName=ServerPackCreator" \ + -F "projectVersion=${CI_COMMIT_TAG%%.*}" \ + -F "bom=@build/reports/bom.xml" + - | + curl -X "POST" "$DEPENDENCYTRACK_URL" \ + -H 'Content-Type: multipart/form-data' \ + -H "X-Api-Key: $DEPENDENCYTRACK_TOKEN" \ + -F "autoCreate=true" \ + -F "projectName=ServerPackCreator" \ + -F "projectVersion=${CI_COMMIT_TAG}" \ + -F "parentName=ServerPackCreator" \ + -F "parentVersion=${CI_COMMIT_TAG%%.*}" \ + -F "bom=@build/reports/bom.xml" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-(alpha|beta)\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' @@ -180,7 +212,7 @@ Sign Java Publication: - chmod +x gradlew script: - echo "**** Publishing Maven Artifacts ****" - - "./gradlew dokkaJavadocJar signJvmPublication -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew dokkaJavadocJar signJvmPublication -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' @@ -212,7 +244,7 @@ Publish GitHub: artifacts: true script: - echo "**** Publishing Maven Artifacts to GitHub ****" - - "./gradlew publishAllPublicationsToGitHubPackagesRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew publishAllPublicationsToGitHubPackagesRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' @@ -244,7 +276,7 @@ Publish GitLab: artifacts: true script: - echo "**** Publishing Maven Artifacts to GitLab ****" - - "./gradlew publishAllPublicationsToGitLabRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew publishAllPublicationsToGitLabRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' @@ -276,7 +308,7 @@ Publish GitGriefed: artifacts: true script: - echo "**** Publishing Maven Artifacts GitGriefed ****" - - "./gradlew publishAllPublicationsToGitGriefedRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew publishAllPublicationsToGitGriefedRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' @@ -308,7 +340,7 @@ Publish OSSRH: artifacts: true script: - echo "**** Publishing Maven Artifacts to OSSRH ****" - - "./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" + - "./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${CI_COMMIT_TAG} --info --stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+-beta\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ && $CI_SERVER_HOST == "git.griefed.de"' diff --git a/.runConfigurations/Build All.run.xml b/.runConfigurations/Build All.run.xml index 918c771a2..db5fec218 100644 --- a/.runConfigurations/Build All.run.xml +++ b/.runConfigurations/Build All.run.xml @@ -11,7 +11,6 @@ <option name="taskNames"> <list> <option value="clean" /> - <option value="cleanAllTests" /> <option value="build" /> </list> </option> diff --git a/.runConfigurations/Build without tests with version.run.xml b/.runConfigurations/Build without tests with version.run.xml index b92c30a4e..2acc17c53 100644 --- a/.runConfigurations/Build without tests with version.run.xml +++ b/.runConfigurations/Build without tests with version.run.xml @@ -4,7 +4,7 @@ <option name="executionName" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalSystemIdString" value="GRADLE" /> - <option name="scriptParameters" value="-Pversion=5.0.1 --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" /> + <option name="scriptParameters" value="-Pversion=5.0.1 --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" /> <option name="taskDescriptions"> <list /> </option> diff --git a/.runConfigurations/Build without tests.run.xml b/.runConfigurations/Build without tests.run.xml index c580bcaf8..1bab9347c 100644 --- a/.runConfigurations/Build without tests.run.xml +++ b/.runConfigurations/Build without tests.run.xml @@ -4,14 +4,13 @@ <option name="executionName" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalSystemIdString" value="GRADLE" /> - <option name="scriptParameters" value="--info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" /> + <option name="scriptParameters" value="--info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" /> <option name="taskDescriptions"> <list /> </option> <option name="taskNames"> <list> <option value="clean" /> - <option value="cleanAllTests" /> <option value="build" /> </list> </option> @@ -20,6 +19,7 @@ <ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess> <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess> <DebugAllEnabled>false</DebugAllEnabled> + <RunAsTest>false</RunAsTest> <method v="2" /> </configuration> </component> \ No newline at end of file diff --git a/.runConfigurations/Clean.run.xml b/.runConfigurations/Clean.run.xml index 1041fc8fb..cd3af3c69 100644 --- a/.runConfigurations/Clean.run.xml +++ b/.runConfigurations/Clean.run.xml @@ -11,7 +11,6 @@ <option name="taskNames"> <list> <option value="clean" /> - <option value="cleanAllTests" /> </list> </option> <option name="vmOptions" /> diff --git a/.runConfigurations/Debug Fat Jar.run.xml b/.runConfigurations/Debug Fat Jar.run.xml index a492c8cd3..456ee778a 100644 --- a/.runConfigurations/Debug Fat Jar.run.xml +++ b/.runConfigurations/Debug Fat Jar.run.xml @@ -5,7 +5,7 @@ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$\serverpackcreator-app\tests" /> <option name="ALTERNATIVE_JRE_PATH" /> <method v="2"> - <option name="Gradle.BeforeRunTask" enabled="false" tasks="clean cleanAllTests build" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters=" --info --full-stacktrace -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test" /> + <option name="Gradle.BeforeRunTask" enabled="false" tasks="clean build" externalProjectPath="$PROJECT_DIR$" vmOptions="" scriptParameters=" --info --full-stacktrace -x :serverpackcreator-api:test -x :serverpackcreator-web:test" /> </method> </configuration> </component> \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index e7712c360..e0842e87f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ RUN \ dos2unix gradlew && chmod +x gradlew && \ sh gradlew -Pversion="$VERSION" \ build --info --full-stacktrace \ - -x :serverpackcreator-api:jvmTest -x :serverpackcreator-web:test && \ + -x :serverpackcreator-api:test -x :serverpackcreator-web:test && \ wget -O zulu21.tar.gz https://cdn.azul.com/zulu/bin/zulu21.30.15-ca-jdk21.0.1-linux_x64.tar.gz && \ tar -xvf zulu21.tar.gz -C /tmp/serverpackcreator/java --strip-components=1 diff --git a/HELP.md b/HELP.md index 1b4cbb7d6..15a19a185 100644 --- a/HELP.md +++ b/HELP.md @@ -849,24 +849,18 @@ That being said: You can delete a server pack by removing the corresponding file ## Keeping Data You can disable the cleanup of an already generated server pack in order to keep data between generations. -This is useful if you ran the server pack and generated a world or similar things. Scripts, icon and properties will always be updated. +This is useful if you ran the server pack and generated world or similar. Scripts, icon and properties will always be updated Keep in mind, though, that any ZIP-archived generated this way may contain data which is not allowed on platforms such as Modrinth or CurseForge. -Turning overwrites off is probably most useful if the modpack from which the server pack is generated didn't have a change of mods or mod-configs -between generations. You may also run the risk of having duplicate mods if the mods in your modpack change or are updated between generations. -If overwrites, and thus cleanups, are disabled, and you run into this, then only you yourself are to blame. 😅 -You have been warned. +If overwrites, and thus cleanups, are disabled, and you run into this ## Multiple Java Installations If you manage multiple modpacks and they require different Java versions to run, then you can make use of ServerPackCreators -feature to store paths to your Java installations of different versions. Changing the Minecraft version for your server pack will then update -the path to the Java installation in the Advanced-Section to reflect the required Java-install. - -This feature is most helpful when you want to quickly test the generated server pack without having to meddle with the -Java path inside the `variables.txt` yourself. +feature to use store paths to your Java installations. Changing the Miencraft version for your server pack will then update +the path to the Java installation in the Advanced-Section to reflect the required Java install. Note: This path will not be present in the `variables.txt` in the ZIP-archive of your server pack. If you disabled `Server Pack Overwrites`, then the updated Java path may end up in the `variables.txt` inside the ZIP-archive. Use with caution! diff --git a/LICENSE b/LICENSE index 8000a6faa..20fb9c7da 100644 --- a/LICENSE +++ b/LICENSE @@ -456,49 +456,3 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/README.md b/README.md index c76fbf1b3..b354e948b 100644 --- a/README.md +++ b/README.md @@ -314,8 +314,15 @@ Huge shoutout and thank you!** ## ✨ Thanks to all of my Supporters and Sponsors ✨ +### Sponsors + <!-- sponsors --><a href="https://github.com/kreezxil"><img src="https://github.com/kreezxil.png" width="60px" alt="" /></a><!-- sponsors --> +### Contributors + +<!-- contributors --> +<!-- contributors end--> + --- ## 7. Libraries and Licenses diff --git a/build.gradle.kts b/build.gradle.kts index 2ea76839d..60d54a1c3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,31 +1,32 @@ +import com.install4j.gradle.Install4jTask import de.griefed.common.gradle.LicenseAgreementRenderer import de.griefed.common.gradle.SubprojectLicenseFilter +import org.cyclonedx.model.AttachmentText +import org.cyclonedx.model.License +import org.cyclonedx.model.OrganizationalContact +import org.gradle.internal.os.OperatingSystem import org.gradle.plugins.ide.idea.model.IdeaLanguageLevel -import java.io.FileInputStream -import java.util.* +import java.time.LocalDate plugins { idea kotlin("jvm") id("io.github.gradle-nexus.publish-plugin") version "1.3.0" id("com.github.jk1.dependency-license-report") -} - -val props = Properties() -FileInputStream(file("gradle.properties")).use { - props.load(it) + id("com.install4j.gradle") + id("org.cyclonedx.bom") version "1.8.2" } idea { project { - languageLevel = IdeaLanguageLevel(props.getProperty("jdkVersion")) - jdkName = props.getProperty("jdkVersion") + languageLevel = IdeaLanguageLevel(properties["jdkVersion"]) + jdkName = properties["jdkVersion"] as String modules.forEach { it.isDownloadJavadoc = true it.isDownloadSources = true - it.languageLevel = IdeaLanguageLevel(props.getProperty("jdkVersion")) - it.jdkName = props.getProperty("jdkVersion") + it.languageLevel = IdeaLanguageLevel(properties["jdkVersion"]) + it.jdkName = properties["jdkVersion"] as String } } } @@ -58,6 +59,36 @@ nexusPublishing { } } +tasks.cyclonedxBom { + setIncludeConfigs(listOf("runtimeClasspath")) + setSkipConfigs(listOf("compileClasspath", "testCompileClasspath")) + setProjectType("application") + setSchemaVersion("1.5") + setDestination(project.file("build/reports")) + setOutputName("bom") + //setOutputFormat("json") + setIncludeBomSerialNumber(true) + + val organizationalContact = OrganizationalContact() + organizationalContact.name = "Griefed" + organizationalContact.email = "griefed@griefed.de" + setOrganizationalEntity { oe -> + oe.name = "Griefed" + oe.urls = listOf("griefed.de") + oe.addContact(organizationalContact) + } + + val attachementText = AttachmentText() + attachementText.text = File(projectDir,"LICENSE").readText() + val license = License() + license.name = "LGPL-2.1" + license.setLicenseText(attachementText) + license.url = "https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE" + setLicenseChoice { lc -> + lc.addLicense(license) + } +} + licenseReport { outputDir = "$projectDir/licenses" configurations = arrayOf("runtimeClasspath", "compileClasspath") @@ -70,12 +101,13 @@ licenseReport { renderers = arrayOf( com.github.jk1.license.render.InventoryHtmlReportRenderer("index.html", "Dependency Licences"), com.github.jk1.license.render.InventoryMarkdownReportRenderer("licences.md", "Dependency Licenses"), - LicenseAgreementRenderer("LICENSE-AGREEMENT") + LicenseAgreementRenderer("LICENSE-AGREEMENT"), + LicenseAgreementRenderer("LICENSE-AGREEMENT.txt") ) } val appPlugins = File("serverpackcreator-app/tests/plugins") -val apiPlugins = File("serverpackcreator-api/src/jvmTest/resources/testresources/plugins") +val apiPlugins = File("serverpackcreator-api/src/test/resources/testresources/plugins") val kotlinPlugin = project.childProjects["serverpackcreator-plugin-example"]?.tasks?.jar?.get()?.archiveFile?.get()?.asFile?.toPath() val licenseReports = File("licenses") @@ -128,4 +160,34 @@ tasks.register<Copy>("copyLicenseReport") { tasks.generateLicenseReport { mustRunAfter(tasks.getByName("cleanLicenseReport")) finalizedBy(tasks.getByName("copyLicenseReport")) +} + +install4j { + //Set the install4jHomeDir-property for building on your own machine, or use the paths listed below according + //to your operating system family. + installDir = if (properties["install4jHomeDir"].toString().isNotBlank()) { + file(properties["install4jHomeDir"].toString()) + } else if (OperatingSystem.current().isWindows) { + file("C:\\Program Files\\install4j") + } else if (OperatingSystem.current().isMacOsX) { + //Ensure your install4j installation is available under this location + file("/Applications/install4j.app") + } else if (OperatingSystem.current().isLinux) { + //Ensure your install4j installation is available under this location + file("/opt/install4j") + } else { + file(properties["install4jHomeDir"].toString()) + } + verbose = true +} + +task("media", Install4jTask::class) { + mustRunAfter(tasks.build) + release = version.toString() + projectFile = "spc.install4j" + variables = hashMapOf<Any, Any>( + "projectDir" to rootDir.absolutePath, + "projectVersion" to version.toString(), + "projectYear" to LocalDate.now().year.toString() + ) } \ No newline at end of file diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index f100f098a..8fa62c219 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -21,15 +21,15 @@ FileInputStream(file("../gradle.properties")).use { dependencies { implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${props.getProperty("kotlinVersion")}") - implementation("org.springframework.boot:spring-boot-gradle-plugin:3.2.0") - implementation("io.spring.gradle:dependency-management-plugin:1.1.4") - implementation("org.jetbrains.kotlin:kotlin-allopen:1.9.10") - implementation("org.jetbrains.kotlin.plugin.jpa:org.jetbrains.kotlin.plugin.jpa.gradle.plugin:1.9.21") - implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.9.10") + implementation("org.springframework.boot:spring-boot-gradle-plugin:3.3.0") + implementation("io.spring.gradle:dependency-management-plugin:1.1.5") + implementation("org.jetbrains.kotlin:kotlin-allopen:1.9.23") + implementation("org.jetbrains.kotlin.plugin.jpa:org.jetbrains.kotlin.plugin.jpa.gradle.plugin:1.9.23") + implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.9.20") implementation("org.panteleyev:jpackage-gradle-plugin:1.5.2") implementation("com.github.jk1:gradle-license-report:2.5") implementation("org.siouan.frontend-jdk11:org.siouan.frontend-jdk11.gradle.plugin:6.0.0") - + implementation("gradle.plugin.install4j.install4j.buildtools:gradle_publish:10.0.7") } tasks.compileKotlin<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { diff --git a/buildSrc/src/main/kotlin/serverpackcreator.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/serverpackcreator.java-conventions.gradle.kts index 2541e8415..d05544df6 100644 --- a/buildSrc/src/main/kotlin/serverpackcreator.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/serverpackcreator.java-conventions.gradle.kts @@ -106,8 +106,6 @@ tasks.jar { manifest { attributes( mapOf( - "Implementation-Title" to project.name, - "Implementation-Version" to project.version, "Built-By" to System.getProperty("user.name"), "Build-Timestamp" to SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(Date()), "Created-By" to "Gradle ${gradle.gradleVersion}", diff --git a/buildSrc/src/main/kotlin/serverpackcreator.kotlin-multiplatform-conventions.gradle.kts b/buildSrc/src/main/kotlin/serverpackcreator.kotlin-multiplatform-conventions.gradle.kts deleted file mode 100644 index c92bd8e7b..000000000 --- a/buildSrc/src/main/kotlin/serverpackcreator.kotlin-multiplatform-conventions.gradle.kts +++ /dev/null @@ -1,71 +0,0 @@ -import de.griefed.common.gradle.constant.JDK_VERSION -import de.griefed.common.gradle.constant.KOTLIN_VERSION -import java.text.SimpleDateFormat -import java.util.* - -plugins { - id("serverpackcreator.java-conventions") - kotlin("multiplatform") -} - -repositories { - mavenCentral() -} - -kotlin { - jvm { - compilations.all { - val list = kotlinOptions.freeCompilerArgs.toMutableList() - list.add("-Xexpect-actual-classes") - kotlinOptions.freeCompilerArgs = list.toList() - kotlinOptions.allWarningsAsErrors = false - kotlinOptions.apiVersion = KOTLIN_VERSION - kotlinOptions.jvmTarget = JDK_VERSION - kotlinOptions.languageVersion = KOTLIN_VERSION - jvmToolchain { - languageVersion.set( - JavaLanguageVersion.of(JDK_VERSION) - ) - } - withJava() - testRuns["test"].executionTask.configure { - useJUnitPlatform() - } - tasks.withType<Jar> { - doFirst { - duplicatesStrategy = DuplicatesStrategy.INCLUDE - manifest { - attributes( - mapOf( - "Implementation-Title" to project.name, - "Implementation-Version" to project.version, - "Built-By" to System.getProperty("user.name"), - "Build-Timestamp" to SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(Date()), - "Created-By" to "Gradle ${gradle.gradleVersion}", - "Build-Jdk" to "${System.getProperty("java.version")} (${System.getProperty("java.vendor")} ${ - System.getProperty("java.vm.version") - })", - "Build-OS" to "${System.getProperty("os.name")} ${System.getProperty("os.arch")} ${ - System.getProperty("os.version") - }", - "Implementation-Vendor" to "Griefed", - "Implementation-Version" to project.version, - "Implementation-Title" to project.name - ) - ) - } - } - } - } - } -// js(IR) { -// useCommonJs() -// browser { -// commonWebpackConfig { -// cssSupport { -// enabled = true -// } -// } -// } -// } -} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/serverpackcreator.quasar-conventions.gradle.kts b/buildSrc/src/main/kotlin/serverpackcreator.quasar-conventions.gradle.kts index 590b22009..ca45e0a55 100644 --- a/buildSrc/src/main/kotlin/serverpackcreator.quasar-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/serverpackcreator.quasar-conventions.gradle.kts @@ -11,7 +11,7 @@ repositories { frontend { packageJsonDirectory.set(project.layout.projectDirectory.asFile) - nodeVersion.set("16.9.1") + nodeVersion.set("18.20.2") nodeInstallDirectory.set(project.layout.projectDirectory.dir("node")) yarnEnabled.set(false) diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index ecdf86b5c..bbbfb25bf 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -36,7 +36,7 @@ services: - SPC_CONFIGURATION_AIKAR=-Xms4G -Xmx4G -XX\:+UseG1GC -XX\:+ParallelRefProcEnabled -XX\:MaxGCPauseMillis\=200 -XX\:+UnlockExperimentalVMOptions -XX\:+DisableExplicitGC -XX\:+AlwaysPreTouch -XX\:G1NewSizePercent\=30 -XX\:G1MaxNewSizePercent\=40 -XX\:G1HeapRegionSize\=8M -XX\:G1ReservePercent\=20 -XX\:G1HeapWastePercent\=5 -XX\:G1MixedGCCountTarget\=4 -XX\:InitiatingHeapOccupancyPercent\=15 -XX\:G1MixedGCLiveThresholdPercent\=90 -XX\:G1RSetUpdatingPauseTimePercent\=5 -XX\:SurvivorRatio\=32 -XX\:+PerfDisableSharedMem -XX\:MaxTenuringThreshold\=1 -Dusing.aikars.flags\=https\://mcflags.emc.gs -Daikars.new.flags\=true - SPC_CONFIGURATION_DIRECTORIES_MUSTINCLUDE=addonpacks,blueprints,config,configs,customnpcs,defaultconfigs,global_data_packs,global_packs,kubejs,maps,mods,openloader,scripts,shrines-saves,structures,structurize,worldshape,Zoestria - SPC_CONFIGURATION_DIRECTORIES_SHOULDEXCLUDE=animation,asm,cache,changelogs,craftpresence,crash-reports,downloads,icons,libraries,local,logs,overrides,packmenu,profileImage,profileImage,resourcepacks,screenshots,server_pack,shaderpacks,simple-rpc,tv-cache - - SPC_CONFIGURATION_FALLBACK_UPDATEURL=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties + - SPC_CONFIGURATION_FALLBACK_UPDATEURL=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties - SPC_SERVERPACK_AUTODISCOVERY_ENABLED=true - SPC_SERVERPACK_AUTODISCOVERY_FILTER=START - SPC_SERVERPACK_ZIP_EXCLUDE=minecraft_server.MINECRAFT_VERSION.jar,server.jar,libraries/net/minecraft/server/MINECRAFT_VERSION/server-MINECRAFT_VERSION.jar diff --git a/docker-compose.yml b/docker-compose.yml index 782f85064..e7f76af29 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,7 +32,7 @@ services: - SPC_CONFIGURATION_AIKAR=-Xms4G -Xmx4G -XX\:+UseG1GC -XX\:+ParallelRefProcEnabled -XX\:MaxGCPauseMillis\=200 -XX\:+UnlockExperimentalVMOptions -XX\:+DisableExplicitGC -XX\:+AlwaysPreTouch -XX\:G1NewSizePercent\=30 -XX\:G1MaxNewSizePercent\=40 -XX\:G1HeapRegionSize\=8M -XX\:G1ReservePercent\=20 -XX\:G1HeapWastePercent\=5 -XX\:G1MixedGCCountTarget\=4 -XX\:InitiatingHeapOccupancyPercent\=15 -XX\:G1MixedGCLiveThresholdPercent\=90 -XX\:G1RSetUpdatingPauseTimePercent\=5 -XX\:SurvivorRatio\=32 -XX\:+PerfDisableSharedMem -XX\:MaxTenuringThreshold\=1 -Dusing.aikars.flags\=https\://mcflags.emc.gs -Daikars.new.flags\=true #Keep an eye out for proper escaping! - SPC_CONFIGURATION_DIRECTORIES_MUSTINCLUDE=addonpacks,blueprints,config,configs,customnpcs,defaultconfigs,global_data_packs,global_packs,kubejs,maps,mods,openloader,scripts,shrines-saves,structures,structurize,worldshape,Zoestria - SPC_CONFIGURATION_DIRECTORIES_SHOULDEXCLUDE=animation,asm,cache,changelogs,craftpresence,crash-reports,downloads,icons,libraries,local,logs,overrides,packmenu,profileImage,profileImage,resourcepacks,screenshots,server_pack,shaderpacks,simple-rpc,tv-cache - - SPC_CONFIGURATION_FALLBACK_UPDATEURL=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties + - SPC_CONFIGURATION_FALLBACK_UPDATEURL=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties - SPC_SERVERPACK_AUTODISCOVERY_ENABLED=true - SPC_SERVERPACK_AUTODISCOVERY_FILTER=START - SPC_SERVERPACK_ZIP_EXCLUDE=minecraft_server.MINECRAFT_VERSION.jar,server.jar,libraries/net/minecraft/server/MINECRAFT_VERSION/server-MINECRAFT_VERSION.jar diff --git a/gradle.properties b/gradle.properties index 029e4b0bd..ce865f79e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,9 +6,11 @@ org.gradle.caching=true kotlin.code.style=official kotlin.js.generate.executable.default=false kotlin.build.report.enable=true -kotlinVersion=1.9.21 +kotlinVersion=1.9.23 kotlinMajor=1.9 jdkVersion=21 group=de.griefed.serverpackcreator version=dev + +install4jHomeDir= \ No newline at end of file diff --git a/img/banner_installer.png b/img/banner_installer.png new file mode 100644 index 0000000000000000000000000000000000000000..37555d353684ba8e8ee8113700fb064b6c28fce4 GIT binary patch literal 104129 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�b%LNPx&j=G3jFx`gTcZl2S|UVd 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 N002ovPDHLkV1l?nDjom; literal 0 HcmV?d00001 diff --git a/img/banner_installer_fin.png b/img/banner_installer_fin.png new file mode 100644 index 0000000000000000000000000000000000000000..0d53a1edba885fa95cb8e84900ffbcd1dac921b0 GIT binary patch literal 85205 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ðS*VsSVq)IFewTCd~LHXg*j0t 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 M07*qoM6N<$f-uzIuK)l5 literal 0 HcmV?d00001 diff --git a/img/install.png b/img/install.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0f847dbac7e3d540122536f53e5f68b340d48e GIT binary patch literal 175021 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%0AU;(!H+F(cSJ3@k}@G%Qpe^w*O@- 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%0A1ORS>=O=_oHiV2cBJX2w4+B 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 literal 0 HcmV?d00001 diff --git a/img/install_128x128.png b/img/install_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf8809ceb13b4f501334342ccf83a916c2e3908 GIT binary patch literal 32583 zcmV)HK)t_-P)<h;3K|Lk000e1NJLTq004jh004jp1^@s7v^h~-001r=dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vk|np2o&RGMy#zRBEC-{RcA(|!JBX|z`ABw~ zNn)}pvu@rS1K@rJha=qi-~a2n|N5{0GT)+iDc4qdDW3mQPdyBNX#S7?&d>Mm{ngKj zKlbyQ{eG9Zzx?9YPsZ0jy&m`;`5wO)f1fYvK=Dr>D8IkkKfP}GKVFZ&PZR!fMeWyt z0$+c6eOc)K&;PYQ{@lCU<({41okl8*Px-m2U$^pp;*FDmiSJ{Dugagy&-HzEzM3C? zIZJ-~<tJaux&@2=TC#1!uATRN+2RsYIHB@Agcag@t;HI8SkXs|$;A|t-B4qXJGL0& z3MWQh4Zp9&-g)~w-Ll4sxAD$k9L)H{`*Od2_<#NS#{=EFG(-g2@3G>#LeMmrMltGd z-o=F2{S`;~4e+n8|NM`M<sgZ7X_y-~IQ;w$F|+*<ThYCVj=VARJ$)ap`{w`*5$Dca zj74U^7mL}7`5HnsV;mdvGq~~)T?&&au$;r@Dnp8~FgY#g+<d0mdvD0$dzlnsB62LT zGBrI8<|?I}ic2*$Vrb-;Q_i{Mnp^I9lvq;9rIcEfi=)PxYObZ$+G?+(#g<xbrPbD2 zZ^QM_Be|M;>9x1s`xu;baOA<KM;p8_!;CY{Jj<-J%|6E>d{$a{l~q?;eGRw6jyvtV z%dWfazQ?gcD4lfjDW{%x`Wcr{yYZ%*Z@Klh+wb^2Yj0NFU*_!ZGxy)mn*Gcg6XxEW zCEoOF)_A$rUxzTkN!FY(V<8zcUNr**bkLmnW+?^DoYS279>|IuxXP@_*`^s|2Gg;S zul=68KW6T4^XAC=|J!*Bf1Wv~sr&yib52wD4>R}odHaW1+rsyyJoEsY(oloyBk9K* zP8*@|j_@zv&zL}1+@(yPYs$Buw9av{pV`QqeFo<R$__U?=kj$&uKD&_L%lZ6tc=*H zcip*5-z$%h&Rp%(UFM3eml(1iV{_oiEi)lD<6;EI**BBFDXre(4b$H_?&h2^F0O~k zTyd;@xsz~RyqAOOANkB3Ms0I2$9vCd8xT$_q;VD>3B1zoinRc!X}-@e%zU0J%x;#J ziZ%Y?h6uN0eZ9ku#>FyUn`tcJ_(n|GwAuUiab-Iv$L-JYVdQ(3>+@X3%k<%<sc5?n z8wLKUIo`pE^LcNbnK|3s!MJ&y8^f*udetEL8(rls?e7OmH4>H!r0PASHp^&dkUH@) zv^%WR%RKWkC~>rX6LEA?`8iJtYfYwb)yRi>-Ih<gq439_?}iDVT^Rghb5_o|87d-< zxpV|-EAjNX*B-IW7WX=F5WeYLE;)_WZtOSjZI!!Nc2}7>rpa$twK<e^X}H-Hr8Tcx z)>bOr(mK;=+=8uiVh^{%u$knoWd~2LUBnC17S`Tx?ih^h#_^XK%7-K&e?#Quw#m>9 zmShr*>x;f~mo=Y|@=C;$CLUNCWH=*`${EFtQUQZmdH0tbw~$f)njruB-L+8(intii zc4B6LDw5y?4H5yF;wa@54IG0MW7~6+{c-J5a~P}iL7KF_U24m~imZ{oV2Lg}?lXyV zvVFHa0J~h6>U-wc+_+GNFyc;fCPg8q?jzIBErl_Nl-!H~94C>5<AA(O-Udejz)=W= z4wS%>YXU4~kkp_ldDrg?47Y%=ofx~E?yVEL;3z@an)30=j!8(B84kd>nd7u-w!C{I zWx0a0fD#+goo&0F)n~33eKT})rm@EhOH3kl-IJNJRx{`z82XYm0dLtyy=Xg>>+a8M zVDTkH1{ZtbXMW({#3jkb#SioxVF9T9KGj@TClg?vI;*=1<9jUWbDNwaGQV?jiKsGC z@!aGu*BEzzAPP5#XfTe?`E&ED9AAww+BIC}m{8xOXIf=Xj>P~qA@n#MO5ANA2P>c6 zwd>C7jCF*_HD<t_A03J?kqnKKkGdsiuh@goG4K@<MA7$i8;7f*L_!?c1Cz*Xkg_d; z-}(XA$Vf7~ppSMOf}c)Q=9b1_T!<O)%D{pdJL$+Yg~>3ciCE%rvm_X2?i|7Fy?2}) z%qxCPLL5!qP9i`VJQ5Aqfm=EBmf7flZa_>Ij?|g<#E^koe3v}-`r#kH$72lz&is>7 z`K1Zj58X$<IQN+RIA`B;5RjzR%wSF8Y9S8e9k*`Sf=g<o6nQ^MDN_8_Xk)|X5#nTk z<6&eu{^*xmvr9lQY)pwbW^`q1JG%qMfGJ3j`Bw>q03z`aImi&>!wc~%ESj5;3f(2) zOsYKxbOdM!o`GWw1q4(rgKNZ8C(Sv*1<ht%{^WVTzyv?ZCFD|b-4t)!C74xV!bL0t zECKcb69R+D=wwFrWa*X-oTK<NjL#6XM;Ey;ug(TZg1f`=m8}_Uiy$EMV*!G}3a}?% z0yD#&8$N7Ie?KUtj$%5(F95;Jb*6&YpC5BFlkd)RB-KvpyjYl=z9t05x!MVYQo56& zKVSmd<)U6}B(k6DM?X{}V>tnGXI~hpGsbfx10FIHzvoN6H^9Bk$M{eQ$0XL{ar_Sb z#hA5nIcSYD5(C`GJP)waT1Y+uXaabP6M;huug9cJyjkz!>@+u#ZNTn@igc;-hByOg z25#!YxY10INIx>@a|7Y+H{LUln|wmQ)xF&*V!>Jt+;|zQfYNIO3F5T$5J*DwcpeHZ z=ImOKA~Zh>uX5kyabyUtIf8l_Nrjx+=Lirv8l22{@mH@_0ME>446sF;;n^$F$s?#L zxju+00IgwaZf^RRz9e_YAoLPwu_B^CQAMV$zPpeF%JRf40a;PZD7nG!=HAJoE3iv0 zr1Z`3(GVKJy<;R8pcn3lX`77qS%7<x;#-J8(h89S*N7zy(3uX^L(JL*{RA9D;M$Tw z5xEVjlA>IosPaT3`F5UdNz1`8!*B33XY6z^M~aceD3{QII&2yuvqJ^QMG|A}NUVZf zFa&hUu$+V-sRuCZCf(f1RQM3tfB!6ri5*-8g^Eqs8GYJwl3&!kpB9UM(a`)K->dr} z{`ME*?>%!bjXNE448|JF-BSKU0Kr6_KkhFWgleZ0ETroL9eT=OJa7#wMfi&h0eGHP ztc2?U%}Sia^yb`5IaooULm?NDU{kETok=Bv;^>|Y+rtD5C}1#hSez)5b>MyhU%(w) z5Ak`<o+U8YoCQ}QikI>SyI@Kj4Wqs`w}9t~Q;LhRifI9p2h~Q1lW9SsoqtQS!>ZDl zob<L*9psEeMWUTK5pEj_L@`{^(3%TR)R8?&fb6C1Jfab_s@x5Fo3pe#)3~R*4SH=@ z{E2U51!|!ojk%|N3aW-1Xp00w?{*GkI2t~d;eNaW3I+rNODE<y4n|Q>b*Bd)K}LpH z;(AUzs*#sOk1fR-z}?YMx1mn~)Di3Cej$+_3s$t?caU~<cYFpfS}#bqc!;ciWS(F^ z&wIR~o@-U2LGrL_eqsY4wM6zqnQ%S{1rnk6A(`<U06<cYZ745PkPgwz>5hH_NH8g2 zGZ<JA?_2_E%MlgziP;8%g1Ts<LpWoOCL?}qk-lU_=hI(gbJJWksCD6WJOcikyE1nq zjF@D6WuLcJ{sOxU7aB2DWI53u0234+dN%8N34(10L#yk9JfVo09X9}`PDTXYA;Bty zjlCo}A<o`z#p@w^53ZRp!1yK<L4hkFNr?f*bMqGOfFOKXX{$t~D>s9<gteJ;E<0ti ze8?;uBm6<uGq6Sk460-cGKVf3{p2LD!6Hs<P|ib6Y;`P#Z6aF~evh16mCnWo!l>Y^ zVOxLDU_Uf)e}RJ_9mD|&N}!0RxzAofJ20;+j3)9>87EzgmP9T>pj-rFMC4%j!LJi) z3y7)(lA%;{S_t@wfUP28SRfMfJ8>eE2oh6e1x8}P#Jy&XQHuZ$hCwK@WWLs5c))5R zJgp0kfD)Yg$yA$w<C`r^`#>vzC=1p+?n>TBGv<W4=ESI*o`BvAO>&K>0IcfF()%Cs zA|m7pv*x55GtPZi??`%tn{8AE@c0CyYAqoylB*OxoAkbqX)&vtVQ1<Wap?_{*I=WG z*L7lXnU7ZRIroPBWP+`q%dZ8;O@=a$)1xCazZ<4aSov^eqCg4>R2M1%#Gu6h!!6RC zfI%2~#Jg0GN+DB7h^|I9gIq)cZWmE>Re+h0n_(Lgs&+PL6&A4?5!X9JO$Eows_8PH z33py+h^kb;S`#0Q&fW+FB6=86$nh7_Pp)-)@`$|T;D9~plr{{HCvIYp!Gw8Sq;Jxl zk?8=73=@c3+KcF93fvEFEZqsG`;8hTBHVu;W?b~?h{6nXAs?+7kD!AB=OjNtUx*_V zERj`}DH`BH=8?9j4~QLz3q&&Bp?{Qza>E2Qe7q?#7q$>Q1h^U^0yBco$_j|hDKVnA zAj;t&z-5%@0<=_7efw97P?sZ4&0nc+vcYp2EHfT$KOeXuESwnzo?GOmFqK?4@b~oJ zs~q8$kt(x0a)2C)2*w2v02q<M=#e-sl@}$0wj}oWklbUoOmhzhAwnw|yX-IlZWQnd zUjckwXsV730Hbrlywga>Dq>*b%2!=L-!VCV7ZKB86xQlK-^A54#sNlT_&5l;3Ysu- zrKuvA8)=J<Wwe;yE0;}f&x77d$ZnUdsz@@pPUdpTSTN!qD&4$&->0uoqIu&1pejS< zB9$88A+ZdiZqTbG2Xqjf1%1faGJ@+BlQf3VGdDs8y|UJ;!3l*(f-HrSf(Qj6P0*@- z^kxe?39P1=yx5S_T2;Xz`rTDoj1vPkp<c4dr<4TDoXto?Uvl@!_uwiPPsWJ&*Y%@C zbjC$kYsfoVfy64RPwtdfLY6b9q&*jfQF@{V#}JM~l-Lnv$v>A&o`DkRa~uUe60!T| zVL~;oC|V>JCv*dl+<}loI+C=rbrW<6mBG~ulShwZZz^Uim|kToK<F@#1P954(n1_w z)Gm-*-_av<B)y8o<Lr3Mz^MYCRUK<blYCoQn5x>{Ap{_NUNV^t#3QM9MY*kMj1XuM z*_1y}4<yb-1%Up*3vq&zwVY58!a0JOu&l&2{6EG0p6f+GsSde6c*P{bH(kXUMwonB zIztBAF9IiDQOyuhA)FKz20=3+aWH~2xtH3A*OUB7sdU4EtC9c<h$9eM$STH`d@??U zVI+JBxrhl;%~~ZuQoZ0HF=gaci^v?12U(|j*!h%(N1b2g+EZAI19fr&w+$VTiHo>^ z+XT7}D?Jew9KSwnjvbgfUU7qW{z}YTR7Lah8y_J|NpfNj{mLZ;fUN8i+&W7&B3ZeJ zZsZoHA>D|#BWHnq$Pr^mw&Hj8dNoMwHir6)hPbaHteTs{N$-Kz?X}1ONrE9p#D0Js zM{Fu)b15M<DVT0)kkCh^-%A|#@>PDLgANerDor89AtR!{qW}3kY7^d+`OmWq3(^Hl zEUF)uWK+uvT0|s6kf~QT3)nD;U)6J%CQx-i1yJ!pTTL{7jf~19jPPrWyV%OB3WqG5 zfFhU47=Z=A7ls*2u0<ga?+(el4lx!Poh`jmpB0=9S)L&OEo0D;=j~lx4$1AVMY*eb z0fAH!;F0mbFSJ5c4H6-ZhX)`)D&MrayZD!MqBVjZ1<{dE2rbwj*uf+s1(E-gkwe{G zE$VPP$f+w~s{9#XCSxmCtRi_h^Q#Z4K;d3J#Ok9K83r-|RZE(6$uH24_`)hM<Cwk6 zB_NN=t8TmkKT`IEZgQX0ya@BCYGeW(5WDGRU&vqKyTM0Hq|yX)yrL$YIUq+nSjGfI zX056~2@6QsLd7*lj1Qki<U!Eib>?@SUttCJFW-jR9jU|n+`~J+`*i_a)pr4$-u}Ds zkQ+o-BTpIIVulkUW2z&*j%qXt&qXR+sG*8j{QKgFI5vH<quGhs9T~o%8o}X;!|q!% z#Pnmej_)2@;Jb*6Yi;}K>`;P%H5&T=cD}ypa{oAA2Q-))Q@dd`SWFdFhFkYSE^6_i zg#nzuQ1)BLbOm@JMVG4Q=mQm8NR5oFR{43i<YnW22$CR^ghMn*5WKYrex)$ZPCgct z<rWe|Z&^ky$|Su)NITr1D#S8=u+Y`CPOLm1HRNGI4N4S@>bwYjFzf*Afzi36tb(2@ z<sGO7{%}>~>|oA2iO7f(ic^ODgxMPE?3xWHWU22m@u-jt;u;I?0mP^^EzQ}~!e?kp zPGxc+k9asx_0p0QC<32jA#jv!YY{J;`ddD9Ei6IXXC*BNszSUA<6dgfIZ;cfDB`?% z<`PmH4Nohm^3AI#mQ*9mhKB);P$*stf2!Re0A*Pi4}2^Xhewo~1g4ih!MI*rwv-Pl z-tz<4%2=uHD3aQif*)r5gQGF5ZE+xoN()(0%br(ujr2nrx-WlFPqI7xTdM1KYJp9q za^i%mT}=bd2)3-!0}`MsmLkqYg^|KP9H*a5v_U^;CIqK}d0i!zprSr0p6kJUGbDvG zuZ${SM%yeMxd4y=%_yVo;Id{CauN1dY4=yXY62|k{xRkp?UA{AWNOizXB8;41V(^p z^%UJ=c-oaz^YqJ@m$+1;N^;8BFLI*T#4Qce!UU(23O@nEgkeD2flV+1X<shBAAv8u za8yKWXwi|>hGCk4f!2|XB@dy&z1|ANBHLBzoCk}9MQK?TA%~QMeG%CxTCGR`r_%fI z1m1!x+C{6(gf8q0OiU~|iK1)f*8RdH!3veg#_Sejex@&|)>zRnFf4~caApBvVw^o% zMkPC;Gv+SuuTHbHBr1$-gA{>zK-Yjp(%L9c+!@7=B`R7j!QY|C_huN;aK^M_nJp$R zKWp`Wd)0v%Ha8^cISfk2;tBow3i2(?P(#X}AGp9k;z%dy4C`gBaxgYHL$b1}9@meP zx|=c({iv3SR&0VHrnI$JMFgL&YUD`^LKt4nKjVcIAcD0*e7W=)9Ht0Ijz6noV9}X? zex)RkBfv9&P>5{&3f2u@3`s-17|4mB*U~moiwrKQxbMx#Lo7{%gEN2rc7#Cws2W5B zgGz>cJQ_m)insvTPQ{8gi4iWd{l1nlfQ=@tk};cv5jO5%*FZC9-Y3B~TxXftLnWdr z!5LQ<ghY6OMnsqjkj<++j1=xNeO+s#uz+fn>H!%SF58y@hru!irSDgYbn@r{6Z$~j zkk5^<3LL{%9e|jQFMc}WFunMZX2LkY1thbn;sHr_M<zw09kqLzCjg%J!n7NUv_A+Q zFv8uc)-4rX$tzw@;4E`ZtYCP74C9IjPp|d<7?3mYK*JMQ(yGJ^h&a@HY*T8o40Sj# zSAG7hsV6eA6in@I&V(qSx7V_&>YZF6k)3Nr-k*|Grbt`>FPIiC0Xr?ZHmxI16{pA{ zW}~@{4Z^mPW@IUz1}U^j0<xttUZQv{{9rCFca;9LN-NBa%WLtKG^<YiJeBDN>@m+o z%hxV|u<ELw@@|7?K#C$+Bwr^Ye(K4BDtP$n)qq;1DsLH#tI`wa6+m>kman9Xt4O9p zaNkI4Mg?poLxRa3bM&C9_5?=kc6Giem$b;e5I%?(#Hr;Ge-$)F0akad@@86OewEyy z^)c*@+zrxissh8U6J6LT1Oxcy$pZ9TEh-u6e81fpfxA-F?IKtYR2;cPbuxlS400Hm zb9FG97%KwqzJ<T0*N7JxEkm7R4VbB<64mZQZ7~rbB<L$wB+avAH$VukslQNxDAlE- zQu|dQui&(ILVpq?9<GJ&m}~_y5+@a+()ogY$iyOy`qgas+kfkN_35IZZxemV$a^jF zcKPfa2VMa{E*h9J!6U6^8(F*|zDB5M1vez%O+x0a#*2%qc$RU&N~;WHMazGt-Vb~` zj>0i27<{A&M$slY1vbiX7Ko2*Nyh+^bfFg%$YsE{suU<_Oyt#4{eW1uWw+)N)>7gA z6L{UH*Tu4f*7<n<>{`a-7|c298Vg|Kt=ASnq^P;0s#tfIU|roel_3Qn3-T^4!fp@X z2fqLfE_eZSK^h2;`@q0evQuRjBtZek9JZXOt7`v=U#SbX<+&ud4ZWwK496Fy3m<~J zDPG0oB7uCgG;p<+h;?!tqZBQ0!ahh+DStH>HN3F;4=|uy7JNAY)<#@-B3}#GTKdN7 z8S2nb`UGUad>7u3;ivmksm1!L6--5t!yC9I1fZxETbsTrF0g`bN8Lnt6YKB9rr=^# z7Zi9Gr&jX89N`@?opI+7ncrGESdyqi0C5l%h<dE13aZS0bS;>=z)X%027+jy^usNp zV>AwCQ_GYj0+^u&g4)Or*nHjZT&k19PL62@oejb8oFXEN<D-NKey$-%bV9&Ps4NZq zk@03t>qk(1BZOu^b>nXwV&dF)XQhU9U(;Pv#3C4uIvZ@M8D}+*ylU!)BNvN0!)EWK ztQKLX3YwS+MUa{!(bOKdr)6=(h-LMd0AofRHuBZ9IFD3{V1SH6!UYVy#4xwz9+E>~ z`6IAj^!3P#pb~wlsHX*a<DS%XAWU2s0F6;f446tsD1U6&u8QEG0_(!7ZQ08OvYA9S z)ZgT?{+<0cQq_TUkK@Fp_M7B%Ek87eQ{m%&Edl|RiAV@wI`|M(X#A<70=3-xR-8#M z&$SfQh^0GU!{QLS7EyB6>LtnpVUn=Np>AQEs!c~hXu&0e$r5gvYe3OxneBoL&;yJ| zoV-<gvIz$2cqY)YYLK|Rsp=U1bwXlyIg;w@@l!WN3*xc)wS49Bb5VUFYU)F$BsZjW z1ei9GuuER3qLI0xpbJi=45ft_OqamDAPlkGAZ1Z;gyYvtIw-uQzoT%sM0874{-@yj zL2F<}{nX-xXe_Jav;AjTUZuV3!v@WE;sB|D-CFTvG*FJmp$^C|?1Bnu_=gdti<$~R z&x$iJ<wGhh0dyoWiKvcvwCYgb7*a=#Dee@t@nV7*vhid+lcog-ZggoCg<GF0;&BOh zPCm#<k#d>f!VaI;PBMMuia=4|J|M5Bmc-GTyA{<J5QP)Zv`GXqS0y}PdskKZ5P?^1 zNz9_Ee59hYjWJD2k~dV(6lbWLT*FWZDj-|Sk=Kx!=`CCxV8~0~Bt*X&nZY|E-N{>U zeMDo>5@iBA!RR=FuB*#X9FfiPXD}^_Ks|2|JZc65O7^J3rQ(jb3N)Qr8BMkaCq?cj zr~`WjjTxsy$<Ou=FMI!|7u|am#r5Zx5jSMbp6bY0{ne3uc!P?60qNDi-n7&*6?to^ z0OFt?94Lti!D=;(;J`H@ILM!`A_MxX!-YGV0`-3p%Z^M{{~A#sTZr&|O&ZJ@u%KXj zh~W`v<<qidzp@IvJ7x~pw}xOqDC0%6Y?t7WA*YCOY}gd3!IVV6WU&xysr9Rjp#_w` z!jk&o)erdxHqD~qbwLq_hb2w@3sRt>I4oTud<g2;HsF^IO5l2>?;bFAaKh26ekZVq z=pPuj*EO6Q9<O~UFn>~6bo-MwuL;_|bk<@@Vb(_cNoZwzm+XLw(_3FFvXCtkKnTRx zLSkMRpp8mfn27qLx*6x=v;?y;#{Gbyz*R2lXQ@SA1ua!T`?inOs3L@F!VsTI++O8+ z0+^gfIFIOT_Nf;5MD&C3Y70G53qzD;2v}AAj}~VWHV`K6TfXM;zvS3b|0h1e_0p<W z-Q;w<<_+@G<iMUuEf=IeBAL11;0GtCkVLj~+9bRH_0a!W4Gu1Rm5{N<uT{6G1ou+q z4fL_sV1}S1tMS-k2zcqwzgAE}M}L0DMCV*H;VYcf+E*`)%;js0djXlUW&*zpw5O$R zP?#YCY+q@xKgRiW^gFaoLCtUsHA-6+W4}(lx2s0_y=h}msYT+DxJuKJW){=};z0vN zEaBVHW8Fh&YSA<Ct`_$}^Hu%I>TB#ZVgpnnAS<_8Hl1`OVtJFC5dlW}Y{r^Ud`m1* zF736wo*~^Mrdrtpgel-Im<yr1dgxwh4DgpjLD{K)JqIIvARBcEan9FYtKLmj+6MRc zdiWl#FEkQt+xt;ulMMBBY9#U&oZjkT01rA;-NM&CNlFK`tYhg_3%%bGe60;f#FQ=~ z8+F;$;;hER#YfdfKqheh2#n}heGqGeM{P|l$$XZ3QtgK^A!KC~@~io))A!?eEq;8x z2Y^H#FMhY0dUPvDb2$et^-UviLg4<PsoZ~vstKi`_+a6w7U~X`5Pflb@~nNOsGrjD zD;#s%Dji=CG7BL7f@IpL_HyY%GnMjXJs^Luili}qz-6o!1!15aoW8p2uNc%2u%)UM zsW74H4o66%TR1iP5Je%r8lLz91=M5kggvm;m0M=ZyZF`1lJ>BmZL~0iwjnHM?pQ@U zOdLI9sSn69iCr~TNLz0~n7Tue^>g4w&_rtYSwawKhPP=(sydsH<|}Byy=fH+!K`MW z#ak60>*?VFP8Zb7aotZpj;~)gUH#Qfx3%J^-2+9=OlAsA;%CG|VT~9Cty;C9UJtAy z8Ryi1&4dj+Dgzr5DxNV?y}oOu_sLWYuiBB+cPpk*J017r;iNLNSJQt3*zBzhsM>*& zNMyXa9Xr-oXGY!wysAhLHNC<E0InLlj~}Y*HXOvK&K#Mt&sT5o56%BwV7)bt+5jKD z<<}d2e(iq!zE?F>gou~WVz2>y+B&egH?>A<7f~A6*sA?1_*_#}rWJ|o7tYS?Th{tM zqqW&zpHlxTPzl_d`gfmGDxiTHyDRWlNsl90Uywn=5w)m~mR=oRtLOmQLgozwhf1c1 z!e+=|<OMExAVAQGq%k8l{ZyR}A+xok?(LU47+F+b$0|x+Ath$eh7m0nBCZL*{0bFb zm#e1oxPXG5GN#PGnyyni#9UMsMoTKr=3CtlLFXkJ`)5me-^7V<OGG%LRok!-2jM{{ z<lu^Q<@Ik3=&kwTQnBMg+NaKuu}8fow`Uk4C(UbPoQTN!P+IG|QKd0;VIVhS_MO4p zZ|^B2u*tfevhZFjnJFgBpDOh#gxJVgH^?uWFwtxA0N@4uz^J57cz}#3#Djy?s$i=; zJNU(p>az>FR&`r~u5Y$wnY8A6tMjTRZq;$Q<r5N4H%`rpCk=YIOpLY$O=z`&$?3E> z-^P!xMd!DRd>shCTqHop#T$B~$^P&;pNWc-hq6Xx+{3klk4&O`dcOa1AZ?miDC`hb zc#+A)hX+!-6JzQC|93muz9pX`i5kEOZ9jTl8uxs=FYo{y>|#T-PP4s%P?f2`Qx&au zF;rSPALg_!qzb5yy8Wd-a;5IKR7ebCVKOk;+EI&Mo~n`Otp!s{8~#YGPj&yh#>gN! zl9u<+l-V5kdGzn>U8~;RzbMx73|I)kEVaHw{(*(lE+19B0z#|3{X__h)4Z;wOm9pN zVxUyQg52#y95x=UP<t;aMil~d#jvu9fWnU9T^<;P7J}DFOr7Ra2h&EpSvy_}ljy%9 z4JrT;J3e;P(({lQE(sTVvcs_$?n0X?i~I*i2!JTZRUzaN=gyBxJUlPSE}O0{zv`z_ z0=VD=2Ns#?7bsra2?<E8c4~*L+RfDxrM(WID6_}$fLX|J2AKubsjGR$3{BCm>#e>l zP#66`&=({omvu<Jyx~#!LIf8~6$pN(>Hr5TlE=s<5K14I!zHztMJb`rPHT+6HQ~SG z@_)kipOM}D$9w((y8ju73Do<^h^0MmpJMyUD%-y$RQ#D1$OSVZ=J})+l!LdQKSj^0 z4R%|0P%TbI$j|(xNR*6Gr|yxLz!)V+=->><P~sf{(Iml%t!~<o+izrczWj$wIzqsG z?$W=m09?x?@nxYAwo<g20oRf32pns`(QEM=gLM=VDx#!!{nLG|0LFYJ>|zDkRhLn@ zjoZro-E<@JrtnFB6#Qs-kRag7Lmoj`4U6D7fcv6Vf*WHV+`pDHQ99@~wJ@dg(?o#v zidCzrT`N^TFX|6zp~eAi4CLa<H;_N&AA)Gtf33P{0eNgy+or09{u86PnOtlBkK)^J zuv<*tIoG5r3Dv&5dUVJ{An<C<HFq@vOJ{RJ614&#%oWa9e3n$YOTdBp7tIpl+;??j zleffqQd>!@YkZ}D&h5M^|8Gm?SNDgK#*Au>;-)4eyZpET>!fl|iQ4!Kh;x>bH=(Hh zeeJqk4xe5sq`6zuhBu8uuHgxDNQ?{7HoDeOYUPkV7gwXYX;%;KwV)a)oWiX|b@!~I z{i@Icv<q8=qu$)tAdC-SR+kpXUv3q<-$tr$7qFTl)xDQ+kcKzI_#TJ@E1{zyXRu_W zbugqgoOZ#s+;8m%2pP?OHi0y41kYNj$lJ-PL5i;<kw8G2RP~=?;#v>LM(w;Kj3Zd0 z6-d<u5COQcQPI-iQt2RE#bu)fh}R_pq+Jw+#A0eb9vP%8HXrIizGLdQHs9>1%{M1P zb~O`D+F%2VppvSZ`6J#_gQap)(s|LtXbLV(tM8?3?L>(OAlUfl=^28gCKKexMoJYu zCt@538ciWgRRKD^)l+rEH|<>M_)FLgxaEJ9%S8@M@@r_H+Fy>oUXJ_5rhd%}qX{$q zZ_N4{?jOy12w%TZR#6@FmIt<2ySnq$Nd;tw+ao5Usb_n4F>NF~F9uc(&Tu(Vt-7$8 zG?msQw4Wk_10H8EwD@-gP6q?hD{@0?$AEQlWlH+L{tIpGS78?OR)kSRG*qQ8tu|DS z1f$1}7))Mt5eSII{h>_uaN6+_9(NY(sdikM_QR?Aq*~Xy&_(MJiY0F{oJjn^%Wst~ zX`M*9iYs)>7cG>Gpt`sALJhB4j`SR%_wD$znBoeWOQe9+2wwfd@>PNdo9b|?R%%)C z-8A_;@8aUGDy|~=rsZ4#RiBa@A?R5GiZCx-{;L6tQ@U@lP>qr*v~rY}lBhO7<fwz2 zSWTbv?yt`;pliw2?@;3x;#Q0w42dASxD;eqJ95z2%a8mDd859S1}q#EQ&J@gk_Y3p ziT<@+Anv&mhwVV*VLn@EA<G!A^EMO^GBLfDZvgb<x4-#mCiTCml$FrY`D&w;VL9B> zIB$31A`FHohau2v(pf*nxRTYi3DXpHYvc{;+^7InU+GbYabL~h6Q<%JYIg(9-Lzg& z&a1<XOK^nOA%*LCo5?p;##ijQuX-i{Xv&9F*j4=q*3f3SjT=A^y_UTyAwrz1_2@mN zV5zFEwHIQmK?GBqCdddJT$IYIuIw*T;0Bdl@H^URu$!>udr$<CO@d{94%~y>JnHn; z$yE+54{bHk7q_kunvvw)RjRkCaYVJDD^3X~^i<&)exBOesLf1hx~URnCYjV57V?d* zko%zDEsf~{1G)VLAgf~k)YmL(h+ux=)|$%Cwz`vrz0bf*=CqXPq}Q~KhXVqgozz;| zO|EJj+BypywZCJiPoK~Dx7*LA_WPWst)b<^d1Q@B!`f!{YOCrh&|X25Ow!XqK+T-6 z(&?xXZGOuwSr4N5arnQ!yQIBU@K>Iw9VX_e#wrtn>daDBxFmu)KT6p)v5oPmSGC?^ ztdF`J_C_90HAW*ay^4)Bz8$b)(HOn<9%Qm&Xe9!jVR~E*qXbUF!6elaEoPiln{!m? zSlS8!Um@Q>nXVxP&@eSq#gM$U{gJ@eCQ)>YI<!hQt<s`d^Wr!|EYbybn5qJ;hOGUk zfFz)DmE;HlgZl&W06|z(W<l_gjk}=AguUc#sOF%<js-3%OfPLX)!I-s@H(lgIbmGl zpp+yZ2vNd<2JY#xCIc%?%0us<sq<<Ii#Roszk<qKPE}htFX$-=TFpD@)ml+=Z%3}E z77_S~FPVvjUC8d(&@Kf+Zxbr&FkNbl)b59&uDJ0YK!g7#e3EvM9Oh5!O<Dr=NSUh! zmfIcP=0Rxt(`9(|#yrLUE`_7rC;wmoZBz!Gy7np8Z=bT(%I0*%n${3=B@?tu=}CN; zV5t23my^nQocwJn(Ehc7)zvc@m@8PpaW@rl&NyymF9X;a=%xo^q@XS-|I~ZayK~dR zfp(7LNv`@b{ewP+<GQcbspoxYyZK*#`RCthgD=wsY-%eahUTwFJML?rx_>{``H$b| zNM*bZF)S--t1UHI8yi91Gacff;U8f#J*;B2*9V&wv3lmtzZ^8n7GuGhsShG)OR_^I zX|WMzj3=o;g^uXJ2*RGw1L6P)CQHg9>5((Ao8&1$`W~>N?QE;XbX|i5lj_1MLP0V| zi}?t;AQ08^7Ql^d(StXT`LMHAD-A3hYR140V`fAyP74&M6K$6#l%N4UEr*MGUBAdv zRO!~<O<DK*EzXqm9?_PQb{d)b8QXg%3#p>Vb1bgAXKkLyNE|?%MCM9BL<Z$sY|`U_ zmUc#<g&;r-FabK>lNY+vj$#}*zZxp5R}$@YBdJeZeQy^bHron%<btW)mA3);13WBx zbi{s-gUHeCUvO<%oA8k8q*PFMe9<;%q-E(t&zvYfD_#3F<)wvWBocfhSkY(1k(Sog z_ww@q0M60=r$@r*sSWc_k{&mN@hji+U}_8M>CU%&o&N@KYmN&TqaBjatN2il)W9K| z9wMPFn|l6B)H<+BXx;Ok_rp8XpPA1CMMPKE35y<q@b+J&rJgM~sMXM(%qMaXWm>FH z6`KW0kV4v<ztd}3XEeGbvU)JJ@j1z|!H+4ct31A^mw?hB(|*r7@v3P!t;i~*U#)wn zjNOnsUR^?3%|P1Qua2D^^<b8-Ek%#I(JK8=S4b}_=wS+PojK*n1?D)l5;ETg?ua0$ zzn*HOwnc(LI$C9)sLL8iEG~P)|1hn#d5@@$EOd5M>luUa4Y$2+9*(@b-@hK4)J@gt z{Ku}ghX0AM2=J?8nI2RH;l}))S*0d3?ccgus}Yl74Apd|as8f?1CFDHM^gt9CwRaH zq!ar`&)dNXrCl{ANpN~dSmc}*>N_dM)ZrOBOrYoY6ox8Q-3svFs+uhn*i$V4QH!=3 zL2O_laC7cI#l$hD)IW?JZ)jg*BXUw}v_YGO9l5Gq1gb8Lg3q}etmeuXYC6|@=v4fj zJc_K}$pdS1(_{>0u{%!0%%f6H#Cra_Z26zQt3|JAQ*!vV%&o13(=)HZtH33}7MD^4 zPEob`sOUeNFH<D2qpD6|v->HhzP=q2!jjzOczf45(pp=CH&e5!4f+d_DBBIu1Dt6# z<QxVGMdg}Ym3GHpE%N0;kod=Lhyx7~XCo^yMO<akb_*Qr3Pf+WJ@lA2a2LS0*MOpp z8m5O)H9h)4E%07W?Rx;%YdXc0COvnLWPqX70486c!nOT8%E*0>O_D=QqId0ac`IjK z`wR4NI2D1^2lyUgwDWwrysN+tZ~S^n3|{25v}Oc`&DVyh#<-txLy=vbF8pzL4R4xK zt?T^h$xJa6rw+-!ksm!2Js1sf3le6gVh}+=+kaF<(L)=E#IHY5?FdVb<!vhX_HnDT z&fb1<Z6hEmwv@B2kW972SX<lA3clh!$9h#ssC#ZTMqxcldYj#yDxx~js)E!Y)D8oa zCg&*ImjNf}R@tE@HRQ7hMcX{|unSyveT^J?Xjyo@4FN7s3DZKRLNKtW*VL=4b|-Zn z;U<Bi{wnq_Btv|=QMUH0WsmXG*2n3^Dk*6@*S9CQGMoQOC)^+q<=y`QaFq1ce;?;3 z0004mX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ$>-AgB3*_GE`mcVnrNF6^me@ zv=v%)FuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_ z0Yam~RI@7zsG4P@;xRFsTNQg=Az&Coh+tA;rk+SIX5cx#?&0I>U6^NipZjz4D|wRv zK9M-ebi*RvAfDZ{bk6(4K~|C!;&b9DgDyz?$aUG}H_k<e1)do+GO2muAhB5NV7Y@? z$xw-Bh(n61QNECMS>e3JS*_Gq>z@3DfxNbo<~q$W#Ib|~k`N)IhB7L!5T;cl#YBqs zV;=rd$DbsZOs+B*ITlcb3d!+<|H1EW%|c|_O$x+-?ibts7zcWGfo9#dzmILZc>?&K zfh(=;uQq_WPtxmcEp!A7Yy%h9ZB5<-E_Z;DCtWfmNAlAY3I*W(jJ_!c4Bi5LYi@6? zeVjf38R}~J1~@nbCW@53?(y#4&ffk#)9UXB5r=Z-jEu*i00006VoOIv0QLa(0QTFU zM#%sG010qNS#tmY3ljhU3ljkVnw%H_000McNliru=mHlNHVhkzv&;YhAOJ~3K~#9! z?7ew>T~)b1{C(Ei!x@v4d1})UTIfjA0?LdC0-Y&?fPe!c!bKczuA-tBMKlUHaMi1# zs28t5OA9SkL}U_C+W;-4Ep(nTCnw37_ugwg?;q!6PC6wZ_x=19pEP8jeb#=~v!3~R z*0X_Q7?GtU246D<UnpKqX65;QM>~M90M-BrAh};5P%Y89CQ1G8A2MU<`+N=nbZ>J$ zw)xg1y>VNTHs6{gmDE21fLY%U@Q5JJ{!xI77t0_3)H0ezyzha&NvQwD&9^40mf-=2 z1IP!^2%xBrVE3P(;xhB{{JHYc=my6WgJ%RF0p!;a2tWk@YcK?jtK7$|0)f&Ce2xJC znKq5&es_89^CW=P0PyVmn(h<6;pUwfsbV4^II*2cs0sD;^#`1Gy(iVkCDb4M+}eAf z5h~-?(oSJb{w2Ln51-JC`uck6!I=SMx2k94Ku0Y@OFM;2Zk~)wuHN4JIRiMaz7K-} z$nNvtQAZH#ubqiM><zJIz|({~>I<-RMpxfWI=2faf6LFAHudnX`<!e0PZIobWXPTq z6XLf-X-1vDyK}SZqW-(kgNL56d;f2^v7rNZeDM)3DGl*=>aG<aV9JE+spmVrUzl}& zfcHL|60vp6{U;a<fl?YLOuB)l{=4n%{BFh=k-~aLO-+rgsi|3BQ&Up|07VO>Ir~S$ zP-4%RQRinFAY@w9wzuxeoZJiH_X2V9A(+^s)UJE`o=hXrdgmJ|6`3jhpzJnBH+p*u zPc<eE#?vv4;zh!LM0qg#fdF^D?lnZ_8kMX8qCPmIuex6V^t}VNbpV%LVbztKZTvel z^yb@=vgdmK1rQUK1U$D(Q?y>4(zM!reF%8fpRgLsmK!s2WPGrev2D0zR9<DSuUKK; zIRJvfMZ&fN@&_OJz58hZ4+6L$_xbud!li>JnS8sgWBc5^*3~*LX5ANX#$Dt~v#GuV z;LY5ZO90FQa7iuWkAo+We!Nxj0bgtg0o5|7A3J0I=`}p9=wd!GaxtG=eF4|h)b#T0 z316}q07ThxS$S}6s)rxHnVaaL8~!no&w2iBRD3!EXoA;iA=ywwH8nK>0Eq3-3ju)2 zuQWdw?{M#rKhyW*TE+wbdoTXC$slha_@CcU5Uj7SPnIk-3S5Pl&>8(dwk^y-vS8oS zOXjFAyi$OqE5HoA+3we$-yG?~gGrZkuJt^lWsPc?{i6W4uNy+5V*AH;;qpN`Wcq_s zvijp3^M9Hia~~E}*BEDjfC)F5_x1nw8P!wxjfFqNO}j7Rxxbsn50>1DHx~X705I)N z`&9s#@g0A{IP|dh@}Y-4ns~FF2JpF_2|7Eo5Z!v)rF83UgXljbPU&H)Ua-qoSU(dc zY8w96sTm{>CINUqfR+0vylRFgTAi`oUP<d36&=D0Wy_4}vh%HdAfV~FR9?#}jsZaV zhviA7XV_Z-;NY_<(XpCG7AVv2^0yjcDuBmQ__H6oos8H{?^A^}=1(^NTT+b3jl+%n zg`n#518&nx>Acp}I@xo*WSK0MVR<fri`YY>O7KgqPk2!PsJO<MU2?j$sqGbKUc>La z*A6%T5dkQ>To#v|W4HDS<s@^<E6yZO>HR9nAU{D600mifo<A*o=oKTex4rH?KXmes z3xMiRScf8Wjmq}FyPFCZn6uh9WIovNKk6?>D?O_|E*D3pSig(!Q<Oi;2(-T7-q-k; z`}re&vEoYW2eTgtaM?2Br2f}y8KRcKJwL}P&a1ArUYh+tfXkK}Wdkr!ahZ92aH_b) z%oo#)0OgScye{3c^(*PJTE<EMmmS6YU#KJ8d$=14E+sMkV!!HtExA{{Mp^PFtLy{* z3;?hP_l?_=R=<^Z04M<P!#cue`dzQe*<$M1`85sw^pmQuuh+u@v6Rg57x*0jXnEfG zK+{U^F9ZMui-^Ww<kzV~de@G7(o_3A!~xJ>&|OeRc(!KVeEvZF#@>r<n`h#$XH^fo za^X`5j&CcdudnX}fTHEX=L;GyMrO$cZ`P)WvW#vnEPbE3cJpmRb#^Ty2H+L|F#vx6 z&;`H}nsEBfC*XgRLG0cp(0|Dx0bDULjTuELFn}-QM0hU?FPFs?=i9A^)~96_Z5{#u zkpBUqu4kDCiT3ayfFh}_RmsbKWCOy(&7m$}!N_~B^iW14%3_sG&Kjs0$9oK9KH@Jn zKI2{J{UGrt9+ArH2&p-Xi}f!*v~Pe!lREpSCI%A^Fej(g_vxXEYvhbTnX$?1W^_Ek z+zZ}`cle^dN)Z{(%p5$<KIeU$NIGa<+=^&X_ptXEN@DV=Y6P{VQwc9zUtgarzmmeG zXZd@-aPSW)!w6mgn!GTeNDg&bMgm~wtV;eu?UEzgcuN3g7FR6)A;On{ifVkVPKQRi zML**u_;+@moHS&T@@3}xOFv+~-1b-R#fINI=L|P*O-)S*K<w&|oQ6e<7r-#&fX}sN zY}>jY-~7)f;d%Od_4W1tKKZk@7n~qv!=KWkeZA%*isFhD=J!g@H9sHUrF3Yrq}U$s z7o9tto1<%?j;KGb5@p4w*t=wqf-1=nCZYL-Oi{}k)p5+q2mof@=U2k&bA>uKdL3Sz zuUDRa4T3#l5tJ5PB7^kB@Dx#H=J(O(k?6@d8URv<^z%X@u%j;XzFvRt14KrEBxw+{ zYH3-`4*+<epVX5T3w&{mc0?AEJf81WTwz{wH1{151En*q*9)q7!=4{IAM3eRv``pk zP%MC-CXzx}C$LewdQ<CKrLtC^Z?{z_CNw_kK76G4k4OV2eZ${s7ErOyz{|90;ja_| zly#YV#8r<Iq%#a*5PD3KqjATMhyme81OS8$!(Sy3ebrr;h^iH-6g##b-~?bY;Hxt3 zDV%Tq#{h0vZk*Em_;H$Kg_n{jnQwbmfgs9(>9py$THbKxb*$>M4F|}OYsBQjnf3-F zOocr$i0&<3Y~RnEyki2ObeV{hpX-adF=jKLD0N6}YTN46M4x1JG=x=h1qC8gtfyl; z^!H27GFQ4?jO}-(=%@fFUMz!^AGG7~T`Il%`x$@!C7`bL;9ACo0DjZ!&J)^?%ClZ9 zWZ7A^r!&B|uM7oZNSvkoTsxjTpuFAR&-ekLYkjZ%cRhfz+|P%PmL1!k)T;4?v@}A5 zN&jZMhsD6ePgxz|X-2^tpY07k-38!w0CxlUcE4L0z`p^w7r=@-!nz{?GVVI_Yk4!| z*E=?-FM9C4?_}8RUJFf=Z?hja3uwL>qH?myBm$aVOy}S5s7?ZKk7AL!j&MX_HT8@3 zhQK&EzyGxZe@+>~>C!*7OT>8LCzAxAGaPGqOm_pAFldgaa$6<<yfw&5DmW4V9a}P| z_y0Ru?|w46h7|$8)LQ%XK((9$0PX+GoO<XtYC~?~U@n9S0HTi26HJf*s&dy4Jv+aq zhn~2;zTO)Nh-r7)+wD?0&F$n~f;0dizDs}AUm>3)3ElJX9$#}1y>Kp?xdgzfbN{*x zPoH`Q+=E81RGeP&Ay`F8n85@C*iv6#Kf8C;Tb+63rT&DOPbgSOBD#*VhMZk2e(ppy zN8fP2*bl9j0NB_MfL*nWP)*JJAB8W@U-f~F^^m?KF4^=f0`F%)6QBt?Bam(gA-1E8 zVmr!a)zsAV8XqkyIobTYa|Qs|mb|2w4Fi=_nrznl4*cBxZodcqv1i3S?jis&^{d^} zE!hT@2?HQFu@WR+62nTE;G`k;2bx!Ue^V)j2#7EBZh;ICDVH}4vVL_f<9Yzs0=NUf zYXH77VaeMUOj<;cN`T%f!(XqhLimK{0b%R8c^a2Zjlq^0pWiT)KAlcxGfXr3lo0{Y zLlsjU;kN*O+izPI0e}_^V#Y<^58#6N(POq1Sc5^?kh;+;R+y@e^u;>Df}7s1+<Mi0 zzLSnW><LI4l<|=01t8tdY~|6cqxtg24_CbM_|=C_s{VZyLd5!pDJfB%=RknLAjBMr z_4@+6u}f0y%=kdJ3P5BDnPym!+Tm{O1t8U+_vfD^Csf~P{eJ(?ovV%nMADze_K)rY z0I@OW{Rqwq2`x0Rpijh4|7&QVNIu6OCj(F^{#q{=crkss$}l2xj4Oi+am?6dVkn`r z4?lvrE-YB=Fg%r&HzG?^dW&70Wu=md*3Xahz!|@uiYb4ohF~$`J>`3gd&7#oM$SyD zKI^g*@+MiUd$*wM3}3ImmN(t_IN*HZZ~*-NvD<pH2rs_yCLUk8L3ehh$g(8PJo^MJ zTYfr476yS^fy<ZuAZw;CC)<pOs=hRiTvB<pJlUxJr1d*t4%BAVpD@3^{}=Apk4Vi@ z;Jou^;k@%_i6ff#mF8-<o8iSYGHv=hD#?FzQ`}_i|Cw|3emGZW161Z;O3pOTOSkGD zA7(D^cvvsp#M{Et>EiYcYFx`|@6d=Q*$K6_w#y|oK9`d1Ygv!roW7ZtZ=ZD6H!r8k zszMMAoF<iW@Y5gv5wE<wM>E4XIAPP=vh%H1+y3S~*YG>%{39BrC*AF5X%m`WO#8J5 zw`08?(HO0%sR;r&C1*c$0NBXPZLhxiDpy`*d{(=(we&pmk6oLGw~mJeAaW^D**sg@ zr2<`VcyEQK$dc$5=j?{xsyB~>>d?iYq6y}I<<B&4PB&`yRS4?X=rtdF$SFT&&uH9r z*1_;}QDx@kXiPyxw>UQ)___Ds;Ct<}K;srzj|L|jEBf|bp?kajLeon3-s5)7$}g8E zl%8Y1-AjSpjOc6LeOlpHic|+Nv=rh*VToIP<+LI+S@zD^^@exfzW;VUKPuPE&G6pd zEW&1QyT4paD?Zcw90`05WcJ#~+5wUcO0_=ceKj&)e%TCDP&ort{BZ%0h-nWR-1@gn zb>r{V!CtAhn21=IUXrz=Sf!rti>x)S!ada=H*eD^-gHD+f-xB5uD8~OXHkQmr1!aR z;T;?0D@3^T0`oUj%dLm0kbjwYlVhWu(-`dp`AbO#tHmt4%y_PdEo5fvhVI?o(nQqT z=(j|Wggi^wbe#<13@eXHjWC&pp9Gox*nk<V0d@f|$?SHs>vr)$mEyJ9<6m2abZ-81 z^B&>P6*Vx}@QVe2dSbNj(`Y9sy^Q?D3w&)xhynxMH6YWWA%g@V2wq&X8)L^yaJzD` zOA`)(AXu|S41)+EVycoBm78G-8UYBBfLSoSmg|1g`^Da$I5+-F5m2_=oNE=(Gm#la zF<B$oO3;~BeW>$I@22Ke-XD%MXJ82^&oAc(s^otLDvfi5jli&~wN--vj=iOy@KWmP zmM2u|T|q$cVj1w|%jY9=jRnF6+-?msB>KV}3Y>0HJCY6RONoS9AAOY5qo%SeM4`V> zT<fneZm|l)WC$2ujJ20!;Va8NICVhl_%3xz<4X6Z?+5})mx%&@sj(w}rcnd}k_VKE z@6=by04Dg##1*Lqb$g;){j+Ob)_$qwp#cRy`oMGdc=lruxHWtMIo)&lpkOF7Bwi_) zXU-57;C3@QUsM0p_?UC+m>{5dp_INtxv_A*F&6@e?@;N)0X3ufac}o<_vaRVCxGG1 z*>ma$FTN8RqHr+@U%*&dINw|*d_cNMbN4p2xM`KU?zj<9ewp#U$ZX?ft4NR=Wsbh? zEoxfjKGkor`MH$pvjFz@7_<P^<$ezy>j7L}M`){M2mrHlKabQAGGl>=;>E)D7aMyD zPBALLK>I(v-Km&&LdO$Y9~J?ji-=4c0z`&okWU!muKZcXZ2%+HpdBG-ZK_fIq-mA+ zY;N%r0K5vIa17wy4WOou&^g+PDz1{J6rW~qAPLEwi{>i^D`eP1S~;9z7jc#3&cr_T zWhz@COAF^%Z<+;Ed^o?i`z`l-Et}o{NWK8BWz+z834nh@*`F;){5^m}0A>KV0zl|6 z&u9lQyN=K>S|n6nYn)ZQz<M4M!|G5K=Vbfq&h)0=s{;f8d5b}X<IL~oon(FvG?Xop zd%ac7+np<7>-sX&wTuz~zXWjUAXYjEVD4}+^jgNL0G<N|s5S?{PXOFeM@Wv9OsM>b zytrtA{S=9T>xu7HFGcq{=SCmT3hMzMmS1H|FPLR+HS_yi%yfg=*t|9KzOFSxUEy4u zwhKV8-{mjY5x#Xe;A(1WEaAt6lRh8&%I>=GbaoKRMMy@HNjeuTZ$`G@^k)FJk5nDe zGsfR&TwO5B`Yi+mdw?6)=zc@3X?Vn4Hmne=yvABne44Q&-KyX#m2jeZf5+y`Ni8cm zIcVVqfGYufAHZPNi32#Vj`~8oH8nL7K%0M-j#Mt!(AozgVB*4Tacbksv$5$*Wyrj7 z^k#{$HGJh=EG>rsJX~L2f9<eH_=I_5pi<tIZsmgf8Pd))Ywp<WmbX5kS_UAXc!}^u zrkP!VYH7uHs$^oHSEHF5TG#0AVRn8(E_Qu5xsd|!IDk()TQmP>=6L-P->e8u{l@Us zM_wv|*S<3khwk?sTbwiKAyC;40D1NG^|6tKqxG%g(~U0yK<nS!A2dDc-aY^U<yV^X z3r{gN7(qhEChw(|H=T2wS4K8maw_l@04Mb$Q_lVV27vDXPylXZPyW!^Rc4&=-7x)X zUl45yV25z-^P7-vE5YmEJOS;i{Lrqzfch5#AQ-~dkUkgE=Rn#S5M_;x(+U(8Pm1G? zSMvd2KxxbnLvFb-y=bnn%`6m%zUCe3KIo3`dOBCN0stg1O_&5`KzrD6xW(tJx~^Kr zEC6``;&n7IqgBhe6TsI12r?AxX${!;i)?wRR00>?J`wnQHOK*0;2^NHPkkJVrFOKY zC3|S{($FR#gh>%okN{X2{bKgT*+dTk%vI)vMDAhAcXCKj0HPy&c2_Oq#{eD#(<1j! zF`e^*-3v9T;UkQMcW4;>rY3MtIa413T>iUG1BML<gJuQ{rY?-mcCRC}0a&u&+*5vC ze6f4oOOINZo2U4q>J+ixJ?_OSChUmXcznMP?e5XdA_Pq`gCxL!N^*1B&8op(1bD7~ zEzzJe`4MRc%0z|JE=wW{b!X=~9<_<8W8^iwEcDKg?-JVp`d<L1XQ1d%1i>8v7>x$V zrIFDs0Ja&<BnRD7;)oV^_hur93DbT#dBkUj7ePcy%~f8K*a#8W15}b9N<NdN?p_46 zuhouqx&AdP`ANG(h`bYxy}mLDe|~0e<HKq!0$l^P$~8PRO=ugMjvm7iTnZ|gWc?;I z#aIdjWV$rGE>^Ci?(c`&en6%5tzB<=E_;kXwe$%azM@mC`tobU#L)sHJ0#_Ig~oJ& zf(6R=jI4=^E6lHjrWn`sL_h690V7CJn0>;(_kZ#}018yeA4X;vX8*ksJ_;7jwzq0G zGrr|f-G02lo<4V?{=zl4i;j*Mo?2IrKd#>bC!+uf)?tlIwF9TnB{%3o8(H#}j)WC6 zVYOOp9WX&D0vHquTi$gaJyV=<#!137C9ZhxheMuM{Ym4x{FBYE4hi6wisH&5e@7tV z-m?D}?oSN>D7j1o3ujt8?GiC;`oIX1zj&U#2b>w-@|f-#mET?%#z(F@7azIq++z{^ zG*U2^hf!2j*UPi=Pquym8pau7fC-d8!+c=M?ecab%Lk%3w!>Q#-%I5}qJj)mk))HP zpRO>1)Ke5D@+MesdW)Q?9c%S*gt>_DE{yz3h}<|G?AYKn6)rHwLjWEB^tQyK?(D9o zhGOfmK$R|)A-h<%6wERFV4!`2yF1gVr?stB$CM+isi`R<LhBi4O~I!=eG%EVIVOv3 zIMj|W)jq=MwAZ*{!^SEAC|_<a&O2GI@s$hm;*97<?=y`n-5-uBCRlNq`5*bSjc;2; z1f61Z)O*jQQ|jW5C$u_NplfPsEC5#tLA65CbkEfi01QLGGzFWMgb+jk*z+`8N5OS9 zY0aQ)OfdyuJu|)q;Pv|Ydd^0ujXA+_VngUe!-NK+uX~45ZQhi&Cv|2_f}%y23bF$7 zp~xKLIx|9G7l>~1+MO=Fz{(Tfls<kV-K`#qwdv;MGh-9{9B!0cE(-jGvNkk9ep-8^ zyWa4AmN#AgyIm#-8tB~O#nLV6gqAg``5ns(lwW3k*gsDEHat~I5Rh)s@Rf+(**L@L zREvH&)$HA!itCp<R<d(E&&gX13gyYEz7lbVztXru`UfUoGA$Z*iGUYpbZ%CEb5h>< zZEN%~8E&HzOvRT9X$0gQz7la~c$zdutTJYBrd2m}ZSihsdffZdk>)M<5Sig>^TGV- z#?@qvoWJbaqMFl9-u&h@eM!@IJv9aZ#mgvIcDk=k2FW*A<z(75j4(l3Su<2;7}{m1 zG+1kJk8U6dGW<l+M<AomMAI&iX;tu*Neo7Cbd&q}13!1~8=a3d2E$1s<#zF28Kmg| z;B|6G*W2!Oi4Jc)gb<bxRYKBPWZ+U^(Hyc+A}#WhgkV4sLop+hOzAe2=56rsf>!*Z zr}d8ZH9FN7vykPXamMPv1bG?&=rq@lseL}0QT;LNr(|$PqFsHxZIyQL4v(_SWVNTb zqkWBz<6k|37l7WaXO*pxr4^T%*N>S$G5Vb_CKOG!9xk~|1mDSp=Pd?}yWYI8aE|q+ zze+3_yEw^cy*wKw`6nA!`J>`I%jd0#HF<yQes-uGP<W{zX~HL@7)O4Z28kd58;lTX zbZdtX!Np#!xJkR5ZvR8yNu#o5Wce$MZ-u9tw~+<YjbmKsBBJ=y%>Qx(kV)kv0lP$$ zoB7uB@@?@8JK}wo9k_-eCXhi_2|q0}LUe+aPa!izLRdLBg#a)CnxQ>FI}9(z+UZ2h z{xH9)9exl7zaE+(9}bL{vwM;@(nsZ{4Ur4F{%a8+Br1A@sjy%~W*DFHHHj6ORvidV zlmQu{fvqTd@^u3wF+upU{*qM$5diX`abBiFpC?R$nNNdq0+bIT1K@u>0?0ts01-%l zuR;`C5rUgwNKNpP46mD&8{>qR=0l44EeJ}3VX$V409$~HNubK`Q=t_hi<w~;O3*NV zlQiMC4Dtb^&nS-`0g|Q+OBsHG?IR=)sP6baeWT~-KPZ=z?6FRO5pn>w2-*gun~m5I z0j43Q8Uf=^{wg_fB;7(LnZgit#Y_0MwkPzckZ{~(a>a{<l|R?`u~jH;unGi?WMxPn zu@_?_)vX@uT*qE|C!lu%={-PtCy;pyNbdmBZv&~f0RIVaND!n&)1*z|;gYogU`9lZ zVET-&n*I^rruV$7hEUluW0GAg{+@rbQJU${=&92g5D89mBGsVQB%9SYy4&>IiDQ)5 zr7I|4=ZTB_<;ER$shmSbzmwezI9(c6M8Ij+=-R3uc9Y%>ZELmnjw7IAg|Q?wS+4Yt z&mP9kv})L;eF*RpoJt;0ze`8GZ^pXxzQnrGxyJcRVTAJJDgILVAHH&Vq3}@%4C>nE zsk{>mNoKZ8HTs&j$Bn5|TGptpcMJg)mz$r<pJ{y0Dk6dgy0>}VcBvq{M1;LK#}a$I zU!<by?$HEKM~v?;ga}5&1Yd!?IZ!6APc`x1GOe2PW*W<^0s=J9x!LPZx9e#wtG%W% zM?l3D#vPHl<~PkeBJBX3uY2{GF7Jc+Cs=Pdo$43qE_HwZfa%~Wv9YQU3!DQAm5Q*? zVnH&k{u1yR*M_EuhXU17fPv08yrk2rr!*ZU66h#*{-($r<0oc>NT(PbuX?M}Dep?x zgEoom{z1}Q(ZtgLW)7O>w*YF#3K0Wj(sH9FI9|LGnrfH;(D}O8o$gT8Evt{r4o9w6 zzsx)<|77`sT_#AUfsT6jH|ex@L;n^p{YS3f#SRRuAKD1u%(1El8%8jn9ITeFhfa_t z6wtoG+vCK%6I-7+ykI=6GgP`v76rzMKiOr1*aJFVb=PN-BQHKT#*Ls}BN(};YSg27 zwYN2SK)o+{Kxs&z;1pw$VHpn{w>Ma{oP?Dp{}P%iePEz-lef!>t0nDEaQ~)I=hiYV zs^zSTs%6*!J~)DbRSMwD9E+fqkzdQWqLv37(;U@kdfcmz@6;c4I~l?T@=g}llrJ~W zKQ0!iSYdv$@Koc!Wq=Uht(^ESZ(Pe0s<j`fmjl=Upgc$N4<K6#cjjRXEC;~<=I;MA zvWKEK130UWvd8&G6`ETtgLb~S2~3~NJ6TL4lMvgc;!d}k!mMMO;kg<b9_y~0dL{ty zod>dfM5alSBwL1*Wxi7JrhlC9sWgyj*8fmx>`JzJ*LAGdDp%$CV*ob|a&wNyuu=d% zR!6<Z)Q{h0xCB&uvi(YMf;<hJYbdAzt=VG_4!cNdhm-7bce0W9#oOH_RQ)mQr)B}2 zAZ@A?J}Q<rLS(`uNwS|8$6Z_8JNEsz`|aHB&j9du9KP`JSVkj&d3A)Q(N0u(wQ+jU zY1YdmM`mw!pgLZ4E;#f*-t&SC?g&nh=lLqdbgPhxWsrQrB1tm0p9H8RN7LQvq1@sv zWXt0Yw|E!Xy5Rpnwoa%X1IwR=C>sEu8m_|pSVy8;{WIOD-Wc%)2I4!t-*m>j7XUyc z+SS)n2h~3gH)*n2t%|kjo=l4d@Xy1zqMZP)0kEWwP={>A*qH$C!pN-wx`E*v1Rm?? zTE{wZ(EA+J@b*TgMK{D7y;~DcWIq>etF#l}?_KV7a>uX;%Wyi=s(#Ru?y4hr$d<$3 z1fXRoesM2=mAU&+N8ma_8o)gOUKr*P+jE-Z(Xld;Qr-H6bc@<C#6ioz>)!1x?cXe} zm*lEGVq97<&w66;QP$)E^=$jr%tgaB^r>akBHLwx`jP&Lb%ebm7)klac6J@G`*noQ znwpxPJ`MfZfSFmn`s%C4jF@pBHI^5iVm$_tlLZ?5ONONY03ZNKL_t)DZt~h<&2DLD zzwV;F`ntPYt(V)p*CMlw`Mn@0s8q9e_hGsj>0u~f#H3^$p=;i}dEG=*G5*u3ue3dH zpP$+)Cf3xz9LXjjqMk;RsT}M52Eb#7D~bewL_)0(b?6;dv6u#A4{-TPMNy_h<O8a6 z2m%a6M1-lCc8#9n+?jUub}Fu49$`0404ERHF_F7ABx931W&0?Aivf@oVa%;-#pbWg zLf4ug*p<VJNx?)uPf{Qg68`vkWF^i6@k2E=H5mY3W9IL^`s%Agz8QU#)8QMv?^s3F zFI0+228ql(BJnm|oU=s+T7srY5ns8;Gr|O~n*jzV8`ZtTWp;D+{z~*UC+&~W+jGU# z{TF{dfcT`^%q3Ir4APXZ<|A)f0D<y@nD?DGQSwO_@Tj*R#(*DBfa4Z)OBmk13UYT$ zC3ojksE!I7O!p8`x~8UP*j|e94*iJJst<N=_g)l&AWT45;-kaH1cemyvLS0i$D7{X z;5cDtqUzCM79RxgB!GD%P~X)6I%^r<18^YM>f|BSUWuv;H^Yu>8E~@|*^fD2PGWn> zX*hUy7<@E`-!wtDg`nG}k}>&!K}LErhAFt~Sf!IDyqj3_ZZEF4TSbD5AZiLOA`yK$ zTPWE}0m7gUP%eY368yuiE#CDlD~COrni`J82eH8|$R3P19RL}{46@Z>k}FY^p3yc; zzv`oL=rtYA#%NyU{n2CI?{>2X0A`r-girW}uz>JkK8b8{f;Io6>2dFw5d@hA@Ky93 zk{Z@80q{`(e?Q|7d&0BtZ-MXRCTKSSmC1+76hM2~Od4ww4KKbQn?ExFe6+zV$&lq; zFi+eGk`92wpEOZvcHB6+0Kf>7G-TiLAOipj7ZJgiB_ZuHGY`@4gGWow8oalk5L7vY zZUXSpI>PI<j0#^#$0NStD84q$!pk?0!!sQco(oL=TmsdLcH_YMQ?TRfMNkJAFmyIk z)VsS3vNXu&fP86?FAg#s0F0mjuAh>^p}6EH8V^r888E9f9|WV=2oMp`_?`_ka=J_y zCgp(u<v?r6-G`g7j=;5yp8&WD*(S?R0(c0(d;sg}2u-<C`bPmw2Qi+%I~%z^7r@MC z%hA!{$DWmw(E5M}QyzerFnp=70ALVMYy$HNJ<Kf1pxEz1<QhpHN*p;SoBku1ui=Bt zm`f%=)Z30JivSWr^tQg#(BwfMY0^4Ex|VT%PWPvBR^013L0OG#Pte{6Y0<YlDHyZ= z3d~V1md=U}F(i&LV0m=6>3;4u_nmRdX#s6;p9m6=M;Ey{j1S*{Y!mEzf#DB7lQ)Km zilZ3JIeC|@wHt^4&B*?jy_KMZIhw?49l@(*{0!MMgTDq)aOz{@VCF0e|2|{P7Dh*j zv|iVq8R)lh*-}}DTvl*$rY8}zJzBtWEwR>V&sgFm0x$aiX(JRL`|`n*cXTvEk_w4{ zT!^%3APZ>LD#=kWiVQyy5yp*$ds;`}nwmL(i(KI0<$8%gf_Uk;49zM|!4$`b3<eN$ zB%V7Mz+XEIsH2!Bd?67Ts0OlKDp>dVD+T~W|HSOOigz+&s`L>^&^!RojMXl6{@K9J z>-V6jp@4q-N<L_x4N2gs0nH1FT~Qr&k#BpD1oZcaH3*(2v?dMS)ot=CZ6>ukL?FN& z=b`1iCPen;sldj-h|dl#1d)U({ZtCdw&>8T4-PSf*~5$M;zPm&$e?o~m(qPHW-qgT zY<zSr7>(7fXsm99U_xGZh+=#4Xxk1S#6f#xkwX9^NEIqdo*GB{#7-pbzGC%!<Q<j= z!Xdf9@QcgLFogiXjkC+19_kH3^D`>R-x37`;m4_YdFF$@E_F{6)V8taTTP74{1`gt z#(=p!>!jY+Xg#FPq@jtABn3xAK>h^~!7Afx{t9`a7ta=DyItJK+!vYZHHDSZTQkvY z^|uwF!u;vR)xj!xSKi`xrv#3{(4^rB1y3j_p^m)xBWO;4nV9IWl;;W`3^KA+sw%}# zxAzN(^dg}337yQeaf5aNyNHNP$Uud0aVSqt#e02>fC7JkyuGIhiy09}H*08*e>q}i zNGI^~Oshgqt7!5e=qnL-gf1RE6;y63gQ4Y^t~-?U!?)KS76qkOh(dprF`(IVpi06j zpfiSz2LON!bBnKRppoLQG_D9XsxQW&n@0oe<h`W`{XGcwGvYOIv`*?k+B&w1TET>H zJcyz#h45{+0R|!wA9o=$gjf89;#wm_1N&-9Ab+~~E$<rsbK}F_<^c#OzfzWmry2JS zuE>^t3iu-OYk>arXb^Dk{nvtsuzAy7{O*5VLEg*Zte~@)y-JTWWsY$29e6%3n_|)g zD`~>&GGQOES++~S1CbzJuwcA*#l7z{E2|3er$4?<zy8(V2Ry6f3JUluj9Z2ikiri; zZ;G*oSLiuSD|O5OvW>|@<BZj2n1*$&LX(W^N-kGlZhcHgM}q_@1x}ea8K=yf3}!|; z?PB+?Cfc^`5N&<)kZ#!C1;<gu8juFTwhf**sfcD=JPs$FR7K;)7sE6qVc?q}K!X-) zg~bI{ff(^Psa+x_1uBi7N0z!*8vqb4GH&T9K_3?IAO-z}vKG)^8Z)^?1i#<HjG5J# zF|!)DeAuY)G0UFFLNWrS#=k?1Py)zcR^ULDT$XC$4;y8d$?DK#<2${&Xav0)njk-2 zvfR77^>L2Bmlc99Ag5blaf%mX&5DI`0XM2+?BWrX;q6*sC%e2~dEBg095p<}9i4Bu z^T<Rg8B{?ADutjb5M6H<qlg576<FA$O-tSgc=x}T5#YIeu>Do{#=Mh^-`OPsx?OYf zkUp<@l{ai0)5sn;(Ax$(KV{2|9~%Mrc5spqD#g^X!TXJq;s=fwFvszRyqjVyMl_n} z3CCsGRfFtO`Ac7!0DC~}Ewy^2#pe{m2$_}bI%-!6%PtmY8zF-9(`jB58{*sa+s6W6 zV`C$a8&~zgbx*!Fe&(!7Dl7^Q>4SP)JMAf~eDoDw^Y~_B#-)vojSa<%glXl;&5^lA z2??NUi`SKos`n?~V(+-ZNhOPfFoW{-qSMS-WCHQsN+<TJQ=1?6j`^%kO-;=wiSPhG z=B(M}eDS4o>BJK&;qzM%f{qZ)VJM~1(H_HVukFFwCpMwIEs0zjZhn1z{lQ!>u|F4{ zYMv*oY<Ictx4oIotG#Wbil>z>ks+%<9xR+^<U;`Qw>>X$P@jH0NXQ{#5`eErLtLp9 z2bmc{Q17WxLkePmwPv`kg7P$6H{0-n2p&KOnfX2d5BB5-ix!fwL&lQ@HO8gVPjEUI zU7NjY8&{6O8#i+Dpwcc8yCSm;9|(x=QaZU$FKK$*U6+3ekp?4n9By+>O${L%iwq*$ z#k~|jQO-oq<ihU_xd=|Wr-^>Sr6hb|F$b=g>bh#J6*8VHoM)Uad_C>-yl*r<=H5AW z5mf+XON>c&nb;bcY4{+3bdyGGySi5~|5va={Ff6`_atNbpV7xT^G-?l!iA8&i1Gfw zIC-DHOr8>b-Tekhx;Zl2C?g~Lwz<wt-o1^FxnCHiA2k9JmKv2-fp{}A$B2*ts3fCv zlWK^}k;TFyayrzORFnF?)1_87Ju>=^uRWt+DVhGTxF9&rxX)iMPlSYk2I9LFho(pZ zW%~!lwyQfDSGwOG14r`kGQkLnzeQ#nvwE76cu9uY6PRIWw@WuB52;_Iqv|K|v~EeP zIlib;=?V(i1#)SiLf&Z=%M<%IMq>r2w1(jqi0@EtvOzCyTIK$6j6CVXkD^6FShoDn z;3RQ}f4mfKr-oHH)RI+6j-?valc^SUPrO@gi>*C!!UX_|mI{BMSY8_(FTZ3JhzY$_ z9{n|g2e>hf*js9sli)L2S9{0ht&Xm%>@s7r5fo1c#?w@P)yPJU&cNx~>i#j-<gMs@ zijVjXm9oo>Ga@sL$Lvy3G4h;@_E)?+9LM`k`;)AXcMYSqNFob`h)gt|&YNyrFzgKq zNbFNO)xa;Y$B(e)O$;<>tz8yi0eB2D1&Lx3m_!oq7Z#mu1Zj>{0H3c^f`)NxRFX3- zuVji_SC8)K?5I;To$IvDyOHYw3_*ZSGu$L2Fj0!&1e~KioTD=gm0`|ip?mw2kYR&_ zk02~UZ;fK^Xbgd1Mrbe#q*<~%TKLB#N2NV%A6zJ#Y1OUq-P-Y$Qn@r(N`Fs@3c<*u zp&2di<875<croU5E2rG3eqJm5C{Qi#2u_q|_6S1da7sF)M%nFaY!JW>?_~xPfuNvc zyVctGA?JEGh3<401<gHj1|%*KCY?hjrU;wD(trs8FvBCjRSqXq8oSxy*V)5!n)N?j zms_H1v)y0|meZfysPXZ<X~y?uhyv^)o?@*>3;URayemFzOf5du+O8eW#CCX}k2iWh z?|5qXQ=LU0Bx0Kct86W@QqYiE8!ov0Pe(pkR(_Qn9~x&o!3t{E{h0;t2_L*<nJAoc zyKj5t)$-(b<9P*3NtQ1+E_??g>hJC-S}H=O5btN=?T*riqH9KfCiuNDiZ2tEWz$qM zB(60Aa=F{BpHD@-J6c!kj`s?T#(Mz>+b72RE9BjFv6$&Z^|tWG^+QfVug;`(!&neQ z@C=X{B!W!@0l@@f0TRqY2uLQ7&`_QtB@~omtvN#+`}484Cn&s>q#YI&W=Jfw3&r(T zk(e$0<Yxt)JjjRKlqmF_r=#iT-nmvw|ECBbZxIBUD3t+<7-6!Fe0fTsTFzBTz9-YF zH-|o|f9WRm+Kj7PdU`<*kRFSP0FqLYp9uK`Du<x)Brp*YQ^~}5VNr!JP(&65NMzH{ zIr&Ef2ynJ2fi;v?P}*Y`E|TGopbH+F*yBTByv-Ur8N7=%w`%5YX1MK7Y8_roWLwCy z{qjt!P~PY-5oZ};iVSM(Eu>AALSUTbqupun|04hZ@RJZ^Pz9L?^(rI*k|7ENLh^L~ z1bLd5;QKSJx;}V={*4#stzbGy7&u$lm?!;Wyb(mu2$B>&B4L3@_Sw=z$D#0ea6l4( z2H0b07f>l?FTvW2A>+H2Tcsb}{t8iU7Kp;Zhb?*^O(5Z;VzOwWY0}HN^IZRr0F=ej zGEgZk@(-7hA^|eP6g0!~Y@Q&`_F@b#sUZUdBPbw@K^xoCpG0T9P^B2`f!Sjym94?x z{+q0OWI=Y5NPvU^kRT!nkdY-O5&+o*vH`L{kdQ_g0W%~f2%C;fTm(oPAz@%TNw#ow zuT}m3KLL;;QwXXe14nGAP7*L91T!MDQMiOgCeBc4Xq84nWw@DL>|+;u8N3%72blQ~ z105j5S?Cl93?hOcAv6hQ$Q~7t-6j^KVS~vJAPk^_2os5Dp77x`tB^{3r9#>fam>9( z$b>0uI>nH(yx<bGJG%Z~uLk~Q1W>eCkRe4ONm>d)%Sj&FK?yPdGhe{W2iO5SojQ?f z;=gCQ^-o+^ZRmJ{$ArTQ7n5Nb@&iTzP772?VMc@&CdA?D(ncm=l4h7Lgce(6x7hAm z!M{?9A5&U2wm<Q&Q3>y=8<>BIAfHKj!V-&x54ZVB#cVS|md-Hj;^BjSBgdbh*+I%p z=oYtI*E?POCoiF2ax%QP{c)WhYuLjJA^bK4rB75F0Xp3biSx`b%`-w`oU|zbc@*-1 z0Vk?K24I8)befTA)hgYr_o@_rqFjF1b5wK3yC@mn6#^(-B1~b(8foE6c8U0)uR{2Z zU{-H>Nez_%tRewA3<_C;b%s-3OdoJ#`V}|M&!`k{@Y4EF+Tm39lkcuu6<i9k4KhuG z3Jf2eZ1}}FW}Z0H4AXSOPeo*rHKe0818$6=(hR#$^btG*UV@Qs)NZ<!>ve{|rC9&D z_3`6-aol@`07{q1u$1yjBaAQl$B9XHq3C<RB4>lXsRpghAi*vZ1JgbVTBSMVbm{|6 zR6pk?^jhWet4^9b+zfm1KfE{m=m8PBMUZxY0>Tp2hM#I=NStYfXuc5?6NF7+k}y<? zo%l|*!%HA!m(qBDg^<$UXGF3GIPIE~2X&hl;|G+|KW<sA+Wt=wK<QFZAT9A}t3ccy z7%z*=JnH3z+yZs-klydb_~$YJ3QaM-V1_BIQaa&u^V?2T|Jh6MdN-rDsFd#RScm_U zk-@+RL3Wrd%ccUuq7w|CI766pwi`p#iR&+uVow<2Mj4_{2F8gpyGT$kgXnC9Lvp`L zIGy+vJNh0sr5f9x9$WP=rUX#3Oy(J;xXCJ@+Q0-^WQO|+H+33FH7Y07q@PzQ+@&40 zL4(+`#ZoeP9D|?t9KFNKAQ^pXs6kZAC<HJmXPF-kZU@<dp}jqw8{SJJd<n>e5DKij za=N~Fsj#JxXG)vC?yI2F1C`R~J<-cqLP+dW2{+0=Rj&Sa%bKy12xHSud%3U-A(xnW z^qt^DInj#ralA?~QU`S^-K<xt41dFM)voBeW3zZ`8DRj|0=OI5E>wqu+e5ZJ$1MPM z=H7qwe_|9aCSgi>vb5<gUnyN07%wg1r(TKRL>cits!hfCtDdJHYJEbb|D^;_xLA;B zh!YII_(5QtxWHE-j2^>AJ3#WFa?*|Zah2h(c&v7}uReD1mFuQ69l*^1ZUk^NFJRk( zY@?b#)DhzNKQ;<46~eT{$<jx4z6$Zdz&L4$oRiEhkZx2uaez1I4BzBB-sb+Ne%`e> zK<N_cla{#7Dx|wZlVq_B<<560Ak(UKVxQWel6;$+RvX)&8lK~GO}MBhem6qn906cF zfN41T&`Si_*SEd^3{L<#!s;<Q^*hno@OVeZQ(6OhOUXj9NM&$drj>sXnkY`POR_eC zf4mfC0iPDzrT&Ue<F4Xm`hm99@6xNL0ibNDQ7--T-M~0;rN2s=JzTGnjQDO9b=vt( z&ruJyKA}@1AYTG_KeFAIP6Mz9*;aI$kZmouFURR~0i2innQ@fd-xJ_%NA?AX&jEND zz%FDP7*5H}Rg;_FhiqemUjjJvULu6>LLv*okOuOlB|c{t(Px5_WI*QB0((I6pi;>L z{FHL^%`I!ZhIf<z@)r^LOgYmCil2uji&L$lTv@jUGVPiZyY=fT!~d?CcWTXDZbo-? z4GL=Hnk-%n;C2k{HK=k%Tq<`xkdsoQQB^uOXFA96zTBMsoz6}Gj{x`)fbH)UyP<HA z@cDw`=D;}P^F|&8S+T($f+Vx}$i7FJ;Uxi;L=%Yr0*xkSjxnPf3NdEHSR)S2F;+-G zBcWU*J*C^**XTGEFA{z-;1?$Ogroow!bHf2LHQ(5K!hTaC=mt~L1H`!oMr?mLKZ>f zk|YoWA}EsZ;K55as25W$x;7E_-t1pAo-^jI0B~zgL<_ukMiSXKgx?Qf!+V7YN|sZ| zUub+GG+BPu$P;<T^kp9SFKa+0I1}HeR%hDP7vo*(099OJUK6O4U-eheB(g|mTl@E( zVL7IVH+yi?&FUY?2JenUyMCo}UEjf!T1F9okLASv<WX>SF3$&rzII7H`n-p;k9Tet z*%yd^55P0;6*sc<a*^*VlwS-@GHx+K6h2O@ai(22rw*!nQl09-)>S$I02EnDA`lSM zeZ}%lf0bM$0~9ze^l5mRHuXmQkoWauR6pJSlteAV2jJ8kcg?}E_wZ+ATTH%&Y+ugT za&|&z&h7Ifd$eRafU}XU(VcW0MlR=6#eXB)5_k7|#U?1ZToeQf<yS+KjZexT9n;%u zv;!}FNNr3tsV^iG>hJxltoq(Ey+VYoh`h#MDQoQ_F#+-z#4|%X9eQW-kau^gQ>|=$ zl#|04ekQWr-7Z7+mC7@6L7gKFCuhw47{F5il84)roPjwxCv9%X5yp|$qLA%k`x3H! z1z!dbeJ>e=08n~`DDoG|Zv-b9HyA<k9}PLXaZV)msoy$L^`FT$)jarZKQz$)Bxy(F z3}3OlD>zPmNcdqN#Y5Qb(hbRjUR@@tes!c{K{@v;n6v&r1z-^{;&T+TP3gZ6;JITF z$+e7904o421W<68Tf2~Lj<W{9fjWYN_wXpYN|gDFjk|*r<c9~pX>h={C?M0UJCY6R zi<y}EZR@JxGo-@``{EUp@6R_r78obLXcvmo!wGCJ#vO_M-j7o4>W3|l9(}cIj#EF2 zY>VaK2(UQFb|1TcECV{9iRRm>=8$jeJ*6tOMdTsd-mMzhR?bDaI6?ukZKCbNz?K2f zmQzpBTnPGL?x!`UPTczX`Z3G(hb{(%3dMv#sr*`?%D7zkhN=UdVq~HknKsTi?ffOz zQ$K1S;e`Uj>d3a0+*P)W|DYXxqe^k9uT((zhT=daIhH!)J)DlJpB&5P=Z4G~aqbb^ z)Bpf~EhBNPB02Xa*C_x#l>4b63;74uC5_TEqNrS&K%)pE^|oYA<?Ki%5L;jk2=+n4 zg@8%9-#ve`h6_Own$jS_V9G6ndiJ`v1!VvJzdHdui)>H9e=>9YSeqlq{{ZHNdY>Tr z7LhUomBv!?<=Wse;C5?h7qCkt%n;k%DfMY2#4~{2a?}J+vPfFOq!0VbXsWMFz>PCR znqh|f%Aj-x$yB3yG8I+dkEeCZQF6V=an<_(EYBHh`G>LEWiDp06Tt6sNE~s@n>SAq z(fg6@TmF8svd3=-672b4I3@5h1k3LsH2ztHs}m?cvjUx)rqjWv{BWKvMq+myehMSS zG1w#jrv88Xhx?5f{33*u=q8`vk{N$nNc!A4+Ul4C;e8HZA|hQ=Q*#j6{)!LQ*ViA_ zyA%@Zz;dzL$&7D+VEZfOLLxF#O)8^Z_=6K9QMRrTRw+&N_R~j;7RfKSuN|5@7#8tm zml-FTd17VW338^9N5mR%J2c#GcKwx-Ai&8(>X}rNSDS2B+q(XI_=BIhe#(^qmgJH; zGjo>v(fAvjv-lrJwg=-|0Gz?npr)qg^c-hJh)onO4CAER4#JA;%h8eQ`%M}o`r(2t zc*zoUzBv<(e+eP^mr``Uk{o_x$LhD}hMiAv3wAS%B;^3C1Mt=Q`ud}aK?E-%3KxoL zR!H6jAmeoNb4Gyf&YLF7ja+En?PPSnrQY`9`m*NL-j*XufP#g>5R%Te@@TU3XQKhc zfJ(tjHR?w)QGJjEO?MOO+lhqQ7W?y2o%*$NR{uwH0ia`X0|~%H0G|PHJ+e*rpRHxQ zf@~Y-_GjnU5V83=CN~0Q!`eRwtlB|xKS(Bz;t39n;2{*B+K7U=1?awb4i2m>MC`xA zSx57o7>XdGVd&^&GRJj71rADN->!0h&VD$uBzT%R0ku7{SYJy38ze$P%8R^iUSR}C zKp<N^9maT-qVo$c727+W8fXg)agPi`1j)p?Mwom(C0g1A+&Fi!hc$_2@6Ke4dqpCu z{&}=VzH=>Rp9gRUvVHK6C%__ehS~I748Mo1QGRWPtf@|_?CK20-O>rKW+TXG1#tAX z7qbB`QH_pGC!=ZoctoG|gWpMiz|>GB9S~D?Km~fcSRMk7{gpbMPqGtzl3h20xc2yY zC&sCs5F8nRl_z{;;#_GC4I&MY0C{H;Ns}sspH4CYxs$jIXop!j+@KjdTm>(F97T(D zgj6l#FS+2&S91FQXgky@00#i91@JJk?;lF%q(lD6w{2aR{&2zhR(=AhJw=%Ol7-i| zcVYMcT9E#ekUjikLU2A95{0ug3QzevNT$Kc52tf7S~pgr<4@ISd(MTmGYp4g@E>nH zk^aB-u06=os<{8U&-cFf&U5EIyCARxd1ycp6*UM-5Y}}OL}UKI@{!UakcU+gP32*g zsVG_$rKU_w#VCm}iM$k|fhdBgAmSG9T@YAy+1;7hot@`>ecyLZcmDY9yp~xOmR)9` z?5bPmkEwg--tYA3)BWr2U$@LA3lQXxcm@=WBM*0iy;-CrU=;ntuTGpAQaoHWFS<6v zl2{eqY-_sLHMQjVMeCDaCNcq?C@Bw@&z7m`?aNHj008O&!P7ntsfWB446K05RaJF| z7&rc6#`#`F$Udd`6@X8-%-ls-n8+h2QnydE?)kZa6cYfhZy|u&uOhe>sB}yVQ2GF| zoD}!%ivb|&t>MJWGQ38LWQhf1T6|389(LZN*!I6Z{3~YBej=ke-iN*Sc3|w*0QD^s z(8d%%gmgWF70A>Ft0IFBhD8RiwHh#G$cVsXkpf@{QqmT~jm|UO7!=%a{hs1?DuP$F zWf(4Js00p%6bjH?yUO}-^~DouRez|OY?5arGuv!kkMhbzVGf6YiK*MxbU29c@BuA= z3Ne)WjG=hW{Hp?DA>wEP^5U`a)&@QT;IjZWx6JtyC}vYV+yZ7S<|uOuC(yPy>ys8Q z{l%@M($N0?gx5WV$GexgKOEyc+k^gR5;V6vq}O+$e7_G=bL29E^f*St7O&JXQb)*z zkvYIBK~-BiDe#!!vmjuFZxoSHL`D#K#Va%dCV)v_^7d;bYO3g@imJ|a#ueF-kQ6-( zBH#cPz$lo2HW0ie4!S@g2O7?FNJ=08o(AxhPbug*;`{x*;SLmYInF~ditdn(O}y10 zo`0*t^Axcs=m@bQLUb7QL?NWepA}#!3_y|NrGHrJ1o~=J(IEnFN%JbffV2lNNpLP5 zR;7L+;LcTq-2napz_~4~|4sn2Sk%s`&LC`hh?aSA#tS&jD^!S}3b-W~b<qP2C6Jh< z3gGSMMK}bQBHho_D@cV(5MiyYY<{Gb4;cBB;yWnv_iupGr7jCD;vkFD-}K>}Z-fYD z4uB}E=FK}CUy;-&Llx#ljnPg4K@R8?>(bC@sSluH;drM@wV@UrbIRj|AU5bXgf(sL zv~Axic#<v4F$3U7AG+tLpO4?QUh5$M01pI7L_t(r8tyu^ewJFoH=k<5@8%ZAv}foH zEtqw6P@&A-s7k2i2HR(SJTMVpOZD(Dsm5;u5vYR<4VZAji5CmFTx(G5%JZd8{1OFd z)}euqCtU-(Y(oc3t9^?jf(fb5F&%4(HW$@st4AKXtUCkn)aZAjv$R7r?aAr!9X@Cz z1f)1w5krR~(c{}Jtu0%ui7b_T2d2XDIjoLYYm+lam}q(!srh(v*29xE#*Cw4<_7@? zRP#X#s;GLqJbtmqDozMwXqW>GaX|AXMN)-k7!}d6>JOhw0e%84zeh(k)BEj=o*Hz* zkXLYf`6X2HDZDxGa5JzvORY5ntS|b^86%Xw$-)Ce1xV5mrHO<l#v<CfGXOv1gL0b3 zi3k7_)F&Wh)v|$h_=<`rNIa#0=N+{oC=zJhlAE<8Q#sSDg=q@0Rj>m{b)JEwa8qN2 z9mr81s$;gNhGr>6YAg(hoGOlfa8SKnhu)~YW+PRMXWppLoy2&Hmrxgnt-?_OY)zeH z`k;!A9ux|8O|5$#ew@$h`y|zN(;`UlE99|HZ>N-x>$`|c1e9|pKizkeG_Z=rv7iyB zm>p`s8)Degq!rBzd^J#2gw}`O^eJov@al%VrUz~^Or1d)gBO&A0I+%r3B=b>VG|1p z6*kFXV~0kZ!iE+ZI~W3TEd0O4t1e;I(?hmFy%$p@?DRgK446NYOdE|cje>Rx<|?%{ zQ)JUxQ;XZAskMVDz~rss`Zm#Bwq_o(RXx)rh3<P5hF8|(*{823Yt33HviffKIlLF& z-gkr4@iG)8g{1<ms|6{%wr6kDp{@d1j^y;Y{J%rl{3Pr&mz36;KMp#%9{~An3fmC4 zOksRNKC5bH@sNn#weQwv6ALbDcXFqroa(jBJ^DJo6EXXMh$85OA9Q%HHwh6GLI$5E zQfn^O|Jrk%t_~%jRpsv;G3mOPg0PK$KN&Ee3_5st?st1_1QQ!%(*g@cb4(kO>9=w# zBg=ixvMM@pvpA=EV>YFCrF%uQX@RRLqFw`&%-0KZ(8)(7L*A8Pr`gnb2}P^pSOcUl zA042@2H<%rZ~G>AahcDI`@PSE-RAiHO%3@#*v(*{prTL1=r4<jEXyFI2l^+$aoRA3 z_QBzTpp&DZV;KSm0-1=q*x(d2u)`d!Pc*mUC5KuD2L~BNZQ-dr%hdHi2YMdqMEgVq zk%k~2u$}`^0ctX6MOIH4VH%)otQ~!iu0ik5)}Z%SUGR7LbI)@ez}H7cMh;jd)%k9i zQinM$?)N?$^_w%uJ3!?#0VW~@-Q2|<&g2}=B**IZ+SaA$>auU{d@peno7csC<}Z>V zQ|9M_NEsZgF~_UJ-;31-Hp*?2-(NYV&)2_Ut$g^S=kSj0d$9S}+pzi9+c7!WfU{a0 zG!KxnAn(tSt;x}BPmz^#G@=yX0!MwJSSKlg!SKW&$O9y`5W#GKXkV!Qhz~Q#pp4L> zr$Q8Ya{LLs`ld^d=MzpCr2FoB3jhACdq5!7=fGGh8^CdgIU(*fSH``3CV5MzC@s4^ zK1{OKye4SlYwNq|Uk5%Q*VO86*BqnDvlO7`LQbM~^M}c>`P-m}2Z#@DmWV-7uUW5x ztD*KX+TiY7DN+Y!LVJ7C8dG&FKJu}`+jh>O*~~FIGKn2K#__~&M)26yQA|!YkTxyy zT$Xps7TQd7Nua;*qNPx5F$1Jj4s_kRPMmP|pdNc{KMfCeaeGG@#t?{@(TW081%7L! z4iy@(tR(LQl{)ySu*dvK)NjtE@C97C1oAqltCILv_@nMjGsb@tT;%Q;zh1I=1t`4- zREf=S++{wStTXR7r5D&BVnA`fIUb6u0lK_>gZugPExKxucVif(QiNlV>&LOj4dCr( zpS%csEjB{6SVaJ9Ez)L=JTH_(RpyZuV+{PjAn<*Jkq2(!t~`&w5*4A{!sjntUzjAn z2db>$zNpiDBIz?1aYW@q@;3tb@vu3=tMIqYGx%q7F<mo1KrShpx5oYE>Uhw+hJr)O zvcZ6(0dtB1S3__)U*PVY{2zT;q+f`r)epxohT!{*I1Uf6fd^X;uatYa61ABRC4J^n zlThdWR!0|EBo!4nxEAegrWTnxZD@{~IGt6CS<Nx6mbzH^U0%lqG9jCD$nX{F;L<&A z3k*fX2w)JfA&(4vFnnSdFbokqYGs(_%;ns@Neqtr%&BT|jf#Gv{d{--^bcOr<iRT{ z4D33e4GW*{nsiEIRDK~lWIa5b5UydvLD8J6LTK)mJliMNij&W)Vy_diPRO!C1S&3v zia>3qSWHyyP2Hjnu(tuY4FK9VfRsRFh$10!Ug6=ef>p?{;WB|Q_uKI2rB`vp5f$Uu z9gyx(O~>_VFuo1dN#uN-@8NO4)qcDGhb9w05Z89T-X1BoxdweT9^zM*)|q*>HCI>E zo^rG4xc+sX%h$%g=hCHFiGvyK{Um)HNFRr$TcNebRO(wG^+(}qTVU&3HLE=;)o{Ju ziHsi1XYe+^OqHOGi;$y}$*)jnKCLIY8g9*V_uu2+Kk`uV;NTzt3=z@0#ztp2iW%$H zt%2`*`zgihTCEj4aQ`-Z>zhAAmO8NEAF1edBO@d8*JjT~j-tr>s9)j#Xgk4sZ9Kq4 ztvab}LNNQ7JeEz#2lGt6yYKsAU((~!ccHhAeg10HN9UK0HfAndR0}kAJE`x~`=zN@ zxXj(N_ZB(gQ9)}m-&crmt}6UE_VlDv2Jpr=t*7JG51_ld4ZhDH;zPXK4{cQioO76& zX<+-)d+_V~p2EGqd|IccnuH?D@ECy0RP~OzPNA+%Y<x0jn25fdtff=qfrV2q8BpKu zvgW8<>oWb!*o}7YirLHFP3$w9i%mjbDjm&(QO~08p(ap&#@XhW+%B13nW=kl;>IKI z6rOh4X+%VwD7uQ?PlPi8v}w_x0?%Vak%zXn5W{ObF*wwTuI@70+7eVM5uzwW7<%x0 z51t{gF-ta71aQ{EIzg7^Xf$%vYE8_{G%z_)#puYC?$|Mbsi_7U^?cFzM^a;`sj3e< zr`G}aE`S}28$r4^GJA$kHX(gJ>Z5liYrO@^I04eVqSdEmtE<c9naCXzH@>)ob=WS< zo=v9P^Y}AfJAJ(TDwFu_3sI13DjGYTZI0>BU8aBOto(BP5X{wKun-0XMa-b@^U2I~ zqKK{+#nGzT4@I{sLO>T2P4IrtYOdO{HAP^aup%R(NmY!g>UI=`u3G>+ih={FuBvYH z=FQrEKFAmjnaHFf_1Rlg*KB0Z^Y}Cl>2pypzdaddkE4ZWm`^KePrJ!%O8?F}`KR$4 z-C;?|A6Ad4^8%tEFzeW(&-tD7zS7Yq^eYQAsFDHAQ74Vvy3IB8i{kV@o7T+)KDT>J zuY<vusO-oZTF++H)$d&GMO@EM+BXn~F;zUDU+pDyp5MXe5oowE=C00X<XZOV-6o+c z<3U~@^%<U{gqtIYtZ#SKY)b#p<#N@Y8{OW+`Q46)%iOhr$@6)gG4xk{JN-d&lu3e) zg|Jaw@xvNBCCw(~P8D1m_tVA6pn0c?*7BM@o>%4Wye>a;sXpW~9c$LLIeQCU7MMck zMlyax9bQ1M^-H`V=;X8g4nD@jR3Zb00_nI^t53>quY$G7kcs`aMPaoAvMEJ<hnvc0 z^lL7cYxdma_8f`tdc<R<-V04PGk?q^ba^t!17RN%FPaRXIgm~W(tRSOwT8U%e37(5 z;3U(At?7uJm51`G{M6R<?!2i_rkTu4-?Z`^KBWzyAfYhysox9uG_S<x2krD$uZ`Dw z5k)Y|JYxaUaREmtI<DtCuz+;TNqx6I=^FY4vGUzL-*Ypsh@iP=BL~Lt>E!d3eh1!> z3~}tY7nJELMPECi7y@y?Z>3Omu&$xAc2=IsXXI{Mm!IURJ|L-%rc>IS{?U=O5~XvA zq6)=9L~H$o-t1TS9KVfU@0Dqo1B#zd6^L3O-6uuv-XmmFg2pbHwKKR$tbEDk`sm)9 z-Akg}D}tKzTxiOM`E2%aMbN=-4*Mu3pCGv+?B;@c?)i#9BuCR$Wp6&Ck7P4)M?Nce zy1Hy>s8*{tA09uV;{po9$ea~+@rUC9exu(`y}aB^faf8a0kxeD`LtGT6+c!hUv^gS z-upfGl9$)5IBeFv$;2MhsqE7yqCUE?e2iD3L#dBcKvKAL-0f_P$_?4H{EN->H>7IS zLNinJ&K>MyqO(A;A*ca4kH`;*S=1+@m<)P2;J5e*J{YdyH-u|AG4TuU>v2uB)hFF` z%{}f<$F6r{EBX9a4Q|?Zk!g>6&6mo@m`gb(|9S6wUJQ?NnSz-LGQ=jtr7Dsmm0as; zQB%Q;DrTT)s%i#>6dC%$k5C{0$R|cZ1|4M3#y%zNBQ^m76OiE$#32#;1Y*Ehg=;m+ z_$2~|^t`AqZB^^lr|cJ-`|KC?T(2uyRO_u41<0&6gH*S=91V^SQt04-ysF5j1tuo= z6@uT!iyuB?fjF`RMbBbOp$9t=^c=@yZp^g+YzPQ|d{%X4x3h4lhJ8$7H<vkpccAxc zj=Eax5?y&GcGV~VRINBXA*oJ7sq(D)IE6|RS##WNN%zUW<yE~M84?hkOa`ZuM<=n5 zAr7g-M2JlY!$C1fk_`cKv;XGco%yn#r5d4HIBDvNws=XQlBu|+=8~b|GE8WW9cuLv z72Kzy4?(frsm|I=tUpbm7xF27g+Cnk@J7Frd)Z&23@Vw{#bG3ul@DuIjRNE;M04HY znmVcuL*%u_x#q~TDcPBhyBpGJy;d4->(~uTxI2CU;OhX;aV`-B#LV#6P)v%1h`I>W z0YVv!PJk*P#00PcLWG8@<^-f#@C7%ZT2-ZKs7$G%CW2J0W(t*wgVr}_6OdoEorC)t zWBkb=;ZuWl{z%Zn?+V(v2MpF+XEfJQ*p;u9SXH^xzDvwtso(o*GQ=0S3^VCo_v36@ zzhP_c?s_KGmwGbTVGAAK14=wjf|yS?3ICC#Xv?c|+1T}V`)?Isk*s+)$9`Zgfq@l~ u|4XfmPu--isD|#+J3xL!T-0H#y!=0SgkduNC{$+v0000<MNUMnLSTYc@;h$; literal 0 HcmV?d00001 diff --git a/img/install_16x16.png b/img/install_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c262353cdd7eeb3a9f0c89dd03e747991fcaa27b GIT binary patch literal 3155 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 literal 0 HcmV?d00001 diff --git a/img/install_256x256.png b/img/install_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..052d56c047d9623ce028eda6d581cc0dde7c7d11 GIT binary patch literal 68721 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%0D#s!WUBlcYpkG=Oe6+u4PkYk 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%0D3@-_N# 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 Hu0mjfc>$3g literal 0 HcmV?d00001 diff --git a/img/install_32x32.png b/img/install_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c7cbc6c289ea0acd6d4f804a31bd57cca65d55 GIT binary patch literal 7103 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 literal 0 HcmV?d00001 diff --git a/img/install_48x48.png b/img/install_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..3829d100f57d4160c4c6a6aeb35e7d0efce0f9d8 GIT binary patch literal 16241 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 bL|6YW1I;0+7G_Pv00000NkvXXu0mjfv3DM9 literal 0 HcmV?d00001 diff --git a/img/install_512x512.png b/img/install_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..56e9c0ec5d9811dc9847ad3222196ef30290b7c7 GIT binary patch literal 171015 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⁣t^Lw6~-uJDya#dGXt0i?Sv=T}! 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 literal 0 HcmV?d00001 diff --git a/img/uninstall.png b/img/uninstall.png new file mode 100644 index 0000000000000000000000000000000000000000..a445bf092be8335306385bdee377d6bc2d27ca11 GIT binary patch literal 174513 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%0DKR=L9Jo%)OAE?WCepB@~4G+ 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 JPDHLkV1jF`im(6x literal 0 HcmV?d00001 diff --git a/img/uninstall_128x128.png b/img/uninstall_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4e5ef784ccba66f461b2c5e665ada62f17ea7f GIT binary patch literal 32391 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 KMNUMnLSTaSe8-Cb literal 0 HcmV?d00001 diff --git a/img/uninstall_16x16.png b/img/uninstall_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c0134adbf5ed98a523348d205e8ec2213caa54f5 GIT binary patch literal 3129 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 TO@8Y~00000NkvXXu0mjfj=tst literal 0 HcmV?d00001 diff --git a/img/uninstall_256x256.png b/img/uninstall_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..997be7f993ae620701d78c56b43e31ed65199eee GIT binary patch literal 68400 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°IQZA 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 literal 0 HcmV?d00001 diff --git a/img/uninstall_32x32.png b/img/uninstall_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c01447c08d858526883137584324487a2bee3650 GIT binary patch literal 7104 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�q$`i_5s*;Tq$o{dudsG7t<CNWxIT2&<>B{rtjo>3kmdETzuN@ z@7bE-p_G6a+zXZwCxrsigXvn*;hh`YRH#JR;4fnL=T7188ZlfEf6+~R(`9-pM{nsm zr&}D&>dOWIMKEwr0TWCDk~~GgRXhli3_zrCN5SF1Ha{C2FT!KhS};sb$Hnrljc%F) zfSN^ZOe0nI(R3bCKPX;I-`~I5={g;NOGl2UF|h)#voF#5dGkSPmkH5fBy`Jg15A+Z zOKVoNKWr9;a;>T5B}&hTK7Gr<1Jrf98VZf(Z!v==13;jd-Bfn3{uf@nM4!ww40HR$ zbJD{sMW-p;&sIgRR2Fos^Tf#jRIbQL<45s=f}H5}1M|b+905S;0ELeG$L38tni_nE zh(Oak8|OMnu|+y^u>^HG37I^Bh$5FT%ATw)GYZ%vcDH=Bui3lv$lsj)<8>-4D|yZN zqpGvA{BtyoPnSTxu5qSmoID{s({!X|I(<xGdpy^x-Mnq*`i_dP?$mPG&1Q$ZtLqc{ zw?}J*JmXsso6U`2sdBp(We-3?Dn5AdP;Va<ucTVsb%$Q|`c7w8xR8hah5QB{q8~Dq zDnwdpQXpw{iRFDw-XGf5yVn2x7#$n8^%^5zd6zh{q$}ZB06fHniv!Y=DG5l%5nw7s zNx>-LK;r=dDPT^oSkt)NTzn?~{M!IHy>cH@#2V?!wYwj)ng>ubCGve{C<aqOQn+d9 qbiM0Zz_E5Ky<0EyEcm|7|Nj7S&X7VY`RJ(t0000<MNUMnLSTZ4TbsoI literal 0 HcmV?d00001 diff --git a/img/uninstall_48x48.png b/img/uninstall_48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..db091b3510240757b077889a12da7467cb251173 GIT binary patch literal 16056 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 literal 0 HcmV?d00001 diff --git a/img/uninstall_512x512.png b/img/uninstall_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8d2d124ed8656ba4e50abb0dc0d79ca814999f GIT binary patch literal 170342 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≤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%0Aq+555(@pQ+ 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 literal 0 HcmV?d00001 diff --git a/licenses/LICENSE-AGREEMENT b/licenses/LICENSE-AGREEMENT index e1d820cb1..02abccda1 100644 --- a/licenses/LICENSE-AGREEMENT +++ b/licenses/LICENSE-AGREEMENT @@ -469,52 +469,6 @@ DAMAGES. END OF TERMS AND CONDITIONS - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - Used libraries / dependencies licenses: @@ -546,8 +500,8 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (2 of 41) Group: com.electronwill.night-config Name: toml -Version: 3.6.7 -POM Project URL: https://github.com/TheElectronWill/Night-Config +Version: 3.7.1 +POM Project URL: https://github.com/TheElectronWill/night-config POM License: GNU Lesser General Public License v3.0 @@ -733,7 +687,7 @@ Library. (3 of 41) Group: com.fasterxml.jackson.core Name: jackson-databind -Version: 2.15.3 +Version: 2.17.0 Project URL: https://github.com/FasterXML/jackson\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -976,7 +930,7 @@ from the source code management (SCM) system project uses. (4 of 41) Group: com.fasterxml.jackson.module Name: jackson-module-kotlin -Version: 2.14.2 +Version: 2.17.0 Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -990,7 +944,7 @@ Embedded license: This copy of Jackson JSON processor databind module is licensed under the Apache (Software) License, version 2.0 ("the License"). See the License for details about distribution rights, and the -specific rights regarding derivate works. +specific rights regarding derivative works. You may obtain a copy of the License at: @@ -1005,6 +959,10 @@ been in development since 2007. It is currently developed by a community of developers, as well as supported commercially by FasterXML.com. +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + ## Licensing Jackson core and extension components may be licensed under different licenses. @@ -1024,7 +982,7 @@ from the source code management (SCM) system project uses. (5 of 41) Group: com.fasterxml.jackson.module Name: jackson-module-kotlin -Version: 2.15.3 +Version: 2.17.1 Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -1076,7 +1034,7 @@ from the source code management (SCM) system project uses. (6 of 41) Group: com.formdev Name: flatlaf -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1294,7 +1252,7 @@ Embedded license: (7 of 41) Group: com.formdev Name: flatlaf-extras -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1512,7 +1470,7 @@ Embedded license: (8 of 41) Group: com.formdev Name: flatlaf-fonts-inter -Version: 3.19 +Version: 4.0 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1729,9 +1687,7 @@ Embedded license: limitations under the License. -Copyright (c) 2016-2020 The Inter Project Authors. -"Inter" is trademark of Rasmus Andersson. -https://github.com/rsms/inter +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: @@ -1830,7 +1786,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE. (9 of 41) Group: com.formdev Name: flatlaf-fonts-jetbrains-mono -Version: 2.242 +Version: 2.304 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -2896,7 +2852,7 @@ Embedded license: (12 of 41) Group: com.formdev Name: flatlaf-intellij-themes -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -3142,7 +3098,7 @@ URL: https://opensource.org/licenses/BSD-2-Clause (14 of 41) Group: com.miglayout Name: miglayout-swing -Version: 11.2 +Version: 11.3 POM Project URL: http://www.miglayout.com/ @@ -3162,7 +3118,7 @@ URL: https://opensource.org/licenses/0BSD (15 of 41) Group: commons-io Name: commons-io -Version: 2.14.0 +Version: 2.16.1 Project URL: https://commons.apache.org/proper/commons-io/\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3379,7 +3335,7 @@ Embedded license: Apache Commons IO -Copyright 2002-2023 The Apache Software Foundation +Copyright 2002-2024 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (https://www.apache.org/). @@ -3390,7 +3346,7 @@ The Apache Software Foundation (https://www.apache.org/). (16 of 41) Group: de.comahe.i18n4k Name: i18n4k-core -Version: 0.6.2 +Version: 0.7.0 No license information found @@ -3399,7 +3355,7 @@ No license information found (17 of 41) Group: de.comahe.i18n4k Name: i18n4k-core-jvm -Version: 0.6.2 +Version: 0.7.0 POM Project URL: https://comahe-de.github.io/i18n4k/ @@ -3419,7 +3375,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (18 of 41) Group: de.jensklingenberg.ktorfit Name: ktorfit-lib -Version: 1.9.0 +Version: 1.14.0 No license information found @@ -3480,7 +3436,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (22 of 41) Group: org.apache.logging.log4j Name: log4j-api-kotlin -Version: 1.3.0 +Version: 1.4.0 Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3707,7 +3663,7 @@ The Apache Software Foundation (http://www.apache.org/). (23 of 41) Group: org.apache.logging.log4j Name: log4j-core -Version: 2.21.0 +Version: 2.23.1 Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3935,7 +3891,7 @@ Copyright 2005-2006 Tim Fennell (24 of 41) Group: org.bouncycastle Name: bcpkix-jdk18on -Version: 1.77 +Version: 1.78 POM Project URL: https://www.bouncycastle.org/java.html @@ -3955,11 +3911,11 @@ URL: https://www.bouncycastle.org/licence.html (25 of 41) Group: org.javassist Name: javassist -Version: 3.29.2-GA +Version: 3.30.2-GA Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 -POM Project URL: http://www.javassist.org/ +POM Project URL: https://www.javassist.org/ POM License: Apache License, Version 2.0 @@ -3994,7 +3950,7 @@ URL: https://www.mozilla.org/en-US/MPL/1.1 (26 of 41) Group: org.jetbrains.kotlin Name: kotlin-bom -Version: 1.9.21 +Version: 1.9.23 No license information found @@ -4003,7 +3959,7 @@ No license information found (27 of 41) Group: org.jetbrains.kotlin Name: kotlin-reflect -Version: 1.9.10 +Version: 1.9.23 POM Project URL: https://kotlinlang.org/ @@ -4022,8 +3978,8 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (28 of 41) Group: org.jetbrains.kotlin -Name: kotlin-reflect -Version: 1.9.21 +Name: kotlin-stdlib +Version: 1.9.23 POM Project URL: https://kotlinlang.org/ @@ -4043,7 +3999,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (29 of 41) Group: org.jetbrains.kotlin Name: kotlin-stdlib -Version: 1.9.21 +Version: 2.0.0-RC1 POM Project URL: https://kotlinlang.org/ @@ -4063,7 +4019,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (30 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-coroutines-core -Version: 1.7.3 +Version: 1.8.0 No license information found @@ -4072,7 +4028,7 @@ No license information found (31 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-coroutines-swing -Version: 1.7.3 +Version: 1.8.0 POM Project URL: https://github.com/Kotlin/kotlinx.coroutines @@ -4092,7 +4048,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (32 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-datetime -Version: 0.4.1 +Version: 0.5.0 No license information found @@ -4101,7 +4057,7 @@ No license information found (33 of 41) Group: org.pf4j Name: pf4j -Version: 3.10.0 +Version: 3.11.0 POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 @@ -4118,7 +4074,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (34 of 41) Group: org.postgresql Name: postgresql -Version: 42.6.0 +Version: 42.7.3 Manifest Project URL: https://jdbc.postgresql.org/ @@ -4270,7 +4226,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (35 of 41) Group: org.springframework.boot Name: spring-boot-devtools -Version: 3.0.4 +Version: 3.2.5 POM Project URL: https://spring.io/projects/spring-boot @@ -4483,8 +4439,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4495,7 +4451,7 @@ the License. (36 of 41) Group: org.springframework.boot Name: spring-boot-devtools -Version: 3.2.0 +Version: 3.3.0 POM Project URL: https://spring.io/projects/spring-boot @@ -4708,8 +4664,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.2.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4720,7 +4676,7 @@ the License. (37 of 41) Group: org.springframework.boot Name: spring-boot-starter-data-jpa -Version: 3.0.4 +Version: 3.2.5 POM Project URL: https://spring.io/projects/spring-boot @@ -4933,8 +4889,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4945,7 +4901,7 @@ the License. (38 of 41) Group: org.springframework.boot Name: spring-boot-starter-log4j2 -Version: 3.0.4 +Version: 3.2.4 POM Project URL: https://spring.io/projects/spring-boot @@ -5158,8 +5114,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -5170,7 +5126,7 @@ the License. (39 of 41) Group: org.springframework.boot Name: spring-boot-starter-web -Version: 3.1.0 +Version: 3.2.4 POM Project URL: https://spring.io/projects/spring-boot @@ -5383,8 +5339,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.1.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -5395,7 +5351,7 @@ the License. (40 of 41) Group: org.springframework.boot Name: spring-boot-starter-web -Version: 3.2.0 +Version: 3.3.0 POM Project URL: https://spring.io/projects/spring-boot @@ -5608,8 +5564,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.2.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with diff --git a/licenses/LICENSE-AGREEMENT.txt b/licenses/LICENSE-AGREEMENT.txt new file mode 100644 index 000000000..02abccda1 --- /dev/null +++ b/licenses/LICENSE-AGREEMENT.txt @@ -0,0 +1,5595 @@ +ServerPackCreator license agreement: + +By using a dev- / pre-release version of ServerPackCreator, you agree to do so at your own risk. +You agree to take responsibility for distributing a possibly faulty server pack +and will not hold Griefed, or any other party responsible for ServerPackCreator, +accountable should any issues / problems / errors arise from the use of said +software's dev- / pre-release version. +You may, however, report issues encountered when using this version on GitHub: +https://github.com/Griefed/ServerPackCreator/issues + +ServerPackCreator dev license: + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + +Used libraries / dependencies licenses: + +------------------------------------------------------- + +(1 of 41) +Group: com.cronutils +Name: cron-utils +Version: 9.2.1 +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM Project URL: http://cron-parser.com/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(2 of 41) +Group: com.electronwill.night-config +Name: toml +Version: 3.7.1 +POM Project URL: https://github.com/TheElectronWill/night-config + + +POM License: GNU Lesser General Public License v3.0 + - https://www.gnu.org/licenses/lgpl-3.0.txt + + +POM license(s): + + +License: GNU Lesser General Public License v3.0 +URL: https://www.gnu.org/licenses/lgpl-3.0.txt + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + +####################################### + +(3 of 41) +Group: com.fasterxml.jackson.core +Name: jackson-databind +Version: 2.17.0 +Project URL: https://github.com/FasterXML/jackson\n\n +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + + +####################################### + +(4 of 41) +Group: com.fasterxml.jackson.module +Name: jackson-module-kotlin +Version: 2.17.0 +Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + +This copy of Jackson JSON processor databind module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + + +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers, as well as supported +commercially by FasterXML.com. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + + +####################################### + +(5 of 41) +Group: com.fasterxml.jackson.module +Name: jackson-module-kotlin +Version: 2.17.1 +Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + +This copy of Jackson JSON processor databind module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 + + +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers, as well as supported +commercially by FasterXML.com. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + + +####################################### + +(6 of 41) +Group: com.formdev +Name: flatlaf +Version: 3.4 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(7 of 41) +Group: com.formdev +Name: flatlaf-extras +Version: 3.4 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(8 of 41) +Group: com.formdev +Name: flatlaf-fonts-inter +Version: 4.0 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: SIL OPEN FONT LICENSE Version 1.1 + - https://choosealicense.com/licenses/ofl-1.1/ + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + + +####################################### + +(9 of 41) +Group: com.formdev +Name: flatlaf-fonts-jetbrains-mono +Version: 2.304 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: SIL OPEN FONT LICENSE Version 1.1 + - https://choosealicense.com/licenses/ofl-1.1/ + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(10 of 41) +Group: com.formdev +Name: flatlaf-fonts-roboto +Version: 2.137 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(11 of 41) +Group: com.formdev +Name: flatlaf-fonts-roboto-mono +Version: 3.000 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(12 of 41) +Group: com.formdev +Name: flatlaf-intellij-themes +Version: 3.4 +POM Project URL: https://github.com/JFormDesigner/FlatLaf + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +####################################### + +(13 of 41) +Group: com.formdev +Name: svgSalamander +Version: 1.1.4 +POM Project URL: https://github.com/JFormDesigner/svgSalamander + + +POM License: BSD Zero Clause License + - https://opensource.org/licenses/0BSD + + +POM License: The 2-Clause BSD License + - https://opensource.org/licenses/BSD-2-Clause + + +POM license(s): + + +License: BSD Zero Clause License +URL: https://opensource.org/licenses/0BSD + + +License: The 2-Clause BSD License +URL: https://opensource.org/licenses/BSD-2-Clause + + +####################################### + +(14 of 41) +Group: com.miglayout +Name: miglayout-swing +Version: 11.3 +POM Project URL: http://www.miglayout.com/ + + +POM License: BSD Zero Clause License + - https://opensource.org/licenses/0BSD + + +POM license(s): + + +License: BSD Zero Clause License +URL: https://opensource.org/licenses/0BSD + + +####################################### + +(15 of 41) +Group: commons-io +Name: commons-io +Version: 2.16.1 +Project URL: https://commons.apache.org/proper/commons-io/\n\n +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +Apache Commons IO +Copyright 2002-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). + + +####################################### + +(16 of 41) +Group: de.comahe.i18n4k +Name: i18n4k-core +Version: 0.7.0 +No license information found + + +####################################### + +(17 of 41) +Group: de.comahe.i18n4k +Name: i18n4k-core-jvm +Version: 0.7.0 +POM Project URL: https://comahe-de.github.io/i18n4k/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(18 of 41) +Group: de.jensklingenberg.ktorfit +Name: ktorfit-lib +Version: 1.14.0 +No license information found + + +####################################### + +(19 of 41) +Group: io.github.microutils +Name: kotlin-logging +Version: 3.0.5 +No license information found + + +####################################### + +(20 of 41) +Group: net.java.balloontip +Name: balloontip +Version: 1.2.4.1 +POM Project URL: http://balloontip.java.net/ + + +POM License: The 3-Clause BSD License + - https://opensource.org/licenses/BSD-3-Clause + + +POM license(s): + + +License: The 3-Clause BSD License +URL: https://opensource.org/licenses/BSD-3-Clause + + +####################################### + +(21 of 41) +Group: net.lingala.zip4j +Name: zip4j +Version: 2.11.5 +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM Project URL: https://github.com/srikanth-lingala/zip4j + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(22 of 41) +Group: org.apache.logging.log4j +Name: log4j-api-kotlin +Version: 1.4.0 +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +Apache Log4j Kotlin API +Copyright 1999-2023 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + +####################################### + +(23 of 41) +Group: org.apache.logging.log4j +Name: log4j-core +Version: 2.23.1 +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 1999-2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +Apache Log4j Core +Copyright 1999-2012 Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +ResolverUtil.java +Copyright 2005-2006 Tim Fennell + +####################################### + +(24 of 41) +Group: org.bouncycastle +Name: bcpkix-jdk18on +Version: 1.78 +POM Project URL: https://www.bouncycastle.org/java.html + + +POM License: Bouncy Castle Licence + - https://www.bouncycastle.org/licence.html + + +POM license(s): + + +License: Bouncy Castle Licence +URL: https://www.bouncycastle.org/licence.html + + +####################################### + +(25 of 41) +Group: org.javassist +Name: javassist +Version: 3.30.2-GA +Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 + + +POM Project URL: https://www.javassist.org/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM License: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 + - https://www.gnu.org/licenses/lgpl-2.1 + + +POM License: Mozilla Public License Version 1.1 + - https://www.mozilla.org/en-US/MPL/1.1 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +License: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 +URL: https://www.gnu.org/licenses/lgpl-2.1 + + +License: Mozilla Public License Version 1.1 +URL: https://www.mozilla.org/en-US/MPL/1.1 + + +####################################### + +(26 of 41) +Group: org.jetbrains.kotlin +Name: kotlin-bom +Version: 1.9.23 +No license information found + + +####################################### + +(27 of 41) +Group: org.jetbrains.kotlin +Name: kotlin-reflect +Version: 1.9.23 +POM Project URL: https://kotlinlang.org/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(28 of 41) +Group: org.jetbrains.kotlin +Name: kotlin-stdlib +Version: 1.9.23 +POM Project URL: https://kotlinlang.org/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(29 of 41) +Group: org.jetbrains.kotlin +Name: kotlin-stdlib +Version: 2.0.0-RC1 +POM Project URL: https://kotlinlang.org/ + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(30 of 41) +Group: org.jetbrains.kotlinx +Name: kotlinx-coroutines-core +Version: 1.8.0 +No license information found + + +####################################### + +(31 of 41) +Group: org.jetbrains.kotlinx +Name: kotlinx-coroutines-swing +Version: 1.8.0 +POM Project URL: https://github.com/Kotlin/kotlinx.coroutines + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(32 of 41) +Group: org.jetbrains.kotlinx +Name: kotlinx-datetime +Version: 0.5.0 +No license information found + + +####################################### + +(33 of 41) +Group: org.pf4j +Name: pf4j +Version: 3.11.0 +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +POM license(s): + + +License: Apache License, Version 2.0 +URL: https://www.apache.org/licenses/LICENSE-2.0 + + +####################################### + +(34 of 41) +Group: org.postgresql +Name: postgresql +Version: 42.7.3 +Manifest Project URL: https://jdbc.postgresql.org/ + + +Manifest license URL: https://opensource.org/licenses/BSD-2-Clause + + +POM Project URL: https://jdbc.postgresql.org + + +POM License: The 2-Clause BSD License + - https://opensource.org/licenses/BSD-2-Clause + + +Embedded license: + +Copyright (c) 1997, PostgreSQL Global Development Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Additional License files can be found in the 'licenses' folder located in the same directory as the LICENSE file (i.e. this file) + +- Software produced outside the ASF which is available under other licenses (not Apache-2.0) + +BSD-2-Clause +* com.ongres.scram:client:2.1 +* com.ongres.scram:common:2.1 +* com.ongres.stringprep:saslprep:1.1 +* com.ongres.stringprep:stringprep:1.1 + + +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +####################################### + +(35 of 41) +Group: org.springframework.boot +Name: spring-boot-devtools +Version: 3.2.5 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(36 of 41) +Group: org.springframework.boot +Name: spring-boot-devtools +Version: 3.3.0 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(37 of 41) +Group: org.springframework.boot +Name: spring-boot-starter-data-jpa +Version: 3.2.5 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(38 of 41) +Group: org.springframework.boot +Name: spring-boot-starter-log4j2 +Version: 3.2.4 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(39 of 41) +Group: org.springframework.boot +Name: spring-boot-starter-web +Version: 3.2.4 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(40 of 41) +Group: org.springframework.boot +Name: spring-boot-starter-web +Version: 3.3.0 +POM Project URL: https://spring.io/projects/spring-boot + + +POM License: Apache License, Version 2.0 + - https://www.apache.org/licenses/LICENSE-2.0 + + +Embedded license: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +####################################### + +(41 of 41) +Group: tokyo.northside +Name: tipoftheday +Version: 0.4.2 +POM Project URL: https://codeberg.org/miurahr/tipoftheday + + +POM License: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 + - https://www.gnu.org/licenses/lgpl-2.1 + + +POM license(s): + + +License: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 +URL: https://www.gnu.org/licenses/lgpl-2.1 + + +####################################### + diff --git a/licenses/angus-activation-2.0.2.jar/META-INF/LICENSE.md b/licenses/angus-activation-2.0.2.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..e0358f972 --- /dev/null +++ b/licenses/angus-activation-2.0.2.jar/META-INF/LICENSE.md @@ -0,0 +1,29 @@ + + Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/angus-activation-2.0.2.jar/META-INF/NOTICE.md b/licenses/angus-activation-2.0.2.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..81a6d3390 --- /dev/null +++ b/licenses/angus-activation-2.0.2.jar/META-INF/NOTICE.md @@ -0,0 +1,45 @@ +# Notices for Eclipse Angus + +This content is produced and maintained by the Eclipse Angus project. + +* Project home: https://projects.eclipse.org/projects/ee4j.angus + +## Trademarks + +Eclipse Angus is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v1.0 which is available at +https://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: BSD-3-Clause + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/eclipse-ee4j/angus-activation +* https://github.com/eclipse-ee4j/angus-mail + +## Third-party Content + +This project leverages the following third party content. + +None + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. \ No newline at end of file diff --git a/licenses/byte-buddy-1.14.12.jar/META-INF/LICENSE b/licenses/byte-buddy-1.14.12.jar/META-INF/LICENSE new file mode 100644 index 000000000..9bc5efde0 --- /dev/null +++ b/licenses/byte-buddy-1.14.12.jar/META-INF/LICENSE @@ -0,0 +1,180 @@ +This product bundles ASM 9.6, which is available under a "3-clause BSD" +license. For details, see licenses/ASM. For more information visit ${asm.url}. + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/licenses/byte-buddy-1.14.12.jar/META-INF/NOTICE b/licenses/byte-buddy-1.14.12.jar/META-INF/NOTICE new file mode 100644 index 000000000..929cbc6b1 --- /dev/null +++ b/licenses/byte-buddy-1.14.12.jar/META-INF/NOTICE @@ -0,0 +1,13 @@ +Copyright 2014 - Present Rafael Winterhalter + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/licenses/byte-buddy-1.14.16.jar/META-INF/LICENSE b/licenses/byte-buddy-1.14.16.jar/META-INF/LICENSE new file mode 100644 index 000000000..b6ee4d1dc --- /dev/null +++ b/licenses/byte-buddy-1.14.16.jar/META-INF/LICENSE @@ -0,0 +1,180 @@ +This product bundles ASM 9.7, which is available under a "3-clause BSD" +license. For details, see licenses/ASM. For more information visit ${asm.url}. + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/licenses/byte-buddy-1.14.16.jar/META-INF/NOTICE b/licenses/byte-buddy-1.14.16.jar/META-INF/NOTICE new file mode 100644 index 000000000..929cbc6b1 --- /dev/null +++ b/licenses/byte-buddy-1.14.16.jar/META-INF/NOTICE @@ -0,0 +1,13 @@ +Copyright 2014 - Present Rafael Winterhalter + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/licenses/byte-buddy-1.14.9.jar/META-INF/LICENSE b/licenses/byte-buddy-1.14.9.jar/META-INF/LICENSE new file mode 100644 index 000000000..9bc5efde0 --- /dev/null +++ b/licenses/byte-buddy-1.14.9.jar/META-INF/LICENSE @@ -0,0 +1,180 @@ +This product bundles ASM 9.6, which is available under a "3-clause BSD" +license. For details, see licenses/ASM. For more information visit ${asm.url}. + +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/licenses/byte-buddy-1.14.9.jar/META-INF/NOTICE b/licenses/byte-buddy-1.14.9.jar/META-INF/NOTICE new file mode 100644 index 000000000..929cbc6b1 --- /dev/null +++ b/licenses/byte-buddy-1.14.9.jar/META-INF/NOTICE @@ -0,0 +1,13 @@ +Copyright 2014 - Present Rafael Winterhalter + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/licenses/checker-qual-3.42.0.jar/META-INF/LICENSE.txt b/licenses/checker-qual-3.42.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..9837c6b69 --- /dev/null +++ b/licenses/checker-qual-3.42.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,22 @@ +Checker Framework qualifiers +Copyright 2004-present by the Checker Framework developers + +MIT License: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/licenses/classmate-1.7.0.jar/META-INF/LICENSE b/licenses/classmate-1.7.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..522a4db09 --- /dev/null +++ b/licenses/classmate-1.7.0.jar/META-INF/LICENSE @@ -0,0 +1,7 @@ +This copy of Java ClassMate library is licensed under Apache (Software) License, +version 2.0 ("the License"). +See the License for details about distribution rights, and the specific rights regarding derivate works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/classmate-1.7.0.jar/META-INF/NOTICE b/licenses/classmate-1.7.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..d706cadf5 --- /dev/null +++ b/licenses/classmate-1.7.0.jar/META-INF/NOTICE @@ -0,0 +1,9 @@ +Java ClassMate library was originally written by Tatu Saloranta (tatu.saloranta@iki.fi) + +Other developers who have contributed code are: + +* Brian Langel + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) \ No newline at end of file diff --git a/licenses/commons-codec-1.16.1.jar/META-INF/LICENSE.txt b/licenses/commons-codec-1.16.1.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/commons-codec-1.16.1.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/commons-codec-1.16.1.jar/META-INF/NOTICE.txt b/licenses/commons-codec-1.16.1.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..e6d6ef34a --- /dev/null +++ b/licenses/commons-codec-1.16.1.jar/META-INF/NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons Codec +Copyright 2002-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). diff --git a/licenses/commons-io-2.16.1.jar/META-INF/LICENSE.txt b/licenses/commons-io-2.16.1.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..6b0b1270f --- /dev/null +++ b/licenses/commons-io-2.16.1.jar/META-INF/LICENSE.txt @@ -0,0 +1,203 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/licenses/commons-io-2.16.1.jar/META-INF/NOTICE.txt b/licenses/commons-io-2.16.1.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..e7dbcdc22 --- /dev/null +++ b/licenses/commons-io-2.16.1.jar/META-INF/NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons IO +Copyright 2002-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). diff --git a/licenses/commons-lang3-3.14.0.jar/META-INF/LICENSE.txt b/licenses/commons-lang3-3.14.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/commons-lang3-3.14.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/commons-lang3-3.14.0.jar/META-INF/NOTICE.txt b/licenses/commons-lang3-3.14.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..307ec45cf --- /dev/null +++ b/licenses/commons-lang3-3.14.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons Lang +Copyright 2001-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). diff --git a/licenses/flatlaf-3.4.jar/META-INF/LICENSE b/licenses/flatlaf-3.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/flatlaf-3.4.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/flatlaf-extras-3.4.jar/META-INF/LICENSE b/licenses/flatlaf-extras-3.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/flatlaf-extras-3.4.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE b/licenses/flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt b/licenses/flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt new file mode 100644 index 000000000..9b2ca37b3 --- /dev/null +++ b/licenses/flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt @@ -0,0 +1,92 @@ +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/licenses/flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE b/licenses/flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE b/licenses/flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/licenses/flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/index.html b/licenses/index.html index cc14d0017..da5161f76 100644 --- a/licenses/index.html +++ b/licenses/index.html @@ -124,7 +124,7 @@ <div class='header'> <h1>serverpackcreator dev</h1> <h2>Dependency License Report</h2> -<h2 class='timestamp'><em>2024-02-13 21:42:38 MEZ</em>.</h2></div> +<h2 class='timestamp'><em>2024-05-26 14:44:22 MESZ</em>.</h2></div> <h3>Dependency Licences</h3> <ul> <li><a class='license' href='#Dependency_Licences_Apache_License,_Version_2.0'><span class='name'>Apache License, Version 2.0</span> <span class='badge'>28</span></a></li> @@ -152,70 +152,70 @@ <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 2.</strong> <strong>Group:</strong> com.fasterxml.jackson.core <strong>Name:</strong> jackson-databind <strong>Version:</strong> 2.15.3 </p><label>Project URL</label> +<p><strong> 2.</strong> <strong>Group:</strong> com.fasterxml.jackson.core <strong>Name:</strong> jackson-databind <strong>Version:</strong> 2.17.0 </p><label>Project URL</label> <div class='dependency-value'><a href='https://github.com/FasterXML/jackson'>https://github.com/FasterXML/jackson</a></div> <label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='jackson-databind-2.15.3.jar/META-INF/LICENSE'>jackson-databind-2.15.3.jar/META-INF/LICENSE</a><br><a href='jackson-databind-2.15.3.jar/META-INF/NOTICE'>jackson-databind-2.15.3.jar/META-INF/NOTICE</a></div> +<div class='dependency-value'><a href='jackson-databind-2.17.0.jar/META-INF/LICENSE'>jackson-databind-2.17.0.jar/META-INF/LICENSE</a><br><a href='jackson-databind-2.17.0.jar/META-INF/NOTICE'>jackson-databind-2.17.0.jar/META-INF/NOTICE</a></div> </div> <div class='dependency'> -<p><strong> 3.</strong> <strong>Group:</strong> com.fasterxml.jackson.module <strong>Name:</strong> jackson-module-kotlin <strong>Version:</strong> 2.14.2 </p><label>Project URL</label> +<p><strong> 3.</strong> <strong>Group:</strong> com.fasterxml.jackson.module <strong>Name:</strong> jackson-module-kotlin <strong>Version:</strong> 2.17.0 </p><label>Project URL</label> <div class='dependency-value'><a href='https://github.com/FasterXML/jackson-module-kotlin'>https://github.com/FasterXML/jackson-module-kotlin</a></div> <label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='jackson-module-kotlin-2.14.2.jar/META-INF/LICENSE'>jackson-module-kotlin-2.14.2.jar/META-INF/LICENSE</a><br><a href='jackson-module-kotlin-2.14.2.jar/META-INF/NOTICE'>jackson-module-kotlin-2.14.2.jar/META-INF/NOTICE</a></div> +<div class='dependency-value'><a href='jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE'>jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE</a><br><a href='jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE'>jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE</a></div> </div> <div class='dependency'> -<p><strong> 4.</strong> <strong>Group:</strong> com.fasterxml.jackson.module <strong>Name:</strong> jackson-module-kotlin <strong>Version:</strong> 2.15.3 </p><label>Project URL</label> +<p><strong> 4.</strong> <strong>Group:</strong> com.fasterxml.jackson.module <strong>Name:</strong> jackson-module-kotlin <strong>Version:</strong> 2.17.1 </p><label>Project URL</label> <div class='dependency-value'><a href='https://github.com/FasterXML/jackson-module-kotlin'>https://github.com/FasterXML/jackson-module-kotlin</a></div> <label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='jackson-module-kotlin-2.15.3.jar/META-INF/LICENSE'>jackson-module-kotlin-2.15.3.jar/META-INF/LICENSE</a><br><a href='jackson-module-kotlin-2.15.3.jar/META-INF/NOTICE'>jackson-module-kotlin-2.15.3.jar/META-INF/NOTICE</a></div> +<div class='dependency-value'><a href='jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE'>jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE</a><br><a href='jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE'>jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE</a></div> </div> <div class='dependency'> -<p><strong> 5.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf <strong>Version:</strong> 3.2.5 </p><label>POM Project URL</label> +<p><strong> 5.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf <strong>Version:</strong> 3.4 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-3.2.5.jar/META-INF/LICENSE'>flatlaf-3.2.5.jar/META-INF/LICENSE</a></div> +<div class='dependency-value'><a href='flatlaf-3.4.jar/META-INF/LICENSE'>flatlaf-3.4.jar/META-INF/LICENSE</a></div> </div> <div class='dependency'> -<p><strong> 6.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-extras <strong>Version:</strong> 3.2.5 </p><label>POM Project URL</label> +<p><strong> 6.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-extras <strong>Version:</strong> 3.4 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-extras-3.2.5.jar/META-INF/LICENSE'>flatlaf-extras-3.2.5.jar/META-INF/LICENSE</a></div> +<div class='dependency-value'><a href='flatlaf-extras-3.4.jar/META-INF/LICENSE'>flatlaf-extras-3.4.jar/META-INF/LICENSE</a></div> </div> <div class='dependency'> -<p><strong> 7.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-inter <strong>Version:</strong> 3.19 </p><label>POM Project URL</label> +<p><strong> 7.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-inter <strong>Version:</strong> 4.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>SIL OPEN FONT LICENSE Version 1.1 - <a href='https://choosealicense.com/licenses/ofl-1.1/'>https://choosealicense.com/licenses/ofl-1.1/</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE'>flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE</a><br><a href='flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt'>flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt</a></div> +<div class='dependency-value'><a href='flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE'>flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE</a><br><a href='flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt'>flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt</a></div> </div> <div class='dependency'> -<p><strong> 8.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-jetbrains-mono <strong>Version:</strong> 2.242 </p><label>POM Project URL</label> +<p><strong> 8.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-jetbrains-mono <strong>Version:</strong> 2.304 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>SIL OPEN FONT LICENSE Version 1.1 - <a href='https://choosealicense.com/licenses/ofl-1.1/'>https://choosealicense.com/licenses/ofl-1.1/</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE'>flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE</a></div> +<div class='dependency-value'><a href='flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE'>flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE</a></div> </div> <div class='dependency'> <p><strong> 9.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-roboto <strong>Version:</strong> 2.137 </p><label>POM Project URL</label> @@ -234,25 +234,25 @@ <div class='dependency-value'><a href='flatlaf-fonts-roboto-mono-3.000.jar/META-INF/LICENSE'>flatlaf-fonts-roboto-mono-3.000.jar/META-INF/LICENSE</a><br><a href='flatlaf-fonts-roboto-mono-3.000.jar/com/formdev/flatlaf/fonts/roboto_mono/LICENSE.txt'>flatlaf-fonts-roboto-mono-3.000.jar/com/formdev/flatlaf/fonts/roboto_mono/LICENSE.txt</a></div> </div> <div class='dependency'> -<p><strong> 11.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-intellij-themes <strong>Version:</strong> 3.2.5 </p><label>POM Project URL</label> +<p><strong> 11.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-intellij-themes <strong>Version:</strong> 3.4 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-intellij-themes-3.2.5.jar/META-INF/LICENSE'>flatlaf-intellij-themes-3.2.5.jar/META-INF/LICENSE</a></div> +<div class='dependency-value'><a href='flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE'>flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE</a></div> </div> <div class='dependency'> -<p><strong> 12.</strong> <strong>Group:</strong> commons-io <strong>Name:</strong> commons-io <strong>Version:</strong> 2.14.0 </p><label>Project URL</label> +<p><strong> 12.</strong> <strong>Group:</strong> commons-io <strong>Name:</strong> commons-io <strong>Version:</strong> 2.16.1 </p><label>Project URL</label> <div class='dependency-value'><a href='https://commons.apache.org/proper/commons-io/'>https://commons.apache.org/proper/commons-io/</a></div> <label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='commons-io-2.14.0.jar/META-INF/LICENSE.txt'>commons-io-2.14.0.jar/META-INF/LICENSE.txt</a><br><a href='commons-io-2.14.0.jar/META-INF/NOTICE.txt'>commons-io-2.14.0.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='commons-io-2.16.1.jar/META-INF/LICENSE.txt'>commons-io-2.16.1.jar/META-INF/LICENSE.txt</a><br><a href='commons-io-2.16.1.jar/META-INF/NOTICE.txt'>commons-io-2.16.1.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 13.</strong> <strong>Group:</strong> de.comahe.i18n4k <strong>Name:</strong> i18n4k-core-jvm <strong>Version:</strong> 0.6.2 </p><label>POM Project URL</label> +<p><strong> 13.</strong> <strong>Group:</strong> de.comahe.i18n4k <strong>Name:</strong> i18n4k-core-jvm <strong>Version:</strong> 0.7.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://comahe-de.github.io/i18n4k/'>https://comahe-de.github.io/i18n4k/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> @@ -266,26 +266,26 @@ <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 15.</strong> <strong>Group:</strong> org.apache.logging.log4j <strong>Name:</strong> log4j-api-kotlin <strong>Version:</strong> 1.3.0 </p><label>Manifest License</label> +<p><strong> 15.</strong> <strong>Group:</strong> org.apache.logging.log4j <strong>Name:</strong> log4j-api-kotlin <strong>Version:</strong> 1.4.0 </p><label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='log4j-api-kotlin-1.3.0.jar/META-INF/LICENSE'>log4j-api-kotlin-1.3.0.jar/META-INF/LICENSE</a><br><a href='log4j-api-kotlin-1.3.0.jar/META-INF/NOTICE'>log4j-api-kotlin-1.3.0.jar/META-INF/NOTICE</a></div> +<div class='dependency-value'><a href='log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE'>log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE</a><br><a href='log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE'>log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE</a></div> </div> <div class='dependency'> -<p><strong> 16.</strong> <strong>Group:</strong> org.apache.logging.log4j <strong>Name:</strong> log4j-core <strong>Version:</strong> 2.21.0 </p><label>Manifest License</label> +<p><strong> 16.</strong> <strong>Group:</strong> org.apache.logging.log4j <strong>Name:</strong> log4j-core <strong>Version:</strong> 2.23.1 </p><label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='log4j-core-2.21.0.jar/META-INF/LICENSE'>log4j-core-2.21.0.jar/META-INF/LICENSE</a><br><a href='log4j-core-2.21.0.jar/META-INF/NOTICE'>log4j-core-2.21.0.jar/META-INF/NOTICE</a></div> +<div class='dependency-value'><a href='log4j-core-2.23.1.jar/META-INF/LICENSE'>log4j-core-2.23.1.jar/META-INF/LICENSE</a><br><a href='log4j-core-2.23.1.jar/META-INF/NOTICE'>log4j-core-2.23.1.jar/META-INF/NOTICE</a></div> </div> <div class='dependency'> -<p><strong> 17.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.29.2-GA </p><label>Manifest License</label> +<p><strong> 17.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.30.2-GA </p><label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM Project URL</label> -<div class='dependency-value'><a href='http://www.javassist.org/'>http://www.javassist.org/</a></div> +<div class='dependency-value'><a href='https://www.javassist.org/'>https://www.javassist.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> @@ -294,80 +294,80 @@ <div class='dependency-value'>Mozilla Public License Version 1.1 - <a href='https://www.mozilla.org/en-US/MPL/1.1'>https://www.mozilla.org/en-US/MPL/1.1</a></div> </div> <div class='dependency'> -<p><strong> 18.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-reflect <strong>Version:</strong> 1.9.10 </p><label>POM Project URL</label> +<p><strong> 18.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-reflect <strong>Version:</strong> 1.9.23 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://kotlinlang.org/'>https://kotlinlang.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 19.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-reflect <strong>Version:</strong> 1.9.21 </p><label>POM Project URL</label> +<p><strong> 19.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-stdlib <strong>Version:</strong> 1.9.23 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://kotlinlang.org/'>https://kotlinlang.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 20.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-stdlib <strong>Version:</strong> 1.9.21 </p><label>POM Project URL</label> +<p><strong> 20.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-stdlib <strong>Version:</strong> 2.0.0-RC1 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://kotlinlang.org/'>https://kotlinlang.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 21.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-coroutines-swing <strong>Version:</strong> 1.7.3 </p><label>POM Project URL</label> +<p><strong> 21.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-coroutines-swing <strong>Version:</strong> 1.8.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/Kotlin/kotlinx.coroutines'>https://github.com/Kotlin/kotlinx.coroutines</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 22.</strong> <strong>Group:</strong> org.pf4j <strong>Name:</strong> pf4j <strong>Version:</strong> 3.10.0 </p><label>POM License</label> +<p><strong> 22.</strong> <strong>Group:</strong> org.pf4j <strong>Name:</strong> pf4j <strong>Version:</strong> 3.11.0 </p><label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> </div> <div class='dependency'> -<p><strong> 23.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-devtools <strong>Version:</strong> 3.0.4 </p><label>POM Project URL</label> +<p><strong> 23.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-devtools <strong>Version:</strong> 3.2.5 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-devtools-3.0.4.jar/META-INF/LICENSE.txt'>spring-boot-devtools-3.0.4.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-devtools-3.0.4.jar/META-INF/NOTICE.txt'>spring-boot-devtools-3.0.4.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt'>spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt'>spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 24.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-devtools <strong>Version:</strong> 3.2.0 </p><label>POM Project URL</label> +<p><strong> 24.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-devtools <strong>Version:</strong> 3.3.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-devtools-3.2.0.jar/META-INF/LICENSE.txt'>spring-boot-devtools-3.2.0.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-devtools-3.2.0.jar/META-INF/NOTICE.txt'>spring-boot-devtools-3.2.0.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt'>spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt'>spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 25.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-data-jpa <strong>Version:</strong> 3.0.4 </p><label>POM Project URL</label> +<p><strong> 25.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-data-jpa <strong>Version:</strong> 3.2.5 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-starter-data-jpa-3.0.4.jar/META-INF/LICENSE.txt'>spring-boot-starter-data-jpa-3.0.4.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-data-jpa-3.0.4.jar/META-INF/NOTICE.txt'>spring-boot-starter-data-jpa-3.0.4.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt'>spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt'>spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 26.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-log4j2 <strong>Version:</strong> 3.0.4 </p><label>POM Project URL</label> +<p><strong> 26.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-log4j2 <strong>Version:</strong> 3.2.4 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-starter-log4j2-3.0.4.jar/META-INF/LICENSE.txt'>spring-boot-starter-log4j2-3.0.4.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-log4j2-3.0.4.jar/META-INF/NOTICE.txt'>spring-boot-starter-log4j2-3.0.4.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt'>spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt'>spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 27.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-web <strong>Version:</strong> 3.1.0 </p><label>POM Project URL</label> +<p><strong> 27.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-web <strong>Version:</strong> 3.2.4 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-starter-web-3.1.0.jar/META-INF/LICENSE.txt'>spring-boot-starter-web-3.1.0.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-web-3.1.0.jar/META-INF/NOTICE.txt'>spring-boot-starter-web-3.1.0.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt'>spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt'>spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt</a></div> </div> <div class='dependency'> -<p><strong> 28.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-web <strong>Version:</strong> 3.2.0 </p><label>POM Project URL</label> +<p><strong> 28.</strong> <strong>Group:</strong> org.springframework.boot <strong>Name:</strong> spring-boot-starter-web <strong>Version:</strong> 3.3.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://spring.io/projects/spring-boot'>https://spring.io/projects/spring-boot</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='spring-boot-starter-web-3.2.0.jar/META-INF/LICENSE.txt'>spring-boot-starter-web-3.2.0.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-web-3.2.0.jar/META-INF/NOTICE.txt'>spring-boot-starter-web-3.2.0.jar/META-INF/NOTICE.txt</a></div> +<div class='dependency-value'><a href='spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt'>spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt</a><br><a href='spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt'>spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt</a></div> </div> <a id='Dependency_Licences_BSD_Zero_Clause_License'></a> <h2>BSD Zero Clause License</h2> @@ -380,7 +380,7 @@ <div class='dependency-value'>The 2-Clause BSD License - <a href='https://opensource.org/licenses/BSD-2-Clause'>https://opensource.org/licenses/BSD-2-Clause</a></div> </div> <div class='dependency'> -<p><strong> 30.</strong> <strong>Group:</strong> com.miglayout <strong>Name:</strong> miglayout-swing <strong>Version:</strong> 11.2 </p><label>POM Project URL</label> +<p><strong> 30.</strong> <strong>Group:</strong> com.miglayout <strong>Name:</strong> miglayout-swing <strong>Version:</strong> 11.3 </p><label>POM Project URL</label> <div class='dependency-value'><a href='http://www.miglayout.com/'>http://www.miglayout.com/</a></div> <label>POM License</label> <div class='dependency-value'>BSD Zero Clause License - <a href='https://opensource.org/licenses/0BSD'>https://opensource.org/licenses/0BSD</a></div> @@ -388,7 +388,7 @@ <a id='Dependency_Licences_Bouncy_Castle_Licence'></a> <h2>Bouncy Castle Licence</h2> <div class='dependency'> -<p><strong> 31.</strong> <strong>Group:</strong> org.bouncycastle <strong>Name:</strong> bcpkix-jdk18on <strong>Version:</strong> 1.77 </p><label>POM Project URL</label> +<p><strong> 31.</strong> <strong>Group:</strong> org.bouncycastle <strong>Name:</strong> bcpkix-jdk18on <strong>Version:</strong> 1.78 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://www.bouncycastle.org/java.html'>https://www.bouncycastle.org/java.html</a></div> <label>POM License</label> <div class='dependency-value'>Bouncy Castle Licence - <a href='https://www.bouncycastle.org/licence.html'>https://www.bouncycastle.org/licence.html</a></div> @@ -396,10 +396,10 @@ <a id='Dependency_Licences_GNU_LESSER_GENERAL_PUBLIC_LICENSE,_Version_2.1'></a> <h2>GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1</h2> <div class='dependency'> -<p><strong> 32.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.29.2-GA </p><label>Manifest License</label> +<p><strong> 32.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.30.2-GA </p><label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM Project URL</label> -<div class='dependency-value'><a href='http://www.javassist.org/'>http://www.javassist.org/</a></div> +<div class='dependency-value'><a href='https://www.javassist.org/'>https://www.javassist.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> @@ -416,18 +416,18 @@ <a id='Dependency_Licences_GNU_Lesser_General_Public_License_v3.0'></a> <h2>GNU Lesser General Public License v3.0</h2> <div class='dependency'> -<p><strong> 34.</strong> <strong>Group:</strong> com.electronwill.night-config <strong>Name:</strong> toml <strong>Version:</strong> 3.6.7 </p><label>POM Project URL</label> -<div class='dependency-value'><a href='https://github.com/TheElectronWill/Night-Config'>https://github.com/TheElectronWill/Night-Config</a></div> +<p><strong> 34.</strong> <strong>Group:</strong> com.electronwill.night-config <strong>Name:</strong> toml <strong>Version:</strong> 3.7.1 </p><label>POM Project URL</label> +<div class='dependency-value'><a href='https://github.com/TheElectronWill/night-config'>https://github.com/TheElectronWill/night-config</a></div> <label>POM License</label> <div class='dependency-value'>GNU Lesser General Public License v3.0 - <a href='https://www.gnu.org/licenses/lgpl-3.0.txt'>https://www.gnu.org/licenses/lgpl-3.0.txt</a></div> </div> <a id='Dependency_Licences_Mozilla_Public_License_Version_1.1'></a> <h2>Mozilla Public License Version 1.1</h2> <div class='dependency'> -<p><strong> 35.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.29.2-GA </p><label>Manifest License</label> +<p><strong> 35.</strong> <strong>Group:</strong> org.javassist <strong>Name:</strong> javassist <strong>Version:</strong> 3.30.2-GA </p><label>Manifest License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM Project URL</label> -<div class='dependency-value'><a href='http://www.javassist.org/'>http://www.javassist.org/</a></div> +<div class='dependency-value'><a href='https://www.javassist.org/'>https://www.javassist.org/</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> @@ -438,24 +438,24 @@ <a id='Dependency_Licences_SIL_OPEN_FONT_LICENSE_Version_1.1'></a> <h2>SIL OPEN FONT LICENSE Version 1.1</h2> <div class='dependency'> -<p><strong> 36.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-inter <strong>Version:</strong> 3.19 </p><label>POM Project URL</label> +<p><strong> 36.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-inter <strong>Version:</strong> 4.0 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>SIL OPEN FONT LICENSE Version 1.1 - <a href='https://choosealicense.com/licenses/ofl-1.1/'>https://choosealicense.com/licenses/ofl-1.1/</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE'>flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE</a><br><a href='flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt'>flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt</a></div> +<div class='dependency-value'><a href='flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE'>flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE</a><br><a href='flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt'>flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt</a></div> </div> <div class='dependency'> -<p><strong> 37.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-jetbrains-mono <strong>Version:</strong> 2.242 </p><label>POM Project URL</label> +<p><strong> 37.</strong> <strong>Group:</strong> com.formdev <strong>Name:</strong> flatlaf-fonts-jetbrains-mono <strong>Version:</strong> 2.304 </p><label>POM Project URL</label> <div class='dependency-value'><a href='https://github.com/JFormDesigner/FlatLaf'>https://github.com/JFormDesigner/FlatLaf</a></div> <label>POM License</label> <div class='dependency-value'>Apache License, Version 2.0 - <a href='https://www.apache.org/licenses/LICENSE-2.0'>https://www.apache.org/licenses/LICENSE-2.0</a></div> <label>POM License</label> <div class='dependency-value'>SIL OPEN FONT LICENSE Version 1.1 - <a href='https://choosealicense.com/licenses/ofl-1.1/'>https://choosealicense.com/licenses/ofl-1.1/</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE'>flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE</a></div> +<div class='dependency-value'><a href='flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE'>flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE</a></div> </div> <a id='Dependency_Licences_The_2-Clause_BSD_License'></a> <h2>The 2-Clause BSD License</h2> @@ -468,7 +468,7 @@ <div class='dependency-value'>The 2-Clause BSD License - <a href='https://opensource.org/licenses/BSD-2-Clause'>https://opensource.org/licenses/BSD-2-Clause</a></div> </div> <div class='dependency'> -<p><strong> 39.</strong> <strong>Group:</strong> org.postgresql <strong>Name:</strong> postgresql <strong>Version:</strong> 42.6.0 </p><label>Manifest Project URL</label> +<p><strong> 39.</strong> <strong>Group:</strong> org.postgresql <strong>Name:</strong> postgresql <strong>Version:</strong> 42.7.3 </p><label>Manifest Project URL</label> <div class='dependency-value'><a href='https://jdbc.postgresql.org/'>https://jdbc.postgresql.org/</a></div> <label>Manifest License</label> <div class='dependency-value'>The 2-Clause BSD License - <a href='https://opensource.org/licenses/BSD-2-Clause'>https://opensource.org/licenses/BSD-2-Clause</a></div> @@ -477,7 +477,7 @@ <label>POM License</label> <div class='dependency-value'>The 2-Clause BSD License - <a href='https://opensource.org/licenses/BSD-2-Clause'>https://opensource.org/licenses/BSD-2-Clause</a></div> <label>Embedded license files</label> -<div class='dependency-value'><a href='postgresql-42.6.0.jar/META-INF/LICENSE'>postgresql-42.6.0.jar/META-INF/LICENSE</a><br><a href='postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE'>postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE</a><br><a href='postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE'>postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE</a><br><a href='postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE'>postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE</a><br><a href='postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE'>postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE</a></div> +<div class='dependency-value'><a href='postgresql-42.7.3.jar/META-INF/LICENSE'>postgresql-42.7.3.jar/META-INF/LICENSE</a><br><a href='postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE'>postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE</a><br><a href='postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE'>postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE</a><br><a href='postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE'>postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE</a><br><a href='postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE'>postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE</a></div> </div> <a id='Dependency_Licences_The_3-Clause_BSD_License'></a> <h2>The 3-Clause BSD License</h2> @@ -490,17 +490,17 @@ <a id='Dependency_Licences_Unknown'></a> <h2>Unknown</h2> <div class='dependency'> -<p><strong> 41.</strong> <strong>Group:</strong> de.comahe.i18n4k <strong>Name:</strong> i18n4k-core <strong>Version:</strong> 0.6.2 </p></div> +<p><strong> 41.</strong> <strong>Group:</strong> de.comahe.i18n4k <strong>Name:</strong> i18n4k-core <strong>Version:</strong> 0.7.0 </p></div> <div class='dependency'> -<p><strong> 42.</strong> <strong>Group:</strong> de.jensklingenberg.ktorfit <strong>Name:</strong> ktorfit-lib <strong>Version:</strong> 1.9.0 </p></div> +<p><strong> 42.</strong> <strong>Group:</strong> de.jensklingenberg.ktorfit <strong>Name:</strong> ktorfit-lib <strong>Version:</strong> 1.14.0 </p></div> <div class='dependency'> <p><strong> 43.</strong> <strong>Group:</strong> io.github.microutils <strong>Name:</strong> kotlin-logging <strong>Version:</strong> 3.0.5 </p></div> <div class='dependency'> -<p><strong> 44.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-bom <strong>Version:</strong> 1.9.21 </p></div> +<p><strong> 44.</strong> <strong>Group:</strong> org.jetbrains.kotlin <strong>Name:</strong> kotlin-bom <strong>Version:</strong> 1.9.23 </p></div> <div class='dependency'> -<p><strong> 45.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-coroutines-core <strong>Version:</strong> 1.7.3 </p></div> +<p><strong> 45.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-coroutines-core <strong>Version:</strong> 1.8.0 </p></div> <div class='dependency'> -<p><strong> 46.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-datetime <strong>Version:</strong> 0.4.1 </p></div> +<p><strong> 46.</strong> <strong>Group:</strong> org.jetbrains.kotlinx <strong>Name:</strong> kotlinx-datetime <strong>Version:</strong> 0.5.0 </p></div> </div> </div> diff --git a/licenses/jackson-annotations-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-annotations-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-annotations-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-annotations-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-annotations-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-annotations-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-annotations-2.17.0.jar/META-INF/LICENSE b/licenses/jackson-annotations-2.17.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-annotations-2.17.0.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-annotations-2.17.0.jar/META-INF/NOTICE b/licenses/jackson-annotations-2.17.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-annotations-2.17.0.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-annotations-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-annotations-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-annotations-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-annotations-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-annotations-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-annotations-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-core-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-core-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-core-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-core-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-core-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..e30a4782d --- /dev/null +++ b/licenses/jackson-core-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,32 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser <https://github.com/wrandelshofer/FastDoubleParser>. +That code is available under an MIT license <https://github.com/wrandelshofer/FastDoubleParser/blob/main/LICENSE> +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. diff --git a/licenses/jackson-core-2.17.0.jar/META-INF/LICENSE b/licenses/jackson-core-2.17.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-core-2.17.0.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-core-2.17.0.jar/META-INF/NOTICE b/licenses/jackson-core-2.17.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..e30a4782d --- /dev/null +++ b/licenses/jackson-core-2.17.0.jar/META-INF/NOTICE @@ -0,0 +1,32 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser <https://github.com/wrandelshofer/FastDoubleParser>. +That code is available under an MIT license <https://github.com/wrandelshofer/FastDoubleParser/blob/main/LICENSE> +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. diff --git a/licenses/jackson-core-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-core-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-core-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-core-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-core-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..e30a4782d --- /dev/null +++ b/licenses/jackson-core-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,32 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser <https://github.com/wrandelshofer/FastDoubleParser>. +That code is available under an MIT license <https://github.com/wrandelshofer/FastDoubleParser/blob/main/LICENSE> +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. diff --git a/licenses/jackson-databind-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-databind-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-databind-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-databind-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-databind-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-databind-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-databind-2.17.0.jar/META-INF/LICENSE b/licenses/jackson-databind-2.17.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-databind-2.17.0.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-databind-2.17.0.jar/META-INF/NOTICE b/licenses/jackson-databind-2.17.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-databind-2.17.0.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-databind-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-databind-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/jackson-databind-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/jackson-databind-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-databind-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..738b11fda --- /dev/null +++ b/licenses/jackson-databind-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,21 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..0a97ea4ff --- /dev/null +++ b/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 datatype module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-datatype-jdk8-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..0a97ea4ff --- /dev/null +++ b/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 datatype module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-datatype-jdk8-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..0e9c9520a --- /dev/null +++ b/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 Date/Time module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-datatype-jsr310-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..0e9c9520a --- /dev/null +++ b/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 Date/Time module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-datatype-jsr310-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..8401e01f2 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor databind module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..201c4fc33 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,24 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers, as well as supported +commercially by FasterXML.com. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE b/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..8401e01f2 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor databind module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE b/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..201c4fc33 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE @@ -0,0 +1,24 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers, as well as supported +commercially by FasterXML.com. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..8401e01f2 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor databind module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..201c4fc33 --- /dev/null +++ b/licenses/jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,24 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers, as well as supported +commercially by FasterXML.com. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson core and extension components may be licensed under different licenses. +To find the details that apply to this artifact see the accompanying LICENSE file. +For more information, including possible other licensing options, contact +FasterXML.com (http://fasterxml.com). + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/LICENSE b/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..f49b9ee83 --- /dev/null +++ b/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 parameter names module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/NOTICE b/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-module-parameter-names-2.15.4.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/LICENSE b/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..f49b9ee83 --- /dev/null +++ b/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/LICENSE @@ -0,0 +1,8 @@ +This copy of Jackson JSON processor Java 8 parameter names module is licensed under the +Apache (Software) License, version 2.0 ("the License"). +See the License for details about distribution rights, and the +specific rights regarding derivative works. + +You may obtain a copy of the License at: + +http://www.apache.org/licenses/LICENSE-2.0 diff --git a/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/NOTICE b/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..d55c59a0d --- /dev/null +++ b/licenses/jackson-module-parameter-names-2.17.1.jar/META-INF/NOTICE @@ -0,0 +1,17 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Licensing + +Jackson components are licensed under Apache (Software) License, version 2.0, +as per accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. diff --git a/licenses/jakarta.activation-api-2.1.3.jar/META-INF/LICENSE.md b/licenses/jakarta.activation-api-2.1.3.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..e0358f972 --- /dev/null +++ b/licenses/jakarta.activation-api-2.1.3.jar/META-INF/LICENSE.md @@ -0,0 +1,29 @@ + + Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/jakarta.activation-api-2.1.3.jar/META-INF/NOTICE.md b/licenses/jakarta.activation-api-2.1.3.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..2ea9bf4da --- /dev/null +++ b/licenses/jakarta.activation-api-2.1.3.jar/META-INF/NOTICE.md @@ -0,0 +1,91 @@ +# Notices for Jakarta Activation + +This content is produced and maintained by the Jakarta Activation project. + +* Project home: https://projects.eclipse.org/projects/ee4j.jaf + +## Trademarks + +Jakarta Activation is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Public License v. 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License v1.0 +which is available at https://www.eclipse.org/org/documents/edl-v10.php. This +Source Code may also be made available under the following Secondary Licenses +when the conditions for such availability set forth in the Eclipse Public +License v. 2.0 are satisfied: (secondary) GPL-2.0 with Classpath-exception-2.0 +which is available at https://openjdk.java.net/legal/gplv2+ce.html. + +SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with +Classpath-exception-2.0 + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/jakartaee/jaf-api +* https://github.com/jakartaee/jaf-tck + +## Third-party Content + +This project leverages the following third party content. + +Apache Ant (1.9.6) + +* License: Apache License, 2.0, W3C License, Public Domain + +Apache Ant (1.9.6) + +* License: Apache License, 2.0, W3C License, Public Domain + +Apache commons-lang (3.5) + +* License: Apache-2.0 + +font-awesome (4.7.0) + +* License: OFL-1.1 AND MIT + +jsoup (1.10.2) + +* License: MIT + +JTHarness (5.0) + +* License: (GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0) +* Project: https://wiki.openjdk.java.net/display/CodeTools/JT+Harness +* Source: http://hg.openjdk.java.net/code-tools/jtharness/ + +JUnit (4.12) + +* License: Eclipse Public License + +normalize.css (3.0.2) + +* License: MIT +* Project: http://necolas.github.io/normalize.css/ +* Source: http://necolas.github.io/normalize.css/ + +SigTest (4.0) + +* License: GPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +* Project: https://wiki.openjdk.java.net/display/CodeTools/sigtest +* Source: http://hg.openjdk.java.net/code-tools/sigtest/file/c57f97e2ac2f + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. \ No newline at end of file diff --git a/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/LICENSE.md b/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..6fb337cb0 --- /dev/null +++ b/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/LICENSE.md @@ -0,0 +1,29 @@ + + Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/NOTICE.md b/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..417ebab29 --- /dev/null +++ b/licenses/jakarta.xml.bind-api-4.0.2.jar/META-INF/NOTICE.md @@ -0,0 +1,47 @@ +[//]: # " Copyright (c) 2018, 2024 Oracle and/or its affiliates. All rights reserved. " +[//]: # " " +[//]: # " This program and the accompanying materials are made available under the " +[//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " +[//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " +[//]: # " " +[//]: # " SPDX-License-Identifier: BSD-3-Clause " + +# Notices for Jakarta XML Binding + +This content is produced and maintained by the Jakarta XML Binding project. + +* Project home: https://projects.eclipse.org/projects/ee4j.jaxb + +## Trademarks + +Jakarta XML Binding™ is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v1.0 which is available at +https://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: BSD-3-Clause + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/jakartaee/jaxb-api +* https://github.com/jakartaee/jaxb-tck + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. diff --git a/licenses/java-semver-0.10.2.jar/META-INF/LICENSE b/licenses/java-semver-0.10.2.jar/META-INF/LICENSE new file mode 100644 index 000000000..251865ad7 --- /dev/null +++ b/licenses/java-semver-0.10.2.jar/META-INF/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright 2012-2024 Zafar Khaja <zafarkhaja@gmail.com>. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/licenses/jaxb-core-4.0.5.jar/META-INF/LICENSE.md b/licenses/jaxb-core-4.0.5.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..da1c1cea7 --- /dev/null +++ b/licenses/jaxb-core-4.0.5.jar/META-INF/LICENSE.md @@ -0,0 +1,28 @@ +Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/licenses/jaxb-core-4.0.5.jar/META-INF/NOTICE.md b/licenses/jaxb-core-4.0.5.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..cd46a173a --- /dev/null +++ b/licenses/jaxb-core-4.0.5.jar/META-INF/NOTICE.md @@ -0,0 +1,191 @@ +# Notices for Eclipse Implementation of JAXB + +This content is produced and maintained by the Eclipse Implementation of JAXB +project. + +* Project home: https://projects.eclipse.org/projects/ee4j.jaxb-impl + +## Trademarks + +Eclipse Implementation of JAXB is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v. 1.0 which is available at +http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: BSD-3-Clause + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/eclipse-ee4j/jaxb-ri +* https://github.com/eclipse-ee4j/jaxb-istack-commons +* https://github.com/eclipse-ee4j/jaxb-dtd-parser +* https://github.com/eclipse-ee4j/jaxb-fi +* https://github.com/eclipse-ee4j/jaxb-stax-ex +* https://github.com/eclipse-ee4j/jax-rpc-ri + +## Third-party Content + +This project leverages the following third party content. + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Felix (1.2.0) + +* License: Apache License, 2.0 + +args4j (2.33) + +* License: MIT License + +dom4j (1.6.1) + +* License: Custom license based on Apache 1.1 + +file-management (3.0.0) + +* License: Apache-2.0 +* Project: https://maven.apache.org/shared/file-management/ +* Source: + https://svn.apache.org/viewvc/maven/shared/tags/file-management-3.0.0/ + +JUnit (4.12) + +* License: Eclipse Public License + +JUnit (4.12) + +* License: Eclipse Public License + +maven-compat (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-compat/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-compat/3.5.2 + +maven-core (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-core/index.html +* Source: https://mvnrepository.com/artifact/org.apache.maven/maven-core/3.5.2 + +maven-plugin-annotations (3.5) + +* License: Apache-2.0 +* Project: https://maven.apache.org/plugin-tools/maven-plugin-annotations/ +* Source: + https://github.com/apache/maven-plugin-tools/tree/master/maven-plugin-annotations + +maven-plugin-api (3.5.2) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-connector-basic (1.1.1) + +* License: Apache-2.0 + +maven-resolver-impl (1.1.1) + +* License: Apache-2.0 + +maven-resolver-spi (1.1.1) + +* License: Apache-2.0 + +maven-resolver-transport-file (1.1.1) + +* License: Apache-2.0 +* Project: https://maven.apache.org/resolver/maven-resolver-transport-file/ +* Source: + https://github.com/apache/maven-resolver/tree/master/maven-resolver-transport-file + +maven-resolver-util (1.1.1) + +* License: Apache-2.0 + +maven-settings (3.5.2) + +* License: Apache-2.0 +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-settings/3.5.2 + +OSGi Service Platform Core Companion Code (6.0) + +* License: Apache License, 2.0 + +plexus-archiver (3.5) + +* License: Apache-2.0 +* Project: https://codehaus-plexus.github.io/plexus-archiver/ +* Source: https://github.com/codehaus-plexus/plexus-archiver + +plexus-io (3.0.0) + +* License: Apache-2.0 + +plexus-utils (3.1.0) + +* License: Apache- 2.0 or Apache- 1.1 or BSD or Public Domain or Indiana + University Extreme! Lab Software License V1.1.1 (Apache 1.1 style) + +relaxng-datatype (1.0) + +* License: New BSD license + +Sax (0.2) + +* License: SAX-PD +* Project: http://www.megginson.com/downloads/SAX/ +* Source: http://sourceforge.net/project/showfiles.php?group_id=29449 + +testng (6.14.2) + +* License: Apache-2.0 AND (MIT OR GPL-1.0+) +* Project: https://testng.org/doc/index.html +* Source: https://github.com/cbeust/testng + +wagon-http-lightweight (3.0.0) + +* License: Pending +* Project: https://maven.apache.org/wagon/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http-lightweight/3.0.0 + +xz for java (1.8) + +* License: LicenseRef-Public-Domain + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. + diff --git a/licenses/jaxb-runtime-4.0.5.jar/META-INF/LICENSE.md b/licenses/jaxb-runtime-4.0.5.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..da1c1cea7 --- /dev/null +++ b/licenses/jaxb-runtime-4.0.5.jar/META-INF/LICENSE.md @@ -0,0 +1,28 @@ +Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/licenses/jaxb-runtime-4.0.5.jar/META-INF/NOTICE.md b/licenses/jaxb-runtime-4.0.5.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..cd46a173a --- /dev/null +++ b/licenses/jaxb-runtime-4.0.5.jar/META-INF/NOTICE.md @@ -0,0 +1,191 @@ +# Notices for Eclipse Implementation of JAXB + +This content is produced and maintained by the Eclipse Implementation of JAXB +project. + +* Project home: https://projects.eclipse.org/projects/ee4j.jaxb-impl + +## Trademarks + +Eclipse Implementation of JAXB is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v. 1.0 which is available at +http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: BSD-3-Clause + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/eclipse-ee4j/jaxb-ri +* https://github.com/eclipse-ee4j/jaxb-istack-commons +* https://github.com/eclipse-ee4j/jaxb-dtd-parser +* https://github.com/eclipse-ee4j/jaxb-fi +* https://github.com/eclipse-ee4j/jaxb-stax-ex +* https://github.com/eclipse-ee4j/jax-rpc-ri + +## Third-party Content + +This project leverages the following third party content. + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Felix (1.2.0) + +* License: Apache License, 2.0 + +args4j (2.33) + +* License: MIT License + +dom4j (1.6.1) + +* License: Custom license based on Apache 1.1 + +file-management (3.0.0) + +* License: Apache-2.0 +* Project: https://maven.apache.org/shared/file-management/ +* Source: + https://svn.apache.org/viewvc/maven/shared/tags/file-management-3.0.0/ + +JUnit (4.12) + +* License: Eclipse Public License + +JUnit (4.12) + +* License: Eclipse Public License + +maven-compat (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-compat/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-compat/3.5.2 + +maven-core (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-core/index.html +* Source: https://mvnrepository.com/artifact/org.apache.maven/maven-core/3.5.2 + +maven-plugin-annotations (3.5) + +* License: Apache-2.0 +* Project: https://maven.apache.org/plugin-tools/maven-plugin-annotations/ +* Source: + https://github.com/apache/maven-plugin-tools/tree/master/maven-plugin-annotations + +maven-plugin-api (3.5.2) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-connector-basic (1.1.1) + +* License: Apache-2.0 + +maven-resolver-impl (1.1.1) + +* License: Apache-2.0 + +maven-resolver-spi (1.1.1) + +* License: Apache-2.0 + +maven-resolver-transport-file (1.1.1) + +* License: Apache-2.0 +* Project: https://maven.apache.org/resolver/maven-resolver-transport-file/ +* Source: + https://github.com/apache/maven-resolver/tree/master/maven-resolver-transport-file + +maven-resolver-util (1.1.1) + +* License: Apache-2.0 + +maven-settings (3.5.2) + +* License: Apache-2.0 +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-settings/3.5.2 + +OSGi Service Platform Core Companion Code (6.0) + +* License: Apache License, 2.0 + +plexus-archiver (3.5) + +* License: Apache-2.0 +* Project: https://codehaus-plexus.github.io/plexus-archiver/ +* Source: https://github.com/codehaus-plexus/plexus-archiver + +plexus-io (3.0.0) + +* License: Apache-2.0 + +plexus-utils (3.1.0) + +* License: Apache- 2.0 or Apache- 1.1 or BSD or Public Domain or Indiana + University Extreme! Lab Software License V1.1.1 (Apache 1.1 style) + +relaxng-datatype (1.0) + +* License: New BSD license + +Sax (0.2) + +* License: SAX-PD +* Project: http://www.megginson.com/downloads/SAX/ +* Source: http://sourceforge.net/project/showfiles.php?group_id=29449 + +testng (6.14.2) + +* License: Apache-2.0 AND (MIT OR GPL-1.0+) +* Project: https://testng.org/doc/index.html +* Source: https://github.com/cbeust/testng + +wagon-http-lightweight (3.0.0) + +* License: Pending +* Project: https://maven.apache.org/wagon/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http-lightweight/3.0.0 + +xz for java (1.8) + +* License: LicenseRef-Public-Domain + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. + diff --git a/licenses/licences.md b/licenses/licences.md index 88737814b..0eac57284 100644 --- a/licenses/licences.md +++ b/licenses/licences.md @@ -1,7 +1,7 @@ # Dependency Licenses ## Dependency License Report -_2024-02-13 21:42:39 MEZ_ +_2024-05-26 14:44:22 MESZ_ ## Apache License, Version 2.0 **1** **Group:** `com.cronutils` **Name:** `cron-utils` **Version:** `9.2.1` @@ -9,49 +9,49 @@ _2024-02-13 21:42:39 MEZ_ > - **POM Project URL**: [http://cron-parser.com/](http://cron-parser.com/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**2** **Group:** `com.fasterxml.jackson.core` **Name:** `jackson-databind` **Version:** `2.15.3` +**2** **Group:** `com.fasterxml.jackson.core` **Name:** `jackson-databind` **Version:** `2.17.0` > - **Project URL**: [https://github.com/FasterXML/jackson](https://github.com/FasterXML/jackson) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [jackson-databind-2.15.3.jar/META-INF/LICENSE](jackson-databind-2.15.3.jar/META-INF/LICENSE) - - [jackson-databind-2.15.3.jar/META-INF/NOTICE](jackson-databind-2.15.3.jar/META-INF/NOTICE) +> - **Embedded license files**: [jackson-databind-2.17.0.jar/META-INF/LICENSE](jackson-databind-2.17.0.jar/META-INF/LICENSE) + - [jackson-databind-2.17.0.jar/META-INF/NOTICE](jackson-databind-2.17.0.jar/META-INF/NOTICE) -**3** **Group:** `com.fasterxml.jackson.module` **Name:** `jackson-module-kotlin` **Version:** `2.14.2` +**3** **Group:** `com.fasterxml.jackson.module` **Name:** `jackson-module-kotlin` **Version:** `2.17.0` > - **Project URL**: [https://github.com/FasterXML/jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [jackson-module-kotlin-2.14.2.jar/META-INF/LICENSE](jackson-module-kotlin-2.14.2.jar/META-INF/LICENSE) - - [jackson-module-kotlin-2.14.2.jar/META-INF/NOTICE](jackson-module-kotlin-2.14.2.jar/META-INF/NOTICE) +> - **Embedded license files**: [jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE](jackson-module-kotlin-2.17.0.jar/META-INF/LICENSE) + - [jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE](jackson-module-kotlin-2.17.0.jar/META-INF/NOTICE) -**4** **Group:** `com.fasterxml.jackson.module` **Name:** `jackson-module-kotlin` **Version:** `2.15.3` +**4** **Group:** `com.fasterxml.jackson.module` **Name:** `jackson-module-kotlin` **Version:** `2.17.1` > - **Project URL**: [https://github.com/FasterXML/jackson-module-kotlin](https://github.com/FasterXML/jackson-module-kotlin) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [jackson-module-kotlin-2.15.3.jar/META-INF/LICENSE](jackson-module-kotlin-2.15.3.jar/META-INF/LICENSE) - - [jackson-module-kotlin-2.15.3.jar/META-INF/NOTICE](jackson-module-kotlin-2.15.3.jar/META-INF/NOTICE) +> - **Embedded license files**: [jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE](jackson-module-kotlin-2.17.1.jar/META-INF/LICENSE) + - [jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE](jackson-module-kotlin-2.17.1.jar/META-INF/NOTICE) -**5** **Group:** `com.formdev` **Name:** `flatlaf` **Version:** `3.2.5` +**5** **Group:** `com.formdev` **Name:** `flatlaf` **Version:** `3.4` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [flatlaf-3.2.5.jar/META-INF/LICENSE](flatlaf-3.2.5.jar/META-INF/LICENSE) +> - **Embedded license files**: [flatlaf-3.4.jar/META-INF/LICENSE](flatlaf-3.4.jar/META-INF/LICENSE) -**6** **Group:** `com.formdev` **Name:** `flatlaf-extras` **Version:** `3.2.5` +**6** **Group:** `com.formdev` **Name:** `flatlaf-extras` **Version:** `3.4` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [flatlaf-extras-3.2.5.jar/META-INF/LICENSE](flatlaf-extras-3.2.5.jar/META-INF/LICENSE) +> - **Embedded license files**: [flatlaf-extras-3.4.jar/META-INF/LICENSE](flatlaf-extras-3.4.jar/META-INF/LICENSE) -**7** **Group:** `com.formdev` **Name:** `flatlaf-fonts-inter` **Version:** `3.19` +**7** **Group:** `com.formdev` **Name:** `flatlaf-fonts-inter` **Version:** `4.0` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: SIL OPEN FONT LICENSE Version 1.1 - [https://choosealicense.com/licenses/ofl-1.1/](https://choosealicense.com/licenses/ofl-1.1/) -> - **Embedded license files**: [flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE](flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE) - - [flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt](flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt) +> - **Embedded license files**: [flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE](flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE) + - [flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt](flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt) -**8** **Group:** `com.formdev` **Name:** `flatlaf-fonts-jetbrains-mono` **Version:** `2.242` +**8** **Group:** `com.formdev` **Name:** `flatlaf-fonts-jetbrains-mono` **Version:** `2.304` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: SIL OPEN FONT LICENSE Version 1.1 - [https://choosealicense.com/licenses/ofl-1.1/](https://choosealicense.com/licenses/ofl-1.1/) -> - **Embedded license files**: [flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE](flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE) +> - **Embedded license files**: [flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE](flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE) **9** **Group:** `com.formdev` **Name:** `flatlaf-fonts-roboto` **Version:** `2.137` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) @@ -65,19 +65,19 @@ _2024-02-13 21:42:39 MEZ_ > - **Embedded license files**: [flatlaf-fonts-roboto-mono-3.000.jar/META-INF/LICENSE](flatlaf-fonts-roboto-mono-3.000.jar/META-INF/LICENSE) - [flatlaf-fonts-roboto-mono-3.000.jar/com/formdev/flatlaf/fonts/roboto_mono/LICENSE.txt](flatlaf-fonts-roboto-mono-3.000.jar/com/formdev/flatlaf/fonts/roboto_mono/LICENSE.txt) -**11** **Group:** `com.formdev` **Name:** `flatlaf-intellij-themes` **Version:** `3.2.5` +**11** **Group:** `com.formdev` **Name:** `flatlaf-intellij-themes` **Version:** `3.4` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [flatlaf-intellij-themes-3.2.5.jar/META-INF/LICENSE](flatlaf-intellij-themes-3.2.5.jar/META-INF/LICENSE) +> - **Embedded license files**: [flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE](flatlaf-intellij-themes-3.4.jar/META-INF/LICENSE) -**12** **Group:** `commons-io` **Name:** `commons-io` **Version:** `2.14.0` +**12** **Group:** `commons-io` **Name:** `commons-io` **Version:** `2.16.1` > - **Project URL**: [https://commons.apache.org/proper/commons-io/](https://commons.apache.org/proper/commons-io/) > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [commons-io-2.14.0.jar/META-INF/LICENSE.txt](commons-io-2.14.0.jar/META-INF/LICENSE.txt) - - [commons-io-2.14.0.jar/META-INF/NOTICE.txt](commons-io-2.14.0.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [commons-io-2.16.1.jar/META-INF/LICENSE.txt](commons-io-2.16.1.jar/META-INF/LICENSE.txt) + - [commons-io-2.16.1.jar/META-INF/NOTICE.txt](commons-io-2.16.1.jar/META-INF/NOTICE.txt) -**13** **Group:** `de.comahe.i18n4k` **Name:** `i18n4k-core-jvm` **Version:** `0.6.2` +**13** **Group:** `de.comahe.i18n4k` **Name:** `i18n4k-core-jvm` **Version:** `0.7.0` > - **POM Project URL**: [https://comahe-de.github.io/i18n4k/](https://comahe-de.github.io/i18n4k/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) @@ -86,79 +86,79 @@ _2024-02-13 21:42:39 MEZ_ > - **POM Project URL**: [https://github.com/srikanth-lingala/zip4j](https://github.com/srikanth-lingala/zip4j) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**15** **Group:** `org.apache.logging.log4j` **Name:** `log4j-api-kotlin` **Version:** `1.3.0` +**15** **Group:** `org.apache.logging.log4j` **Name:** `log4j-api-kotlin` **Version:** `1.4.0` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [log4j-api-kotlin-1.3.0.jar/META-INF/LICENSE](log4j-api-kotlin-1.3.0.jar/META-INF/LICENSE) - - [log4j-api-kotlin-1.3.0.jar/META-INF/NOTICE](log4j-api-kotlin-1.3.0.jar/META-INF/NOTICE) +> - **Embedded license files**: [log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE](log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE) + - [log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE](log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE) -**16** **Group:** `org.apache.logging.log4j` **Name:** `log4j-core` **Version:** `2.21.0` +**16** **Group:** `org.apache.logging.log4j` **Name:** `log4j-core` **Version:** `2.23.1` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [log4j-core-2.21.0.jar/META-INF/LICENSE](log4j-core-2.21.0.jar/META-INF/LICENSE) - - [log4j-core-2.21.0.jar/META-INF/NOTICE](log4j-core-2.21.0.jar/META-INF/NOTICE) +> - **Embedded license files**: [log4j-core-2.23.1.jar/META-INF/LICENSE](log4j-core-2.23.1.jar/META-INF/LICENSE) + - [log4j-core-2.23.1.jar/META-INF/NOTICE](log4j-core-2.23.1.jar/META-INF/NOTICE) -**17** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.29.2-GA` +**17** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.30.2-GA` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) -> - **POM Project URL**: [http://www.javassist.org/](http://www.javassist.org/) +> - **POM Project URL**: [https://www.javassist.org/](https://www.javassist.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1) > - **POM License**: Mozilla Public License Version 1.1 - [https://www.mozilla.org/en-US/MPL/1.1](https://www.mozilla.org/en-US/MPL/1.1) -**18** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-reflect` **Version:** `1.9.10` +**18** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-reflect` **Version:** `1.9.23` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**19** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-reflect` **Version:** `1.9.21` +**19** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `1.9.23` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**20** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `1.9.21` +**20** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-stdlib` **Version:** `2.0.0-RC1` > - **POM Project URL**: [https://kotlinlang.org/](https://kotlinlang.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**21** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-coroutines-swing` **Version:** `1.7.3` +**21** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-coroutines-swing` **Version:** `1.8.0` > - **POM Project URL**: [https://github.com/Kotlin/kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**22** **Group:** `org.pf4j` **Name:** `pf4j` **Version:** `3.10.0` +**22** **Group:** `org.pf4j` **Name:** `pf4j` **Version:** `3.11.0` > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**23** **Group:** `org.springframework.boot` **Name:** `spring-boot-devtools` **Version:** `3.0.4` +**23** **Group:** `org.springframework.boot` **Name:** `spring-boot-devtools` **Version:** `3.2.5` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-devtools-3.0.4.jar/META-INF/LICENSE.txt](spring-boot-devtools-3.0.4.jar/META-INF/LICENSE.txt) - - [spring-boot-devtools-3.0.4.jar/META-INF/NOTICE.txt](spring-boot-devtools-3.0.4.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt](spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt) + - [spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt](spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt) -**24** **Group:** `org.springframework.boot` **Name:** `spring-boot-devtools` **Version:** `3.2.0` +**24** **Group:** `org.springframework.boot` **Name:** `spring-boot-devtools` **Version:** `3.3.0` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-devtools-3.2.0.jar/META-INF/LICENSE.txt](spring-boot-devtools-3.2.0.jar/META-INF/LICENSE.txt) - - [spring-boot-devtools-3.2.0.jar/META-INF/NOTICE.txt](spring-boot-devtools-3.2.0.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt](spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt) + - [spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt](spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt) -**25** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-data-jpa` **Version:** `3.0.4` +**25** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-data-jpa` **Version:** `3.2.5` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-starter-data-jpa-3.0.4.jar/META-INF/LICENSE.txt](spring-boot-starter-data-jpa-3.0.4.jar/META-INF/LICENSE.txt) - - [spring-boot-starter-data-jpa-3.0.4.jar/META-INF/NOTICE.txt](spring-boot-starter-data-jpa-3.0.4.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt](spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt) + - [spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt](spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt) -**26** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-log4j2` **Version:** `3.0.4` +**26** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-log4j2` **Version:** `3.2.4` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-starter-log4j2-3.0.4.jar/META-INF/LICENSE.txt](spring-boot-starter-log4j2-3.0.4.jar/META-INF/LICENSE.txt) - - [spring-boot-starter-log4j2-3.0.4.jar/META-INF/NOTICE.txt](spring-boot-starter-log4j2-3.0.4.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt](spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt) + - [spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt](spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt) -**27** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-web` **Version:** `3.1.0` +**27** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-web` **Version:** `3.2.4` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-starter-web-3.1.0.jar/META-INF/LICENSE.txt](spring-boot-starter-web-3.1.0.jar/META-INF/LICENSE.txt) - - [spring-boot-starter-web-3.1.0.jar/META-INF/NOTICE.txt](spring-boot-starter-web-3.1.0.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt](spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt) + - [spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt](spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt) -**28** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-web` **Version:** `3.2.0` +**28** **Group:** `org.springframework.boot` **Name:** `spring-boot-starter-web` **Version:** `3.3.0` > - **POM Project URL**: [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -> - **Embedded license files**: [spring-boot-starter-web-3.2.0.jar/META-INF/LICENSE.txt](spring-boot-starter-web-3.2.0.jar/META-INF/LICENSE.txt) - - [spring-boot-starter-web-3.2.0.jar/META-INF/NOTICE.txt](spring-boot-starter-web-3.2.0.jar/META-INF/NOTICE.txt) +> - **Embedded license files**: [spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt](spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt) + - [spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt](spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt) ## BSD Zero Clause License @@ -167,21 +167,21 @@ _2024-02-13 21:42:39 MEZ_ > - **POM License**: BSD Zero Clause License - [https://opensource.org/licenses/0BSD](https://opensource.org/licenses/0BSD) > - **POM License**: The 2-Clause BSD License - [https://opensource.org/licenses/BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause) -**30** **Group:** `com.miglayout` **Name:** `miglayout-swing` **Version:** `11.2` +**30** **Group:** `com.miglayout` **Name:** `miglayout-swing` **Version:** `11.3` > - **POM Project URL**: [http://www.miglayout.com/](http://www.miglayout.com/) > - **POM License**: BSD Zero Clause License - [https://opensource.org/licenses/0BSD](https://opensource.org/licenses/0BSD) ## Bouncy Castle Licence -**31** **Group:** `org.bouncycastle` **Name:** `bcpkix-jdk18on` **Version:** `1.77` +**31** **Group:** `org.bouncycastle` **Name:** `bcpkix-jdk18on` **Version:** `1.78` > - **POM Project URL**: [https://www.bouncycastle.org/java.html](https://www.bouncycastle.org/java.html) > - **POM License**: Bouncy Castle Licence - [https://www.bouncycastle.org/licence.html](https://www.bouncycastle.org/licence.html) ## GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 -**32** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.29.2-GA` +**32** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.30.2-GA` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) -> - **POM Project URL**: [http://www.javassist.org/](http://www.javassist.org/) +> - **POM Project URL**: [https://www.javassist.org/](https://www.javassist.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1) > - **POM License**: Mozilla Public License Version 1.1 - [https://www.mozilla.org/en-US/MPL/1.1](https://www.mozilla.org/en-US/MPL/1.1) @@ -192,33 +192,33 @@ _2024-02-13 21:42:39 MEZ_ ## GNU Lesser General Public License v3.0 -**34** **Group:** `com.electronwill.night-config` **Name:** `toml` **Version:** `3.6.7` -> - **POM Project URL**: [https://github.com/TheElectronWill/Night-Config](https://github.com/TheElectronWill/Night-Config) +**34** **Group:** `com.electronwill.night-config` **Name:** `toml` **Version:** `3.7.1` +> - **POM Project URL**: [https://github.com/TheElectronWill/night-config](https://github.com/TheElectronWill/night-config) > - **POM License**: GNU Lesser General Public License v3.0 - [https://www.gnu.org/licenses/lgpl-3.0.txt](https://www.gnu.org/licenses/lgpl-3.0.txt) ## Mozilla Public License Version 1.1 -**35** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.29.2-GA` +**35** **Group:** `org.javassist` **Name:** `javassist` **Version:** `3.30.2-GA` > - **Manifest License**: Apache License, Version 2.0 (Not Packaged) -> - **POM Project URL**: [http://www.javassist.org/](http://www.javassist.org/) +> - **POM Project URL**: [https://www.javassist.org/](https://www.javassist.org/) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: GNU LESSER GENERAL PUBLIC LICENSE, Version 2.1 - [https://www.gnu.org/licenses/lgpl-2.1](https://www.gnu.org/licenses/lgpl-2.1) > - **POM License**: Mozilla Public License Version 1.1 - [https://www.mozilla.org/en-US/MPL/1.1](https://www.mozilla.org/en-US/MPL/1.1) ## SIL OPEN FONT LICENSE Version 1.1 -**36** **Group:** `com.formdev` **Name:** `flatlaf-fonts-inter` **Version:** `3.19` +**36** **Group:** `com.formdev` **Name:** `flatlaf-fonts-inter` **Version:** `4.0` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: SIL OPEN FONT LICENSE Version 1.1 - [https://choosealicense.com/licenses/ofl-1.1/](https://choosealicense.com/licenses/ofl-1.1/) -> - **Embedded license files**: [flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE](flatlaf-fonts-inter-3.19.jar/META-INF/LICENSE) - - [flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt](flatlaf-fonts-inter-3.19.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt) +> - **Embedded license files**: [flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE](flatlaf-fonts-inter-4.0.jar/META-INF/LICENSE) + - [flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt](flatlaf-fonts-inter-4.0.jar/com/formdev/flatlaf/fonts/inter/LICENSE.txt) -**37** **Group:** `com.formdev` **Name:** `flatlaf-fonts-jetbrains-mono` **Version:** `2.242` +**37** **Group:** `com.formdev` **Name:** `flatlaf-fonts-jetbrains-mono` **Version:** `2.304` > - **POM Project URL**: [https://github.com/JFormDesigner/FlatLaf](https://github.com/JFormDesigner/FlatLaf) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) > - **POM License**: SIL OPEN FONT LICENSE Version 1.1 - [https://choosealicense.com/licenses/ofl-1.1/](https://choosealicense.com/licenses/ofl-1.1/) -> - **Embedded license files**: [flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE](flatlaf-fonts-jetbrains-mono-2.242.jar/META-INF/LICENSE) +> - **Embedded license files**: [flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE](flatlaf-fonts-jetbrains-mono-2.304.jar/META-INF/LICENSE) ## The 2-Clause BSD License @@ -227,16 +227,16 @@ _2024-02-13 21:42:39 MEZ_ > - **POM License**: BSD Zero Clause License - [https://opensource.org/licenses/0BSD](https://opensource.org/licenses/0BSD) > - **POM License**: The 2-Clause BSD License - [https://opensource.org/licenses/BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause) -**39** **Group:** `org.postgresql` **Name:** `postgresql` **Version:** `42.6.0` +**39** **Group:** `org.postgresql` **Name:** `postgresql` **Version:** `42.7.3` > - **Manifest Project URL**: [https://jdbc.postgresql.org/](https://jdbc.postgresql.org/) > - **Manifest License**: The 2-Clause BSD License (Not Packaged) > - **POM Project URL**: [https://jdbc.postgresql.org](https://jdbc.postgresql.org) > - **POM License**: The 2-Clause BSD License - [https://opensource.org/licenses/BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause) -> - **Embedded license files**: [postgresql-42.6.0.jar/META-INF/LICENSE](postgresql-42.6.0.jar/META-INF/LICENSE) - - [postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE](postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE) - - [postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE](postgresql-42.6.0.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE) - - [postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE](postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE) - - [postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE](postgresql-42.6.0.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE) +> - **Embedded license files**: [postgresql-42.7.3.jar/META-INF/LICENSE](postgresql-42.7.3.jar/META-INF/LICENSE) + - [postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE](postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE) + - [postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE](postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE) + - [postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE](postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE) + - [postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE](postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE) ## The 3-Clause BSD License @@ -246,16 +246,16 @@ _2024-02-13 21:42:39 MEZ_ ## Unknown -**41** **Group:** `de.comahe.i18n4k` **Name:** `i18n4k-core` **Version:** `0.6.2` +**41** **Group:** `de.comahe.i18n4k` **Name:** `i18n4k-core` **Version:** `0.7.0` -**42** **Group:** `de.jensklingenberg.ktorfit` **Name:** `ktorfit-lib` **Version:** `1.9.0` +**42** **Group:** `de.jensklingenberg.ktorfit` **Name:** `ktorfit-lib` **Version:** `1.14.0` **43** **Group:** `io.github.microutils` **Name:** `kotlin-logging` **Version:** `3.0.5` -**44** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-bom` **Version:** `1.9.21` +**44** **Group:** `org.jetbrains.kotlin` **Name:** `kotlin-bom` **Version:** `1.9.23` -**45** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-coroutines-core` **Version:** `1.7.3` +**45** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-coroutines-core` **Version:** `1.8.0` -**46** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-datetime` **Version:** `0.4.1` +**46** **Group:** `org.jetbrains.kotlinx` **Name:** `kotlinx-datetime` **Version:** `0.5.0` diff --git a/licenses/log4j-api-2.23.1.jar/META-INF/LICENSE b/licenses/log4j-api-2.23.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/log4j-api-2.23.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/log4j-api-2.23.1.jar/META-INF/NOTICE b/licenses/log4j-api-2.23.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..62c3d128f --- /dev/null +++ b/licenses/log4j-api-2.23.1.jar/META-INF/NOTICE @@ -0,0 +1,6 @@ +Apache Log4j API +Copyright 1999-2024 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE b/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE b/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..ffacd8ed1 --- /dev/null +++ b/licenses/log4j-api-kotlin-1.4.0.jar/META-INF/NOTICE @@ -0,0 +1,6 @@ +Apache Log4j Kotlin API +Copyright 1999-2023 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/log4j-core-2.23.1.jar/META-INF/LICENSE b/licenses/log4j-core-2.23.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..6279e5206 --- /dev/null +++ b/licenses/log4j-core-2.23.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 1999-2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/log4j-core-2.23.1.jar/META-INF/NOTICE b/licenses/log4j-core-2.23.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..97ccc5358 --- /dev/null +++ b/licenses/log4j-core-2.23.1.jar/META-INF/NOTICE @@ -0,0 +1,8 @@ +Apache Log4j Core +Copyright 1999-2012 Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +ResolverUtil.java +Copyright 2005-2006 Tim Fennell \ No newline at end of file diff --git a/licenses/log4j-jul-2.23.1.jar/META-INF/LICENSE b/licenses/log4j-jul-2.23.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/log4j-jul-2.23.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/log4j-jul-2.23.1.jar/META-INF/NOTICE b/licenses/log4j-jul-2.23.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..a15ae3cbd --- /dev/null +++ b/licenses/log4j-jul-2.23.1.jar/META-INF/NOTICE @@ -0,0 +1,6 @@ +Apache Log4j JUL Adapter +Copyright 1999-2024 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/LICENSE b/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/NOTICE b/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/NOTICE new file mode 100644 index 000000000..6cad5dcef --- /dev/null +++ b/licenses/log4j-slf4j2-impl-2.23.1.jar/META-INF/NOTICE @@ -0,0 +1,6 @@ +Apache Log4j SLF4J 2.0 Binding +Copyright 1999-2024 The Apache Software Foundation + + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/micrometer-commons-1.12.4.jar/META-INF/LICENSE b/licenses/micrometer-commons-1.12.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..9b259bdfc --- /dev/null +++ b/licenses/micrometer-commons-1.12.4.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/micrometer-commons-1.12.4.jar/META-INF/NOTICE b/licenses/micrometer-commons-1.12.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..076c3641f --- /dev/null +++ b/licenses/micrometer-commons-1.12.4.jar/META-INF/NOTICE @@ -0,0 +1,45 @@ +Micrometer + +Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------- + +This product contains a modified portion of 'io.netty.util.internal.logging', +in the Netty/Common library distributed by The Netty Project: + + * Copyright 2013 The Netty Project + * License: Apache License v2.0 + * Homepage: https://netty.io + +This product contains a modified portion of 'StringUtils.isBlank()', +in the Commons Lang library distributed by The Apache Software Foundation: + + * Copyright 2001-2019 The Apache Software Foundation + * License: Apache License v2.0 + * Homepage: https://commons.apache.org/proper/commons-lang/ + +This product contains a modified portion of 'JsonUtf8Writer', +in the Moshi library distributed by Square, Inc: + + * Copyright 2010 Google Inc. + * License: Apache License v2.0 + * Homepage: https://github.com/square/moshi + +This product contains a modified portion of the 'org.springframework.lang' +package in the Spring Framework library, distributed by VMware, Inc: + + * Copyright 2002-2019 the original author or authors. + * License: Apache License v2.0 + * Homepage: https://spring.io/projects/spring-framework diff --git a/licenses/micrometer-commons-1.13.0.jar/META-INF/LICENSE b/licenses/micrometer-commons-1.13.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..9b259bdfc --- /dev/null +++ b/licenses/micrometer-commons-1.13.0.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/micrometer-commons-1.13.0.jar/META-INF/NOTICE b/licenses/micrometer-commons-1.13.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..076c3641f --- /dev/null +++ b/licenses/micrometer-commons-1.13.0.jar/META-INF/NOTICE @@ -0,0 +1,45 @@ +Micrometer + +Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------- + +This product contains a modified portion of 'io.netty.util.internal.logging', +in the Netty/Common library distributed by The Netty Project: + + * Copyright 2013 The Netty Project + * License: Apache License v2.0 + * Homepage: https://netty.io + +This product contains a modified portion of 'StringUtils.isBlank()', +in the Commons Lang library distributed by The Apache Software Foundation: + + * Copyright 2001-2019 The Apache Software Foundation + * License: Apache License v2.0 + * Homepage: https://commons.apache.org/proper/commons-lang/ + +This product contains a modified portion of 'JsonUtf8Writer', +in the Moshi library distributed by Square, Inc: + + * Copyright 2010 Google Inc. + * License: Apache License v2.0 + * Homepage: https://github.com/square/moshi + +This product contains a modified portion of the 'org.springframework.lang' +package in the Spring Framework library, distributed by VMware, Inc: + + * Copyright 2002-2019 the original author or authors. + * License: Apache License v2.0 + * Homepage: https://spring.io/projects/spring-framework diff --git a/licenses/micrometer-observation-1.12.4.jar/META-INF/LICENSE b/licenses/micrometer-observation-1.12.4.jar/META-INF/LICENSE new file mode 100644 index 000000000..9b259bdfc --- /dev/null +++ b/licenses/micrometer-observation-1.12.4.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/micrometer-observation-1.12.4.jar/META-INF/NOTICE b/licenses/micrometer-observation-1.12.4.jar/META-INF/NOTICE new file mode 100644 index 000000000..076c3641f --- /dev/null +++ b/licenses/micrometer-observation-1.12.4.jar/META-INF/NOTICE @@ -0,0 +1,45 @@ +Micrometer + +Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------- + +This product contains a modified portion of 'io.netty.util.internal.logging', +in the Netty/Common library distributed by The Netty Project: + + * Copyright 2013 The Netty Project + * License: Apache License v2.0 + * Homepage: https://netty.io + +This product contains a modified portion of 'StringUtils.isBlank()', +in the Commons Lang library distributed by The Apache Software Foundation: + + * Copyright 2001-2019 The Apache Software Foundation + * License: Apache License v2.0 + * Homepage: https://commons.apache.org/proper/commons-lang/ + +This product contains a modified portion of 'JsonUtf8Writer', +in the Moshi library distributed by Square, Inc: + + * Copyright 2010 Google Inc. + * License: Apache License v2.0 + * Homepage: https://github.com/square/moshi + +This product contains a modified portion of the 'org.springframework.lang' +package in the Spring Framework library, distributed by VMware, Inc: + + * Copyright 2002-2019 the original author or authors. + * License: Apache License v2.0 + * Homepage: https://spring.io/projects/spring-framework diff --git a/licenses/micrometer-observation-1.13.0.jar/META-INF/LICENSE b/licenses/micrometer-observation-1.13.0.jar/META-INF/LICENSE new file mode 100644 index 000000000..9b259bdfc --- /dev/null +++ b/licenses/micrometer-observation-1.13.0.jar/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/micrometer-observation-1.13.0.jar/META-INF/NOTICE b/licenses/micrometer-observation-1.13.0.jar/META-INF/NOTICE new file mode 100644 index 000000000..076c3641f --- /dev/null +++ b/licenses/micrometer-observation-1.13.0.jar/META-INF/NOTICE @@ -0,0 +1,45 @@ +Micrometer + +Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------- + +This product contains a modified portion of 'io.netty.util.internal.logging', +in the Netty/Common library distributed by The Netty Project: + + * Copyright 2013 The Netty Project + * License: Apache License v2.0 + * Homepage: https://netty.io + +This product contains a modified portion of 'StringUtils.isBlank()', +in the Commons Lang library distributed by The Apache Software Foundation: + + * Copyright 2001-2019 The Apache Software Foundation + * License: Apache License v2.0 + * Homepage: https://commons.apache.org/proper/commons-lang/ + +This product contains a modified portion of 'JsonUtf8Writer', +in the Moshi library distributed by Square, Inc: + + * Copyright 2010 Google Inc. + * License: Apache License v2.0 + * Homepage: https://github.com/square/moshi + +This product contains a modified portion of the 'org.springframework.lang' +package in the Spring Framework library, distributed by VMware, Inc: + + * Copyright 2002-2019 the original author or authors. + * License: Apache License v2.0 + * Homepage: https://spring.io/projects/spring-framework diff --git a/licenses/postgresql-42.6.2.jar/META-INF/LICENSE b/licenses/postgresql-42.6.2.jar/META-INF/LICENSE new file mode 100644 index 000000000..daa7e320f --- /dev/null +++ b/licenses/postgresql-42.6.2.jar/META-INF/LICENSE @@ -0,0 +1,33 @@ +Copyright (c) 1997, PostgreSQL Global Development Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Additional License files can be found in the 'licenses' folder located in the same directory as the LICENSE file (i.e. this file) + +- Software produced outside the ASF which is available under other licenses (not Apache-2.0) + +BSD-2-Clause +* com.ongres.scram:client:2.1 +* com.ongres.scram:common:2.1 +* com.ongres.stringprep:saslprep:1.1 +* com.ongres.stringprep:stringprep:1.1 diff --git a/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE new file mode 100644 index 000000000..13fdb102a --- /dev/null +++ b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE new file mode 100644 index 000000000..13fdb102a --- /dev/null +++ b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE new file mode 100644 index 000000000..84b3fe0cd --- /dev/null +++ b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE new file mode 100644 index 000000000..84b3fe0cd --- /dev/null +++ b/licenses/postgresql-42.6.2.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.7.3.jar/META-INF/LICENSE b/licenses/postgresql-42.7.3.jar/META-INF/LICENSE new file mode 100644 index 000000000..daa7e320f --- /dev/null +++ b/licenses/postgresql-42.7.3.jar/META-INF/LICENSE @@ -0,0 +1,33 @@ +Copyright (c) 1997, PostgreSQL Global Development Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Additional License files can be found in the 'licenses' folder located in the same directory as the LICENSE file (i.e. this file) + +- Software produced outside the ASF which is available under other licenses (not Apache-2.0) + +BSD-2-Clause +* com.ongres.scram:client:2.1 +* com.ongres.scram:common:2.1 +* com.ongres.stringprep:saslprep:1.1 +* com.ongres.stringprep:stringprep:1.1 diff --git a/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE new file mode 100644 index 000000000..13fdb102a --- /dev/null +++ b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/client-2.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE new file mode 100644 index 000000000..13fdb102a --- /dev/null +++ b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.scram/common-2.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2017, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE new file mode 100644 index 000000000..84b3fe0cd --- /dev/null +++ b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/saslprep-1.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE new file mode 100644 index 000000000..84b3fe0cd --- /dev/null +++ b/licenses/postgresql-42.7.3.jar/META-INF/licenses/com.ongres.stringprep/stringprep-1.1/LICENSE @@ -0,0 +1,22 @@ +Copyright 2019, OnGres. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/licenses/slf4j-api-2.0.12.jar/META-INF/LICENSE.txt b/licenses/slf4j-api-2.0.12.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..1a3d05323 --- /dev/null +++ b/licenses/slf4j-api-2.0.12.jar/META-INF/LICENSE.txt @@ -0,0 +1,24 @@ +Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + diff --git a/licenses/slf4j-api-2.0.13.jar/META-INF/LICENSE.txt b/licenses/slf4j-api-2.0.13.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..1a3d05323 --- /dev/null +++ b/licenses/slf4j-api-2.0.13.jar/META-INF/LICENSE.txt @@ -0,0 +1,24 @@ +Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + diff --git a/licenses/spring-aop-6.1.5.jar/META-INF/license.txt b/licenses/spring-aop-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-aop-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-aop-6.1.5.jar/META-INF/notice.txt b/licenses/spring-aop-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-aop-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-aop-6.1.8.jar/META-INF/license.txt b/licenses/spring-aop-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-aop-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-aop-6.1.8.jar/META-INF/notice.txt b/licenses/spring-aop-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-aop-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-aspects-6.1.5.jar/META-INF/license.txt b/licenses/spring-aspects-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-aspects-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-aspects-6.1.5.jar/META-INF/notice.txt b/licenses/spring-aspects-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-aspects-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-aspects-6.1.8.jar/META-INF/license.txt b/licenses/spring-aspects-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-aspects-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-aspects-6.1.8.jar/META-INF/notice.txt b/licenses/spring-aspects-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-aspects-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-beans-6.1.5.jar/META-INF/license.txt b/licenses/spring-beans-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-beans-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-beans-6.1.5.jar/META-INF/notice.txt b/licenses/spring-beans-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-beans-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-beans-6.1.8.jar/META-INF/license.txt b/licenses/spring-beans-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-beans-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-beans-6.1.8.jar/META-INF/notice.txt b/licenses/spring-beans-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-beans-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-boot-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-autoconfigure-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-autoconfigure-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-devtools-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-devtools-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-devtools-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-devtools-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt b/licenses/spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-devtools-3.2.5.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt b/licenses/spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..074a1af79 --- /dev/null +++ b/licenses/spring-boot-devtools-3.2.5.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-devtools-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-devtools-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-aop-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-aop-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..074a1af79 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.2.5.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-data-jpa-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-jdbc-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-jdbc-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-json-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-json-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..716829f71 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.2.6.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.6 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-log4j2-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-tomcat-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-tomcat-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..311160f07 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.2.4.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..716829f71 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.2.6.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.2.6 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt b/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt new file mode 100644 index 000000000..823c1c8e9 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt b/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt new file mode 100644 index 000000000..ed7a391f3 --- /dev/null +++ b/licenses/spring-boot-starter-web-3.3.0.jar/META-INF/NOTICE.txt @@ -0,0 +1,6 @@ +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. \ No newline at end of file diff --git a/licenses/spring-context-6.1.5.jar/META-INF/license.txt b/licenses/spring-context-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-context-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-context-6.1.5.jar/META-INF/notice.txt b/licenses/spring-context-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-context-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-context-6.1.8.jar/META-INF/license.txt b/licenses/spring-context-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-context-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-context-6.1.8.jar/META-INF/notice.txt b/licenses/spring-context-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-context-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-core-6.1.5.jar/META-INF/license.txt b/licenses/spring-core-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-core-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-core-6.1.5.jar/META-INF/notice.txt b/licenses/spring-core-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-core-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-core-6.1.8.jar/META-INF/license.txt b/licenses/spring-core-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-core-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-core-6.1.8.jar/META-INF/notice.txt b/licenses/spring-core-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-core-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-data-commons-3.2.4.jar/license.txt b/licenses/spring-data-commons-3.2.4.jar/license.txt new file mode 100644 index 000000000..964a55d1c --- /dev/null +++ b/licenses/spring-data-commons-3.2.4.jar/license.txt @@ -0,0 +1,216 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +To the extent any open source subcomponents are licensed under the EPL and/or other +similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://www.springsource.org/download, +or by sending a request, with your name and address to: VMware, Inc., 3401 Hillview +Avenue, Palo Alto, CA 94304, United States of America or email info@vmware.com. All +such requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention General +Counsel. VMware shall mail a copy of the Source Files to you on a CD or equivalent +physical medium. This offer to obtain a copy of the Source Files is valid for three +years from the date you acquired this Software product. \ No newline at end of file diff --git a/licenses/spring-data-commons-3.2.4.jar/notice.txt b/licenses/spring-data-commons-3.2.4.jar/notice.txt new file mode 100644 index 000000000..a0854ca32 --- /dev/null +++ b/licenses/spring-data-commons-3.2.4.jar/notice.txt @@ -0,0 +1,57 @@ +Spring Data Commons 3.2.4 (2023.1.4) +Copyright (c) [2010-2021] Pivotal Software, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/licenses/spring-data-commons-3.3.0.jar/license.txt b/licenses/spring-data-commons-3.3.0.jar/license.txt new file mode 100644 index 000000000..964a55d1c --- /dev/null +++ b/licenses/spring-data-commons-3.3.0.jar/license.txt @@ -0,0 +1,216 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +To the extent any open source subcomponents are licensed under the EPL and/or other +similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://www.springsource.org/download, +or by sending a request, with your name and address to: VMware, Inc., 3401 Hillview +Avenue, Palo Alto, CA 94304, United States of America or email info@vmware.com. All +such requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention General +Counsel. VMware shall mail a copy of the Source Files to you on a CD or equivalent +physical medium. This offer to obtain a copy of the Source Files is valid for three +years from the date you acquired this Software product. \ No newline at end of file diff --git a/licenses/spring-data-commons-3.3.0.jar/notice.txt b/licenses/spring-data-commons-3.3.0.jar/notice.txt new file mode 100644 index 000000000..9a6913d03 --- /dev/null +++ b/licenses/spring-data-commons-3.3.0.jar/notice.txt @@ -0,0 +1,57 @@ +Spring Data Commons 3.3 GA (2024.0.0) +Copyright (c) [2010-2021] Pivotal Software, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/licenses/spring-data-jpa-3.2.4.jar/license.txt b/licenses/spring-data-jpa-3.2.4.jar/license.txt new file mode 100644 index 000000000..964a55d1c --- /dev/null +++ b/licenses/spring-data-jpa-3.2.4.jar/license.txt @@ -0,0 +1,216 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +To the extent any open source subcomponents are licensed under the EPL and/or other +similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://www.springsource.org/download, +or by sending a request, with your name and address to: VMware, Inc., 3401 Hillview +Avenue, Palo Alto, CA 94304, United States of America or email info@vmware.com. All +such requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention General +Counsel. VMware shall mail a copy of the Source Files to you on a CD or equivalent +physical medium. This offer to obtain a copy of the Source Files is valid for three +years from the date you acquired this Software product. \ No newline at end of file diff --git a/licenses/spring-data-jpa-3.2.4.jar/notice.txt b/licenses/spring-data-jpa-3.2.4.jar/notice.txt new file mode 100644 index 000000000..4a28e2e5f --- /dev/null +++ b/licenses/spring-data-jpa-3.2.4.jar/notice.txt @@ -0,0 +1,36 @@ +Spring Data JPA 2.7 M2 (2021.2.0) +Copyright (c) [2011-2019] Pivotal Software, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/licenses/spring-data-jpa-3.2.4.jar/readme.txt b/licenses/spring-data-jpa-3.2.4.jar/readme.txt new file mode 100644 index 000000000..4f0324ce4 --- /dev/null +++ b/licenses/spring-data-jpa-3.2.4.jar/readme.txt @@ -0,0 +1,17 @@ +Spring Data JPA 1.6.0 M1 (March 31th, 2014) +------------------------------------------- + +Spring Data Jpa is released under the terms of the Apache Software License Version 2.0 (see license.txt). + + +DISTRIBUTION CONTENTS: + +The JARs are available in the 'dist' directory, and the source JARs are in the 'src' directory. + +The reference manual and javadoc are located in the 'docs' directory. + + +ADDITIONAL RESOURCES: + +Spring Data Homepage: https://projects.spring.io/spring-data +Spring Data JPA on Stackoverflow: https://stackoverflow.com/questions/tagged/spring-data-jpa diff --git a/licenses/spring-data-jpa-3.3.0.jar/license.txt b/licenses/spring-data-jpa-3.3.0.jar/license.txt new file mode 100644 index 000000000..964a55d1c --- /dev/null +++ b/licenses/spring-data-jpa-3.3.0.jar/license.txt @@ -0,0 +1,216 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +To the extent any open source subcomponents are licensed under the EPL and/or other +similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://www.springsource.org/download, +or by sending a request, with your name and address to: VMware, Inc., 3401 Hillview +Avenue, Palo Alto, CA 94304, United States of America or email info@vmware.com. All +such requests should clearly specify: OPEN SOURCE FILES REQUEST, Attention General +Counsel. VMware shall mail a copy of the Source Files to you on a CD or equivalent +physical medium. This offer to obtain a copy of the Source Files is valid for three +years from the date you acquired this Software product. \ No newline at end of file diff --git a/licenses/spring-data-jpa-3.3.0.jar/notice.txt b/licenses/spring-data-jpa-3.3.0.jar/notice.txt new file mode 100644 index 000000000..4a28e2e5f --- /dev/null +++ b/licenses/spring-data-jpa-3.3.0.jar/notice.txt @@ -0,0 +1,36 @@ +Spring Data JPA 2.7 M2 (2021.2.0) +Copyright (c) [2011-2019] Pivotal Software, Inc. + +This product is licensed to you under the Apache License, Version 2.0 (the "License"). +You may not use this product except in compliance with the License. + +This product may include a number of subcomponents with +separate copyright notices and license terms. Your use of the source +code for the these subcomponents is subject to the terms and +conditions of the subcomponent's license, as noted in the LICENSE file. + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/licenses/spring-data-jpa-3.3.0.jar/readme.txt b/licenses/spring-data-jpa-3.3.0.jar/readme.txt new file mode 100644 index 000000000..4f0324ce4 --- /dev/null +++ b/licenses/spring-data-jpa-3.3.0.jar/readme.txt @@ -0,0 +1,17 @@ +Spring Data JPA 1.6.0 M1 (March 31th, 2014) +------------------------------------------- + +Spring Data Jpa is released under the terms of the Apache Software License Version 2.0 (see license.txt). + + +DISTRIBUTION CONTENTS: + +The JARs are available in the 'dist' directory, and the source JARs are in the 'src' directory. + +The reference manual and javadoc are located in the 'docs' directory. + + +ADDITIONAL RESOURCES: + +Spring Data Homepage: https://projects.spring.io/spring-data +Spring Data JPA on Stackoverflow: https://stackoverflow.com/questions/tagged/spring-data-jpa diff --git a/licenses/spring-expression-6.1.5.jar/META-INF/license.txt b/licenses/spring-expression-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-expression-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-expression-6.1.5.jar/META-INF/notice.txt b/licenses/spring-expression-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-expression-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-expression-6.1.8.jar/META-INF/license.txt b/licenses/spring-expression-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-expression-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-expression-6.1.8.jar/META-INF/notice.txt b/licenses/spring-expression-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-expression-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-jcl-6.1.5.jar/META-INF/license.txt b/licenses/spring-jcl-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-jcl-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-jcl-6.1.5.jar/META-INF/notice.txt b/licenses/spring-jcl-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-jcl-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-jcl-6.1.8.jar/META-INF/license.txt b/licenses/spring-jcl-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-jcl-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-jcl-6.1.8.jar/META-INF/notice.txt b/licenses/spring-jcl-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-jcl-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-jdbc-6.1.5.jar/META-INF/license.txt b/licenses/spring-jdbc-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-jdbc-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-jdbc-6.1.5.jar/META-INF/notice.txt b/licenses/spring-jdbc-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-jdbc-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-jdbc-6.1.8.jar/META-INF/license.txt b/licenses/spring-jdbc-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-jdbc-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-jdbc-6.1.8.jar/META-INF/notice.txt b/licenses/spring-jdbc-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-jdbc-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-orm-6.1.5.jar/META-INF/license.txt b/licenses/spring-orm-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-orm-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-orm-6.1.5.jar/META-INF/notice.txt b/licenses/spring-orm-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-orm-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-orm-6.1.8.jar/META-INF/license.txt b/licenses/spring-orm-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-orm-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-orm-6.1.8.jar/META-INF/notice.txt b/licenses/spring-orm-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-orm-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-tx-6.1.5.jar/META-INF/license.txt b/licenses/spring-tx-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-tx-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-tx-6.1.5.jar/META-INF/notice.txt b/licenses/spring-tx-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-tx-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-tx-6.1.8.jar/META-INF/license.txt b/licenses/spring-tx-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-tx-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-tx-6.1.8.jar/META-INF/notice.txt b/licenses/spring-tx-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-tx-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-web-6.1.5.jar/META-INF/license.txt b/licenses/spring-web-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-web-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-web-6.1.5.jar/META-INF/notice.txt b/licenses/spring-web-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-web-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-web-6.1.8.jar/META-INF/license.txt b/licenses/spring-web-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-web-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-web-6.1.8.jar/META-INF/notice.txt b/licenses/spring-web-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-web-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-webmvc-6.1.5.jar/META-INF/license.txt b/licenses/spring-webmvc-6.1.5.jar/META-INF/license.txt new file mode 100644 index 000000000..d8ab95394 --- /dev/null +++ b/licenses/spring-webmvc-6.1.5.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.5 SUBCOMPONENTS: + +Spring Framework 6.1.5 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-webmvc-6.1.5.jar/META-INF/notice.txt b/licenses/spring-webmvc-6.1.5.jar/META-INF/notice.txt new file mode 100644 index 000000000..23f4051a3 --- /dev/null +++ b/licenses/spring-webmvc-6.1.5.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.5 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/spring-webmvc-6.1.8.jar/META-INF/license.txt b/licenses/spring-webmvc-6.1.8.jar/META-INF/license.txt new file mode 100644 index 000000000..0c1fa9332 --- /dev/null +++ b/licenses/spring-webmvc-6.1.8.jar/META-INF/license.txt @@ -0,0 +1,297 @@ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +======================================================================= + +SPRING FRAMEWORK 6.1.8 SUBCOMPONENTS: + +Spring Framework 6.1.8 includes a number of subcomponents +with separate copyright notices and license terms. The product that +includes this file does not necessarily use all the open source +subcomponents referred to below. Your use of the source +code for these subcomponents is subject to the terms and +conditions of the following licenses. + + +>>> ASM 9.1 (org.ow2.asm:asm:9.1, org.ow2.asm:asm-commons:9.1): + +Copyright (c) 2000-2011 INRIA, France Telecom +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +Copyright (c) 1999-2009, OW2 Consortium <https://www.ow2.org/> + + +>>> CGLIB 3.3 (cglib:cglib:3.3): + +Per the LICENSE file in the CGLIB JAR distribution downloaded from +https://github.com/cglib/cglib/releases/download/RELEASE_3_3_0/cglib-3.3.0.jar, +CGLIB 3.3 is licensed under the Apache License, version 2.0, the text of which +is included above. + + +>>> JavaPoet 1.13.0 (com.squareup:javapoet:1.13.0): + +Per the LICENSE file in the JavaPoet JAR distribution downloaded from +https://github.com/square/javapoet/archive/refs/tags/javapoet-1.13.0.zip, +JavaPoet 1.13.0 is licensed under the Apache License, version 2.0, the text of +which is included above. + + +>>> Objenesis 3.2 (org.objenesis:objenesis:3.2): + +Per the LICENSE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html, Objenesis 3.2 is licensed under the +Apache License, version 2.0, the text of which is included above. + +Per the NOTICE file in the Objenesis ZIP distribution downloaded from +http://objenesis.org/download.html and corresponding to section 4d of the +Apache License, Version 2.0, in this case for Objenesis: + +Objenesis +Copyright 2006-2019 Joe Walnes, Henri Tremblay, Leonardo Mesquita + + +=============================================================================== + +To the extent any open source components are licensed under the EPL and/or +other similar licenses that require the source code and/or modifications to +source code to be made available (as would be noted above), you may obtain a +copy of the source code corresponding to the binaries for such open source +components and modifications thereto, if any, (the "Source Files"), by +downloading the Source Files from https://spring.io/projects, Pivotal's website +at https://network.pivotal.io/open-source, or by sending a request, with your +name and address to: Pivotal Software, Inc., 875 Howard Street, 5th floor, San +Francisco, CA 94103, Attention: General Counsel. All such requests should +clearly specify: OPEN SOURCE FILES REQUEST, Attention General Counsel. Pivotal +can mail a copy of the Source Files to you on a CD or equivalent physical +medium. + +This offer to obtain a copy of the Source Files is valid for three years from +the date you acquired this Software product. Alternatively, the Source Files +may accompany the Software. diff --git a/licenses/spring-webmvc-6.1.8.jar/META-INF/notice.txt b/licenses/spring-webmvc-6.1.8.jar/META-INF/notice.txt new file mode 100644 index 000000000..f2a0096c6 --- /dev/null +++ b/licenses/spring-webmvc-6.1.8.jar/META-INF/notice.txt @@ -0,0 +1,11 @@ +Spring Framework 6.1.8 +Copyright (c) 2002-2024 Pivotal, Inc. + +This product is licensed to you under the Apache License, Version 2.0 +(the "License"). You may not use this product except in compliance with +the License. + +This product may include a number of subcomponents with separate +copyright notices and license terms. Your use of the source code for +these subcomponents is subject to the terms and conditions of the +subcomponent's license, as noted in the license.txt file. diff --git a/licenses/tomcat-embed-core-10.1.19.jar/META-INF/LICENSE b/licenses/tomcat-embed-core-10.1.19.jar/META-INF/LICENSE new file mode 100644 index 000000000..2b4876a15 --- /dev/null +++ b/licenses/tomcat-embed-core-10.1.19.jar/META-INF/LICENSE @@ -0,0 +1,858 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +APACHE TOMCAT SUBCOMPONENTS: + +Apache Tomcat includes a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the following licenses. + + +For the following XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + +1. Definitions. + + 1.1. Contributor. means each individual or entity that creates or contributes + to the creation of Modifications. + + 1.2. Contributor Version. means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the + Modifications made by that particular Contributor. + + 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, + or (c) the combination of files containing Original Software with files + containing Modifications, in each case including portions thereof. + + 1.4. Executable. means the Covered Software in any form other than Source + Code. + + 1.5. Initial Developer. means the individual or entity that first makes + Original Software available under this License. + + 1.6. Larger Work. means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + + 1.7. License. means this document. + + 1.8. Licensable. means having the right to grant, to the maximum extent + possible, whether at the time of the initial grant or subsequently + acquired, any and all of the rights conveyed herein. + + 1.9. Modifications. means the Source Code and Executable form of any of the + following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original Software + or previous Modifications; + + B. Any new file that contains any part of the Original Software or + previous Modification; or + + C. Any new file that is contributed or otherwise made available under + the terms of this License. + + 1.10. Original Software. means the Source Code and Executable form of + computer software code that is originally released under this License. + + 1.11. Patent Claims. means any patent claim(s), now owned or hereafter + acquired, including without limitation, method, process, and apparatus + claims, in any patent Licensable by grantor. + + 1.12. Source Code. means (a) the common form of computer software code in + which modifications are made and (b) associated documentation included + in or with such code. + + 1.13. You. (or .Your.) means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. For + legal entities, .You. includes any entity which controls, is controlled + by, or is under common control with You. For purposes of this + definition, .control. means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to + third party intellectual property claims, the Initial Developer hereby + grants You a world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Initial Developer, to use, reproduce, modify, display, + perform, sublicense and distribute the Original Software (or + portions thereof), with or without Modifications, and/or as part of + a Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and + offer for sale, and/or otherwise dispose of the Original Software + (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the + date Initial Developer first distributes or otherwise makes the + Original Software available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: + (1) for code that You delete from the Original Software, or (2) for + infringements caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original Software with + other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to third + party intellectual property claims, each Contributor hereby grants You a + world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Contributor to use, reproduce, modify, display, + perform, sublicense and distribute the Modifications created by such + Contributor (or portions thereof), either on an unmodified basis, + with other Modifications, as Covered Software and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in + combination with its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, have made, and/or + otherwise dispose of: (1) Modifications made by that Contributor (or + portions thereof); and (2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions of such + combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on + the date Contributor first distributes or otherwise makes the + Modifications available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: + (1) for any code that Contributor has deleted from the Contributor + Version; (2) for infringements caused by: (i) third party + modifications of Contributor Version, or (ii) the combination of + Modifications made by that Contributor with other software (except + as part of the Contributor Version) or other devices; or (3) under + Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + Any Covered Software that You distribute or otherwise make available in + Executable form must also be made available in Source Code form and that + Source Code form must be distributed only under the terms of this License. + You must include a copy of this License with every copy of the Source Code + form of the Covered Software You distribute or otherwise make available. + You must inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used for software + exchange. + + 3.2. Modifications. + The Modifications that You create or to which You contribute are governed + by the terms of this License. You represent that You believe Your + Modifications are Your original creation(s) and/or You have sufficient + rights to grant the rights conveyed by this License. + + 3.3. Required Notices. + You must include a notice in each of Your Modifications that identifies + You as the Contributor of the Modification. You may not remove or alter + any copyright, patent or trademark notices contained within the Covered + Software, or any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + You may not offer or impose any terms on any Covered Software in Source + Code form that alters or restricts the applicable version of this License + or the recipients. rights hereunder. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability obligations to + one or more recipients of Covered Software. However, you may do so only on + Your own behalf, and not on behalf of the Initial Developer or any + Contributor. You must make it absolutely clear that any such warranty, + support, indemnity or liability obligation is offered by You alone, and + You hereby agree to indemnify the Initial Developer and every Contributor + for any liability incurred by the Initial Developer or such Contributor as + a result of warranty, support, indemnity or liability terms You offer. + + 3.5. Distribution of Executable Versions. + You may distribute the Executable form of the Covered Software under the + terms of this License or under the terms of a license of Your choice, + which may contain terms different from this License, provided that You are + in compliance with the terms of this License and that the license for the + Executable form does not attempt to limit or alter the recipient.s rights + in the Source Code form from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a different + license, You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial Developer + or Contributor. You hereby agree to indemnify the Initial Developer and + every Contributor for any liability incurred by the Initial Developer or + such Contributor as a result of any such terms You offer. + + 3.6. Larger Works. + You may create a Larger Work by combining Covered Software with other code + not governed by the terms of this License and distribute the Larger Work + as a single product. In such a case, You must make sure the requirements + of this License are fulfilled for the Covered Software. + +4. Versions of the License. + + 4.1. New Versions. + Sun Microsystems, Inc. is the initial license steward and may publish + revised and/or new versions of this License from time to time. Each + version will be given a distinguishing version number. Except as provided + in Section 4.3, no one other than the license steward has the right to + modify this License. + + 4.2. Effect of New Versions. + You may always continue to use, distribute or otherwise make the Covered + Software available under the terms of the version of the License under + which You originally received the Covered Software. If the Initial + Developer includes a notice in the Original Software prohibiting it from + being distributed or otherwise made available under any subsequent version + of the License, You must distribute and make the Covered Software + available under the terms of the version of the License under which You + originally received the Covered Software. Otherwise, You may also choose + to use, distribute or otherwise make the Covered Software available under + the terms of any subsequent version of the License published by the + license steward. + + 4.3. Modified Versions. + When You are an Initial Developer and You want to create a new license for + Your Original Software, You may create and use a modified version of this + License if You: (a) rename the license and remove any references to the + name of the license steward (except to note that the license differs from + this License); and (b) otherwise make it clear that the license contains + terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, + MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK + AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD + ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL + DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN + ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED + HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to + cure such breach within 30 days of becoming aware of the breach. + Provisions which, by their nature, must remain in effect beyond the + termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory + judgment actions) against Initial Developer or a Contributor (the + Initial Developer or Contributor against whom You assert such claim + is referred to as .Participant.) alleging that the Participant + Software (meaning the Contributor Version where the Participant is a + Contributor or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any patent, then + any and all rights granted directly or indirectly to You by such + Participant, the Initial Developer (if the Initial Developer is not + the Participant) and all Contributors under Sections 2.1 and/or 2.2 + of this License shall, upon 60 days notice from Participant terminate + prospectively and automatically at the expiration of such 60 day + notice period, unless if within such 60 day period You withdraw Your + claim with respect to the Participant Software against such + Participant either unilaterally or pursuant to a written agreement + with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end + user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING + NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY + OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF + ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, + COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR + LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR + DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS + EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a .commercial item,. as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as + that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial + computer software documentation. as such terms are used in 48 C.F.R. 12.212 + (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered + Software with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software under this + License. + +9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. This License shall be governed by the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys. fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or regulation + which provides that the language of a contract shall be construed against + the drafter shall not apply to this License. You agree that You alone are + responsible for compliance with the United States export administration + regulations (and the export control laws and regulation of any other + countries) when You use, distribute or otherwise make available any Covered + Software. + +10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is responsible + for claims and damages arising, directly or indirectly, out of its + utilization of rights under this License and You agree to work with Initial + Developer and Contributors to distribute such responsibility on an equitable + basis. Nothing herein is intended or shall be deemed to constitute any + admission of liability. + + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION + LICENSE (CDDL) + + The code released under the CDDL shall be governed by the laws of the State + of California (excluding conflict-of-law provisions). Any litigation relating + to this License shall be subject to the jurisdiction of the Federal Courts of + the Northern District of California and the state courts of the State of + California, with venue lying in Santa Clara County, California. + + +For the following Jakarta EE Schemas: +- jakartaee_9.xsd +- jakartaee_10.xsd +- jakarta_web-services_2_0.xsd +- jakarta_web-services_client_2_0.xsd +- jsp_3_0.xsd +- jsp_3_1.xsd +- web-app_5_0.xsd +- web-app_6_0.xsd +- web-commonn_5_0.xsd +- web-commonn_6_0.xsd +- web-fragment_5_0.xsd +- web-fragment_6_0.xsd +- web-jsptaglibrary_3_0.xsd +- web-jsptaglibrary_3_1.xsd + +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. diff --git a/licenses/tomcat-embed-core-10.1.19.jar/META-INF/NOTICE b/licenses/tomcat-embed-core-10.1.19.jar/META-INF/NOTICE new file mode 100644 index 000000000..7e477d12e --- /dev/null +++ b/licenses/tomcat-embed-core-10.1.19.jar/META-INF/NOTICE @@ -0,0 +1,31 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +The original XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +may be obtained from: +http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html diff --git a/licenses/tomcat-embed-core-10.1.24.jar/META-INF/LICENSE b/licenses/tomcat-embed-core-10.1.24.jar/META-INF/LICENSE new file mode 100644 index 000000000..2b4876a15 --- /dev/null +++ b/licenses/tomcat-embed-core-10.1.24.jar/META-INF/LICENSE @@ -0,0 +1,858 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +APACHE TOMCAT SUBCOMPONENTS: + +Apache Tomcat includes a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the following licenses. + + +For the following XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + +1. Definitions. + + 1.1. Contributor. means each individual or entity that creates or contributes + to the creation of Modifications. + + 1.2. Contributor Version. means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the + Modifications made by that particular Contributor. + + 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, + or (c) the combination of files containing Original Software with files + containing Modifications, in each case including portions thereof. + + 1.4. Executable. means the Covered Software in any form other than Source + Code. + + 1.5. Initial Developer. means the individual or entity that first makes + Original Software available under this License. + + 1.6. Larger Work. means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + + 1.7. License. means this document. + + 1.8. Licensable. means having the right to grant, to the maximum extent + possible, whether at the time of the initial grant or subsequently + acquired, any and all of the rights conveyed herein. + + 1.9. Modifications. means the Source Code and Executable form of any of the + following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original Software + or previous Modifications; + + B. Any new file that contains any part of the Original Software or + previous Modification; or + + C. Any new file that is contributed or otherwise made available under + the terms of this License. + + 1.10. Original Software. means the Source Code and Executable form of + computer software code that is originally released under this License. + + 1.11. Patent Claims. means any patent claim(s), now owned or hereafter + acquired, including without limitation, method, process, and apparatus + claims, in any patent Licensable by grantor. + + 1.12. Source Code. means (a) the common form of computer software code in + which modifications are made and (b) associated documentation included + in or with such code. + + 1.13. You. (or .Your.) means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. For + legal entities, .You. includes any entity which controls, is controlled + by, or is under common control with You. For purposes of this + definition, .control. means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to + third party intellectual property claims, the Initial Developer hereby + grants You a world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Initial Developer, to use, reproduce, modify, display, + perform, sublicense and distribute the Original Software (or + portions thereof), with or without Modifications, and/or as part of + a Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and + offer for sale, and/or otherwise dispose of the Original Software + (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the + date Initial Developer first distributes or otherwise makes the + Original Software available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: + (1) for code that You delete from the Original Software, or (2) for + infringements caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original Software with + other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to third + party intellectual property claims, each Contributor hereby grants You a + world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Contributor to use, reproduce, modify, display, + perform, sublicense and distribute the Modifications created by such + Contributor (or portions thereof), either on an unmodified basis, + with other Modifications, as Covered Software and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in + combination with its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, have made, and/or + otherwise dispose of: (1) Modifications made by that Contributor (or + portions thereof); and (2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions of such + combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on + the date Contributor first distributes or otherwise makes the + Modifications available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: + (1) for any code that Contributor has deleted from the Contributor + Version; (2) for infringements caused by: (i) third party + modifications of Contributor Version, or (ii) the combination of + Modifications made by that Contributor with other software (except + as part of the Contributor Version) or other devices; or (3) under + Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + Any Covered Software that You distribute or otherwise make available in + Executable form must also be made available in Source Code form and that + Source Code form must be distributed only under the terms of this License. + You must include a copy of this License with every copy of the Source Code + form of the Covered Software You distribute or otherwise make available. + You must inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used for software + exchange. + + 3.2. Modifications. + The Modifications that You create or to which You contribute are governed + by the terms of this License. You represent that You believe Your + Modifications are Your original creation(s) and/or You have sufficient + rights to grant the rights conveyed by this License. + + 3.3. Required Notices. + You must include a notice in each of Your Modifications that identifies + You as the Contributor of the Modification. You may not remove or alter + any copyright, patent or trademark notices contained within the Covered + Software, or any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + You may not offer or impose any terms on any Covered Software in Source + Code form that alters or restricts the applicable version of this License + or the recipients. rights hereunder. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability obligations to + one or more recipients of Covered Software. However, you may do so only on + Your own behalf, and not on behalf of the Initial Developer or any + Contributor. You must make it absolutely clear that any such warranty, + support, indemnity or liability obligation is offered by You alone, and + You hereby agree to indemnify the Initial Developer and every Contributor + for any liability incurred by the Initial Developer or such Contributor as + a result of warranty, support, indemnity or liability terms You offer. + + 3.5. Distribution of Executable Versions. + You may distribute the Executable form of the Covered Software under the + terms of this License or under the terms of a license of Your choice, + which may contain terms different from this License, provided that You are + in compliance with the terms of this License and that the license for the + Executable form does not attempt to limit or alter the recipient.s rights + in the Source Code form from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a different + license, You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial Developer + or Contributor. You hereby agree to indemnify the Initial Developer and + every Contributor for any liability incurred by the Initial Developer or + such Contributor as a result of any such terms You offer. + + 3.6. Larger Works. + You may create a Larger Work by combining Covered Software with other code + not governed by the terms of this License and distribute the Larger Work + as a single product. In such a case, You must make sure the requirements + of this License are fulfilled for the Covered Software. + +4. Versions of the License. + + 4.1. New Versions. + Sun Microsystems, Inc. is the initial license steward and may publish + revised and/or new versions of this License from time to time. Each + version will be given a distinguishing version number. Except as provided + in Section 4.3, no one other than the license steward has the right to + modify this License. + + 4.2. Effect of New Versions. + You may always continue to use, distribute or otherwise make the Covered + Software available under the terms of the version of the License under + which You originally received the Covered Software. If the Initial + Developer includes a notice in the Original Software prohibiting it from + being distributed or otherwise made available under any subsequent version + of the License, You must distribute and make the Covered Software + available under the terms of the version of the License under which You + originally received the Covered Software. Otherwise, You may also choose + to use, distribute or otherwise make the Covered Software available under + the terms of any subsequent version of the License published by the + license steward. + + 4.3. Modified Versions. + When You are an Initial Developer and You want to create a new license for + Your Original Software, You may create and use a modified version of this + License if You: (a) rename the license and remove any references to the + name of the license steward (except to note that the license differs from + this License); and (b) otherwise make it clear that the license contains + terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, + MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK + AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD + ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL + DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN + ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED + HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to + cure such breach within 30 days of becoming aware of the breach. + Provisions which, by their nature, must remain in effect beyond the + termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory + judgment actions) against Initial Developer or a Contributor (the + Initial Developer or Contributor against whom You assert such claim + is referred to as .Participant.) alleging that the Participant + Software (meaning the Contributor Version where the Participant is a + Contributor or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any patent, then + any and all rights granted directly or indirectly to You by such + Participant, the Initial Developer (if the Initial Developer is not + the Participant) and all Contributors under Sections 2.1 and/or 2.2 + of this License shall, upon 60 days notice from Participant terminate + prospectively and automatically at the expiration of such 60 day + notice period, unless if within such 60 day period You withdraw Your + claim with respect to the Participant Software against such + Participant either unilaterally or pursuant to a written agreement + with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end + user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING + NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY + OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF + ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, + COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR + LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR + DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS + EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a .commercial item,. as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as + that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial + computer software documentation. as such terms are used in 48 C.F.R. 12.212 + (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered + Software with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software under this + License. + +9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. This License shall be governed by the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys. fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or regulation + which provides that the language of a contract shall be construed against + the drafter shall not apply to this License. You agree that You alone are + responsible for compliance with the United States export administration + regulations (and the export control laws and regulation of any other + countries) when You use, distribute or otherwise make available any Covered + Software. + +10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is responsible + for claims and damages arising, directly or indirectly, out of its + utilization of rights under this License and You agree to work with Initial + Developer and Contributors to distribute such responsibility on an equitable + basis. Nothing herein is intended or shall be deemed to constitute any + admission of liability. + + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION + LICENSE (CDDL) + + The code released under the CDDL shall be governed by the laws of the State + of California (excluding conflict-of-law provisions). Any litigation relating + to this License shall be subject to the jurisdiction of the Federal Courts of + the Northern District of California and the state courts of the State of + California, with venue lying in Santa Clara County, California. + + +For the following Jakarta EE Schemas: +- jakartaee_9.xsd +- jakartaee_10.xsd +- jakarta_web-services_2_0.xsd +- jakarta_web-services_client_2_0.xsd +- jsp_3_0.xsd +- jsp_3_1.xsd +- web-app_5_0.xsd +- web-app_6_0.xsd +- web-commonn_5_0.xsd +- web-commonn_6_0.xsd +- web-fragment_5_0.xsd +- web-fragment_6_0.xsd +- web-jsptaglibrary_3_0.xsd +- web-jsptaglibrary_3_1.xsd + +Eclipse Public License - v 2.0 + + THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE + PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION + OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial content + Distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + i) changes to the Program, and + ii) additions to the Program; + where such changes and/or additions to the Program originate from + and are Distributed by that particular Contributor. A Contribution + "originates" from a Contributor if it was added to the Program by + such Contributor itself or anyone acting on such Contributor's behalf. + Contributions do not include changes or additions to the Program that + are not Modified Works. + +"Contributor" means any person or entity that Distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which +are necessarily infringed by the use or sale of its Contribution alone +or when combined with the Program. + +"Program" means the Contributions Distributed in accordance with this +Agreement. + +"Recipient" means anyone who receives the Program under this Agreement +or any Secondary License (as applicable), including Contributors. + +"Derivative Works" shall mean any work, whether in Source Code or other +form, that is based on (or derived from) the Program and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. + +"Modified Works" shall mean any work in Source Code or other form that +results from an addition to, deletion from, or modification of the +contents of the Program, including, for purposes of clarity any new file +in Source Code form that contains any contents of the Program. Modified +Works shall not include works that contain only declarations, +interfaces, types, classes, structures, or files of the Program solely +in each case in order to link to, bind by name, or subclass the Program +or Modified Works thereof. + +"Distribute" means the acts of a) distributing or b) making available +in any manner that enables the transfer of a copy. + +"Source Code" means the form of a Program preferred for making +modifications, including but not limited to software source code, +documentation source, and configuration files. + +"Secondary License" means either the GNU General Public License, +Version 2.0, or any later versions of that license, including any +exceptions or additional permissions as identified by the initial +Contributor. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free copyright + license to reproduce, prepare Derivative Works of, publicly display, + publicly perform, Distribute and sublicense the Contribution of such + Contributor, if any, and such Derivative Works. + + b) Subject to the terms of this Agreement, each Contributor hereby + grants Recipient a non-exclusive, worldwide, royalty-free patent + license under Licensed Patents to make, use, sell, offer to sell, + import and otherwise transfer the Contribution of such Contributor, + if any, in Source Code or other form. This patent license shall + apply to the combination of the Contribution and the Program if, at + the time the Contribution is added by the Contributor, such addition + of the Contribution causes such combination to be covered by the + Licensed Patents. The patent license shall not apply to any other + combinations which include the Contribution. No hardware per se is + licensed hereunder. + + c) Recipient understands that although each Contributor grants the + licenses to its Contributions set forth herein, no assurances are + provided by any Contributor that the Program does not infringe the + patent or other intellectual property rights of any other entity. + Each Contributor disclaims any liability to Recipient for claims + brought by any other entity based on infringement of intellectual + property rights or otherwise. As a condition to exercising the + rights and licenses granted hereunder, each Recipient hereby + assumes sole responsibility to secure any other intellectual + property rights needed, if any. For example, if a third party + patent license is required to allow Recipient to Distribute the + Program, it is Recipient's responsibility to acquire that license + before distributing the Program. + + d) Each Contributor represents that to its knowledge it has + sufficient copyright rights in its Contribution, if any, to grant + the copyright license set forth in this Agreement. + + e) Notwithstanding the terms of any Secondary License, no + Contributor makes additional grants to any Recipient (other than + those set forth in this Agreement) as a result of such Recipient's + receipt of the Program under the terms of a Secondary License + (if permitted under the terms of Section 3). + +3. REQUIREMENTS + +3.1 If a Contributor Distributes the Program in any form, then: + + a) the Program must also be made available as Source Code, in + accordance with section 3.2, and the Contributor must accompany + the Program with a statement that the Source Code for the Program + is available under this Agreement, and informs Recipients how to + obtain it in a reasonable manner on or through a medium customarily + used for software exchange; and + + b) the Contributor may Distribute the Program under a license + different than this Agreement, provided that such license: + i) effectively disclaims on behalf of all other Contributors all + warranties and conditions, express and implied, including + warranties or conditions of title and non-infringement, and + implied warranties or conditions of merchantability and fitness + for a particular purpose; + + ii) effectively excludes on behalf of all other Contributors all + liability for damages, including direct, indirect, special, + incidental and consequential damages, such as lost profits; + + iii) does not attempt to limit or alter the recipients' rights + in the Source Code under section 3.2; and + + iv) requires any subsequent distribution of the Program by any + party to be under a license that satisfies the requirements + of this section 3. + +3.2 When the Program is Distributed as Source Code: + + a) it must be made available under this Agreement, or if the + Program (i) is combined with other material in a separate file or + files made available under a Secondary License, and (ii) the initial + Contributor attached to the Source Code the notice described in + Exhibit A of this Agreement, then the Program may be made available + under the terms of such Secondary Licenses, and + + b) a copy of this Agreement must be included with each copy of + the Program. + +3.3 Contributors may not remove or alter any copyright, patent, +trademark, attribution notices, disclaimers of warranty, or limitations +of liability ("notices") contained within the Program from any copy of +the Program which they Distribute, provided that Contributors may add +their own appropriate notices. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities +with respect to end users, business partners and the like. While this +license is intended to facilitate the commercial use of the Program, +the Contributor who includes the Program in a commercial product +offering should do so in a manner which does not create potential +liability for other Contributors. Therefore, if a Contributor includes +the Program in a commercial product offering, such Contributor +("Commercial Contributor") hereby agrees to defend and indemnify every +other Contributor ("Indemnified Contributor") against any losses, +damages and costs (collectively "Losses") arising from claims, lawsuits +and other legal actions brought by a third party against the Indemnified +Contributor to the extent caused by the acts or omissions of such +Commercial Contributor in connection with its distribution of the Program +in a commercial product offering. The obligations in this section do not +apply to any claims or Losses relating to any actual or alleged +intellectual property infringement. In order to qualify, an Indemnified +Contributor must: a) promptly notify the Commercial Contributor in +writing of such claim, and b) allow the Commercial Contributor to control, +and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial +product offering, Product X. That Contributor is then a Commercial +Contributor. If that Commercial Contributor then makes performance +claims, or offers warranties related to Product X, those performance +claims and warranties are such Commercial Contributor's responsibility +alone. Under this section, the Commercial Contributor would have to +defend claims against the other Contributors related to those performance +claims and warranties, and if a court requires any other Contributor to +pay any damages as a result, the Commercial Contributor must pay +those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF +TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR +PURPOSE. Each Recipient is solely responsible for determining the +appropriateness of using and distributing the Program and assumes all +risks associated with its exercise of rights under this Agreement, +including but not limited to the risks and costs of program errors, +compliance with applicable laws, damage to or loss of data, programs +or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT +PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS +SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under +applicable law, it shall not affect the validity or enforceability of +the remainder of the terms of this Agreement, and without further +action by the parties hereto, such provision shall be reformed to the +minimum extent necessary to make such provision valid and enforceable. + +If Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the +Program itself (excluding combinations of the Program with other software +or hardware) infringes such Recipient's patent(s), then such Recipient's +rights granted under Section 2(b) shall terminate as of the date such +litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it +fails to comply with any of the material terms or conditions of this +Agreement and does not cure such failure in a reasonable period of +time after becoming aware of such noncompliance. If all Recipient's +rights under this Agreement terminate, Recipient agrees to cease use +and distribution of the Program as soon as reasonably practicable. +However, Recipient's obligations under this Agreement and any licenses +granted by Recipient relating to the Program shall continue and survive. + +Everyone is permitted to copy and distribute copies of this Agreement, +but in order to avoid inconsistency the Agreement is copyrighted and +may only be modified in the following manner. The Agreement Steward +reserves the right to publish new versions (including revisions) of +this Agreement from time to time. No one other than the Agreement +Steward has the right to modify this Agreement. The Eclipse Foundation +is the initial Agreement Steward. The Eclipse Foundation may assign the +responsibility to serve as the Agreement Steward to a suitable separate +entity. Each new version of the Agreement will be given a distinguishing +version number. The Program (including Contributions) may always be +Distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to Distribute the Program (including its +Contributions) under the new version. + +Except as expressly stated in Sections 2(a) and 2(b) above, Recipient +receives no rights or licenses to the intellectual property of any +Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted +under this Agreement are reserved. Nothing in this Agreement is intended +to be enforceable by any entity that is not a Contributor or Recipient. +No third-party beneficiary rights are created under this Agreement. + +Exhibit A - Form of Secondary Licenses Notice + +"This Source Code may also be made available under the following +Secondary Licenses when the conditions for such availability set forth +in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), +version(s), and exceptions or additional permissions here}." + + Simply including a copy of this Agreement, including this Exhibit A + is not sufficient to license the Source Code under Secondary Licenses. + + If it is not possible or desirable to put the notice in a particular + file, then You may include the notice in a location (such as a LICENSE + file in a relevant directory) where a recipient would be likely to + look for such a notice. + + You may add additional accurate notices of copyright ownership. diff --git a/licenses/tomcat-embed-core-10.1.24.jar/META-INF/NOTICE b/licenses/tomcat-embed-core-10.1.24.jar/META-INF/NOTICE new file mode 100644 index 000000000..7e477d12e --- /dev/null +++ b/licenses/tomcat-embed-core-10.1.24.jar/META-INF/NOTICE @@ -0,0 +1,31 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +The original XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +may be obtained from: +http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html diff --git a/licenses/tomcat-embed-el-10.1.19.jar/META-INF/LICENSE b/licenses/tomcat-embed-el-10.1.19.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/tomcat-embed-el-10.1.19.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/tomcat-embed-el-10.1.19.jar/META-INF/NOTICE b/licenses/tomcat-embed-el-10.1.19.jar/META-INF/NOTICE new file mode 100644 index 000000000..bc867acbb --- /dev/null +++ b/licenses/tomcat-embed-el-10.1.19.jar/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/tomcat-embed-el-10.1.24.jar/META-INF/LICENSE b/licenses/tomcat-embed-el-10.1.24.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/tomcat-embed-el-10.1.24.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/tomcat-embed-el-10.1.24.jar/META-INF/NOTICE b/licenses/tomcat-embed-el-10.1.24.jar/META-INF/NOTICE new file mode 100644 index 000000000..bc867acbb --- /dev/null +++ b/licenses/tomcat-embed-el-10.1.24.jar/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/LICENSE b/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/NOTICE b/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/NOTICE new file mode 100644 index 000000000..bc867acbb --- /dev/null +++ b/licenses/tomcat-embed-websocket-10.1.19.jar/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/LICENSE b/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/NOTICE b/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/NOTICE new file mode 100644 index 000000000..bc867acbb --- /dev/null +++ b/licenses/tomcat-embed-websocket-10.1.24.jar/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Tomcat +Copyright 1999-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/licenses/txw2-4.0.5.jar/META-INF/LICENSE.md b/licenses/txw2-4.0.5.jar/META-INF/LICENSE.md new file mode 100644 index 000000000..da1c1cea7 --- /dev/null +++ b/licenses/txw2-4.0.5.jar/META-INF/LICENSE.md @@ -0,0 +1,28 @@ +Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of the Eclipse Foundation, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/licenses/txw2-4.0.5.jar/META-INF/NOTICE.md b/licenses/txw2-4.0.5.jar/META-INF/NOTICE.md new file mode 100644 index 000000000..cd46a173a --- /dev/null +++ b/licenses/txw2-4.0.5.jar/META-INF/NOTICE.md @@ -0,0 +1,191 @@ +# Notices for Eclipse Implementation of JAXB + +This content is produced and maintained by the Eclipse Implementation of JAXB +project. + +* Project home: https://projects.eclipse.org/projects/ee4j.jaxb-impl + +## Trademarks + +Eclipse Implementation of JAXB is a trademark of the Eclipse Foundation. + +## Copyright + +All content is the property of the respective authors or their employers. For +more information regarding authorship of content, please consult the listed +source code repository logs. + +## Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Distribution License v. 1.0 which is available at +http://www.eclipse.org/org/documents/edl-v10.php. + +SPDX-License-Identifier: BSD-3-Clause + +## Source Code + +The project maintains the following source code repositories: + +* https://github.com/eclipse-ee4j/jaxb-ri +* https://github.com/eclipse-ee4j/jaxb-istack-commons +* https://github.com/eclipse-ee4j/jaxb-dtd-parser +* https://github.com/eclipse-ee4j/jaxb-fi +* https://github.com/eclipse-ee4j/jaxb-stax-ex +* https://github.com/eclipse-ee4j/jax-rpc-ri + +## Third-party Content + +This project leverages the following third party content. + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Ant (1.10.2) + +* License: Apache-2.0 AND W3C AND LicenseRef-Public-Domain + +Apache Felix (1.2.0) + +* License: Apache License, 2.0 + +args4j (2.33) + +* License: MIT License + +dom4j (1.6.1) + +* License: Custom license based on Apache 1.1 + +file-management (3.0.0) + +* License: Apache-2.0 +* Project: https://maven.apache.org/shared/file-management/ +* Source: + https://svn.apache.org/viewvc/maven/shared/tags/file-management-3.0.0/ + +JUnit (4.12) + +* License: Eclipse Public License + +JUnit (4.12) + +* License: Eclipse Public License + +maven-compat (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-compat/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-compat/3.5.2 + +maven-core (3.5.2) + +* License: Apache-2.0 +* Project: https://maven.apache.org/ref/3.5.2/maven-core/index.html +* Source: https://mvnrepository.com/artifact/org.apache.maven/maven-core/3.5.2 + +maven-plugin-annotations (3.5) + +* License: Apache-2.0 +* Project: https://maven.apache.org/plugin-tools/maven-plugin-annotations/ +* Source: + https://github.com/apache/maven-plugin-tools/tree/master/maven-plugin-annotations + +maven-plugin-api (3.5.2) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-api (1.1.1) + +* License: Apache-2.0 + +maven-resolver-connector-basic (1.1.1) + +* License: Apache-2.0 + +maven-resolver-impl (1.1.1) + +* License: Apache-2.0 + +maven-resolver-spi (1.1.1) + +* License: Apache-2.0 + +maven-resolver-transport-file (1.1.1) + +* License: Apache-2.0 +* Project: https://maven.apache.org/resolver/maven-resolver-transport-file/ +* Source: + https://github.com/apache/maven-resolver/tree/master/maven-resolver-transport-file + +maven-resolver-util (1.1.1) + +* License: Apache-2.0 + +maven-settings (3.5.2) + +* License: Apache-2.0 +* Source: + https://mvnrepository.com/artifact/org.apache.maven/maven-settings/3.5.2 + +OSGi Service Platform Core Companion Code (6.0) + +* License: Apache License, 2.0 + +plexus-archiver (3.5) + +* License: Apache-2.0 +* Project: https://codehaus-plexus.github.io/plexus-archiver/ +* Source: https://github.com/codehaus-plexus/plexus-archiver + +plexus-io (3.0.0) + +* License: Apache-2.0 + +plexus-utils (3.1.0) + +* License: Apache- 2.0 or Apache- 1.1 or BSD or Public Domain or Indiana + University Extreme! Lab Software License V1.1.1 (Apache 1.1 style) + +relaxng-datatype (1.0) + +* License: New BSD license + +Sax (0.2) + +* License: SAX-PD +* Project: http://www.megginson.com/downloads/SAX/ +* Source: http://sourceforge.net/project/showfiles.php?group_id=29449 + +testng (6.14.2) + +* License: Apache-2.0 AND (MIT OR GPL-1.0+) +* Project: https://testng.org/doc/index.html +* Source: https://github.com/cbeust/testng + +wagon-http-lightweight (3.0.0) + +* License: Pending +* Project: https://maven.apache.org/wagon/ +* Source: + https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-http-lightweight/3.0.0 + +xz for java (1.8) + +* License: LicenseRef-Public-Domain + +## Cryptography + +Content may contain encryption software. The country in which you are currently +may have restrictions on the import, possession, and use, and/or re-export to +another country, of encryption software. BEFORE using any encryption software, +please check the country's laws, regulations and policies concerning the import, +possession, or use, and re-export of encryption software, to see if this is +permitted. + diff --git a/misc/PRE-INFO.md b/misc/PRE-INFO.md index 64aea0603..d222900cd 100644 --- a/misc/PRE-INFO.md +++ b/misc/PRE-INFO.md @@ -10,11 +10,12 @@ When using pre-release installers, make sure to uninstall the previous pre-relea own version checks may trigger an error out of my control. After uninstalling, install the newly downloaded one and you're good to go. +Only use the installers if you are versed in system-administration, manually editing and removing services, editing registries, +so on and so forth. + #### Alphas -Alphas are feature-incomplete and very likely to have bugs. -Before submitting an issue, please check the corresponding [milestone](https://git.griefed.de/Griefed/ServerPackCreator/-/milestones) of this releases major version to see whether an issue for yours already exists there. -Doing so saves both you and me a lot of time. Thanks in advance! +Alphas are feature-incomplete and very likely to have bugs. Consider them broken by default. Use at your own risk! #### Betas diff --git a/root/defaults/serverpackcreator.properties b/root/defaults/serverpackcreator.properties index be572f88a..60de7fcd0 100644 --- a/root/defaults/serverpackcreator.properties +++ b/root/defaults/serverpackcreator.properties @@ -1,7 +1,7 @@ de.griefed.serverpackcreator.configuration.aikar=-Xms4G -Xmx4G -XX\:+UseG1GC -XX\:+ParallelRefProcEnabled -XX\:MaxGCPauseMillis\=200 -XX\:+UnlockExperimentalVMOptions -XX\:+DisableExplicitGC -XX\:+AlwaysPreTouch -XX\:G1NewSizePercent\=30 -XX\:G1MaxNewSizePercent\=40 -XX\:G1HeapRegionSize\=8M -XX\:G1ReservePercent\=20 -XX\:G1HeapWastePercent\=5 -XX\:G1MixedGCCountTarget\=4 -XX\:InitiatingHeapOccupancyPercent\=15 -XX\:G1MixedGCLiveThresholdPercent\=90 -XX\:G1RSetUpdatingPauseTimePercent\=5 -XX\:SurvivorRatio\=32 -XX\:+PerfDisableSharedMem -XX\:MaxTenuringThreshold\=1 -Dusing.aikars.flags\=https\://mcflags.emc.gs -Daikars.new.flags\=true de.griefed.serverpackcreator.configuration.directories.mustinclude=addonpacks,blueprints,config,configs,customnpcs,defaultconfigs,global_data_packs,global_packs,kubejs,maps,mods,openloader,scripts,shrines-saves,structures,structurize,worldshape,Zoestria de.griefed.serverpackcreator.configuration.directories.shouldexclude=animation,asm,cache,changelogs,craftpresence,crash-reports,downloads,icons,libraries,local,logs,overrides,packmenu,profileImage,profileImage,resourcepacks,screenshots,server_pack,shaderpacks,simple-rpc,tv-cache -de.griefed.serverpackcreator.configuration.fallback.updateurl=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties +de.griefed.serverpackcreator.configuration.fallback.updateurl=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties de.griefed.serverpackcreator.configuration.fallbackmodslist=3dskinlayers-,Absolutely-Not-A-Zoom-Mod-,AdvancedChat-,AdvancedChatCore-,AdvancedChatHUD-,AdvancedCompas-,Ambience,AmbientEnvironment-,AmbientSounds_,AreYouBlind-,Armor Status HUD-,ArmorSoundTweak-,BH-Menu-,Batty's Coordinates PLUS Mod,BetterAdvancements-,BetterAnimationsCollection-,BetterDarkMode-,BetterF3-,BetterFog-,BetterFoliage-,BetterModsButton-,BetterPingDisplay-,BetterPlacement-,BetterTaskbar-,BetterThirdPerson,BetterTitleScreen-,Blur-,BorderlessWindow-,CTM-,ChunkAnimator-,ClientTweaks_,CompletionistsIndex-,Controller Support-,Controlling-,CraftPresence-,Create_Questing-,CullLessLeaves-Reforged-,CustomCursorMod-,CustomMainMenu-,DefaultOptions_,DefaultSettings-,DeleteWorldsToTrash-,DetailArmorBar-,Ding-,DistantHorizons-,DripSounds-,Durability101-,DurabilityNotifier-,DynamicSurroundings-,DynamicSurroundingsHuds-,EffectsLeft-,EiraMoticons_,EnchantmentDescriptions-,EnhancedVisuals_,EquipmentCompare-,FPS-Monitor-,FabricCustomCursorMod-,Fallingleaves-,FancySpawnEggs,FancyVideo-API-,FirstPersonMod,FogTweaker-,ForgeCustomCursorMod-,FpsReducer-,FpsReducer2-,FullscreenWindowed-,GameMenuModOption-,HealthOverlay-,HeldItemTooltips-,HorseStatsMod-,ImmediatelyFastReforged-,InventoryEssentials_,InventoryHud_[1.17.1].forge-,InventorySpam-,InventoryTweaks-,ItemBorders-,ItemPhysicLite_,ItemStitchingFix-,JBRA-Client-,JustEnoughCalculation-,JustEnoughEffects-,JustEnoughProfessions-,LLOverlayReloaded-,LOTRDRP-,LeaveMyBarsAlone-,LegendaryTooltips,LegendaryTooltips-,LightOverlay-,MinecraftCapes ,MoBends,MouseTweaks-,MyServerIsCompatible-,Neat ,Neat-,NekosEnchantedBooks-,NoAutoJump-,NoFog-,Notes-,NotifMod-,OldJavaWarning-,OptiFine,OptiFine_,OptiForge,OptiForge-,OverflowingBars-,PackMenu-,PackModeMenu-,PickUpNotifier-,Ping-,PingHUD-,PresenceFootsteps-,RPG-HUD-,ReAuth-,Reforgium-,ResourceLoader-,ResourcePackOrganizer,Ryoamiclights-,ShoulderSurfing-,ShulkerTooltip-,SimpleDiscordRichPresence-,SimpleWorldTimer-,SoundFilters-,SpawnerFix-,StylishEffects-,TRansliterationLib-,TextruesRubidiumOptions-,TipTheScales-,Tips-,Toast Control-,Toast-Control-,ToastControl-,TravelersTitles-,VR-Combat_,VoidFog-,WindowedFullscreen-,WorldNameRandomizer-,YungsMenuTweaks-,[1.12.2]DamageIndicatorsMod-,[1.12.2]bspkrscore-,^textrues_embeddium_options-.*$,antighost-,anviltooltipmod-,appleskin-,armorchroma-,armorpointspp-,auditory-,authme-,auto-reconnect-,autojoin-,autoreconnect-,axolotl-item-fix-,backtools-,bannerunlimited-,beenfo-1.19-,better-recipe-book-,betterbiomeblend-,bhmenu-,blur-,borderless-mining-,cat_jam-,catalogue-,charmonium-,chat_heads-,cherishedworlds-,cirback-1.0-,classicbar-,clickadv-,clienttweaks-,combat_music-,connectedness-,controllable-,cullleaves-,cullparticles-,custom-crosshair-mod-,customdiscordrpc-,darkness-,dashloader-,defaultoptions-,desiredservers-,discordrpc-,drippyloadingscreen-,drippyloadingscreen_,durabilitytooltip-,dynamic-fps-,dynamic-music-,dynamiclights-,dynmus-,effective-,eggtab-,eguilib-,eiramoticons-,embeddium-,enchantment-lore-,entity-texture-features-,entityculling-,essential_,exhaustedstamina-,extremesoundmuffler-,fabricemotes-,fancymenu_,fancymenu_video_extension,flickerfix-,fm_audio_extension_,forgemod_VoxelMap-,freelook-,galacticraft-rpc-,gamestagesviewer-,gpumemleakfix-,grid-,helium-,hiddenrecipebook-,hiddenrecipebook_,infinitemusic-,inventoryprofiles,invtweaks-,itemzoom,itlt-,jeed-,jehc-,jeiintegration_,just-enough-harvestcraft-,justenoughbeacons-,justenoughdrags-,justzoom_,keymap-,keywizard-,lazydfu-,lib39-,light-overlay-,lightfallclient-,lightspeed-,loadmyresources_,lock_minecart_view-,lootbeams-,lwl-,magnesium_extras-,maptooltip-,massunbind,mcbindtype-,mcwifipnp-,medievalmusic-,memoryusagescreen-,mightyarchitect-,mindful-eating-,minetogether-,mobplusplus-,modcredits-,modernworldcreation_,modnametooltip-,modnametooltip_,moreoverlays-,mousewheelie-,movement-vision-,multihotbar-,music-duration-reducer-,musicdr-,neiRecipeHandlers-,ngrok-lan-expose-mod-,no_nv_flash-,nopotionshift_,notenoughanimations-,oculus-,ornaments-,overloadedarmorbar-,panorama-,paperdoll-,phosphor-,physics-mod-,preciseblockplacing-,radon-,realm-of-lost-souls-,rebind-narrator-,rebind_narrator-,rebindnarrator-,rebrand-,reforgium-,replanter-,rrls-,rubidium-,rubidium_extras-,screenshot-to-clipboard-,servercountryflags-,shutupexperimentalsettings-,shutupmodelloader-,signtools-,simple-rpc-,simpleautorun-,smartcursor-,smoothboot-,smoothfocus-,sodium-fabric-,sounddeviceoptions-,soundreloader-,spoticraft-,tconplanner-,textrues_embeddium_options-,timestamps-,tooltipscroller-,torchoptimizer-,torohealth-,totaldarkness,toughnessbar-,watermedia-,whats-that-slot-forge-,wisla-,xlifeheartcolors-,yisthereautojump- de.griefed.serverpackcreator.configuration.hastebinserver=https\://haste.zneix.eu/documents de.griefed.serverpackcreator.configuration.modswhitelist=Ping-Wheel- diff --git a/root/etc/s6-overlay/s6-rc.d/init-spc-config/run b/root/etc/s6-overlay/s6-rc.d/init-spc-config/run index 1bbb873ac..0dd7c8b31 100644 --- a/root/etc/s6-overlay/s6-rc.d/init-spc-config/run +++ b/root/etc/s6-overlay/s6-rc.d/init-spc-config/run @@ -70,7 +70,7 @@ else fi if [[ -z ${SPC_CONFIGURATION_FALLBACK_UPDATEURL} ]];then - echo "de.griefed.serverpackcreator.configuration.fallback.updateurl=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties" >> $OVERRIDES + echo "de.griefed.serverpackcreator.configuration.fallback.updateurl=https\://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties" >> $OVERRIDES else echo "de.griefed.serverpackcreator.configuration.fallback.updateurl=$SPC_CONFIGURATION_FALLBACK_UPDATEURL" >> $OVERRIDES fi diff --git a/serverpackcreator-api/build.gradle.kts b/serverpackcreator-api/build.gradle.kts index 5ad84737f..4a3d4bcf8 100644 --- a/serverpackcreator-api/build.gradle.kts +++ b/serverpackcreator-api/build.gradle.kts @@ -1,7 +1,8 @@ + import java.util.prefs.Preferences plugins { - id("serverpackcreator.kotlin-multiplatform-conventions") + id("serverpackcreator.kotlin-conventions") id("serverpackcreator.dokka-conventions") id("de.comahe.i18n4k") version "0.7.0" } @@ -10,73 +11,31 @@ repositories { mavenCentral() } -kotlin { - sourceSets { - val commonMain by getting { - dependencies { - api("io.github.microutils:kotlin-logging:3.0.5") - api("org.jetbrains.kotlinx:kotlinx-datetime:0.4.1") - api("de.jensklingenberg.ktorfit:ktorfit-lib:1.9.0") - api("de.comahe.i18n4k:i18n4k-core:0.6.2") - } - } - val commonTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-common")) - implementation(kotlin("test-annotations-common")) - } - } - val jvmMain by getting { - dependencies { - implementation("org.jetbrains.kotlin:kotlin-bom") - implementation("org.jetbrains.kotlin:kotlin-stdlib") - implementation(files("${layout.buildDirectory.asFile.get()}/resources/")) - api("de.comahe.i18n4k:i18n4k-core-jvm:0.6.2") - api("com.electronwill.night-config:toml:3.6.7") - api("com.fasterxml.jackson.core:jackson-databind:2.15.3") - api("net.lingala.zip4j:zip4j:2.11.5") - api("org.apache.logging.log4j:log4j-api-kotlin:1.3.0") - api("org.apache.logging.log4j:log4j-core:2.21.0") - api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - api("org.pf4j:pf4j:3.10.0") - api("org.bouncycastle:bcpkix-jdk18on:1.77") - } - } - val jvmTest by getting { - dependencies { - implementation(kotlin("test")) - implementation("org.jetbrains.kotlin:kotlin-test:1.9.10") - implementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - implementation("org.junit.jupiter:junit-jupiter-engine:5.10.0") - } - } -// Uncomment if you wish to start developing the JS component -// val jsMain by getting { -// dependsOn(commonMain) -// dependencies { -// api(kotlin("stdlib-js")) -// api("io.github.microutils:kotlin-logging-js:3.0.4") -// api("de.comahe.i18n4k:i18n4k-core-js:0.5.0") -// } -// } -// val jsTest by getting { -// dependencies { -// implementation(kotlin("test-js")) -// } -// } - } -} - -tasks.signJvmPublication { - dependsOn(tasks.dokkaJavadocJar) -} - -tasks.signKotlinMultiplatformPublication { - dependsOn(tasks.dokkaJavadocJar) +dependencies { + api("io.github.microutils:kotlin-logging:3.0.5") + api("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0") + api("de.jensklingenberg.ktorfit:ktorfit-lib:1.14.0") + api("de.comahe.i18n4k:i18n4k-core:0.7.0") + api("de.comahe.i18n4k:i18n4k-core-jvm:0.7.0") + implementation("org.jetbrains.kotlin:kotlin-bom:1.9.23") + implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.23") + implementation(files("${layout.buildDirectory.asFile.get()}/resources/")) + api("com.electronwill.night-config:toml:3.7.1") + api("com.fasterxml.jackson.core:jackson-databind:2.17.0") + api("net.lingala.zip4j:zip4j:2.11.5") + api("org.apache.logging.log4j:log4j-api-kotlin:1.4.0") + api("org.apache.logging.log4j:log4j-core:2.23.1") + api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0") + api("org.pf4j:pf4j:3.11.0") + api("org.bouncycastle:bcpkix-jdk18on:1.78") + + testImplementation("org.jetbrains.kotlin:kotlin-test:1.9.23") + testImplementation("org.jetbrains.kotlin:kotlin-test:1.9.23") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } -tasks.jvmSourcesJar { +tasks.sourcesJar { dependsOn(tasks.generateI18n4kFiles) } @@ -84,37 +43,37 @@ tasks.processResources { } -tasks.jvmProcessResources { +tasks.processResources { dependsOn(tasks.generateI18n4kFiles) copy { from(rootProject.layout.projectDirectory.file("CHANGELOG.md")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } copy { from(rootProject.layout.projectDirectory.file("CODE_OF_CONDUCT.md")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } copy { from(rootProject.layout.projectDirectory.file("CONTRIBUTING.md")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } copy { from(rootProject.layout.projectDirectory.file("HELP.md")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } copy { from(rootProject.layout.projectDirectory.file("LICENSE")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } copy { from(rootProject.layout.projectDirectory.file("README.md")) - into(layout.projectDirectory.dir("src/jvmMain/resources")) + into(layout.projectDirectory.dir("src/main/resources")) } } //Fix resources missing in multiplatform jvm inDev run https://youtrack.jetbrains.com/issue/KTIJ-16582/Consumer-Kotlin-JVM-library-cannot-access-a-Kotlin-Multiplatform-JVM-target-resources-in-multi-module-Gradle-project tasks.register<Copy>("fixMissingResources") { - dependsOn(tasks.jvmProcessResources) + dependsOn(tasks.processResources) from("${layout.buildDirectory.asFile.get()}/processedResources/jvm/main") into("${layout.buildDirectory.asFile.get()}/resources/") } @@ -123,17 +82,17 @@ tasks.dokkaHtml { dependsOn(tasks.generateI18n4kFiles, tasks.getByName("fixMissingResources")) } -tasks.jvmJar { +tasks.jar { dependsOn(tasks.getByName("fixMissingResources")) } tasks.register<Copy>("updateManifests") { dependsOn(tasks.test) from(rootDir.resolve("serverpackcreator-app/tests/manifests")) - into(projectDir.resolve("src/jvmMain/resources/de/griefed/resources/manifests")) + into(projectDir.resolve("src/main/resources/de/griefed/resources/manifests")) } -tasks.jvmTest { +tasks.test { dependsOn(tasks.getByName("fixMissingResources")) Preferences.userRoot().node("ServerPackCreator").clear() Preferences.userRoot().node("ServerPackCreator").sync() @@ -143,8 +102,4 @@ tasks.build { doLast { tasks.dokkaJavadocJar } -} - -tasks.withType(PublishToMavenRepository::class) { - dependsOn(tasks.signKotlinMultiplatformPublication,tasks.signJvmPublication) -} +} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Api.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Api.kt deleted file mode 100644 index d294012d6..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Api.kt +++ /dev/null @@ -1,147 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.TomlParser -import de.griefed.serverpackcreator.api.utilities.common.BooleanUtilities -import de.griefed.serverpackcreator.api.utilities.common.ListUtilities -import de.griefed.serverpackcreator.api.utilities.common.StringUtilities -import mu.KotlinLogging - -/** - * Basic implementations of the API-class holding properties and functions/methods which should be provided to the given - * implementer. - * - * @author Griefed - */ -abstract class Api<F> { - protected val log = KotlinLogging.logger {} - protected val versionsRegex = ".*(alpha|beta|dev).*".toRegex() - protected val xmlJsonRegex = ".*\\.(xml|json)".toRegex() - protected var setupWasRun: Boolean = false - - /** - * This instances common boolean utilities used across ServerPackCreator. - * - * @return Common boolean utilities used across ServerPackCreator. - * @author Griefed - */ - val booleanUtilities: BooleanUtilities = BooleanUtilities() - - /** - * This instances common String utilities used across ServerPackCreator. - * - * @return Common String utilities used across ServerPackCreator. - * @author Griefed - */ - val stringUtilities: StringUtilities = StringUtilities() - - - /** - * This instances common list utilities used across ServerPackCreator. - * - * @return Common list utilities used across ServerPackCreator. - * @author Griefed - */ - val listUtilities: ListUtilities = ListUtilities() - - /** - * Convenience method to set up ServerPackCreator. - * - * @author Griefed - */ - abstract fun setup(force: Boolean = false): ApiWrapper - - /** - * Stage one of starting ServerPackCreator. - * - * Creates and prepares the environment for ServerPackCreator to run by creating required - * directories and copying required files from the JAR-file to the filesystem. Some of these files - * can and should be edited by a given user, others however, not. - * - * * Checks the read- and write-permissions of ServerPackCreators base-directory. - * * Copies the `README.md` from the JAR to the home-directory. - * * Copies the `HELP.md` from the JAR to the home-directory. - * * Copies the `CHANGELOG.md` from the JAR to the home-directory. - * * Copies the `LICENSE` from the JAR to the home-directory. - * * Copies the fallback version-manifests to the manifests. - * * Creates default directories: - * - * * server_files - * * work - * * temp - * * work/modpacks - * * server-packs (depending on the users settings, this may be anywhere on the users system) - * * plugins - * * plugins/config - * - * * Example `disabled.txt`-file in plugins/disabled.txt. - * * Creates the default `server.properties` if it doesn't exist. - * * Creates the default `server-icon.png` if it doesn't exist. - * * Creates the default PowerShell and Shell script templates or overwrites them if they already exist. - * * Determines whether this instance of ServerPackCreator was updated from a previous version. - * - * If an update was detected, and migrations are available for any of the steps of the update, they are executed, - * thus ensuring users are safe to update their instances. Writes ServerPackCreator and system information to the - * console and logs, important for error reporting and debugging. - * - * @author Griefed - */ - abstract fun stageOne() - - /** - * Initialize [de.griefed.serverpackcreator.api.versionmeta.VersionMeta], [ConfigurationHandler]. - * - * @author Griefed - */ - abstract fun stageTwo() - - /** - * Initialize [ApiPlugins], [de.griefed.serverpackcreator.api.modscanning.ModScanner] (consisting of [TomlParser], - * [de.griefed.serverpackcreator.api.modscanning.ForgeAnnotationScanner], - * [de.griefed.serverpackcreator.api.modscanning.FabricScanner], - * [de.griefed.serverpackcreator.api.modscanning.ForgeTomlScanner], - * [de.griefed.serverpackcreator.api.modscanning.QuiltScanner]), - * [ServerPackHandler]. - * - * @author Griefed - */ - abstract fun stageThree() - - /** - * Check whether the specified server-files file exists and create it if it doesn't. - * - * @param fileToCheckFor The file which is to be checked for whether it exists and if it doesn't, - * should be created. - * @return `true` if the file was generated. - * @author Griefed - */ - abstract fun checkServerFilesFile(fileToCheckFor: F): Boolean - - /** - * Overwrite the specified server-files file, even when it exists. Used to ensure files like the - * default script templates are always up-to-date. - * - * @param fileToOverwrite The file which is to be overwritten. If it exists. it is first deleted, - * then extracted from our JAR-file. - * @author Griefed - */ - abstract fun overwriteServerFilesFile(fileToOverwrite: F) -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt deleted file mode 100644 index 85d285095..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.plugins.serverpackhandler.PostGenExtension -import de.griefed.serverpackcreator.api.plugins.serverpackhandler.PreGenExtension -import de.griefed.serverpackcreator.api.plugins.serverpackhandler.PreZipExtension -import de.griefed.serverpackcreator.api.plugins.swinggui.TabExtension -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Optional - -/** - * Manager for ServerPackCreator plugins. In itself it doesn't do much. It gathers lists of all - * available extensions for [TabExtension],[PreGenExtension],[PreZipExtension] and - * [PostGenExtension] so they can then be run during server pack generation and during - * initialization of the GUI. - * - * @author Griefed - */ -expect class ApiPlugins { - - /** - * Get the global plugin configuration for a plugin of the passed ID. The configuration is wrapped - * in an [Optional], because a plugin may not provide a global configuration. If you intend - * on using a global configuration for your plugin, make sure to check whether it is present before - * trying to use it! - * - * @param pluginId The plugin ID of the...well...plugin. - * @return The global plugin configuration, wrapped in an Optional. - * @author Griefed - */ - fun getPluginConfig(pluginId: String): Optional<CommentedConfig> - - /** - * Run any and all Pre-Server Pack-Generation extensions, using the passed configuration model and - * the destination at which the server pack is to be generated and stored at. - * - * @param packConfig The configuration model from which to create the server pack. - * @param destination The destination at which the server pack will be generated and stored - * at. - * @author Griefed - */ - fun runPreGenExtensions(packConfig: PackConfig, destination: String) - - /** - * Run any and all Pre-ZIP-archive creation extensions, using the passed configuration model and - * the destination at which the server pack is to be generated and stored at. - * - * @param packConfig The configuration model from which to create the server pack. - * @param destination The destination at which the server pack will be generated and stored - * at. - * @author Griefed - */ - fun runPreZipExtensions(packConfig: PackConfig, destination: String) - - /** - * Run any and all Post-server pack-generation extensions, using the passed configuration model - * and the destination at which the server pack is to be generated and stored at. - * - * @param packConfig The configuration model from which to create the server pack. - * @param destination The destination at which the server pack will be generated and stored - * at. - * @author Griefed - */ - fun runPostGenExtensions(packConfig: PackConfig, destination: String) - - /** - * Run any and all configuration-check extensions, using the passed configuration model and the - * destination at which the server pack is to be generated and stored at. - * - * @param packConfig The configuration model containing the server pack and plugin - * configurations to check. - * @param configCheck Collection of encountered errors, if any, for convenient result-checks. - * @return `true` if any custom check detected an error with the configuration. - * **Only** return `false` when not a **single** check - * errored. - * @author Griefed - */ - fun runConfigCheckExtensions( - packConfig: PackConfig, - configCheck: ConfigCheck = ConfigCheck() - ): ConfigCheck - - /** - * Get the configuration-file for a plugin, if it exists. This is wrapped in an [Optional], - * because not every plugin may provide a configuration-file to use globally for the relevant - * plugins settings. If you intend on using a global configuration, make sure to check whether the - * file is present, before moving on! - * - * @param pluginId The plugin ID with which to identify the correct config-file to return. - * @return The config-file corresponding to the ID of the plugin, wrapped in an Optional. - * @author Griefed - */ - fun getPluginConfigFile(pluginId: String): Optional<File> -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt deleted file mode 100644 index b3c0fc63b..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -/** - * Base settings of ServerPackCreator, such as working directories, default list of clientside-only - * mods, default list of directories to include in a server pack, script templates, java paths and - * much more. - * - * @author Griefed - */ -expect class ApiProperties { - - companion object { - @JvmStatic - fun getSeparator(): String - } -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt deleted file mode 100644 index 7622a1584..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.modscanning.* -import de.griefed.serverpackcreator.api.utilities.TomlParser -import de.griefed.serverpackcreator.api.utilities.common.* -import de.griefed.serverpackcreator.api.versionmeta.VersionMeta - -/** - * API wrapper, allowing you to conveniently initialize, setup and use the different aspects of ServerPackCreator. - * - * @author Griefed - */ -expect class ApiWrapper { - - val apiProperties: ApiProperties - val fileUtilities: FileUtilities - val jarUtilities: JarUtilities - val systemUtilities: SystemUtilities - val jsonUtilities: JsonUtilities - val xmlUtilities: XmlUtilities - val tomlParser: TomlParser - val forgeTomlScanner: ForgeTomlScanner - - val webUtilities: WebUtilities - val utilities: Utilities - val versionMeta: VersionMeta - val configurationHandler: ConfigurationHandler - val apiPlugins: ApiPlugins - val serverPackHandler: ServerPackHandler - val modScanner: ModScanner - val forgeAnnotationScanner: ForgeAnnotationScanner - val fabricScanner: FabricScanner - val quiltScanner: QuiltScanner - val neoForgeTomlScanner: NeoForgeTomlScanner -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Configuration.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Configuration.kt deleted file mode 100644 index 099a0a235..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Configuration.kt +++ /dev/null @@ -1,546 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("unused") - -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.File -import mu.KotlinLogging - -/** - * Base for the [de.griefed.serverpackcreator.api.ConfigurationHandler] to ensure we have the basics for config-checks - * and config-handling. - * - * @author Griefed - */ -abstract class Configuration<F, P> { - protected val log = KotlinLogging.logger {} - protected val forge = "^forge$".toRegex() - protected val neoForge = "^neoforge$".toRegex() - protected val fabric = "^fabric$".toRegex() - protected val quilt = "^quilt$".toRegex() - protected val legacyFabric = "^legacyfabric$".toRegex() - protected val whitespace = "^\\s+$".toRegex() - protected val previous = ".*_\\d".toRegex() - protected val zipCheck = "^\\w+[/\\\\]$".toRegex() - - /** - * Check the passed configuration-file. If any check returns `true` then the server pack - * will not be created. In order to find out which check failed, the user has to check their - * serverpackcreator.log in the logs-directory. - * - * @param configFile The configuration file to check. Must either be an existing file to - * load a configuration from or null if you want to use the passed - * configuration model. - * @param packConfig Instance of a configuration of a modpack. Can be used to further - * display or use any information within, as it may be changed or - * otherwise altered by this method. - * @param configCheck Contains all encountered errors during the check of the passed configuration. - * @param quietCheck Whether the configuration should be printed to the console and logs. - * Pass false to quietly check the configuration. - * @return `false` if the configuration has passed all tests. - * @author Griefed - */ - abstract fun checkConfiguration( - configFile: F, - packConfig: PackConfig, - configCheck: ConfigCheck, - quietCheck: Boolean - ): ConfigCheck - - /** - * Check the passed [packConfig]. If any check returns `true` then the server - * pack will not be created. In order to find out which check failed, the user has to check their - * serverpackcreator.log in the logs-directory. - * - * The passed [packConfig] can be used to further display or use any information within, as it may be changed or otherwise - * altered by this method. - * - * @param packConfig Instance of a configuration of a modpack. Can be used to further - * display or use any information within, as it may be changed or - * otherwise altered by this method. - * @param configCheck Contains all encountered errors during the check of the passed configuration. - * @param quietCheck Whether the configuration should be printed to the console and logs. - * Pass false to quietly check the configuration. - * @return `false` if all checks are passed. - * @author Griefed - */ - abstract fun checkConfiguration( - packConfig: PackConfig, - configCheck: ConfigCheck, - quietCheck: Boolean - ): ConfigCheck - - /** - * Sanitize any and all links in a given instance of [PackConfig] modpack-directory, - * server-icon path, server-properties path, Java path and copy-directories entries. - * - * @param packConfig Instance of [PackConfig] in which to sanitize links to - * their respective destinations. - * @author Griefed - */ - abstract fun sanitizeLinks(packConfig: PackConfig) - - /** - * Checks the passed String whether it is an existing file. If the passed String is empty, then - * ServerPackCreator will treat it as the user being fine with the default files and return the - * corresponding boolean. - * - * @param iconOrPropertiesPath The path to the custom server-icon.png or server.properties file to - * check. - * @return `true` if the file exists or an empty String was passed, false if a file was - * specified, but the file was not found. - * @author Griefed - */ - abstract fun checkIconAndProperties(iconOrPropertiesPath: String): Boolean - - /** - * If the in the configuration specified modpack dir is an existing directory, checks are made for - * valid configuration of: directories to copy to server pack, if includeServerInstallation is - * `true` path to Java executable/binary, Minecraft version, modloader and modloader - * version. - * - * @param packConfig An instance of [PackConfig] which contains the - * configuration of the modpack. - * @param configCheck Contains all encountered errors during the check of the passed configuration. - * @return `true` if an error is found during configuration check. - * @author Griefed - */ - abstract fun isDir(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck - - /** - * Checks the specified ZIP-archive for validity. In order for a modpack ZIP-archive to be - * considered valid, it needs to contain the `mods` and `config` folders at minimum. - * If any of `manifest.json`, `minecraftinstance.json` or `config.json` are - * available, gather as much information from them as possible. - * - * @param packConfig Instance of [PackConfig] with a server pack - * configuration. - * @param configCheck Collection of encountered errors, if any, for convenient result-checks. - * @return `false` when no errors were encountered. - * @author Griefed - */ - abstract fun isZip(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck - - /** - * Checks whether either Forge or Fabric were specified as the modloader. - * - * @param modloader Check as case-insensitive for Forge or Fabric. - * @return `true` if the specified modloader is either Forge or Fabric. False if neither. - * @author Griefed - */ - abstract fun checkModloader(modloader: String, configCheck: ConfigCheck): ConfigCheck - - /** - * Check the given Minecraft and modloader versions for the specified modloader. - * - * @param modloader The passed modloader which determines whether the check for Forge or - * Fabric is called. - * @param modloaderVersion The version of the modloader which is checked against the corresponding - * modloader's manifest. - * @param minecraftVersion The version of Minecraft used for checking the Forge version. - * @return `true` if the specified modloader version was found in the corresponding - * manifest. - * @author Griefed - */ - abstract fun checkModloaderVersion( - modloader: String, modloaderVersion: String, minecraftVersion: String, configCheck: ConfigCheck - ): ConfigCheck - - /** - * Convenience method which passes the important fields from an instance of - * [PackConfig] to - * [.printConfigurationModel] - * - * @param packConfig Instance of [PackConfig] to print to console and logs. - * @author Griefed - */ - fun printConfigurationModel(packConfig: Pack<*, *, *>) = printConfigurationModel( - packConfig.modpackDir, - packConfig.clientMods, - packConfig.inclusions, - packConfig.minecraftVersion, - packConfig.modloader, - packConfig.modloaderVersion, - packConfig.isServerIconInclusionDesired, - packConfig.isServerPropertiesInclusionDesired, - packConfig.isZipCreationDesired, - packConfig.javaArgs, - packConfig.serverPackSuffix, - packConfig.serverIconPath, - packConfig.serverPropertiesPath, - packConfig.scriptSettings - ) - - /** - * Print all encountered errors to logs. - * - * @param encounteredErrors A list of all errors which were encountered during a configuration - * check. - * @author Griefed - */ - fun printEncounteredErrors(encounteredErrors: List<String>) { - log.error("Encountered ${encounteredErrors.size} errors during the configuration check.") - var encounteredErrorNumber: Int - for (i in encounteredErrors.indices) { - encounteredErrorNumber = i + 1 - log.error("Error $encounteredErrorNumber: ${encounteredErrors[i]}") - } - } - - /** - * Update the script settings and ensure the default keys, with values gathered from the passed - * [PackConfig], are present: - * - * - * 1. `SPC_SERVERPACKCREATOR_VERSION_SPC` : `ServerPackCreator version with which the scripts were created` - * 1. `SPC_MINECRAFT_VERSION_SPC` : `Minecraft version of the modpack` - * 1. `SPC_MINECRAFT_SERVER_URL_SPC` : `Download-URL to the Minecraft server - ` * - * 1. `SPC_MODLOADER_SPC` : `The modloader of the modpack` - * 1. `SPC_MODLOADER_VERSION_SPC` : `The modloader version of the modpack - ` * - * 1. `SPC_JAVA_ARGS_SPC` : `The JVM args to be used to run the server` - * 1. `SPC_JAVA_SPC` : `Path to the java installation to be used to run the server` - * 1. `SPC_FABRIC_INSTALLER_VERSION_SPC` : `Most recent version of the Fabric installer at the time of creating the scripts` - * 1. `SPC_QUILT_INSTALLER_VERSION_SPC` : `Most recent version of the Quilt installer at the time of creating the scripts` - * - * - * @param packConfig Model in which to ensure the default key-value pairs are present. - * @author Griefed - */ - abstract fun ensureScriptSettingsDefaults(packConfig: PackConfig) - - /** - * Checks whether the passed list of directories which are supposed to be in the modpack directory - * is empty, or whether all directories in the list exist in the modpack directory. If the user - * specified a `source/file;destination/file`-combination, it is checked whether the - * specified source-file exists on the host. - * - * @param inclusions Directories, or `source/file;destination/file`-combinations, to - * check for existence. - * `source/file;destination/file`-combinations must be absolute - * paths to the source-file. - * @param modpackDir Path to the modpack directory in which to check for existence of the - * passed list of directories. - * @return `true` if every directory was found in the modpack directory. If any single one - * was not found, false is returned. - * @author Griefed - */ - abstract fun checkInclusions( - inclusions: MutableList<InclusionSpecification>, - modpackDir: String, - configCheck: ConfigCheck, - printLog: Boolean - ): ConfigCheck - - /** - * Check a given ZIP-archives contents. If the ZIP-archive only contains one directory, or if it - * contains neither the mods nor the config directories, consider it invalid. - * - * @param pathToZip Path to the ZIP-file to check. - * @author Griefed - */ - abstract fun checkZipArchive(pathToZip: String, configCheck: ConfigCheck): ConfigCheck - - /** - * Update the destination to which the ZIP-archive will the extracted to, based on whether a - * directory of the same name already exists. - * - * @param destination The destination to where the ZIP-archive was about to be extracted to. - * @return The destination where the ZIP-archive will be extracted to. - * @author Griefed - */ - abstract fun unzipDestination(destination: String): String - - /** - * Creates a list of suggested directories to include in server pack which is later on written to - * a new configuration file. The list of directories to include in the server pack which is - * generated by this method excludes well know directories which would not be needed by a server - * pack. If you have suggestions to this list, open a feature request issue on [GitHub](https://github.com/Griefed/ServerPackCreator/issues/new/choose) - * - * @param modpackDir The directory for which to gather a list of directories to copy to the server - * pack. - * @return Directories inside the modpack, excluding well known client-side only directories. - * @author Griefed - */ - abstract fun suggestInclusions(modpackDir: String): ArrayList<InclusionSpecification> - - /** - * Check whether various manifests from various launchers exist and use them to update our - * ConfigurationModel and pack name. - * - * @param destination The destination in which the manifests are. - * @param packConfig The ConfigurationModel to update. - * @param configCheck Collection of encountered errors, if any, for convenient result-checks. - * @return The name of the modpack currently being checked. `null` if the name could not be - * acquired. - * @author Griefed - */ - abstract fun checkManifests( - destination: String, - packConfig: PackConfig, - configCheck: ConfigCheck - ): String? - - /** - * Check whether a server pack for the given destination already exists and get an incrementor - * based on whether one exists, how many, or none exist. Think if this as the incrementation - * Windows does when a file of the same name is copied. `foo.bar` becomes - * `foo (1).bar` etc. - * - * @param source The name of the modpack. - * @param destination The name of the server pack about to be generated. - * @return An incremented number, based on whether a server pack of the same name already exists. - * @author Griefed - */ - abstract fun checkServerPacksForIncrement(source: String, destination: String): String - - /** - * Prints all passed fields to the console and serverpackcreator.log. Used to show the user the - * configuration before ServerPackCreator starts the generation of the server pack or, if checks - * failed, to show the user their last configuration, so they can more easily identify problems - * with said configuration. - * - * Should a user report an issue on GitHub and include their logs (which I hope they do....), this would also help - * me help them. Logging is good. People should use more logging. - * - * @param modpackDirectory The used modpackDir field either from a configuration file or from - * configuration setup. - * @param clientsideMods List of clientside-only mods to exclude from the server pack... - * @param inclusions List of directories in the modpack which are to be included in the - * server pack. - * @param minecraftVer The Minecraft version the modpack uses. - * @param modloader The modloader the modpack uses. - * @param modloaderVersion The version of the modloader the modpack uses. - * @param includeIcon Whether to include the server-icon.png in the server pack. - * @param includeProperties Whether to include the server.properties in the server pack. - * @param includeZip Whether to create a zip-archive of the server pack, excluding the - * Minecraft server JAR according to Mojang's TOS and EULA. - * @param javaArgs Java arguments to write the start-scripts with. - * @param serverPackSuffix Suffix to append to name of the server pack to be generated. - * @param serverIconPath The path to the custom server-icon.png to be used in the server - * pack. - * @param serverPropertiesPath The path to the custom server.properties to be used in the server - * pack. - * @param scriptSettings Custom settings for start script creation. `KEY`s are the - * placeholder, `VALUE`s are the values with which the - * placeholders are to be replaced. - * @author Griefed - */ - abstract fun printConfigurationModel( - modpackDirectory: String, - clientsideMods: List<String>, - inclusions: List<InclusionSpecification>, - minecraftVer: String, - modloader: String, - modloaderVersion: String, - includeIcon: Boolean, - includeProperties: Boolean, - includeZip: Boolean, - javaArgs: String, - serverPackSuffix: String, - serverIconPath: String, - serverPropertiesPath: String, - scriptSettings: HashMap<String, String> - ) - - /** - * Acquire a list of directories in the base-directory of a ZIP-file. - * - * @param zipFile The ZIP-archive to get the list of files from. - * @return All directories in the base-directory of the ZIP-file. - * @author Griefed - */ - abstract fun getDirectoriesInModpackZipBaseDirectory(zipFile: File): List<String> - - /** - * **`manifest.json`** - * - * Update the given ConfigurationModel with values gathered from the downloaded CurseForge - * modpack. A manifest.json-file is usually created when a modpack is exported through launchers - * like Overwolf's CurseForge or GDLauncher. - * - * @param packConfig An instance containing a configuration for a modpack from which to - * create a server pack. - * @param manifest The CurseForge manifest.json-file of the modpack to read. - * @author Griefed - */ - abstract fun updateConfigModelFromCurseManifest(packConfig: PackConfig, manifest: F) - - /** - * Acquire the modpacks name from the JSON previously acquired and stored in the - * ConfigurationModel. - * - * @param packConfig The ConfigurationModel containing the JsonNode from which to acquire - * the modpacks name. - * @param childNodes The child nodes, in order, which contain the requested packname. - * @return The new name of the modpack. - * @author Griefed - */ - abstract fun updatePackName(packConfig: PackConfig, vararg childNodes: String): String? - - /** - * **`minecraftinstance.json`** - * - * Update the given ConfigurationModel with values gathered from the minecraftinstance.json of - * the modpack. A minecraftinstance.json is usually created by Overwolf's CurseForge launcher. - * - * @param packConfig An instance containing a configuration for a modpack from which to - * create a server pack. - * @param minecraftInstance The minecraftinstance.json-file of the modpack to read. - * @author Griefed - */ - abstract fun updateConfigModelFromMinecraftInstance(packConfig: PackConfig, minecraftInstance: F) - - /** - * **`modrinth.index.json`** - * - * Update the given ConfigurationModel with values gathered from a Modrinth `modrinth.index.json`-manifest. - * - * @param packConfig The model to update. - * @param manifest The manifest file. - * @author Griefed - */ - abstract fun updateConfigModelFromModrinthManifest(packConfig: PackConfig, manifest: F) - - /** - * **`instance.json`** - * - * Update the given ConfigurationModel with values gathered from a ATLauncher or XMCL manifest. - * - * @param packConfig The model to update. - * @param manifest The manifest file. - * @author Griefed - */ - abstract fun updateConfigModelFromInstance(packConfig: PackConfig, manifest: F) - - /** - * **`config.json`** - * - * Update the given ConfigurationModel with values gathered from the modpacks config.json. A - * config.json is usually created by GDLauncher. - * - * @param packConfig An instance containing a configuration for a modpack from which to - * create a server pack. - * @param config The config.json-file of the modpack to read. - * @author Griefed - */ - abstract fun updateConfigModelFromConfigJson(packConfig: PackConfig, config: F) - - /** - * **`mmc-pack.json`** - * - * - * Update the given ConfigurationModel with values gathered from the modpacks mmc-pack.json. A - * mmc-pack.json is usually created by the MultiMC launcher. - * - * @param packConfig An instance containing a configuration for a modpack from which to - * create a server pack. - * @param mmcPack The config.json-file of the modpack to read. - * @author Griefed - */ - abstract fun updateConfigModelFromMMCPack(packConfig: PackConfig, mmcPack: F) - - /** - * **`instance.cfg`** - * - * Acquire the name of the modpack/instance of a MultiMC modpack from the modpacks - * instance.cfg, which is usually created by the MultiMC launcher. - * - * @param instanceCfg The config.json-file of the modpack to read. - * @return The instance name. - * @author Griefed - */ - abstract fun updateDestinationFromInstanceCfg(instanceCfg: F): String - - /** - * Ensures the modloader is normalized to first letter upper case and rest lower case. Basically - * allows the user to input Forge or Fabric in any combination of upper- and lowercase and - * ServerPackCreator will still be able to work with the users input. - * - * @param modloader Modloader String-representation to normalize. - * @return A normalized String of the specified modloader. - * @author Griefed - */ - fun getModLoaderCase(modloader: String) = when { - modloader.lowercase().matches(forge) || modloader.lowercase().contains("forge") && - !(modloader.lowercase().matches(neoForge) || modloader.lowercase().contains("NeoForge"))-> { - "Forge" - } - modloader.lowercase().matches(fabric) || modloader.lowercase().contains("fabric") -> { - "Fabric" - } - modloader.lowercase().matches(quilt) || modloader.lowercase().contains("quilt") -> { - "Quilt" - } - modloader.lowercase().matches(legacyFabric) || modloader.lowercase().contains("legacyfabric") -> { - "LegacyFabric" - } - modloader.lowercase().matches(neoForge) || modloader.lowercase().contains("NeoForge") -> { - "NeoForge" - } - else -> { - log.warn { "No suitable modloader found. Defaulting to Forge." } - "Forge" - } - } - - /** - * Check the passed directory for existence and whether it is a directory, rather than a file. - * - * @param modpackDir The modpack directory. - * @param configCheck Collection of encountered errors, if any, for convenient result-checks. - * @return `true` if the directory exists. - * @author Griefed - */ - abstract fun checkModpackDir( - modpackDir: String, - configCheck: ConfigCheck, - printLog: Boolean - ): ConfigCheck - - /** - * Acquire a list of all files and directories in a ZIP-file. - * - * @param zipFile The ZIP-archive to get the list of files from. - * @return All files and directories in the ZIP-file. - * @author Griefed - */ - abstract fun getAllFilesAndDirectoriesInModpackZip(zipFile: File): List<String> - - /** - * Acquire a list of all directories in a ZIP-file. The resulting list excludes files. - * - * @param zipFile The ZIP-archive to get the list of files from. - * @return All directories in the ZIP-file. - * @author Griefed - */ - abstract fun getDirectoriesInModpackZip(zipFile: File): List<String> - - /** - * Acquire a list of all files in a ZIP-file. The resulting list excludes directories. - * - * @param zipFile The ZIP-archive to get the list of files from. - * @return All files in the ZIP-file. - * @author Griefed - */ - abstract fun getFilesInModpackZip(zipFile: File): List<String> -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt deleted file mode 100644 index 12c5fcf22..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.File - -/** - * Check any given [PackConfig] for errors and, if so desired, add them to a passed - * list of errors, so you may display them in a GUI, CLI or website. The most important method is - * [checkConfiguration] and all of its variants which will check - * your passed configuration model for errors, indicating whether it is safe to use for further - * operations. Running your model through the checks also ensures that the default script settings - * are present and set according to your pack's environment. - * - * @author Griefed - */ -expect class ConfigurationHandler { - fun checkConfiguration(configFile: File, packConfig: PackConfig = PackConfig(), configCheck: ConfigCheck = ConfigCheck(), quietCheck: Boolean = false): ConfigCheck - fun checkConfiguration(packConfig: PackConfig = PackConfig(), configCheck: ConfigCheck = ConfigCheck(), quietCheck: Boolean = false): ConfigCheck - fun isDir(packConfig: PackConfig, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck - fun isZip(packConfig: PackConfig, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck - fun checkModloaderVersion(modloader: String, modloaderVersion: String, minecraftVersion: String, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck - fun checkInclusions(inclusions: MutableList<InclusionSpecification>, modpackDir: String, configCheck: ConfigCheck = ConfigCheck(), printLog: Boolean = true): ConfigCheck - fun checkZipArchive(pathToZip: String, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck - fun checkManifests(destination: String, packConfig: PackConfig, configCheck: ConfigCheck = ConfigCheck()): String? - fun checkModpackDir(modpackDir: String, configCheck: ConfigCheck = ConfigCheck(), printLog: Boolean = true): ConfigCheck - fun checkModloader(modloader: String,configCheck: ConfigCheck = ConfigCheck()): ConfigCheck - - fun checkIconAndProperties(iconOrPropertiesPath: String = ""): Boolean - - fun ensureScriptSettingsDefaults(packConfig: PackConfig) - fun sanitizeLinks(packConfig: PackConfig) - fun unzipDestination(destination: String): String - fun suggestInclusions(modpackDir: String): ArrayList<InclusionSpecification> - fun checkServerPacksForIncrement(source: String, destination: String): String - fun printConfigurationModel( - modpackDirectory: String, - clientsideMods: List<String>, - inclusions: List<InclusionSpecification>, - minecraftVer: String, - modloader: String, - modloaderVersion: String, - includeIcon: Boolean, - includeProperties: Boolean, - includeZip: Boolean, - javaArgs: String, - serverPackSuffix: String, - serverIconPath: String, - serverPropertiesPath: String, - scriptSettings: HashMap<String, String> - ) - - fun getDirectoriesInModpackZipBaseDirectory(zipFile: File): List<String> - fun updateConfigModelFromCurseManifest(packConfig: PackConfig, manifest: File) - fun updatePackName(packConfig: PackConfig, vararg childNodes: String): String? - fun updateConfigModelFromMinecraftInstance(packConfig: PackConfig, minecraftInstance: File) - fun updateConfigModelFromModrinthManifest(packConfig: PackConfig, manifest: File) - fun updateConfigModelFromInstance(packConfig: PackConfig, manifest: File) - fun updateConfigModelFromConfigJson(packConfig: PackConfig, config: File) - fun updateConfigModelFromMMCPack(packConfig: PackConfig, mmcPack: File) - fun updateDestinationFromInstanceCfg(instanceCfg: File): String - fun getAllFilesAndDirectoriesInModpackZip(zipFile: File): List<String> - fun getDirectoriesInModpackZip(zipFile: File): List<String> - fun getFilesInModpackZip(zipFile: File): List<String> -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt deleted file mode 100644 index 92cb1a065..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -/** - * A FileInclusionSpecification is at minimum a source-declaration from which files and directories will be included - * in the server pack to be generated. - * - * Optionally, the following values can be specified: - * * Destination - * * Inclusion-filter (regex) - * * Exclusion-filter (regex) - * - * * When a destination is specified, then every file and directory acquired from the source will be copied to the - * specified destination in the server pack, whereas otherwise the source would be copied to a destination in the server - * pack matching the name of the source. - * * Inclusion filters help to further limit the files and directories to be included from the specified source. Any file - * and directory matching this filter will be included. - * * Exclusion filters help to further limit the files and directories to be included from the specified source. Any file - * and directory matching this filter will NOT be included. - * - * @author Griefed - */ -expect class InclusionSpecification( - source: String, - destination: String? = null, - inclusionFilter: String? = null, - exclusionFilter: String? = null -) { - fun hasInclusionFilter(): Boolean - fun hasExclusionFilter(): Boolean - fun hasDestination(): Boolean - fun isGlobalFilter(): Boolean - fun asHashMap(): HashMap<String,String> - var source: String - var destination: String? - var inclusionFilter: String? - var exclusionFilter: String? -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Pack.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Pack.kt deleted file mode 100644 index 2824b5716..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/Pack.kt +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.CommentedConfig - -/** - * A server pack configuration from which to generate a server pack. - * - * @author Griefed - */ -@Suppress("MemberVisibilityCanBePrivate") -abstract class Pack<F, J, out P> { - protected val forge = "^forge$".toRegex() - protected val neoForge = "^neoforge$".toRegex() - protected val fabric = "^fabric$".toRegex() - protected val quilt = "^quilt$".toRegex() - protected val legacyFabric = "^legacyfabric$".toRegex() - protected val whitespace = "^\\s+$".toRegex() - - val clientMods: ArrayList<String> = ArrayList(1000) - val modsWhitelist: ArrayList<String> = ArrayList(1000) - val inclusions: ArrayList<InclusionSpecification> = ArrayList(100) - val scriptSettings = HashMap<String, String>(100) - val pluginsConfigs = HashMap<String, ArrayList<CommentedConfig>>(20) - var modpackDir = "" - var minecraftVersion = "" - var modloaderVersion = "" - var javaArgs = "" - var serverPackSuffix = "" - var serverIconPath = "" - var serverPropertiesPath = "" - var modloader = "" - set(newModLoader) { - if (newModLoader.lowercase().matches(forge)) { - field = "Forge" - } else if (newModLoader.lowercase().matches(neoForge)) { - field = "NeoForge" - } else if (newModLoader.lowercase().matches(fabric)) { - field = "Fabric" - } else if (newModLoader.lowercase().matches(quilt)) { - field = "Quilt" - } else if (newModLoader.lowercase().matches(legacyFabric)) { - field = "LegacyFabric" - } - } - var isServerIconInclusionDesired = true - var isServerPropertiesInclusionDesired = true - var isZipCreationDesired = true - var modpackJson: J? = null - var configVersion: String? = null - - open var projectName: String? = null - open var fileName: String? = null - open var fileDiskName: String? = null - - /** - * Save this configuration. - * - * @param destination The file to store the configuration in. - * @return The configuration for further operations. - * @author Griefed - */ - abstract fun save(destination: F, apiProperties: ApiProperties): P - - fun setPluginsConfigs(pluginConfigs: HashMap<String, ArrayList<CommentedConfig>>) { - this.pluginsConfigs.clear() - this.pluginsConfigs.putAll(pluginConfigs) - } - - fun getPluginConfigs(pluginId: String): ArrayList<CommentedConfig> { - if (!pluginsConfigs.containsKey(pluginId)) { - pluginsConfigs[pluginId] = java.util.ArrayList(100) - } - return pluginsConfigs[pluginId]!! - } - - fun setClientMods(newClientMods: MutableList<String>) { - clientMods.clear() - newClientMods.removeIf { entry: String -> entry.isBlank() || entry.matches(whitespace) } - clientMods.addAll(newClientMods) - } - - fun setModsWhitelist(newModsWhitelist: MutableList<String>) { - modsWhitelist.clear() - newModsWhitelist.removeIf { entry: String -> entry.isBlank() || entry.matches(whitespace) } - modsWhitelist.addAll(newModsWhitelist) - } - - fun setInclusions(newCopyDirs: ArrayList<InclusionSpecification>) { - inclusions.clear() - inclusions.addAll(newCopyDirs) - } - - fun setScriptSettings(settings: HashMap<String, String>) { - scriptSettings.clear() - scriptSettings.putAll(settings) - } - - override fun toString(): String { - return "Pack(" + - " clientMods=$clientMods," + - " whiteList=$modsWhitelist," + - " copyDirs=$inclusions," + - " scriptSettings=$scriptSettings," + - " pluginsConfigs=$pluginsConfigs," + - " modpackDir='$modpackDir'," + - " minecraftVersion='$minecraftVersion'," + - " modloaderVersion='$modloaderVersion'," + - " javaArgs='$javaArgs'," + - " serverPackSuffix='$serverPackSuffix'," + - " serverIconPath='$serverIconPath'," + - " serverPropertiesPath='$serverPropertiesPath'," + - " modloader='$modloader'," + - " isServerIconInclusionDesired=$isServerIconInclusionDesired," + - " isServerPropertiesInclusionDesired=$isServerPropertiesInclusionDesired," + - " isZipCreationDesired=$isZipCreationDesired)" - } -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt deleted file mode 100644 index 358c6a781..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.File - -/** - * A PackConfig contains the settings required to create a server pack. - * A configuration model usually consists of: - * - * * Modpack directory - * * Minecraft version - * * Modloader - * * Modloader version - * * Java args for the start scripts - * * Files and directories to copy to the server pack - * * Whether to pre-install the modloader server - * * Whether to include a server-icon - * * Whether to include a server.properties - * * Whether to create a ZIP-archive - * - * @author Griefed - */ -expect open class PackConfig { - - val clientMods: ArrayList<String> - val modsWhitelist: ArrayList<String> - val inclusions: ArrayList<InclusionSpecification> - val scriptSettings: HashMap<String, String> - val pluginsConfigs: HashMap<String, ArrayList<CommentedConfig>> - var modpackDir: String - var minecraftVersion: String - var modloaderVersion: String - var javaArgs: String - var serverPackSuffix: String - var serverIconPath: String - var serverPropertiesPath: String - var modloader: String - var isServerIconInclusionDesired: Boolean - var isServerPropertiesInclusionDesired: Boolean - - fun getPluginConfigs(pluginId: String): ArrayList<CommentedConfig> - fun save(destination: File, apiProperties: ApiProperties): PackConfig - - /** - * Construct a new configuration model with custom values. - * - * @param clientMods List of clientside mods to exclude from the server pack. - * @param whitelist List of mods to include if present, regardless whether a match was found through [clientMods] - * @param copyDirs List of directories and/or files to include in the server pack. - * @param modpackDir The path to the modpack. - * @param minecraftVersion The Minecraft version the modpack uses. - * @param modLoader The modloader the modpack uses. Either `Forge`, `Fabric` or `Quilt`. - * @param modLoaderVersion The modloader version the modpack uses. - * @param javaArgs JVM flags to create the start scripts with. - * @param serverPackSuffix Suffix to create the server pack with. - * @param serverIconPath Path to the icon to use in the server pack. - * @param serverPropertiesPath Path to the server.properties to create the server pack with. - * @param includeServerIcon Whether to include the server-icon.png in the server pack. - * @param includeServerProperties Whether to include the server.properties in the server pack. - * @param includeZipCreation Whether to create a ZIP-archive of the server pack. - * @param scriptSettings Map containing key-value pairs to be used in start script creation. - * @param pluginsConfigs Configuration for any and all plugins used by this configuration. - * @author Griefed - */ - constructor( - clientMods: List<String>, - whitelist: List<String>, - copyDirs: List<InclusionSpecification>, - modpackDir: String, - minecraftVersion: String, - modLoader: String, - modLoaderVersion: String, - javaArgs: String, - serverPackSuffix: String, - serverIconPath: String, - serverPropertiesPath: String, - includeServerIcon: Boolean, - includeServerProperties: Boolean, - includeZipCreation: Boolean, - scriptSettings: HashMap<String, String>, - pluginsConfigs: HashMap<String, ArrayList<CommentedConfig>> - ) - - constructor() -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPack.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPack.kt deleted file mode 100644 index 9b54a57a7..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPack.kt +++ /dev/null @@ -1,514 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.common.escapePath -import mu.KotlinLogging -import java.io.File - -/** - * Base-class for the [de.griefed.serverpackcreator.api.ServerPackHandler] to ensure we have the most important methods - * for generating a server pack from a given configuration. - * - * @author Griefed - */ -abstract class ServerPack<F, TS, TF> { - protected val log = KotlinLogging.logger {} - protected val modFileEndings = listOf("jar", "disabled") - protected val ending = "^\\.[0-9a-zA-Z]+$".toRegex() - protected val variables = """ - ### - # Remember: - # Escape \ and : in your Java path on Windows with another \ - # Example: - # From: C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot\bin\java.exe - # To: C\:\\Program Files\\Eclipse Adoptium\\jdk-17.0.9.9-hotspot\\bin\\java.exe - # More on escape characters at https://en.wikipedia.org/wiki/Escape_character - ### - MINECRAFT_VERSION=SPC_MINECRAFT_VERSION_SPC - MODLOADER=SPC_MODLOADER_SPC - MODLOADER_VERSION=SPC_MODLOADER_VERSION_SPC - LEGACYFABRIC_INSTALLER_VERSION=SPC_LEGACYFABRIC_INSTALLER_VERSION_SPC - FABRIC_INSTALLER_VERSION=SPC_FABRIC_INSTALLER_VERSION_SPC - QUILT_INSTALLER_VERSION=SPC_QUILT_INSTALLER_VERSION_SPC - MINECRAFT_SERVER_URL=SPC_MINECRAFT_SERVER_URL_SPC - NEOFORGE_INSTALLER_URL=SPC_NEOFORGE_INSTALLER_URL_SPC - JAVA_ARGS="SPC_JAVA_ARGS_SPC" - JAVA="SPC_JAVA_SPC" - WAIT_FOR_USER_INPUT=SPC_WAIT_FOR_USER_INPUT_SPC - """.trimIndent() - - /** - * Acquire the destination directory in which the server pack will be generated. The directory in - * which the server pack will be created has all its spaces replaces with underscores, so - * `Survive Create Prosper 4 - 5.0.1` would become `Survive_Create_Prosper_4_-_5.0.1 ` - * Even though it is the year 2022, spaces in paths can and do still cause trouble. Such as for - * Powershell scripts. Powershell throws a complete fit if the path contains spaces....so, we - * remove them. Better safe than sorry. - * - * @param packConfig Model containing the modpack directory of the modpack from which the - * server pack will be generated. - * @return The complete path to the directory in which the server pack will be generated. - * @author Griefed - */ - abstract fun getServerPackDestination(packConfig: Pack<*, *, *>): String - - /** - * Create a server pack from a given instance of [PackConfig]. - * - * @param packConfig An instance of [PackConfig] which contains the - * configuration of the modpack from which the server pack is to be - * created. - * @return `true` if the server pack was successfully generated. - * @author Griefed - */ - abstract fun run(packConfig: PackConfig): Boolean - - /** - * Deletes all files, directories and ZIP-archives of previously generated server packs to ensure - * newly generated server pack is as clean as possible. This will completely empty the server pack - * directory, so use with caution! - * - * @param deleteZip Whether to delete the server pack ZIP-archive. - * @param destination The destination at which to clean up in. - * @author Griefed - */ - abstract fun cleanupEnvironment(deleteZip: Boolean, destination: String) - - /** - * Copies all specified directories and mods, excluding clientside-only mods, from the modpack - * directory into the server pack directory. If a `source/file;destination/file` - * -combination is provided, the specified source-file is copied to the specified - * destination-file. One of the reasons as to why it is recommended to run a given - * ConfigurationModel through the ConfigurationHandler first, is because the ConfigurationHandler - * will resolve links to their actual files first before then correcting the given - * ConfigurationModel. - * - * @param packConfig ConfigurationModel containing the modpack directory, list of - * directories and files to copy, list of clientside-only mods to - * exclude, the Minecraft version used by the modpack and server pack, - * and the modloader used by the modpack and server pack. - * @author Griefed - */ - fun copyFiles(packConfig: Pack<*, *, *>, overwrite: Boolean = true) = copyFiles( - packConfig.modpackDir, - packConfig.inclusions, - packConfig.clientMods, - packConfig.modsWhitelist, - packConfig.minecraftVersion, - getServerPackDestination(packConfig), - packConfig.modloader, - overwrite - ) - - /** - * Download and provide the improved Fabric Server Launcher, if it is available for the given - * Minecraft and Fabric version. - * - * @param packConfig ConfigurationModel containing the Minecraft and Fabric version for - * which to acquire the improved Fabric Server Launcher. - * @author Griefed - */ - fun provideImprovedFabricServerLauncher(packConfig: Pack<*, *, *>) = getImprovedFabricLauncher( - packConfig.minecraftVersion, packConfig.modloaderVersion, getServerPackDestination(packConfig) - ) - - /** - * Copies the server-icon.png into server pack. The sever-icon is automatically scaled to a - * resolution of 64x64 pixels. - * - * @param packConfig Containing the modpack directory to acquire the destination of the - * server pack and the path to the server icon to copy. - * @author Griefed - */ - fun copyIcon(packConfig: Pack<*, *, *>) = copyIcon(getServerPackDestination(packConfig), packConfig.serverIconPath) - - /** - * Copies the server.properties into server pack. - * - * @param packConfig Containing the modpack directory to acquire the destination of the - * server pack and the path to the server properties to copy. - * @author Griefed - */ - fun copyProperties(packConfig: Pack<*, *, *>) = - copyProperties(getServerPackDestination(packConfig), packConfig.serverPropertiesPath) - - /** - * Create start-scripts for the generated server pack using the templates the user has defined for - * their instance of ServerPackCreator in the property `de.griefed.serverpackcreator.serverpack.script.template`. - * - * @param packConfig Configuration model containing modpack specific values. keys to be - * replaced with their respective values in the start scripts, as well - * as the modpack directory from which the destination of the server - * pack is acquired. - * @param isLocal Whether the start scripts should be created for a locally usable - * server pack. Use `false` if the start scripts should be created - * for a server pack about to be zipped. - * @author Griefed - */ - fun createStartScripts(packConfig: Pack<*, *, *>, isLocal: Boolean) = - createStartScripts(packConfig.scriptSettings, getServerPackDestination(packConfig), isLocal) - - /** - * Creates a ZIP-archive of the server pack previously generated. Depending on the property - * `de.griefed.serverpackcreator.serverpack.zip.exclude.enabled`, files will be excluded. To customize - * the files which will be excluded, see the property `de.griefed.serverpackcreator.serverpack.zip.exclude` - * - * @param packConfig Contains the Minecraft version used by the modpack and server pack, - * whether the modloader server was installed, the modpack directory to - * acquire the destination of the server pack, the modloader used by the - * modpack and server pack and the modloader version. - * @author Griefed - */ - fun zipBuilder(packConfig: Pack<*, *, *>) = zipBuilder( - packConfig.minecraftVersion, - getServerPackDestination(packConfig), - packConfig.modloader, - packConfig.modloaderVersion - ) - - /** - * Copies all specified directories and mods, excluding clientside-only mods, from the modpack - * directory into the server pack directory. If a `source/file;destination/file` - * -combination is provided, the specified source-file is copied to the specified - * destination-file. One of the reasons as to why it is recommended to run a given - * ConfigurationModel through the ConfigurationHandler first, is because the ConfigurationHandler - * will resolve links to their actual files first before then correcting the given - * ConfigurationModel. - * - * @param modpackDir Files and directories are copied into the server_pack directory inside - * the modpack directory. - * @param inclusions All directories and files therein to copy to the server pack. - * @param clientMods List of clientside-only mods to exclude from the server pack. - * @param minecraftVersion The Minecraft version the modpack uses. - * @param destination The destination where the files should be copied to. - * @param modloader The modloader used for mod sideness detection. - * @author Griefed - */ - abstract fun copyFiles( - modpackDir: String, - inclusions: ArrayList<InclusionSpecification>, - clientMods: List<String>, - whitelist: List<String>, - minecraftVersion: String, - destination: String, - modloader: String, - overwrite: Boolean - ) - - /** - * Download and provide the improved Fabric Server Launcher, if it is available for the given - * Minecraft and Fabric version. - * - * @param minecraftVersion The Minecraft version the modpack uses and the Fabric Server Launcher - * should be downloaded for. - * @param fabricVersion The modloader version the modpack uses and the Fabric Server Launcher - * should be downloaded for. - * @param destination The destination of the server pack. - * @author Griefed - */ - abstract fun getImprovedFabricLauncher( - minecraftVersion: String, fabricVersion: String, destination: String - ) - - /** - * Copies the server-icon.png into server pack. The sever-icon is automatically scaled to a - * resolution of 64x64 pixels. - * - * @param destination The destination where the icon should be copied to. - * @param pathToServerIcon The path to the custom server-icon. - * @author Griefed - */ - abstract fun copyIcon(destination: String, pathToServerIcon: String) - - /** - * Copies the server.properties into server pack. - * - * @param destination The destination where the properties should be copied to. - * @param pathToServerProperties The path to the custom server.properties. - * @author Griefed - */ - abstract fun copyProperties(destination: String, pathToServerProperties: String) - - /** - * Create start-scripts for the generated server pack using the templates the user has defined for - * their instance of ServerPackCreator in the property `de.griefed.serverpackcreator.serverpack.script.template`. - * - * @param scriptSettings Key-value pairs to replace in the script. A given key in the script is - * replaced with its value. - * @param destination The destination where the scripts should be created in. - * @param isLocal Whether the start scripts should be created for a locally usable server - * pack. Use `false` if the start scripts should be created for a - * server pack about to be zipped. - * @author Griefed - */ - abstract fun createStartScripts( - scriptSettings: HashMap<String, String>, destination: String, isLocal: Boolean - ) - - /** - * Creates a ZIP-archive of specified directory. Depending on the property `de.griefed.serverpackcreator.serverpack.zip.exclude.enabled`, - * files will be excluded. To customize the files which will be excluded, the property `de.griefed.serverpackcreator.serverpack.zip.exclude` - * must be configured accordingly. The created ZIP-archive will be stored alongside the specified - * destination, with `_server_pack.zip` appended to its name. - * - * @param minecraftVersion Determines the name of the Minecraft server JAR to exclude - * from the ZIP-archive if the modloader is Forge. - * @param destination The destination where the ZIP-archive should be created in. - * @param modloader The modloader the modpack and server pack use. - * @param modloaderVersion The modloader version the modpack and server pack use. - * @author Griefed - */ - abstract fun zipBuilder( - minecraftVersion: String, - destination: String, - modloader: String, - modloaderVersion: String - ) - - /** - * Generates a list of all mods to include in the server pack. If the user specified - * clientside-mods to exclude, and/or if the automatic exclusion of clientside-only mods is - * active, they will be excluded, too. - * - * @param modsDir The mods-directory of the modpack of which to generate a list of - * all its contents. - * @param userSpecifiedClientMods A list of all clientside-only mods. - * @param userSpecifiedWhitelist A list of mods to include regardless if a match was found in [userSpecifiedClientMods]. - * @param minecraftVersion The Minecraft version the modpack uses. When the modloader is - * Forge, this determines whether Annotations or Tomls are - * scanned. - * @param modloader The modloader the modpack uses. - * @return A list of all mods to include in the server pack. - * @author Griefed - */ - abstract fun getModsToInclude( - modsDir: String, - userSpecifiedClientMods: List<String>, - userSpecifiedModsWhitelist: List<String>, - minecraftVersion: String, - modloader: String - ): List<F> - - /** - * Check whether the installer for the given combination of Minecraft version, modloader and - * modloader version is available/reachable. - * - * @param mcVersion The Minecraft version. - * @param modloader The modloader. - * @param modloaderVersion The modloader version. - * @return `true` if the installer can be downloaded. - * @author Griefed - */ - abstract fun serverDownloadable( - mcVersion: String, modloader: String, modloaderVersion: String - ): Boolean - - /** - * Deletes all files, directories and ZIP-archives of previously generated server packs to ensure - * newly generated server pack is as clean as possible. This will completely empty the server pack - * directory, so use with caution! - * - * @param deleteZip Whether to delete the server pack ZIP-archive. - * @param packConfig ConfigurationModel containing the modpack directory from which the - * destination of the server pack is acquired. - * @author Griefed - */ - fun cleanupEnvironment(deleteZip: Boolean, packConfig: Pack<*, *, *>) = - cleanupEnvironment(deleteZip, getServerPackDestination(packConfig)) - - /** - * Generates a list of all mods to include in the server pack. If the user specified - * clientside-mods to exclude, and/or if the automatic exclusion of clientside-only mods is - * active, they will be excluded, too. - * - * @param packConfig The configurationModel containing the modpack directory, list of - * clientside-only mods to exclude, Minecraft version used by the - * modpack and server pack and the modloader used by the modpack and - * server pack. - * @return A list of all mods to include in the server pack. - * @author Griefed - */ - fun getModsToInclude(packConfig: Pack<*, *, *>) = getModsToInclude( - "${packConfig.modpackDir}${File.separator}mods", - packConfig.clientMods, - packConfig.modsWhitelist, - packConfig.minecraftVersion, - packConfig.modloader - ) - - /** - * Gather a list of all files from an explicit source;destination-combination. If the source is a - * file, a singular [ServerPackFile] is returned. If the source is a directory, then all - * files in said directory are returned. - * - * @param source source-file/directory - * @param destination destination-file/directory - * @param modpackDir The modpack-directory. - * @param serverPackDestination The destination, normally the server pack-directory. - * @return List of [ServerPackFile]. - * @author Griefed - */ - abstract fun getExplicitFiles( - source: String, destination: String, modpackDir: String, serverPackDestination: String - ): MutableList<ServerPackFile> - - /** - * Recursively acquire all files and directories inside the given save-directory as a list of - * [ServerPackFile]. - * - * @param clientDir Target directory in the server pack. Usually the name of the world. - * @param directory The save-directory. - * @param destination The destination of the server pack. - * @return List of [ServerPackFile] which will be included in the server pack. - * @author Griefed - */ - abstract fun getSaveFiles( - clientDir: String, directory: String, destination: String - ): List<ServerPackFile> - - /** - * Recursively acquire all files and directories inside the given directory as a list of - * [ServerPackFile]. - * - * @param source The source-directory. - * @param destination The server pack-directory. - * @return List of files and folders of the server pack. - * @author Griefed - */ - abstract fun getDirectoryFiles( - source: String, destination: String - ): List<ServerPackFile> - - /** - * Check whether the given file or directory should be excluded from the server pack. - * - * @param modpackDir The directory where the modpack resides in. Used to filter out any - * unwanted directories using the property `de.griefed.serverpackcreator.configuration.directories.shouldexclude`. - * @param fileToCheckFor The file or directory to check whether it should be excluded from the - * server pack. - * @param exclusions Files or directories determined by ServerPackCreator to be excluded from - * the server pack - * @return `true` if the file or directory was determined to be excluded from the server - * pack. - * @author Griefed - */ - abstract fun excludeFileOrDirectory(modpackDir: String, fileToCheckFor: F, exclusions: List<Regex>): Boolean - - /** - * Cleans up the server_pack directory by deleting left-over files from modloader installations - * and version checking. - * - * @param destination The destination where we should clean up in. - * @author Griefed - */ - abstract fun postInstallCleanup(destination: String) - - /** - * Exclude every automatically discovered clientside-only mod from the list of mods in the - * modpack. - * - * @param autodiscoveredClientMods Automatically discovered clientside-only mods in the modpack. - * @param modsInModpack All mods in the modpack. - * @author Griefed - */ - abstract fun excludeMods(autodiscoveredClientMods: List<F>, modsInModpack: TF) - - /** - * Exclude user-specified mods from the server pack. - * - * @param userSpecifiedExclusions User-specified clientside-only mods to exclude from the server - * pack. - * @param modsInModpack Every mod ending with `jar` or `disabled` in the - * modpack. - * @author Griefed - */ - abstract fun excludeUserSpecifiedMod(userSpecifiedExclusions: List<String>, userSpecifiedModsWhitelist: List<String>, modsInModpack: TF) - - /** - * Walk through the specified directory and add a [ServerPackFile] for every file/folder - * which matches the given regex. - * - * @param source The source-directory to walk through and perform regex-matches in. - * @param destination The destination-directory where a matched file should be copied to, - * usually the server pack directory. - * @param regex Regex with which to perform matches against files in the - * source-directory. - * @param serverPackFiles List of files to copy to the server pack to which any matched file will - * be added to. - * @author Griefed - */ - abstract fun regexWalk(source: F, destination: String, regex: Regex, serverPackFiles: MutableList<ServerPackFile>) - - /** - * Go through the mods in the modpack and exclude any of the user-specified clientside-only mods - * according to the filter method set in the serverpackcreator.properties. For available filters, - * see [ExclusionFilter]. - * - * @param userSpecifiedExclusion The client mod to check whether it needs to be excluded. - * @param modsInModpack All mods in the modpack. - * - * @author Griefed - */ - abstract fun exclude(userSpecifiedExclusion: String, userSpecifiedModsWhitelist: List<String>, modsInModpack: TF) - - /** - * Cleans up the server_pack directory by deleting left-over files from modloader installations - * and version checking. - * - * @param packConfig Containing the Minecraft version used by the modpack and server pack, - * the modloader version used by the modpack and server pack and the - * modpack directory to acquire the destination of the server pack. - * @author Griefed - */ - fun cleanUpServerPack(packConfig: Pack<*, *, *>) = postInstallCleanup(getServerPackDestination(packConfig)) - - /** - * Delete files and folders from previous installations to prevent errors during server installation due to already - * existing files. - * @param destination The folder in which to perform the cleanup operations. - * - * @author Griefed - */ - abstract fun preInstallationCleanup(destination: String) - - /** - * Replace placeholders for script settings in the given [content] with their respective values, both provided via the - * HashMap [scriptSettings]. - * - * @param isLocal Whether the start scripts should be created for a locally usable server pack. Use false if the - * start scripts should be created for a server pack about to be zipped - * - * @author Griefed - */ - fun replacePlaceholders(isLocal: Boolean, content: String, scriptSettings: HashMap<String, String>): String { - var result = content - for ((key, value) in scriptSettings) { - result = if (isLocal && key == "SPC_JAVA_SPC") { - result.replace(key, value.escapePath()) - } else if (!isLocal && key == "SPC_JAVA_SPC") { - result.replace(key, "java") - } else { - result.replace(key, value) - } - } - return result - } -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt deleted file mode 100644 index ba1c894ba..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -/** - * A ServerPackFile represents a source-destination-combination of two files/directories. The - * source is the file/directory, usually in the modpack, whilst the destination is the file to - * which the source is supposed to be copied to in the server pack. - * - * @author Griefed - */ -expect class ServerPackFile { - - /** - * Copy the file to the server pack. - * - * @author Griefed - */ - fun copy(overwrite: Boolean = true) -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt deleted file mode 100644 index 4ca83b832..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.modscanning.ModScanner -import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.versionmeta.VersionMeta - -/** - * Everything revolving around creating a server pack. The intended workflow is to create a [PackConfig] and run - * it through any of the available [ConfigurationHandler.checkConfiguration]-variants, and then call [run] with the - * previously checked configuration model. You may run with an unchecked configuration model, but no guarantees or - * promises, yes not even support, is given for running a model without checking it first. - * - * This class also gives you access to the methods which are responsible for creating the server pack, in case you want - * to do things manually. - * - * If you want to execute extensions, see - * * [ApiPlugins.runPreGenExtensions]}, - * * [ApiPlugins.runPreZipExtensions]} and - * * [ApiPlugins.runPostGenExtensions]. - * - * @param apiProperties Base settings of ServerPackCreator needed for server pack generation, such as access to the - * directories, script templates and so on. - * @param versionMeta Meta for modloader and version specific checks and information gathering, such as modloader - * installer downloads. - * @param utilities Common utilities used across ServerPackCreator. - * @param apiPlugins Any addons which a user may want to execute during the generation of a server pack. - * @param modScanner In case a user enabled automatic sideness detection, this will exclude clientside-only mods - * from a server pack. - * - * @author Griefed - */ -expect class ServerPackHandler( - apiProperties: ApiProperties, - versionMeta: VersionMeta, - utilities: Utilities, - apiPlugins: ApiPlugins, - modScanner: ModScanner -) \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt deleted file mode 100644 index c9e8b263f..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("UnusedReceiverParameter") - -package de.griefed.serverpackcreator.api.modscanning - -/** - * `fabric.mod.json`-based scanning of Fabric-Minecraft mods. - * - * @author Griefed - */ -expect class FabricScanner - -val FabricScanner.dependencyExclusions: Regex - get() = "(fabric|fabricloader|java|minecraft)".toRegex() \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt deleted file mode 100644 index 316a08447..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("UnusedReceiverParameter") - -package de.griefed.serverpackcreator.api.modscanning - -/** - * `fml-cache-annotation.json`-based scanning of Forge-Minecraft mods of older versions. - * - * @author Griefed - */ -expect class ForgeAnnotationScanner - -val ForgeAnnotationScanner.dependencyCheck: Regex - get() = "(before:.*|after:.*|required-after:.*|)".toRegex() -val ForgeAnnotationScanner.dependencyReplace: Regex - get() = "(@.*|\\[.*)".toRegex() \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt deleted file mode 100644 index 7617602c7..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("UnusedReceiverParameter") - -package de.griefed.serverpackcreator.api.modscanning - -/** - * `mods.toml`-based scanning of Fabric-Minecraft mods for Minecraft 1.16.5 and newer. - * - * @author Griefed - */ -expect open class ForgeTomlScanner { - open val modsToml: String -} - -val ForgeTomlScanner.forgeMinecraft: Regex - get() = "^(forge|minecraft)$".toRegex() -val ForgeTomlScanner.bothServer: Regex - get() = "^(BOTH|SERVER)$".toRegex() \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt deleted file mode 100644 index 900ccf418..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.modscanning - -/** - * Easy-access class for scanning of mods inside a modpack. This class itself does not do much, - * other than bringing the different mod-scanners to one place for ease-of-use. - * - * @param forgeAnnotationScanner For scanning `fml-cache-annotation.json` - * @param fabricScanner For scanning `fabric.mod.json` - * @param quiltScanner For scanning `quilt.mod.json` - * @param forgeTomlScanner For scanning `mods.toml` - * - * @author Griefed - */ -expect class ModScanner( - forgeAnnotationScanner: ForgeAnnotationScanner, - fabricScanner: FabricScanner, - quiltScanner: QuiltScanner, - forgeTomlScanner: ForgeTomlScanner, - neoForgeTomlScanner: NeoForgeTomlScanner -) { - val forgeAnnotationScanner: ForgeAnnotationScanner - val fabricScanner: FabricScanner - val quiltScanner: QuiltScanner - val forgeTomlScanner: ForgeTomlScanner - val neoForgeTomlScanner: NeoForgeTomlScanner -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt deleted file mode 100644 index e22d9f9a9..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt +++ /dev/null @@ -1,7 +0,0 @@ -package de.griefed.serverpackcreator.api.modscanning - -import de.griefed.serverpackcreator.api.utilities.TomlParser - -expect class NeoForgeTomlScanner(tomlParser: TomlParser) : ForgeTomlScanner { - override val modsToml: String -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt deleted file mode 100644 index a49001b81..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("UnusedReceiverParameter") - -package de.griefed.serverpackcreator.api.modscanning - -/** - * `quilt.mod.json`-based scanning of Fabric-Minecraft mods. - * - * @author Griefed - */ -expect class QuiltScanner - -val QuiltScanner.dependencyExclusions: Regex - get() = "(quilt_loader|quilt_base|quilted_fabric_api|java|minecraft)".toRegex() \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionPoint.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionPoint.kt deleted file mode 100644 index 6292ab444..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionPoint.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.plugins - -/** - * The extension point interface should provide an entry point from which to expand plugins from. See the implementation - * in the JVM backend for an example with the pf4j-library. - * - * @author Griefed - */ -expect interface ExtensionPoint \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt deleted file mode 100644 index 163e92252..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.plugins.swinggui - -import de.griefed.serverpackcreator.api.ApiProperties -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.versionmeta.VersionMeta - -/** - * Configuration panel for a given plugins configuration in the context of a server pack configuration. An - * extension config panel should provide configuration options relevant to one server pack and one server pack only. - * Every server pack configuration will receive/store/load one config for your plugin's panel. - * - * @author Griefed - */ -expect abstract class ExtensionConfigPanel protected constructor( - versionMeta: VersionMeta, - apiProperties: ApiProperties, - utilities: Utilities, - serverPackConfigTab: ServerPackConfigTab, - pluginConfig: Optional<CommentedConfig>, - extensionName: String, - pluginID: String -) { - - val serverPackExtensionConfig: ArrayList<CommentedConfig> - - /** - * Retrieve this extensions server pack specific configuration. When no configuration with configs - * for this extension has been loaded yet, the returned list is empty. Fill it with life! - * - * @return Config list to be used in subsequent server pack generation runs, by various other - * extensions. - * @author Griefed - */ - abstract fun serverPackExtensionConfig(): ArrayList<CommentedConfig> - - /** - * Pass the extension configuration to the configuration panel, so it can then, in turn, load the - * available configurations and make them editable, if so desired. - * - * @param serverPackExtensionConfig The list of extension configurations to pass to the - * configuration panel. - * @author Griefed - */ - abstract fun setServerPackExtensionConfig( - serverPackExtensionConfig: ArrayList<CommentedConfig> - ) - - /** - * Clear the interface, or in other words, reset this extensions config panel UI. If your Config - * Panel Extensions has no elements you wish to reset, then simply overwrite this method with an - * empty method body. - * - * The `clear()`-method is called when the owning `TabCreateServerPack.clearInterface()`-method is called. - */ - abstract fun clear() -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt deleted file mode 100644 index 4a26f5a7c..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.plugins.swinggui - -/** - * An extension tab is a Java Swing component which adds another, plugin specific, tab to ServerPackCreators GUI. Said tab - * should provide the user with the ability to configure plugin-global settings, to be applied to every server pack - * generation run. - * - * @author Griefed - */ -expect abstract class ExtensionTab \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt deleted file mode 100644 index e76cfd894..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.plugins.swinggui - -import de.griefed.serverpackcreator.api.ApiProperties -import de.griefed.serverpackcreator.api.plugins.ExtensionInformation -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Icon -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.versionmeta.VersionMeta - -/** - * Extension point for plugins which add additional tabs to the ServerPackCreator GUI. - * - * @author Griefed - */ -@Suppress("unused") -expect interface TabExtension : ExtensionInformation { - /** - * @param versionMeta Instance of [VersionMeta] so you can work with available Minecraft, Forge, Fabric, - * LegacyFabric and Quilt versions. - * @param apiProperties Instance of [ApiProperties] The current configuration of ServerPackCreator, - * like the default list of clientside-only mods, the server pack directory etc. - * @param utilities Instance of [Utilities] commonly used across ServerPackCreator. - * @param pluginConfig Plugin specific configuration conveniently provided by ServerPackCreator. This is - * the global configuration of the plugin which provides the ConfigPanelExtension to ServerPackCreator. - * @param configFile The config-file corresponding to the ID of the plugin, wrapped in an Optional. - * @return Component to add to the ServerPackCreator GUI as a tab. - * @author Griefed - */ - fun getTab( - versionMeta: VersionMeta, - apiProperties: ApiProperties, - utilities: Utilities, - pluginConfig: Optional<CommentedConfig>, - configFile: Optional<File> - ): ExtensionTab - - /** - * Get the [Icon] for this tab to display to the ServerPackCreator GUI. - * - * @return Icon to be used by the added tab. - * @author Griefed - */ - val icon: Icon? - - /** - * Get the title of this tab to display in the ServerPackCreator GUI. - * - * @return The title of this plugin's tabbed pane. - * @author Griefed - */ - val title: String - - /** - * Get the tooltip for this tab to display in the ServerPackCreator GUI. - * - * @return The tooltip of this plugin's tabbed pane. - * @author Griefed - */ - val tooltip: String - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/CommentedConfig.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/CommentedConfig.kt deleted file mode 100644 index eab68ae25..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/CommentedConfig.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities - -/** - * A modifiable config that supports comments. - * @author Griefed - */ -expect interface CommentedConfig \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/File.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/File.kt deleted file mode 100644 index ae8ed9e44..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/File.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("unused") - -package de.griefed.serverpackcreator.api.utilities - -/** - * Class giving access to several things like: - * - path - * - absolute path - * - parent-directory - * - whether an instance is a file or directory - * - separator / path separator depending on the filesystem - * - constructor accepting a parent and the actual file - * - constructor accepting the full path of the file - * - constructor accepting the relative path to the file in relation to the current working directory - * - name of the file - * - check read and write access - * - whether the file exists - * - deletion - * - recursive deletion if the file is a directory - * - list contents of the file if it is a directory - * - create a directory - * - rename - * - move - * - copy - * - copy recursively - * - filesize - * - directory size - * - * See the File-class from Java for reference. - * - * @author Griefed - */ -expect class File \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Icon.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Icon.kt deleted file mode 100644 index c9e92fcdb..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Icon.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities - -/** - * Fixed size picture for displaying and decorating components. - * - * This class should all you to create images from files and resources, as well as scaling said images and saving them - * to disk. - * - * See javax.swing.Icon and javax.swing.ImageIcon for reference - * - * @author Griefed - */ -expect interface Icon \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Optional.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Optional.kt deleted file mode 100644 index 77e135ac5..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/Optional.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("unused") - -package de.griefed.serverpackcreator.api.utilities - -/** - * Container object containing a value which may or may not be null, which allows for checking said value for null-ness, - * retrieval of said value if it is not null, checking if a value is present. - * - * See java.util.Optional for reference. - * - * @author Griefed - */ -expect class Optional<T> \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/TomlParser.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/TomlParser.kt deleted file mode 100644 index 01e58fae0..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/TomlParser.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities - -/** - * A configurable parser of TOML configurations. - * @author Griefed - */ -expect class TomlParser \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/URL.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/URL.kt deleted file mode 100644 index 80bf0c2b1..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/URL.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities - -/** - * Uniform Resource Locator for files, resources, web-addresses. - * - * See java.net.URL for reference. - * - * @author Griefed - */ -expect class URL \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt deleted file mode 100644 index 62cdf69b9..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt +++ /dev/null @@ -1,214 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -import de.griefed.serverpackcreator.api.utilities.File - -/** - * Utility-class revolving around various file-interactions. - * - * @author Griefed - */ -expect class FileUtilities { - /** - * Move a file from source to destination, and replace the destination file if it exists. - * - * @param sourceFile The source file. - * @param destinationFile The destination file to be replaced by the source file. - * @return Returns true if the file was successfully replaced. - * @author Griefed - */ - fun replaceFile(sourceFile: File, destinationFile: File): Boolean - - /** - * Unzips the downloaded modpack ZIP-archive to the specified directory. - * - * @param zipFile The path to the ZIP-archive which we want to unzip. - * @param destinationDirectory The directory into which the ZIP-archive will be unzipped into. - * @author Griefed - */ - fun unzipArchive(zipFile: String, destinationDirectory: String) - - /** - * Check the given file for its type, whether it is a regular file, a Windows link or a UNIX - * symlink. - * - * @param file The file to check - * @return The type of the given file. Either [FileType.FILE], [FileType.LINK] or - * [FileType.SYMLINK] - * @author Griefed - */ - fun checkFileType(file: String): FileType - - /** - * Check the given file for its type, whether it is a regular file, a Windows link or a UNIX - * symlink. - * - * @param file The file to check - * @return The type of the given file. Either [FileType.FILE], [FileType.LINK] or - * [FileType.SYMLINK] - * @author Griefed - */ - fun checkFileType(file: File): FileType - - /** - * Check if the given file is a UNIX symlink or Windows lnk. - * - * @param file The file to check. - * @return `true` if the given file is a UNIX symlink or Windows lnk. - * @author Griefed - */ - fun isLink(file: File): Boolean - - /** - * Resolve a given link/symlink to its source. - * - * @param link The link you want to resolve. - * @return Path to the source of the link. If the specified file is not a link, the path to the - * passed file is returned. - * @author Griefed - */ - fun resolveLink(link: File): String - - /** - * Check the given file or directory for read-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if read-permissions are set. - * @author Griefed - */ - fun isReadPermissionSet(fileOrDirectory: String): Boolean - - /** - * Check the given file or directory for read-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if read-permissions are set. - * @author Griefed - */ - fun isReadPermissionSet(fileOrDirectory: File): Boolean - - /** - * Check the given file or directory for write-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if write-permissions are set. - * @author Griefed - */ - fun isWritePermissionSet(fileOrDirectory: String): Boolean - - /** - * Check the given file or directory for write-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if write-permissions are set. - * @author Griefed - */ - fun isWritePermissionSet(fileOrDirectory: File): Boolean - - /** - * Open the specified folder in the file explorer. - * - * @param folder The folder to open. - * @author Griefed - */ - fun openFolder(folder: String) - - /** - * Open the specified folder in the file explorer. - * - * @param folder The folder to open. - * @author Griefed - */ - fun openFolder(folder: File) - - /** - * Open the specified file in an editor. - * - * @param fileToOpen The file to open. - * @author Griefed - */ - fun openFile(fileToOpen: String) - - /** - * Open the specified file in an editor. - * - * @param fileToOpen The file to open. - * @author Griefed - */ - fun openFile(fileToOpen: File) -} - -/** - * Try and delete this file or directory quietly. Deleting something quietly means that - * * No guarantee is made whether the file or directory is successfully deleted - * * No exceptions are thrown if an error occurs - * * No information is carried outside should an exception occur, meaning you have no information about why the deletion, if it failed - * - * @author Griefed - */ -expect fun File.deleteQuietly(): Boolean - -/** - * Acquire the size of this file or directory in bytes. If this file-object denotes a directory, then the size of all - * files in the directory will be checked and the sum of them returned. - * - * @return The filesize of this file, or sum of sizes of all files in this directory. - * @author Griefed - */ -expect fun File.size(): Double - -/** - * Walk this directory and return all file-objects which match any of the regular expressions in the provided list. - * - * @param filters List of regular expressions to use for filtering. - * @param direction The direction in which to walk the directory. Default is [FileWalkDirection.TOP_DOWN]. - * @return All files inside this directory which matched the given filters. - * @author Griefed - */ -expect fun File.regexWalk( - filters: List<Regex>, - direction: FileWalkDirection = FileWalkDirection.TOP_DOWN -): MutableList<File> - -/** - * Walk this directory and return all file-objects which match the specified filter-type using the passed list of filters. - * - * @param filters List of Strings to use for filtering - * @param filterType Whether to filter by [FilterType.CONTAINS] (default), [FilterType.ENDS_WITH] or [FilterType.STARTS_WITH]. - * @param direction The direction in which to walk the directory. Default is [FileWalkDirection.TOP_DOWN]. - * @return All files inside this directory which matched the given filters. - * @author Griefed - */ -expect fun File.filteredWalk( - filters: List<String>, - filterType: FilterType = FilterType.CONTAINS, - direction: FileWalkDirection = FileWalkDirection.TOP_DOWN, - recursive: Boolean = true -): MutableList<File> - -/** - * All parent directories are created, but not the file itself. - * - * @param create Whether the file or directory should be created. - * @param directory Whether a directory or file should be created - * @author Griefed - */ -expect fun File.createDirectories(create: Boolean = false, directory: Boolean = false) \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilitiesExtensions.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilitiesExtensions.kt deleted file mode 100644 index 8531fc879..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilitiesExtensions.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -@file:Suppress("unused") - -package de.griefed.serverpackcreator.api.utilities.common - -import de.griefed.serverpackcreator.api.utilities.File - -/** - * Check the given file or directory for read- and write-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if both read- and write-permissions are set. - * @author Griefed - */ -fun FileUtilities.isReadWritePermissionSet(fileOrDirectory: String) = - isReadPermissionSet(fileOrDirectory) && isWritePermissionSet(fileOrDirectory) - -/** - * Check the given file or directory for read- and write-permission. - * - * @param fileOrDirectory File or directory. - * @return `true` if both read- and write-permissions are set. - * @author Griefed - */ -fun FileUtilities.isReadWritePermissionSet(fileOrDirectory: File) = - isReadPermissionSet(fileOrDirectory) && isWritePermissionSet(fileOrDirectory) \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt deleted file mode 100644 index e68a04a14..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -/** - * Some utilities used across ServerPackCreator, revolving around interacting with JAR-files. - * - * @author Griefed - */ -expect class JarUtilities \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt deleted file mode 100644 index a7709eeba..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -/** - * JSON-based utility methods for acquiring and working with JSON from files and objects. - * - * @author Griefed - */ -expect class JsonUtilities diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt deleted file mode 100644 index 11f56179f..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -/** - * Utility-class revolving around the system we are running on. - * - * @author Griefed - */ -expect class SystemUtilities { - fun acquireJavaPathFromSystem(): String -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt deleted file mode 100644 index 19303fd59..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -/** - * Access to any and all utility-classes we may have. - * - * @author Griefed - */ -expect class Utilities { - val booleanUtilities: BooleanUtilities - val fileUtilities: FileUtilities - val jarUtilities: JarUtilities - val listUtilities: ListUtilities - val stringUtilities: StringUtilities - val systemUtilities: SystemUtilities - val webUtilities: WebUtilities - val jsonUtilities: JsonUtilities - val xmlUtilities: XmlUtilities -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt deleted file mode 100644 index a0fa41f67..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.URL - -/** - * Utility-class revolving around interactions with web-resources. - * - * @author Griefed - */ -expect class WebUtilities { - /** - * Download the file from the specified URL to the specified destination, replacing the file if it - * already exists. The destination should end in a valid filename. Any directories up to the - * specified file will be created. - * - * @param fileDestination The file to store the web-resource in. Examples: - * * /tmp/some_folder/foo.bar - * * C:/temp/some_folder/bar.foo - * @param downloadURL The URL to the file you want to download. - * @return Boolean. Returns true if the file could be found on the hosts' filesystem. - * @author Griefed - */ - fun downloadAndReplaceFile(fileDestination: File, downloadURL: URL): Boolean - - /** - * Download the file from the specified URL to the specified destination. The destination should - * end in a valid filename. Any directories up to the specified file will be created. - * - * @param file The destination where the file should be stored. Must include the filename as well. Examples: - * * /tmp/some_folder/foo.bar - * * C:/temp/some_folder/bar.foo - * @param downloadURL The URL to the file you want to download. - * @return true if the file was created. - * @author Griefed - */ - fun downloadFile(file: File, downloadURL: URL): Boolean - - /** - * Open the given url in a browser. - * - * @param url The URI to the website you want to open. - * @author Griefed - */ - fun openLinkInBrowser(url: URL) - - /** - * Checks the filesize of the given file whether it is smaller or bigger than 10 MB. - * - * @param fileToCheck The file or directory to check. - * @return Boolean. True if the file is smaller, false if the file is bigger than 10 MB. - * @author Griefed - */ - fun hasteBinPreChecks(fileToCheck: File): Boolean - - /** - * Create a HasteBin post from a given text file. The text file provided is read into a string and - * then passed onto [Haste zneix](https://haste.zneix.eu) which creates a HasteBin post - * out of the passed String and returns the URL to the newly created post. - * - * Created with the help of [kaimu-ken's hastebin.java (MIT License)](https://github.com/kaimu-kun/hastebin.java) - * and edited to use HasteBin fork [zneix/haste-server](https://github.com/zneix/haste-server). My fork of kaimu-kun's - * hastebin.java is available at [Griefed/hastebin.java](https://github.com/Griefed/hastebin.java). - * - * @param textFile The file which will be read into a String of which then to create a HasteBin - * post of. - * @return String. Returns a String containing the URL to the newly created HasteBin post. - * @author [kaimu-kun/hastebin.java](https://github.com/kaimu-kun) - * @author Griefed - */ - fun createHasteBinFromFile(textFile: File): String - - /** - * Get the response of a call to a URL as a string. - * - * @param url The URL you want to get the response from - * @return The response. - */ - fun getResponseAsString(url: URL): String - - /** - * Get the response-code of a call to a URL as an integer. - * - * @param url The URL you want to get the response from - * @return The response. - */ - fun getResponseCode(url: URL): Int - - /** - * Check the availability of the host of the given URL and whether the URL gives a status code of - * 200. Only when both the host is available and the URL returns a status code of 200 does this - * method return `true`. - * - * @param url The URL of which to check for host-availability. - * @return `true` if, and only if, the host is available and the URL returns the status code 200. - */ - fun isReachable(url: URL): Boolean - - /** - * Create a HasteBin post from a given string. The text provided passed onto [Haste zneix](https://haste.zneix.eu) - * which creates a HasteBin post out of the passed String and returns the URL to the newly created post. - * - * Created with the help of [kaimu-ken's hastebin.java (MIT License)](https://github.com/kaimu-kun/hastebin.java) - * and edited to use HasteBin fork [zneix/haste-server](https://github.com/zneix/haste-server). My fork of kaimu-kun's - * hastebin.java is available at [Griefed/hastebin.java](https://github.com/Griefed/hastebin.java). - * - * @param text The file which will be read into a String of which then to create a HasteBin - * post of. - * @return String. Returns a String containing the URL to the newly created HasteBin post. - * @author [kaimu-kun/hastebin.java](https://github.com/kaimu-kun) - * @author Griefed - */ - fun createHasteBinFromString(text: String): String -} diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt deleted file mode 100644 index dd9174144..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities.common - -/** - * Commonly used XML utilities. - * - * @author Griefed - */ -expect class XmlUtilities \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt deleted file mode 100644 index 1609175e5..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta - -import de.griefed.serverpackcreator.api.utilities.URL -import de.griefed.serverpackcreator.api.versionmeta.fabric.FabricMeta -import de.griefed.serverpackcreator.api.versionmeta.forge.ForgeMeta -import de.griefed.serverpackcreator.api.versionmeta.legacyfabric.LegacyFabricMeta -import de.griefed.serverpackcreator.api.versionmeta.minecraft.MinecraftMeta -import de.griefed.serverpackcreator.api.versionmeta.neoforge.NeoForgeMeta -import de.griefed.serverpackcreator.api.versionmeta.quilt.QuiltMeta - -/** - * VersionMeta containing available versions and important details for Minecraft, Fabric and Forge. - * - * @author Griefed - */ -expect class VersionMeta { - @Suppress("MemberVisibilityCanBePrivate") - val legacyFabricUrlGame: URL - - @Suppress("MemberVisibilityCanBePrivate") - val legacyFabricUrlLoader: URL - - @Suppress("MemberVisibilityCanBePrivate") - val legacyfabricUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val minecraftUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val forgeUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val oldNeoForgeUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val newNeoForgeUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val fabricUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val fabricUrlIntermediariesManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val fabricUrlInstallerManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val quiltUrlManifest: URL - - @Suppress("MemberVisibilityCanBePrivate") - val quiltUrlInstallerManifest: URL - - /** - * The MinecraftMeta instance for working with Minecraft versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val minecraft: MinecraftMeta - - /** - * The QuiltMeta-instance for working with Fabric versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val fabric: FabricMeta - - /** - * The ForgeMeta-instance for working with Forge versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val forge: ForgeMeta - - /** - * The NeoForgeMeta-instance for working with NeoForge versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val neoForge: NeoForgeMeta - - /** - * The QuiltMeta-instance for working with Quilt versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val quilt: QuiltMeta - - /** - * The LegacyFabric-instance for working with Legacy Fabric versions and information about them. - */ - @Suppress("MemberVisibilityCanBePrivate") - val legacyFabric: LegacyFabricMeta -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt deleted file mode 100644 index 5d6af4e41..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta.fabric - -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.URL -import de.griefed.serverpackcreator.api.versionmeta.Meta - -/** - * Fabric meta containing information about available Quilt versions and installers. - * - * @author Griefed - */ -@Suppress("unused") -expect class FabricMeta : Meta { - override fun latestLoader(): String - override fun releaseLoader(): String - override fun latestInstaller(): String - override fun releaseInstaller(): String - override fun loaderVersionsListAscending(): MutableList<String> - override fun loaderVersionsListDescending(): List<String> - override fun loaderVersionsArrayAscending(): Array<String> - override fun loaderVersionsArrayDescending(): Array<String> - override fun installerVersionsListAscending(): MutableList<String> - override fun installerVersionsListDescending(): List<String> - override fun installerVersionsArrayAscending(): Array<String> - override fun installerVersionsArrayDescending(): Array<String> - override fun latestInstallerUrl(): URL - override fun releaseInstallerUrl(): URL - override fun installerFor(version: String): Optional<File> - - /** - * Download the improved Fabric launcher and store it in the launcher-cache directory. - * @author Griefed - */ - fun launcherFor(minecraftVersion: String, fabricVersion: String): Optional<File> - override fun isInstallerUrlAvailable(version: String): Boolean - override fun getInstallerUrl(version: String): Optional<URL> - override fun isVersionValid(version: String): Boolean - override fun isMinecraftSupported(minecraftVersion: String): Boolean - - /** - * Get the [URL] to the Fabric launcher for the specified Minecraft and Fabric version. - * - * @param minecraftVersion Minecraft version. - * @param fabricVersion Fabric version. - * @return URL to the Fabric launcher for the specified Minecraft and Fabric version. - * @author Griefed - */ - fun improvedLauncherUrl(minecraftVersion: String, fabricVersion: String): URL - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt deleted file mode 100644 index a9e8c187d..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt +++ /dev/null @@ -1,240 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta.forge - -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.URL -import de.griefed.serverpackcreator.api.utilities.common.Utilities - -/** - * Forge meta containing information about available Forge releases. - * - * @param forgeManifest The manifest from which to acquire version information. - * @param utilities Commonly used utilities across ServerPackCreator. - * - * @author Griefed - */ -@Suppress("unused") -expect class ForgeMeta( - forgeManifest: File, - utilities: Utilities, - installerCacheDirectory: File -) { - /** - * Check whether the given Minecraft and Forge versions are valid/supported/available. - * - * @param minecraftVersion Minecraft version. - * @param forgeVersion Forge version. - * @return `true` if the given Minecraft and Forge versions are valid/supported/available. - * @author Griefed - */ - fun isForgeAndMinecraftCombinationValid( - minecraftVersion: String, - forgeVersion: String - ): Boolean - - /** - * Check whether a given Minecraft version is valid/supported/available. - * - * @param minecraftVersion Minecraft version. - * @return `true` if the given Minecraft version is valid/supported/available. - * @author Griefed - */ - fun isMinecraftVersionSupported(minecraftVersion: String): Boolean - - /** - * Check whether a given Forge version is valid/supported/available. - * - * @param forgeVersion Forge version. - * @return `true` if the given Forge version is valid/supported/available. - * @author Griefed - */ - fun isForgeVersionValid(forgeVersion: String): Boolean - - /** - * Check whether Forge is available for a given Forge- and Minecraft version. - * - * @param minecraftVersion Minecraft version. - * @param forgeVersion Forge version. - * @return `true` if Forge is available for the given Forge- and Minecraft version. - * @author Griefed - */ - fun isForgeInstanceAvailable(minecraftVersion: String, forgeVersion: String): Boolean - - /** - * Check whether Forge is available for a given Forge version - * - * @param forgeVersion Forge version. - * @return `true` if Forge is available for the given Forge version. - * @author Griefed - */ - fun isForgeInstanceAvailable(forgeVersion: String): Boolean - - /** - * Latest Forge version for a given Minecraft version, wrapped in [Optional] - * - * @param minecraftVersion Minecraft version. - * @return Latest Forge version for the given Minecraft version, wrapped in an [Optional] - * @author Griefed - */ - fun newestForgeVersion(minecraftVersion: String): Optional<String> - - /** - * Oldest Forge version for a given Minecraft version, wrapped in [Optional] - * - * @param minecraftVersion Minecraft version. - * @return Oldest Forge version for the given Minecraft version, wrapped in [Optional] - * @author Griefed - */ - fun oldestForgeVersion(minecraftVersion: String): Optional<String> - - /** - * Get the list of available Forge versions, in ascending order. - * - * @return List of available Forge versions. - * @author Griefed - */ - fun forgeVersionsAscending(): MutableList<String> - - /** - * Get the list of available Forge versions, in descending order. - * - * @return List of available Forge versions. - * @author Griefed - */ - fun forgeVersionsDescending(): List<String> - - /** - * Get the array of available Forge versions, in ascending order. - * - * @return Array of available Forge versions. - * @author Griefed - */ - fun forgeVersionsAscendingArray(): Array<String> - - /** - * Get the array of available Forge versions, in descending order. - * - * @return Array of available Forge versions. - * @author Griefed - */ - fun forgeVersionsDescendingArray(): Array<String> - - /** - * Get a list of available Forge version for a given Minecraft version in ascending order. - * - * @param minecraftVersion Minecraft version. - * @return List of available Forge versions for the given Minecraft version in ascending order. - * @author Griefed - */ - fun supportedForgeVersionsAscending(minecraftVersion: String): Optional<List<String>> - - /** - * Get a list of available Forge version for a given Minecraft version in descending order. - * - * @param minecraftVersion Minecraft version. - * @return List of available Forge versions for the given Minecraft version in descending order. - * @author Griefed - */ - fun supportedForgeVersionsDescending(minecraftVersion: String): Optional<List<String>> - - /** - * Get an array of available Forge version for a given Minecraft version, in ascending order, - * wrapped in an [Optional]. - * - * @param minecraftVersion Minecraft version. - * @return Array of available Forge versions for the given Minecraft version, in ascending order, - * wrapped in an [Optional] - * @author Griefed - */ - fun supportedForgeVersionsAscendingArray(minecraftVersion: String): Optional<Array<String>> - - /** - * Get an array of available Forge version for a given Minecraft version, in descending order, - * wrapped in an [Optional]. - * - * @param minecraftVersion Minecraft version. - * @return Array of available Forge versions for the given Minecraft version, in descending order, - * wrapped in an [Optional] - * @author Griefed - */ - fun supportedForgeVersionsDescendingArray(minecraftVersion: String): Optional<Array<String>> - - /** - * Get the Minecraft version for a given Forge version, wrapped in an [Optional]. - * - * @param forgeVersion Forge version. - * @return Minecraft version for the given Forge version, wrapped in an [Optional]. - * @author Griefed - */ - fun minecraftVersion(forgeVersion: String): Optional<String> - - /** - * Get the list of Forge supported Minecraft versions, in ascending order. - * - * @return List of Forge supported Minecraft versions, in ascending order. - * @author Griefed - */ - fun supportedMinecraftVersionsAscending(): MutableList<String> - - /** - * Get the list of Forge supported Minecraft versions, in descending order. - * - * @return List of Forge supported Minecraft versions, in descending order. - * @author Griefed - */ - fun supportedMinecraftVersionsDescending(): List<String> - - /** - * Get the array of Forge supported Minecraft versions, in ascending order. - * - * @return Array of Forge supported Minecraft versions, in ascending order. - * @author Griefed - */ - fun supportedMinecraftVersionsAscendingArray(): Array<String> - - /** - * Get the array of Forge supported Minecraft versions, in descending order. - * - * @return Array of Forge supported Minecraft versions, in descending order. - * @author Griefed - */ - fun supportedMinecraftVersionsDescendingArray(): Array<String> - - /** - * Get the Forge server installer URL for a given Forge version, wrapped in an [Optional]. - * - * @param forgeVersion Forge version. - * @return Forge server installer URL for the given Forge version, wrapped in an [Optional]. - * @author Griefed - */ - fun installerUrl(forgeVersion: String): Optional<URL> - - /** - * Installer file for the specified [forgeVersion] and [minecraftVersion] version, wrapped in an [Optional], so you - * can check whether it is available first. - * @author Griefed - */ - fun installerFor(forgeVersion: String, minecraftVersion: String): Optional<File> - - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt deleted file mode 100644 index f6e2b0863..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta.legacyfabric - -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.versionmeta.Meta - -/** - * LegacyFabric meta providing game, loader and installer version information. - * - * @param gameVersionsManifest Game version manifest. - * @param loaderVersionsManifest Loader version manifest. - * @param installerVersionsManifest Installer version manifest. - * @param utilities Commonly used utilities across ServerPackCreator. - * @param installerCacheDirectory The cache-directory for all installers. - * - * @author Griefed - */ -@Suppress("unused") -expect class LegacyFabricMeta( - gameVersionsManifest: File, - loaderVersionsManifest: File, - installerVersionsManifest: File, - utilities: Utilities, - installerCacheDirectory: File -) : Meta { - override fun latestLoader(): String - override fun releaseLoader(): String - override fun latestInstaller(): String - override fun releaseInstaller(): String - override fun loaderVersionsListAscending(): MutableList<String> - override fun loaderVersionsListDescending(): MutableList<String> - override fun loaderVersionsArrayAscending(): Array<String> - override fun loaderVersionsArrayDescending(): Array<String> - override fun installerVersionsListAscending(): MutableList<String> - override fun installerVersionsListDescending(): MutableList<String> - override fun installerVersionsArrayAscending(): Array<String> - override fun installerVersionsArrayDescending(): Array<String> - override fun installerFor(version: String): Optional<File> - override fun isInstallerUrlAvailable(version: String): Boolean - override fun isVersionValid(version: String): Boolean - override fun isMinecraftSupported(minecraftVersion: String): Boolean - - /** - * All Legacy Fabric supported Minecraft versions. - * - * @return All Legacy Fabric supported Minecraft versions. - * @author Griefed - */ - fun supportedMinecraftVersions(): MutableList<String> - - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt deleted file mode 100644 index b4c054b6c..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta.minecraft - -/** - * Minecraft meta containing information about available client- and server releases. - * - * @author Griefed - */ -expect class MinecraftMeta { - /** - * Check whether a client is available for the specified Minecraft-version. - * - * @param minecraftVersion The Minecraft-version. - * @return `true` if a client is available. - * @author Griefed - */ - fun isMinecraftVersionAvailable(minecraftVersion: String): Boolean - - /** - * Get the array of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] in - * descending order. - * - * @return Array of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] versions in - * descending order. - * @author Griefed - */ - fun releaseVersionsArrayDescending(): Array<String> - - /** - * Get the list of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] in - * descending order. - * - * @return List of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] versions in - * descending order. - * @author Griefed - */ - fun releaseVersionsDescending(): List<String> - - /** - * Get the array of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] in - * ascending order. - * - * @return Array of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] versions in - * ascending order. - * @author Griefed - */ - fun releaseVersionsArrayAscending(): Array<String> - - /** - * Get the list of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] in - * ascending order. - * - * @return List of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] versions in ascending - * order. - * @author Griefed - */ - fun releaseVersionsAscending(): List<String> - - /** - * Get the array of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in - * descending order. - * - * @return Array of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] versions in - * descending order. - * @author Griefed - */ - fun snapshotVersionsArrayDescending(): Array<String> - - /** - * Get the list of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in - * descending order. - * - * @return List of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] versions in - * descending order. - * @author Griefed - */ - fun snapshotVersionsDescending(): List<String> - - /** - * Get the array of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in - * ascending order. - * - * @return Array of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] versions in - * ascending order. - * @author Griefed - */ - fun snapshotVersionsArrayAscending(): Array<String> - - /** - * Get the list of available Minecraft version of the [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in - * ascending order. - * - * @return List of all available Minecraft [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] versions in - * ascending order. - * @author Griefed - */ - fun snapshotVersionsAscending(): List<String> - - /** - * Get an array of all available Minecraft versions of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] and - * [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in descending order. - * - * @return All available Minecraft versions in descending order. - * @author Griefed - */ - fun allVersionsArrayDescending(): Array<String> - - /** - * Get a list of all available Minecraft versions of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] and - * [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in descending order. - * - * @return All available Minecraft versions in descending order. - * @author Griefed - */ - @Suppress("MemberVisibilityCanBePrivate") - fun allVersionsDescending(): List<String> - - /** - * Get an array of all available Minecraft versions of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] and - * [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in ascending order. - * - * @return All available Minecraft versions in ascending order. - * @author Griefed - */ - @Suppress("unused") - fun allVersionsArrayAscending(): Array<String> - - /** - * Get a list of all available Minecraft versions of the [de.griefed.serverpackcreator.api.versionmeta.Type.RELEASE] and - * [de.griefed.serverpackcreator.api.versionmeta.Type.SNAPSHOT] in ascending order. - * - * @return All available Minecraft versions in ascending order. - * @author Griefed - */ - @Suppress("MemberVisibilityCanBePrivate") - fun allVersionsAscending(): List<String> - - /** - * Check whether a server is available for the specified Minecraft-version. - * - * @param minecraftVersion The Minecraft-version. - * @return `true` if a server is available. - * @author Griefed - */ - fun isServerAvailable(minecraftVersion: String): Boolean - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt deleted file mode 100644 index c02407c65..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt +++ /dev/null @@ -1,221 +0,0 @@ -package de.griefed.serverpackcreator.api.versionmeta.neoforge - -import de.griefed.serverpackcreator.api.utilities.common.Utilities -import java.io.File -import java.net.URL -import java.util.* - -/** - * Forge meta containing information about available Forge releases. - * - * @param neoForgeManifest The manifest from which to acquire version information. - * @param utilities Commonly used utilities across ServerPackCreator. - * - * @author Griefed - */ -@Suppress("unused") -expect class NeoForgeMeta( - oldNeoForgeManifest: File, - newNeoForgeManifest: File, - utilities: Utilities, - installerCacheDirectory: File -) { - /** - * Check whether the given Minecraft and Forge versions are valid/supported/available. - * - * @param minecraftVersion Minecraft version. - * @param neoForgeVersion Forge version. - * @return `true` if the given Minecraft and Forge versions are valid/supported/available. - * @author Griefed - */ - fun isNeoForgeAndMinecraftCombinationValid( - minecraftVersion: String, - neoForgeVersion: String - ): Boolean - - /** - * Check whether a given Minecraft version is valid/supported/available. - * - * @param minecraftVersion Minecraft version. - * @return `true` if the given Minecraft version is valid/supported/available. - * @author Griefed - */ - fun isMinecraftVersionSupported(minecraftVersion: String): Boolean - - /** - * Check whether a given Forge version is valid/supported/available. - * - * @param neoForgeVersion Forge version. - * @return `true` if the given Forge version is valid/supported/available. - * @author Griefed - */ - fun isNeoForgeVersionValid(neoForgeVersion: String): Boolean - - /** - * Check whether Forge is available for a given Forge- and Minecraft version. - * - * @param minecraftVersion Minecraft version. - * @param neoForgeVersion Forge version. - * @return `true` if Forge is available for the given Forge- and Minecraft version. - * @author Griefed - */ - fun isNeoForgeInstanceAvailable(minecraftVersion: String, neoForgeVersion: String): Boolean - - /** - * Check whether Forge is available for a given Forge version - * - * @param neoForgeVersion Forge version. - * @return `true` if Forge is available for the given Forge version. - * @author Griefed - */ - fun isNeoForgeInstanceAvailable(neoForgeVersion: String): Boolean - - /** - * Latest Forge version for a given Minecraft version, wrapped in [Optional] - * - * @param minecraftVersion Minecraft version. - * @return Latest Forge version for the given Minecraft version, wrapped in an [Optional] - * @author Griefed - */ - fun newestNeoForgeVersion(minecraftVersion: String): Optional<String> - - /** - * Oldest Forge version for a given Minecraft version, wrapped in [Optional] - * - * @param minecraftVersion Minecraft version. - * @return Oldest Forge version for the given Minecraft version, wrapped in [Optional] - * @author Griefed - */ - fun oldestNeoForgeVersion(minecraftVersion: String): Optional<String> - - /** - * Get the list of available Forge versions, in ascending order. - * - * @return List of available Forge versions. - * @author Griefed - */ - fun neoForgeVersionsAscending(): MutableList<String> - - /** - * Get the list of available Forge versions, in descending order. - * - * @return List of available Forge versions. - * @author Griefed - */ - fun neoForgeVersionsDescending(): List<String> - - /** - * Get the array of available Forge versions, in ascending order. - * - * @return Array of available Forge versions. - * @author Griefed - */ - fun neoForgeVersionsAscendingArray(): Array<String> - - /** - * Get the array of available Forge versions, in descending order. - * - * @return Array of available Forge versions. - * @author Griefed - */ - fun neoForgeVersionsDescendingArray(): Array<String> - - /** - * Get a list of available Forge version for a given Minecraft version in ascending order. - * - * @param minecraftVersion Minecraft version. - * @return List of available Forge versions for the given Minecraft version in ascending order. - * @author Griefed - */ - fun supportedNeoForgeVersionsAscending(minecraftVersion: String): Optional<List<String>> - - /** - * Get a list of available Forge version for a given Minecraft version in descending order. - * - * @param minecraftVersion Minecraft version. - * @return List of available Forge versions for the given Minecraft version in descending order. - * @author Griefed - */ - fun supportedNeoForgeVersionsDescending(minecraftVersion: String): Optional<List<String>> - - /** - * Get an array of available Forge version for a given Minecraft version, in ascending order, - * wrapped in an [Optional]. - * - * @param minecraftVersion Minecraft version. - * @return Array of available Forge versions for the given Minecraft version, in ascending order, - * wrapped in an [Optional] - * @author Griefed - */ - fun supportedNeoForgeVersionsAscendingArray(minecraftVersion: String): Optional<Array<String>> - - /** - * Get an array of available Forge version for a given Minecraft version, in descending order, - * wrapped in an [Optional]. - * - * @param minecraftVersion Minecraft version. - * @return Array of available Forge versions for the given Minecraft version, in descending order, - * wrapped in an [Optional] - * @author Griefed - */ - fun supportedNeoForgeVersionsDescendingArray(minecraftVersion: String): Optional<Array<String>> - - /** - * Get the Minecraft version for a given Forge version, wrapped in an [Optional]. - * - * @param neoForgeVersion Forge version. - * @return Minecraft version for the given Forge version, wrapped in an [Optional]. - * @author Griefed - */ - fun minecraftVersion(neoForgeVersion: String): Optional<String> - - /** - * Get the list of Forge supported Minecraft versions, in ascending order. - * - * @return List of Forge supported Minecraft versions, in ascending order. - * @author Griefed - */ - fun supportedMinecraftVersionsAscending(): MutableList<String> - - /** - * Get the list of Forge supported Minecraft versions, in descending order. - * - * @return List of Forge supported Minecraft versions, in descending order. - * @author Griefed - */ - fun supportedMinecraftVersionsDescending(): List<String> - - /** - * Get the array of Forge supported Minecraft versions, in ascending order. - * - * @return Array of Forge supported Minecraft versions, in ascending order. - * @author Griefed - */ - fun supportedMinecraftVersionsAscendingArray(): Array<String> - - /** - * Get the array of Forge supported Minecraft versions, in descending order. - * - * @return Array of Forge supported Minecraft versions, in descending order. - * @author Griefed - */ - fun supportedMinecraftVersionsDescendingArray(): Array<String> - - /** - * Get the Forge server installer URL for a given Forge version, wrapped in an [Optional]. - * - * @param neoForgeVersion Forge version. - * @return Forge server installer URL for the given Forge version, wrapped in an [Optional]. - * @author Griefed - */ - fun installerUrl(neoForgeVersion: String): Optional<URL> - - /** - * Installer file for the specified [neoForgeVersion] and [minecraftVersion] version, wrapped in an [Optional], so you - * can check whether it is available first. - * @author Griefed - */ - fun installerFor(neoForgeVersion: String, minecraftVersion: String): Optional<File> - - -} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt b/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt deleted file mode 100644 index 5e63384d3..000000000 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.versionmeta.quilt - -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Optional -import de.griefed.serverpackcreator.api.utilities.URL -import de.griefed.serverpackcreator.api.versionmeta.Meta - -/** - * Quilt meta containing information about available Quilt versions and installers. - * - * @author Griefed - */ -expect class QuiltMeta : Meta { - override fun latestLoader(): String - override fun releaseLoader(): String - override fun latestInstaller(): String - override fun releaseInstaller(): String - override fun loaderVersionsListAscending(): MutableList<String> - override fun loaderVersionsListDescending(): List<String> - override fun loaderVersionsArrayAscending(): Array<String> - override fun loaderVersionsArrayDescending(): Array<String> - override fun installerVersionsListAscending(): MutableList<String> - override fun installerVersionsListDescending(): List<String> - override fun installerVersionsArrayAscending(): Array<String> - override fun installerVersionsArrayDescending(): Array<String> - override fun latestInstallerUrl(): URL - override fun releaseInstallerUrl(): URL - override fun installerFor(version: String): Optional<File> - override fun isInstallerUrlAvailable(version: String): Boolean - override fun getInstallerUrl(version: String): Optional<URL> - override fun isVersionValid(version: String): Boolean - override fun isMinecraftSupported(minecraftVersion: String): Boolean -} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/LoggingConfig.kt b/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/LoggingConfig.kt deleted file mode 100644 index 854e6239b..000000000 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/LoggingConfig.kt +++ /dev/null @@ -1,237 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api - -import de.griefed.serverpackcreator.api.utilities.common.JarInformation -import de.griefed.serverpackcreator.api.utilities.common.JarUtilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories -import de.griefed.serverpackcreator.api.utilities.common.readText -import org.apache.logging.log4j.core.LoggerContext -import org.apache.logging.log4j.core.config.Configuration -import org.apache.logging.log4j.core.config.ConfigurationFactory -import org.apache.logging.log4j.core.config.ConfigurationSource -import org.apache.logging.log4j.core.config.Order -import org.apache.logging.log4j.core.config.plugins.Plugin -import org.apache.logging.log4j.core.config.xml.XmlConfiguration -import java.io.File -import java.io.IOException -import java.util.* - -/** - * Custom logging configuration setup to prevent incorrect log-directories when executing - * ServerPackCreator from CLI from a completely other directory. Or possibly when using symlinks, - * too. This class prevents the logs being written to the `logs`-directory inside the - * directory from which SPC is being run from. - * - * @author Griefed - */ -@Suppress("unused") -@Plugin(name = "ServerPackCreatorConfigFactory", category = "ConfigurationFactory") -@Order(50) -class LoggingConfig : ConfigurationFactory() { - private val suffixes = arrayOf(".xml") - private val log4jXml: File - - /** - * Check possible home-directories for a viable `serverpackcreator.properties` and check - * whether the `de.griefed.serverpackcreator.home`-property is available. If it is, then use - * said directory to create the log4j config if it does not already exist, with the path to the - * logs-directory being set within the aforementioned home-directory. - * - * @author Griefed - */ - init { - System.setProperty("log4j2.formatMsgNoLookups", "true") - val serverPackCreatorProperties = "serverpackcreator.properties" - val jarInformation = JarInformation(this.javaClass, JarUtilities()) - var isDevVersion = false - val logDirPath: String - val props = Properties() - val userHome = System.getProperty("user.home") - var log4j: String - - val jarFolderFile = File(jarInformation.jarFolder.absoluteFile, serverPackCreatorProperties).absoluteFile - val serverPackCreatorHomeDir = File(userHome, "ServerPackCreator").absoluteFile - val homeDirFile = File(serverPackCreatorHomeDir,serverPackCreatorProperties).absoluteFile - val relativeDirFile = File(serverPackCreatorProperties).absoluteFile - val overrideProperties = File(jarInformation.jarFolder.absoluteFile, "overrides.properties") - - // Load the properties file from the classpath, providing default values. - try { - this.javaClass.getResourceAsStream("/$serverPackCreatorProperties").use { - props.load(it) - } - println("Loaded properties from classpath.") - } catch (ex: Exception) { - println("Couldn't read properties from classpath.") - ex.printStackTrace() - } - - // If our properties-file exists in SPCs home directory, load it. - loadFile(jarFolderFile, props) - // If our properties-file exists in the users home dir ServerPackCreator-dir, load it. - loadFile(homeDirFile, props) - // If our properties-file in the directory from which the user is executing SPC exists, load it. - loadFile(relativeDirFile, props) - // If an overrides-file exists, load it - loadFile(overrideProperties,props) - - val home = if (props.containsKey("de.griefed.serverpackcreator.home")) { - File(props.getProperty("de.griefed.serverpackcreator.home")) - } else { - if (jarInformation.jarPath.toFile().isDirectory) { - // Dev environment - isDevVersion = true - File("").absoluteFile - } else { - File(userHome, "ServerPackCreator") - } - } - home.createDirectories(create = true, directory = true) - - logDirPath = File(home, "logs").absolutePath - log4jXml = File(home, "log4j2.xml") - - val oldLogs = "<Property name=\"log-path\">logs</Property>" - val newLogs = "<Property name=\"log-path\">$logDirPath</Property>" - if (!log4jXml.isFile) { - try { - this.javaClass.getResourceAsStream("/log4j2.xml").use { - log4j = it?.readText().toString() - log4j = log4j.replace(oldLogs, newLogs) - if (isDevVersion) { - log4j = log4j.replace( - "<Property name=\"log-level-spc\">INFO</Property>", - "<Property name=\"log-level-spc\">DEBUG</Property>" - ) - } - log4jXml.writeText(log4j) - } - } catch (ex: IOException) { - println("Error reading/writing log4j2.xml.") - ex.printStackTrace() - } - } - } - - override fun getSupportedTypes() = suffixes - - /** - * Load the [propertiesFile] into the provided [props] - * - * @author Griefed - */ - private fun loadFile(propertiesFile: File, props: Properties) { - if (!propertiesFile.isFile) { - println("Properties-file does not exist: ${propertiesFile.absolutePath}.") - return - } - try { - propertiesFile.inputStream().use { - props.load(it) - } - println("Loaded properties from $propertiesFile.") - } catch (ex: Exception) { - println("Couldn't read properties from ${propertiesFile.absolutePath}.") - ex.printStackTrace() - } - } - - - /** - * Depending on whether this is the first run of ServerPackCreator on a users machine, the default - * log4j2 configuration may be present at different locations. The default one is the config - * inside the home-directory of SPC, of which we will try to set up our logging with. If said file - * fails for whatever reason, we will try to use a config inside the directory from which SPC was - * executed. Should that fail, too, the config from the classpath is used, to ensure we always - * have default configs available. Should that fail, too, though, log4j is set up with its own - * default settings. - * - * @param loggerContext logger context passed from log4j itself - * @param source configuration source passed from log4j itself. Attempts to overwrite it - * are made, but if all else fails it is used to set up logging with log4j's - * default config. - * @return Custom configuration with proper logs-directory set. - * @author Griefed - */ - override fun getConfiguration(loggerContext: LoggerContext, source: ConfigurationSource): Configuration { - val config = File(File("").absolutePath, "log4j2.xml") - val configSource: ConfigurationSource - if (log4jXml.isFile) { - try { - return getXmlConfig(log4jXml, loggerContext) - } catch (ex: IOException) { - println("Couldn't parse $log4jXml.") - ex.printStackTrace() - } - } else if (config.isFile) { - try { - return getXmlConfig(config, loggerContext) - } catch (ex: IOException) { - println("Couldn't parse $config.") - ex.printStackTrace() - } - } - try { - configSource = ConfigurationSource(this.javaClass.getResourceAsStream("/log4j2.xml")!!) - return CustomXmlConfiguration(loggerContext, configSource) - } catch (ex: IOException) { - println("Couldn't parse resource log4j2.xml.") - ex.printStackTrace() - } - return CustomXmlConfiguration(loggerContext, source) - } - - private fun getXmlConfig(sourceFile: File, loggerContext: LoggerContext): CustomXmlConfiguration { - val configSource: ConfigurationSource - val stream = sourceFile.inputStream() - configSource = ConfigurationSource(stream, sourceFile) - val custom = CustomXmlConfiguration(loggerContext, configSource) - stream.close() - return custom - } - - /** - * Custom XmlConfiguration to pass our custom log4j2.xml config to log4j. - * - * Set up the XML configuration with the passed context and config source. For the config source - * being used, [LoggingConfig.getConfiguration] where - * multiple attempts at creating a new CustomXmlConfiguration using our own log4j2.xml are made - * before the default log4j setup is used. - * - * @param loggerContext logger context passed from log4j itself - * @param configSource configuration source passed from - * [LoggingConfig.getConfiguration]. - * @author Griefed - */ - @Suppress("RedundantOverride") - inner class CustomXmlConfiguration(loggerContext: LoggerContext?, configSource: ConfigurationSource?) : - XmlConfiguration(loggerContext, configSource) { - - /** - * For now, all this does is call the [XmlConfiguration.doConfigure]-method to set up the - * configuration with the passed source from the constructor. Custom values and settings can be - * set here in the future, should a need arise to do so. - * - * @author Griefed - */ - override fun doConfigure() = super.doConfigure() - } -} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt b/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt deleted file mode 100644 index 504f05395..000000000 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt +++ /dev/null @@ -1,8 +0,0 @@ -package de.griefed.serverpackcreator.api.modscanning - -import de.griefed.serverpackcreator.api.utilities.TomlParser - -actual class NeoForgeTomlScanner actual constructor(private val tomlParser: TomlParser): ForgeTomlScanner(tomlParser) { - actual override val modsToml: String - get() = "META-INF/neoforge.mods.toml" -} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/TypeAliases.kt b/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/TypeAliases.kt deleted file mode 100644 index 8e5d02db2..000000000 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/TypeAliases.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.plugins - -/** - * Type alias to link the [ExtensionPoint] to [org.pf4j.ExtensionPoint] - */ -actual typealias ExtensionPoint = org.pf4j.ExtensionPoint \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/TypeAliases.kt b/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/TypeAliases.kt deleted file mode 100644 index 2e7e1af6c..000000000 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/TypeAliases.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2024 Griefed. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.api.utilities - -/** - * Type alias to link [Optional] to [java.util.Optional] - */ -actual typealias Optional<T> = java.util.Optional<T> - -/** - * Type alias to link [CommentedConfig] to [com.electronwill.nightconfig.core.CommentedConfig] - */ -actual typealias CommentedConfig = com.electronwill.nightconfig.core.CommentedConfig - -/** - * Type alias to link [TomlParser] to [com.electronwill.nightconfig.toml.TomlParser] - */ -actual typealias TomlParser = com.electronwill.nightconfig.toml.TomlParser - -/** - * Type alias to link [File] to [java.io.File] - */ -actual typealias File = java.io.File - -/** - * Type alias to link [URL] to [java.net.URL] - */ -actual typealias URL = java.net.URL - -/** - * Type alias to link [Icon] to [javax.swing.Icon] - */ -actual typealias Icon = javax.swing.Icon - diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/minecraft-manifest.json b/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/minecraft-manifest.json deleted file mode 100644 index 70abe2191..000000000 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/minecraft-manifest.json +++ /dev/null @@ -1 +0,0 @@ -{"latest": {"release": "1.20.4", "snapshot": "24w07a"}, "versions": [{"id": "24w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/60823331a5b8805ac1fcca472f8069aa7bbddd1c/24w07a.json", "time": "2024-02-14T12:59:20+00:00", "releaseTime": "2024-02-14T12:51:01+00:00"}, {"id": "24w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b8c3bb16137c554bb111d45380ee91605a2f0ac5/24w06a.json", "time": "2024-02-14T10:23:40+00:00", "releaseTime": "2024-02-07T14:47:18+00:00"}, {"id": "24w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/24d017bb669cb0d6369d6098276fa9f426f684c5/24w05b.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2024-02-01T12:55:14+00:00"}, {"id": "24w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5478297366d5746bb57a2b0776bac4caea39867e/24w05a.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2024-01-31T13:05:26+00:00"}, {"id": "24w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b0efc87eb2583d5cf5148caec5e6c9340030c84d/24w04a.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2024-01-24T13:42:45+00:00"}, {"id": "24w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/be9a1e98195b0ebf5b9fec52955753a89b701c4c/24w03b.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2024-01-18T12:42:37+00:00"}, {"id": "24w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/812c3cba4eb343e16512a8cd4b79bcd1eea750a6/24w03a.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2024-01-17T13:19:20+00:00"}, {"id": "23w51b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6b9c7f971601b13ca667631501ffff7020a08442/23w51b.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-12-18T15:39:14+00:00"}, {"id": "23w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4cb476a0df1607790df423895abd200d89472eaa/23w51a.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-12-18T13:36:46+00:00"}, {"id": "1.20.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/487afa9d48c57e0b2137367c6596e0cf4f9fc64e/1.20.4.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-12-07T12:56:20+00:00"}, {"id": "1.20.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e4beca2b0898b0e9b2b86923a08d502767cf2490/1.20.4-rc1.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-12-06T14:38:01+00:00"}, {"id": "1.20.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/6562181dd0ea1933ed682b2abf72dbd85a89529f/1.20.3.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-12-04T12:10:32+00:00"}, {"id": "1.20.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d67d84cb1bb95d9f8ec8f912dcbc58388891831d/1.20.3-rc1.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-11-30T13:41:45+00:00"}, {"id": "1.20.3-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bd3027bb1888bc2cdf2a2d255b028fb97de58754/1.20.3-pre4.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-11-28T13:47:32+00:00"}, {"id": "1.20.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a2bee72f1bece23638c48d99f0c6fdffa3e6284f/1.20.3-pre3.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-11-27T14:24:36+00:00"}, {"id": "1.20.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/776abfcc0e9a3773f2fcd222ef7eccc76a83c1bd/1.20.3-pre2.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-11-22T12:21:26+00:00"}, {"id": "1.20.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ef23636271b496c488b55eadea6e0dde54d9080e/1.20.3-pre1.json", "time": "2024-02-14T12:27:44+00:00", "releaseTime": "2023-11-20T15:40:14+00:00"}, {"id": "23w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c922efe1be32467ff57cabdca5cdccbf01435222/23w46a.json", "time": "2024-02-14T06:27:29+00:00", "releaseTime": "2023-11-16T14:11:33+00:00"}, {"id": "23w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/257bbc3202cb5154eebffe00a18587307346348b/23w45a.json", "time": "2024-02-14T06:27:29+00:00", "releaseTime": "2023-11-08T13:59:58+00:00"}, {"id": "23w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/954d2a95402aa9510de5c5f3c56a83ce02b39252/23w44a.json", "time": "2024-02-14T06:26:59+00:00", "releaseTime": "2023-11-01T12:30:52+00:00"}, {"id": "23w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/add25040c55bf8b1a3065b95aec30005b765bfbc/23w43b.json", "time": "2024-02-14T06:26:59+00:00", "releaseTime": "2023-10-26T13:46:16+00:00"}, {"id": "23w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bc758929df7bca5d86a3e9b8439a4052f1a43938/23w43a.json", "time": "2024-02-14T06:26:59+00:00", "releaseTime": "2023-10-25T13:34:37+00:00"}, {"id": "23w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a06e6d7e64d62dafb93f808f3d21f0ecc076643b/23w42a.json", "time": "2024-02-14T06:31:22+00:00", "releaseTime": "2023-10-18T11:37:28+00:00"}, {"id": "23w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7c645769579a5d0d9d1c987452e1a2f98c576a29/23w41a.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-10-11T12:32:46+00:00"}, {"id": "23w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/156bb700ce83ef46d2d33c45dc3028e1bc192556/23w40a.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-10-04T12:48:53+00:00"}, {"id": "1.20.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/ec0f1b6571c89eb5c924d680a6ccc58af4e567f1/1.20.2.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-20T09:02:57+00:00"}, {"id": "1.20.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/39dbfc7a415d20dd91bc9b464c8fd6c170d9b5d9/1.20.2-rc2.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-18T12:34:57+00:00"}, {"id": "1.20.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/62a2827bc2466c974378a8e428c55c724c16a501/1.20.2-rc1.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-15T13:10:30+00:00"}, {"id": "1.20.2-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d29b574032d79d416a1e1e39ad88431896ae3d8c/1.20.2-pre4.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-13T15:06:51+00:00"}, {"id": "1.20.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c3fa259f4d7b177701407c9e3370c14bec28a8e2/1.20.2-pre3.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-12T12:15:08+00:00"}, {"id": "1.20.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/51ed27dbc56aaeff0bf826e35a8485cd9d4c1fb8/1.20.2-pre2.json", "time": "2024-02-14T06:30:52+00:00", "releaseTime": "2023-09-07T12:42:32+00:00"}, {"id": "1.20.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5d0c5c636147fef96c08d2ced4c6c232b4303421/1.20.2-pre1.json", "time": "2024-02-14T06:30:23+00:00", "releaseTime": "2023-09-05T12:06:20+00:00"}, {"id": "23w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4423cde4f0b4ad71673c9041a44ec3ca305e83d8/23w35a.json", "time": "2024-02-14T06:30:23+00:00", "releaseTime": "2023-08-30T11:24:35+00:00"}, {"id": "23w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/048a2878f7c48bcb7cc922fa4c065b3a7196cb71/23w33a.json", "time": "2024-02-14T06:30:23+00:00", "releaseTime": "2023-08-17T11:39:08+00:00"}, {"id": "23w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/55a07fee161227d0c36b7afa4a84b0addbc3b835/23w32a.json", "time": "2024-02-14T06:30:23+00:00", "releaseTime": "2023-08-09T12:14:25+00:00"}, {"id": "23w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fc3f2995e46d99c842a8ce15cddc458043dc7c8a/23w31a.json", "time": "2024-02-14T06:29:53+00:00", "releaseTime": "2023-08-01T10:03:13+00:00"}, {"id": "1.20.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4fdbfecb16fd5ed3952919eeb6ff4883d9ad77cd/1.20.1.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-06-12T13:25:51+00:00"}, {"id": "1.20.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/88af588cae7dbbf63d01d817cf88308e93f3281b/1.20.1-rc1.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-06-09T14:15:49+00:00"}, {"id": "1.20", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/900d9aeaac64088cb6e65713bda7570d8e3e5a41/1.20.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-06-02T08:36:17+00:00"}, {"id": "1.20-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/147b63e6058bfac2e1e7c56fc1c6bfa9c887a1e5/1.20-rc1.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-31T12:33:33+00:00"}, {"id": "1.20-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d5bea37318677a7f57c3689c1a829726e6cd94ee/1.20-pre7.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-29T13:44:34+00:00"}, {"id": "1.20-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/afbe83d99c4b46f71a3b55eadd13ee819ca27007/1.20-pre6.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-25T12:22:00+00:00"}, {"id": "1.20-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/423dbeecb640a6699e835c460b9f2738324f4a94/1.20-pre5.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-23T12:22:52+00:00"}, {"id": "1.20-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bb869ba0d4435a26a469631b3d45954c5236780b/1.20-pre4.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-19T13:13:45+00:00"}, {"id": "1.20-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f7ae5f3347e24c170359a53a84ddaa19d4edcbfd/1.20-pre3.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-19T11:39:46+00:00"}, {"id": "1.20-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b3636cdb4e02060d2fdfb69ffff06f81f439083/1.20-pre2.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-16T11:34:54+00:00"}, {"id": "1.20-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1080aa81195afc2e81ac84f737d1cdb2eadd120f/1.20-pre1.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-10T12:19:34+00:00"}, {"id": "23w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bb96df333a46cb541a1224592e4fe5b20a4afed6/23w18a.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-05-03T11:29:26+00:00"}, {"id": "23w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5c8dc28a77a3895fa810e564f9d06122e774f84b/23w17a.json", "time": "2024-02-14T06:29:24+00:00", "releaseTime": "2023-04-26T12:09:48+00:00"}, {"id": "23w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/43cc67a4968b49fe6b58f18521ad08fdc412b832/23w16a.json", "time": "2024-02-14T06:28:55+00:00", "releaseTime": "2023-04-20T11:55:19+00:00"}, {"id": "23w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a9a53e5abfec16b42f40a9940782ea344ea8c2a6/23w14a.json", "time": "2024-02-14T06:28:55+00:00", "releaseTime": "2023-04-05T12:05:17+00:00"}, {"id": "23w13a_or_b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8dda30a6a7b40d8c23eeea936cf9f4397d6754e2/23w13a_or_b.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-04-01T12:52:18+00:00"}, {"id": "23w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/563c045969f7b51f9b7f5ff32a262bdb4cace4ef/23w13a.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-29T13:54:16+00:00"}, {"id": "23w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9e40321a2ae83fb6e57bf7c4c2ba2ce173e568cd/23w12a.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-22T13:28:42+00:00"}, {"id": "1.19.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/94aa32edf820b5b42c208c7b0a5a72fb6863cb27/1.19.4.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-14T12:56:18+00:00"}, {"id": "1.19.4-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c7e823612ba124d36b8668625cbd76f9880d386b/1.19.4-rc3.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-13T10:03:11+00:00"}, {"id": "1.19.4-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1cb5bb21bdbb4870ee1b03198c44bbbb3f862735/1.19.4-rc2.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-10T12:42:54+00:00"}, {"id": "1.19.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b89d4f2241fa8b61f6f26e369c5afeeef245d1bc/1.19.4-rc1.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-09T14:35:50+00:00"}, {"id": "1.19.4-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6ecc95cb84a4a0e244b7ee642d23f1bff25ad915/1.19.4-pre4.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-08T13:08:22+00:00"}, {"id": "1.19.4-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e1c07ab8d32abc8b8683dee3a6efb951aabfecca/1.19.4-pre3.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-03-01T14:11:05+00:00"}, {"id": "1.19.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d5602df64866b1ed8aef6e328aa7f82200c35a24/1.19.4-pre2.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-02-27T13:38:53+00:00"}, {"id": "1.19.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6a4be9b4f5cefa904c029e556749a39d1e4c6354/1.19.4-pre1.json", "time": "2024-02-14T06:28:26+00:00", "releaseTime": "2023-02-22T16:00:34+00:00"}, {"id": "23w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9ee00143e9282cb1a3ac3531527b224ed42cd046/23w07a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2023-02-15T14:32:29+00:00"}, {"id": "23w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5a06a6f7dabdacc032135e1acad6314350087a60/23w06a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2023-02-08T15:00:04+00:00"}, {"id": "23w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/12f243215c907bdff76944a3b124a21a6cabc4e1/23w05a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2023-02-01T14:20:33+00:00"}, {"id": "23w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/99ef64d2dd255d63b77ac46fe90351b5f31ab2e2/23w04a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2023-01-24T15:19:06+00:00"}, {"id": "23w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fed6c5f1d6a2f2f60fcb6d0795ef793ba85a8f24/23w03a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2023-01-18T13:10:31+00:00"}, {"id": "1.19.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/79f0c52c94491ad0e74f40c5796acbd9e66ac6f0/1.19.3.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-12-07T08:17:18+00:00"}, {"id": "1.19.3-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d4e0bf72580438a39cd00c5cf5a9c783d2250db3/1.19.3-rc3.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-12-06T10:24:01+00:00"}, {"id": "1.19.3-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ff5583b739f7db47b09708707c3b34fdc5cd09af/1.19.3-rc2.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-12-05T13:21:34+00:00"}, {"id": "1.19.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9ebf5ed646cabc1e61db0aaccc1c3d2f031ad8af/1.19.3-rc1.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-12-01T13:45:18+00:00"}, {"id": "1.19.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8871b908ed37c611cd8989d010ddf456500036e9/1.19.3-pre3.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-11-29T14:28:08+00:00"}, {"id": "1.19.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d876a03a49811d8b4076773a2c18b71c8498bd4f/1.19.3-pre2.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-11-23T16:12:25+00:00"}, {"id": "1.19.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b3d37c6a23a348ebcfce459128fd40a334e5d57/1.19.3-pre1.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-11-22T13:59:37+00:00"}, {"id": "22w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72c3489f2fec559b406cd4f02af38d6a3cce1411/22w46a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-11-16T13:32:50+00:00"}, {"id": "22w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7b99f8aa69c8ad2b95caee660f39e527a8283718/22w45a.json", "time": "2024-02-14T06:27:57+00:00", "releaseTime": "2022-11-09T14:30:16+00:00"}, {"id": "22w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7d7d539e8431eaf94eee88061f096436d53ee37d/22w44a.json", "time": "2024-02-14T06:26:29+00:00", "releaseTime": "2022-11-02T13:15:43+00:00"}, {"id": "22w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/445cb9a4eea11c0cccbd531373b04a070c98ced4/22w43a.json", "time": "2024-02-14T06:26:29+00:00", "releaseTime": "2022-10-26T11:55:59+00:00"}, {"id": "22w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/52ccc019eb718de161e4ebf996099e0951910af7/22w42a.json", "time": "2024-02-14T06:26:29+00:00", "releaseTime": "2022-10-19T09:34:22+00:00"}, {"id": "1.19.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/ed548106acf3ac7e8205a6ee8fd2710facfa164f/1.19.2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-05T11:57:05+00:00"}, {"id": "1.19.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ebecfcfa284240daa29737c84eb98a2d2e1a33c2/1.19.2-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-04T15:19:44+00:00"}, {"id": "1.19.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8549c05d26a79c0fb5701ba66d200465daa5f18/1.19.2-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-04T10:07:26+00:00"}, {"id": "1.19.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/39d5e8925d37490c6f2abb2e02b8c6f1b35719df/1.19.1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-27T09:25:33+00:00"}, {"id": "1.19.1-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8762a93dc173c7a8e68d70ac5517b37e2c5f969f/1.19.1-rc3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-26T15:34:35+00:00"}, {"id": "1.19.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/be8528e20ead28832f20e4278f45519d1e28022a/1.19.1-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-21T16:25:50+00:00"}, {"id": "1.19.1-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0d36b2776f02dc9d864f0f931b6c052435f7918/1.19.1-pre6.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-20T15:49:31+00:00"}, {"id": "1.19.1-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e832137d90ae9915e1b1a22537f30feb0178ce0/1.19.1-pre5.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-15T11:51:44+00:00"}, {"id": "1.19.1-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b2cebb78f1c95d5d886e2c30e8cf913f574ecd3f/1.19.1-pre4.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-08T11:41:59+00:00"}, {"id": "1.19.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/05935ad004751df834add5d8111bea341f388849/1.19.1-pre3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-06T14:50:46+00:00"}, {"id": "1.19.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c2e4db17880bd4dad87cb2cd87d4b5f5d159a6e/1.19.1-pre2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-30T15:57:20+00:00"}, {"id": "1.19.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc09b172bbef8c24a69c4c6711e96051464204ad/1.19.1-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-23T16:32:41+00:00"}, {"id": "1.19.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b684045dca48e65dbf5ec5f09070d9382731d0ab/1.19.1-pre1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-21T17:13:59+00:00"}, {"id": "22w24a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1a490c090ec1affab43deba00929558c73dd1e23/22w24a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-15T16:21:49+00:00"}, {"id": "1.19", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/14bbfb25fb1c1c798e3c9b9482b081a78d1f3a9d/1.19.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-07T09:42:18+00:00"}, {"id": "1.19-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ae2b88a016be92e5838afa6232005b41e2935622/1.19-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-03T11:47:25+00:00"}, {"id": "1.19-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f216ace4c19321071a80e7c6dd51efe402032e94/1.19-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-02T12:12:52+00:00"}, {"id": "1.19-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/800c849fe1e8694e8023920e01174e3d2f73065b/1.19-pre5.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-01T10:56:23+00:00"}, {"id": "1.19-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/11edfa21e200734858abdd466aeead7754cc68e2/1.19-pre4.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-30T14:43:01+00:00"}, {"id": "1.19-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bf1ebc7ae0dbef7b92307a11eb0cbbfeaa3359e2/1.19-pre3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-25T09:56:47+00:00"}, {"id": "1.19-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5dbf076b98594a81069a3d574d985f8e3a701990/1.19-pre2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-23T14:54:00+00:00"}, {"id": "1.19-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/277c1456e8de294125887c0937ad39f9d286f7e6/1.19-pre1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-18T13:51:54+00:00"}, {"id": "22w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b823251598bcefadad774283db6979e40044e229/22w19a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-12T15:36:11+00:00"}, {"id": "22w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1de25e62031021df204de79c264822898c937447/22w18a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-04T14:41:35+00:00"}, {"id": "22w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4df4e4831fafbaa4d41895f448a0596d779425f3/22w17a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-27T15:54:15+00:00"}, {"id": "22w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f6f22cde08f4603aa90aec80a9c5b60b93a09b15/22w16b.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-20T17:25:32+00:00"}, {"id": "22w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a39b0f1591257664a1296b8e95a0689c1cbdad73/22w16a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-20T14:37:07+00:00"}, {"id": "22w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2ed4589fdbc1d58a6d60e2b6809ac956d0a7cf34/22w15a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-13T15:41:17+00:00"}, {"id": "22w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/36abf1492f25e5bb7187307fefc91470cd40817d/22w14a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-06T13:37:12+00:00"}, {"id": "22w13oneblockatatime", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d70cef49b7606e8c37e49abad4ff542e2ce21d09/22w13oneblockatatime.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-01T11:56:58+00:00"}, {"id": "22w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bd1e0454545c498d20d25e4d1bc8fd4ddeeb06fe/22w13a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-31T14:53:25+00:00"}, {"id": "22w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/24998bd342996995e1a2007111056906f465a867/22w12a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-24T16:15:02+00:00"}, {"id": "22w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4f1500bb4141a58c8692224e1157c986c6a00075/22w11a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-16T15:55:38+00:00"}, {"id": "1.18.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/334b33fcba3c9be4b7514624c965256535bd7eba/1.18.2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-28T10:42:45+00:00"}, {"id": "1.18.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a88f2199e697f43c06d7051186762cd514f5f629/1.18.2-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-25T13:25:40+00:00"}, {"id": "1.18.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c93d7580baf1b292763fa14a379516ffe5822967/1.18.2-pre3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-23T15:23:12+00:00"}, {"id": "1.18.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/46e96658399bf2e1487d88181bd75689978491f8/1.18.2-pre2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-21T15:26:19+00:00"}, {"id": "1.18.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59bd690c22c69ace39595d3b14bf85a01bb54f35/1.18.2-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-18T16:00:32+00:00"}, {"id": "22w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/83d4e38c96c37a840fed51747e98d45d82115405/22w07a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-16T16:13:58+00:00"}, {"id": "22w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f46697f288f553f7a21a42291b85d708924128e8/22w06a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-09T16:47:48+00:00"}, {"id": "22w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bebb4be7c06e5b311e08a46212328c0d1dee1e60/22w05a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-02T16:08:39+00:00"}, {"id": "22w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b19476adc780897c3ea2805bc90ff91f694093bd/22w03a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-01-19T16:04:59+00:00"}, {"id": "1.18.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7ff864e988a2c29907154d5f9701e87e5d5e554a/1.18.1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-10T08:23:00+00:00"}, {"id": "1.18.1-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/027ff0f43a3589b3ea16771ec11d052fc0fdf45e/1.18.1-rc3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-10T03:36:38+00:00"}, {"id": "1.18.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0e114a6a9e1f246dea4c8835e8046b3d8ce575e3/1.18.1-rc2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-08T12:29:36+00:00"}, {"id": "1.18.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f24188f9c0759be5c844acae8b47fb582c75e7e/1.18.1-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-07T15:52:47+00:00"}, {"id": "1.18.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/01cb59a31c5af10b73ce11d04df73b469e5e8664/1.18.1-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-03T13:45:38+00:00"}, {"id": "1.18", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7367ea8b7cad7c7830192441bb2846be0d2ceeac/1.18.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-30T09:16:29+00:00"}, {"id": "1.18-rc4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/489269e1139f4c9ce6af64e9e80ac094accd3515/1.18-rc4.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-29T13:43:42+00:00"}, {"id": "1.18-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0cea86833bdfb8de6d85f2b87b4dda2081f3fc3c/1.18-rc3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-26T15:51:56+00:00"}, {"id": "1.18-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1cd29ca38d308f1375529c2c52c7819a21bb6410/1.18-rc2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-26T10:02:04+00:00"}, {"id": "1.18-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92779f7a433c8b65d2fe52dca236a0b99a877964/1.18-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-25T14:28:49+00:00"}, {"id": "1.18-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/befe1636010c86b29a0b3b74d9614eaca4679185/1.18-pre8.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-24T14:57:32+00:00"}, {"id": "1.18-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14c6eee2ef0b2ec4dd66d21a45288df9ea445853/1.18-pre7.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-23T16:37:41+00:00"}, {"id": "1.18-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/881f1e388c66a0a27f1e39759d594aba7fc827cc/1.18-pre6.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-22T17:09:05+00:00"}, {"id": "1.18-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c7297b2645db73c3548d9c7bcec9d1f1daf9a3d/1.18-pre5.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-19T15:47:09+00:00"}, {"id": "1.18-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2604a38227d2943e072fb6d1e1885cf71659a620/1.18-pre4.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-17T18:07:56+00:00"}, {"id": "1.18-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6bd8b415c9df47ba64474f10ce777e34d31462de/1.18-pre3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-17T16:04:25+00:00"}, {"id": "1.18-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f7bc077f4bae337c5d783a77246cdfc019f5a85e/1.18-pre2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-16T17:04:48+00:00"}, {"id": "1.18-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bad40b99d4019c10ef43641ff11dfecd5fd0a2e0/1.18-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-11T16:14:06+00:00"}, {"id": "21w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0a663bcbd3c43ced8e0e4889e82b79e48d2c42c/21w44a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-03T16:14:34+00:00"}, {"id": "21w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/87fce70da2c59051a18e3d792f35839f7a799f82/21w43a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-27T14:38:55+00:00"}, {"id": "21w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3ce8fdf60e69bfb0944e479ada4cf6b60dcc3995/21w42a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-20T12:41:25+00:00"}, {"id": "21w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f05122bd9496b5277cfb24312c1a7a70510cc84a/21w41a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-13T15:23:23+00:00"}, {"id": "21w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a6a012bab1380ce87f9fc4a20212fd7031ac93a4/21w40a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-07T11:17:50+00:00"}, {"id": "21w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/008cea9c2128244b9f1ffa3b9512db1e60558390/21w39a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-29T16:27:05+00:00"}, {"id": "21w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/893da3cf2aaf60457e4805994f8d526305685e77/21w38a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-23T14:36:06+00:00"}, {"id": "21w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fd90ab042d60935a123a579ec03efc422f06e4bb/21w37a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-15T16:04:30+00:00"}, {"id": "1.17.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e0e7ab5ed6f55bbd874ef95be3c9356d67e64b57/1.17.1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-06T12:01:34+00:00"}, {"id": "1.17.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4224a23efdcd362508457bda732b502d3d8bfbaf/1.17.1-rc2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-05T12:58:01+00:00"}, {"id": "1.17.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/27d7a88469c5a59420d7b060f2a253802164185f/1.17.1-rc1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-01T15:23:37+00:00"}, {"id": "1.17.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/30637bf484bc2e530db468c42e6d2695bb806420/1.17.1-pre3.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-30T15:43:16+00:00"}, {"id": "1.17.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/95f076c3f748ab83f44bc4c80b0039626b67806e/1.17.1-pre2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-29T15:14:12+00:00"}, {"id": "1.17.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/609fa7a9bb0d1c3855111e1d511d4ba2a398a524/1.17.1-pre1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-18T12:24:40+00:00"}, {"id": "1.17", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/0d9ace8a2ecfd1f4c782786f4b985a499240ff12/1.17.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-08T11:00:40+00:00"}, {"id": "1.17-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/45b8f00ecc9ca265c80da0d8ad9a6710f088bc21/1.17-rc2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-07T11:46:28+00:00"}, {"id": "1.17-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ed41604ce5637dfc62e062e1ce809817d54aa46d/1.17-rc1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-04T13:24:48+00:00"}, {"id": "1.17-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/29bd60294ee8387f7ca7d9c1abd835484f71bbfc/1.17-pre5.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-03T17:01:28+00:00"}, {"id": "1.17-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9c91afc7b8e9bab61facd2423bd75b375df0fc2e/1.17-pre4.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-02T16:15:43+00:00"}, {"id": "1.17-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/de4dd57535bea923731008c1f29562211740aba6/1.17-pre3.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-01T15:43:46+00:00"}, {"id": "1.17-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/76f54994dc32298f0743e2a9031ad1bba04cf753/1.17-pre2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-31T15:54:05+00:00"}, {"id": "1.17-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba419fd73cb07512bd2ca090f179e84333f9804c/1.17-pre1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-27T09:39:21+00:00"}, {"id": "21w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6757e49a93f18fe7b8d522f83b62d47629da37ab/21w20a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-19T15:22:02+00:00"}, {"id": "21w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a43adfb683de80b158a5c6899f34f3a041dc578/21w19a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-12T11:19:15+00:00"}, {"id": "21w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b3266f58ade03b19896163c7cfb40cf815aa8e28/21w18a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-05T15:24:35+00:00"}, {"id": "21w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2af27c4d5412f4476b43882052b5cb510cbc0984/21w17a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-28T13:54:05+00:00"}, {"id": "21w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f083b566dd515b5706ead9522c42b187b3f2f2f6/21w16a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-21T16:41:14+00:00"}, {"id": "21w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce5b993772ae22cc5f518e72b93744954945f755/21w15a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-14T13:41:34+00:00"}, {"id": "21w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7a67f727cc7847efc3753de26a32d051348b5fba/21w14a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-07T14:04:09+00:00"}, {"id": "21w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c20df75b956c2eb982a9028ceff965e1aae40345/21w13a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-31T16:17:46+00:00"}, {"id": "21w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c0d562d6db031a67b9569c0765c8ef68434e0ee2/21w11a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-17T15:05:50+00:00"}, {"id": "21w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d4982f2015d40e966beeae097307e33e2f26fa57/21w10a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-10T15:24:38+00:00"}, {"id": "21w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7dbd5a6f2eaa20726235a2b40f955004339b7af/21w08b.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-25T11:46:34+00:00"}, {"id": "21w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bc80c3181bbeebd6e0cab46fc445b76b6c9dadb1/21w08a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-24T14:38:51+00:00"}, {"id": "21w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/96476dbdb5d6689b3f1a47c025f1b7ad3630bd95/21w07a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-17T16:35:40+00:00"}, {"id": "21w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/446e380daf0fa4a9d42d5fcfa8984f8a9500e063/21w06a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-10T17:13:54+00:00"}, {"id": "21w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e957c6d798c266d5978835fcf8f74f7af96153e/21w05b.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-04T15:09:29+00:00"}, {"id": "21w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f28b435faf0610838bb6ddf6ace922ea27b89de9/21w05a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-03T15:56:54+00:00"}, {"id": "21w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4b7bb5c32164c0497717ab7ec5dc3016de6dfdc0/21w03a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-01-20T14:56:29+00:00"}, {"id": "1.16.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fba9f7833e858a1257d810d21a3a9e3c967f9077/1.16.5.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2021-01-14T16:05:32+00:00"}, {"id": "1.16.5-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79b63085fb7b4805877ee719f6518ab3c87b3833/1.16.5-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2021-01-13T15:58:55+00:00"}, {"id": "20w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08f2e16bc1ab7f7bdeaa95f2762ff05c7407100d/20w51a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-12-16T16:27:57+00:00"}, {"id": "20w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba1eaa1e4396bd42eb1ef2a0897fcf0043551f6f/20w49a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-12-02T16:47:20+00:00"}, {"id": "20w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cbbe53da94d1368c5e2fd8309f0e7b1645957516/20w48a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-25T15:42:24+00:00"}, {"id": "20w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d1d7a38b0d650c51473ba04019176b575fd6f34b/20w46a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-11T15:30:32+00:00"}, {"id": "20w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/913ae8af6dcc8b308fb58da1ee3b58e3a83f5f28/20w45a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-04T16:42:00+00:00"}, {"id": "1.16.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/596ad61fda7612d9edf8881cf81869276bdb7f82/1.16.4.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-29T15:49:37+00:00"}, {"id": "1.16.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ef95b0f319cb282802a4cc38e57e79d4fafc9567/1.16.4-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-27T16:31:08+00:00"}, {"id": "1.16.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5af340937921b990c1b7da8bdac9d04fad7c3c95/1.16.4-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-22T15:32:17+00:00"}, {"id": "1.16.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b48239bf7935185c788e07d9c2d83d788ce3f27b/1.16.4-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-13T14:36:07+00:00"}, {"id": "1.16.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/6485dd131ef68c968041a9f6fd73094b027e42e1/1.16.3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-09-10T13:42:37+00:00"}, {"id": "1.16.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5ba5cfa865db9020ddab97df365ea8821d3eb454/1.16.3-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-09-07T12:34:06+00:00"}, {"id": "1.16.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/998d9ef5770d05c20d760dc16cf85151f35009f2/1.16.2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-11T10:13:46+00:00"}, {"id": "1.16.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/278e49a115bce14e99b5fa9420103652692c9f6b/1.16.2-rc2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-10T11:43:36+00:00"}, {"id": "1.16.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/541ad2a92d12e6d36fb6c2b29b5d69ae4b97ab23/1.16.2-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-07T14:35:39+00:00"}, {"id": "1.16.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3df6469e9cc759a1ac0a8f6690289922d547f97b/1.16.2-pre3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-06T16:44:52+00:00"}, {"id": "1.16.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7768698c025d559928042452df9d79910e7818eb/1.16.2-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-05T15:30:50+00:00"}, {"id": "1.16.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9709f88b92c9078c3d0a95dae3a225dc8cd70a34/1.16.2-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-29T13:19:05+00:00"}, {"id": "20w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3de2ee50c31ebcd4b1fa9577e2550a6020710df5/20w30a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-22T15:05:15+00:00"}, {"id": "20w29a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d869c8cda528228a47b80dde5cc9ea138f514a99/20w29a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-15T14:13:47+00:00"}, {"id": "20w28a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/33142315373d1ed7289fa6e5b8b2de6980147de8/20w28a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-08T15:10:40+00:00"}, {"id": "20w27a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e442b0f37792b83bf46e9ae0258f45faff33a7cf/20w27a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-01T15:07:35+00:00"}, {"id": "1.16.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/54fa3af57d041d2771e66d390197b2c0288e697c/1.16.1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-24T10:31:40+00:00"}, {"id": "1.16", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e9d21d375f9c961f0e9731d4e463306d76e77c48/1.16.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-23T16:20:52+00:00"}, {"id": "1.16-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49d94686688119e1d85d8c7ebc690b0f6d71ebd8/1.16-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-18T12:49:28+00:00"}, {"id": "1.16-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d85ab25ae33462045ba050774cf9cbb978afebca/1.16-pre8.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-17T14:45:23+00:00"}, {"id": "1.16-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec4dc4530869505923e1ebf6fc80ea08eda831e1/1.16-pre7.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-16T15:31:35+00:00"}, {"id": "1.16-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c1ed3dcbbf22fe0a17eb05b3f1f1445f25508d6/1.16-pre6.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-15T16:57:57+00:00"}, {"id": "1.16-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e41cdd44896fcfd96db07aecf89a58bbc89d6c6f/1.16-pre5.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-12T14:33:59+00:00"}, {"id": "1.16-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/68b121aae24c9f217378ac64e7e27e1a4ca6c6e0/1.16-pre4.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-11T15:45:55+00:00"}, {"id": "1.16-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72e9981dd7fb9bc1e775a04aa844ef79192bfebc/1.16-pre3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-10T14:57:43+00:00"}, {"id": "1.16-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81ae4d3c6cabf02af6c67abd87c6b9c9501bdf26/1.16-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-05T10:47:59+00:00"}, {"id": "1.16-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bcfd0eeee263ea7779c23ba7d55034607ba4b00e/1.16-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-04T18:17:51+00:00"}, {"id": "20w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0bbbe0674789a5b2b11705bb868a446bfd660fd/20w22a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-29T11:25:02+00:00"}, {"id": "20w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d95fdd82e0fa506eb4099f3e948c378124a2baf/20w21a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-20T12:07:18+00:00"}, {"id": "20w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2ac29186d5062224ff326d868fe78bea79360ad1/20w20b.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-14T08:16:26+00:00"}, {"id": "20w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4e5118f80f061490e54d843216780dabdaaf59fd/20w20a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-13T15:11:43+00:00"}, {"id": "20w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/be653aac3f8e6cfc2bc40cc9be764f0a4ba46121/20w19a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-06T16:23:24+00:00"}, {"id": "20w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c7978f8d1b6735bb0b6d813f3aed0363bf1bd8d/20w18a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-29T15:16:34+00:00"}, {"id": "20w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/98807b36f1ee047d5e4e2744d94b28d9e5c1b7cd/20w17a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-22T13:47:50+00:00"}, {"id": "20w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9ca086c9195b437c08f9f0c38d25dc1955d91870/20w16a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-15T14:13:01+00:00"}, {"id": "20w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bbf16435ce4c151d3908b442987c162e6f7cf8c5/20w15a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-08T12:29:24+00:00"}, {"id": "20w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e548dbfeb7cb9aa76888b7308112c1a03cf0cc0/20w14a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-02T14:28:06+00:00"}, {"id": "20w14infinite", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73eb2a736f0a7349fb5f73e685f847826e5321fd/20w14infinite.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-01T12:47:08+00:00"}, {"id": "20w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/430033af05f29add54241c55be62bbde6b640cd5/20w13b.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-26T13:00:34+00:00"}, {"id": "20w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e7daff8b5d319aca184bfa818f073663ada22d7/20w13a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-25T17:05:33+00:00"}, {"id": "20w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79a74e0bfd167b1d09713accb7c2fe6cd1c5dd8c/20w12a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-18T16:42:06+00:00"}, {"id": "20w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ac08e450ea036741d61bcb7e5ea09e5db2e945d7/20w11a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-11T16:28:27+00:00"}, {"id": "20w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/781dbf396510e90e3ec6c845d60e05719a3c8853/20w10a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-04T16:21:41+00:00"}, {"id": "20w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/191f7a06170d42a2aed63c2a8adf4aaae4799892/20w09a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-26T16:43:08+00:00"}, {"id": "20w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/77545f4f812d127fd032e36413901b85215662d9/20w08a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-19T13:30:09+00:00"}, {"id": "20w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49b9a7a4d3ae78d74dcba384e2aea08cb58fbe37/20w07a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-14T13:20:49+00:00"}, {"id": "20w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59a5d77dce749c868f7338c5d6241312a9dc2f1a/20w06a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-05T16:05:22+00:00"}, {"id": "1.15.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e9d0adb8f642abe422909ede50f651b2b58a3573/1.15.2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-17T10:03:52+00:00"}, {"id": "1.15.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2b1688e3a06c0427a99cd0042554ed40eb4fafa4/1.15.2-pre2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-16T12:35:57+00:00"}, {"id": "1.15.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7f37c8d4695dff2a9f553952e9c97a49ee471ca/1.15.2-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-14T16:19:31+00:00"}, {"id": "1.15.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/18c3063de87ae126b4e017121219ba802be0755b/1.15.1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-16T10:29:47+00:00"}, {"id": "1.15.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b5aee0865f805a44ecdbed04c964352e86534f2/1.15.1-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-12T14:02:30+00:00"}, {"id": "1.15", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/833322370ab320e77717097082effe1d124d48bd/1.15.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-09T13:13:38+00:00"}, {"id": "1.15-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e60f500bb19e44c0e632e02da12807ff2fe92e49/1.15-pre7.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-09T12:14:11+00:00"}, {"id": "1.15-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6da29669f5a9cd8ddf8ee92888125a23eb09b877/1.15-pre6.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-06T12:04:30+00:00"}, {"id": "1.15-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e842a4e2c50234213a19931ac8a462de3021467/1.15-pre5.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-05T13:20:00+00:00"}, {"id": "1.15-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b4ca2162a7a098e4e4f7dce619666d0aa6f3e2fc/1.15-pre4.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-03T12:24:24+00:00"}, {"id": "1.15-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1f31491b1ea5e89427393ab3ca6aefb5e0e9c34a/1.15-pre3.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-28T17:17:50+00:00"}, {"id": "1.15-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/62c8b621f2be16d47fa2f05f8f6380a696cfeda3/1.15-pre2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-25T18:09:38+00:00"}, {"id": "1.15-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/66e8035a07e8d2610491003ebf7c51a9c4b0ed67/1.15-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-21T17:01:17+00:00"}, {"id": "19w46b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/18f4384dd05ad7711714742e5c22947a3828d6a2/19w46b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-14T13:29:24+00:00"}, {"id": "19w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/91bef07ec9143752f2ce038434f60f08e6f10089/19w46a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-13T16:37:46+00:00"}, {"id": "19w45b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce9a87180664cce2eaa96518f6dae923943efe4c/19w45b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-08T12:42:44+00:00"}, {"id": "19w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e459f7878fde73117da2cb89cbaaa6d649b1a39/19w45a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-07T16:19:20+00:00"}, {"id": "19w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/652ec7dc926df9b0c7a7f7d00e9cfe34b3b82470/19w44a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-30T15:31:44+00:00"}, {"id": "19w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c7d6f4ba7786e252c79a73a13106eb077e622a3/19w42a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-16T15:30:39+00:00"}, {"id": "19w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a73a6135db91f13d7399fc9d438c24a7a80fb819/19w41a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-09T15:21:35+00:00"}, {"id": "19w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c2b4b675af813d9e8e43767991539a1770b93e6b/19w40a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-02T13:40:26+00:00"}, {"id": "19w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14180226c4e65289831b3f28fc75aebf8e114deb/19w39a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-27T10:13:33+00:00"}, {"id": "19w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72fea837ad3bf55eaf4a1163109afba0d1f9976c/19w38b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-18T14:59:13+00:00"}, {"id": "19w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e43b0e8f8944107fafb785cb50e2994c4be1676f/19w38a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-18T10:03:22+00:00"}, {"id": "19w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8a986a197d87f45205a5650018708c7f9d9056ad/19w37a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-11T11:46:44+00:00"}, {"id": "19w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/90bc200686ed385ca3ccae265393d28a8d3191fe/19w36a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-04T11:19:34+00:00"}, {"id": "19w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/39e153ff4f57f533069cf24441f9fa0a23b6d223/19w35a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-08-28T15:01:44+00:00"}, {"id": "19w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79310fef2c7bb69085e9459568152049f706e52d/19w34a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-08-22T12:06:21+00:00"}, {"id": "1.14.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/be146d5f66a3627ed0a87c234c4d8dde8ab35098/1.14.4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-19T09:25:47+00:00"}, {"id": "1.14.4-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9fa32d63671ca8ad48ffc01f478bb5528a9780bb/1.14.4-pre7.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-18T11:32:36+00:00"}, {"id": "1.14.4-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fc516c11532c5dd97de371786969d0103df1aff9/1.14.4-pre6.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-15T12:39:49+00:00"}, {"id": "1.14.4-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6561296e73e1cbc2371cda68e0f045191d413ea3/1.14.4-pre5.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-11T10:52:33+00:00"}, {"id": "1.14.4-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a08857ff791232848fb4f361c05bfc3096cf02b3/1.14.4-pre4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-10T12:53:29+00:00"}, {"id": "1.14.4-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1304801a59f94205cf234f809f2ddaf78e2b64a8/1.14.4-pre3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-08T11:21:42+00:00"}, {"id": "1.14.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/33921eca48b26430ff698ce196645d166529f270/1.14.4-pre2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-04T14:41:05+00:00"}, {"id": "1.14.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/22fef20b2c50855f8702a06a836dc4f31412436a/1.14.4-pre1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-03T13:01:01+00:00"}, {"id": "1.14.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e21618620e02be5a14543d1d17ffdba941d09aa8/1.14.3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-24T12:52:52+00:00"}, {"id": "1.14.3-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e197ff501e791295140b7b6b02ca5f476075f634/1.14.3-pre4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-19T11:44:29+00:00"}, {"id": "1.14.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cee4ea21267c4f62171f5cf19bf5b3322424be33/1.14.3-pre3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-14T08:03:33+00:00"}, {"id": "1.14.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f4a376be79a51403d9cd0c1dbec1a25a2994dc85/1.14.3-pre2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-07T09:11:29+00:00"}, {"id": "1.14.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6345b47eb7abe7b74870ff11dbd03e282e1b0112/1.14.3-pre1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-03T14:34:20+00:00"}, {"id": "1.14.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/83299b3bf3139ebd9ae5547b3144dcf68d4cb1fd/1.14.2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-27T11:48:25+00:00"}, {"id": "1.14.2 Pre-Release 4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/75bf72d8e4b38cf5f729637efc116697edec4334/1.14.2%20Pre-Release%204.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-27T07:21:11+00:00"}, {"id": "1.14.2 Pre-Release 3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a0126da466f90d6e52eb3e27332f7f7070f4be8/1.14.2%20Pre-Release%203.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-22T13:12:51+00:00"}, {"id": "1.14.2 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dee854f57cac0fc9f1b96b96254a67829dd103ae/1.14.2%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-17T12:21:03+00:00"}, {"id": "1.14.2 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0525ae4750d18d6c3cf9edee1f510333919c6003/1.14.2%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-16T15:40:25+00:00"}, {"id": "1.14.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/183e49ba0fabb5ef8a304f8f5907fa887f40c466/1.14.1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-13T11:10:12+00:00"}, {"id": "1.14.1 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1d0ccfff5f8d13d3ecaddbc481a9a4815e312e4e/1.14.1%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-09T14:01:04+00:00"}, {"id": "1.14.1 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/656e98e9c5a418b4747b0e5892fd301963b0bcc7/1.14.1%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-07T14:44:42+00:00"}, {"id": "1.14", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/0fd01dd81eaa451d3130b1cf025a10f129585b10/1.14.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-23T14:52:44+00:00"}, {"id": "1.14 Pre-Release 5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/157959b1daeda81293854032102eef36e76af108/1.14%20Pre-Release%205.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-18T11:05:19+00:00"}, {"id": "1.14 Pre-Release 4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/93ca7217fa9027019328b1b8f9b2e8f82436622d/1.14%20Pre-Release%204.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-17T15:31:12+00:00"}, {"id": "1.14 Pre-Release 3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/af8a6b1a9d8d44e080451553060a602e1214a7bb/1.14%20Pre-Release%203.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-16T13:57:10+00:00"}, {"id": "1.14 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fcbaaa318bf47cecb0c37da7a37903e4bcf24e90/1.14%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-12T11:38:53+00:00"}, {"id": "1.14 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/76dd36e6b4fb2db5e474dd3b44cd96f3f498433d/1.14%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-10T14:24:16+00:00"}, {"id": "19w14b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/eac7bd3b9b9a8beed783fda4920b76b792120861/19w14b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-05T10:33:58+00:00"}, {"id": "19w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3f547c294bf6f82e76120f760d5574d6b3eb88bc/19w14a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-03T13:45:00+00:00"}, {"id": "3D Shareware v1.34", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5b59564acaa4cc153b6f934e566226642ed978ab/3D%20Shareware%20v1.34.json", "time": "2023-06-07T12:27:21+00:00", "releaseTime": "2019-04-01T11:18:08+00:00"}, {"id": "19w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fd82b31c5890e7f118c7ffa9122a0f6b29c87936/19w13b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-29T16:53:22+00:00"}, {"id": "19w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b6b6aa23cbbce46b65e36d0c1bccd4f18438118a/19w13a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-27T15:15:31+00:00"}, {"id": "19w12b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2b7c619474e2a5c19e43494199d47cafba395abf/19w12b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-21T15:20:01+00:00"}, {"id": "19w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/91e9bb4b6af34b07c6a89c95696b988b8156702b/19w12a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-20T16:47:34+00:00"}, {"id": "19w11b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/065fec1702d92598089ad37f9e64b2e52ca30114/19w11b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-14T14:26:23+00:00"}, {"id": "19w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec8d1b45727e11cec93a813cc8b66bd48a6a3bad/19w11a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-13T13:59:29+00:00"}, {"id": "19w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fe35acc600f18d6247ec9e4228c53447e695f8a3/19w09a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-27T14:44:30+00:00"}, {"id": "19w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8d59acdc1b78c6d4a690c2906bcb0a875f119652/19w08b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-21T13:38:09+00:00"}, {"id": "19w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b21d6ece2b83e7ec488a4536dbe9f9228b744b34/19w08a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-20T14:56:58+00:00"}, {"id": "19w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0be11f1e510a44d0042ad471a72371e7633c9777/19w07a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-13T16:12:08+00:00"}, {"id": "19w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/384c37467913bcd11a0d7f8d8b9ec81c7058f1de/19w06a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-06T16:24:13+00:00"}, {"id": "19w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/87712b3fed60308203939e9ac846470f4b9672d3/19w05a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-30T15:16:49+00:00"}, {"id": "19w04b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aaf60b4748fbfa2b08c90c6abb1762fb92cac367/19w04b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-25T12:20:15+00:00"}, {"id": "19w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4eeb1dae750f4152927fe51c5065ca7aa3d53e3e/19w04a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-24T15:31:52+00:00"}, {"id": "19w03c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e7a922f060cc4441841e4722b0a6bab631492c1e/19w03c.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-18T11:27:13+00:00"}, {"id": "19w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a600b0a22f97147e59cd6060b362086ac84cb13e/19w03b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-17T16:43:27+00:00"}, {"id": "19w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e10947fbb39e5d58fb42000348be423e8c0cad64/19w03a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-16T16:45:02+00:00"}, {"id": "19w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5b51ed792b91ce4d281666c64c49084a134ac11d/19w02a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-09T15:52:07+00:00"}, {"id": "18w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/307a38d1f592a92fcff056165ef05323cb499bfc/18w50a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-12-12T14:58:13+00:00"}, {"id": "18w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e37cc7f1f8c8d9cde81b7754fda64954578170a/18w49a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-12-05T12:24:30+00:00"}, {"id": "18w48b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cece9e08337e073961bd7802672050718bf07d0d/18w48b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-30T10:37:31+00:00"}, {"id": "18w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fff0948616360b5545f236e5900af4c7c6da5d86/18w48a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-29T13:11:38+00:00"}, {"id": "18w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9d60a4e4f408db78e5f7797e8996d87e555674d8/18w47b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-23T10:46:41+00:00"}, {"id": "18w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b9345c8f73a33095fba323ebd4c4784796cf4436/18w47a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-21T15:45:22+00:00"}, {"id": "18w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b24c105bfb11d85b4f8cb946c89f762cf099aa2/18w46a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-15T13:43:14+00:00"}, {"id": "18w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8a857bfb02953d2578458402792e3b416d25f9f/18w45a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-07T14:40:06+00:00"}, {"id": "18w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7bee20111c1cd50fb0e26b689ea648ff84989ae6/18w44a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-31T15:29:16+00:00"}, {"id": "18w43c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/509730930d8dcd19bd3c6db819d33eb00d272ef4/18w43c.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-26T08:40:46+00:00"}, {"id": "18w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba1edcdba89ea57137c04952e4c7755926263a76/18w43b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-24T15:02:30+00:00"}, {"id": "18w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07adde0060f5cbdb01b90ebc03cde154aacebcb/18w43a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-24T10:52:16+00:00"}, {"id": "1.13.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fa3ddc22146c46bfeb0e9d322c6f83b937e25005/1.13.2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-22T11:41:07+00:00"}, {"id": "1.13.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7b915c9ca867e916dcbacecdfe19cff3cd94cab8/1.13.2-pre2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-18T14:46:12+00:00"}, {"id": "1.13.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28eb641c164c2ae0879358f884f42f7e2393c366/1.13.2-pre1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-16T13:40:58+00:00"}, {"id": "1.13.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/f37fe6f0912ddb7ac3e7d5201a73d56ce170a57f/1.13.1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-22T14:03:42+00:00"}, {"id": "1.13.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f82e1057225a7c9dfe3c75b45924a6bfa4aaeafa/1.13.1-pre2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-20T13:52:09+00:00"}, {"id": "1.13.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73f5439743e168a8270b538061832f22625369c9/1.13.1-pre1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-16T13:08:44+00:00"}, {"id": "18w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/495ee0c97c88cf15b6614dd68bc70994413f8e5f/18w33a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-15T14:28:56+00:00"}, {"id": "18w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fa7c2eaa0539d16d3e3887ac16ecd19f25757505/18w32a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-08T13:16:57+00:00"}, {"id": "18w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5f20fbe733b3db3758045626e9ffff050029daf6/18w31a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-01T12:54:44+00:00"}, {"id": "18w30b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81891c454a12e9bf4a262002d5c89320bb4ae153/18w30b.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-07-26T16:06:57+00:00"}, {"id": "18w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3e9adc4f817f01b8f92e00cb19e2d604473a83d3/18w30a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-07-25T14:29:31+00:00"}, {"id": "1.13", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c24c2fd37c8ca2e1c18721e2c77caf4d24c87f92/1.13.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-18T15:11:46+00:00"}, {"id": "1.13-pre10", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0d4e1471e49b9657226ffb8684ed6da72bb5068e/1.13-pre10.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-17T14:48:06+00:00"}, {"id": "1.13-pre9", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/43f426cd0895c936110629532c6db46717b2d827/1.13-pre9.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-16T14:17:42+00:00"}, {"id": "1.13-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28369586c81d7db81d6aea81a6464d2bb1765da8/1.13-pre8.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-13T11:45:00+00:00"}, {"id": "1.13-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/44314cf050787819e3c4b440f736a8c5e18ff862/1.13-pre7.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-10T14:21:42+00:00"}, {"id": "1.13-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e5288f29d1cd7b894ed99610828e713c3ba65ac/1.13-pre6.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-04T12:36:00+00:00"}, {"id": "1.13-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f0500efb357283322169d38fd52d24e195d56e05/1.13-pre5.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-28T13:58:53+00:00"}, {"id": "1.13-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5722f90decabdc54cf498d5c2e27e3a094c14018/1.13-pre4.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-26T13:00:55+00:00"}, {"id": "1.13-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/26564723c707a7eadfc07db2962295934c846296/1.13-pre3.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-21T12:57:11+00:00"}, {"id": "1.13-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/657c4cf0ac64074dbc4d97de063275aba31c9bc0/1.13-pre2.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-15T09:20:00+00:00"}, {"id": "1.13-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28db6a1653a70fc1ac1b352e63f542d21397f59d/1.13-pre1.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-04T15:17:34+00:00"}, {"id": "18w22c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b16aeae7fd19224ec48c0e0937321faae2d241ff/18w22c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-31T13:53:15+00:00"}, {"id": "18w22b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e22c333dbaff27f1dfb068aee0a343d7bc3544c/18w22b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-30T13:48:58+00:00"}, {"id": "18w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/587dd0b2f3ac3ffd96b2a3451434d1b23b351066/18w22a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-29T13:23:55+00:00"}, {"id": "18w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aaae28bb5baa12bf5c7ca8c7f3cc8c558a39c038/18w21b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-25T10:09:09+00:00"}, {"id": "18w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92a0cd0254365df7df5e7ad7974ad15285020b32/18w21a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-23T13:11:49+00:00"}, {"id": "18w20c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a9d4d7cd84c112e644f134cc0cbeb0b2efe1d9e5/18w20c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-17T14:06:56+00:00"}, {"id": "18w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/566f11647d85194f292d2300fa550631bf75510a/18w20b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-16T14:35:35+00:00"}, {"id": "18w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a287a82f4f84e9529f8d387f3f23c680d262cf6a/18w20a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-15T14:02:25+00:00"}, {"id": "18w19b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/48a0d019a8ce73d2e492f029e64c9e2791b49339/18w19b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-09T10:00:51+00:00"}, {"id": "18w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/56cac74df46a43a6385708beafeed1df79590eb2/18w19a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-08T13:05:19+00:00"}, {"id": "18w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5fcd79de4734a0b058aab67607e44b1a09464290/18w16a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-19T14:46:35+00:00"}, {"id": "18w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c9fe2e1e80b8a5078af2c30cd6b764ca508beaa0/18w15a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-11T14:54:22+00:00"}, {"id": "18w14b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b4dc5007c1306f5823cfcefd4dbb1e944c8439e/18w14b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-05T14:44:02+00:00"}, {"id": "18w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c976a8bb4510edcdcaafca651aae6b49df731bc9/18w14a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-04T14:36:14+00:00"}, {"id": "18w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07fefcabe464b19876597340187732ffd59be5f/18w11a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-13T15:10:59+00:00"}, {"id": "18w10d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/282418aaec344de75724caaf9b2def18e892b213/18w10d.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-09T15:19:12+00:00"}, {"id": "18w10c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ab5cfc50c9e95c44d744a9501808621278aec8df/18w10c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-08T15:29:23+00:00"}, {"id": "18w10b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/316ed74ddf2fa0ae65adb2a170ed5aacdada4d51/18w10b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-07T15:56:01+00:00"}, {"id": "18w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fac132e97632d4beff518e7f3f8224c07f9239de/18w10a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-06T15:54:24+00:00"}, {"id": "18w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fecf14145dffb1c28922b3c16f14e2972779b1e8/18w09a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-01T14:15:10+00:00"}, {"id": "18w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3563f3093515369cb24ba5c2d1db610a62e88379/18w08b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-22T15:44:49+00:00"}, {"id": "18w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc7c9d4df688697de0b2f13dc46749e55cbd00ef/18w08a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-21T14:59:00+00:00"}, {"id": "18w07c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c286a5129959684ce6c416f9a150560d6db263af/18w07c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-16T13:23:32+00:00"}, {"id": "18w07b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dea62b145246671ae46ed157e6ef2cd2de485a1e/18w07b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-15T14:28:42+00:00"}, {"id": "18w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/211e0152bce6081564fc9c40603463c04f89d835/18w07a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-14T17:34:13+00:00"}, {"id": "18w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a19117df869fb45cdd7a3692a3a01aab3979253f/18w06a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-09T12:09:55+00:00"}, {"id": "18w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a33a7a4c76821853a7a578920d7d784b91e9581d/18w05a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-31T13:32:09+00:00"}, {"id": "18w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3321f5a7180f93f885b2546368a88a928e11a70a/18w03b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-17T15:09:14+00:00"}, {"id": "18w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a5e5d97e17af55625c66fa993b105fb774c2d967/18w03a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-17T14:25:24+00:00"}, {"id": "18w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b9bdc1df5d704f0de0a1f2c6b8a721618371213/18w02a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-10T11:54:55+00:00"}, {"id": "18w01a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/58589469cc95d98a7cb18823f9dfdd7f14c9d023/18w01a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2018-01-03T13:29:30+00:00"}, {"id": "17w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/63a9166163a505dfb457a236e3e5d0f2ae983c2f/17w50a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-11T15:28:08+00:00"}, {"id": "17w49b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f0a11dbf1fd65a650310359ccd9c3c36f481688/17w49b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-07T15:29:54+00:00"}, {"id": "17w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9fba986bf446a39962189fb76b4236ea81e2f5f8/17w49a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-06T14:24:30+00:00"}, {"id": "17w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3b07a3dbdf52535bf05c377cbeb4e4308c6dfd42/17w48a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-27T15:36:33+00:00"}, {"id": "17w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/687c352e333feb8e36ac38e1a3cad8aa1a45affc/17w47b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-23T15:30:12+00:00"}, {"id": "17w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4f2089e0b8a7c209e811fe2ff86c4f9ab5b7bceb/17w47a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-22T12:40:05+00:00"}, {"id": "17w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a073800fa0f758a0570696446cd16df88ffc65f6/17w46a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-15T15:21:55+00:00"}, {"id": "17w45b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ad4e836a7bc594aebc70fae5cfda50b2ca410abd/17w45b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-10T10:07:02+00:00"}, {"id": "17w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b9fbd5f68cb9e4d0326d20afeb248595e4a278b8/17w45a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-08T15:48:00+00:00"}, {"id": "17w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6ceca710ad234e4db4c75c8fb9418878f2a8abf7/17w43b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-10-26T13:36:22+00:00"}, {"id": "17w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/50714e6fa84ca0bd804d3fa2f8419bbc08298e76/17w43a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-10-25T14:43:50+00:00"}, {"id": "1.12.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/832d95b9f40699d4961394dcf6cf549e65f15dc5/1.12.2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-18T08:39:46+00:00"}, {"id": "1.12.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1eff7a3a362a1005f202da0d3b7112b00c6259e7/1.12.2-pre2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-15T08:21:17+00:00"}, {"id": "1.12.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/360cab493afe35971fca74d75fbd6b43c41aa797/1.12.2-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-13T13:33:31+00:00"}, {"id": "1.12.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5b3e7d137ea360e1d418f0cf68de160acf93fbff/1.12.1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-03T12:40:39+00:00"}, {"id": "1.12.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/36781397c4c05b1ee74276afd9247f9dc33ce692/1.12.1-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-02T10:53:55+00:00"}, {"id": "17w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d500ab4e0838c53f4f7ffc5300521df0be9b9853/17w31a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-01T09:41:23+00:00"}, {"id": "1.12", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/da76e0a25ffccf2765f9e86ce61c063e44b2183b/1.12.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-06-02T13:50:27+00:00"}, {"id": "1.12-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92c171fe6fcf3c16ba95f03307618bcac5e3d947/1.12-pre7.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-31T10:56:41+00:00"}, {"id": "1.12-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b1ba9c1c184e57e1bb970cdf4caa35ece8fb4eac/1.12-pre6.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-29T11:45:12+00:00"}, {"id": "1.12-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5dab6422cd2471a7a1b26435c912679cf66c58a/1.12-pre5.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-19T07:43:28+00:00"}, {"id": "1.12-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e05acd26ca220bb6399f396c0be0893bc74808d/1.12-pre4.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-18T12:28:16+00:00"}, {"id": "1.12-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/47d8cbd470539006d9825de3a890f07e342e4168/1.12-pre3.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-17T14:09:18+00:00"}, {"id": "1.12-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5d014cb12b9aecd84a8d08a7f70bdac55ded1f26/1.12-pre2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-11T12:11:12+00:00"}, {"id": "1.12-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/80d68dc92cdf2557aada495061e93c2ce4f5ca08/1.12-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-10T11:37:17+00:00"}, {"id": "17w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/69a0095dd897d6ef87fd449328215d4f3d71c78d/17w18b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-04T13:40:22+00:00"}, {"id": "17w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/659b3c3b8578d45d265b58a0f1e428c044183ab2/17w18a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-03T14:50:23+00:00"}, {"id": "17w17b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8cd9ea793f3ee4608edf4fac8efad1b68fbceb65/17w17b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-27T13:24:23+00:00"}, {"id": "17w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9599f29c91fc8f57a77f7a79f4676a09e2ca1fe4/17w17a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-26T13:48:23+00:00"}, {"id": "17w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/38e2d76bea9091f1ed89e9f9c5b4630fcec103d9/17w16b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-21T12:02:59+00:00"}, {"id": "17w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b0369bcb956a4853bcc094ffe0020964061a1379/17w16a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-20T13:58:35+00:00"}, {"id": "17w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/84285c1ad87efc7f59ef75ca4e35ddf57c7193ae/17w15a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-12T09:30:50+00:00"}, {"id": "17w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d56c3a0ac83f263ab173de90dd6f044523a5274/17w14a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-05T13:58:01+00:00"}, {"id": "17w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b06914e45949d4d0167e339daea5217dc2f1f3c4/17w13b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-03-31T11:06:35+00:00"}, {"id": "17w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5d31a532de28fd250af810ed468a6bd70f3de54/17w13a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-03-30T09:32:19+00:00"}, {"id": "17w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a2a4b51368580cf7abc22d99d360eab2d4f2fec4/17w06a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2017-02-08T13:16:29+00:00"}, {"id": "1.11.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fa3f6d94a9fad648ff97d18fd710997261a421e8/1.11.2.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-21T09:29:12+00:00"}, {"id": "1.11.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b244f9fc1721a2ac90b6e12220f5e40246d2c84d/1.11.1.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-20T14:05:34+00:00"}, {"id": "16w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d4db7d96831cec8c3ad090110dfffae8f6f52aec/16w50a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-15T14:38:52+00:00"}, {"id": "1.11", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/935062464617c9904d20045065515cfd3f1b76d2/1.11.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-14T14:34:40+00:00"}, {"id": "1.11-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7bdd264a5a18799413f665a808de94451af68cb7/1.11-pre1.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-08T13:42:50+00:00"}, {"id": "16w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a75c5e9b85de3c7f89e1acbe02702dd4515df5eb/16w44a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-03T14:17:11+00:00"}, {"id": "16w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ecdc354d9d658e08c5371a7ce961e4aa35849913/16w43a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-27T09:00:51+00:00"}, {"id": "16w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a133f828ccd3261131132a504729e3106f17f071/16w42a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-19T11:17:47+00:00"}, {"id": "16w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/802bb9d6882c23e6f47e844c09d97914f1e90491/16w41a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-13T14:28:35+00:00"}, {"id": "16w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5c9e009d6875b2b54c231fb81cea4670b7950d5/16w40a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-06T13:57:59+00:00"}, {"id": "16w39c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/636990dd6311f6cadddf50c1e4c0a51f8fcdaf2d/16w39c.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-30T14:11:48+00:00"}, {"id": "16w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e4aac42badba700c6b8364ee5ebdc6a3b09073ca/16w39b.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-29T14:39:39+00:00"}, {"id": "16w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a550f22fab3e847433aa3289c6bedbca49057527/16w39a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-28T13:32:06+00:00"}, {"id": "16w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/687018ed85a2784dc63695af097daa280c9a8093/16w38a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-20T12:40:49+00:00"}, {"id": "16w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b49e747382603492f3ca5617a661f39c0c4e4e77/16w36a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-08T14:55:10+00:00"}, {"id": "16w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1ea0cec35ba30ccf2359303a8fbfd643179f0bcf/16w35a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-01T13:13:38+00:00"}, {"id": "16w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9fde68c65264789e91e61ce3d5db783fd537d2c/16w33a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-08-17T12:48:57+00:00"}, {"id": "16w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5e6026e390a7fde3928682740425d49a44d7786/16w32b.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-08-11T14:34:29+00:00"}, {"id": "16w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/66d012257108f502883cee77b2ecd7cc40aa6ebc/16w32a.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-08-10T12:30:10+00:00"}, {"id": "1.10.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/819460dcabf1a2e41b0cf65d342b18ad8dc12281/1.10.2.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-23T09:17:32+00:00"}, {"id": "1.10.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9c23be6c5a48ab7dc7698586b5d7177fff4b441a/1.10.1.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-22T10:13:22+00:00"}, {"id": "1.10", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/a827abf9c022a08ed9c4c7807a8c1b7f2f05deca/1.10.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-08T13:06:18+00:00"}, {"id": "1.10-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/16ae6b8daf0522d443a64b79b04fae94077027f0/1.10-pre2.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-07T14:56:34+00:00"}, {"id": "1.10-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0ac1b4475692d7e7d457bf16ad6dfac040e9f265/1.10-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-06-02T14:45:16+00:00"}, {"id": "16w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49b8423070619688f106e5fa6f4fd9176fc54a93/16w21b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-26T12:47:22+00:00"}, {"id": "16w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/325467ff1dae5a0ef55427a0a7a81c9c7e65ceea/16w21a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-25T13:12:09+00:00"}, {"id": "16w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9286a8e316080ccf271051a014abc7d886469979/16w20a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-18T12:45:14+00:00"}, {"id": "1.9.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b1a314ce2b67b3639bd6407ddcd549ce236de6f6/1.9.4.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-10T10:17:16+00:00"}, {"id": "1.9.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4d37195227760207d397224c509ded4b0c68ea37/1.9.3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-10T08:33:35+00:00"}, {"id": "1.9.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bd10c446533e8059a6bb0018525e1bce31572bb9/1.9.3-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-03T09:28:11+00:00"}, {"id": "1.9.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e179d52f490ab24205b495cb6554f172077db374/1.9.3-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-27T13:33:20+00:00"}, {"id": "1.9.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/75c4b0e87d82f8972f9513797915ab8624c60177/1.9.3-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-21T12:41:42+00:00"}, {"id": "16w15b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0d4cf718d11fc50923c10d331be462c11836beb7/16w15b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-13T13:56:41+00:00"}, {"id": "16w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/13ae720e4e324deb0f7a7dbbdfb37c330d3adcf2/16w15a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-11T14:38:28+00:00"}, {"id": "16w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c748934ad99af11076a95658af606686bdcbce7d/16w14a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-07T12:47:51+00:00"}, {"id": "1.RV-Pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/23761c1cc8b5c7c72f6604e1e7322a056a6af2f8/1.RV-Pre1.json", "time": "2023-06-07T12:36:15+00:00", "releaseTime": "2016-03-31T16:18:53+00:00"}, {"id": "1.9.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9623ca73a57c6d183a28513c894c2337cfe65995/1.9.2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-30T15:23:55+00:00"}, {"id": "1.9.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fdca0cf4bdab9959fce30413202a00a1bce35be5/1.9.1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-30T13:43:07+00:00"}, {"id": "1.9.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2fa68c071c9cc440e792d70f3b2c2e02e016d657/1.9.1-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-11T09:20:36+00:00"}, {"id": "1.9.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8da8881815e3d53da86adbdc051f836d0c4e2b93/1.9.1-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-10T15:06:03+00:00"}, {"id": "1.9.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e7ecc95790b3bac41c4c59e9c7186c8b35e3bb3/1.9.1-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-09T16:27:29+00:00"}, {"id": "1.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9178828493e41a24452841039710f05728c466d6/1.9.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-29T13:49:54+00:00"}, {"id": "1.9-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/47874af37fe9a921ed0386321445be1dd5754976/1.9-pre4.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-26T15:21:11+00:00"}, {"id": "1.9-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b34824eb8099df04af6542722d571ab20381b416/1.9-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-24T15:52:36+00:00"}, {"id": "1.9-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/99775b58e157766cb7c4058b244a1a2b357b0889/1.9-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-18T17:41:00+00:00"}, {"id": "1.9-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/06ae803d5a838a287548f6414b8ede0ebcefe64b/1.9-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-17T15:23:19+00:00"}, {"id": "16w07b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7abe006dec5beaffac1eb5fcddf86731f6eb97d/16w07b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-16T15:22:39+00:00"}, {"id": "16w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73a10d7e61011af19d4c00565bc4faeaae693c7b/16w07a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-15T15:48:46+00:00"}, {"id": "16w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/86dfa5200058cdb6f96cd2648ec86ddd04bbaf41/16w06a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-10T15:06:41+00:00"}, {"id": "16w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f89c22833e743a144e56aaed3e238c142148d9b2/16w05b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-04T15:28:02+00:00"}, {"id": "16w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/848849c124e368f87bca8a990cbdc9043f678366/16w05a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-03T15:48:38+00:00"}, {"id": "16w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec6cfa675974817435326b87987a512c5af7fbdf/16w04a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-28T15:37:24+00:00"}, {"id": "16w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d254f6fc2e3abb57e016feb6734bfa6ff38802eb/16w03a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-20T14:29:24+00:00"}, {"id": "16w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1ba834734412a1d7532e85844a32ec2ba18c1580/16w02a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-13T15:15:16+00:00"}, {"id": "15w51b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/40b2a92fcabe632c1239c615188f802a36b3854d/15w51b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-17T15:30:41+00:00"}, {"id": "15w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a120a6cce86982907628a84aca21cfc6b9064463/15w51a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-17T14:02:37+00:00"}, {"id": "15w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8356a6a93d89e3cc95328b4ee6bbd0697e0de200/15w50a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-09T15:35:57+00:00"}, {"id": "15w49b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8472901afe69ddbe599112d9fc656d3adcd1d5c/15w49b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-03T15:23:22+00:00"}, {"id": "1.8.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/d546f1707a3f2b7d034eece5ea2e311eda875787/1.8.9.json", "time": "2021-12-15T15:44:12+00:00", "releaseTime": "2015-12-03T09:24:39+00:00"}, {"id": "15w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4b2fbb35b426fbd63932801bd5f198229dfd0f62/15w49a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-02T15:09:37+00:00"}, {"id": "15w47c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e61f29ace59ae1d4d1cb1473b673b225115dc8a/15w47c.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-20T12:46:56+00:00"}, {"id": "15w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dd2a6ff3fd726a25ea42b020764a0f1c4e935849/15w47b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-19T14:48:03+00:00"}, {"id": "15w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3bab1680f0ec6330a832457f466654c03d799a0e/15w47a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-18T15:53:41+00:00"}, {"id": "15w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b40019e05283d502aab6bcf40fa498e333cb08c/15w46a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-12T12:11:47+00:00"}, {"id": "15w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c581934b794e798ce74736fd3e802128a44aa698/15w45a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-05T13:04:07+00:00"}, {"id": "15w44b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/17c7995e26759d671cb4ba41485b7ddf05bc2aba/15w44b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-30T11:23:17+00:00"}, {"id": "15w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dfce16ddf5118c95bb981ae7d84448ad3a60fc73/15w44a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-28T15:09:36+00:00"}, {"id": "15w43c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9a348e6e81aadc6fb563f1586149424af39d5268/15w43c.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-23T15:35:55+00:00"}, {"id": "15w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2a40420c0409f6f8fc24efe2c904e03715b22623/15w43b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-22T14:11:58+00:00"}, {"id": "15w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4aaabcbd0079e99840294002ebed569801729483/15w43a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-21T15:28:52+00:00"}, {"id": "15w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7b18842c1dbbe945d991851ffaff49ecd7efbb91/15w42a.json", "time": "2021-12-15T15:45:57+00:00", "releaseTime": "2015-10-14T13:25:14+00:00"}, {"id": "15w41b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/27ab9716cf332d457be085a808eb170fe1a1ff2c/15w41b.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-10-07T14:07:26+00:00"}, {"id": "15w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/38026b4c0301e3441d8e0d5b367392d3212dc51d/15w41a.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-10-07T13:19:53+00:00"}, {"id": "15w40b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a00ee3d8eb0c1cb38d928f5efb4a473768fa5286/15w40b.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-09-30T14:13:54+00:00"}, {"id": "15w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5c9662f1674f7f0e55e82a77109ad88a6bc9df7/15w40a.json", "time": "2021-12-15T15:45:55+00:00", "releaseTime": "2015-09-30T13:13:54+00:00"}, {"id": "15w39c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/134e9d87a2c86e82d98bc7f8ba5965b7fd6634c1/15w39c.json", "time": "2021-12-15T15:45:55+00:00", "releaseTime": "2015-09-23T13:13:54+00:00"}, {"id": "15w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/909aa3af2988edc58b1e9c66f906a883d9a34815/15w39b.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-21T15:09:52+00:00"}, {"id": "15w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7f914aa1098b8b35e20e9c021b57378d0a8fcc6c/15w39a.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-21T13:16:32+00:00"}, {"id": "15w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/222a234de865b9147cad4e3b2545d8af93c35065/15w38b.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-17T14:22:31+00:00"}, {"id": "15w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b4dcb4c07599a5e5571d9d71570641086e821e4/15w38a.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-16T14:22:31+00:00"}, {"id": "15w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9459c8c56ba4577b69cc12a9034769f0d20fb3dc/15w37a.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-10T14:22:31+00:00"}, {"id": "15w36d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49a6f0d3a233d103b5fdeb6aefd7a6b0208b5ce9/15w36d.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-04T14:22:31+00:00"}, {"id": "15w36c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b1a04bae902de441013791777aa0461d446bd2c7/15w36c.json", "time": "2021-12-15T15:45:52+00:00", "releaseTime": "2015-09-02T16:07:22+00:00"}, {"id": "15w36b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2268159e9ce438054660ac86d55db3ddfed1e20b/15w36b.json", "time": "2021-12-15T15:45:52+00:00", "releaseTime": "2015-09-02T15:36:25+00:00"}, {"id": "15w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c185b19d54c00e43f85c610858909c40f9163708/15w36a.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-09-02T14:46:40+00:00"}, {"id": "15w35e", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1fade4fe9d2587106ac3fa14775f9126d3198103/15w35e.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-08-28T18:14:02+00:00"}, {"id": "15w35d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f7eeb1ed37ec5c38cd8a04ba1fe90a50a1b24752/15w35d.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-08-28T16:25:35+00:00"}, {"id": "15w35c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/362bda12d03da60b8481c79f4779bba7a2602c89/15w35c.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-28T11:21:00+00:00"}, {"id": "15w35b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fda82bd0b305eba9607742b9314a41a54f0a9952/15w35b.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-24T15:39:18+00:00"}, {"id": "15w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/801ae2c7be9b3e558a7aef6c766bddb74d4be66a/15w35a.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-24T14:19:31+00:00"}, {"id": "15w34d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3c0d347369147a3951163679127a5bf8e78be5a2/15w34d.json", "time": "2021-12-15T15:45:49+00:00", "releaseTime": "2015-08-21T15:27:55+00:00"}, {"id": "15w34c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/44d6774de6881154fd5f9ac6154dee5f202eb121/15w34c.json", "time": "2021-12-15T15:45:49+00:00", "releaseTime": "2015-08-21T12:45:20+00:00"}, {"id": "15w34b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3bec850cf623d63b26caf462b0be177bc9954a0a/15w34b.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-20T14:00:03+00:00"}, {"id": "15w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b8fdc5838196c33646a68610ed7586678a53b085/15w34a.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-19T12:56:01+00:00"}, {"id": "15w33c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c602ac43b9f2c23b4c39999a6368bbccd31852ca/15w33c.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-14T13:10:46+00:00"}, {"id": "15w33b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c108562e1ee548ba05439441e97fdcb0b01d1194/15w33b.json", "time": "2021-12-15T15:45:47+00:00", "releaseTime": "2015-08-12T15:29:11+00:00"}, {"id": "15w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e5b7e666fd697aef925f539d3983d03ed5d4457e/15w33a.json", "time": "2021-12-15T15:45:47+00:00", "releaseTime": "2015-08-12T14:05:07+00:00"}, {"id": "15w32c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2bf1e36bc4099bba503063ec507b7600ca088e4c/15w32c.json", "time": "2021-12-15T15:45:46+00:00", "releaseTime": "2015-08-07T14:08:17+00:00"}, {"id": "15w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59db82d67a0a1c6b6a31d22cd050ff6c43f1611b/15w32b.json", "time": "2021-12-15T15:45:46+00:00", "releaseTime": "2015-08-06T13:51:47+00:00"}, {"id": "15w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4e80b2295bdb531e64326c4d3fbf93e8d330c5e7/15w32a.json", "time": "2021-12-15T15:45:45+00:00", "releaseTime": "2015-08-05T12:22:42+00:00"}, {"id": "15w31c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1345a9c6d2442415e5980c12fd7bd838072dbd90/15w31c.json", "time": "2021-12-15T15:45:44+00:00", "releaseTime": "2015-07-31T13:45:08+00:00"}, {"id": "15w31b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c9c8d4b706ebb7a057bb91ac69d84ea060b8d174/15w31b.json", "time": "2021-12-15T15:45:44+00:00", "releaseTime": "2015-07-30T13:38:32+00:00"}, {"id": "15w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c9ad2064a55148bef3da7d98dde8d9ff50596ea/15w31a.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2015-07-29T13:24:33+00:00"}, {"id": "1.8.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/690172f1227e1c1d2fa8fceadd0f578f7851a69e/1.8.8.json", "time": "2021-12-15T15:44:12+00:00", "releaseTime": "2015-07-27T10:31:28+00:00"}, {"id": "1.8.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7152f102903cd3ce7514d84c8ac98efecac30839/1.8.7.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-06-05T10:10:44+00:00"}, {"id": "1.8.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/acccbb056a3e8f3086c4614974fb3a894317853a/1.8.6.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-05-25T10:31:19+00:00"}, {"id": "1.8.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/16da5f5be7478f3602c25182a90f2057ba2f60d8/1.8.5.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-05-22T11:15:28+00:00"}, {"id": "1.8.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/043b84efde9fc25d849e979329c03101ac9b7795/1.8.4.json", "time": "2021-12-15T15:44:10+00:00", "releaseTime": "2015-04-17T11:37:50+00:00"}, {"id": "15w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9349d236c0f4b8760f75621b3eaad538055c759/15w14a.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2015-04-01T07:08:00+00:00"}, {"id": "1.8.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/413ad8fdcf8f29f4f1c2b4425aa0dade00f75dd4/1.8.3.json", "time": "2021-12-15T15:44:10+00:00", "releaseTime": "2015-02-20T14:00:09+00:00"}, {"id": "1.8.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/1e35829856a71261f5a7b2b3a83012c7434b2203/1.8.2.json", "time": "2021-12-15T15:44:09+00:00", "releaseTime": "2015-02-19T15:47:29+00:00"}, {"id": "1.8.2-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07a07da8ffe68a0929710c72346073a02a94933/1.8.2-pre7.json", "time": "2021-12-15T15:45:10+00:00", "releaseTime": "2015-02-16T13:01:35+00:00"}, {"id": "1.8.2-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/07ae1d9b67d36399e239a2ff46d43a1f96ef141a/1.8.2-pre6.json", "time": "2021-12-15T15:45:10+00:00", "releaseTime": "2015-01-30T11:58:24+00:00"}, {"id": "1.8.2-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08e7827173655705e938233cf148f955b4f67901/1.8.2-pre5.json", "time": "2021-12-15T15:45:09+00:00", "releaseTime": "2015-01-26T15:03:24+00:00"}, {"id": "1.8.2-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/db4c583ec25447f7418fc8e458798905a1282b88/1.8.2-pre4.json", "time": "2021-12-15T15:45:09+00:00", "releaseTime": "2015-01-16T14:19:59+00:00"}, {"id": "1.8.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d371e2f8c3b04b44c76ae908a1e6f800895aa80/1.8.2-pre3.json", "time": "2021-12-15T15:45:08+00:00", "releaseTime": "2015-01-15T16:44:33+00:00"}, {"id": "1.8.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/50c6a27cbbd2df6adff74aaea9953a00c6ce38e3/1.8.2-pre2.json", "time": "2021-12-15T15:45:08+00:00", "releaseTime": "2015-01-15T15:07:31+00:00"}, {"id": "1.8.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79c984156100e076c37316d6d6377ced3daaf379/1.8.2-pre1.json", "time": "2021-12-15T15:45:07+00:00", "releaseTime": "2014-12-18T11:29:41+00:00"}, {"id": "1.8.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/62f9f77f67fd7d6c92cfae57cecd445be14ccd4e/1.8.1.json", "time": "2021-12-15T15:44:09+00:00", "releaseTime": "2014-11-24T14:13:31+00:00"}, {"id": "1.8.1-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4460bbf278fef1312f03c1483599c31149fe85a7/1.8.1-pre5.json", "time": "2021-12-15T15:45:07+00:00", "releaseTime": "2014-11-19T14:30:48+00:00"}, {"id": "1.8.1-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9024ad2831e3fc4450977aafe7bb3d07ff0d542/1.8.1-pre4.json", "time": "2021-12-15T15:45:06+00:00", "releaseTime": "2014-11-06T14:10:50+00:00"}, {"id": "1.8.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c2f5fb57bf63012594b3dc34a80a8d888ec017ac/1.8.1-pre3.json", "time": "2021-12-15T15:45:06+00:00", "releaseTime": "2014-10-23T12:59:42+00:00"}, {"id": "1.8.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e77dedf93135552e1aaaebcec4c8d154d4dea04/1.8.1-pre2.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-10-16T14:19:27+00:00"}, {"id": "1.8.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f470d54d32f9e1d1a02e4e84e33b2407325ab62d/1.8.1-pre1.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-10-15T13:25:11+00:00"}, {"id": "1.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9eb165eef46294062d8698c8a78e8ac914949e7a/1.8.json", "time": "2021-12-15T15:44:13+00:00", "releaseTime": "2014-09-02T08:24:35+00:00"}, {"id": "1.8-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7fd3abc53ee1f813f5b574c8dc758fd694b6abd3/1.8-pre3.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-08-28T09:40:54+00:00"}, {"id": "1.8-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2c6bf8e3d17565117bbb5e188544439518d3ad95/1.8-pre2.json", "time": "2021-12-15T15:45:04+00:00", "releaseTime": "2014-08-25T14:52:18+00:00"}, {"id": "1.8-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/00ddc59925abc10e08047c94657e3365b1e031d6/1.8-pre1.json", "time": "2021-12-15T15:45:04+00:00", "releaseTime": "2014-08-21T13:56:26+00:00"}, {"id": "14w34d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e314c5316fc189a9883f5a786a6b9daffcff8e84/14w34d.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2014-08-20T12:46:59+00:00"}, {"id": "14w34c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a82b66557f41c05f41477481e39be5d5ceec3c62/14w34c.json", "time": "2021-12-15T15:45:42+00:00", "releaseTime": "2014-08-19T15:31:24+00:00"}, {"id": "14w34b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f24d3b4a363411fec20a36c2bd92a62b628be003/14w34b.json", "time": "2021-12-15T15:45:42+00:00", "releaseTime": "2014-08-18T15:14:28+00:00"}, {"id": "14w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc020c20f2d7a79dee3f601317a8a7cb191c0538/14w34a.json", "time": "2021-12-15T15:45:41+00:00", "releaseTime": "2014-08-18T14:14:11+00:00"}, {"id": "14w33c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/de314d5c6f011057f764e546a212731d40736c1f/14w33c.json", "time": "2021-12-15T15:45:41+00:00", "releaseTime": "2014-08-15T18:00:26+00:00"}, {"id": "14w33b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dec4943bf73d83402d455243f83c8c550e36f7b5/14w33b.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-15T16:23:51+00:00"}, {"id": "14w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a1a938359171774c96e06f54bc0c12352a9d7992/14w33a.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-13T15:08:14+00:00"}, {"id": "14w32d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/414e33e7d03d873966c199d959426da08aa5aebc/14w32d.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-08T15:13:41+00:00"}, {"id": "14w32c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3dfa2c82cd06c89735ac0c9b05151b4994efab19/14w32c.json", "time": "2021-12-15T15:45:39+00:00", "releaseTime": "2014-08-08T14:11:20+00:00"}, {"id": "14w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6230265cc1f324689cb5fbb7df21235ca0013e70/14w32b.json", "time": "2021-12-15T15:45:39+00:00", "releaseTime": "2014-08-07T14:45:17+00:00"}, {"id": "14w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3af16f96e7800a8f0c31500a873b008c00036c84/14w32a.json", "time": "2021-12-15T15:45:38+00:00", "releaseTime": "2014-08-06T14:01:16+00:00"}, {"id": "14w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1243fe2c047064613e42a2c0e7ce0018fdf94035/14w31a.json", "time": "2021-12-15T15:45:38+00:00", "releaseTime": "2014-07-30T15:38:05+00:00"}, {"id": "14w30c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6327714a7712f723bb74492e2f5fcbb92b8b12a9/14w30c.json", "time": "2021-12-15T15:45:37+00:00", "releaseTime": "2014-07-24T14:39:09+00:00"}, {"id": "14w30b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dddd3cf12b88f179baa286a9bb51f4c3902c3780/14w30b.json", "time": "2021-12-15T15:45:37+00:00", "releaseTime": "2014-07-23T15:03:03+00:00"}, {"id": "14w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f73b4bad130911c1ef16066aeb740574f20f90f7/14w30a.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-23T13:15:42+00:00"}, {"id": "14w29b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/02a4803aa427d29f9db910d22b263686d0135fcc/14w29b.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-16T17:27:40+00:00"}, {"id": "14w29a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5219707e16e90d57fbba55f635b68e4725d72b8f/14w29a.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-16T15:18:17+00:00"}, {"id": "14w28b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c18437b0194fb2af464b5fe0cb67ed0eeafb44e8/14w28b.json", "time": "2021-12-15T15:45:35+00:00", "releaseTime": "2014-07-10T14:28:48+00:00"}, {"id": "14w28a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6d6b755e76453633e464ed09f82b0979a414d8e4/14w28a.json", "time": "2021-12-15T15:45:35+00:00", "releaseTime": "2014-07-09T15:42:36+00:00"}, {"id": "14w27b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08f1ed6374fb9d87e34fe81ab50d19d01e3055dc/14w27b.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-07-02T18:34:56+00:00"}, {"id": "14w27a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c0e594ad64eac1b322e4724b92292daad80951eb/14w27a.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-07-02T16:07:20+00:00"}, {"id": "14w26c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2fe002bebd830ccb5328329ed7efb7e9fb555519/14w26c.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-06-26T15:05:03+00:00"}, {"id": "14w26b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/288aa1d9c5840c8d0f75ee682bc8a0a1564babfb/14w26b.json", "time": "2021-12-15T15:45:33+00:00", "releaseTime": "2014-06-25T15:08:39+00:00"}, {"id": "14w26a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6d41ffb32ced2eaaeed6b0ddd38b5e53f849c25f/14w26a.json", "time": "2021-12-15T15:45:33+00:00", "releaseTime": "2014-06-25T13:59:27+00:00"}, {"id": "14w25b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d8b348b5a412e809748f35f694fe5dc395a83b3a/14w25b.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-06-19T12:29:48+00:00"}, {"id": "14w25a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0091b9fe0f95dc765e187840ff41235638ce22d6/14w25a.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-06-18T15:52:28+00:00"}, {"id": "14w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5791a666929e783ba360e98247ff744b5ac3520/14w21b.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-05-22T15:17:55+00:00"}, {"id": "14w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8c912b97cf684f4339571b27592e85b7ec84a19/14w21a.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-22T14:44:33+00:00"}, {"id": "14w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b4b682e67ff47a689cf3ff0b405eeec5758dfa9a/14w20b.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-15T16:47:21+00:00"}, {"id": "14w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/674e75f032a5473ad91531dfbfa7b8cb42f55f71/14w20a.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-15T14:01:20+00:00"}, {"id": "1.7.10", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/ed5d8789ed29872ea2ef1c348302b0c55e3f3468/1.7.10.json", "time": "2021-12-15T15:44:05+00:00", "releaseTime": "2014-05-14T17:29:23+00:00"}, {"id": "1.7.10-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f2a4a03329bb07d70d4837b6893c435f97deed25/1.7.10-pre4.json", "time": "2021-12-15T15:45:02+00:00", "releaseTime": "2014-05-14T16:29:23+00:00"}, {"id": "1.7.10-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/94578a1fc1db7cb804a9be044008e54367f4905e/1.7.10-pre3.json", "time": "2021-12-15T15:45:01+00:00", "releaseTime": "2014-05-14T15:29:23+00:00"}, {"id": "1.7.10-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e8103cd14fc9a7db0c56f68cbc41a0b26ea9954/1.7.10-pre2.json", "time": "2021-12-15T15:45:01+00:00", "releaseTime": "2014-05-14T14:29:23+00:00"}, {"id": "1.7.10-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a526665974dfa717f79f15529ae294d0a6074fc5/1.7.10-pre1.json", "time": "2021-12-15T15:45:00+00:00", "releaseTime": "2014-05-14T13:29:23+00:00"}, {"id": "14w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ffcc6382a2d12310c42cc1b654ea8d88117cf105/14w19a.json", "time": "2021-12-15T15:45:30+00:00", "releaseTime": "2014-05-08T14:24:19+00:00"}, {"id": "14w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0aa29d5bc6915b347505a194260bd51bc8bf2960/14w18b.json", "time": "2021-12-15T15:45:30+00:00", "releaseTime": "2014-05-02T11:38:17+00:00"}, {"id": "14w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c64cc4d300948e2d8e5fb05e394b69edc680027e/14w18a.json", "time": "2021-12-15T15:45:29+00:00", "releaseTime": "2014-04-30T10:25:35+00:00"}, {"id": "14w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2d857ecd809f15008f4718dc3b11ef5b60548ce4/14w17a.json", "time": "2021-12-15T15:45:29+00:00", "releaseTime": "2014-04-24T15:44:49+00:00"}, {"id": "14w11b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/022ade13058d98289f1625857462994a6ec40110/14w11b.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-04-14T14:36:19+00:00"}, {"id": "1.7.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5579bc9e25a9bb5e3187a2570693a0c6658edce4/1.7.9.json", "time": "2021-12-15T15:44:08+00:00", "releaseTime": "2014-04-14T13:29:23+00:00"}, {"id": "1.7.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/03d8e2e1c192d48ffc406cb7a483861cf26dfe25/1.7.8.json", "time": "2021-12-15T15:44:08+00:00", "releaseTime": "2014-04-09T07:58:16+00:00"}, {"id": "1.7.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/47e228263557da73d0e2be803e5d83e5b246ae75/1.7.7.json", "time": "2021-12-15T15:44:07+00:00", "releaseTime": "2014-04-09T07:52:16+00:00"}, {"id": "1.7.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b6dd3e6496ad415f0c57867dea1f97710d5f184c/1.7.6.json", "time": "2021-12-15T15:44:07+00:00", "releaseTime": "2014-04-09T07:52:06+00:00"}, {"id": "14w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ed3b597f26c1140b31d4c7421054e83398270e19/14w11a.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-03-13T14:02:50+00:00"}, {"id": "1.7.6-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/977e8f92b306b2d798a7b69858f48fbe06dbb302/1.7.6-pre2.json", "time": "2021-12-15T15:45:03+00:00", "releaseTime": "2014-03-08T11:00:01+00:00"}, {"id": "1.7.6-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/39e402b6972475126fa9e8a883915a9ce5d7722a/1.7.6-pre1.json", "time": "2021-12-15T15:45:02+00:00", "releaseTime": "2014-03-08T11:00:00+00:00"}, {"id": "14w10c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/312e632fcac49d7c1dca6a7fa58824eace01d91d/14w10c.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-03-07T13:49:55+00:00"}, {"id": "14w10b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/90e924daa64f7908e69d4c7c4451599d2592f9d3/14w10b.json", "time": "2021-12-15T15:45:27+00:00", "releaseTime": "2014-03-06T16:25:39+00:00"}, {"id": "14w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/643d852decb88d011fab20df4cb14ed100362f0f/14w10a.json", "time": "2021-12-15T15:45:27+00:00", "releaseTime": "2014-03-06T14:23:04+00:00"}, {"id": "14w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c04557fe5dcfe1c2e302265b677549384008c14/14w08a.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-26T17:00:00+00:00"}, {"id": "1.7.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4afb628501a6a206b80a47ab4f29ea6b98caac90/1.7.5.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2014-02-26T09:22:17+00:00"}, {"id": "14w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/23dbadcc03150f2e3447d528f7f546ba8fd62246/14w07a.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-14T11:05:07+00:00"}, {"id": "14w06b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2c381742bc9cadc33fbc0a823b4fb734aad78533/14w06b.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-06T17:30:42+00:00"}, {"id": "14w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a59d77f95afc36421554f9fee3a930d6cca9209d/14w06a.json", "time": "2021-12-15T15:45:25+00:00", "releaseTime": "2014-02-06T14:30:17+00:00"}, {"id": "14w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0b0f0bb2354640bfeeafe8611a8cfb53e9c3edff/14w05b.json", "time": "2021-12-15T15:45:25+00:00", "releaseTime": "2014-01-31T14:05:50+00:00"}, {"id": "14w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9d4eb5a505a84dda9c36ea32f7ebb998a60a97f/14w05a.json", "time": "2021-12-15T15:45:24+00:00", "releaseTime": "2014-01-30T15:32:41+00:00"}, {"id": "14w04b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/62524cf35e56e365a5dff36353fb77a38ff35269/14w04b.json", "time": "2021-12-15T15:45:24+00:00", "releaseTime": "2014-01-24T15:48:46+00:00"}, {"id": "14w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/41307eaf3c2bf6b526986d8bb2fd698099298a2f/14w04a.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-23T15:26:13+00:00"}, {"id": "14w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c3bab6bfb32daed6b30d298818e4b8bb37c4bb2/14w03b.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-16T16:36:19+00:00"}, {"id": "14w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73f7ed186402ac8927ce415507cfa70b6aa5483f/14w03a.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-16T14:45:13+00:00"}, {"id": "14w02c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e7c40fe6754d5912ebc119a53e752c9024130e3f/14w02c.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-10T15:42:36+00:00"}, {"id": "14w02b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/25f758976bfd97d533af7e38680db8983d2cf82d/14w02b.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-09T15:45:55+00:00"}, {"id": "14w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1348f531ae51631ea0ee1e467348440c5f93dcc2/14w02a.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-09T14:44:41+00:00"}, {"id": "1.7.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5db9d89cb6b89573384f324aa585b4c99525b37a/1.7.4.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2013-12-09T12:28:10+00:00"}, {"id": "1.7.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/cd133f90b7e339c50b3cdce64188a51469c6a128/1.7.3.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2013-12-06T13:55:34+00:00"}, {"id": "13w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/82cf56aabfbca3a1f1d13b4404050d9877b5a67e/13w49a.json", "time": "2021-12-15T15:45:21+00:00", "releaseTime": "2013-12-05T14:34:41+00:00"}, {"id": "13w48b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/55543db98b2df3a986c99d8cdc8278a70493eb4a/13w48b.json", "time": "2021-12-15T15:45:21+00:00", "releaseTime": "2013-11-26T18:36:08+00:00"}, {"id": "13w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/329f28adfb5ba0d6d81ceae27209e1eb97c4ef88/13w48a.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-25T16:53:39+00:00"}, {"id": "13w47e", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81b30470c108a201cfb2dfd548dc0a52afa20a0a/13w47e.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-22T15:16:38+00:00"}, {"id": "13w47d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ccf62018b2e8aa9628dab2353ed85a4239368f63/13w47d.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-22T13:51:15+00:00"}, {"id": "13w47c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ca7616ffa259c99e2350f010555eba54e54b4dd0/13w47c.json", "time": "2021-12-15T15:45:19+00:00", "releaseTime": "2013-11-21T17:10:33+00:00"}, {"id": "13w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ac1dc3c3a7d33aa47e97c7b3d419510696f57cde/13w47b.json", "time": "2021-12-15T15:45:19+00:00", "releaseTime": "2013-11-21T16:57:41+00:00"}, {"id": "13w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9bb727f63e3af146df7cbd47a6a3332d31550855/13w47a.json", "time": "2021-12-15T15:45:18+00:00", "releaseTime": "2013-11-21T15:59:58+00:00"}, {"id": "1.7.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c2e8ecbf355760a74c93d7210767fa043d53f27c/1.7.2.json", "time": "2021-12-15T15:44:05+00:00", "releaseTime": "2013-10-25T13:00:00+00:00"}, {"id": "1.7.1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/744a42505862bea0bdd5da55ff06e09536f36d66/1.7.1.json", "time": "2021-12-15T15:45:00+00:00", "releaseTime": "2013-10-23T12:01:07+00:00"}, {"id": "1.7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7a5aa5f3e3fba022efe0752660a5c7cd2dff2d16/1.7.json", "time": "2021-12-15T15:45:03+00:00", "releaseTime": "2013-10-22T15:04:05+00:00"}, {"id": "13w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7c2d81bf137c9e1a84576241767de08909c29fd/13w43a.json", "time": "2021-12-15T15:45:18+00:00", "releaseTime": "2013-10-21T16:34:47+00:00"}, {"id": "13w42b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce863b81986e6acce2983be040d2071711f6403c/13w42b.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-18T16:34:08+00:00"}, {"id": "13w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8cef2eee33892b62b3a28559246c750c3487dd8f/13w42a.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-17T18:33:05+00:00"}, {"id": "13w41b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/015456cd8b5c68d0076536d4e867111cd36b541a/13w41b.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-11T15:09:17+00:00"}, {"id": "13w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/43622c17e011441b8b63b0a27d79887c2f7516aa/13w41a.json", "time": "2021-12-15T15:45:16+00:00", "releaseTime": "2013-10-10T14:21:43+00:00"}, {"id": "13w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b2d2f0b1fd23b08f8d2fb9beff39f173a2d65160/13w39b.json", "time": "2021-12-13T14:56:26+00:00", "releaseTime": "2013-09-27T12:15:58+00:00"}, {"id": "13w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/61b88e8c311ed6a647ebf13d9934c6a1e3a94a75/13w39a.json", "time": "2021-12-13T14:56:26+00:00", "releaseTime": "2013-09-26T15:11:19+00:00"}, {"id": "13w38c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a9e87e0699f19fea280878f5deb744c5d5d3ccb1/13w38c.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-20T15:11:34+00:00"}, {"id": "13w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6f426be1993b140ab5d10459c91eb1f542d58c82/13w38b.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-20T13:45:40+00:00"}, {"id": "13w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e6dc1d9f9c8efeec67af438d5bf61be082f6e8a4/13w38a.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-19T16:34:21+00:00"}, {"id": "1.6.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b71bae449192fbbe1582ff32fb3765edf0b9b0a8/1.6.4.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-09-19T15:52:37+00:00"}, {"id": "13w37b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b8d28154ee056af6af3c8c37815418fe0e9f34f8/13w37b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-13T10:54:41+00:00"}, {"id": "1.6.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/903d6ba1bc87c301d88fa418f8b33446201c7d4e/1.6.3.json", "time": "2019-06-28T07:07:47+00:00", "releaseTime": "2013-09-13T10:54:41+00:00"}, {"id": "13w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f33c613a4bb81ef5f56be03a8f578208ada382a/13w37a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-12T14:23:14+00:00"}, {"id": "13w36b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a538e23057a596fc8c7e04d8a7738d866467f51/13w36b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-06T12:31:58+00:00"}, {"id": "13w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bc915c4dc167dfba92fcc0ae3aa051ae0f9f089b/13w36a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-05T13:05:40+00:00"}, {"id": "1.6.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c0729761bf65dc58138ce508645dba1442fa78b8/1.6.2.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-07-05T13:09:02+00:00"}, {"id": "1.6.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7fd8e0c76f62813eb0465e31bb74b160c01472d6/1.6.1.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-06-28T14:48:41+00:00"}, {"id": "1.6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/20116297638f7c70cd046e25a6ac90fee4cae61a/1.6.json", "time": "2019-06-28T07:07:47+00:00", "releaseTime": "2013-06-25T13:08:56+00:00"}, {"id": "13w26a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b349702aef5e3adaebec30c79338300423943930/13w26a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-24T16:06:06+00:00"}, {"id": "13w25c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/934788bc580ef0a19725ee5bd31f02a0b866e0bf/13w25c.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-20T15:23:37+00:00"}, {"id": "13w25b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b7870ddd0d0b38779479ad782d65ad80e688cf7/13w25b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-18T15:13:27+00:00"}, {"id": "13w25a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/65c0e5fff89b477ac6f8ddb336f0e718d525d311/13w25a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-17T14:08:06+00:00"}, {"id": "13w24b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e1294b52803771cfb06767c4c40dced70475cb25/13w24b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-14T12:19:13+00:00"}, {"id": "13w24a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/74666ab85cc5539f08aec638eabd63a552ed4125/13w24a.json", "time": "2019-06-28T07:08:07+00:00", "releaseTime": "2013-06-13T15:32:23+00:00"}, {"id": "13w23b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f17829f3e412b9b727437ec9f8433bdfc6c7b9a7/13w23b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-06-08T00:32:01+00:00"}, {"id": "13w23a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8234057ec006c5bb62a28ca4f6787323968438e6/13w23a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-06-07T16:04:20+00:00"}, {"id": "13w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/597a15f27cc0913a77ff7e1e9c62c3affc627fe8/13w22a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-30T14:38:40+00:00"}, {"id": "13w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/98f66e115fbab6dcd05f2e5e0a23dd78c0a5e7a3/13w21b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-27T08:50:42+00:00"}, {"id": "13w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aebfb9b82f0712de3e6ef78bc2cafe5dcb742130/13w21a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-23T15:38:28+00:00"}, {"id": "13w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8bb131515d6b483baa76f1b42ea5a1018d11bb22/13w19a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-10T14:48:02+00:00"}, {"id": "13w18c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/93738bf22f33d9ba5e2980bec849b097a5050c8f/13w18c.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-03T09:19:35+00:00"}, {"id": "13w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2cab9aae9eef3558d6abe8ac2708ea19322a1594/13w18b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-02T17:12:25+00:00"}, {"id": "13w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79bef69b5542046e705a57784cc63574748effe2/13w18a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-02T15:45:59+00:00"}, {"id": "13w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d21e61b16b0e446b5062e8ee72c9d0ff3bfbd155/13w17a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-25T15:50:00+00:00"}, {"id": "1.5.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/924a2dcd8bdc31f8e9d36229811c298b3537bbc7/1.5.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-25T15:45:00+00:00"}, {"id": "13w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5f4e1c860d1c79d346f3e4574615ca1fd9da01ed/13w16b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-23T21:51:22+00:00"}, {"id": "13w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c355e2ee0495dfcc8ec9806955c8d2993179b40c/13w16a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-21T12:49:30+00:00"}, {"id": "1.5.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/3c514114d9c2a3ea78f72c4f9fb4eeb56747135a/1.5.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-03-20T10:00:00+00:00"}, {"id": "1.5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bb882e3d97bee9c5b5e486da04b85f977e770150/1.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-03-06T22:00:00+00:00"}, {"id": "1.4.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7aa8e9aeacf4e1076bfd81c096f78de9b883ebe6/1.4.7.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-27T22:00:00+00:00"}, {"id": "1.4.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/d64a902a48a6a618f9a0a82c183be454e7a1f23b/1.4.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-19T22:00:00+00:00"}, {"id": "1.4.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/09832797138da79745ade734da775f44c254066b/1.4.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-19T22:00:00+00:00"}, {"id": "1.4.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/f7de827181036b09444abb6b64c1fcc663b8e98e/1.4.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-13T22:00:00+00:00"}, {"id": "1.4.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3ab416ac64dac1a6123402a8aabd8ef3caeef087/1.4.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-30T22:00:00+00:00"}, {"id": "1.4.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/2fd77aa19aba2860bbf4c1fd9f84f232703dd287/1.4.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-24T22:00:00+00:00"}, {"id": "1.4.1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14c3ba517b5baabdfc61b60eb49d9aa7da012906/1.4.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-22T22:00:00+00:00"}, {"id": "1.4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d979a4671611bf8704c0a2a0cf09964ca25eefd7/1.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-18T22:00:00+00:00"}, {"id": "1.3.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/598eedd6f67db4aefbae6ed119029e3d7373ecf5/1.3.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-08-15T22:00:00+00:00"}, {"id": "1.3.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/637aa8466c4dac462b88682caaf753290f37798f/1.3.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-07-31T22:00:00+00:00"}, {"id": "1.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b384219c6d4879e56b92eea01a0d986e20d55dea/1.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-07-25T22:00:00+00:00"}, {"id": "1.2.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5158765caf1ca14958cb6c45d52c8e09ed9b046c/1.2.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-29T22:00:00+00:00"}, {"id": "1.2.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/69a67fcf11ed1298c6b43a00d64461908a318749/1.2.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-21T22:00:00+00:00"}, {"id": "1.2.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/2f7eaec33e3017a413c677eefa59df2e5919e536/1.2.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-01T22:00:00+00:00"}, {"id": "1.2.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4e2e449ba0b8b5da7055f0decea1a3257b282f17/1.2.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-02-29T22:00:01+00:00"}, {"id": "1.2.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/1a45c035ebb969dbac4e0c39582e974ad7f74a9e/1.2.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-02-29T22:00:00+00:00"}, {"id": "1.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c0cb9368dbdbb1e8dbcb9363a28d8da74cf6fc5e/1.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-01-11T22:00:00+00:00"}, {"id": "1.0", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/75062586b830dd5160f13f1c9130eb365e01f1b9/1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-11-17T22:00:00+00:00"}, {"id": "b1.8.1", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/440e3b845c3991492a3d0c5f0ccfda78ab90d9b6/b1.8.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-09-18T22:00:00+00:00"}, {"id": "b1.8", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e5b20b1a15daa60effefd86da94b118086214e8b/b1.8.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-09-14T22:00:00+00:00"}, {"id": "b1.7.3", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/44f6969326bd45aa00dcd3c4ca3a7c05ebb24c04/b1.7.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-07-07T22:00:00+00:00"}, {"id": "b1.7.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/00f5aff7cbf6ce109ecf2c8e1a5dc1bcbadb5680/b1.7.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-06-30T22:00:00+00:00"}, {"id": "b1.7", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/f3a725f9f27e90f2a2622ad82c182c1a1178572f/b1.7.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-06-29T22:00:00+00:00"}, {"id": "b1.6.6", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/16cb1aa6f7c9c3953fa2f53abd8f57558efd3e71/b1.6.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-30T22:00:00+00:00"}, {"id": "b1.6.5", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/eae37053bb49092ce93d40e762f4c3a573ee2880/b1.6.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-27T22:00:00+00:00"}, {"id": "b1.6.4", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/ac98b5e9e44038f3a311736111c16fc30006e1fd/b1.6.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:04+00:00"}, {"id": "b1.6.3", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/87785f4386cd308defcc876fb6d62bf3681be6bc/b1.6.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:03+00:00"}, {"id": "b1.6.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/23f8e2f1634d1db8875521d8e0d3fb5340623fd2/b1.6.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:02+00:00"}, {"id": "b1.6.1", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/1958ecd7b20c5a2849b4e1e7a9921891e49178da/b1.6.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:01+00:00"}, {"id": "b1.6", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/7442961ad4f23c60787ab2a3c97a5037c40a92f2/b1.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:00+00:00"}, {"id": "b1.5_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/0f0b24408e6ca445e9c4a3ea2a676f71f96f5d35/b1.5_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-19T22:00:00+00:00"}, {"id": "b1.5", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/3fa704bd73444368f04351d6d4add8a3eead9b4e/b1.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-18T22:00:00+00:00"}, {"id": "b1.4_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/d47fcb0e4d9b7169fbb26c0bce56ed2082c3bb1d/b1.4_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-04T22:00:00+00:00"}, {"id": "b1.4", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/2cf34d1caca87b68ee104e348480e38f45eb7621/b1.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-03-30T22:00:00+00:00"}, {"id": "b1.3_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/a0e0a27d8f7d4c23b6441e473a3e44b45a958284/b1.3_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-02-22T22:00:00+00:00"}, {"id": "b1.3b", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/16ffb877701f7b41c6f27fb09def7a8e5d667df1/b1.3b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-02-21T22:00:00+00:00"}, {"id": "b1.2_02", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/5352763f0a944e7940e718fd66aae03bc57dc2ef/b1.2_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-20T22:00:00+00:00"}, {"id": "b1.2_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/0fea71dc8c4199581753d8ecb3ae69039a302340/b1.2_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-13T22:00:00+00:00"}, {"id": "b1.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/67bcdada56d272e4508ecb8e35827ffa4a4c18d1/b1.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-12T22:00:00+00:00"}, {"id": "b1.1_02", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/01042e0ecdd894894ebc6f45300ae306010c154f/b1.1_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-21T22:00:01+00:00"}, {"id": "b1.1_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/1bab185d888a549a3fcb4e528557caa3e7884290/b1.1_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-21T22:00:00+00:00"}, {"id": "b1.0.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e0a317286013bdd8e6de6da5e709422af61597d8/b1.0.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-20T22:00:00+00:00"}, {"id": "b1.0_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/d3eec813918ee87826f7bca65dd1558b33841798/b1.0_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-19T22:00:01+00:00"}, {"id": "b1.0", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e5348beaf3d3c366c522b1c70044f8b7be168b02/b1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-19T22:00:00+00:00"}, {"id": "a1.2.6", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/1c888e4d8aed380db25aeb3835f5918297bb5e3a/a1.2.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-02T22:00:00+00:00"}, {"id": "a1.2.5", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a925f00e3f7f1bde95240152bef4d15f36971394/a1.2.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-30T22:00:00+00:00"}, {"id": "a1.2.4_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/64d6a749cb24ddd8a27546f9555ac7c2853c5943/a1.2.4_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-29T22:00:00+00:00"}, {"id": "a1.2.3_04", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/59c7719b82023e5b71e334a69d3c13137014a2bc/a1.2.3_04.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-25T22:00:00+00:00"}, {"id": "a1.2.3_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b22eadebb4bfb63cdc42e9811da8fd2234eaaa6e/a1.2.3_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-24T22:00:00+00:00"}, {"id": "a1.2.3_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/da7b740e70324be7e189c65f1f834f0a30c0588f/a1.2.3_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-23T22:00:01+00:00"}, {"id": "a1.2.3", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/6c059b7bdb14b29c8d5cca2b250472962fe3b0b1/a1.2.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-23T22:00:00+00:00"}, {"id": "a1.2.2b", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/2aba3e114e0a7190ea3dff1553787d5044e1c420/a1.2.2b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-09T22:00:01+00:00"}, {"id": "a1.2.2a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/03cde2f4856b59adab177ab10673b6d951bfd7c8/a1.2.2a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-09T22:00:00+00:00"}, {"id": "a1.2.1_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/f20e3a7757a92e1d429dcf45fa545cc84a9699da/a1.2.1_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-04T22:00:01+00:00"}, {"id": "a1.2.1", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/05773451d61d92c0e8fa73cdb2e4c0fd23c4e1d4/a1.2.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-04T22:00:00+00:00"}, {"id": "a1.2.0_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/57ff567f186230b303af60241fbce283dad44bb2/a1.2.0_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-03T22:00:00+00:00"}, {"id": "a1.2.0_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/bed2a50ed2f9ce6a920394916ea66ce41b09b166/a1.2.0_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-10-30T22:00:00+00:00"}, {"id": "a1.2.0", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/abc94a77d94b94042d01476ee0c2e4b8c4eb08e1/a1.2.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-10-29T22:00:00+00:00"}, {"id": "a1.1.2_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/8730e3503e352fc03cca8a6c6ee614a17d66d8c6/a1.1.2_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-22T22:00:00+00:00"}, {"id": "a1.1.2", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b515b79ecaba79a0b5a4a5a03bf2b077f6c53334/a1.1.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-19T22:00:00+00:00"}, {"id": "a1.1.0", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/6054271bd0a275ed3030be97b6e9f81977abdf5d/a1.1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-12T22:00:00+00:00"}, {"id": "a1.0.17_04", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/fc2b6231e945558df29b6ed12522758860c511ab/a1.0.17_04.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-22T22:00:00+00:00"}, {"id": "a1.0.17_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a261074f38c555d9770ba7f1a4cae9351af19d73/a1.0.17_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-19T22:00:00+00:00"}, {"id": "a1.0.16", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/205ed38d0d1e135b467702a746e64ed2623b4679/a1.0.16.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-11T22:00:00+00:00"}, {"id": "a1.0.15", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/05a0fdef0a0d62273290eb1c145ad10501941f75/a1.0.15.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-03T22:00:00+00:00"}, {"id": "a1.0.14", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/5af21fa2467997914940beb39279f0d545a48335/a1.0.14.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-29T22:00:00+00:00"}, {"id": "a1.0.11", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b98235f44e6422741df02c781cf0016fce1c4a84/a1.0.11.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-22T22:00:00+00:00"}, {"id": "a1.0.5_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/4adaca651189d96ea9d7aa031038ab7b7d3fd807/a1.0.5_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-12T22:00:00+00:00"}, {"id": "a1.0.4", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/16c818f17af9e8560589f9e3cae57f0931011c25/a1.0.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-08T22:00:00+00:00"}, {"id": "inf-20100618", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/51a5c512af384d3d2a79a3efb93f7d4b9a1c6ec2/inf-20100618.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-06-15T22:00:00+00:00"}, {"id": "c0.30_01c", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/9392d3f635770ac4dfd3f8c9444f319b00b08945/c0.30_01c.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-12-21T22:00:00+00:00"}, {"id": "c0.0.13a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/5ef11c52e02c27f40924ea0c323efee716de568d/c0.0.13a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-30T22:00:00+00:00"}, {"id": "c0.0.13a_03", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/21122dee2365147033ef6214702098cf7b2549bd/c0.0.13a_03.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-21T22:00:00+00:00"}, {"id": "c0.0.11a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/2339fd5639204675b9f18dff6055dae83fc91c7e/c0.0.11a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-16T22:00:00+00:00"}, {"id": "rd-161348", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/f22a3882d124ef4468f6eb50b12836c53286e18a/rd-161348.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-16T11:48:00+00:00"}, {"id": "rd-160052", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/0cac2ceab812568826c6e5aeb4cf980397550479/rd-160052.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-15T22:52:00+00:00"}, {"id": "rd-20090515", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a3165080e2b0bf20519eac5f55ee841f3491e277/rd-20090515.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-14T22:00:00+00:00"}, {"id": "rd-132328", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/4ec49ff663f96e78a5cf0d9538adb9d1358fc485/rd-132328.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-13T21:28:00+00:00"}, {"id": "rd-132211", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/d090f5d3766a28425316473d9ab6c37234d48b02/rd-132211.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-13T20:11:00+00:00"}]} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/resources/log4j2.component.properties b/serverpackcreator-api/src/jvmMain/resources/log4j2.component.properties deleted file mode 100644 index 13bdbb813..000000000 --- a/serverpackcreator-api/src/jvmMain/resources/log4j2.component.properties +++ /dev/null @@ -1,3 +0,0 @@ -log4j.configurationFile=log4j2.xml -log4j.formatMsgNoLookups=true -log4j.configurationFactory=de.griefed.serverpackcreator.api.LoggingConfig \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt b/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt deleted file mode 100644 index b849ca055..000000000 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt +++ /dev/null @@ -1,229 +0,0 @@ -package de.griefed.serverpackcreator.api.modscanning - -import de.griefed.serverpackcreator.api.ApiWrapper -import de.griefed.serverpackcreator.api.utilities.common.FilterType -import de.griefed.serverpackcreator.api.utilities.common.filteredWalk -import org.junit.jupiter.api.Assertions -import org.junit.jupiter.api.Test -import java.io.File - -class ModScannerTest internal constructor() { - private var modScanner: ModScanner = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).modScanner - - @Suppress("SpellCheckingInspection") - @Test - fun tomlTest() { - val files: Collection<File> = - File("src/jvmTest/resources/forge_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) - - val excluded: List<File> = modScanner.forgeTomlScanner.scan(files).toList() - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/aaaaa.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/bbbbb.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/ccccc.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/ddddd.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/fffff.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/ggggg.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/hhhhh.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/iiiii.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/jjjjj.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/kkkkk.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/lllll.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/nnnnn.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/ppppp.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/qqqqq.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/rrrrr.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/testmod.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/uuuuu.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/vvvvv.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/wwwww.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/xxxxx.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/yyyyy.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_tests/mods/zzzzz.jar")) - ) - } - - @Suppress("SpellCheckingInspection") - @Test - fun fabricTest() { - val files: Collection<File> = - File("src/jvmTest/resources/fabric_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) - - val excluded: List<File> = modScanner.fabricScanner.scan(files).toList() - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/aaaaa.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/bbbbb.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/ccccc.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/ddddd.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/eeeee.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/fffff.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/ggggg.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/hhhhh.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/iiiii.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/jjjjj.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/kkkkk.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/lllll.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/mmmmm.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/nnnnn.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/ooooo.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/ppppp.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/qqqqq.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/fabric_tests/mods/testmod.jar")) - ) - } - - @Suppress("SpellCheckingInspection") - @Test - fun quiltTest() { - val files: Collection<File> = - File("src/jvmTest/resources/quilt_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) - - val excluded: List<File> = modScanner.quiltScanner.scan(files).toList() - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/quilt_tests/mods/aaaaa.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/quilt_tests/mods/bbbbb.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/quilt_tests/mods/testmod.jar")) - ) - } - - @Suppress("SpellCheckingInspection") - @Test - fun annotationTest() { - val files: Collection<File> = - File("src/jvmTest/resources/forge_old/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) - - val excluded: List<File> = modScanner.forgeAnnotationScanner.scan(files).toList() - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/aaaaa.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/bbbbb.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/ccccc.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/ddddd.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/eeeee.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/fffff.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/ggggg.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/hhhhh.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/iiiii.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/jjjjj.jar")) - ) - Assertions.assertTrue( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/kkkkk.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/lllll.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/mmmmm.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/nnnnn.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/ooooo.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/ppppp.jar")) - ) - Assertions.assertFalse( - excluded.contains(File("src/jvmTest/resources/forge_old/mods/qqqqq.jar")) - ) - } -} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/fabric_tests/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 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 diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/forge_tests/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 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 diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 zcmeI0XH*l+wuVEKCcP=WMKLs$-hv27?@|m+P^n^Q(tG(3kkCVu7OEgcX~6&iM35Rl z+9yP+lt^y@Lb>?ed(ZKlb<SGn=lyZ_tXX@{tXc2OyXW6ys6#@^44|N(08Gb48v}le zo0s)dsPBvCP`jtLZq6^BJ@K@2@D}xY=IQgyQ_RKA)7Am%>G({{-p*Te07V;d``W#E zb7zY%HA{}?!qwL_IJxx1m5JA)>sf4URjn{uZNTUBUnwRKPuSk1elI}a>=eLbSLKVi z?}kL+)=9yWN37D&NJ)I}eN&j6_?q^sbe<ZGS5wiCPGlxJlG9UanPLq;X95cK^@^rS zMoPJ4*&M5*o|hmBZm}g?QDy8pC>yv7Cx7^{HxlOgr6#m2({td^n$6Zwhnzy>bg?k! z(#^-qY4~sb-uMswdO2Cc-qUvSG6V1-WTkbyD(&(pcI6Jmxdsbr$$QgBcy>0X6_idj z_Rij`fqOf8I%3Z8Cd3*Q8lJ&w_18}V#52tYyrXna(t3qOv!a$9YB8mMUU~O4RAAnA zB~2KFPOo_>=GcA10&&2@I!fVDAWhcj2_JaX$l9Hd#@--DVYj4ZF?pc9R&<wL{x+wm zImE(yU1tBvFQYrGr8eo8HroGY6ab(AT+_}q_F71+_F=f(#sL7#m+5c+X?sWPj<lH6 zum9YDI6fCpzjihu%26g4tEDU3$p{Hsq-g!*!3Hz*WYb)gx+g{%)m1zks8r#Epd@_- z$|lteqi1C0jpBV6E_C0UFNBvl&WX5_(8g7>F=f-E%C?7)A#Aj~g*t3tU)lsVoEJ^= zyg1HWe(Xp!3av|L?(M6KqPl}f3WRyq)vc{Rio9SBAtSM9;`M8R^c!&s-{W{kTJ)I3 zf@UJD;c+gCtepEffTKee$v#CY9ZBi_vX;z>#0pSN*%;v(PK%VDx>8M2O<hf1P4@!O z7|9XA5zY}w-J#d6K3Dpf9C;lnha^J+kt|3lBn?s&$%Rxxk{|_;Oj~a5Z0>iE!bnmp zDxU~ccz-*#L(HAd-N0Sk9a_s_MOzIBY!7Y^?y#w)o1vTGQ3NQ`D{A@&P{3j$V!~r0 zHNrF^&gP8fM&|C!0g#NGq%rMw+ZNlh?rII6IaS|~8UT7aC`bBw+9dx#YkA(@Gve%7 zV+N7yF&|d@e^)hAZD%n~5$hM5-kEpJ4c>2ISx$xMPxTbtMiUK$GI|N|-1*=M_M%E( zlND@~z~^i#7j2*Dbu2QRt`%mB2p5C#M<+r}7uefBi{6itxZ997tmbn$8dOT2%;v-A z*oR}RVHdbeU~jboLmf|tnC^mw7`xD1u)fyC-n~P-Y0}|bFy?%5%JvZa%A{cF)T>|u z)M^eN&BTR1{7L0Byn6At7HTci_>{EA#MnCa2l1I@O99KXBOX#Ze9P)*7C*)FljAxK zvnRj@l45eHk|O8K8VV<gbJs+RLd7n|l-AA_Mm~)wUh$>r<HR(wpGz1YPbvrGsfqvK zgB^RJrJfC4BoshGZx>X@8cyK*d5+IlPA-=4%6N3bGJgJo20ggIPC+Wf=3?7&uxlwJ z4iWGfJdk#4*)EHj+7ec=T(e%<jOMP@$IePt65ya_We@z9-lfgNy53e9D>Bc-{OFn1 zFp?w=)O4NvS+3c>lU;hGk?$6!6+d@2sT8z-G}SfLr&Z>ND^H$}Ee!W?j92HnySZs2 z4jo}N{(;)ymJ9ETQV%8Fc3W16<(Jq{+;W+Wtle$bu8Fq4tyk%?tjUQfOswXWHy_;- zRI(lQdPgNP=AQy~+mSCuUMF1d^|#!-?jV|TI&o1%{o-u7j79Z5p{DZ$y1j~OInThR zUe73+i0`q+Oxh;D#By1|0@ec6a=yohSblPQh<I-qC?`+!_G3I{aS^UvT~cIL1Wj7p z=;FoHe`W=d_#iz<pHcXlUsSZ(+bLVZ+BCt#VyL+(Y6<HvbN$+><!x8P8?Sv&Zhv3< z<X1+wm<#^@#sA?R+&wCy&_0>4+`l;&PtH2Z*5O_NwMNJ$ryGSlN_Ap^jURb=2sr`U z{CID7{fN-#lu}Lk16Y+b=7X&2d#Hv}%b)Y9$V-AVvX0AEjx&yHLvA|jjt>4DZuBD4 zCM!;#OV{VpHxo?)i|#-8k}%b1eZ8)<k}LkMOS?JENd=#+)OzKEpm8eO@k3ML;PLVr z$d5`hLWNYDOH~cTT+NL^s&uTL^~)$Oxc&-H)rdws!Kw1tNe>LEON4KanBhktLG@BW z^<?00*<eUzVxyT#m6l}B*NWW7X1NV@xTw-c{bSC1^)sh0<CbbH1w&i;kAJfD&K78f z1SX%-#4kY~3WhH7A5&je#)6?n$)|dIyOu!oCsZe>#Z@G&1ZsAFwk4`foieze@x%<c zU!}7;oi^MgS_n12Kid}7rb-#y!+4?(+|SinMKO;_<k!Y~RbxQwu-fv*a#X+wW6kFh zGRRfOgQ-V`7%MF5R%=qDhz@lC#Ht>f-rbxPj4koRCObmD39Lv6nompAWV~+7NNjAv zd_e`DSZ<m?)#0p}Lod-i@rOHzV5R&(rF`s1BZbMVHt&9$ko&uMljGyXnOVn8@})uX zuV2IS;3y_q(0dcwp)3_cpIMQl7kK&_?96*k+~SHI*h_XsL!s003^wrf?xX=)Cg#4d zU)p5%i2swJH2H2}sU$RqqFV`uf;_mMFF&0_Y+?I7c!O)DDB(ypC@2r^@pvr0ThTE! z`pv-@Q(E?SLNg9oBcEJ3ltn1UxETC^Im2>pvU=<Z^7QB*j_B`<=pT&e?~Ul=M~1eu zj<eRX*jiFBpq;ExpT<QmT%HMHvl%P^rh`~BYy>$StO>sudM;)NageUN2WhP>$bNz6 zFJT=u^M`~~vJn~sD3uAUS-mBB@U5X|d2r?a{=!EUJ*U~`LQ<B2aV$3@B;73)GW5(W z-aG(SB}?9LE-D_>jO=Yl`Xl8hZ^H%zWoN1j$!eZgQ}mtn!6h&oRFjJ)U*)$}y8hr> zN_~=iFKe;uO##j66jy$0jl3=CZ}8>Ee0kY29ZUoVRXw5FqBO|!EnMwHmK9r>we;-x z(>=9?_f<5a?;h-rxW+(;v;;QR;KHfW+7E%k$rGhV5>Do|VxRSVO_cS91!;z5<;EiG zRJvekuX?S$g9EAqZCEHZ*+2VRbWg&f@_mumXw92WuVH0G#YLKIkvC10JyRqj{1~_f zKkm26jgln!GN0f|?6`>#&xU)}{L}~wLBt2cj4%?#>@oXdaz01xZuzUvN<g!TC!efX zk8k$A=3JsHKoc$HzuLbx=B7LEqQ)aU93b=39u_>ukL!HTp<Op{EBPDS8a?EV+QszO z(j#G6x}|(Ale-^1x;`n|Y&*T75y(#SjC>UfEAA9d3vqjTQ>NB0x8iATMe@W|(`}cx zO)4*O*StE(%mtrL*nfBRaG!u&%|%O3EcA6-42>HLR~pJ-Ol6Oo&T6TetiL-~$1B&f zMk_bto{6$AH?uBF;A*Vmk?%gcIEbF_Hc$+@DlvZGuFN?&>Yr5IluC6iIKJmeG`dP- zw8I?hYv5D5H05dA>l!0wUZOK-ET5NKs@rmx$-qEWGs8CP7TPmj7d)%2VSLKjNV=D4 zkH7QLW2ba{fsttQtWW$0tsf`l1u-+yZnM>e9xWI3L^2_8c?>>$=n(41GCbko9uhqe z!nr~lgiVnyqE*{?73i$mcaosZ<%;Rv;lW8{diyD@gE;+qF8l(LvNxiz_TsgZ_0x>V z*(-Eurp_sMx@Frsyu77XXMB8L-5+ZD^0rnux2~Bj25*usp%WB*)ohU}wSMAJH)<C4 z=YdZo*2$KyDysNE-???7)du}p{Jzf@{rsLyc0`zOUQL-;%ftP-nH8$nl~39cwZ#ml z_U1(2^bMe4AYg(v1h}@c5JLLI-?n@7#!6yQN!Qg7N?obBmJI#ypBi=-iA(T#)}a0w zg+w24rbbrcvXO&8{@rz-ROCKIK5(+huY_B@1=z$(Xuq$pCc7zXrMhqc#M*@LS9yyJ z%9B4p`Ud&fr*ZJo*ffiDPNI$pwimsq6+j3Fh0>0ov<@jW{5cB5u+qeUc&#eOz~*=D zf;?%$$lxuLp@C?HSY*I5r&QH}ih_)RD~sE$dg^reb*4^JYBgoX6LEyOkdmbmrAsl` zcCfy+ywGr(vSveAEfJ)I!d6<BXrc_HPZH(09a~GkWLjD`XioQ=?Li6BBTv-7wP8%- z>(3sfhE7xGJc5dh9!~hX1SDW00{jq1>^$k)TliZeIr001puFrC1p0E@Dsa=r0P>_z z!_orUJDou??6Tst=0g`fF>G9bP5lZyydNvPr`^?>Torac%>J$>9UD=$H5lj{j`EcV zur{L$M07P!$6+=Y+xRC%){n!3l&Z62<T2wfURdrQq=C(YRmPm)F59ymV9DsfEr!zr ze)+gQb&^LD?}%qf+VE%8hoY0MHlgZa#=_i$4HmJl9-7ZrzyaU2dFp;{-7o;D?yir< zdXxGNl|2?oMVe&OL2ljqaUM7iee^>FqWxr7t%0~s8Gflq_Vhf+Tx#~b=?dO_$9Nyb zi3vt|#QA5$Ur9KY@vx8dtR?2-9HI+}iV33@Y&9H>7i^9E*7iMlb}puQJH?%Bv<?V1 zUr6i1XzDV+NEl#jIxSrZZx3Akx!nUBn$bMlNlbH&^i%^u#D$UT*I6SU7i8~6N{B;( zt`64gVEeKx!kg!MRd74XxBloAy&xtacB@<j{WMR~DjZJe^Hdcpy?{yvqkBLl4YM6* zX4`mU_(1Q%dkn-!D={xx!@7L8{xkH8W7X&SBf8^;GM1d=G7qVIM|Ugx<~_;*FR&u~ zTFFzhO<kLXM|R$!nCv~yqd(J}n=wF_2J`vV@^N_3wDkrp=t;xIfD1II^;;u~sWD7} zrmHeryF`fjomz{|@O@N5CdVId&0@zg{SNHEXHEqq+==$n{bBDsx!ZbZ(Z-h7D(q*h zB6+ipz+f`ppkoNNg=W0g=ASsunI3FvIW=2Sep<3eVskDjR?dapCEpmiwV^4<R+xhh zOcXd~{G7y-67;%nFhgkbhq&eY7K2@&Hm?Nt(rI2RS5u1`weXSGPysW-rALp1Z%C8p z*#UIH(W@lI*nhnG-noRg*eFgq1YNrcB!`?Xi4$&z%iA#TBa+ynO`~M)*w{p~{R!&K zxz0j%s{%o9`c_DH9294m5C<wZQ<olpTb^PMiZgDFt0-4dA0I16u*U@!LG;uc#)=X0 zE@nor89^0g<4O(c>NH~&hzAfIbq|Q8dZkfLT(%Pzi`3VTAZ<fboLO0P9>;VnIyXb@ zxFsP~j0M%t0Iw`B;!|{+7qy)q*A8R(j#bf&YF^<i!Q9yCv5gY-I{Zven-Sg=o*0G+ zheqT_D(~5Rn8BCDw*%+q=Z@io<|N`-BJ_tD73pw=NJ50x_VaDN?ciEkU;a<0=T_fs z#d~%H{h7cww&XOPy<ypvb|r<j5egG`-FHlfMNfD~89o3VLqn(&TAn2J<agTDe@#R) zB~O0=4iC}y>GtOAAzhmDUBk+FA$l$wqFWO&Nzz(bScXE{(M6-0M}7Nz8Ug08t!O8! zZ%VWbH4v5!5b#EEObFDcvVY~GTG5PKVHY0>7TKCioVO)iI&(`1`s%H7E}KT_4%EB9 zVUI3$K)-H=I5bA}tjqJyUQHj36A*p9Yb}n8Sz2t<_(5Zz_i0sOL0+Khu<sqHct+)m zM={nei!HQgd{0Sos2iKN#2s+8#3wb`;ER>z6y5%N<;i7yVma!MAk$5vGub6xgVR-& zt|!$j8X0@f)!z2_bAoz`jO`64g6}P(A7VQa3#*7u$F<h5w|9$$dg^L$lW8hTp2Ca9 zQ1b!t8?zs<yQtm*1^G>&W2q_5%QO6=zVyPLbTi&5wP}`9fiLz`%7dYov+tCTo(>M6 zGg$K;L>S?}hHTa`)qDe+d=e0tcH7w3hb81Mtb@VQ>E3YIzJac0!hX@1@3fL9vGcs| zFCayANn`+kYQ5Zl0C2x{|4!Qsb%=<WFWJriqPpLq)-P1|kMSRZyMGq_9U%SUVSkV9 z%kn=F^>X^9sr(mY`d8>l@P8zEDFA>!iT*W+q5|;#b&3dZ4In7vm)oN_Nwg|E7TbTB z(d#~ct^fO$f7iI*ZwY7my^X(XJ6NaW{nGsBY^Xza<<|p9FNf>p8{b|k00935FThWa diff --git a/serverpackcreator-api/src/jvmTest/resources/log4j2.component.properties b/serverpackcreator-api/src/jvmTest/resources/log4j2.component.properties deleted file mode 100644 index 13bdbb813..000000000 --- a/serverpackcreator-api/src/jvmTest/resources/log4j2.component.properties +++ /dev/null @@ -1,3 +0,0 @@ -log4j.configurationFile=log4j2.xml -log4j.formatMsgNoLookups=true -log4j.configurationFactory=de.griefed.serverpackcreator.api.LoggingConfig \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 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 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/aaaaa.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/aaaaa.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/bbbbb.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/bbbbb.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ccccc.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ccccc.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/fffff.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/fffff.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ggggg.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ggggg.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/hhhhh.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/hhhhh.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/iiiii.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/iiiii.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/jjjjj.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/jjjjj.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/kkkkk.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/kkkkk.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/lllll.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/lllll.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/nnnnn.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/nnnnn.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ppppp.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/ppppp.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/qqqqq.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/qqqqq.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/rrrrr.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/rrrrr.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/uuuuu.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/uuuuu.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/vvvvv.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/vvvvv.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/wwwww.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/wwwww.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/xxxxx.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/xxxxx.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/yyyyy.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/yyyyy.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/zzzzz.jar b/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/zzzzz.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/quilt_tests/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 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 diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/server_pack.zip b/serverpackcreator-api/src/jvmTest/resources/testresources/server_pack.zip deleted file mode 100644 index b0a87033147c241515000c18100a994959789701..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5418 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 diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/server_pack/mods/testmod.jar b/serverpackcreator-api/src/jvmTest/resources/testresources/server_pack/mods/testmod.jar deleted file mode 100644 index e69de29bb..000000000 diff --git a/serverpackcreator-api/src/commonMain/i18n/Translations_en_GB.properties b/serverpackcreator-api/src/main/i18n/Translations_en_GB.properties similarity index 99% rename from serverpackcreator-api/src/commonMain/i18n/Translations_en_GB.properties rename to serverpackcreator-api/src/main/i18n/Translations_en_GB.properties index 76d00940b..7a9d87461 100644 --- a/serverpackcreator-api/src/commonMain/i18n/Translations_en_GB.properties +++ b/serverpackcreator-api/src/main/i18n/Translations_en_GB.properties @@ -566,6 +566,7 @@ configuration.title.error=This configuration has errors! configuration.title.warning=Unsaved changes! configuration.log.error.checkconfig.start=Couldn't parse config file. Consider checking your config file and fixing empty values. If the value needs to be an empty string, leave its value to "". configuration.log.error.checkmodpackdir=Modpack directory not specified. Please specify an existing directory. +configuration.log.error.modpack.overrides=Modpack contains directory \"overrides\". Modpacks must be installed through a client such as CurseForge, GDLauncher, MultiMC etc. Full modpacks shouldn't contain the overrides directory anymore. configuration.log.error.serverpack.suffix=Suffix contains illegal characters. configuration.log.error.checkcopydirs.empty=No directories or files specified for copying. This would result in an empty serverpack. configuration.log.error.checkcopydirs.notfound=Copy-file or copy-directory {0} does not exist. Please specify existing directories or files. diff --git a/serverpackcreator-api/src/commonMain/i18n/Translations_pt_BR.properties b/serverpackcreator-api/src/main/i18n/Translations_pt_BR.properties similarity index 99% rename from serverpackcreator-api/src/commonMain/i18n/Translations_pt_BR.properties rename to serverpackcreator-api/src/main/i18n/Translations_pt_BR.properties index 9eb13b749..ec6c524ce 100644 --- a/serverpackcreator-api/src/commonMain/i18n/Translations_pt_BR.properties +++ b/serverpackcreator-api/src/main/i18n/Translations_pt_BR.properties @@ -566,6 +566,7 @@ configuration.title.error=Esta configura configuration.title.warning=Mudanças não salvas! configuration.log.error.checkconfig.start=Não foi possÃvel analisar o arquivo de configuração. Considere verificar seu arquivo de configuração e corrigir valores vazios. Se o valor precisar ser uma string vazia, deixe o valor como "". configuration.log.error.checkmodpackdir=Diretório do modpack não especificado. Por favor, especifique um diretório existente. +configuration.log.error.modpack.overrides= configuration.log.error.serverpack.suffix=O sufixo contém caracteres inválidos. configuration.log.error.checkcopydirs.empty=Nenhum diretório ou arquivo especificado para cópia. Isso resultaria em um servidor vazio. configuration.log.error.checkcopydirs.notfound=Arquivo ou diretório de cópia {0} não existe. Por favor, especifique diretórios ou arquivos existentes. diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt similarity index 97% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt index 36d14003e..5c6614353 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiPlugins.kt @@ -58,13 +58,13 @@ import javax.swing.JTabbedPane * @author Griefed */ @Suppress("unused", "MemberVisibilityCanBePrivate") -actual class ApiPlugins( +class ApiPlugins( tomlParser: TomlParser, private val apiProperties: ApiProperties, private val versionMeta: VersionMeta, private val utilities: Utilities ) : JarPluginManager(apiProperties.pluginsDirectory.toPath()) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val pluginsLog = logger("PluginsLogger") private val pluginConfigs: HashMap<String, CommentedConfig> = HashMap<String, CommentedConfig>(100) private val pluginConfigFiles = HashMap<String, File>(100) @@ -227,7 +227,7 @@ actual class ApiPlugins( * @return The global plugin configuration, wrapped in an Optional. * @author Griefed */ - actual fun getPluginConfig(pluginId: String) = Optional.ofNullable<CommentedConfig>(pluginConfigs[pluginId]) + fun getPluginConfig(pluginId: String) = Optional.ofNullable<CommentedConfig>(pluginConfigs[pluginId]) /** * Get and return any configuration for the extension about to be run. If none is available, the @@ -294,7 +294,7 @@ actual class ApiPlugins( * at. * @author Griefed */ - actual fun runPreGenExtensions(packConfig: PackConfig, destination: String) { + fun runPreGenExtensions(packConfig: PackConfig, destination: String) { for (plugin in getPlugins()) { log.info("Executing PreGenExtension extensions.") pluginsLog.info("Executing PreGenExtension extensions.") @@ -333,7 +333,7 @@ actual class ApiPlugins( * at. * @author Griefed */ - actual fun runPreZipExtensions(packConfig: PackConfig, destination: String) { + fun runPreZipExtensions(packConfig: PackConfig, destination: String) { for (plugin in getPlugins()) { log.info("Executing PreZipExtension extensions.") pluginsLog.info("Executing PreZipExtension extensions.") @@ -372,7 +372,7 @@ actual class ApiPlugins( * at. * @author Griefed */ - actual fun runPostGenExtensions(packConfig: PackConfig, destination: String) { + fun runPostGenExtensions(packConfig: PackConfig, destination: String) { for (plugin in getPlugins()) { log.info("Executing PostGenExtension extensions.") pluginsLog.info("Executing PostGenExtension extensions.") @@ -490,9 +490,9 @@ actual class ApiPlugins( * errored. * @author Griefed */ - actual fun runConfigCheckExtensions( + fun runConfigCheckExtensions( packConfig: PackConfig, - configCheck: ConfigCheck + configCheck: ConfigCheck = ConfigCheck() ): ConfigCheck { for (plugin in getPlugins()) { log.info("Executing ConfigCheckExtensions extensions.") @@ -537,5 +537,5 @@ actual class ApiPlugins( * @return The config-file corresponding to the ID of the plugin, wrapped in an Optional. * @author Griefed */ - actual fun getPluginConfigFile(pluginId: String) = Optional.ofNullable(pluginConfigFiles[pluginId]) + fun getPluginConfigFile(pluginId: String) = Optional.ofNullable(pluginConfigFiles[pluginId]) } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt similarity index 91% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt index 1d86e1a29..73a04c519 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiProperties.kt @@ -24,6 +24,14 @@ import de.comahe.i18n4k.config.I18n4kConfigDefault import de.comahe.i18n4k.i18n4k import de.comahe.i18n4k.toTag import de.griefed.serverpackcreator.api.utilities.common.* +import org.apache.logging.log4j.core.Core +import org.apache.logging.log4j.core.LoggerContext +import org.apache.logging.log4j.core.config.Configuration +import org.apache.logging.log4j.core.config.ConfigurationFactory +import org.apache.logging.log4j.core.config.ConfigurationSource +import org.apache.logging.log4j.core.config.Order +import org.apache.logging.log4j.core.config.plugins.Plugin +import org.apache.logging.log4j.core.config.xml.XmlConfiguration import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.io.BufferedReader import java.io.File @@ -31,7 +39,6 @@ import java.io.IOException import java.io.InputStreamReader import java.net.URI import java.util.* -import java.util.prefs.Preferences /** * Base settings of ServerPackCreator, such as working directories, default list of clientside-only @@ -48,20 +55,20 @@ import java.util.prefs.Preferences * @author Griefed */ @Suppress("unused") -actual class ApiProperties( - private val fileUtilities: FileUtilities, - private val systemUtilities: SystemUtilities, - private val listUtilities: ListUtilities, - jarUtilities: JarUtilities, +@Plugin(name = "ServerPackCreatorConfigFactory", category = Core.CATEGORY_NAME) +@Order(50) +class ApiProperties( + private val fileUtilities: FileUtilities = FileUtilities(), + private val systemUtilities: SystemUtilities = SystemUtilities(), + private val listUtilities: ListUtilities = ListUtilities(), + jarUtilities: JarUtilities = JarUtilities(), propertiesFile: File = File("serverpackcreator.properties") -) { - private val log = cachedLoggerOf(javaClass) +) : ConfigurationFactory() { + private val log by lazy { cachedLoggerOf(this.javaClass) } private val internalProps = Properties() - private val userPreferences = Preferences.userRoot().node("ServerPackCreator") private val serverPackCreatorProperties = "serverpackcreator.properties" - private val jarInformation: JarInformation = JarInformation(javaClass, jarUtilities) - private val jarFolderProperties: File = - File(jarInformation.jarFolder.absoluteFile, serverPackCreatorProperties).absoluteFile + private val jarInformation: JarInformation = JarInformation(this.javaClass, jarUtilities) + private val jarFolderProperties: File = File(jarInformation.jarFolder.absoluteFile, serverPackCreatorProperties) private val pVersionCheckPreRelease = "de.griefed.serverpackcreator.versioncheck.prerelease" private val pLanguage = @@ -138,12 +145,15 @@ actual class ApiProperties( "spring.datasource.username" private val pSpringDatasourcePassword = "spring.datasource.password" + private val suffixes = arrayOf(".xml") - val home: File = if (System.getProperty("user.home").isNotEmpty()) { - File(System.getProperty("user.home")) - } else { - jarInformation.jarFolder.absoluteFile - } + /** + * Default home-directory for ServerPackCreator. The directory containing the + * ServerPackCreator JAR. + * + * @author Griefed + */ + val home: File = jarInformation.jarFolder.absoluteFile private var fallbackModsWhitelist = TreeSet( listOf( @@ -594,7 +604,7 @@ actual class ApiProperties( " -Dusing.aikars.flags=https://mcflags.emc.gs" + " -Daikars.new.flags=true" val fallbackUpdateURL = - "https://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties" + "https://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties" val fallbackExclusionFilter = ExclusionFilter.START val fallbackOverwriteEnabled = true val fallbackJavaScriptAutoupdateEnabled = true @@ -752,12 +762,6 @@ actual class ApiProperties( "4" } - init { - i18n4k = i18n4kConfig - i18n4kConfig.defaultLocale = Locale("en_GB") - loadProperties(propertiesFile, false) - } - /** * Only the first call to this property will return true if this is the first time ServerPackCreator is being run * on a given host. Any subsequent call will return false. Handle with care! @@ -766,11 +770,6 @@ actual class ApiProperties( */ val firstRun: Boolean - init { - firstRun = getBoolProperty("de.griefed.serverpackcreator.firstrun", true) - setBoolProperty("de.griefed.serverpackcreator.firstrun", false) - } - /** * Directories to include in a server pack. */ @@ -1327,16 +1326,6 @@ actual class ApiProperties( return "jdbc:postgresql://localhost:5432/serverpackcreator" } - /** - * Default home-directory for ServerPackCreator. If there's no user-home, then the directory containing the - * ServerPackCreator JAR will be used as the home-directory for ServerPackCreator. - * - * @author Griefed - */ - fun defaultHomeDirectory(): File { - return File(home, "ServerPackCreator").absoluteFile - } - /** * ServerPackCreators home directory, in which all important files and folders are stored in. * @@ -1347,25 +1336,29 @@ actual class ApiProperties( * [serverPacksDirectory], which can be configured independently of ServerPackCreators * home-directory. */ - var homeDirectory: File = File(home, "ServerPackCreator").absoluteFile + var homeDirectory: File = home.absoluteFile get() { - val prop = internalProps.getProperty(pHomeDirectory) - field = if (internalProps.containsKey(pHomeDirectory) && File(prop).absoluteFile.isDirectory) { - File(prop).absoluteFile - } else if (jarInformation.jarPath.toFile().isDirectory) { + val customHome = if (internalProps.containsKey(pHomeDirectory)) { + internalProps.getProperty(pHomeDirectory) + } else { + "" + } + field = if (customHome.isNotBlank()) { + File(customHome).absoluteFile + } else if (jarInformation.jarPath.toFile().isDirectory || devBuild) { // Dev environment File("").absoluteFile } else { - File(home, "ServerPackCreator").absoluteFile + home.absoluteFile } if (!field.isDirectory) { - field.createDirectories(create = true, directory = true) + field.create(create = true, directory = true) } + internalProps.setProperty(pHomeDirectory, field.absolutePath) return field } set(value) { internalProps.setProperty(pHomeDirectory, value.absolutePath) - userPreferences.put(pHomeDirectory, value.absolutePath) field = value.absoluteFile log.info("Home directory set to: $field") log.warn("Restart ServerPackCreator for this change to take full effect.") @@ -1383,6 +1376,16 @@ actual class ApiProperties( } private set + /** + * Overrides which, well, override, any property which may be set in the regular [serverPackCreatorPropertiesFile]. + */ + var overridesPropertiesFile: File = File(homeDirectory,"overrides.properties") + get() { + field = File(homeDirectory,"overrides.properties") + return field + } + private set + /** * Default configuration-file for a server pack generation inside ServerPackCreators * home-directory. @@ -1479,8 +1482,13 @@ actual class ApiProperties( @Suppress("MemberVisibilityCanBePrivate") var tomcatLogsDirectory: File = logsDirectory get() { - val default = File(homeDirectory, "logs").absolutePath - val dir = internalProps.getProperty(pTomcatLogsDirectory, default) + val default = logsDirectory.absolutePath + val prop = internalProps.getProperty(pTomcatLogsDirectory, default) + val dir = if (File(prop).canWrite()) { + internalProps.getProperty(pTomcatLogsDirectory, default) + } else { + default + } field = File(dir).absoluteFile return field } @@ -1912,15 +1920,19 @@ actual class ApiProperties( } } - private fun loadOverrides(): Properties { + private fun loadOverrides() { val tempProps = Properties() - val overrides = File(homeDirectory, "overrides.properties") - if (overrides.isFile) { - File(homeDirectory, "overrides.properties").inputStream().use { + if (overridesPropertiesFile.isFile) { + overridesPropertiesFile.inputStream().use { tempProps.load(it) } } - return tempProps + for ((key,value) in tempProps) { + log.warn("Overriding:") + log.warn(" $key") + log.warn(" $value") + } + internalProps.putAll(tempProps) } /** @@ -1966,24 +1978,14 @@ actual class ApiProperties( // Load the specified properties-file. loadFile(propertiesFile, props) - // Load all values from the overrides-properties - for (key in userPreferences.keys()) { - props[key] = userPreferences[key, null] - } - internalProps.putAll(props) internalProps.setProperty(pTomcatBaseDirectory, homeDirectory.absolutePath) if (internalProps.getProperty(pLanguage) != "en_GB") { changeLocale(Locale(internalProps.getProperty(pLanguage))) } - val overrides = loadOverrides() - for ((key, value) in overrides) { - log.warn("Overriding:") - log.warn(" $key") - log.warn(" $value") - } - internalProps.putAll(overrides) + // Load all values from the overrides-properties + loadOverrides() if (updateFallback()) { log.info("Fallback lists updated.") @@ -2231,17 +2233,6 @@ actual class ApiProperties( } } - /** - * Write the overrides-properties which, as the name implies, will override any other property loaded previously during [loadProperties]. - * CAUTION: Depending on the type of installation, the overrides.properties will reside inside a directory which - * requires root/admin-privileges to write in. The directory in which this file will be created in is [getJarFolder]. - * - * @author Griefed - */ - fun saveOverrides() { - userPreferences.sync() - } - /** * Removes unwanted properties. Called during the save-operation, to ensure that legacy-properties are removed. * @@ -2509,23 +2500,6 @@ actual class ApiProperties( */ fun oldVersion(): String = internalProps.getProperty(pOldVersion, "") - init { - serverFilesDirectory.createDirectories(create = true, directory = true) - propertiesDirectory.createDirectories(create = true, directory = true) - iconsDirectory.createDirectories(create = true, directory = true) - configsDirectory.createDirectories(create = true, directory = true) - workDirectory.createDirectories(create = true, directory = true) - tempDirectory.createDirectories(create = true, directory = true) - modpacksDirectory.createDirectories(create = true, directory = true) - serverPacksDirectory.createDirectories(create = true, directory = true) - pluginsDirectory.createDirectories(create = true, directory = true) - pluginsConfigsDirectory.createDirectories(create = true, directory = true) - manifestsDirectory.createDirectories(create = true, directory = true) - minecraftServerManifestsDirectory.createDirectories(create = true, directory = true) - installerCacheDirectory.createDirectories(create = true, directory = true) - printSettings() - } - @Suppress("MemberVisibilityCanBePrivate") fun printSettings() { log.info("============================== PROPERTIES ==============================") @@ -2564,18 +2538,142 @@ actual class ApiProperties( log.info("============================== PROPERTIES ==============================") } + val installLocationXml: File = File(home,"log4j2.xml") + val log4jXml: File + init { - System.setProperty("user.dir", homeDirectory.absolutePath) + i18n4k = i18n4kConfig + i18n4kConfig.defaultLocale = Locale("en_GB") + loadProperties(propertiesFile, false) + log4jXml = File(homeDirectory, "log4j2.xml") + try { + var log4j: String + val oldLogs = "<Property name=\"log-path\">logs</Property>" + val newLogs = "<Property name=\"log-path\">${logsDirectory.absolutePath}</Property>" + this.javaClass.getResourceAsStream("/log4j2.xml").use { + log4j = it?.readText().toString() + log4j = log4j.replace(oldLogs, newLogs) + if (devBuild || preRelease) { + log4j = log4j.replace( + "<Property name=\"log-level-spc\">INFO</Property>", + "<Property name=\"log-level-spc\">DEBUG</Property>" + ) + } + log4jXml.writeText(log4j) + } + } catch (ex: IOException) { + println("Error reading/writing log4j2.xml.") + ex.printStackTrace() + } + firstRun = getBoolProperty("de.griefed.serverpackcreator.firstrun", true) + setBoolProperty("de.griefed.serverpackcreator.firstrun", false) + logsDirectory.create(create = true, directory = true) + serverFilesDirectory.create(create = true, directory = true) + propertiesDirectory.create(create = true, directory = true) + iconsDirectory.create(create = true, directory = true) + configsDirectory.create(create = true, directory = true) + workDirectory.create(create = true, directory = true) + tempDirectory.create(create = true, directory = true) + modpacksDirectory.create(create = true, directory = true) + serverPacksDirectory.create(create = true, directory = true) + pluginsDirectory.create(create = true, directory = true) + pluginsConfigsDirectory.create(create = true, directory = true) + manifestsDirectory.create(create = true, directory = true) + minecraftServerManifestsDirectory.create(create = true, directory = true) + installerCacheDirectory.create(create = true, directory = true) + printSettings() saveProperties(File(homeDirectory, serverPackCreatorProperties).absoluteFile) } - actual companion object { + companion object { /** * @author Griefed */ @JvmStatic - actual fun getSeparator(): String { + fun getSeparator(): String { return File.separator } } + + override fun getSupportedTypes(): Array<String> = suffixes + + /** + * Depending on whether this is the first run of ServerPackCreator on a users machine, the default + * log4j2 configuration may be present at different locations. The default one is the config + * inside the home-directory of SPC, of which we will try to set up our logging with. If said file + * fails for whatever reason, we will try to use a config inside the directory from which SPC was + * executed. Should that fail, too, the config from the classpath is used, to ensure we always + * have default configs available. Should that fail, too, though, log4j is set up with its own + * default settings. + * + * @param loggerContext logger context passed from log4j itself + * @param source configuration source passed from log4j itself. Attempts to overwrite it + * are made, but if all else fails it is used to set up logging with log4j's + * default config. + * @return Custom configuration with proper logs-directory set. + * @author Griefed + */ + override fun getConfiguration(loggerContext: LoggerContext, source: ConfigurationSource): Configuration { + val configSource: ConfigurationSource + if (log4jXml.isFile) { + try { + return getXmlConfig(log4jXml, loggerContext) + } catch (ex: IOException) { + println("Couldn't parse $log4jXml.") + ex.printStackTrace() + } + } else if (installLocationXml.isFile) { + try { + return getXmlConfig(installLocationXml, loggerContext) + } catch (ex: IOException) { + println("Couldn't parse $installLocationXml.") + ex.printStackTrace() + } + } + try { + configSource = ConfigurationSource(this.javaClass.getResourceAsStream("/log4j2.xml")!!) + return CustomXMLConfiguration(loggerContext, configSource) + } catch (ex: IOException) { + println("Couldn't parse resource log4j2.xml.") + ex.printStackTrace() + } + return CustomXMLConfiguration(loggerContext, source) + } + + private fun getXmlConfig(sourceFile: File, loggerContext: LoggerContext): CustomXMLConfiguration { + val configSource: ConfigurationSource + val stream = sourceFile.inputStream() + configSource = ConfigurationSource(stream, sourceFile) + val custom = CustomXMLConfiguration(loggerContext, configSource) + stream.close() + return custom + } + + /** + * Custom XmlConfiguration to pass our custom log4j2.xml config to log4j. + * + * Set up the XML configuration with the passed context and config source. For the config source + * being used, [ApiProperties.getConfiguration] where + * multiple attempts at creating a new private val log by lazy { cachedLoggerOf(this.javaClass) } using our own log4j2.xml are made + * before the default log4j setup is used. + * + * @param loggerContext logger context passed from log4j itself + * @param configSource configuration source passed from + * [ApiProperties.getConfiguration]. + * @author Griefed + */ + inner class CustomXMLConfiguration(loggerContext: LoggerContext?, configSource: ConfigurationSource?) : + XmlConfiguration(loggerContext, configSource) { + + /** + * For now, all this does is call the [XmlConfiguration.doConfigure]-method to set up the + * configuration with the passed source from the constructor. Custom values and settings can be + * set here in the future, should a need arise to do so. + * + * @author Griefed + */ + override fun doConfigure() { + super.doConfigure() + } + } } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt similarity index 77% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt index 115834f72..436c74c46 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ApiWrapper.kt @@ -26,6 +26,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import de.griefed.serverpackcreator.api.modscanning.* import de.griefed.serverpackcreator.api.utilities.common.* import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.xml.sax.SAXException import java.io.File import java.io.IOException @@ -41,11 +42,14 @@ import javax.xml.parsers.ParserConfigurationException * @param runSetup Whether to run the file-setup during API inizialization. * @author Griefed */ -actual class ApiWrapper private constructor( +class ApiWrapper private constructor( val properties: File = File("serverpackcreator.properties"), runSetup: Boolean = true -) : Api<File>() { - +) { + val versionsRegex = ".*(alpha|beta|dev).*".toRegex() + val xmlJsonRegex = ".*\\.(xml|json)".toRegex() + var setupWasRun: Boolean = false + private val log by lazy { cachedLoggerOf(this.javaClass) } /** * This instances settings used across ServerPackCreator, such as the working-directories, files * and other settings. @@ -54,10 +58,35 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val apiProperties: ApiProperties by lazy { + val apiProperties: ApiProperties by lazy { ApiProperties(fileUtilities, systemUtilities, listUtilities, jarUtilities, properties) } + /** + * This instances common boolean utilities used across ServerPackCreator. + * + * @return Common boolean utilities used across ServerPackCreator. + * @author Griefed + */ + val booleanUtilities: BooleanUtilities = BooleanUtilities() + + /** + * This instances common String utilities used across ServerPackCreator. + * + * @return Common String utilities used across ServerPackCreator. + * @author Griefed + */ + val stringUtilities: StringUtilities = StringUtilities() + + + /** + * This instances common list utilities used across ServerPackCreator. + * + * @return Common list utilities used across ServerPackCreator. + * @author Griefed + */ + val listUtilities: ListUtilities = ListUtilities() + /** * This instances common file utilities used across ServerPackCreator. * @@ -65,7 +94,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val fileUtilities: FileUtilities = FileUtilities() + val fileUtilities: FileUtilities = FileUtilities() /** * This instances common JAR-utilities used across ServerPackCreator. @@ -74,7 +103,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val jarUtilities: JarUtilities = JarUtilities() + val jarUtilities: JarUtilities = JarUtilities() /** * This instances common system utilities used across ServerPackCreator. @@ -83,7 +112,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val systemUtilities: SystemUtilities = SystemUtilities() + val systemUtilities: SystemUtilities = SystemUtilities() /** * This instances JSON-ObjectMapper used across ServerPackCreator with which this instance was @@ -110,7 +139,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val jsonUtilities: JsonUtilities = JsonUtilities(objectMapper) + val jsonUtilities: JsonUtilities = JsonUtilities(objectMapper) /** * This instances common web utilities used across ServerPackCreator. @@ -119,7 +148,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val webUtilities: WebUtilities by lazy { + val webUtilities: WebUtilities by lazy { WebUtilities(apiProperties) } @@ -139,7 +168,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val xmlUtilities: XmlUtilities = XmlUtilities(documentBuilderFactory) + val xmlUtilities: XmlUtilities = XmlUtilities(documentBuilderFactory) /** * This instances collection of common utilities used across ServerPackCreator. @@ -148,7 +177,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val utilities: Utilities by lazy { + val utilities: Utilities by lazy { Utilities( booleanUtilities, fileUtilities, @@ -174,7 +203,7 @@ actual class ApiWrapper private constructor( */ @get:Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @get:Synchronized - actual val versionMeta: VersionMeta by lazy { + val versionMeta: VersionMeta by lazy { VersionMeta( apiProperties.minecraftVersionManifest, apiProperties.forgeVersionManifest, @@ -209,7 +238,7 @@ actual class ApiWrapper private constructor( */ @get:Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @get:Synchronized - actual val configurationHandler: ConfigurationHandler by lazy { + val configurationHandler: ConfigurationHandler by lazy { ConfigurationHandler(versionMeta, apiProperties, utilities, apiPlugins) } @@ -229,7 +258,7 @@ actual class ApiWrapper private constructor( */ @get:Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @get:Synchronized - actual val apiPlugins: ApiPlugins by lazy { + val apiPlugins: ApiPlugins by lazy { ApiPlugins(tomlParser, apiProperties, versionMeta, utilities) } @@ -246,7 +275,7 @@ actual class ApiWrapper private constructor( */ @get:Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @get:Synchronized - actual val serverPackHandler: ServerPackHandler by lazy { + val serverPackHandler: ServerPackHandler by lazy { ServerPackHandler(apiProperties, versionMeta, utilities, apiPlugins, modScanner) } @@ -259,7 +288,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val modScanner: ModScanner by lazy { + val modScanner: ModScanner by lazy { ModScanner(forgeAnnotationScanner, fabricScanner, quiltScanner, forgeTomlScanner, neoForgeTomlScanner) } @@ -272,7 +301,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val forgeAnnotationScanner: ForgeAnnotationScanner by lazy { + val forgeAnnotationScanner: ForgeAnnotationScanner by lazy { ForgeAnnotationScanner(objectMapper, utilities) } @@ -283,7 +312,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val fabricScanner: FabricScanner by lazy { + val fabricScanner: FabricScanner by lazy { FabricScanner(objectMapper, utilities) } @@ -294,7 +323,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val quiltScanner: QuiltScanner by lazy { + val quiltScanner: QuiltScanner by lazy { QuiltScanner(objectMapper, utilities) } @@ -306,7 +335,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val tomlParser: TomlParser = TomlParser() + val tomlParser: TomlParser = TomlParser() /** * This instances toml scanner to determine the sideness of Forge mods for Minecraft 1.13.x and @@ -315,8 +344,7 @@ actual class ApiWrapper private constructor( * @return Scanner to determine the sideness of Forge mods for Minecraft 1.13.x and newer. * @author Griefed */ - @get:Synchronized - actual val forgeTomlScanner: ForgeTomlScanner = ForgeTomlScanner(tomlParser) + val forgeTomlScanner: ForgeTomlScanner = ForgeTomlScanner(tomlParser) /** * This instances toml scanner to determine the sideness of NeoForge mods for Minecraft 1.20.5 and @@ -326,7 +354,7 @@ actual class ApiWrapper private constructor( * @author Griefed */ @get:Synchronized - actual val neoForgeTomlScanner: NeoForgeTomlScanner = NeoForgeTomlScanner(tomlParser) + val neoForgeTomlScanner: NeoForgeTomlScanner = NeoForgeTomlScanner(tomlParser) init { if (runSetup) { @@ -364,9 +392,14 @@ actual class ApiWrapper private constructor( } } + /** + * Convenience method to set up ServerPackCreator. + * + * @author Griefed + */ @Synchronized @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) - override fun setup(force: Boolean): ApiWrapper { + fun setup(force: Boolean = false): ApiWrapper { if (force) { setupWasRun = false } @@ -379,7 +412,42 @@ actual class ApiWrapper private constructor( return this } - override fun stageOne() { + /** + * Stage one of starting ServerPackCreator. + * + * Creates and prepares the environment for ServerPackCreator to run by creating required + * directories and copying required files from the JAR-file to the filesystem. Some of these files + * can and should be edited by a given user, others however, not. + * + * * Checks the read- and write-permissions of ServerPackCreators base-directory. + * * Copies the `README.md` from the JAR to the home-directory. + * * Copies the `HELP.md` from the JAR to the home-directory. + * * Copies the `CHANGELOG.md` from the JAR to the home-directory. + * * Copies the `LICENSE` from the JAR to the home-directory. + * * Copies the fallback version-manifests to the manifests. + * * Creates default directories: + * + * * server_files + * * work + * * temp + * * work/modpacks + * * server-packs (depending on the users settings, this may be anywhere on the users system) + * * plugins + * * plugins/config + * + * * Example `disabled.txt`-file in plugins/disabled.txt. + * * Creates the default `server.properties` if it doesn't exist. + * * Creates the default `server-icon.png` if it doesn't exist. + * * Creates the default PowerShell and Shell script templates or overwrites them if they already exist. + * * Determines whether this instance of ServerPackCreator was updated from a previous version. + * + * If an update was detected, and migrations are available for any of the steps of the update, they are executed, + * thus ensuring users are safe to update their instances. Writes ServerPackCreator and system information to the + * console and logs, important for error reporting and debugging. + * + * @author Griefed + */ + fun stageOne() { utilities.jarUtilities.copyFileFromJar( "README.md", true, this.javaClass, apiProperties.homeDirectory.absoluteFile.toString() ) @@ -468,29 +536,62 @@ actual class ApiWrapper private constructor( log.info("Include this information when reporting an issue on GitHub.") } + /** + * Initialize [de.griefed.serverpackcreator.api.versionmeta.VersionMeta], [ConfigurationHandler]. + * + * @author Griefed + */ @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) - override fun stageTwo() { + fun stageTwo() { versionMeta configurationHandler } + /** + * Initialize [ApiPlugins], [de.griefed.serverpackcreator.api.modscanning.ModScanner] (consisting of [TomlParser], + * [de.griefed.serverpackcreator.api.modscanning.ForgeAnnotationScanner], + * [de.griefed.serverpackcreator.api.modscanning.FabricScanner], + * [de.griefed.serverpackcreator.api.modscanning.ForgeTomlScanner], + * [de.griefed.serverpackcreator.api.modscanning.QuiltScanner]), + * [ServerPackHandler]. + * + * @author Griefed + */ @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) - override fun stageThree() { + fun stageThree() { apiPlugins forgeAnnotationScanner + forgeTomlScanner + neoForgeTomlScanner fabricScanner quiltScanner modScanner serverPackHandler } - override fun checkServerFilesFile(fileToCheckFor: File) = utilities.jarUtilities.copyFileFromJar( + /** + * Check whether the specified server-files file exists and create it if it doesn't. + * + * @param fileToCheckFor The file which is to be checked for whether it exists and if it doesn't, + * should be created. + * @return `true` if the file was generated. + * @author Griefed + */ + fun checkServerFilesFile(fileToCheckFor: File) = utilities.jarUtilities.copyFileFromJar( "de/griefed/resources/server_files/${fileToCheckFor.name}", File(apiProperties.serverFilesDirectory, fileToCheckFor.name), this.javaClass ) - override fun overwriteServerFilesFile(fileToOverwrite: File) { + /** + * Overwrite the specified server-files file, even when it exists. Used to ensure files like the + * default script templates are always up-to-date. + * + * @param fileToOverwrite The file which is to be overwritten. If it exists. it is first deleted, + * then extracted from our JAR-file. + * @author Griefed + */ + fun overwriteServerFilesFile(fileToOverwrite: File) { File(apiProperties.serverFilesDirectory, fileToOverwrite.name).deleteQuietly() checkServerFilesFile(fileToOverwrite) } diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigCheck.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ConfigCheck.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ConfigCheck.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ConfigCheck.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt similarity index 63% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt index e392c34ac..dbc02f577 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandler.kt @@ -21,12 +21,13 @@ package de.griefed.serverpackcreator.api import Translations import com.fasterxml.jackson.databind.JsonNode -import de.griefed.serverpackcreator.api.utilities.File import de.griefed.serverpackcreator.api.utilities.common.InvalidFileTypeException import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.utilities.common.isNotValidZipFile import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import mu.KotlinLogging import net.lingala.zip4j.ZipFile +import java.io.File import java.io.IOException import java.net.URI import java.nio.file.* @@ -49,15 +50,41 @@ import java.util.regex.PatternSyntaxException * * @author Griefed */ -actual class ConfigurationHandler( +class ConfigurationHandler( private val versionMeta: VersionMeta, private val apiProperties: ApiProperties, private val utilities: Utilities, private val apiPlugins: ApiPlugins -) : Configuration<File, Path>() { +) { private val zipRegex = "\\.[Zz][Ii][Pp]".toRegex() - - actual override fun checkConfiguration(configFile: File, packConfig: PackConfig, configCheck: ConfigCheck, quietCheck: Boolean): ConfigCheck { + protected val log by lazy { KotlinLogging.logger {} } + protected val forge = "^forge$".toRegex() + protected val neoForge = "^neoforge$".toRegex() + protected val fabric = "^fabric$".toRegex() + protected val quilt = "^quilt$".toRegex() + protected val legacyFabric = "^legacyfabric$".toRegex() + protected val whitespace = "^\\s+$".toRegex() + protected val previous = ".*_\\d".toRegex() + protected val zipCheck = "^\\w+[/\\\\]$".toRegex() + + /** + * Check the passed configuration-file. If any check returns `true` then the server pack + * will not be created. In order to find out which check failed, the user has to check their + * serverpackcreator.log in the logs-directory. + * + * @param configFile The configuration file to check. Must either be an existing file to + * load a configuration from or null if you want to use the passed + * configuration model. + * @param packConfig Instance of a configuration of a modpack. Can be used to further + * display or use any information within, as it may be changed or + * otherwise altered by this method. + * @param configCheck Contains all encountered errors during the check of the passed configuration. + * @param quietCheck Whether the configuration should be printed to the console and logs. + * Pass false to quietly check the configuration. + * @return `false` if the configuration has passed all tests. + * @author Griefed + */ + fun checkConfiguration(configFile: File, packConfig: PackConfig = PackConfig(), configCheck: ConfigCheck = ConfigCheck(), quietCheck: Boolean = false): ConfigCheck { try { val fileConf = PackConfig(utilities, configFile) packConfig.setClientMods(fileConf.clientMods) @@ -88,7 +115,24 @@ actual class ConfigurationHandler( } } - actual override fun checkConfiguration(packConfig: PackConfig, configCheck: ConfigCheck, quietCheck: Boolean): ConfigCheck { + /** + * Check the passed [packConfig]. If any check returns `true` then the server + * pack will not be created. In order to find out which check failed, the user has to check their + * serverpackcreator.log in the logs-directory. + * + * The passed [packConfig] can be used to further display or use any information within, as it may be changed or otherwise + * altered by this method. + * + * @param packConfig Instance of a configuration of a modpack. Can be used to further + * display or use any information within, as it may be changed or + * otherwise altered by this method. + * @param configCheck Contains all encountered errors during the check of the passed configuration. + * @param quietCheck Whether the configuration should be printed to the console and logs. + * Pass false to quietly check the configuration. + * @return `false` if all checks are passed. + * @author Griefed + */ + fun checkConfiguration(packConfig: PackConfig, configCheck: ConfigCheck = ConfigCheck(), quietCheck: Boolean = false): ConfigCheck { sanitizeLinks(packConfig) log.info("Checking configuration...") if (packConfig.clientMods.isEmpty()) { @@ -126,6 +170,7 @@ actual class ConfigurationHandler( if (modpack.isDirectory) { isDir(packConfig, configCheck) } else if (modpack.isFile && modpack.name.endsWith("zip")) { + packConfig.source = ModpackSource.ZIP try { isZip(packConfig, configCheck) } catch (ex: IOException) { @@ -155,6 +200,8 @@ actual class ConfigurationHandler( log.error("There's something wrong with your Minecraft version setting.") } + checkForProjectInformation(packConfig) + apiPlugins.runConfigCheckExtensions(packConfig, configCheck) if (quietCheck) { @@ -170,7 +217,53 @@ actual class ConfigurationHandler( return configCheck } - actual override fun checkModloader(modloader: String, configCheck: ConfigCheck): ConfigCheck { + /** + * Check for minecraftinstance.json and profile.json and if either is present, try to obtain the project- and + * fileIDs as well as the modpack distribution-platform (Modrinth or CurseForge). + * + * @author Griefed + */ + fun checkForProjectInformation(packConfig: PackConfig) { + val modpackDirectory = File(packConfig.modpackDir) + if (!modpackDirectory.isDirectory) { + log.info("Modpack is not a directory. Skipping project information gathering.") + return + } + val instance = File(modpackDirectory, "minecraftinstance.json") + val profile = File(modpackDirectory, "profile.json") + var projectID: String? = null + var versionID: String? = null + var source: ModpackSource = packConfig.source + + try { + if (instance.isFile) { + projectID = utilities.jsonUtilities.getJson(instance).get("projectID").asText() + versionID = utilities.jsonUtilities.getJson(instance).get("fileID").asText() + source = ModpackSource.CURSEFORGE + } else if (profile.isFile) { + projectID = utilities.jsonUtilities.getJson(profile).get("metadata").get("linked_data").get("project_id").asText() + versionID = utilities.jsonUtilities.getJson(profile).get("metadata").get("linked_data").get("version_id").asText() + source = ModpackSource.MODRINTH + } + } catch (ex: NullPointerException) { + log.error("Could not retrieve project and/or file IDs.", ex) + } + + if (projectID != null && versionID != null && source != packConfig.source) { + packConfig.projectID = projectID + packConfig.versionID = versionID + packConfig.source = source + } + } + + /** + * Checks whether either Forge or Fabric were specified as the modloader. + * + * @param modloader Check as case-insensitive for Forge or Fabric. + * @return `true` if the specified modloader is either Forge or Fabric. False if neither. + * @author Griefed + */ + fun checkModloader(modloader: String, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck { if (!modloader.lowercase().matches(forge) && !modloader.lowercase().matches(neoForge) && !modloader.lowercase().matches(fabric) @@ -183,7 +276,15 @@ actual class ConfigurationHandler( return configCheck } - actual override fun sanitizeLinks(packConfig: PackConfig) { + /** + * Sanitize any and all links in a given instance of [PackConfig] modpack-directory, + * server-icon path, server-properties path, Java path and copy-directories entries. + * + * @param packConfig Instance of [PackConfig] in which to sanitize links to + * their respective destinations. + * @author Griefed + */ + fun sanitizeLinks(packConfig: PackConfig) { log.info("Checking configuration for links...") if (packConfig.modpackDir.isNotEmpty() && utilities.fileUtilities.isLink(packConfig.modpackDir)) { try { @@ -242,13 +343,36 @@ actual class ConfigurationHandler( } } - actual override fun checkIconAndProperties(iconOrPropertiesPath: String) = if (iconOrPropertiesPath.isEmpty()) { + /** + * Checks the passed String whether it is an existing file. If the passed String is empty, then + * ServerPackCreator will treat it as the user being fine with the default files and return the + * corresponding boolean. + * + * @param iconOrPropertiesPath The path to the custom server-icon.png or server.properties file to + * check. + * @return `true` if the file exists or an empty String was passed, false if a file was + * specified, but the file was not found. + * @author Griefed + */ + fun checkIconAndProperties(iconOrPropertiesPath: String) = if (iconOrPropertiesPath.isEmpty()) { true } else { File(iconOrPropertiesPath).isFile } - actual override fun isDir(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck { + /** + * If the in the configuration specified modpack dir is an existing directory, checks are made for + * valid configuration of: directories to copy to server pack, if includeServerInstallation is + * `true` path to Java executable/binary, Minecraft version, modloader and modloader + * version. + * + * @param packConfig An instance of [PackConfig] which contains the + * configuration of the modpack. + * @param configCheck Contains all encountered errors during the check of the passed configuration. + * @return `true` if an error is found during configuration check. + * @author Griefed + */ + fun isDir(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck { if (checkInclusions(packConfig.inclusions, packConfig.modpackDir, configCheck).inclusionsChecksPassed) { log.debug("copyDirs setting check passed.") } else { @@ -258,8 +382,20 @@ actual class ConfigurationHandler( return configCheck } + /** + * Checks the specified ZIP-archive for validity. In order for a modpack ZIP-archive to be + * considered valid, it needs to contain the `mods` and `config` folders at minimum. + * If any of `manifest.json`, `minecraftinstance.json` or `config.json` are + * available, gather as much information from them as possible. + * + * @param packConfig Instance of [PackConfig] with a server pack + * configuration. + * @param configCheck Collection of encountered errors, if any, for convenient result-checks. + * @return `false` when no errors were encountered. + * @author Griefed + */ @Throws(IOException::class) - actual override fun isZip(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck { + fun isZip(packConfig: PackConfig, configCheck: ConfigCheck): ConfigCheck { // modpackDir points at a ZIP-file. Get the path to the would be modpack directory. val name = File(packConfig.modpackDir).name val cleaned = name.replace(zipRegex, "") @@ -314,8 +450,20 @@ actual class ConfigurationHandler( return configCheck } - actual override fun checkModloaderVersion( - modloader: String, modloaderVersion: String, minecraftVersion: String, configCheck: ConfigCheck + /** + * Check the given Minecraft and modloader versions for the specified modloader. + * + * @param modloader The passed modloader which determines whether the check for Forge or + * Fabric is called. + * @param modloaderVersion The version of the modloader which is checked against the corresponding + * modloader's manifest. + * @param minecraftVersion The version of Minecraft used for checking the Forge version. + * @return `true` if the specified modloader version was found in the corresponding + * manifest. + * @author Griefed + */ + fun checkModloaderVersion( + modloader: String, modloaderVersion: String, minecraftVersion: String, configCheck: ConfigCheck = ConfigCheck() ): ConfigCheck { when (modloader) { "Forge" -> if (!versionMeta.forge.isForgeAndMinecraftCombinationValid(minecraftVersion, modloaderVersion)) { @@ -369,7 +517,69 @@ actual class ConfigurationHandler( return configCheck } - actual override fun ensureScriptSettingsDefaults(packConfig: PackConfig) { + /** + * Convenience method which passes the important fields from an instance of + * [PackConfig] to + * [.printConfigurationModel] + * + * @param packConfig Instance of [PackConfig] to print to console and logs. + * @author Griefed + */ + fun printConfigurationModel(packConfig: PackConfig) = printConfigurationModel( + packConfig.modpackDir, + packConfig.clientMods, + packConfig.inclusions, + packConfig.minecraftVersion, + packConfig.modloader, + packConfig.modloaderVersion, + packConfig.isServerIconInclusionDesired, + packConfig.isServerPropertiesInclusionDesired, + packConfig.isZipCreationDesired, + packConfig.javaArgs, + packConfig.serverPackSuffix, + packConfig.serverIconPath, + packConfig.serverPropertiesPath, + packConfig.scriptSettings + ) + + /** + * Print all encountered errors to logs. + * + * @param encounteredErrors A list of all errors which were encountered during a configuration + * check. + * @author Griefed + */ + fun printEncounteredErrors(encounteredErrors: List<String>) { + log.error("Encountered ${encounteredErrors.size} errors during the configuration check.") + var encounteredErrorNumber: Int + for (i in encounteredErrors.indices) { + encounteredErrorNumber = i + 1 + log.error("Error $encounteredErrorNumber: ${encounteredErrors[i]}") + } + } + + /** + * Update the script settings and ensure the default keys, with values gathered from the passed + * [PackConfig], are present: + * + * + * 1. `SPC_SERVERPACKCREATOR_VERSION_SPC` : `ServerPackCreator version with which the scripts were created` + * 1. `SPC_MINECRAFT_VERSION_SPC` : `Minecraft version of the modpack` + * 1. `SPC_MINECRAFT_SERVER_URL_SPC` : `Download-URL to the Minecraft server + ` * + * 1. `SPC_MODLOADER_SPC` : `The modloader of the modpack` + * 1. `SPC_MODLOADER_VERSION_SPC` : `The modloader version of the modpack + ` * + * 1. `SPC_JAVA_ARGS_SPC` : `The JVM args to be used to run the server` + * 1. `SPC_JAVA_SPC` : `Path to the java installation to be used to run the server` + * 1. `SPC_FABRIC_INSTALLER_VERSION_SPC` : `Most recent version of the Fabric installer at the time of creating the scripts` + * 1. `SPC_QUILT_INSTALLER_VERSION_SPC` : `Most recent version of the Quilt installer at the time of creating the scripts` + * + * + * @param packConfig Model in which to ensure the default key-value pairs are present. + * @author Griefed + */ + fun ensureScriptSettingsDefaults(packConfig: PackConfig) { val server = versionMeta.minecraft.getServer(packConfig.minecraftVersion) if (!server.isPresent || !server.get().url().isPresent) { packConfig.scriptSettings["SPC_MINECRAFT_SERVER_URL_SPC"] = "" @@ -397,11 +607,27 @@ actual class ConfigurationHandler( } - actual override fun checkInclusions( + /** + * Checks whether the passed list of directories which are supposed to be in the modpack directory + * is empty, or whether all directories in the list exist in the modpack directory. If the user + * specified a `source/file;destination/file`-combination, it is checked whether the + * specified source-file exists on the host. + * + * @param inclusions Directories, or `source/file;destination/file`-combinations, to + * check for existence. + * `source/file;destination/file`-combinations must be absolute + * paths to the source-file. + * @param modpackDir Path to the modpack directory in which to check for existence of the + * passed list of directories. + * @return `true` if every directory was found in the modpack directory. If any single one + * was not found, false is returned. + * @author Griefed + */ + fun checkInclusions( inclusions: MutableList<InclusionSpecification>, modpackDir: String, - configCheck: ConfigCheck, - printLog: Boolean + configCheck: ConfigCheck = ConfigCheck(), + printLog: Boolean = true ): ConfigCheck { val hasLazy = inclusions.any { entry -> entry.source == "lazy_mode" } if (inclusions.isEmpty()) { @@ -473,7 +699,14 @@ actual class ConfigurationHandler( return configCheck } - actual override fun checkZipArchive(pathToZip: String, configCheck: ConfigCheck): ConfigCheck { + /** + * Check a given ZIP-archives contents. If the ZIP-archive only contains one directory, or if it + * contains neither the mods nor the config directories, consider it invalid. + * + * @param pathToZip Path to the ZIP-file to check. + * @author Griefed + */ + fun checkZipArchive(pathToZip: String, configCheck: ConfigCheck = ConfigCheck()): ConfigCheck { try { ZipFile(Paths.get(pathToZip).toFile()).use { if (it.isNotValidZipFile()) { @@ -521,7 +754,15 @@ actual class ConfigurationHandler( return configCheck } - actual override fun unzipDestination(destination: String): String { + /** + * Update the destination to which the ZIP-archive will the extracted to, based on whether a + * directory of the same name already exists. + * + * @param destination The destination to where the ZIP-archive was about to be extracted to. + * @return The destination where the ZIP-archive will be extracted to. + * @author Griefed + */ + fun unzipDestination(destination: String): String { var dest = destination if (File(dest).isDirectory || File("${dest}_0").isDirectory) { var incrementation = 0 @@ -535,7 +776,18 @@ actual class ConfigurationHandler( return File(dest).path } - actual override fun suggestInclusions(modpackDir: String): ArrayList<InclusionSpecification> { + /** + * Creates a list of suggested directories to include in server pack which is later on written to + * a new configuration file. The list of directories to include in the server pack which is + * generated by this method excludes well know directories which would not be needed by a server + * pack. If you have suggestions to this list, open a feature request issue on [GitHub](https://github.com/Griefed/ServerPackCreator/issues/new/choose) + * + * @param modpackDir The directory for which to gather a list of directories to copy to the server + * pack. + * @return Directories inside the modpack, excluding well known client-side only directories. + * @author Griefed + */ + fun suggestInclusions(modpackDir: String): ArrayList<InclusionSpecification> { // This log is meant to be read by the user, therefore we allow translation. log.info("Preparing a list of directories to include in server pack...") var doNotInclude: String @@ -565,7 +817,18 @@ actual class ConfigurationHandler( return dirsInModpack } - actual override fun checkManifests(destination: String, packConfig: PackConfig, configCheck: ConfigCheck): String? { + /** + * Check whether various manifests from various launchers exist and use them to update our + * ConfigurationModel and pack name. + * + * @param destination The destination in which the manifests are. + * @param packConfig The ConfigurationModel to update. + * @param configCheck Collection of encountered errors, if any, for convenient result-checks. + * @return The name of the modpack currently being checked. `null` if the name could not be + * acquired. + * @author Griefed + */ + fun checkManifests(destination: String, packConfig: PackConfig, configCheck: ConfigCheck = ConfigCheck()): String? { var packName: String? = null val manifestJson = File(destination, "manifest.json") val minecraftInstanceJson = File(destination, "minecraftinstance.json") @@ -589,7 +852,7 @@ actual class ConfigurationHandler( instanceJson.exists() -> { // Check instance.json usually created by ATLauncher try { - updateConfigModelFromInstance(packConfig, File(destination, "instance.json")) + updateConfigModelFromATLauncherInstance(packConfig, File(destination, "instance.json")) packName = updatePackName(packConfig, "launcher", "name") } catch (ex: IOException) { log.error("Error parsing config.json from ZIP-file.", ex) @@ -649,7 +912,18 @@ actual class ConfigurationHandler( return packName } - actual override fun checkServerPacksForIncrement(source: String, destination: String): String { + /** + * Check whether a server pack for the given destination already exists and get an incrementor + * based on whether one exists, how many, or none exist. Think if this as the incrementation + * Windows does when a file of the same name is copied. `foo.bar` becomes + * `foo (1).bar` etc. + * + * @param source The name of the modpack. + * @param destination The name of the server pack about to be generated. + * @return An incremented number, based on whether a server pack of the same name already exists. + * @author Griefed + */ + fun checkServerPacksForIncrement(source: String, destination: String): String { // Check whether a server pack for the new destination already exists. // If it does, we need to change it to avoid overwriting any existing files. val modPack = if (File(source).path.matches(previous)) { @@ -671,7 +945,39 @@ actual class ConfigurationHandler( return serverPack + incrementation } - actual override fun printConfigurationModel( + /** + * Prints all passed fields to the console and serverpackcreator.log. Used to show the user the + * configuration before ServerPackCreator starts the generation of the server pack or, if checks + * failed, to show the user their last configuration, so they can more easily identify problems + * with said configuration. + * + * Should a user report an issue on GitHub and include their logs (which I hope they do....), this would also help + * me help them. Logging is good. People should use more logging. + * + * @param modpackDirectory The used modpackDir field either from a configuration file or from + * configuration setup. + * @param clientsideMods List of clientside-only mods to exclude from the server pack... + * @param inclusions List of directories in the modpack which are to be included in the + * server pack. + * @param minecraftVer The Minecraft version the modpack uses. + * @param modloader The modloader the modpack uses. + * @param modloaderVersion The version of the modloader the modpack uses. + * @param includeIcon Whether to include the server-icon.png in the server pack. + * @param includeProperties Whether to include the server.properties in the server pack. + * @param includeZip Whether to create a zip-archive of the server pack, excluding the + * Minecraft server JAR according to Mojang's TOS and EULA. + * @param javaArgs Java arguments to write the start-scripts with. + * @param serverPackSuffix Suffix to append to name of the server pack to be generated. + * @param serverIconPath The path to the custom server-icon.png to be used in the server + * pack. + * @param serverPropertiesPath The path to the custom server.properties to be used in the server + * pack. + * @param scriptSettings Custom settings for start script creation. `KEY`s are the + * placeholder, `VALUE`s are the values with which the + * placeholders are to be replaced. + * @author Griefed + */ + fun printConfigurationModel( modpackDirectory: String, clientsideMods: List<String>, inclusions: List<InclusionSpecification>, @@ -724,6 +1030,13 @@ actual class ConfigurationHandler( } } + /** + * Acquire a list of directories in the base-directory of a ZIP-file. + * + * @param zipFile The ZIP-archive to get the list of files from. + * @return All directories in the base-directory of the ZIP-file. + * @author Griefed + */ @Throws( IllegalArgumentException::class, FileSystemAlreadyExistsException::class, @@ -731,7 +1044,7 @@ actual class ConfigurationHandler( IOException::class, SecurityException::class ) - actual override fun getDirectoriesInModpackZipBaseDirectory(zipFile: File): List<String> { + fun getDirectoriesInModpackZipBaseDirectory(zipFile: File): List<String> { val baseDirectories: TreeSet<String> = TreeSet() var headerBeginning: String ZipFile(zipFile).use { @@ -751,8 +1064,20 @@ actual class ConfigurationHandler( return baseDirectories.toList() } + /** + * **`manifest.json`** + * + * Update the given ConfigurationModel with values gathered from the downloaded CurseForge + * modpack. A manifest.json-file is usually created when a modpack is exported through launchers + * like Overwolf's CurseForge or GDLauncher. + * + * @param packConfig An instance containing a configuration for a modpack from which to + * create a server pack. + * @param manifest The CurseForge manifest.json-file of the modpack to read. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromCurseManifest(packConfig: PackConfig, manifest: File) { + fun updateConfigModelFromCurseManifest(packConfig: PackConfig, manifest: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(manifest) val minecraft = packConfig.modpackJson!!.get("minecraft") val modloaders = minecraft.get("modLoaders").get(0) @@ -763,7 +1088,17 @@ actual class ConfigurationHandler( packConfig.modloaderVersion = modloaderAndVersion[1] } - actual override fun updatePackName(packConfig: PackConfig, vararg childNodes: String) = try { + /** + * Acquire the modpacks name from the JSON previously acquired and stored in the + * ConfigurationModel. + * + * @param packConfig The ConfigurationModel containing the JsonNode from which to acquire + * the modpacks name. + * @param childNodes The child nodes, in order, which contain the requested packname. + * @return The new name of the modpack. + * @author Griefed + */ + fun updatePackName(packConfig: PackConfig, vararg childNodes: String) = try { val modpackDir = apiProperties.modpacksDirectory.toString() val packName = packConfig.modpackJson?.let { utilities.jsonUtilities.getNestedText( @@ -775,8 +1110,19 @@ actual class ConfigurationHandler( null } + /** + * **`minecraftinstance.json`** + * + * Update the given ConfigurationModel with values gathered from the minecraftinstance.json of + * the modpack. A minecraftinstance.json is usually created by Overwolf's CurseForge launcher. + * + * @param packConfig An instance containing a configuration for a modpack from which to + * create a server pack. + * @param minecraftInstance The minecraftinstance.json-file of the modpack to read. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromMinecraftInstance(packConfig: PackConfig, minecraftInstance: File) { + fun updateConfigModelFromMinecraftInstance(packConfig: PackConfig, minecraftInstance: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(minecraftInstance) val json = packConfig.modpackJson!! val base = json.get("baseModLoader") @@ -795,8 +1141,17 @@ actual class ConfigurationHandler( } } + /** + * **`modrinth.index.json`** + * + * Update the given ConfigurationModel with values gathered from a Modrinth `modrinth.index.json`-manifest. + * + * @param packConfig The model to update. + * @param manifest The manifest file. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromModrinthManifest(packConfig: PackConfig, manifest: File) { + fun updateConfigModelFromModrinthManifest(packConfig: PackConfig, manifest: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(manifest) val dependencies = packConfig.modpackJson!!.get("dependencies") packConfig.minecraftVersion = dependencies.get("minecraft").asText() @@ -822,44 +1177,26 @@ actual class ConfigurationHandler( } } + /** + * **`instance.json`** + * + * Update the given ConfigurationModel with values gathered from a ATLauncher manifest. + * + * @param packConfig The model to update. + * @param manifest The manifest file. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromInstance(packConfig: PackConfig, manifest: File) { + fun updateConfigModelFromATLauncherInstance(packConfig: PackConfig, manifest: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(manifest) val json = packConfig.modpackJson!! - val urlPath: Array<String> - val namePath: Array<String> - if (json.get("id") != null) { - //ATLauncher - packConfig.minecraftVersion = json.get("id").asText() - packConfig.modloader = json.get("launcher").get("loaderVersion").get("type").asText() - packConfig.modloaderVersion = json.get("launcher").get("loaderVersion").get("version").asText() - urlPath = arrayOf("launcher", "curseForgeProject", "logo", "thumbnailUrl") - namePath = arrayOf("launcher", "name") - } else { - //xmcl - val runtime = json.get("runtime") - packConfig.minecraftVersion = runtime.get("minecraft").asText() - urlPath = arrayOf("icon") - namePath = arrayOf("name") - when { - runtime.get("forge").asText().isNotBlank() -> { - packConfig.modloader = "Forge" - packConfig.modloaderVersion = runtime.get("forge").asText() - } - runtime.get("fabricLoader").asText().isNotBlank() -> { - packConfig.modloader = "Fabric" - packConfig.modloaderVersion = runtime.get("fabricLoader").asText() - } - runtime.get("quiltLoader").asText().isNotBlank() -> { - packConfig.modloader = "Quilt" - packConfig.modloaderVersion = runtime.get("quiltLoader").asText() - } - runtime.get("neoForged").asText().isNotBlank() -> { - packConfig.modloader = "NeoForge" - packConfig.modloaderVersion = runtime.get("neoForged").asText() - } - } - } + packConfig.minecraftVersion = json.get("id").asText() + val launcher = json.get("launcher") + val loaderVersion = launcher.get("loaderVersion") + packConfig.modloader = loaderVersion.get("type").asText() + packConfig.modloaderVersion = loaderVersion.get("version").asText() + val urlPath = arrayOf("launcher", "curseForgeProject", "logo", "thumbnailUrl") + val namePath = arrayOf("launcher", "name") try { getAndSetIcon(json, packConfig, urlPath, namePath) } catch (_: NullPointerException) { @@ -878,8 +1215,19 @@ actual class ConfigurationHandler( } } + /** + * **`config.json`** + * + * Update the given ConfigurationModel with values gathered from the modpacks config.json. A + * config.json is usually created by GDLauncher. + * + * @param packConfig An instance containing a configuration for a modpack from which to + * create a server pack. + * @param config The config.json-file of the modpack to read. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromConfigJson(packConfig: PackConfig, config: File) { + fun updateConfigModelFromConfigJson(packConfig: PackConfig, config: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(config) val loader = packConfig.modpackJson!!.get("loader") packConfig.modloader = getModLoaderCase(loader.get("loaderType").asText()) @@ -888,8 +1236,20 @@ actual class ConfigurationHandler( loader.get("loaderVersion").asText().replace(packConfig.minecraftVersion + "-", "") } + /** + * **`mmc-pack.json`** + * + * + * Update the given ConfigurationModel with values gathered from the modpacks mmc-pack.json. A + * mmc-pack.json is usually created by the MultiMC launcher. + * + * @param packConfig An instance containing a configuration for a modpack from which to + * create a server pack. + * @param mmcPack The config.json-file of the modpack to read. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateConfigModelFromMMCPack(packConfig: PackConfig, mmcPack: File) { + fun updateConfigModelFromMMCPack(packConfig: PackConfig, mmcPack: File) { packConfig.modpackJson = utilities.jsonUtilities.getJson(mmcPack) val components = packConfig.modpackJson!!.get("components") for (jsonNode in components) { @@ -914,8 +1274,18 @@ actual class ConfigurationHandler( } } + /** + * **`instance.cfg`** + * + * Acquire the name of the modpack/instance of a MultiMC modpack from the modpacks + * instance.cfg, which is usually created by the MultiMC launcher. + * + * @param instanceCfg The config.json-file of the modpack to read. + * @return The instance name. + * @author Griefed + */ @Throws(IOException::class) - actual override fun updateDestinationFromInstanceCfg(instanceCfg: File): String { + fun updateDestinationFromInstanceCfg(instanceCfg: File): String { var name: String instanceCfg.inputStream().use { val properties = Properties() @@ -925,25 +1295,79 @@ actual class ConfigurationHandler( return name } - actual override fun checkModpackDir( + /** + * Ensures the modloader is normalized to first letter upper case and rest lower case. Basically + * allows the user to input Forge or Fabric in any combination of upper- and lowercase and + * ServerPackCreator will still be able to work with the users input. + * + * @param modloader Modloader String-representation to normalize. + * @return A normalized String of the specified modloader. + * @author Griefed + */ + fun getModLoaderCase(modloader: String) = when { + modloader.lowercase().matches(forge) || modloader.lowercase().contains("forge") && + !(modloader.lowercase().matches(neoForge) || modloader.lowercase().contains("NeoForge"))-> { + "Forge" + } + modloader.lowercase().matches(fabric) || modloader.lowercase().contains("fabric") -> { + "Fabric" + } + modloader.lowercase().matches(quilt) || modloader.lowercase().contains("quilt") -> { + "Quilt" + } + modloader.lowercase().matches(legacyFabric) || modloader.lowercase().contains("legacyfabric") -> { + "LegacyFabric" + } + modloader.lowercase().matches(neoForge) || modloader.lowercase().contains("NeoForge") -> { + "NeoForge" + } + else -> { + log.warn { "No suitable modloader found. Defaulting to Forge." } + "Forge" + } + } + + /** + * Check the passed directory for existence and whether it is a directory, rather than a file. + * + * @param modpackDir The modpack directory. + * @param configCheck Collection of encountered errors, if any, for convenient result-checks. + * @return `true` if the directory exists. + * @author Griefed + */ + fun checkModpackDir( modpackDir: String, - configCheck: ConfigCheck, - printLog: Boolean + configCheck: ConfigCheck = ConfigCheck(), + printLog: Boolean = true ): ConfigCheck { + val modpack = File(modpackDir) if (modpackDir.isEmpty()) { if (printLog) { log.error("Modpack directory not specified. Please specify an existing directory.") } configCheck.modpackErrors.add(Translations.configuration_log_error_checkmodpackdir.toString()) - } else if (!File(modpackDir).exists()) { + } else if (!modpack.exists()) { if (printLog) { log.warn("Couldn't find directory $modpackDir.") } configCheck.modpackErrors.add(Translations.configuration_log_error_modpackdirectory(modpackDir)) + } else if (modpack.isDirectory){ + val files = modpack.listFiles { entry -> entry.isDirectory } + if (files.any { entry -> entry.name == "overrides" }) { + log.error("Modpack contains directory \"overrides\". Modpacks must be installed through a client such as CurseForge, GDLauncher, MultiMC etc. Full modpacks shouldn't contain the overrides directory anymore.") + configCheck.modpackErrors.add(Translations.configuration_log_error_modpack_overrides.toString()) + } } return configCheck } + /** + * Acquire a list of all files and directories in a ZIP-file. + * + * @param zipFile The ZIP-archive to get the list of files from. + * @return All files and directories in the ZIP-file. + * @author Griefed + */ @Throws( IllegalArgumentException::class, FileSystemAlreadyExistsException::class, @@ -951,7 +1375,7 @@ actual class ConfigurationHandler( IOException::class, SecurityException::class ) - actual override fun getAllFilesAndDirectoriesInModpackZip(zipFile: File): List<String> { + fun getAllFilesAndDirectoriesInModpackZip(zipFile: File): List<String> { val filesAndDirectories: MutableList<String> = ArrayList(100) try { filesAndDirectories.addAll(getDirectoriesInModpackZip(zipFile)) @@ -966,6 +1390,13 @@ actual class ConfigurationHandler( return filesAndDirectories } + /** + * Acquire a list of all directories in a ZIP-file. The resulting list excludes files. + * + * @param zipFile The ZIP-archive to get the list of files from. + * @return All directories in the ZIP-file. + * @author Griefed + */ @Throws( IllegalArgumentException::class, FileSystemAlreadyExistsException::class, @@ -973,7 +1404,7 @@ actual class ConfigurationHandler( IOException::class, SecurityException::class ) - actual override fun getDirectoriesInModpackZip(zipFile: java.io.File): List<String> { + fun getDirectoriesInModpackZip(zipFile: File): List<String> { val directories: MutableList<String> = ArrayList(100) ZipFile(zipFile).use { for (header in it.fileHeaders) { @@ -985,6 +1416,13 @@ actual class ConfigurationHandler( return directories } + /** + * Acquire a list of all files in a ZIP-file. The resulting list excludes directories. + * + * @param zipFile The ZIP-archive to get the list of files from. + * @return All files in the ZIP-file. + * @author Griefed + */ @Throws( IllegalArgumentException::class, FileSystemAlreadyExistsException::class, @@ -992,7 +1430,7 @@ actual class ConfigurationHandler( IOException::class, SecurityException::class ) - actual override fun getFilesInModpackZip(zipFile: java.io.File): List<String> { + fun getFilesInModpackZip(zipFile: File): List<String> { val files: MutableList<String> = ArrayList(100) ZipFile(zipFile).use { for (header in it.fileHeaders) { diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ExclusionFilter.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ExclusionFilter.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/ExclusionFilter.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ExclusionFilter.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt similarity index 84% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt index 3e264bdc3..0fff0137e 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/InclusionSpecification.kt @@ -38,30 +38,30 @@ package de.griefed.serverpackcreator.api * * @author Griefed */ -actual class InclusionSpecification actual constructor( - actual var source: String, - actual var destination: String?, - actual var inclusionFilter: String?, - actual var exclusionFilter: String? +class InclusionSpecification( + var source: String, + var destination: String? = null, + var inclusionFilter: String? = null, + var exclusionFilter: String? = null ) { - actual fun hasInclusionFilter(): Boolean { + fun hasInclusionFilter(): Boolean { return inclusionFilter != null && inclusionFilter!!.isNotBlank() } - actual fun hasExclusionFilter(): Boolean { + fun hasExclusionFilter(): Boolean { return exclusionFilter != null && exclusionFilter!!.isNotBlank() } - actual fun hasDestination(): Boolean { + fun hasDestination(): Boolean { return !destination.isNullOrBlank() } - actual fun isGlobalFilter(): Boolean { + fun isGlobalFilter(): Boolean { return (source.isBlank() && hasInclusionFilter()) || (source.isBlank() && hasExclusionFilter()) } - actual fun asHashMap(): HashMap<String,String> { + fun asHashMap(): HashMap<String,String> { val map = HashMap<String,String>() map["source"] = source map["destination"] = destination ?: "" diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackSource.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ModpackSource.kt similarity index 91% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackSource.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ModpackSource.kt index b472a1495..51559cf1c 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackSource.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ModpackSource.kt @@ -17,8 +17,8 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.modpack +package de.griefed.serverpackcreator.api enum class ModpackSource { - ZIP, MODRINTH + ZIP, MODRINTH, CURSEFORGE, DIRECTORY } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt similarity index 82% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt index 322784c0d..fc256ba2c 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/PackConfig.kt @@ -183,8 +183,54 @@ private val scriptSettingsDefaultKeys = arrayOf( * * @author Griefed */ -actual open class PackConfig actual constructor() : Pack<File, JsonNode, PackConfig>() { - private val log = cachedLoggerOf(this.javaClass) +open class PackConfig() { + private val log by lazy { cachedLoggerOf(this.javaClass) } + + val forge = "^forge$".toRegex() + val neoForge = "^neoforge$".toRegex() + val fabric = "^fabric$".toRegex() + val quilt = "^quilt$".toRegex() + val legacyFabric = "^legacyfabric$".toRegex() + val whitespace = "^\\s+$".toRegex() + + val clientMods: ArrayList<String> = ArrayList(1000) + val modsWhitelist: ArrayList<String> = ArrayList(1000) + val inclusions: ArrayList<InclusionSpecification> = ArrayList(100) + val scriptSettings = HashMap<String, String>(100) + val pluginsConfigs = HashMap<String, ArrayList<CommentedConfig>>(20) + var modpackDir = "" + var minecraftVersion = "" + var modloaderVersion = "" + var javaArgs = "" + var serverPackSuffix = "" + var serverIconPath = "" + var serverPropertiesPath = "" + var modloader = "" + set(newModLoader) { + if (newModLoader.lowercase().matches(forge)) { + field = "Forge" + } else if (newModLoader.lowercase().matches(neoForge)) { + field = "NeoForge" + } else if (newModLoader.lowercase().matches(fabric)) { + field = "Fabric" + } else if (newModLoader.lowercase().matches(quilt)) { + field = "Quilt" + } else if (newModLoader.lowercase().matches(legacyFabric)) { + field = "LegacyFabric" + } + } + var isServerIconInclusionDesired = true + var isServerPropertiesInclusionDesired = true + var isZipCreationDesired = true + var modpackJson: JsonNode? = null + var configVersion: String? = null + + open var projectID: String? = null + open var versionID: String? = null + open var source: ModpackSource = ModpackSource.DIRECTORY + open var fileName: String? = null + open var fileDiskName: String? = null + /** * Construct a new configuration model with custom values. * @@ -206,7 +252,7 @@ actual open class PackConfig actual constructor() : Pack<File, JsonNode, PackCon * @param pluginsConfigs Configuration for any and all plugins used by this configuration. * @author Griefed */ - actual constructor( + constructor( clientMods: List<String>, whitelist: List<String>, copyDirs: List<InclusionSpecification>, @@ -366,7 +412,7 @@ actual open class PackConfig actual constructor() : Pack<File, JsonNode, PackCon } @Suppress("DuplicatedCode") - actual override fun save(destination: File, apiProperties: ApiProperties): PackConfig { + fun save(destination: File, apiProperties: ApiProperties): PackConfig { val conf = TomlFormat.instance().createConfig() conf.setComment(configVersionKey, configVersionComment) @@ -441,4 +487,58 @@ actual open class PackConfig actual constructor() : Pack<File, JsonNode, PackCon .write(conf, destination, WritingMode.REPLACE, StandardCharsets.UTF_8) return this } + + fun setPluginsConfigs(pluginConfigs: HashMap<String, ArrayList<CommentedConfig>>) { + this.pluginsConfigs.clear() + this.pluginsConfigs.putAll(pluginConfigs) + } + + fun getPluginConfigs(pluginId: String): ArrayList<CommentedConfig> { + if (!pluginsConfigs.containsKey(pluginId)) { + pluginsConfigs[pluginId] = java.util.ArrayList(100) + } + return pluginsConfigs[pluginId]!! + } + + fun setClientMods(newClientMods: MutableList<String>) { + clientMods.clear() + newClientMods.removeIf { entry: String -> entry.isBlank() || entry.matches(whitespace) } + clientMods.addAll(newClientMods) + } + + fun setModsWhitelist(newModsWhitelist: MutableList<String>) { + modsWhitelist.clear() + newModsWhitelist.removeIf { entry: String -> entry.isBlank() || entry.matches(whitespace) } + modsWhitelist.addAll(newModsWhitelist) + } + + fun setInclusions(newCopyDirs: ArrayList<InclusionSpecification>) { + inclusions.clear() + inclusions.addAll(newCopyDirs) + } + + fun setScriptSettings(settings: HashMap<String, String>) { + scriptSettings.clear() + scriptSettings.putAll(settings) + } + + override fun toString(): String { + return "Pack(" + + " clientMods=$clientMods," + + " whiteList=$modsWhitelist," + + " copyDirs=$inclusions," + + " scriptSettings=$scriptSettings," + + " pluginsConfigs=$pluginsConfigs," + + " modpackDir='$modpackDir'," + + " minecraftVersion='$minecraftVersion'," + + " modloaderVersion='$modloaderVersion'," + + " javaArgs='$javaArgs'," + + " serverPackSuffix='$serverPackSuffix'," + + " serverIconPath='$serverIconPath'," + + " serverPropertiesPath='$serverPropertiesPath'," + + " modloader='$modloader'," + + " isServerIconInclusionDesired=$isServerIconInclusionDesired," + + " isServerPropertiesInclusionDesired=$isServerPropertiesInclusionDesired," + + " isZipCreationDesired=$isZipCreationDesired)" + } } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt similarity index 97% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt index f3f950f2c..51b3b03b1 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackFile.kt @@ -34,8 +34,8 @@ import java.nio.file.Path * @author Griefed */ @Suppress("MemberVisibilityCanBePrivate") -actual class ServerPackFile { - private val log = cachedLoggerOf(this.javaClass) +class ServerPackFile { + private val log by lazy { cachedLoggerOf(this.javaClass) } val sourceFile: File val sourcePath: Path val destinationFile: File @@ -92,7 +92,7 @@ actual class ServerPackFile { */ @Suppress("removal") @Throws(SecurityException::class, UnsupportedOperationException::class, IOException::class) - actual fun copy(overwrite: Boolean) { + fun copy(overwrite: Boolean = true) { try { sourceFile.copyTo(destinationFile, overwrite) log.debug("Successfully copied ServerPackFile") diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt similarity index 61% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt index f270b25a9..f16475def 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/ServerPackHandler.kt @@ -26,6 +26,7 @@ import de.griefed.serverpackcreator.api.versionmeta.VersionMeta import net.lingala.zip4j.ZipFile import net.lingala.zip4j.model.ExcludeFileFilter import net.lingala.zip4j.model.ZipParameters +import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.awt.Image import java.awt.image.BufferedImage import java.io.File @@ -75,21 +76,67 @@ import kotlin.io.path.absolute * * @author Griefed */ -actual class ServerPackHandler actual constructor( +class ServerPackHandler( private val apiProperties: ApiProperties, private val versionMeta: VersionMeta, private val utilities: Utilities, private val apiPlugins: ApiPlugins, private val modScanner: ModScanner -) : ServerPack<File, TreeSet<String>, TreeSet<File>>() { +) { - override fun getServerPackDestination(packConfig: Pack<*, *, *>): String { + val log by lazy { cachedLoggerOf(this.javaClass) } + val modFileEndings = listOf("jar", "disabled") + val ending = "^\\.[0-9a-zA-Z]+$".toRegex() + val variables = """ + ### + # Remember: + # Escape \ and : in your Java path on Windows with another \ + # Example: + # From: C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot\bin\java.exe + # To: C\:\\Program Files\\Eclipse Adoptium\\jdk-17.0.9.9-hotspot\\bin\\java.exe + # More on escape characters at https://en.wikipedia.org/wiki/Escape_character + ### + MINECRAFT_VERSION=SPC_MINECRAFT_VERSION_SPC + MODLOADER=SPC_MODLOADER_SPC + MODLOADER_VERSION=SPC_MODLOADER_VERSION_SPC + LEGACYFABRIC_INSTALLER_VERSION=SPC_LEGACYFABRIC_INSTALLER_VERSION_SPC + FABRIC_INSTALLER_VERSION=SPC_FABRIC_INSTALLER_VERSION_SPC + QUILT_INSTALLER_VERSION=SPC_QUILT_INSTALLER_VERSION_SPC + MINECRAFT_SERVER_URL=SPC_MINECRAFT_SERVER_URL_SPC + JAVA_ARGS="SPC_JAVA_ARGS_SPC" + JAVA="SPC_JAVA_SPC" + WAIT_FOR_USER_INPUT=SPC_WAIT_FOR_USER_INPUT_SPC + """.trimIndent() + + /** + * Acquire the destination directory in which the server pack will be generated. The directory in + * which the server pack will be created has all its spaces replaces with underscores, so + * `Survive Create Prosper 4 - 5.0.1` would become `Survive_Create_Prosper_4_-_5.0.1 ` + * Even though it is the year 2022, spaces in paths can and do still cause trouble. Such as for + * Powershell scripts. Powershell throws a complete fit if the path contains spaces....so, we + * remove them. Better safe than sorry. + * + * @param packConfig Model containing the modpack directory of the modpack from which the + * server pack will be generated. + * @return The complete path to the directory in which the server pack will be generated. + * @author Griefed + */ + fun getServerPackDestination(packConfig: PackConfig): String { var serverPackToBe = File(packConfig.modpackDir).name + packConfig.serverPackSuffix serverPackToBe = utilities.stringUtilities.pathSecureText(serverPackToBe.replace(" ", "_")) - return File(apiProperties.serverPacksDirectory, serverPackToBe).path + return File(apiProperties.serverPacksDirectory, serverPackToBe).absolutePath } - override fun run(packConfig: PackConfig): Boolean { + /** + * Create a server pack from a given instance of [PackConfig]. + * + * @param packConfig An instance of [PackConfig] which contains the + * configuration of the modpack from which the server pack is to be + * created. + * @return `true` if the server pack was successfully generated. + * @author Griefed + */ + fun run(packConfig: PackConfig): Boolean { //TODO return server pack object with info about it as well as whether it was successful val destination = getServerPackDestination(packConfig) /* * Check whether the server pack for the specified modpack already exists and whether overwrite is disabled. @@ -97,7 +144,7 @@ actual class ServerPackHandler actual constructor( */ val generationStopWatch = SimpleStopWatch().start() try { - File(destination).createDirectories(create = true, directory = true) + File(destination).create(create = true, directory = true) } catch (ignored: IOException) { } @@ -168,7 +215,29 @@ actual class ServerPackHandler actual constructor( return true } - override fun cleanupEnvironment(deleteZip: Boolean, destination: String) { + /** + * Deletes all files, directories and ZIP-archives of previously generated server packs to ensure + * newly generated server pack is as clean as possible. This will completely empty the server pack + * directory, so use with caution! + * + * @param deleteZip Whether to delete the server pack ZIP-archive. + * @param packConfig ConfigurationModel containing the modpack directory from which the + * destination of the server pack is acquired. + * @author Griefed + */ + fun cleanupEnvironment(deleteZip: Boolean, packConfig: PackConfig) = + cleanupEnvironment(deleteZip, getServerPackDestination(packConfig)) + + /** + * Deletes all files, directories and ZIP-archives of previously generated server packs to ensure + * newly generated server pack is as clean as possible. This will completely empty the server pack + * directory, so use with caution! + * + * @param deleteZip Whether to delete the server pack ZIP-archive. + * @param destination The destination at which to clean up in. + * @author Griefed + */ + fun cleanupEnvironment(deleteZip: Boolean, destination: String) { log.info("Found old server pack at $destination. Cleaning up...") deleteExistingServerPack(destination) File(destination).deleteQuietly() @@ -185,7 +254,51 @@ actual class ServerPackHandler actual constructor( File(destination + "_server_pack.zip").deleteQuietly() } - override fun copyFiles( + /** + * Copies all specified directories and mods, excluding clientside-only mods, from the modpack + * directory into the server pack directory. If a `source/file;destination/file` + * -combination is provided, the specified source-file is copied to the specified + * destination-file. One of the reasons as to why it is recommended to run a given + * ConfigurationModel through the ConfigurationHandler first, is because the ConfigurationHandler + * will resolve links to their files first before then correcting the given + * ConfigurationModel. + * + * @param packConfig ConfigurationModel containing the modpack directory, list of + * directories and files to copy, list of clientside-only mods to + * exclude, the Minecraft version used by the modpack and server pack, + * and the modloader used by the modpack and server pack. + * @author Griefed + */ + fun copyFiles(packConfig: PackConfig, overwrite: Boolean = true) = copyFiles( + packConfig.modpackDir, + packConfig.inclusions, + packConfig.clientMods, + packConfig.modsWhitelist, + packConfig.minecraftVersion, + getServerPackDestination(packConfig), + packConfig.modloader, + overwrite + ) + + /** + * Copies all specified directories and mods, excluding clientside-only mods, from the modpack + * directory into the server pack directory. If a `source/file;destination/file` + * -combination is provided, the specified source-file is copied to the specified + * destination-file. One of the reasons as to why it is recommended to run a given + * ConfigurationModel through the ConfigurationHandler first, is because the ConfigurationHandler + * will resolve links to their files first before then correcting the given + * ConfigurationModel. + * + * @param modpackDir Files and directories are copied into the server_pack directory inside + * the modpack directory. + * @param inclusions All directories and files therein to copy to the server pack. + * @param clientMods List of clientside-only mods to exclude from the server pack. + * @param minecraftVersion The Minecraft version the modpack uses. + * @param destination The destination where the files should be copied to. + * @param modloader The modloader used for mod sideness detection. + * @author Griefed + */ + fun copyFiles( modpackDir: String, inclusions: ArrayList<InclusionSpecification>, clientMods: List<String>, @@ -199,7 +312,7 @@ actual class ServerPackHandler actual constructor( var acquired: List<ServerPackFile> val serverPackFiles: MutableList<ServerPackFile> = ArrayList(100000) try { - File(destination).createDirectories() + File(destination).create() } catch (ex: IOException) { log.error("Failed to create directory $destination") } @@ -249,6 +362,72 @@ actual class ServerPackHandler actual constructor( } } + /** + * Download and provide the improved Fabric Server Launcher, if it is available for the given + * Minecraft and Fabric version. + * + * @param packConfig ConfigurationModel containing the Minecraft and Fabric version for + * which to acquire the improved Fabric Server Launcher. + * @author Griefed + */ + fun provideImprovedFabricServerLauncher(packConfig: PackConfig) = getImprovedFabricLauncher( + packConfig.minecraftVersion, packConfig.modloaderVersion, getServerPackDestination(packConfig) + ) + + /** + * Copies the server-icon.png into server pack. The sever-icon is automatically scaled to a + * resolution of 64x64 pixels. + * + * @param packConfig Containing the modpack directory to acquire the destination of the + * server pack and the path to the server icon to copy. + * @author Griefed + */ + fun copyIcon(packConfig: PackConfig) = copyIcon(getServerPackDestination(packConfig), packConfig.serverIconPath) + + /** + * Copies the server.properties into server pack. + * + * @param packConfig Containing the modpack directory to acquire the destination of the + * server pack and the path to the server properties to copy. + * @author Griefed + */ + fun copyProperties(packConfig: PackConfig) = + copyProperties(getServerPackDestination(packConfig), packConfig.serverPropertiesPath) + + /** + * Create start-scripts for the generated server pack using the templates the user has defined for + * their instance of ServerPackCreator in the property `de.griefed.serverpackcreator.serverpack.script.template`. + * + * @param packConfig Configuration model containing modpack specific values. keys to be + * replaced with their respective values in the start scripts, as well + * as the modpack directory from which the destination of the server + * pack is acquired. + * @param isLocal Whether the start scripts should be created for a locally usable + * server pack. Use `false` if the start scripts should be created + * for a server pack about to be zipped. + * @author Griefed + */ + fun createStartScripts(packConfig: PackConfig, isLocal: Boolean) = + createStartScripts(packConfig.scriptSettings, getServerPackDestination(packConfig), isLocal) + + /** + * Creates a ZIP-archive of the server pack previously generated. Depending on the property + * `de.griefed.serverpackcreator.serverpack.zip.exclude.enabled`, files will be excluded. To customize + * the files which will be excluded, see the property `de.griefed.serverpackcreator.serverpack.zip.exclude` + * + * @param packConfig Contains the Minecraft version used by the modpack and server pack, + * whether the modloader server was installed, the modpack directory to + * acquire the destination of the server pack, the modloader used by the + * modpack and server pack and the modloader version. + * @author Griefed + */ + fun zipBuilder(packConfig: PackConfig) = zipBuilder( + packConfig.minecraftVersion, + getServerPackDestination(packConfig), + packConfig.modloader, + packConfig.modloaderVersion + ) + fun getServerFiles( inclusion: InclusionSpecification, modpackDir: String, @@ -308,7 +487,7 @@ actual class ServerPackHandler actual constructor( inclusion.source == "mods" -> { try { - serverDir.createDirectories() + serverDir.create() } catch (ignored: IOException) { } acquired = mutableListOf() @@ -380,7 +559,7 @@ actual class ServerPackHandler actual constructor( for (file in acquired) { if (file.sourceFile.absolutePath.replace(modpackDir + File.separator, "").matches(inclusionFilter)) { processed.add(file) - log.debug("{} matched Inclusion-Filter {}.", file, inclusionFilter) + log.debug("$file matched Inclusion-Filter $inclusionFilter.") } } } else { @@ -390,7 +569,7 @@ actual class ServerPackHandler actual constructor( processed.removeIf { file -> val source = file.sourceFile.absolutePath.replace(modpackDir + File.separator, "") return@removeIf if (source.matches(exclusionFilter)) { - log.debug("{} matched Inclusion-Filter {}.", file.sourceFile, exclusionFilter) + log.debug("${file.sourceFile} matched Inclusion-Filter $exclusionFilter.") true } else { false @@ -400,7 +579,18 @@ actual class ServerPackHandler actual constructor( return processed } - override fun getImprovedFabricLauncher(minecraftVersion: String, fabricVersion: String, destination: String) { + /** + * Download and provide the improved Fabric Server Launcher, if it is available for the given + * Minecraft and Fabric version. + * + * @param minecraftVersion The Minecraft version the modpack uses and the Fabric Server Launcher + * should be downloaded for. + * @param fabricVersion The modloader version the modpack uses and the Fabric Server Launcher + * should be downloaded for. + * @param destination The destination of the server pack. + * @author Griefed + */ + fun getImprovedFabricLauncher(minecraftVersion: String, fabricVersion: String, destination: String) { val fileDestination = File(destination, "fabric-server-launcher.jar") if (versionMeta.fabric.launcherFor(minecraftVersion, fabricVersion).isPresent) { versionMeta.fabric.launcherFor(minecraftVersion, fabricVersion).get().copyTo(fileDestination) @@ -419,7 +609,15 @@ actual class ServerPackHandler actual constructor( } } - override fun copyIcon(destination: String, pathToServerIcon: String) { + /** + * Copies the server-icon.png into server pack. The sever-icon is automatically scaled to a + * resolution of 64x64 pixels. + * + * @param destination The destination where the icon should be copied to. + * @param pathToServerIcon The path to the custom server-icon. + * @author Griefed + */ + fun copyIcon(destination: String, pathToServerIcon: String) { log.info("Copying server-icon.png...") val customIcon = File(destination, apiProperties.defaultServerIcon.name) if (File(pathToServerIcon).exists()) { @@ -454,7 +652,14 @@ actual class ServerPackHandler actual constructor( } } - override fun copyProperties(destination: String, pathToServerProperties: String) { + /** + * Copies the server.properties into server pack. + * + * @param destination The destination where the properties should be copied to. + * @param pathToServerProperties The path to the custom server.properties. + * @author Griefed + */ + fun copyProperties(destination: String, pathToServerProperties: String) { log.info("Copying server.properties...") val customProperties = File(destination, apiProperties.defaultServerProperties.name) if (File(pathToServerProperties).exists()) { @@ -467,7 +672,19 @@ actual class ServerPackHandler actual constructor( } } - override fun createStartScripts(scriptSettings: HashMap<String, String>, destination: String, isLocal: Boolean) { + /** + * Create start-scripts for the generated server pack using the templates the user has defined for + * their instance of ServerPackCreator in the property `de.griefed.serverpackcreator.serverpack.script.template`. + * + * @param scriptSettings Key-value pairs to replace in the script. A given key in the script is + * replaced with its value. + * @param destination The destination where the scripts should be created in. + * @param isLocal Whether the start scripts should be created for a locally usable server + * pack. Use `false` if the start scripts should be created for a + * server pack about to be zipped. + * @author Griefed + */ + fun createStartScripts(scriptSettings: HashMap<String, String>, destination: String, isLocal: Boolean) { for (template in apiProperties.scriptTemplates) { try { val fileEnding = template.toString().substring(template.toString().lastIndexOf(".") + 1) @@ -489,7 +706,20 @@ actual class ServerPackHandler actual constructor( } } - override fun zipBuilder( + /** + * Creates a ZIP-archive of specified directory. Depending on the property `de.griefed.serverpackcreator.serverpack.zip.exclude.enabled`, + * files will be excluded. To customize the files which will be excluded, the property `de.griefed.serverpackcreator.serverpack.zip.exclude` + * must be configured accordingly. The created ZIP-archive will be stored alongside the specified + * destination, with `_server_pack.zip` appended to its name. + * + * @param minecraftVersion Determines the name of the Minecraft server JAR to exclude + * from the ZIP-archive if the modloader is Forge. + * @param destination The destination where the ZIP-archive should be created in. + * @param modloader The modloader the modpack and server pack use. + * @param modloaderVersion The modloader version the modpack and server pack use. + * @author Griefed + */ + fun zipBuilder( minecraftVersion: String, destination: String, modloader: String, @@ -527,7 +757,14 @@ actual class ServerPackHandler actual constructor( log.info("Finished creation of zip archive.") } - override fun preInstallationCleanup(destination: String) { + /** + * Delete files and folders from previous installations to prevent errors during server installation due to already + * existing files. + * @param destination The folder in which to perform the cleanup operations. + * + * @author Griefed + */ + fun preInstallationCleanup(destination: String) { log.info("Pre server installation cleanup.") var fileToDelete: File for (file in apiProperties.preInstallCleanupFiles) { @@ -538,7 +775,19 @@ actual class ServerPackHandler actual constructor( } } - override fun getExplicitFiles( + /** + * Gather a list of all files from an explicit source;destination-combination. If the source is a + * file, a singular [ServerPackFile] is returned. If the source is a directory, then all + * files in said directory are returned. + * + * @param source source-file/directory + * @param destination destination-file/directory + * @param modpackDir The modpack-directory. + * @param serverPackDestination The destination, normally the server pack-directory. + * @return List of [ServerPackFile]. + * @author Griefed + */ + fun getExplicitFiles( source: String, destination: String, modpackDir: String, @@ -573,7 +822,17 @@ actual class ServerPackHandler actual constructor( return serverPackFiles } - override fun getSaveFiles(clientDir: String, directory: String, destination: String): List<ServerPackFile> { + /** + * Recursively acquire all files and directories inside the given save-directory as a list of + * [ServerPackFile]. + * + * @param clientDir Target directory in the server pack. Usually the name of the world. + * @param directory The save-directory. + * @param destination The destination of the server pack. + * @return List of [ServerPackFile] which will be included in the server pack. + * @author Griefed + */ + fun getSaveFiles(clientDir: String, directory: String, destination: String): List<ServerPackFile> { val serverPackFiles: MutableList<ServerPackFile> = ArrayList(2000) try { Files.walk(Paths.get(clientDir)).use { @@ -597,7 +856,43 @@ actual class ServerPackHandler actual constructor( return serverPackFiles } - override fun getModsToInclude( + /** + * Generates a list of all mods to include in the server pack. If the user specified + * clientside-mods to exclude, and/or if the automatic exclusion of clientside-only mods is + * active, they will be excluded, too. + * + * @param packConfig The configurationModel containing the modpack directory, list of + * clientside-only mods to exclude, Minecraft version used by the + * modpack and server pack and the modloader used by the modpack and + * server pack. + * @return A list of all mods to include in the server pack. + * @author Griefed + */ + fun getModsToInclude(packConfig: PackConfig) = getModsToInclude( + "${packConfig.modpackDir}${File.separator}mods", + packConfig.clientMods, + packConfig.modsWhitelist, + packConfig.minecraftVersion, + packConfig.modloader + ) + + /** + * Generates a list of all mods to include in the server pack. If the user specified + * clientside-mods to exclude, and/or if the automatic exclusion of clientside-only mods is + * active, they will be excluded, too. + * + * @param modsDir The mods-directory of the modpack of which to generate a list of + * all its contents. + * @param userSpecifiedClientMods A list of all clientside-only mods. + * @param userSpecifiedWhitelist A list of mods to include regardless if a match was found in [userSpecifiedClientMods]. + * @param minecraftVersion The Minecraft version the modpack uses. When the modloader is + * Forge, this determines whether Annotations or Tomls are + * scanned. + * @param modloader The modloader the modpack uses. + * @return A list of all mods to include in the server pack. + * @author Griefed + */ + fun getModsToInclude( modsDir: String, userSpecifiedClientMods: List<String>, userSpecifiedModsWhitelist: List<String>, @@ -612,7 +907,7 @@ actual class ServerPackHandler actual constructor( // Check whether scanning mods for sideness is activated. if (apiProperties.isAutoExcludingModsEnabled) { val scanningStopWatch = SimpleStopWatch().start() - when (modloader) { + when (modloader) { //TODO replace Modloader strings with ENUM "LegacyFabric", "Fabric" -> autodiscoveredClientMods.addAll(modScanner.fabricScanner.scan(filesInModsDir)) "Forge" -> if (minecraftVersion.split(".").dropLastWhile { it.isEmpty() } @@ -653,7 +948,16 @@ actual class ServerPackHandler actual constructor( return ArrayList(modsInModpack) } - override fun getDirectoryFiles(source: String, destination: String): List<ServerPackFile> { + /** + * Recursively acquire all files and directories inside the given directory as a list of + * [ServerPackFile]. + * + * @param source The source-directory. + * @param destination The server pack-directory. + * @return List of files and folders of the server pack. + * @author Griefed + */ + fun getDirectoryFiles(source: String, destination: String): List<ServerPackFile> { val serverPackFiles: MutableList<ServerPackFile> = ArrayList(100) try { Files.walk(Paths.get(source).absolute()).use { @@ -680,7 +984,20 @@ actual class ServerPackHandler actual constructor( return serverPackFiles } - override fun excludeFileOrDirectory(modpackDir: String, fileToCheckFor: File, exclusions: List<Regex>): Boolean { + /** + * Check whether the given file or directory should be excluded from the server pack. + * + * @param modpackDir The directory where the modpack resides in. Used to filter out any + * unwanted directories using the property `de.griefed.serverpackcreator.configuration.directories.shouldexclude`. + * @param fileToCheckFor The file or directory to check whether it should be excluded from the + * server pack. + * @param exclusions Files or directories determined by ServerPackCreator to be excluded from + * the server pack + * @return `true` if the file or directory was determined to be excluded from the server + * pack. + * @author Griefed + */ + fun excludeFileOrDirectory(modpackDir: String, fileToCheckFor: File, exclusions: List<Regex>): Boolean { val cleaned = fileToCheckFor.absolutePath.replace(File(modpackDir).absolutePath + File.separator, "") return exclusions.any { regex -> if (cleaned.matches(regex)) { @@ -692,7 +1009,17 @@ actual class ServerPackHandler actual constructor( } } - override fun serverDownloadable(mcVersion: String, modloader: String, modloaderVersion: String) = when (modloader) { + /** + * Check whether the installer for the given combination of Minecraft version, modloader and + * modloader version is available/reachable. + * + * @param mcVersion The Minecraft version. + * @param modloader The modloader. + * @param modloaderVersion The modloader version. + * @return `true` if the installer can be downloaded. + * @author Griefed + */ + fun serverDownloadable(mcVersion: String, modloader: String, modloaderVersion: String) = when (modloader) { "Fabric" -> utilities.webUtilities.isReachable(versionMeta.fabric.releaseInstallerUrl()) "Forge" -> { @@ -718,7 +1045,14 @@ actual class ServerPackHandler actual constructor( else -> false } - override fun postInstallCleanup(destination: String) { + /** + * Cleans up the server_pack directory by deleting left-over files from modloader installations + * and version checking. + * + * @param destination The destination where we should clean up in. + * @author Griefed + */ + fun postInstallCleanup(destination: String) { log.info("Cleanup after modloader server installation.") var fileToDelete: File for (file in apiProperties.postInstallCleanupFiles) { @@ -729,7 +1063,15 @@ actual class ServerPackHandler actual constructor( } } - override fun excludeMods(autodiscoveredClientMods: List<File>, modsInModpack: TreeSet<File>) { + /** + * Exclude every automatically discovered clientside-only mod from the list of mods in the + * modpack. + * + * @param autodiscoveredClientMods Automatically discovered clientside-only mods in the modpack. + * @param modsInModpack All mods in the modpack. + * @author Griefed + */ + fun excludeMods(autodiscoveredClientMods: List<File>, modsInModpack: TreeSet<File>) { if (autodiscoveredClientMods.isNotEmpty()) { log.info("Automatically detected mods: ${autodiscoveredClientMods.size}") for (discoveredMod in autodiscoveredClientMods) { @@ -747,7 +1089,16 @@ actual class ServerPackHandler actual constructor( } } - override fun excludeUserSpecifiedMod(userSpecifiedExclusions: List<String>, userSpecifiedModsWhitelist: List<String>, modsInModpack: TreeSet<File>) { + /** + * Exclude user-specified mods from the server pack. + * + * @param userSpecifiedExclusions User-specified clientside-only mods to exclude from the server + * pack. + * @param modsInModpack Every mod ending with `jar` or `disabled` in the + * modpack. + * @author Griefed + */ + fun excludeUserSpecifiedMod(userSpecifiedExclusions: List<String>, userSpecifiedModsWhitelist: List<String>, modsInModpack: TreeSet<File>) { if (userSpecifiedExclusions.isNotEmpty()) { log.info("Performing ${apiProperties.exclusionFilter}-type checks for user-specified clientside-only mod exclusion.") for (userSpecifiedExclusion in userSpecifiedExclusions) { @@ -758,7 +1109,20 @@ actual class ServerPackHandler actual constructor( } } - override fun regexWalk( + /** + * Walk through the specified directory and add a [ServerPackFile] for every file/folder + * which matches the given regex. + * + * @param source The source-directory to walk through and perform regex-matches in. + * @param destination The destination-directory where a matched file should be copied to, + * usually the server pack directory. + * @param regex Regex with which to perform matches against files in the + * source-directory. + * @param serverPackFiles List of files to copy to the server pack to which any matched file will + * be added to. + * @author Griefed + */ + fun regexWalk( source: File, destination: String, regex: Regex, serverPackFiles: MutableList<ServerPackFile> ) { var toMatch: String @@ -778,8 +1142,8 @@ actual class ServerPackHandler actual constructor( ) ) log.debug("Including through regex-match:") - log.debug(" SOURCE: {}", path) - log.debug(" DESTINATION: {}", add) + log.debug(" SOURCE: $path") + log.debug(" DESTINATION: $add") } } } @@ -788,7 +1152,28 @@ actual class ServerPackHandler actual constructor( } } - override fun exclude(userSpecifiedExclusion: String, userSpecifiedModsWhitelist: List<String>, modsInModpack: TreeSet<File>) { + /** + * Cleans up the server_pack directory by deleting left-over files from modloader installations + * and version checking. + * + * @param packConfig Containing the Minecraft version used by the modpack and server pack, + * the modloader version used by the modpack and server pack and the + * modpack directory to acquire the destination of the server pack. + * @author Griefed + */ + fun cleanUpServerPack(packConfig: PackConfig) = postInstallCleanup(getServerPackDestination(packConfig)) + + /** + * Go through the mods in the modpack and exclude any of the user-specified clientside-only mods + * according to the filter method set in the serverpackcreator.properties. For available filters, + * see [ExclusionFilter]. + * + * @param userSpecifiedExclusion The client mod to check whether it needs to be excluded. + * @param modsInModpack All mods in the modpack. + * + * @author Griefed + */ + fun exclude(userSpecifiedExclusion: String, userSpecifiedModsWhitelist: List<String>, modsInModpack: TreeSet<File>) { modsInModpack.removeIf { modToCheck -> val excluded: Boolean val modName = modToCheck.name @@ -809,4 +1194,27 @@ actual class ServerPackHandler actual constructor( excluded } } + + /** + * Replace placeholders for script settings in the given [content] with their respective values, both provided via the + * HashMap [scriptSettings]. + * + * @param isLocal Whether the start scripts should be created for a locally usable server pack. Use false if the + * start scripts should be created for a server pack about to be zipped + * + * @author Griefed + */ + fun replacePlaceholders(isLocal: Boolean, content: String, scriptSettings: HashMap<String, String>): String { + var result = content + for ((key, value) in scriptSettings) { + result = if (isLocal && key == "SPC_JAVA_SPC") { + result.replace(key, value.escapePath()) + } else if (!isLocal && key == "SPC_JAVA_SPC") { + result.replace(key, "java") + } else { + result.replace(key, value) + } + } + return result + } } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt similarity index 97% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt index b93ced85f..32c6eaa65 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/FabricScanner.kt @@ -34,11 +34,11 @@ import java.util.* * * @author Griefed */ -actual class FabricScanner( +class FabricScanner( private val objectMapper: ObjectMapper, private val utilities: Utilities ) : JsonBasedScanner(), Scanner<TreeSet<File>, Collection<File>> { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val jar = "jar" private val fabricModJson = "fabric.mod.json" private val id = "id" @@ -46,6 +46,9 @@ actual class FabricScanner( private val environment = "environment" private val depends = "depends" + val dependencyExclusions: Regex + get() = "(fabric|fabricloader|java|minecraft)".toRegex() + /** * Scan the `fabric.mod.json`-files in mod JAR-files of a given directory for their * sideness. diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt similarity index 98% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt index 7e165f52d..ff5cb4632 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeAnnotationScanner.kt @@ -36,11 +36,11 @@ import java.util.* * * @author Griefed */ -actual class ForgeAnnotationScanner( +class ForgeAnnotationScanner( private val objectMapper: ObjectMapper, private val utilities: Utilities ) : JsonBasedScanner(), Scanner<TreeSet<File>, Collection<File>> { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val additionalDependencyRegex = "(@.*|\\[.*)".toRegex() private val caches = "META-INF/fml_cache_annotation.json" private val annotations = "annotations" @@ -51,6 +51,11 @@ actual class ForgeAnnotationScanner( private val clientSideOnly = "clientSideOnly" private val dependencies = "dependencies" + val dependencyCheck: Regex + get() = "(before:.*|after:.*|required-after:.*|)".toRegex() + val dependencyReplace: Regex + get() = "(@.*|\\[.*)".toRegex() + /** * Scan the `fml-cache-annotation.json`-files in mod JAR-files of a given directory for their sideness. * diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt similarity index 97% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt index f002be57f..d3021df7a 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ForgeTomlScanner.kt @@ -34,16 +34,22 @@ import java.util.jar.JarFile * @param tomlParser To parse .toml-files. * @Griefed */ -actual open class ForgeTomlScanner(private val tomlParser: TomlParser) : +open class ForgeTomlScanner(private val tomlParser: TomlParser) : Scanner<TreeSet<File>, Collection<File>> { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val mods = "mods" private val modId = "modId" - actual open val modsToml = "META-INF/mods.toml" private val dependencies = "dependencies" private val side = "side" private val both = "BOTH" + open val modsToml = "META-INF/mods.toml" + + val forgeMinecraft: Regex + get() = "^(forge|minecraft)$".toRegex() + val bothServer: Regex + get() = "^(BOTH|SERVER)$".toRegex() + /** * Scan the `mods.toml`-files in mod JAR-files of a given directory for their sideness. * diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt similarity index 98% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt index 663197555..503102921 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/JsonBasedScanner.kt @@ -34,7 +34,7 @@ import java.util.jar.JarFile * @author Griefed */ abstract class JsonBasedScanner { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } /** * Acquire a JsonNode from the specified file in the specified file. diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt similarity index 82% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt index 4186ddb6d..946852756 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScanner.kt @@ -30,10 +30,10 @@ package de.griefed.serverpackcreator.api.modscanning * * @author Griefed */ -actual class ModScanner actual constructor( - actual val forgeAnnotationScanner: ForgeAnnotationScanner, - actual val fabricScanner: FabricScanner, - actual val quiltScanner: QuiltScanner, - actual val forgeTomlScanner: ForgeTomlScanner, - actual val neoForgeTomlScanner: NeoForgeTomlScanner +class ModScanner( + val forgeAnnotationScanner: ForgeAnnotationScanner, + val fabricScanner: FabricScanner, + val quiltScanner: QuiltScanner, + val forgeTomlScanner: ForgeTomlScanner, + val neoForgeTomlScanner: NeoForgeTomlScanner ) \ No newline at end of file diff --git a/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt new file mode 100644 index 000000000..75f4fbeb1 --- /dev/null +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/NeoForgeTomlScanner.kt @@ -0,0 +1,8 @@ +package de.griefed.serverpackcreator.api.modscanning + +import com.electronwill.nightconfig.toml.TomlParser + +class NeoForgeTomlScanner(tomlParser: TomlParser): ForgeTomlScanner(tomlParser) { + override val modsToml: String + get() = "META-INF/neoforge.mods.toml" +} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt similarity index 88% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt index f46a4e5ce..4e7683d5e 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/QuiltScanner.kt @@ -34,11 +34,11 @@ import java.util.* * * @author Griefed */ -actual class QuiltScanner( +class QuiltScanner( private val objectMapper: ObjectMapper, private val utilities: Utilities ) : JsonBasedScanner(), Scanner<TreeSet<File>, Collection<File>> { - private val logger = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val quiltModJson = "quilt.mod.json" private val quiltLoader = "quilt_loader" private val id = "id" @@ -48,6 +48,9 @@ actual class QuiltScanner( private val depends = "depends" private val jar = "jar" + val dependencyExclusions: Regex + get() = "(quilt_loader|quilt_base|quilted_fabric_api|java|minecraft)".toRegex() + /** * Scan the `quilt.mod.json`-files in mod JAR-files of a given directory for their sideness. * @@ -59,7 +62,7 @@ actual class QuiltScanner( * @author Griefed */ override fun scan(jarFiles: Collection<File>): TreeSet<File> { - logger.info("Scanning Quilt mods for sideness...") + log.info("Scanning Quilt mods for sideness...") val modDependencies = ArrayList<Pair<String, Pair<String, String>>>() val clientMods = TreeSet<String>() @@ -99,7 +102,7 @@ actual class QuiltScanner( try { if (utilities.jsonUtilities.nestedTextEqualsIgnoreCase(modJson, client, minecraft, environment)) { clientMods.add(modId) - logger.debug("Added clientMod: $modId") + log.debug("Added clientMod: $modId") } } catch (ignored: NullPointerException) { } @@ -112,28 +115,28 @@ actual class QuiltScanner( try { val dependencyId = utilities.jsonUtilities.getNestedText(dependency, id) if (!dependencyId.matches(dependencyExclusions) && modDependencies.add(Pair(dependencyId, Pair(mod.name, modId)))) { - logger.debug("Added dependency $dependencyId for $modId (${mod.name}).") + log.debug("Added dependency $dependencyId for $modId (${mod.name}).") } } catch (ex: NullPointerException) { - logger.debug("No dependencies for $modId (${mod.name}).") + log.debug("No dependencies for $modId (${mod.name}).") } } else { try { val dependencyText = dependency.asText() if (!dependencyText.matches(dependencyExclusions) && modDependencies.add(Pair(dependencyText, Pair(mod.name, modId)))) { - logger.debug("Added dependency ${dependency.asText()} for $modId (${mod.name}).") + log.debug("Added dependency ${dependency.asText()} for $modId (${mod.name}).") } } catch (ex: NullPointerException) { - logger.debug("No dependencies for $modId (${mod.name}).") + log.debug("No dependencies for $modId (${mod.name}).") } } } } catch (ignored: NullPointerException) { } } catch (ex: NullPointerException) { - logger.warn("Couldn't scan $mod as it contains no quilt.mod.json.") + log.warn("Couldn't scan $mod as it contains no quilt.mod.json.") } catch (ex: Exception) { - logger.error("Couldn't scan $mod", ex) + log.error("Couldn't scan $mod", ex) } } } diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/Scanner.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/Scanner.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/Scanner.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/Scanner.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ScanningException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ScanningException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/modscanning/ScanningException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/modscanning/ScanningException.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/BaseInformation.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/BaseInformation.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/BaseInformation.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/BaseInformation.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt similarity index 96% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt index 3406fc7de..1f0d7ce6e 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/CustomPluginFactory.kt @@ -30,7 +30,7 @@ import org.pf4j.PluginWrapper * @author Griefed */ class CustomPluginFactory: DefaultPluginFactory() { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } override fun createInstance(pluginClass: Class<*>, pluginWrapper: PluginWrapper): Plugin? { val context = PluginContext(pluginWrapper.runtimeMode) try { diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionException.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt similarity index 97% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt index 32833fa68..bfe4e953f 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ExtensionInformation.kt @@ -19,6 +19,8 @@ */ package de.griefed.serverpackcreator.api.plugins +import org.pf4j.ExtensionPoint + /** * Force every extension to provide its ID. * diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/PluginContext.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/PluginContext.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/PluginContext.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/PluginContext.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt similarity index 91% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt index 6aa1d5c0e..0153d96e0 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/ServerPackCreatorPlugin.kt @@ -49,7 +49,7 @@ import java.net.URI */ @Suppress("unused") abstract class ServerPackCreatorPlugin(val context: PluginContext) : Plugin(), BaseInformation { - private val pluginLog = cachedLoggerOf(this.javaClass) + private val logger by lazy { cachedLoggerOf(this.javaClass) } final override val name: String final override val description: String final override val author: String @@ -85,12 +85,12 @@ abstract class ServerPackCreatorPlugin(val context: PluginContext) : Plugin(), B @Throws(PluginRuntimeException::class) override fun start() { super.start() - log.info("Plugin-ID: $id") - log.info("Plugin-Name: $name") - log.info("Plugin-Description: $description") - log.info("Plugin-Author: $author") - log.info("Plugin-Version: $version") - log.info("Started: $name ($id)") + logger.info("Plugin-ID: $id") + logger.info("Plugin-Name: $name") + logger.info("Plugin-Description: $description") + logger.info("Plugin-Author: $author") + logger.info("Plugin-Version: $version") + logger.info("Started: $name ($id)") pluginsLog.info("Plugin-ID: $id") pluginsLog.info("Plugin-Name: $name") pluginsLog.info("Plugin-Description: $description") @@ -110,7 +110,7 @@ abstract class ServerPackCreatorPlugin(val context: PluginContext) : Plugin(), B @Throws(PluginRuntimeException::class) override fun stop() { super.stop() - log.info("Stopped: $name ($id)") + logger.info("Stopped: $name ($id)") pluginsLog.info("Stopped: $name ($id)") } } \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt similarity index 96% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt index 1b9650de1..d10a8771c 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/configurationhandler/ConfigCheckExtension.kt @@ -19,15 +19,15 @@ */ package de.griefed.serverpackcreator.api.plugins.configurationhandler +import com.electronwill.nightconfig.core.CommentedConfig import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.ConfigCheck import de.griefed.serverpackcreator.api.PackConfig import de.griefed.serverpackcreator.api.plugins.ExtensionException import de.griefed.serverpackcreator.api.plugins.ExtensionInformation -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.Optional import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import java.util.* /** * Extension point for configuration checks, so you can run your own checks on a given diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PostGenExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PostGenExtension.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PostGenExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PostGenExtension.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreGenExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreGenExtension.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreGenExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreGenExtension.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreZipExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreZipExtension.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreZipExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/PreZipExtension.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt similarity index 95% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt index b53418dad..73aee3868 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/serverpackhandler/ServerPackHandlerBase.kt @@ -20,14 +20,14 @@ package de.griefed.serverpackcreator.api.plugins.serverpackhandler +import com.electronwill.nightconfig.core.CommentedConfig import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.PackConfig import de.griefed.serverpackcreator.api.plugins.ExtensionException import de.griefed.serverpackcreator.api.plugins.ExtensionInformation -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.Optional import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import java.util.* /** * Base-interface from which every [de.griefed.serverpackcreator.api.ServerPackHandler]-extension interface starts from. diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt similarity index 96% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt index 0d5bb71e8..ec0680192 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ConfigPanelExtension.kt @@ -19,12 +19,12 @@ */ package de.griefed.serverpackcreator.api.plugins.swinggui +import com.electronwill.nightconfig.core.CommentedConfig import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.plugins.ExtensionInformation -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.Optional import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import java.util.* /** * Extension point for plugins which add additional [javax.swing.JPanel]s in a given server pack tab, diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt similarity index 91% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt index 23fadff1f..6f4874814 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionConfigPanel.kt @@ -25,6 +25,7 @@ import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.versionmeta.VersionMeta import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger +import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.util.* import javax.swing.JPanel @@ -46,7 +47,7 @@ import javax.swing.JPanel * @author Griefed */ @Suppress("unused") -actual abstract class ExtensionConfigPanel protected actual constructor( +abstract class ExtensionConfigPanel protected constructor( protected val versionMeta: VersionMeta, protected val apiProperties: ApiProperties, protected val utilities: Utilities, @@ -59,13 +60,13 @@ actual abstract class ExtensionConfigPanel protected actual constructor( val pluginID: String ) : JPanel() { @Suppress("MemberVisibilityCanBePrivate") - protected val log: Logger = LogManager.getLogger(this.javaClass) + protected val log by lazy { cachedLoggerOf(this.javaClass) } @Suppress("MemberVisibilityCanBePrivate") protected val pluginsLog: Logger = LogManager.getLogger("AddonsLogger") @Suppress("MemberVisibilityCanBePrivate") - actual val serverPackExtensionConfig: ArrayList<CommentedConfig> = ArrayList<CommentedConfig>(100) + val serverPackExtensionConfig: ArrayList<CommentedConfig> = ArrayList<CommentedConfig>(100) /** * Retrieve this extensions server pack specific configuration. When no configuration with configs @@ -75,7 +76,7 @@ actual abstract class ExtensionConfigPanel protected actual constructor( * extensions. * @author Griefed */ - actual abstract fun serverPackExtensionConfig(): ArrayList<CommentedConfig> + abstract fun serverPackExtensionConfig(): ArrayList<CommentedConfig> /** * Pass the extension configuration to the configuration panel, so it can then, in turn, load the @@ -85,7 +86,7 @@ actual abstract class ExtensionConfigPanel protected actual constructor( * configuration panel. * @author Griefed */ - actual abstract fun setServerPackExtensionConfig( + abstract fun setServerPackExtensionConfig( serverPackExtensionConfig: ArrayList<CommentedConfig> ) @@ -96,5 +97,5 @@ actual abstract class ExtensionConfigPanel protected actual constructor( * * The `clear()`-method is called when the owning `TabCreateServerPack.clearInterface()`-method is called. */ - actual abstract fun clear() + abstract fun clear() } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt similarity index 98% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt index 9ecefbb53..d8880e12b 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ExtensionTab.kt @@ -47,7 +47,7 @@ import javax.swing.SwingUtilities * @param configFile The config-file corresponding to the ID of the plugin, wrapped in an Optional. */ @Suppress("unused") -actual abstract class ExtensionTab protected constructor( +abstract class ExtensionTab protected constructor( protected val versionMeta: VersionMeta, protected val apiProperties: ApiProperties, protected val utilities: Utilities, diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt similarity index 98% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt index d4b90652f..0b9e8b5bf 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/ServerPackConfigTab.kt @@ -21,7 +21,7 @@ package de.griefed.serverpackcreator.api.plugins.swinggui import de.griefed.serverpackcreator.api.InclusionSpecification import de.griefed.serverpackcreator.api.PackConfig -import de.griefed.serverpackcreator.api.utilities.File +import java.io.File /** * Force every server pack configuration tab to provide a certain set of methods. Said set of methods give plugins diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt similarity index 88% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt index bcc11a379..33be00941 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/plugins/swinggui/TabExtension.kt @@ -19,14 +19,14 @@ */ package de.griefed.serverpackcreator.api.plugins.swinggui +import com.electronwill.nightconfig.core.CommentedConfig import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.plugins.ExtensionInformation -import de.griefed.serverpackcreator.api.utilities.CommentedConfig -import de.griefed.serverpackcreator.api.utilities.File -import de.griefed.serverpackcreator.api.utilities.Icon -import de.griefed.serverpackcreator.api.utilities.Optional import de.griefed.serverpackcreator.api.utilities.common.Utilities import de.griefed.serverpackcreator.api.versionmeta.VersionMeta +import java.io.File +import java.util.* +import javax.swing.Icon /** * Extension point for plugins which add additional [javax.swing.JPanel]s as additional tabs to the @@ -35,7 +35,7 @@ import de.griefed.serverpackcreator.api.versionmeta.VersionMeta * @author Griefed */ @Suppress("unused") -actual interface TabExtension : ExtensionInformation { +interface TabExtension : ExtensionInformation { /** * @param versionMeta Instance of [VersionMeta] so you can work with available Minecraft, Forge, Fabric, * LegacyFabric and Quilt versions. @@ -48,7 +48,7 @@ actual interface TabExtension : ExtensionInformation { * @return Component to add to the ServerPackCreator GUI as a tab. * @author Griefed */ - actual fun getTab( + fun getTab( versionMeta: VersionMeta, apiProperties: ApiProperties, utilities: Utilities, @@ -62,7 +62,7 @@ actual interface TabExtension : ExtensionInformation { * @return Icon to be used by the added tab. * @author Griefed */ - actual val icon: Icon? + val icon: Icon? /** * Get the title of this tab to display in the ServerPackCreator GUI. @@ -70,7 +70,7 @@ actual interface TabExtension : ExtensionInformation { * @return The title of this plugin's tabbed pane. * @author Griefed */ - actual val title: String + val title: String /** * Get the tooltip for this tab to display in the ServerPackCreator GUI. @@ -78,5 +78,5 @@ actual interface TabExtension : ExtensionInformation { * @return The tooltip of this plugin's tabbed pane. * @author Griefed */ - actual val tooltip: String + val tooltip: String } \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/ReticulatingSplines.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/ReticulatingSplines.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/ReticulatingSplines.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/ReticulatingSplines.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/SimpleStopWatch.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/SimpleStopWatch.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/SimpleStopWatch.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/SimpleStopWatch.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Affirm.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Affirm.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Affirm.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Affirm.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt similarity index 98% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt index 63777fbb9..93931799b 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/BooleanUtilities.kt @@ -28,7 +28,7 @@ import mu.KotlinLogging */ @Suppress("unused", "KDocUnresolvedReference") class BooleanUtilities { - private val log = KotlinLogging.logger {} + private val log by lazy { KotlinLogging.logger {} } private val yYeEsS = "[Yy][Ee][Ss]".toRegex() private val yY = "[Yy]".toRegex() private val one = "1".toRegex() diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt similarity index 91% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt index 63a840f37..2de6b0eb8 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ClassUtilities.kt @@ -27,14 +27,8 @@ import java.net.URL import java.nio.file.Paths import java.util.* -/*private val jar = "^jar:(file:.*[.]jar)!/.*".toRegex() -private val jarJar = "^(file:.*[.]jar)!.*[.]jar".toRegex() -private val jarNested = "^jar:nested:(.*[.]jar)!/.*".toRegex() -private val jarJarNested = "^(file:.*[.]jar)!.*[.]jar".toRegex()*/ private val nested = ".*[.]jar!.*[.]jar".toRegex() private val tmpDir = System.getProperty("java.io.tmpdir") -/*private const val JAR_FILE = "jar:file:" -private const val JAR_NESTED = "jar:nested"*/ private const val JAR = "file:" /** diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt similarity index 99% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt index 72f2838a7..341c14f04 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Comparison.kt @@ -38,4 +38,4 @@ enum class Comparison { * Used to determine whether a given version is the same or newer. */ EQUAL_OR_NEW -} +} \ No newline at end of file diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileType.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileType.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileType.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileType.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt similarity index 88% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt index 17e88216b..7c842b632 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FileUtilities.kt @@ -43,8 +43,8 @@ import kotlin.streams.asStream * * @author Griefed */ -actual class FileUtilities { - private val log = cachedLoggerOf(this.javaClass) +class FileUtilities { + private val log by lazy { cachedLoggerOf(this.javaClass) } private val windowsDrivers = "^[A-Za-z]:.*".toRegex() private val lnk = "lnk" @@ -58,7 +58,7 @@ actual class FileUtilities { * @author Griefed */ @Throws(IOException::class) - actual fun replaceFile(sourceFile: File, destinationFile: File): Boolean { + fun replaceFile(sourceFile: File, destinationFile: File): Boolean { if (sourceFile.exists()) { sourceFile.toPath().moveTo(destinationFile.toPath(), true) return true @@ -74,7 +74,7 @@ actual class FileUtilities { * @param destinationDirectory The directory into which the ZIP-archive will be unzipped into. * @author Griefed */ - actual fun unzipArchive(zipFile: String, destinationDirectory: String) { + fun unzipArchive(zipFile: String, destinationDirectory: String) { log.info("Extracting ZIP-file: $zipFile") try { ZipFile(zipFile).use { zip -> zip.extractAll(destinationDirectory) } @@ -92,7 +92,7 @@ actual class FileUtilities { * [FileType.SYMLINK] * @author Griefed */ - actual fun checkFileType(file: String): FileType { + fun checkFileType(file: String): FileType { return if (file.isEmpty()) { FileType.INVALID } else checkFileType(File(file)) @@ -107,7 +107,7 @@ actual class FileUtilities { * [FileType.SYMLINK] * @author Griefed */ - actual fun checkFileType(file: File): FileType { + fun checkFileType(file: File): FileType { @Suppress("RegExpRedundantEscape") return when { file.name.endsWith(lnk) -> { @@ -150,7 +150,7 @@ actual class FileUtilities { * @return `true` if the given file is a UNIX symlink or Windows lnk. * @author Griefed */ - actual fun isLink(file: File) = + fun isLink(file: File) = if (file.name.endsWith(lnk)) { true } else { @@ -186,7 +186,7 @@ actual class FileUtilities { * @author Griefed */ @Throws(IOException::class, InvalidFileTypeException::class) - actual fun resolveLink(link: File): String = + fun resolveLink(link: File): String = when (val type = checkFileType(link)) { FileType.LINK, FileType.SYMLINK -> { try { @@ -301,7 +301,7 @@ actual class FileUtilities { * @return `true` if read-permissions are set. * @author Griefed */ - actual fun isReadPermissionSet(fileOrDirectory: String) = isReadPermissionSet(Paths.get(fileOrDirectory)) + fun isReadPermissionSet(fileOrDirectory: String) = isReadPermissionSet(Paths.get(fileOrDirectory)) /** * Check the given file or directory for read-permission. @@ -310,7 +310,7 @@ actual class FileUtilities { * @return `true` if read-permissions are set. * @author Griefed */ - actual fun isReadPermissionSet(fileOrDirectory: File) = isReadPermissionSet(fileOrDirectory.toPath()) + fun isReadPermissionSet(fileOrDirectory: File) = isReadPermissionSet(fileOrDirectory.toPath()) /** * Check the given file or directory for write-permission. @@ -319,7 +319,7 @@ actual class FileUtilities { * @return `true` if write-permissions are set. * @author Griefed */ - actual fun isWritePermissionSet(fileOrDirectory: String) = isReadPermissionSet(Paths.get(fileOrDirectory)) + fun isWritePermissionSet(fileOrDirectory: String) = isReadPermissionSet(Paths.get(fileOrDirectory)) /** * Check the given file or directory for write-permission. @@ -328,7 +328,27 @@ actual class FileUtilities { * @return `true` if write-permissions are set. * @author Griefed */ - actual fun isWritePermissionSet(fileOrDirectory: File) = isReadPermissionSet(fileOrDirectory.toPath()) + fun isWritePermissionSet(fileOrDirectory: File) = isReadPermissionSet(fileOrDirectory.toPath()) + + /** + * Check the given file or directory for read- and write-permission. + * + * @param fileOrDirectory File or directory. + * @return `true` if both read- and write-permissions are set. + * @author Griefed + */ + fun isReadWritePermissionSet(fileOrDirectory: String) = + isReadPermissionSet(fileOrDirectory) && isWritePermissionSet(fileOrDirectory) + + /** + * Check the given file or directory for read- and write-permission. + * + * @param fileOrDirectory File or directory. + * @return `true` if both read- and write-permissions are set. + * @author Griefed + */ + fun isReadWritePermissionSet(fileOrDirectory: File) = + isReadPermissionSet(fileOrDirectory) && isWritePermissionSet(fileOrDirectory) /** * Open the specified folder in the file explorer. @@ -336,7 +356,7 @@ actual class FileUtilities { * @param folder The folder to open. * @author Griefed */ - actual fun openFolder(folder: String) = openFolder(File(folder)) + fun openFolder(folder: String) = openFolder(File(folder)) /** * Open the specified folder in the file explorer. @@ -344,7 +364,7 @@ actual class FileUtilities { * @param folder The folder to open. * @author Griefed */ - actual fun openFolder(folder: File) { + fun openFolder(folder: File) { if (GraphicsEnvironment.isHeadless()) { log.error("Graphics environment not supported.") } else { @@ -364,7 +384,7 @@ actual class FileUtilities { * @param fileToOpen The file to open. * @author Griefed */ - actual fun openFile(fileToOpen: String) = openFile(File(fileToOpen)) + fun openFile(fileToOpen: String) = openFile(File(fileToOpen)) /** * Open the specified file in an editor. @@ -372,7 +392,7 @@ actual class FileUtilities { * @param fileToOpen The file to open. * @author Griefed */ - actual fun openFile(fileToOpen: File) { + fun openFile(fileToOpen: File) { if (GraphicsEnvironment.isHeadless()) { log.error("Graphics environment not supported.") } else { @@ -407,7 +427,7 @@ actual class FileUtilities { * @return `true` if, and only if, the file or directory was deleted. * @author Griefed */ -actual fun File.deleteQuietly(): Boolean = +fun File.deleteQuietly(): Boolean = if (this.isFile) { try { this.delete() @@ -429,12 +449,12 @@ actual fun File.deleteQuietly(): Boolean = * @return The filesize of this file, or sum of sizes of all files in this directory. * @author Griefed */ -actual fun File.size(): Double { +fun File.size(): Double { if (this.isDirectory) { - val size = 0.0 + var size = 0.0 val entries = this.listFiles() ?: return size for (entry in entries) { - size.plus(entry.size()) + size = size.plus(entry.size()) } return size } else { @@ -450,7 +470,7 @@ actual fun File.size(): Double { * @return All files inside this directory which matched the given filters. * @author Griefed */ -actual fun File.regexWalk(filters: List<Regex>, direction: FileWalkDirection): MutableList<File> = +fun File.regexWalk(filters: List<Regex>, direction: FileWalkDirection): MutableList<File> = this.walk(direction).asStream().filter { filters.matchAll(it.name) }.toList() /** @@ -462,11 +482,11 @@ actual fun File.regexWalk(filters: List<Regex>, direction: FileWalkDirection): M * @return All files inside this directory which matched the given filters. * @author Griefed */ -actual fun File.filteredWalk( +fun File.filteredWalk( filters: List<String>, - filterType: FilterType, - direction: FileWalkDirection, - recursive: Boolean + filterType: FilterType = FilterType.CONTAINS, + direction: FileWalkDirection = FileWalkDirection.TOP_DOWN, + recursive: Boolean = true ): MutableList<File> = when (filterType) { FilterType.CONTAINS -> { @@ -503,10 +523,10 @@ actual fun File.filteredWalk( * [create] without [directory] will result in this file being created as a file. * * @param create Whether the file or directory should be created. If left to `false`, then [directory] won't have any effect. - * @param directory Whether a directory or file should be created. Requires [create] to be set to `true`. + * @param directory true to create a directory, false to create a file. Requires [create] to be true * @author Griefed */ -actual fun File.createDirectories(create: Boolean, directory: Boolean) { +fun File.create(create: Boolean = false, directory: Boolean = false) { absoluteFile.toPath().createParentDirectories() if (create) { if (directory) { diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FilterType.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FilterType.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/FilterType.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/FilterType.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InputStreamUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InputStreamUtilities.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InputStreamUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InputStreamUtilities.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidFileTypeException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidFileTypeException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidFileTypeException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidFileTypeException.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidLinkException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidLinkException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidLinkException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/InvalidLinkException.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarAccessException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarAccessException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarAccessException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarAccessException.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt similarity index 89% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt index 78f432605..294a30294 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarInformation.kt @@ -46,7 +46,8 @@ class JarInformation(clazz: Class<*>, jarUtilities: JarUtilities = JarUtilities( * * @author Griefed */ - val jarFolder: File + var jarFolder: File + private set /** * The .exe or JAR-file of ServerPackCreator. @@ -107,10 +108,19 @@ class JarInformation(clazz: Class<*>, jarUtilities: JarUtilities = JarUtilities( sysInfo.putAll(jarUtilities.jarInformation(clazz)) jarPath = Paths.get(sysInfo["jarPath"]!!) jarFile = jarPath.toFile() - jarFolder = if (jarFile.isFile) { - jarFile.parentFile + jarFolder = if (jarPath.toString().contains("!")) { + val temp = File(jarPath.toString().substringBefore('!')) + if (temp.isDirectory) { + temp + } else { + temp.parentFile + } } else { - jarFile + if (jarFile.isDirectory) { + jarFile + } else { + jarFile.parentFile + } } jarFileName = sysInfo["jarName"].toString() javaVersion = sysInfo["javaVersion"].toString() diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt similarity index 97% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt index ded0deba7..1e78ff4c5 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JarUtilities.kt @@ -19,6 +19,7 @@ */ package de.griefed.serverpackcreator.api.utilities.common +import de.griefed.serverpackcreator.api.ApiWrapper import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.io.* import java.net.URISyntaxException @@ -34,8 +35,8 @@ import kotlin.io.path.toPath * @author Griefed */ @Suppress("unused") -actual class JarUtilities { - private val log = cachedLoggerOf(this.javaClass) +class JarUtilities { + private val log by lazy { cachedLoggerOf(this.javaClass) } /** * Copy a file from inside our JAR-file to the host filesystem. The file will create exactly as specified in the @@ -141,7 +142,7 @@ actual class JarUtilities { */ fun copyFileFromJar(fileToCopy: String, destinationFile: File, identifierClass: Class<*>) = if (!destinationFile.absoluteFile.exists()) { - destinationFile.createDirectories() + destinationFile.create() try { identifierClass.getResourceAsStream("/$fileToCopy").use { destinationFile.absoluteFile.outputStream().use { out -> it?.transferTo(out) } @@ -196,7 +197,7 @@ actual class JarUtilities { destinationDirectory: String, jarDirectoryPrefix: String, fileEnding: Regex, - tempDir: File = File(System.getProperty("java.io.tmpdir")) + tempDir: File = ApiWrapper.api().apiProperties.tempDirectory ) { val systemInformation: HashMap<String, String> = jarInformation(classToRetrieveHomeFor) val source = systemInformation["jarPath"]?.let { File(it) } @@ -267,7 +268,7 @@ actual class JarUtilities { log.error("Error walking source-directory.", ex) } try { - File(destination).createDirectories() + File(destination).create() } catch (ignored: FileAlreadyExistsException) { } catch (ex: IOException) { log.error("Error creating language directory.", ex) @@ -275,7 +276,7 @@ actual class JarUtilities { for (entry in filesFromJar) { if (!File(destination, entry).absoluteFile.exists()) { val extract = File(destination, entry).absoluteFile - extract.createDirectories() + extract.create() try { classToCopyFrom.getResourceAsStream("$source/$entry").use { extract.outputStream().use { out -> it?.transferTo(out) } @@ -330,7 +331,7 @@ actual class JarUtilities { ).absoluteFile log.debug("Destination: $destination") if (!destination.exists()) { - destination.createDirectories() + destination.create() try { jarToCopyFrom.getInputStream(entry).use { destination.outputStream().use { out -> it.transferTo(out) } diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonException.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonException.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt similarity index 99% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt index b7112a497..3c301000d 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/JsonUtilities.kt @@ -36,7 +36,7 @@ import java.net.URL * @author Griefed */ @Suppress("unused") -actual class JsonUtilities( +class JsonUtilities( private val objectMapper: ObjectMapper = ObjectMapper() .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt similarity index 99% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt index 973fe457d..a6a5aedb2 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ListUtilities.kt @@ -32,7 +32,7 @@ import kotlin.coroutines.CoroutineContext */ @Suppress("unused") class ListUtilities { - private val log = KotlinLogging.logger {} + private val log by lazy { KotlinLogging.logger {} } private val whitespace = "\\s+".toRegex() /** diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/RegexUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/RegexUtilities.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/RegexUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/RegexUtilities.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SemanticVersionComparator.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/SemanticVersionComparator.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SemanticVersionComparator.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/SemanticVersionComparator.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/StringUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/StringUtilities.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/StringUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/StringUtilities.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt similarity index 68% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt index 0e244cafe..b651d82fe 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/SystemUtilities.kt @@ -28,15 +28,12 @@ import java.io.File * @author Griefed */ @Suppress("unused") -actual class SystemUtilities { - private val log = cachedLoggerOf(this.javaClass) - private val windowsDrives: List<String> = listOf( - "A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:", "M:", "N:", - "O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:" - ) - private val javaPathSuffix = "%s/bin/java" +class SystemUtilities { + private val log by lazy { cachedLoggerOf(this.javaClass) } + private val windowsDriveRegex = "^[A-Z]:\\\\.*".toRegex() + private val javaPathSuffix = "%s${File.separator}bin${File.separator}java" private val javaHome = System.getProperty("java.home") - private val pathPrefix = "/" + private val unixRoot = "/" private val exeSuffix = "%s.exe" /** @@ -45,18 +42,14 @@ actual class SystemUtilities { * @return String. The path to the systems default Java installation. * @author Griefed */ - actual fun acquireJavaPathFromSystem(): String { + fun acquireJavaPathFromSystem(): String { log.debug("Acquiring path to Java installation from system properties...") var javaPath = "Couldn't acquire JavaPath" if (File(javaHome).exists()) { javaPath = javaPathSuffix.format(javaHome) - if (!javaPath.startsWith(pathPrefix)) { - for (letter in windowsDrives) { - if (javaPath.startsWith(letter)) { - log.debug("We're running on Windows. Ensuring javaPath ends with .exe") - javaPath = exeSuffix.format(javaPath) - } - } + if (javaPath.matches(windowsDriveRegex)) { + log.debug("We're running on Windows. Ensuring javaPath ends with .exe") + javaPath = exeSuffix.format(javaPath) } } return javaPath diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt similarity index 88% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt index 870a5fc04..27b95eb35 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/Utilities.kt @@ -29,16 +29,16 @@ import javax.xml.parsers.DocumentBuilderFactory * @author Griefed */ @Suppress("unused") -actual class Utilities { - actual val booleanUtilities: BooleanUtilities - actual val fileUtilities: FileUtilities - actual val jarUtilities: JarUtilities - actual val listUtilities: ListUtilities - actual val stringUtilities: StringUtilities - actual val systemUtilities: SystemUtilities - actual val webUtilities: WebUtilities - actual val jsonUtilities: JsonUtilities - actual val xmlUtilities: XmlUtilities +class Utilities { + val booleanUtilities: BooleanUtilities + val fileUtilities: FileUtilities + val jarUtilities: JarUtilities + val listUtilities: ListUtilities + val stringUtilities: StringUtilities + val systemUtilities: SystemUtilities + val webUtilities: WebUtilities + val jsonUtilities: JsonUtilities + val xmlUtilities: XmlUtilities /** * @param apiProperties API configuration of this instance. diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt similarity index 94% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt index b65156e7c..4a04c6f5b 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/WebUtilities.kt @@ -36,8 +36,8 @@ import javax.net.ssl.HttpsURLConnection * @author Griefed */ @Suppress("unused") -actual class WebUtilities(private val apiProperties: ApiProperties) { - private val log = cachedLoggerOf(this.javaClass) +class WebUtilities(private val apiProperties: ApiProperties) { + private val log by lazy { cachedLoggerOf(this.javaClass) } /** * Download the file from the specified URL to the specified destination, replacing the file if it @@ -51,7 +51,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @return Boolean. Returns true if the file could be found on the hosts' filesystem. * @author Griefed */ - actual fun downloadAndReplaceFile( + fun downloadAndReplaceFile( fileDestination: File, downloadURL: URL ): Boolean { @@ -70,11 +70,11 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @return true if the file was created. * @author Griefed */ - actual fun downloadFile( + fun downloadFile( file: File, downloadURL: URL ): Boolean { - file.createDirectories() + file.create() try { downloadURL.openStream().use { url -> Channels.newChannel(url).use { channel -> @@ -96,7 +96,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @param url The URI to the website you want to open. * @author Griefed */ - actual fun openLinkInBrowser(url: URL) { + fun openLinkInBrowser(url: URL) { try { openLinkInBrowser(url.toURI()) } catch (ex: URISyntaxException) { @@ -128,7 +128,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @return Boolean. True if the file is smaller, false if the file is bigger than 10 MB. * @author Griefed */ - actual fun hasteBinPreChecks(fileToCheck: File): Boolean { + fun hasteBinPreChecks(fileToCheck: File): Boolean { val fileSize = fileToCheck.size() try { return if (fileSize < 10000000.0 @@ -160,7 +160,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @author [kaimu-kun/hastebin.java](https://github.com/kaimu-kun) * @author Griefed */ - actual fun createHasteBinFromString(text: String): String { + fun createHasteBinFromString(text: String): String { val requestURL: String = apiProperties.hasteBinServerUrl var response: String? = null val url = URI(requestURL).toURL() @@ -228,7 +228,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @author [kaimu-kun/hastebin.java](https://github.com/kaimu-kun) * @author Griefed */ - actual fun createHasteBinFromFile(textFile: File): String { + fun createHasteBinFromFile(textFile: File): String { return createHasteBinFromString(textFile.readText()) } @@ -240,7 +240,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @throws IOException if the URL could not be called or a communication error occurred. */ @Throws(IOException::class) - actual fun getResponseAsString(url: URL): String { + fun getResponseAsString(url: URL): String { val `in` = BufferedReader(InputStreamReader(url.openConnection().getInputStream())) val response = StringBuilder() var currentLine: String? @@ -259,7 +259,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @throws IOException if the URL could not be called or a communication error occurred. */ @Throws(IOException::class) - actual fun getResponseCode(url: URL): Int { + fun getResponseCode(url: URL): Int { val connection = url.openConnection() as HttpURLConnection return connection.responseCode } @@ -272,7 +272,7 @@ actual class WebUtilities(private val apiProperties: ApiProperties) { * @param url The URL of which to check for host-availability. * @return `true` if, and only if, the host is available and the URL returns the status code 200. */ - actual fun isReachable(url: URL): Boolean { + fun isReachable(url: URL): Boolean { var available: Boolean var connection: HttpURLConnection? = null try { diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt similarity index 96% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt index b0d5b02be..36dc3d6a5 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/XmlUtilities.kt @@ -37,7 +37,7 @@ import javax.xml.parsers.ParserConfigurationException * @author Griefed */ @Suppress("unused") -actual class XmlUtilities(private val documentBuilderFactory: DocumentBuilderFactory = DocumentBuilderFactory.newInstance()) { +class XmlUtilities(private val documentBuilderFactory: DocumentBuilderFactory = DocumentBuilderFactory.newInstance()) { /** * Reads the file into a [Document] and [Document.normalize] it. diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ZipUtilities.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ZipUtilities.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/utilities/common/ZipUtilities.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/utilities/common/ZipUtilities.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/InvalidTypeException.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/InvalidTypeException.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/InvalidTypeException.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/InvalidTypeException.kt diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt similarity index 93% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt index d67c25815..85bc8fd40 100644 --- a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/Meta.kt @@ -19,7 +19,9 @@ */ package de.griefed.serverpackcreator.api.versionmeta -import de.griefed.serverpackcreator.api.utilities.Optional +import java.io.File +import java.net.URL +import java.util.* /** * Provide default methods to access a given Metas versions. @@ -136,7 +138,7 @@ interface Meta { * @return URL to the latest installer. * @author Griefed */ - fun latestInstallerUrl(): de.griefed.serverpackcreator.api.utilities.URL + fun latestInstallerUrl(): URL /** * Get the URL to the release installer. @@ -144,7 +146,7 @@ interface Meta { * @return URL to the release installer. * @author Griefed */ - fun releaseInstallerUrl(): de.griefed.serverpackcreator.api.utilities.URL + fun releaseInstallerUrl(): URL /** * Installer file for the specified modloader version, wrapped in an [Optional], so you can check whether @@ -156,7 +158,7 @@ interface Meta { * * @author Griefed */ - fun installerFor(version: String): Optional<de.griefed.serverpackcreator.api.utilities.File> + fun installerFor(version: String): Optional<File> /** * Check whether a URL to an installer is available for the specified version. @@ -174,7 +176,7 @@ interface Meta { * @return The URL to the installer, wrapped in an Optional. * @author Griefed */ - fun getInstallerUrl(version: String): Optional<de.griefed.serverpackcreator.api.utilities.URL> + fun getInstallerUrl(version: String): Optional<URL> /** * Check whether the specified version is available/correct/valid. diff --git a/serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/Type.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/Type.kt similarity index 100% rename from serverpackcreator-api/src/commonMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/Type.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/Type.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt similarity index 95% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt index 11231fecc..36fe65205 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMeta.kt @@ -22,7 +22,7 @@ package de.griefed.serverpackcreator.api.versionmeta import com.fasterxml.jackson.databind.ObjectMapper import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.utilities.common.readText import de.griefed.serverpackcreator.api.versionmeta.fabric.FabricIntermediaries import de.griefed.serverpackcreator.api.versionmeta.fabric.FabricMeta @@ -63,7 +63,7 @@ import javax.xml.parsers.ParserConfigurationException * * @author Griefed */ -actual class VersionMeta( +class VersionMeta( private val minecraftManifest: File, private val forgeManifest: File, private val oldNeoForgeManifest: File, @@ -80,92 +80,92 @@ actual class VersionMeta( private val utilities: Utilities, apiProperties: ApiProperties ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val legacyFabricUrlBase = "https://meta.legacyfabric.net" @Suppress("MemberVisibilityCanBePrivate") - actual val legacyFabricUrlGame = + val legacyFabricUrlGame = URI("$legacyFabricUrlBase/v2/versions/game").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val legacyFabricUrlLoader = + val legacyFabricUrlLoader = URI("$legacyFabricUrlBase/v2/versions/loader").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val legacyfabricUrlManifest = + val legacyfabricUrlManifest = URI("https://maven.legacyfabric.net/net/legacyfabric/fabric-installer/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val minecraftUrlManifest = + val minecraftUrlManifest = URI("https://launchermeta.mojang.com/mc/game/version_manifest.json").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val forgeUrlManifest = + val forgeUrlManifest = URI("https://files.minecraftforge.net/net/minecraftforge/forge/maven-metadata.json").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val oldNeoForgeUrlManifest = + val oldNeoForgeUrlManifest = URI("https://maven.neoforged.net/releases/net/neoforged/forge/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val newNeoForgeUrlManifest = + val newNeoForgeUrlManifest = URI("https://maven.neoforged.net/releases/net/neoforged/neoforge/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val fabricUrlManifest = + val fabricUrlManifest = URI("https://maven.fabricmc.net/net/fabricmc/fabric-loader/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val fabricUrlIntermediariesManifest = + val fabricUrlIntermediariesManifest = URI("https://meta.fabricmc.net/v2/versions/intermediary").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val fabricUrlInstallerManifest = + val fabricUrlInstallerManifest = URI("https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val quiltUrlManifest = + val quiltUrlManifest = URI("https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-loader/maven-metadata.xml").toURL() @Suppress("MemberVisibilityCanBePrivate") - actual val quiltUrlInstallerManifest = + val quiltUrlInstallerManifest = URI("https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-installer/maven-metadata.xml").toURL() /** * The MinecraftMeta instance for working with Minecraft versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val minecraft: MinecraftMeta + val minecraft: MinecraftMeta /** * The QuiltMeta-instance for working with Fabric versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val fabric: FabricMeta + val fabric: FabricMeta /** * The ForgeMeta-instance for working with Forge versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val forge: ForgeMeta + val forge: ForgeMeta /** * The NeoForgeMeta-instance for working with NeoForge versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val neoForge: NeoForgeMeta + val neoForge: NeoForgeMeta /** * The QuiltMeta-instance for working with Quilt versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val quilt: QuiltMeta + val quilt: QuiltMeta /** * The LegacyFabric-instance for working with Legacy Fabric versions and information about them. */ @Suppress("MemberVisibilityCanBePrivate") - actual val legacyFabric: LegacyFabricMeta + val legacyFabric: LegacyFabricMeta @Suppress("MemberVisibilityCanBePrivate") val fabricIntermediaries: FabricIntermediaries @@ -414,7 +414,7 @@ actual class VersionMeta( manifestToRefresh: File, content: String ) { - manifestToRefresh.createDirectories() + manifestToRefresh.create() manifestToRefresh.writeText(content) } diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricArguments.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricArguments.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricArguments.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricArguments.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricDetails.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricDetails.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricDetails.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricDetails.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricInstaller.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricInstaller.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricInstaller.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricInstaller.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediaries.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediaries.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediaries.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediaries.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediary.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediary.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediary.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricIntermediary.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLibrary.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLibrary.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLibrary.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLibrary.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoader.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoader.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoader.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoader.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoaderDetails.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoaderDetails.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoaderDetails.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricLoaderDetails.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt similarity index 75% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt index de7f3b62d..5c5aa7a5a 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/fabric/FabricMeta.kt @@ -21,7 +21,7 @@ package de.griefed.serverpackcreator.api.versionmeta.fabric import com.fasterxml.jackson.databind.ObjectMapper import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.versionmeta.Meta import org.xml.sax.SAXException import java.io.File @@ -43,7 +43,7 @@ import javax.xml.parsers.ParserConfigurationException * @author Griefed */ @Suppress("unused") -actual class FabricMeta( +class FabricMeta( fabricManifest: File, fabricInstallerManifest: File, private val fabricIntermediaries: FabricIntermediaries, @@ -58,8 +58,8 @@ actual class FabricMeta( private val launchersDirectory: File = File(installerDirectory, "launchers") init { - installerDirectory.createDirectories(create = true, directory = true) - launchersDirectory.createDirectories(create = true, directory = true) + installerDirectory.create(create = true, directory = true) + launchersDirectory.create(create = true, directory = true) } @Suppress("MemberVisibilityCanBePrivate") @@ -77,77 +77,77 @@ actual class FabricMeta( /** * @author Griefed */ - actual override fun latestLoader() = fabricLoader.latestLoaderVersion() + override fun latestLoader() = fabricLoader.latestLoaderVersion() /** * @author Griefed */ - actual override fun releaseLoader() = fabricLoader.releaseLoaderVersion() + override fun releaseLoader() = fabricLoader.releaseLoaderVersion() /** * @author Griefed */ - actual override fun latestInstaller() = fabricInstaller.latestInstallerVersion() + override fun latestInstaller() = fabricInstaller.latestInstallerVersion() /** * @author Griefed */ - actual override fun releaseInstaller() = fabricInstaller.releaseInstallerVersion() + override fun releaseInstaller() = fabricInstaller.releaseInstallerVersion() /** * @author Griefed */ - actual override fun loaderVersionsListAscending() = fabricLoader.loaders + override fun loaderVersionsListAscending() = fabricLoader.loaders /** * @author Griefed */ - actual override fun loaderVersionsListDescending() = fabricLoader.loaders.reversed() + override fun loaderVersionsListDescending() = fabricLoader.loaders.reversed() /** * @author Griefed */ - actual override fun loaderVersionsArrayAscending() = fabricLoader.loaders.toTypedArray() + override fun loaderVersionsArrayAscending() = fabricLoader.loaders.toTypedArray() /** * @author Griefed */ - actual override fun loaderVersionsArrayDescending() = fabricLoader.loaders.reversed().toTypedArray() + override fun loaderVersionsArrayDescending() = fabricLoader.loaders.reversed().toTypedArray() /** * @author Griefed */ - actual override fun installerVersionsListAscending() = fabricInstaller.installers + override fun installerVersionsListAscending() = fabricInstaller.installers /** * @author Griefed */ - actual override fun installerVersionsListDescending() = fabricInstaller.installers.reversed() + override fun installerVersionsListDescending() = fabricInstaller.installers.reversed() /** * @author Griefed */ - actual override fun installerVersionsArrayAscending() = fabricInstaller.installers.toTypedArray() + override fun installerVersionsArrayAscending() = fabricInstaller.installers.toTypedArray() /** * @author Griefed */ - actual override fun installerVersionsArrayDescending() = fabricInstaller.installers.reversed().toTypedArray() + override fun installerVersionsArrayDescending() = fabricInstaller.installers.reversed().toTypedArray() /** * @author Griefed */ - actual override fun latestInstallerUrl() = fabricInstaller.latestInstallerUrl() + override fun latestInstallerUrl() = fabricInstaller.latestInstallerUrl() /** * @author Griefed */ - actual override fun releaseInstallerUrl() = fabricInstaller.releaseInstallerUrl() + override fun releaseInstallerUrl() = fabricInstaller.releaseInstallerUrl() /** * @author Griefed */ - actual override fun installerFor(version: String) = + override fun installerFor(version: String) = if (isInstallerUrlAvailable(version)) { val destination = File(installerDirectory, "$version.jar") if (!destination.isFile) { @@ -169,7 +169,7 @@ actual class FabricMeta( * Download the improved Fabric launcher and store it in the launcher-cache directory. * @author Griefed */ - actual fun launcherFor(minecraftVersion: String, fabricVersion: String): Optional<File> { + fun launcherFor(minecraftVersion: String, fabricVersion: String): Optional<File> { val destination = File(launchersDirectory, "$minecraftVersion-$fabricVersion.jar") return if (!destination.isFile) { val url = fabricInstaller.improvedLauncherUrl(minecraftVersion, fabricVersion) @@ -187,24 +187,24 @@ actual class FabricMeta( /** * @author Griefed */ - actual override fun isInstallerUrlAvailable(version: String) = + override fun isInstallerUrlAvailable(version: String) = Optional.ofNullable(fabricInstaller.installerUrlMeta[version]).isPresent /** * @author Griefed */ - actual override fun getInstallerUrl(version: String) = + override fun getInstallerUrl(version: String) = Optional.ofNullable(fabricInstaller.installerUrlMeta[version]) /** * @author Griefed */ - actual override fun isVersionValid(version: String) = fabricLoader.loaders.contains(version) + override fun isVersionValid(version: String) = fabricLoader.loaders.contains(version) /** * @author Griefed */ - actual override fun isMinecraftSupported(minecraftVersion: String) = + override fun isMinecraftSupported(minecraftVersion: String) = fabricIntermediaries.getIntermediary(minecraftVersion).isPresent /** @@ -215,7 +215,7 @@ actual class FabricMeta( * @return URL to the Fabric launcher for the specified Minecraft and Fabric version. * @author Griefed */ - actual fun improvedLauncherUrl(minecraftVersion: String, fabricVersion: String) = + fun improvedLauncherUrl(minecraftVersion: String, fabricVersion: String) = fabricInstaller.improvedLauncherUrl(minecraftVersion, fabricVersion) /** diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeInstance.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeInstance.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeInstance.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeInstance.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt similarity index 98% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt index 00c0a4258..8a4732835 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeLoader.kt @@ -41,7 +41,7 @@ internal class ForgeLoader( private val utilities: Utilities, private val minecraftMeta: MinecraftMeta ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } val minecraftVersions: MutableList<String> = ArrayList(100) val forgeVersions: MutableList<String> = ArrayList(100) diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt similarity index 87% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt index 45df28025..b6cc17b2f 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/forge/ForgeMeta.kt @@ -20,7 +20,7 @@ package de.griefed.serverpackcreator.api.versionmeta.forge import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.versionmeta.minecraft.MinecraftMeta import java.io.File import java.io.IOException @@ -35,7 +35,7 @@ import java.util.* * @author Griefed */ @Suppress("unused") -actual class ForgeMeta actual constructor( +class ForgeMeta constructor( private val forgeManifest: File, private val utilities: Utilities, installerCacheDirectory: File @@ -44,7 +44,7 @@ actual class ForgeMeta actual constructor( private val installerDirectory: File = File(installerCacheDirectory, "forge") init { - installerDirectory.createDirectories(create = true, directory = true) + installerDirectory.create(create = true, directory = true) } /** @@ -82,7 +82,7 @@ actual class ForgeMeta actual constructor( * @return `true` if the given Minecraft and Forge versions are valid/supported/available. * @author Griefed */ - actual fun isForgeAndMinecraftCombinationValid(minecraftVersion: String, forgeVersion: String) = + fun isForgeAndMinecraftCombinationValid(minecraftVersion: String, forgeVersion: String) = isMinecraftVersionSupported(minecraftVersion) && isForgeVersionValid(forgeVersion) /** @@ -92,7 +92,7 @@ actual class ForgeMeta actual constructor( * @return `true` if the given Minecraft version is valid/supported/available. * @author Griefed */ - actual fun isMinecraftVersionSupported(minecraftVersion: String) = + fun isMinecraftVersionSupported(minecraftVersion: String) = Optional.ofNullable(forgeLoader!!.versionMeta[minecraftVersion]).isPresent /** @@ -102,7 +102,7 @@ actual class ForgeMeta actual constructor( * @return `true` if the given Forge version is valid/supported/available. * @author Griefed */ - actual fun isForgeVersionValid(forgeVersion: String) = + fun isForgeVersionValid(forgeVersion: String) = Optional.ofNullable(forgeLoader!!.forgeToMinecraftMeta[forgeVersion]).isPresent /** @@ -113,7 +113,7 @@ actual class ForgeMeta actual constructor( * @return `true` if Forge is available for the given Forge- and Minecraft version. * @author Griefed */ - actual fun isForgeInstanceAvailable(minecraftVersion: String, forgeVersion: String) = + fun isForgeInstanceAvailable(minecraftVersion: String, forgeVersion: String) = getForgeInstance(minecraftVersion, forgeVersion).isPresent /** @@ -136,7 +136,7 @@ actual class ForgeMeta actual constructor( * @return `true` if Forge is available for the given Forge version. * @author Griefed */ - actual fun isForgeInstanceAvailable(forgeVersion: String) = getForgeInstance(forgeVersion).isPresent + fun isForgeInstanceAvailable(forgeVersion: String) = getForgeInstance(forgeVersion).isPresent /** * Get a [ForgeInstance] for a given Forge version, wrapped in an [Optional]. @@ -186,7 +186,7 @@ actual class ForgeMeta actual constructor( * @return Latest Forge version for the given Minecraft version, wrapped in an [Optional] * @author Griefed */ - actual fun newestForgeVersion(minecraftVersion: String) = + fun newestForgeVersion(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else if (supportedForgeVersionsAscending(minecraftVersion).isPresent) { @@ -204,7 +204,7 @@ actual class ForgeMeta actual constructor( * @return Oldest Forge version for the given Minecraft version, wrapped in [Optional] * @author Griefed */ - actual fun oldestForgeVersion(minecraftVersion: String) = + fun oldestForgeVersion(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else if (supportedForgeVersionsAscending(minecraftVersion).isPresent) { @@ -220,7 +220,7 @@ actual class ForgeMeta actual constructor( * @return List of available Forge versions. * @author Griefed */ - actual fun forgeVersionsAscending() = forgeLoader!!.forgeVersions + fun forgeVersionsAscending() = forgeLoader!!.forgeVersions /** * Get the list of available Forge versions, in descending order. @@ -228,7 +228,7 @@ actual class ForgeMeta actual constructor( * @return List of available Forge versions. * @author Griefed */ - actual fun forgeVersionsDescending() = forgeVersionsAscending().reversed() + fun forgeVersionsDescending() = forgeVersionsAscending().reversed() /** * Get the array of available Forge versions, in ascending order. @@ -236,7 +236,7 @@ actual class ForgeMeta actual constructor( * @return Array of available Forge versions. * @author Griefed */ - actual fun forgeVersionsAscendingArray() = forgeVersionsAscending().toTypedArray() + fun forgeVersionsAscendingArray() = forgeVersionsAscending().toTypedArray() /** * Get the array of available Forge versions, in descending order. @@ -244,7 +244,7 @@ actual class ForgeMeta actual constructor( * @return Array of available Forge versions. * @author Griefed */ - actual fun forgeVersionsDescendingArray() = forgeVersionsDescending().toTypedArray() + fun forgeVersionsDescendingArray() = forgeVersionsDescending().toTypedArray() /** * Get a list of available Forge version for a given Minecraft version in ascending order. @@ -253,7 +253,7 @@ actual class ForgeMeta actual constructor( * @return List of available Forge versions for the given Minecraft version in ascending order. * @author Griefed */ - actual fun supportedForgeVersionsAscending(minecraftVersion: String) = + fun supportedForgeVersionsAscending(minecraftVersion: String) = Optional.ofNullable(forgeLoader?.versionMeta?.get(minecraftVersion)) /** @@ -263,7 +263,7 @@ actual class ForgeMeta actual constructor( * @return List of available Forge versions for the given Minecraft version in descending order. * @author Griefed */ - actual fun supportedForgeVersionsDescending(minecraftVersion: String) = + fun supportedForgeVersionsDescending(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -281,7 +281,7 @@ actual class ForgeMeta actual constructor( * wrapped in an [Optional] * @author Griefed */ - actual fun supportedForgeVersionsAscendingArray(minecraftVersion: String) = + fun supportedForgeVersionsAscendingArray(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -300,7 +300,7 @@ actual class ForgeMeta actual constructor( * wrapped in an [Optional] * @author Griefed */ - actual fun supportedForgeVersionsDescendingArray(minecraftVersion: String) = + fun supportedForgeVersionsDescendingArray(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -315,7 +315,7 @@ actual class ForgeMeta actual constructor( * @return Minecraft version for the given Forge version, wrapped in an [Optional]. * @author Griefed */ - actual fun minecraftVersion(forgeVersion: String) = + fun minecraftVersion(forgeVersion: String) = Optional.ofNullable(forgeLoader!!.forgeToMinecraftMeta[forgeVersion]) /** @@ -324,7 +324,7 @@ actual class ForgeMeta actual constructor( * @return List of Forge supported Minecraft versions, in ascending order. * @author Griefed */ - actual fun supportedMinecraftVersionsAscending() = forgeLoader!!.minecraftVersions + fun supportedMinecraftVersionsAscending() = forgeLoader!!.minecraftVersions /** * Get the list of Forge supported Minecraft versions, in descending order. @@ -332,7 +332,7 @@ actual class ForgeMeta actual constructor( * @return List of Forge supported Minecraft versions, in descending order. * @author Griefed */ - actual fun supportedMinecraftVersionsDescending() = supportedMinecraftVersionsAscending().reversed() + fun supportedMinecraftVersionsDescending() = supportedMinecraftVersionsAscending().reversed() /** * Get the array of Forge supported Minecraft versions, in ascending order. @@ -340,7 +340,7 @@ actual class ForgeMeta actual constructor( * @return Array of Forge supported Minecraft versions, in ascending order. * @author Griefed */ - actual fun supportedMinecraftVersionsAscendingArray() = supportedMinecraftVersionsAscending().toTypedArray() + fun supportedMinecraftVersionsAscendingArray() = supportedMinecraftVersionsAscending().toTypedArray() /** * Get the array of Forge supported Minecraft versions, in descending order. @@ -348,7 +348,7 @@ actual class ForgeMeta actual constructor( * @return Array of Forge supported Minecraft versions, in descending order. * @author Griefed */ - actual fun supportedMinecraftVersionsDescendingArray() = supportedMinecraftVersionsDescending().toTypedArray() + fun supportedMinecraftVersionsDescendingArray() = supportedMinecraftVersionsDescending().toTypedArray() /** * Get the Forge server installer URL for a given Forge version, wrapped in an [Optional]. @@ -357,7 +357,7 @@ actual class ForgeMeta actual constructor( * @return Forge server installer URL for the given Forge version, wrapped in an [Optional]. * @author Griefed */ - actual fun installerUrl(forgeVersion: String) = + fun installerUrl(forgeVersion: String) = if (isForgeVersionValid(forgeVersion) && getForgeInstance(forgeVersion).isPresent) { val instance = getForgeInstance(forgeVersion).get() Optional.of(instance.installerUrl) @@ -374,7 +374,7 @@ actual class ForgeMeta actual constructor( * can check whether it is available first. * @author Griefed */ - actual fun installerFor(forgeVersion: String, minecraftVersion: String) = + fun installerFor(forgeVersion: String, minecraftVersion: String) = if (isForgeInstanceAvailable(minecraftVersion, forgeVersion)) { val destination = File(installerDirectory, "$forgeVersion-$minecraftVersion.jar") if (!destination.isFile) { diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricGame.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricGame.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricGame.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricGame.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricInstaller.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricInstaller.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricInstaller.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricInstaller.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricLoader.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricLoader.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricLoader.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricLoader.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt similarity index 70% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt index 4e39d8112..fe4ca8e21 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricMeta.kt @@ -20,7 +20,7 @@ package de.griefed.serverpackcreator.api.versionmeta.legacyfabric import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.versionmeta.Meta import org.xml.sax.SAXException import java.io.File @@ -41,7 +41,7 @@ import javax.xml.parsers.ParserConfigurationException * @author Griefed */ @Suppress("unused") -actual class LegacyFabricMeta actual constructor( +class LegacyFabricMeta constructor( gameVersionsManifest: File, loaderVersionsManifest: File, installerVersionsManifest: File, @@ -54,7 +54,7 @@ actual class LegacyFabricMeta actual constructor( private val installerDirectory: File = File(installerCacheDirectory, "legacyfabric") init { - installerDirectory.createDirectories(create = true, directory = true) + installerDirectory.create(create = true, directory = true) } @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @@ -64,18 +64,18 @@ actual class LegacyFabricMeta actual constructor( installerVersions.update() } - actual override fun latestLoader() = loaderVersions.allVersions[0] - actual override fun releaseLoader() = loaderVersions.releases[0] - actual override fun latestInstaller() = installerVersions.latest!! - actual override fun releaseInstaller() = installerVersions.release!! - actual override fun loaderVersionsListAscending() = loaderVersionsListDescending().reversed().toMutableList() - actual override fun loaderVersionsListDescending() = loaderVersions.allVersions - actual override fun loaderVersionsArrayAscending() = loaderVersionsListAscending().toTypedArray() - actual override fun loaderVersionsArrayDescending() = loaderVersionsListDescending().toTypedArray() - actual override fun installerVersionsListAscending() = installerVersions.allVersions - actual override fun installerVersionsListDescending() = installerVersionsListAscending().reversed().toMutableList() - actual override fun installerVersionsArrayAscending() = installerVersionsListAscending().toTypedArray() - actual override fun installerVersionsArrayDescending() = installerVersionsListDescending().toTypedArray() + override fun latestLoader() = loaderVersions.allVersions[0] + override fun releaseLoader() = loaderVersions.releases[0] + override fun latestInstaller() = installerVersions.latest!! + override fun releaseInstaller() = installerVersions.release!! + override fun loaderVersionsListAscending() = loaderVersionsListDescending().reversed().toMutableList() + override fun loaderVersionsListDescending() = loaderVersions.allVersions + override fun loaderVersionsArrayAscending() = loaderVersionsListAscending().toTypedArray() + override fun loaderVersionsArrayDescending() = loaderVersionsListDescending().toTypedArray() + override fun installerVersionsListAscending() = installerVersions.allVersions + override fun installerVersionsListDescending() = installerVersionsListAscending().reversed().toMutableList() + override fun installerVersionsArrayAscending() = installerVersionsListAscending().toTypedArray() + override fun installerVersionsArrayDescending() = installerVersionsListDescending().toTypedArray() @Throws(MalformedURLException::class) override fun latestInstallerUrl() = installerVersions.latestURL() @@ -83,7 +83,7 @@ actual class LegacyFabricMeta actual constructor( @Throws(MalformedURLException::class) override fun releaseInstallerUrl() = installerVersions.releaseURL() - actual override fun installerFor(version: String) = + override fun installerFor(version: String) = if (isInstallerUrlAvailable(version)) { val destination = File(installerDirectory, "$version.jar") if (!destination.isFile) { @@ -104,7 +104,7 @@ actual class LegacyFabricMeta actual constructor( /** * @author Griefed */ - actual override fun isInstallerUrlAvailable(version: String) = + override fun isInstallerUrlAvailable(version: String) = try { installerVersions.specificURL(version).isPresent } catch (e: MalformedURLException) { @@ -120,12 +120,12 @@ actual class LegacyFabricMeta actual constructor( /** * @author Griefed */ - actual override fun isVersionValid(version: String) = loaderVersions.allVersions.contains(version) + override fun isVersionValid(version: String) = loaderVersions.allVersions.contains(version) /** * @author Griefed */ - actual override fun isMinecraftSupported(minecraftVersion: String) = + override fun isMinecraftSupported(minecraftVersion: String) = gameVersions.allVersions.contains(minecraftVersion) /** @@ -134,5 +134,5 @@ actual class LegacyFabricMeta actual constructor( * @return All Legacy Fabric supported Minecraft versions. * @author Griefed */ - actual fun supportedMinecraftVersions() = gameVersions.allVersions + fun supportedMinecraftVersions() = gameVersions.allVersions } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricVersioning.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricVersioning.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricVersioning.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/legacyfabric/LegacyFabricVersioning.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClient.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClient.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClient.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClient.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt similarity index 98% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt index 641b9fe39..fe86ac4c7 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftClientMeta.kt @@ -45,7 +45,7 @@ internal class MinecraftClientMeta( private val utilities: Utilities, private val apiProperties: ApiProperties ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } val releases: MutableList<MinecraftClient> = ArrayList(100) val snapshots: MutableList<MinecraftClient> = ArrayList(200) val allVersions: MutableList<MinecraftClient> = ArrayList(300) diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt similarity index 95% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt index 969a6c218..e3dd6c608 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftMeta.kt @@ -38,7 +38,7 @@ import java.util.* * * @author Griefed */ -actual class MinecraftMeta( +class MinecraftMeta( minecraftManifest: File, injectedForgeMeta: ForgeMeta, utilities: Utilities, @@ -78,7 +78,7 @@ actual class MinecraftMeta( * @return `true` if a [MinecraftClient] is available. * @author Griefed */ - actual fun isMinecraftVersionAvailable(minecraftVersion: String): Boolean { + fun isMinecraftVersionAvailable(minecraftVersion: String): Boolean { return getClient(minecraftVersion).isPresent } @@ -101,7 +101,7 @@ actual class MinecraftMeta( * descending order. * @author Griefed */ - actual fun releaseVersionsArrayDescending(): Array<String> { + fun releaseVersionsArrayDescending(): Array<String> { return releaseVersionsDescending().toTypedArray() } @@ -113,7 +113,7 @@ actual class MinecraftMeta( * descending order. * @author Griefed */ - actual fun releaseVersionsDescending(): List<String> { + fun releaseVersionsDescending(): List<String> { val list: MutableList<String> = ArrayList(100) for (client in releasesDescending()) { list.add(client.version) @@ -140,7 +140,7 @@ actual class MinecraftMeta( * ascending order. * @author Griefed */ - actual fun releaseVersionsArrayAscending(): Array<String> { + fun releaseVersionsArrayAscending(): Array<String> { return releaseVersionsAscending().toTypedArray() } @@ -152,7 +152,7 @@ actual class MinecraftMeta( * order. * @author Griefed */ - actual fun releaseVersionsAscending(): List<String> { + fun releaseVersionsAscending(): List<String> { val list: MutableList<String> = ArrayList(100) for (client in releasesDescending()) { list.add(client.version) @@ -168,7 +168,7 @@ actual class MinecraftMeta( * descending order. * @author Griefed */ - actual fun snapshotVersionsArrayDescending(): Array<String> { + fun snapshotVersionsArrayDescending(): Array<String> { return snapshotVersionsDescending().toTypedArray() } @@ -180,7 +180,7 @@ actual class MinecraftMeta( * descending order. * @author Griefed */ - actual fun snapshotVersionsDescending(): List<String> { + fun snapshotVersionsDescending(): List<String> { val list: MutableList<String> = ArrayList(100) for (client in snapshotsDescending()) { list.add(client.version) @@ -207,7 +207,7 @@ actual class MinecraftMeta( * ascending order. * @author Griefed */ - actual fun snapshotVersionsArrayAscending(): Array<String> { + fun snapshotVersionsArrayAscending(): Array<String> { return snapshotVersionsAscending().toTypedArray() } @@ -219,7 +219,7 @@ actual class MinecraftMeta( * ascending order. * @author Griefed */ - actual fun snapshotVersionsAscending(): List<String> { + fun snapshotVersionsAscending(): List<String> { val list: MutableList<String> = ArrayList(100) for (client in snapshotsDescending()) { list.add(client.version) @@ -234,7 +234,7 @@ actual class MinecraftMeta( * @return All available Minecraft versions in descending order. * @author Griefed */ - actual fun allVersionsArrayDescending(): Array<String> { + fun allVersionsArrayDescending(): Array<String> { return allVersionsDescending().toTypedArray() } /* @@ -252,7 +252,7 @@ actual class MinecraftMeta( * @author Griefed */ @Suppress("MemberVisibilityCanBePrivate") - actual fun allVersionsDescending(): List<String> { + fun allVersionsDescending(): List<String> { val versions: MutableList<String> = ArrayList(100) for (client in allDescending()) { versions.add(client.version) @@ -280,7 +280,7 @@ actual class MinecraftMeta( * @author Griefed */ @Suppress("unused") - actual fun allVersionsArrayAscending(): Array<String> { + fun allVersionsArrayAscending(): Array<String> { return allVersionsAscending().toTypedArray() } @@ -292,7 +292,7 @@ actual class MinecraftMeta( * @author Griefed */ @Suppress("MemberVisibilityCanBePrivate") - actual fun allVersionsAscending(): List<String> { + fun allVersionsAscending(): List<String> { val versions: MutableList<String> = ArrayList(releaseVersionsAscending()) for (client in allAscending()) { versions.add(client.version) @@ -435,7 +435,7 @@ actual class MinecraftMeta( * @return `true` if a [MinecraftServer] is available. * @author Griefed */ - actual fun isServerAvailable(minecraftVersion: String): Boolean { + fun isServerAvailable(minecraftVersion: String): Boolean { return getServer(minecraftVersion).isPresent } diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServer.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServer.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServer.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServer.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServerMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServerMeta.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServerMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/minecraft/MinecraftServerMeta.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeInstance.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeInstance.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeInstance.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeInstance.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt similarity index 99% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt index 4da6a2969..c012a896b 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeLoader.kt @@ -42,7 +42,7 @@ internal class NeoForgeLoader( private val utilities: Utilities, private val minecraftMeta: MinecraftMeta ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } val minecraftVersions: MutableList<String> = ArrayList(100) val neoForgeVersions: MutableList<String> = ArrayList(100) private val version = "version" diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt similarity index 86% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt index def1df7b7..0dc6b6a01 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NeoForgeMeta.kt @@ -20,7 +20,7 @@ package de.griefed.serverpackcreator.api.versionmeta.neoforge import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.versionmeta.minecraft.MinecraftMeta import java.io.File import java.io.IOException @@ -35,7 +35,7 @@ import java.util.* * @author Griefed */ @Suppress("unused") -actual class NeoForgeMeta actual constructor( +class NeoForgeMeta( private val oldNeoForgeManifest: File, private val newNeoForgeManifest: File, private val utilities: Utilities, @@ -45,7 +45,7 @@ actual class NeoForgeMeta actual constructor( private val installerDirectory: File = File(installerCacheDirectory, "neoforge") init { - installerDirectory.createDirectories(create = true, directory = true) + installerDirectory.create(create = true, directory = true) } /** @@ -87,7 +87,7 @@ actual class NeoForgeMeta actual constructor( * @return `true` if the given Minecraft and NeoForge versions are valid/supported/available. * @author Griefed */ - actual fun isNeoForgeAndMinecraftCombinationValid(minecraftVersion: String, neoForgeVersion: String) = + fun isNeoForgeAndMinecraftCombinationValid(minecraftVersion: String, neoForgeVersion: String) = isMinecraftVersionSupported(minecraftVersion) && isNeoForgeVersionValid(neoForgeVersion) /** @@ -97,7 +97,7 @@ actual class NeoForgeMeta actual constructor( * @return `true` if the given Minecraft version is valid/supported/available. * @author Griefed */ - actual fun isMinecraftVersionSupported(minecraftVersion: String) = + fun isMinecraftVersionSupported(minecraftVersion: String) = Optional.ofNullable(neoForgeLoader!!.versionMeta[minecraftVersion]).isPresent /** @@ -107,7 +107,7 @@ actual class NeoForgeMeta actual constructor( * @return `true` if the given NeoForge version is valid/supported/available. * @author Griefed */ - actual fun isNeoForgeVersionValid(neoForgeVersion: String) = + fun isNeoForgeVersionValid(neoForgeVersion: String) = Optional.ofNullable(neoForgeLoader!!.neoForgeToMinecraftMeta[neoForgeVersion]).isPresent /** @@ -118,7 +118,7 @@ actual class NeoForgeMeta actual constructor( * @return `true` if NeoForge is available for the given NeoForge- and Minecraft version. * @author Griefed */ - actual fun isNeoForgeInstanceAvailable(minecraftVersion: String, neoForgeVersion: String) = + fun isNeoForgeInstanceAvailable(minecraftVersion: String, neoForgeVersion: String) = getNeoForgeInstance(minecraftVersion, neoForgeVersion).isPresent /** @@ -141,7 +141,7 @@ actual class NeoForgeMeta actual constructor( * @return `true` if NeoForge is available for the given NeoForge version. * @author Griefed */ - actual fun isNeoForgeInstanceAvailable(neoForgeVersion: String) = getNeoForgeInstance(neoForgeVersion).isPresent + fun isNeoForgeInstanceAvailable(neoForgeVersion: String) = getNeoForgeInstance(neoForgeVersion).isPresent /** * Get a [NeoForgeInstance] for a given NeoForge version, wrapped in an [Optional]. @@ -191,7 +191,7 @@ actual class NeoForgeMeta actual constructor( * @return Latest NeoForge version for the given Minecraft version, wrapped in an [Optional] * @author Griefed */ - actual fun newestNeoForgeVersion(minecraftVersion: String) = + fun newestNeoForgeVersion(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else if (supportedNeoForgeVersionsAscending(minecraftVersion).isPresent) { @@ -207,7 +207,7 @@ actual class NeoForgeMeta actual constructor( * @return Oldest NeoForge version for the given Minecraft version, wrapped in [Optional] * @author Griefed */ - actual fun oldestNeoForgeVersion(minecraftVersion: String) = + fun oldestNeoForgeVersion(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else if (supportedNeoForgeVersionsAscending(minecraftVersion).isPresent) { @@ -223,7 +223,7 @@ actual class NeoForgeMeta actual constructor( * @return List of available NeoForge versions. * @author Griefed */ - actual fun neoForgeVersionsAscending() = neoForgeLoader!!.neoForgeVersions.reversed().toMutableList() + fun neoForgeVersionsAscending() = neoForgeLoader!!.neoForgeVersions.reversed().toMutableList() /** * Get the list of available NeoForge versions, in descending order. @@ -231,7 +231,7 @@ actual class NeoForgeMeta actual constructor( * @return List of available NeoForge versions. * @author Griefed */ - actual fun neoForgeVersionsDescending() = neoForgeVersionsAscending().toList() + fun neoForgeVersionsDescending() = neoForgeVersionsAscending().toList() /** * Get the array of available NeoForge versions, in ascending order. @@ -239,7 +239,7 @@ actual class NeoForgeMeta actual constructor( * @return Array of available NeoForge versions. * @author Griefed */ - actual fun neoForgeVersionsAscendingArray() = neoForgeVersionsAscending().toTypedArray() + fun neoForgeVersionsAscendingArray() = neoForgeVersionsAscending().toTypedArray() /** * Get the array of available NeoForge versions, in descending order. @@ -247,7 +247,7 @@ actual class NeoForgeMeta actual constructor( * @return Array of available NeoForge versions. * @author Griefed */ - actual fun neoForgeVersionsDescendingArray() = neoForgeVersionsDescending().toTypedArray() + fun neoForgeVersionsDescendingArray() = neoForgeVersionsDescending().toTypedArray() /** * Get a list of available NeoForge version for a given Minecraft version in ascending order. @@ -256,7 +256,7 @@ actual class NeoForgeMeta actual constructor( * @return List of available NeoForge versions for the given Minecraft version in ascending order. * @author Griefed */ - actual fun supportedNeoForgeVersionsAscending(minecraftVersion: String) = + fun supportedNeoForgeVersionsAscending(minecraftVersion: String) = Optional.ofNullable(neoForgeLoader?.versionMeta?.get(minecraftVersion)?.reversed()) /** @@ -266,7 +266,7 @@ actual class NeoForgeMeta actual constructor( * @return List of available NeoForge versions for the given Minecraft version in descending order. * @author Griefed */ - actual fun supportedNeoForgeVersionsDescending(minecraftVersion: String) = + fun supportedNeoForgeVersionsDescending(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -283,7 +283,7 @@ actual class NeoForgeMeta actual constructor( * wrapped in an [Optional] * @author Griefed */ - actual fun supportedNeoForgeVersionsAscendingArray(minecraftVersion: String) = + fun supportedNeoForgeVersionsAscendingArray(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -302,7 +302,7 @@ actual class NeoForgeMeta actual constructor( * wrapped in an [Optional] * @author Griefed */ - actual fun supportedNeoForgeVersionsDescendingArray(minecraftVersion: String) = + fun supportedNeoForgeVersionsDescendingArray(minecraftVersion: String) = if (!isMinecraftVersionSupported(minecraftVersion)) { Optional.empty() } else { @@ -317,7 +317,7 @@ actual class NeoForgeMeta actual constructor( * @return Minecraft version for the given Neo version, wrapped in an [Optional]. * @author Griefed */ - actual fun minecraftVersion(neoForgeVersion: String) = + fun minecraftVersion(neoForgeVersion: String) = Optional.ofNullable(neoForgeLoader!!.neoForgeToMinecraftMeta[neoForgeVersion]) /** @@ -326,7 +326,7 @@ actual class NeoForgeMeta actual constructor( * @return List of NeoForge supported Minecraft versions, in ascending order. * @author Griefed */ - actual fun supportedMinecraftVersionsAscending() = neoForgeLoader!!.minecraftVersions + fun supportedMinecraftVersionsAscending() = neoForgeLoader!!.minecraftVersions /** * Get the list of NeoForge supported Minecraft versions, in descending order. @@ -334,7 +334,7 @@ actual class NeoForgeMeta actual constructor( * @return List of NeoForge supported Minecraft versions, in descending order. * @author Griefed */ - actual fun supportedMinecraftVersionsDescending() = supportedMinecraftVersionsAscending().reversed() + fun supportedMinecraftVersionsDescending() = supportedMinecraftVersionsAscending().reversed() /** * Get the array of NeoForge supported Minecraft versions, in ascending order. @@ -342,7 +342,7 @@ actual class NeoForgeMeta actual constructor( * @return Array of NeoForge supported Minecraft versions, in ascending order. * @author Griefed */ - actual fun supportedMinecraftVersionsAscendingArray() = supportedMinecraftVersionsAscending().toTypedArray() + fun supportedMinecraftVersionsAscendingArray() = supportedMinecraftVersionsAscending().toTypedArray() /** * Get the array of NeoForge supported Minecraft versions, in descending order. @@ -350,7 +350,7 @@ actual class NeoForgeMeta actual constructor( * @return Array of NeoForge supported Minecraft versions, in descending order. * @author Griefed */ - actual fun supportedMinecraftVersionsDescendingArray() = supportedMinecraftVersionsDescending().toTypedArray() + fun supportedMinecraftVersionsDescendingArray() = supportedMinecraftVersionsDescending().toTypedArray() /** * Get the NeoForge server installer URL for a given NeoForge version, wrapped in an [Optional]. @@ -359,7 +359,7 @@ actual class NeoForgeMeta actual constructor( * @return NeoForge server installer URL for the given NeoForge version, wrapped in an [Optional]. * @author Griefed */ - actual fun installerUrl(neoForgeVersion: String) = + fun installerUrl(neoForgeVersion: String) = if (isNeoForgeVersionValid(neoForgeVersion) && getNeoForgeInstance(neoForgeVersion).isPresent) { val instance = getNeoForgeInstance(neoForgeVersion).get() Optional.of(instance.installerUrl) @@ -373,7 +373,7 @@ actual class NeoForgeMeta actual constructor( * can check whether it is available first. * @author Griefed */ - actual fun installerFor(neoForgeVersion: String, minecraftVersion: String) = + fun installerFor(neoForgeVersion: String, minecraftVersion: String) = if (isNeoForgeInstanceAvailable(minecraftVersion, neoForgeVersion)) { val destination = File(installerDirectory, "$neoForgeVersion-$minecraftVersion.jar") if (!destination.isFile) { diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NewNeoForgeInstance.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NewNeoForgeInstance.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NewNeoForgeInstance.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/NewNeoForgeInstance.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/OldNeoForgeInstance.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/OldNeoForgeInstance.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/OldNeoForgeInstance.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/neoforge/OldNeoForgeInstance.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltInstaller.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltInstaller.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltInstaller.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltInstaller.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltLoader.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltLoader.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltLoader.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltLoader.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt similarity index 60% rename from serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt rename to serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt index c13baf8d3..dd3097ffe 100644 --- a/serverpackcreator-api/src/jvmMain/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt +++ b/serverpackcreator-api/src/main/kotlin/de/griefed/serverpackcreator/api/versionmeta/quilt/QuiltMeta.kt @@ -20,7 +20,7 @@ package de.griefed.serverpackcreator.api.versionmeta.quilt import de.griefed.serverpackcreator.api.utilities.common.Utilities -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.api.versionmeta.Meta import de.griefed.serverpackcreator.api.versionmeta.fabric.FabricIntermediaries import org.xml.sax.SAXException @@ -39,7 +39,7 @@ import javax.xml.parsers.ParserConfigurationException * * @author Griefed */ -actual class QuiltMeta( +class QuiltMeta( quiltManifest: File, quiltInstallerManifest: File, private val fabricIntermediaries: FabricIntermediaries, @@ -51,7 +51,7 @@ actual class QuiltMeta( private val installerDirectory: File = File(installerCacheDirectory, "quilt") init { - installerDirectory.createDirectories(create = true, directory = true) + installerDirectory.create(create = true, directory = true) } @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) @@ -60,22 +60,22 @@ actual class QuiltMeta( quiltInstaller.update() } - actual override fun latestLoader() = quiltLoader.latest!! - actual override fun releaseLoader() = quiltLoader.release!! - actual override fun latestInstaller() = quiltInstaller.latestInstaller!! - actual override fun releaseInstaller() = quiltInstaller.releaseInstaller!! - actual override fun loaderVersionsListAscending() = quiltLoader.loaders - actual override fun loaderVersionsListDescending() = quiltLoader.loaders.reversed() - actual override fun loaderVersionsArrayAscending() = quiltLoader.loaders.toTypedArray() - actual override fun loaderVersionsArrayDescending() = quiltLoader.loaders.reversed().toTypedArray() - actual override fun installerVersionsListAscending() = quiltInstaller.installers - actual override fun installerVersionsListDescending() = quiltInstaller.installers.reversed() - actual override fun installerVersionsArrayAscending() = quiltInstaller.installers.toTypedArray() - actual override fun installerVersionsArrayDescending() = quiltInstaller.installers.reversed().toTypedArray() - actual override fun latestInstallerUrl() = quiltInstaller.latestInstallerUrl!! - actual override fun releaseInstallerUrl() = quiltInstaller.releaseInstallerUrl!! + override fun latestLoader() = quiltLoader.latest!! + override fun releaseLoader() = quiltLoader.release!! + override fun latestInstaller() = quiltInstaller.latestInstaller!! + override fun releaseInstaller() = quiltInstaller.releaseInstaller!! + override fun loaderVersionsListAscending() = quiltLoader.loaders + override fun loaderVersionsListDescending() = quiltLoader.loaders.reversed() + override fun loaderVersionsArrayAscending() = quiltLoader.loaders.toTypedArray() + override fun loaderVersionsArrayDescending() = quiltLoader.loaders.reversed().toTypedArray() + override fun installerVersionsListAscending() = quiltInstaller.installers + override fun installerVersionsListDescending() = quiltInstaller.installers.reversed() + override fun installerVersionsArrayAscending() = quiltInstaller.installers.toTypedArray() + override fun installerVersionsArrayDescending() = quiltInstaller.installers.reversed().toTypedArray() + override fun latestInstallerUrl() = quiltInstaller.latestInstallerUrl!! + override fun releaseInstallerUrl() = quiltInstaller.releaseInstallerUrl!! - actual override fun installerFor(version: String) = + override fun installerFor(version: String) = if (isInstallerUrlAvailable(version)) { val destination = File(installerDirectory, "$version.jar") if (!destination.isFile) { @@ -93,8 +93,8 @@ actual class QuiltMeta( Optional.empty() } - actual override fun isInstallerUrlAvailable(version: String) = Optional.ofNullable(quiltInstaller.installerUrlMeta[version]).isPresent - actual override fun getInstallerUrl(version: String) = Optional.ofNullable(quiltInstaller.installerUrlMeta[version]) - actual override fun isVersionValid(version: String) = quiltLoader.loaders.contains(version) - actual override fun isMinecraftSupported(minecraftVersion: String) = fabricIntermediaries.isIntermediariesPresent(minecraftVersion) + override fun isInstallerUrlAvailable(version: String) = Optional.ofNullable(quiltInstaller.installerUrlMeta[version]).isPresent + override fun getInstallerUrl(version: String) = Optional.ofNullable(quiltInstaller.installerUrlMeta[version]) + override fun isVersionValid(version: String) = quiltLoader.loaders.contains(version) + override fun isMinecraftSupported(minecraftVersion: String) = fabricIntermediaries.isIntermediariesPresent(minecraftVersion) } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/kotlin/io/ByteReader.kt b/serverpackcreator-api/src/main/kotlin/io/ByteReader.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/io/ByteReader.kt rename to serverpackcreator-api/src/main/kotlin/io/ByteReader.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/io/ByteWriter.kt b/serverpackcreator-api/src/main/kotlin/io/ByteWriter.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/io/ByteWriter.kt rename to serverpackcreator-api/src/main/kotlin/io/ByteWriter.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/io/Bytes.kt b/serverpackcreator-api/src/main/kotlin/io/Bytes.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/io/Bytes.kt rename to serverpackcreator-api/src/main/kotlin/io/Bytes.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/LinkInfo.kt b/serverpackcreator-api/src/main/kotlin/mslinks/LinkInfo.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/LinkInfo.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/LinkInfo.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/LinkTargetIDList.kt b/serverpackcreator-api/src/main/kotlin/mslinks/LinkTargetIDList.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/LinkTargetIDList.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/LinkTargetIDList.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/Serializable.kt b/serverpackcreator-api/src/main/kotlin/mslinks/Serializable.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/Serializable.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/Serializable.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLink.kt b/serverpackcreator-api/src/main/kotlin/mslinks/ShellLink.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLink.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/ShellLink.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkException.kt b/serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkException.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkException.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkException.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkHeader.kt b/serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkHeader.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkHeader.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkHeader.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkHelper.kt b/serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkHelper.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/ShellLinkHelper.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/ShellLinkHelper.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/UnsupportedCLSIDException.kt b/serverpackcreator-api/src/main/kotlin/mslinks/UnsupportedCLSIDException.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/UnsupportedCLSIDException.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/UnsupportedCLSIDException.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/UnsupportedItemIDException.kt b/serverpackcreator-api/src/main/kotlin/mslinks/UnsupportedItemIDException.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/UnsupportedItemIDException.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/UnsupportedItemIDException.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/BitSet32.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/BitSet32.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/BitSet32.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/BitSet32.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/CNRLink.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/CNRLink.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/CNRLink.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/CNRLink.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/CNRLinkFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/CNRLinkFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/CNRLinkFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/CNRLinkFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ConsoleFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ConsoleFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ConsoleFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ConsoleFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/FileAttributesFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/FileAttributesFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/FileAttributesFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/FileAttributesFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Filetime.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/Filetime.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Filetime.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/Filetime.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/GUID.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/GUID.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/GUID.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/GUID.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/HotKeyFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/HotKeyFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/HotKeyFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/HotKeyFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemID.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemID.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemID.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemID.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDDrive.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDDrive.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDDrive.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDDrive.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDFS.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDFS.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDFS.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDFS.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRegFolder.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRegFolder.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRegFolder.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRegFolder.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRegItem.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRegItem.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRegItem.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRegItem.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRoot.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRoot.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDRoot.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDRoot.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDUnknown.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDUnknown.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/ItemIDUnknown.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/ItemIDUnknown.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/LinkFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/LinkFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/LinkFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/LinkFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/LinkInfoFlags.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/LinkInfoFlags.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/LinkInfoFlags.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/LinkInfoFlags.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Registry.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/Registry.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Registry.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/Registry.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Size.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/Size.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/Size.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/Size.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/VolumeID.kt b/serverpackcreator-api/src/main/kotlin/mslinks/data/VolumeID.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/data/VolumeID.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/data/VolumeID.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/ConsoleData.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/ConsoleData.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/ConsoleData.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/ConsoleData.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/ConsoleFEData.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/ConsoleFEData.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/ConsoleFEData.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/ConsoleFEData.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/EnvironmentVariable.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/EnvironmentVariable.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/EnvironmentVariable.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/EnvironmentVariable.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/Stub.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/Stub.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/Stub.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/Stub.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/Tracker.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/Tracker.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/Tracker.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/Tracker.kt diff --git a/serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/VistaIDList.kt b/serverpackcreator-api/src/main/kotlin/mslinks/extra/VistaIDList.kt similarity index 100% rename from serverpackcreator-api/src/jvmMain/kotlin/mslinks/extra/VistaIDList.kt rename to serverpackcreator-api/src/main/kotlin/mslinks/extra/VistaIDList.kt diff --git a/serverpackcreator-api/src/jvmMain/resources/CHANGELOG.md b/serverpackcreator-api/src/main/resources/CHANGELOG.md similarity index 99% rename from serverpackcreator-api/src/jvmMain/resources/CHANGELOG.md rename to serverpackcreator-api/src/main/resources/CHANGELOG.md index 66efd9c98..018714ea7 100644 --- a/serverpackcreator-api/src/jvmMain/resources/CHANGELOG.md +++ b/serverpackcreator-api/src/main/resources/CHANGELOG.md @@ -1,3 +1,15 @@ +## [5.2.3](https://git.griefed.de/Griefed/ServerPackCreator/compare/5.2.2...5.2.3) (2024-05-25) + + +### 💎 Improvements + +* When disabling Server Pack Overwrites nothing is deleted, but certain data is updated ([ae40f16](https://git.griefed.de/Griefed/ServerPackCreator/commit/ae40f16478ed07f7481ea8bcd8a40a458be01a28)) + + +### 🧪 Tests + +* Run jar test only on ubuntu ([1983daf](https://git.griefed.de/Griefed/ServerPackCreator/commit/1983daf5095f04ca9ce81ef6b1e913915f53000b)) + ## [5.2.2](https://git.griefed.de/Griefed/ServerPackCreator/compare/5.2.1...5.2.2) (2024-05-24) diff --git a/serverpackcreator-api/src/jvmMain/resources/CODE_OF_CONDUCT.md b/serverpackcreator-api/src/main/resources/CODE_OF_CONDUCT.md similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/CODE_OF_CONDUCT.md rename to serverpackcreator-api/src/main/resources/CODE_OF_CONDUCT.md diff --git a/serverpackcreator-api/src/jvmMain/resources/CONTRIBUTING.md b/serverpackcreator-api/src/main/resources/CONTRIBUTING.md similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/CONTRIBUTING.md rename to serverpackcreator-api/src/main/resources/CONTRIBUTING.md diff --git a/serverpackcreator-api/src/jvmMain/resources/HELP.md b/serverpackcreator-api/src/main/resources/HELP.md similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/HELP.md rename to serverpackcreator-api/src/main/resources/HELP.md diff --git a/serverpackcreator-api/src/jvmMain/resources/LICENSE b/serverpackcreator-api/src/main/resources/LICENSE similarity index 92% rename from serverpackcreator-api/src/jvmMain/resources/LICENSE rename to serverpackcreator-api/src/main/resources/LICENSE index 8000a6faa..20fb9c7da 100644 --- a/serverpackcreator-api/src/jvmMain/resources/LICENSE +++ b/serverpackcreator-api/src/main/resources/LICENSE @@ -456,49 +456,3 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/serverpackcreator-api/src/jvmMain/resources/README.md b/serverpackcreator-api/src/main/resources/README.md similarity index 99% rename from serverpackcreator-api/src/jvmMain/resources/README.md rename to serverpackcreator-api/src/main/resources/README.md index c76fbf1b3..b354e948b 100644 --- a/serverpackcreator-api/src/jvmMain/resources/README.md +++ b/serverpackcreator-api/src/main/resources/README.md @@ -314,8 +314,15 @@ Huge shoutout and thank you!** ## ✨ Thanks to all of my Supporters and Sponsors ✨ +### Sponsors + <!-- sponsors --><a href="https://github.com/kreezxil"><img src="https://github.com/kreezxil.png" width="60px" alt="" /></a><!-- sponsors --> +### Contributors + +<!-- contributors --> +<!-- contributors end--> + --- ## 7. Libraries and Licenses diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/cli_help.txt b/serverpackcreator-api/src/main/resources/de/griefed/resources/cli_help.txt similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/cli_help.txt rename to serverpackcreator-api/src/main/resources/de/griefed/resources/cli_help.txt diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/examples/serverpackcreator.example b/serverpackcreator-api/src/main/resources/de/griefed/resources/examples/serverpackcreator.example similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/examples/serverpackcreator.example rename to serverpackcreator-api/src/main/resources/de/griefed/resources/examples/serverpackcreator.example diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/lang/lang_de_de.properties b/serverpackcreator-api/src/main/resources/de/griefed/resources/lang/lang_de_de.properties similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/lang/lang_de_de.properties rename to serverpackcreator-api/src/main/resources/de/griefed/resources/lang/lang_de_de.properties diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/lang/lang_uk_ua.properties b/serverpackcreator-api/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/lang/lang_uk_ua.properties rename to serverpackcreator-api/src/main/resources/de/griefed/resources/lang/lang_uk_ua.properties diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml similarity index 94% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml index 815f1e4f2..49b88fc6e 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-installer-manifest.xml @@ -3,8 +3,8 @@ <groupId>net.fabricmc</groupId> <artifactId>fabric-installer</artifactId> <versioning> - <latest>1.0.0</latest> - <release>1.0.0</release> + <latest>1.0.1</latest> + <release>1.0.1</release> <versions> <version>0.2.0.7</version> <version>0.2.1.8</version> @@ -67,7 +67,8 @@ <version>0.11.1</version> <version>0.11.2</version> <version>1.0.0</version> + <version>1.0.1</version> </versions> - <lastUpdated>20231230154833</lastUpdated> + <lastUpdated>20240409185404</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json similarity index 93% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json index b2c624eb5..f4ed48427 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-intermediaries-manifest.json @@ -1,4 +1,124 @@ [ + { + "maven": "net.fabricmc:intermediary:24w21b", + "version": "24w21b", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w21a", + "version": "24w21a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w20a", + "version": "24w20a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w19b", + "version": "24w19b", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w19a", + "version": "24w19a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w18a", + "version": "24w18a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.6", + "version": "1.20.6", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.6-rc1", + "version": "1.20.6-rc1", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5", + "version": "1.20.5", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-rc3", + "version": "1.20.5-rc3", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-rc2", + "version": "1.20.5-rc2", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-rc1", + "version": "1.20.5-rc1", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-pre4", + "version": "1.20.5-pre4", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-pre3", + "version": "1.20.5-pre3", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-pre2", + "version": "1.20.5-pre2", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:1.20.5-pre1", + "version": "1.20.5-pre1", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w14a", + "version": "24w14a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w14potato", + "version": "24w14potato", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w14potato_original", + "version": "24w14potato_original", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w13a", + "version": "24w13a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w12a", + "version": "24w12a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w11a", + "version": "24w11a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w10a", + "version": "24w10a", + "stable": true + }, + { + "maven": "net.fabricmc:intermediary:24w09a", + "version": "24w09a", + "stable": true + }, { "maven": "net.fabricmc:intermediary:24w07a", "version": "24w07a", diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-manifest.xml similarity index 97% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-manifest.xml index 5448b885e..98f35cca5 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/fabric-manifest.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/fabric-manifest.xml @@ -3,8 +3,8 @@ <groupId>net.fabricmc</groupId> <artifactId>fabric-loader</artifactId> <versioning> - <latest>0.15.7</latest> - <release>0.15.7</release> + <latest>0.15.11</latest> + <release>0.15.11</release> <versions> <version>0.1.0.48</version> <version>0.1.0.49</version> @@ -223,7 +223,11 @@ <version>0.15.5</version> <version>0.15.6</version> <version>0.15.7</version> + <version>0.15.8</version> + <version>0.15.9</version> + <version>0.15.10</version> + <version>0.15.11</version> </versions> - <lastUpdated>20240213140618</lastUpdated> + <lastUpdated>20240503132637</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/forge-manifest.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/forge-manifest.json similarity index 98% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/forge-manifest.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/forge-manifest.json index 3d4d6a8c0..f25f2ff8a 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/forge-manifest.json +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/forge-manifest.json @@ -3673,7 +3673,8 @@ "1.16.5-36.2.35", "1.16.5-36.2.39", "1.16.5-36.2.40", - "1.16.5-36.2.41" + "1.16.5-36.2.41", + "1.16.5-36.2.42" ], "1.17.1": [ "1.17.1-37.0.0", @@ -4026,7 +4027,10 @@ "1.18.2-40.2.13", "1.18.2-40.2.14", "1.18.2-40.2.15", - "1.18.2-40.2.17" + "1.18.2-40.2.17", + "1.18.2-40.2.18", + "1.18.2-40.2.19", + "1.18.2-40.2.21" ], "1.19": [ "1.19-41.0.1", @@ -4222,7 +4226,11 @@ "1.19.2-43.3.5", "1.19.2-43.3.6", "1.19.2-43.3.7", - "1.19.2-43.3.8" + "1.19.2-43.3.8", + "1.19.2-43.3.9", + "1.19.2-43.3.10", + "1.19.2-43.3.12", + "1.19.2-43.3.13" ], "1.19.3": [ "1.19.3-44.0.0", @@ -4338,7 +4346,12 @@ "1.19.4-45.2.4", "1.19.4-45.2.6", "1.19.4-45.2.7", - "1.19.4-45.2.8" + "1.19.4-45.2.8", + "1.19.4-45.2.9", + "1.19.4-45.2.10", + "1.19.4-45.2.12", + "1.19.4-45.2.14", + "1.19.4-45.2.15" ], "1.20": [ "1.20-46.0.1", @@ -4423,7 +4436,13 @@ "1.20.1-47.2.17", "1.20.1-47.2.18", "1.20.1-47.2.19", - "1.20.1-47.2.20" + "1.20.1-47.2.20", + "1.20.1-47.2.21", + "1.20.1-47.2.23", + "1.20.1-47.2.29", + "1.20.1-47.2.30", + "1.20.1-47.2.31", + "1.20.1-47.2.32" ], "1.20.2": [ "1.20.2-48.0.0", @@ -4489,6 +4508,52 @@ "1.20.4-49.0.26", "1.20.4-49.0.27", "1.20.4-49.0.28", - "1.20.4-49.0.30" + "1.20.4-49.0.30", + "1.20.4-49.0.31", + "1.20.4-49.0.32", + "1.20.4-49.0.33", + "1.20.4-49.0.34", + "1.20.4-49.0.38", + "1.20.4-49.0.39", + "1.20.4-49.0.40", + "1.20.4-49.0.41", + "1.20.4-49.0.42", + "1.20.4-49.0.43", + "1.20.4-49.0.45", + "1.20.4-49.0.46", + "1.20.4-49.0.48", + "1.20.4-49.0.49", + "1.20.4-49.0.50" + ], + "1.20.6": [ + "1.20.6-50.0.0", + "1.20.6-50.0.1", + "1.20.6-50.0.2", + "1.20.6-50.0.4", + "1.20.6-50.0.5", + "1.20.6-50.0.6", + "1.20.6-50.0.7", + "1.20.6-50.0.8", + "1.20.6-50.0.9", + "1.20.6-50.0.10", + "1.20.6-50.0.11", + "1.20.6-50.0.12", + "1.20.6-50.0.13", + "1.20.6-50.0.14", + "1.20.6-50.0.15", + "1.20.6-50.0.16", + "1.20.6-50.0.17", + "1.20.6-50.0.18", + "1.20.6-50.0.19", + "1.20.6-50.0.20", + "1.20.6-50.0.21", + "1.20.6-50.0.22", + "1.20.6-50.0.24", + "1.20.6-50.0.25", + "1.20.6-50.0.26", + "1.20.6-50.0.28", + "1.20.6-50.0.29", + "1.20.6-50.0.30", + "1.20.6-50.0.31" ] } \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-game-manifest.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-game-manifest.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-game-manifest.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-game-manifest.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-installer-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-installer-manifest.xml similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-installer-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-installer-manifest.xml diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json similarity index 90% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json index 5e7fcfca2..b2eb1108d 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/legacy-fabric-loader-manifest.json @@ -1,10 +1,38 @@ [ + { + "separator": ".", + "build": 11, + "maven": "net.fabricmc:fabric-loader:0.15.11", + "version": "0.15.11", + "stable": true + }, + { + "separator": ".", + "build": 10, + "maven": "net.fabricmc:fabric-loader:0.15.10", + "version": "0.15.10", + "stable": false + }, + { + "separator": ".", + "build": 9, + "maven": "net.fabricmc:fabric-loader:0.15.9", + "version": "0.15.9", + "stable": false + }, + { + "separator": ".", + "build": 8, + "maven": "net.fabricmc:fabric-loader:0.15.8", + "version": "0.15.8", + "stable": false + }, { "separator": ".", "build": 7, "maven": "net.fabricmc:fabric-loader:0.15.7", "version": "0.15.7", - "stable": true + "stable": false }, { "separator": ".", diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.0.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.0.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.0.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.0.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.10.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.10.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.11.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.11.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.12.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.12.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre10.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre10.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre10.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre10.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre9.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre9.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13-pre9.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13-pre9.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.13.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.13.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14 Pre-Release 5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1 Pre-Release 2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2 Pre-Release 4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.14.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.14.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.15.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.15.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-pre8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-pre8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.3-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.3-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.3-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.3-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.5-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.5-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.5-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.5-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.16.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.16.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.17.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.17.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-pre8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-pre8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18-rc4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18-rc4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1-rc3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.18.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.18.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1-rc3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3-rc3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4-rc3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.19.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.19.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.2.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.2.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.1-rc1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.1-rc1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.1-rc1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.1-rc1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.4.json diff --git a/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.6.json new file mode 100644 index 000000000..c3cc55797 --- /dev/null +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.6.json @@ -0,0 +1 @@ +{"arguments": {"game": ["--username", "${auth_player_name}", "--version", "${version_name}", "--gameDir", "${game_directory}", "--assetsDir", "${assets_root}", "--assetIndex", "${assets_index_name}", "--uuid", "${auth_uuid}", "--accessToken", "${auth_access_token}", "--clientId", "${clientid}", "--xuid", "${auth_xuid}", "--userType", "${user_type}", "--versionType", "${version_type}", {"rules": [{"action": "allow", "features": {"is_demo_user": true}}], "value": "--demo"}, {"rules": [{"action": "allow", "features": {"has_custom_resolution": true}}], "value": ["--width", "${resolution_width}", "--height", "${resolution_height}"]}, {"rules": [{"action": "allow", "features": {"has_quick_plays_support": true}}], "value": ["--quickPlayPath", "${quickPlayPath}"]}, {"rules": [{"action": "allow", "features": {"is_quick_play_singleplayer": true}}], "value": ["--quickPlaySingleplayer", "${quickPlaySingleplayer}"]}, {"rules": [{"action": "allow", "features": {"is_quick_play_multiplayer": true}}], "value": ["--quickPlayMultiplayer", "${quickPlayMultiplayer}"]}, {"rules": [{"action": "allow", "features": {"is_quick_play_realms": true}}], "value": ["--quickPlayRealms", "${quickPlayRealms}"]}], "jvm": [{"rules": [{"action": "allow", "os": {"name": "osx"}}], "value": ["-XstartOnFirstThread"]}, {"rules": [{"action": "allow", "os": {"name": "windows"}}], "value": "-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump"}, {"rules": [{"action": "allow", "os": {"arch": "x86"}}], "value": "-Xss1M"}, "-Djava.library.path=${natives_directory}", "-Djna.tmpdir=${natives_directory}", "-Dorg.lwjgl.system.SharedLibraryExtractPath=${natives_directory}", "-Dio.netty.native.workdir=${natives_directory}", "-Dminecraft.launcher.brand=${launcher_name}", "-Dminecraft.launcher.version=${launcher_version}", "-cp", "${classpath}"]}, "assetIndex": {"id": "16", "sha1": "70b356f90765d4b8da2ae93737d0f384e2343c4a", "size": 445177, "totalSize": 631434693, "url": "https://piston-meta.mojang.com/v1/packages/70b356f90765d4b8da2ae93737d0f384e2343c4a/16.json"}, "assets": "16", "complianceLevel": 1, "downloads": {"client": {"sha1": "05b6f1c6b46a29d6ea82b4e0d42190e42402030f", "size": 26565641, "url": "https://piston-data.mojang.com/v1/objects/05b6f1c6b46a29d6ea82b4e0d42190e42402030f/client.jar"}, "client_mappings": {"sha1": "de46c8f33d7826eb83e8ef0e9f80dc1f08cb9498", "size": 9422442, "url": "https://piston-data.mojang.com/v1/objects/de46c8f33d7826eb83e8ef0e9f80dc1f08cb9498/client.txt"}, "server": {"sha1": "145ff0858209bcfc164859ba735d4199aafa1eea", "size": 51420480, "url": "https://piston-data.mojang.com/v1/objects/145ff0858209bcfc164859ba735d4199aafa1eea/server.jar"}, "server_mappings": {"sha1": "9e96100f573a46ef44caab3e716d5eb974594bb7", "size": 7283803, "url": "https://piston-data.mojang.com/v1/objects/9e96100f573a46ef44caab3e716d5eb974594bb7/server.txt"}}, "id": "1.20.6", "javaVersion": {"component": "java-runtime-delta", "majorVersion": 21}, "libraries": [{"downloads": {"artifact": {"path": "ca/weblite/java-objc-bridge/1.1/java-objc-bridge-1.1.jar", "sha1": "1227f9e0666314f9de41477e3ec277e542ed7f7b", "size": 1330045, "url": "https://libraries.minecraft.net/ca/weblite/java-objc-bridge/1.1/java-objc-bridge-1.1.jar"}}, "name": "ca.weblite:java-objc-bridge:1.1", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar", "sha1": "b1d8ab82d11d92fd639b56d639f8f46f739dd5fa", "size": 979212, "url": "https://libraries.minecraft.net/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar"}}, "name": "com.github.oshi:oshi-core:6.4.10"}, {"downloads": {"artifact": {"path": "com/google/code/gson/gson/2.10.1/gson-2.10.1.jar", "sha1": "b3add478d4382b78ea20b1671390a858002feb6c", "size": 283367, "url": "https://libraries.minecraft.net/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar"}}, "name": "com.google.code.gson:gson:2.10.1"}, {"downloads": {"artifact": {"path": "com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", "sha1": "1dcf1de382a0bf95a3d8b0849546c88bac1292c9", "size": 4617, "url": "https://libraries.minecraft.net/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar"}}, "name": "com.google.guava:failureaccess:1.0.1"}, {"downloads": {"artifact": {"path": "com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar", "sha1": "5e64ec7e056456bef3a4bc4c6fdaef71e8ab6318", "size": 3041591, "url": "https://libraries.minecraft.net/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar"}}, "name": "com.google.guava:guava:32.1.2-jre"}, {"downloads": {"artifact": {"path": "com/ibm/icu/icu4j/73.2/icu4j-73.2.jar", "sha1": "61ad4ef7f9131fcf6d25c34b817f90d6da06c9e9", "size": 14567819, "url": "https://libraries.minecraft.net/com/ibm/icu/icu4j/73.2/icu4j-73.2.jar"}}, "name": "com.ibm.icu:icu4j:73.2"}, {"downloads": {"artifact": {"path": "com/mojang/authlib/6.0.54/authlib-6.0.54.jar", "sha1": "de8bc95660e1b2fe8793fd427a7a10dcec5b3ea7", "size": 115242, "url": "https://libraries.minecraft.net/com/mojang/authlib/6.0.54/authlib-6.0.54.jar"}}, "name": "com.mojang:authlib:6.0.54"}, {"downloads": {"artifact": {"path": "com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar", "sha1": "5c685c5ffa94c4cd39496c7184c1d122e515ecef", "size": 964, "url": "https://libraries.minecraft.net/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar"}}, "name": "com.mojang:blocklist:1.0.10"}, {"downloads": {"artifact": {"path": "com/mojang/brigadier/1.2.9/brigadier-1.2.9.jar", "sha1": "73e324f2ee541493a5179abf367237faa782ed21", "size": 79955, "url": "https://libraries.minecraft.net/com/mojang/brigadier/1.2.9/brigadier-1.2.9.jar"}}, "name": "com.mojang:brigadier:1.2.9"}, {"downloads": {"artifact": {"path": "com/mojang/datafixerupper/7.0.14/datafixerupper-7.0.14.jar", "sha1": "db3485dc1e6b712bd81170d5ce6dca2fb2f8bd86", "size": 722976, "url": "https://libraries.minecraft.net/com/mojang/datafixerupper/7.0.14/datafixerupper-7.0.14.jar"}}, "name": "com.mojang:datafixerupper:7.0.14"}, {"downloads": {"artifact": {"path": "com/mojang/logging/1.2.7/logging-1.2.7.jar", "sha1": "24cb95ffb0e3433fd6e844c04e68009e504ca1c0", "size": 15343, "url": "https://libraries.minecraft.net/com/mojang/logging/1.2.7/logging-1.2.7.jar"}}, "name": "com.mojang:logging:1.2.7"}, {"downloads": {"artifact": {"path": "com/mojang/patchy/2.2.10/patchy-2.2.10.jar", "sha1": "da05971b07cbb379d002cf7eaec6a2048211fefc", "size": 4439, "url": "https://libraries.minecraft.net/com/mojang/patchy/2.2.10/patchy-2.2.10.jar"}}, "name": "com.mojang:patchy:2.2.10"}, {"downloads": {"artifact": {"path": "com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar", "sha1": "3cad216e3a7f0c19b4b394388bc9ffc446f13b14", "size": 12243, "url": "https://libraries.minecraft.net/com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar"}}, "name": "com.mojang:text2speech:1.17.9"}, {"downloads": {"artifact": {"path": "commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar", "sha1": "4e3eb3d79888d76b54e28b350915b5dc3919c9de", "size": 360738, "url": "https://libraries.minecraft.net/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar"}}, "name": "commons-codec:commons-codec:1.16.0"}, {"downloads": {"artifact": {"path": "commons-io/commons-io/2.15.1/commons-io-2.15.1.jar", "sha1": "f11560da189ab563a5c8e351941415430e9304ea", "size": 501218, "url": "https://libraries.minecraft.net/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar"}}, "name": "commons-io:commons-io:2.15.1"}, {"downloads": {"artifact": {"path": "commons-logging/commons-logging/1.2/commons-logging-1.2.jar", "sha1": "4bfc12adfe4842bf07b657f0369c4cb522955686", "size": 61829, "url": "https://libraries.minecraft.net/commons-logging/commons-logging/1.2/commons-logging-1.2.jar"}}, "name": "commons-logging:commons-logging:1.2"}, {"downloads": {"artifact": {"path": "io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar", "sha1": "f8f3d8644afa5e6e1a40a3a6aeb9d9aa970ecb4f", "size": 306590, "url": "https://libraries.minecraft.net/io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar"}}, "name": "io.netty:netty-buffer:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar", "sha1": "384ba4d75670befbedb45c4d3b497a93639c206d", "size": 345274, "url": "https://libraries.minecraft.net/io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar"}}, "name": "io.netty:netty-codec:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar", "sha1": "7cceacaf11df8dc63f23d0fb58e9d4640fc88404", "size": 659930, "url": "https://libraries.minecraft.net/io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar"}}, "name": "io.netty:netty-common:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar", "sha1": "abb86c6906bf512bf2b797a41cd7d2e8d3cd7c36", "size": 560040, "url": "https://libraries.minecraft.net/io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar"}}, "name": "io.netty:netty-handler:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar", "sha1": "cec8348108dc76c47cf87c669d514be52c922144", "size": 37792, "url": "https://libraries.minecraft.net/io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar"}}, "name": "io.netty:netty-resolver:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar", "sha1": "795da37ded759e862457a82d9d92c4d39ce8ecee", "size": 147139, "url": "https://libraries.minecraft.net/io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar"}}, "name": "io.netty:netty-transport-classes-epoll:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar", "sha1": "5514744c588190ffda076b35a9b8c9f24946a960", "size": 40427, "url": "https://libraries.minecraft.net/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar"}}, "name": "io.netty:netty-transport-native-epoll:4.1.97.Final:linux-aarch_64", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar", "sha1": "54188f271e388e7f313aea995e82f58ce2cdb809", "size": 38954, "url": "https://libraries.minecraft.net/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar"}}, "name": "io.netty:netty-transport-native-epoll:4.1.97.Final:linux-x86_64", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar", "sha1": "d469d84265ab70095b01b40886cabdd433b6e664", "size": 43897, "url": "https://libraries.minecraft.net/io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar"}}, "name": "io.netty:netty-transport-native-unix-common:4.1.97.Final"}, {"downloads": {"artifact": {"path": "io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar", "sha1": "f37380d23c9bb079bc702910833b2fd532c9abd0", "size": 489624, "url": "https://libraries.minecraft.net/io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar"}}, "name": "io.netty:netty-transport:4.1.97.Final"}, {"downloads": {"artifact": {"path": "it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar", "sha1": "c24946d46824bd528054bface3231d2ecb7e95e8", "size": 23326598, "url": "https://libraries.minecraft.net/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar"}}, "name": "it.unimi.dsi:fastutil:8.5.12"}, {"downloads": {"artifact": {"path": "net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar", "sha1": "28934d48aed814f11e4c584da55c49fa7032b31b", "size": 1369287, "url": "https://libraries.minecraft.net/net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar"}}, "name": "net.java.dev.jna:jna-platform:5.14.0"}, {"downloads": {"artifact": {"path": "net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar", "sha1": "67bf3eaea4f0718cb376a181a629e5f88fa1c9dd", "size": 1878533, "url": "https://libraries.minecraft.net/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar"}}, "name": "net.java.dev.jna:jna:5.14.0"}, {"downloads": {"artifact": {"path": "net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar", "sha1": "4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c", "size": 78146, "url": "https://libraries.minecraft.net/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar"}}, "name": "net.sf.jopt-simple:jopt-simple:5.0.4"}, {"downloads": {"artifact": {"path": "org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar", "sha1": "659feffdd12280201c8aacb8f7be94f9a883c824", "size": 1078328, "url": "https://libraries.minecraft.net/org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar"}}, "name": "org.apache.commons:commons-compress:1.26.0"}, {"downloads": {"artifact": {"path": "org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar", "sha1": "1ed471194b02f2c6cb734a0cd6f6f107c673afae", "size": 657952, "url": "https://libraries.minecraft.net/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar"}}, "name": "org.apache.commons:commons-lang3:3.14.0"}, {"downloads": {"artifact": {"path": "org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar", "sha1": "e5f6cae5ca7ecaac1ec2827a9e2d65ae2869cada", "size": 780321, "url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar"}}, "name": "org.apache.httpcomponents:httpclient:4.5.13"}, {"downloads": {"artifact": {"path": "org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", "sha1": "51cf043c87253c9f58b539c9f7e44c8894223850", "size": 327891, "url": "https://libraries.minecraft.net/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar"}}, "name": "org.apache.httpcomponents:httpcore:4.4.16"}, {"downloads": {"artifact": {"path": "org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar", "sha1": "bea6fede6328fabafd7e68363161a7ea6605abd1", "size": 335001, "url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar"}}, "name": "org.apache.logging.log4j:log4j-api:2.22.1"}, {"downloads": {"artifact": {"path": "org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar", "sha1": "7183a25510a02ad00cc6a95d3b3d2a7d3c5a8dc4", "size": 1900022, "url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar"}}, "name": "org.apache.logging.log4j:log4j-core:2.22.1"}, {"downloads": {"artifact": {"path": "org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar", "sha1": "d7e6693c2606cb7e7335047d7bb96dec52db5665", "size": 27364, "url": "https://libraries.minecraft.net/org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar"}}, "name": "org.apache.logging.log4j:log4j-slf4j2-impl:2.22.1"}, {"downloads": {"artifact": {"path": "org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar", "sha1": "8872d22b293e8f5d7d56ff92be966e6dc28ebdc6", "size": 99701, "url": "https://libraries.minecraft.net/org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar"}}, "name": "org.jcraft:jorbis:0.0.17"}, {"downloads": {"artifact": {"path": "org/joml/joml/1.10.5/joml-1.10.5.jar", "sha1": "22566d58af70ad3d72308bab63b8339906deb649", "size": 712082, "url": "https://libraries.minecraft.net/org/joml/joml/1.10.5/joml-1.10.5.jar"}}, "name": "org.joml:joml:1.10.5"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar", "sha1": "a0db6c84a8becc8ca05f9dbfa985edc348a824c7", "size": 450896, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar", "sha1": "149070a5480900347071b7074779531f25a6e3dc", "size": 1245129, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-macos.jar", "sha1": "1e9b635b5c16b515527b905749be59223e338c4d", "size": 1142682, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-macos-arm64.jar", "sha1": "b0a8c9baa9d1f54ac61e1ab9640c7659e7fa700c", "size": 1040981, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows.jar", "sha1": "81091b006dbb43fab04c8c638e9ac87c51b4096d", "size": 1035586, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-arm64.jar", "sha1": "82028265a0a2ff33523ca75137ada7dc176e5210", "size": 886068, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-x86.jar", "sha1": "15a8c1de7f51d07a92eae7ce1222557073a0c0c3", "size": 877480, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-freetype:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar", "sha1": "efa1eb78c5ccd840e9f329717109b5e892d72f8e", "size": 135546, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar", "sha1": "a03684c5e4b1b1dbbe0d29dbbdc27b985b6840f2", "size": 118478, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-macos.jar", "sha1": "a1bf400f6bc64e6195596cb1430dafda46090751", "size": 140884, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-macos-arm64.jar", "sha1": "ee8cc78d0a4a5b3b4600fade6d927c9fc320c858", "size": 138288, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows.jar", "sha1": "e449e28b4891fc423c54c85fbc5bb0b9efece67a", "size": 166368, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-arm64.jar", "sha1": "f27018dc74f6289574502b46cce55d52817554e2", "size": 141970, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-x86.jar", "sha1": "32334f3fd5270a59bad9939a93115acb6de36dcf", "size": 157123, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-glfw:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar", "sha1": "b543467b7ff3c6920539a88ee602d34098628be5", "size": 43896, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar", "sha1": "4f86728bf449b1dd61251c4e0ac01df1389cb51e", "size": 206779, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-macos.jar", "sha1": "2906637657a57579847238c9c72d2c4bde7083f8", "size": 153131, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-macos-arm64.jar", "sha1": "e9412c3ff8cb3a3bad1d3f52909ad74d8a5bdad1", "size": 141418, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows.jar", "sha1": "426222fc027602a5f21b9c0fe79cde6a4c7a011f", "size": 180344, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-arm64.jar", "sha1": "ba1f3fed0ee4be0217eaa41c5bbfb4b9b1383c33", "size": 154415, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar", "sha1": "f6063b6e0f23be483c5c88d84ce51b39dc69126c", "size": 148612, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-jemalloc:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar", "sha1": "daada81ceb5fc0c291fbfdd4433cb8d9423577f2", "size": 110586, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar", "sha1": "3037360cc4595079bea240af250b6d1a527e0905", "size": 573224, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-macos.jar", "sha1": "8df8338bfa77f2ebabef4e58964bd04d24805cbf", "size": 519824, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-macos-arm64.jar", "sha1": "0c78b078de2fb52f45aa55d04db889a560f3544f", "size": 471012, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows.jar", "sha1": "cf83862ae95d98496b26915024c7e666d8ab1c8f", "size": 698720, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-arm64.jar", "sha1": "8e0615235116b9e4160dfe87bec90f5f6378bf72", "size": 630410, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-x86.jar", "sha1": "87b8d5050e3adb46bb58fe1cb2669a4a48fce10d", "size": 638424, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-openal:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar", "sha1": "02f6b0147078396a58979125a4c947664e98293a", "size": 929192, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar", "sha1": "62c70a4b00ca5391882b0f4b787c1588d24f1c86", "size": 80463, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-macos.jar", "sha1": "1bd45997551ae8a28469f3a2b678f4b7289e12c0", "size": 41484, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-macos-arm64.jar", "sha1": "d213ddef27637b1af87961ffa94d6b27036becc8", "size": 42487, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows.jar", "sha1": "e6c1eec8be8a71951b830a4d69efc01c6531900c", "size": 101535, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-arm64.jar", "sha1": "65e956d3735a1abdc82eff4baec1b61174697d4b", "size": 83095, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-x86.jar", "sha1": "0d32d833dcaa2f355a886eaf21f0408b5f03241d", "size": 88612, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-opengl:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar", "sha1": "25dd6161988d7e65f71d5065c99902402ee32746", "size": 120283, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar", "sha1": "fd1271ccd9d85eff2fa31f3fd543e02ccfaf5041", "size": 231820, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-macos.jar", "sha1": "472792c98fb2c1557c060cb9da5fca6a9773621f", "size": 216456, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-macos-arm64.jar", "sha1": "51c6955571fbcdb7bb538c6aa589b953b584c6af", "size": 183628, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows.jar", "sha1": "1d9facdf6541de114b0f963be33505b7679c78cb", "size": 261297, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-arm64.jar", "sha1": "a584ab44de569708871f0a79561f4d8c37487f2c", "size": 219511, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-x86.jar", "sha1": "b5c874687b9aac1a936501d4ed2c49567fd1b575", "size": 227800, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-stb:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar", "sha1": "82d755ca94b102e9ca77283b9e2dc46d1b15fbe5", "size": 13400, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar", "sha1": "d8d58daa0c3e5fd906fee96f5fddbcbc07cc308b", "size": 44192, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-macos.jar", "sha1": "6598081e346a03038a8be68eb2de614a1c2eac68", "size": 45865, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-macos-arm64.jar", "sha1": "406feedb977372085a61eb0fee358183f4f4c67a", "size": 42498, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows.jar", "sha1": "a6697981b0449a5087c1d546fc08b4f73e8f98c9", "size": 130253, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-arm64.jar", "sha1": "a88c494f3006eb91a7433b12a3a55a9a6c20788b", "size": 110867, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-x86.jar", "sha1": "c336c84ee88cccb495c6ffa112395509e7378e8a", "size": 111797, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl-tinyfd:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar", "sha1": "29589b5f87ed335a6c7e7ee6a5775f81f97ecb84", "size": 785029, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3"}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar", "sha1": "1713758e3660ba66e1e954396fd18126038b33c0", "size": 114627, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-linux", "rules": [{"action": "allow", "os": {"name": "linux"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-macos.jar", "sha1": "33a6efa288390490ce6eb6c3df47ac21ecf648cf", "size": 60543, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-macos.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-macos", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-macos-arm64.jar", "sha1": "226246e75f6bd8d4e1895bdce8638ef87808d114", "size": 48620, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-macos-arm64.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-macos-arm64", "rules": [{"action": "allow", "os": {"name": "osx"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows.jar", "sha1": "a5ed18a2b82fc91b81f40d717cb1f64c9dcb0540", "size": 165442, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-windows", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-arm64.jar", "sha1": "e9aca8c5479b520a2a7f0d542a118140e812c5e8", "size": 133378, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-arm64.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-windows-arm64", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-x86.jar", "sha1": "9e670718e050aeaeea0c2d5b907cffb142f2e58f", "size": 139653, "url": "https://libraries.minecraft.net/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-windows-x86.jar"}}, "name": "org.lwjgl:lwjgl:3.3.3:natives-windows-x86", "rules": [{"action": "allow", "os": {"name": "windows"}}]}, {"downloads": {"artifact": {"path": "org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar", "sha1": "4b986a99445e49ea5fbf5d149c4b63f6ed6c6780", "size": 682804, "url": "https://libraries.minecraft.net/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar"}}, "name": "org.lz4:lz4-java:1.8.0"}, {"downloads": {"artifact": {"path": "org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar", "sha1": "7cf2726fdcfbc8610f9a71fb3ed639871f315340", "size": 64579, "url": "https://libraries.minecraft.net/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar"}}, "name": "org.slf4j:slf4j-api:2.0.9"}], "logging": {"client": {"argument": "-Dlog4j.configurationFile=${path}", "file": {"id": "client-1.12.xml", "sha1": "bd65e7d2e3c237be76cfbef4c2405033d7f91521", "size": 888, "url": "https://piston-data.mojang.com/v1/objects/bd65e7d2e3c237be76cfbef4c2405033d7f91521/client-1.12.xml"}, "type": "log4j2-xml"}}, "mainClass": "net.minecraft.client.main.Main", "minimumLauncherVersion": 21, "releaseTime": "2024-04-29T12:40:45+00:00", "time": "2024-04-29T12:40:45+00:00", "type": "release"} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.20.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.20.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.10.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.10.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.9.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.9.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.9.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.9.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2-pre7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.5.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.5.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.5.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.5.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.6.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.6.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.6.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.6.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.7.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.7.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.7.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.7.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.9.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.9.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.9.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.9.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.8.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.8.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9-pre4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9-pre4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre2.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre2.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre2.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre2.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3-pre3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.3.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.3.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.4.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.4.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.4.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.4.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.9.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.9.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.RV-Pre1.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.RV-Pre1.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/1.RV-Pre1.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/1.RV-Pre1.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w16b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w16b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w16b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w16b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w18c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w18c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w21a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w21a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w21a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w21a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w21b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w21b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w21b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w21b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w22a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w22a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w22a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w22a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w23a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w23a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w23a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w23a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w23b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w23b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w23b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w23b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w24a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w24a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w24a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w24a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w24b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w24b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w24b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w24b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w25c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w25c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w26a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w26a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w26a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w26a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w36a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w36a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w36a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w36a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w36b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w36b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w36b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w36b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w37a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w37a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w37a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w37a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w37b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w37b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w37b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w37b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w38c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w38c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w39a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w39a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w39a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w39a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w39b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w39b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w39b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w39b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w41a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w41a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w41a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w41a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w41b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w41b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w41b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w41b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w42b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w42b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w42b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w42b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47e.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47e.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w47e.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w47e.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w48a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w48a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w48a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w48a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w48b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w48b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w48b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w48b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w49a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w49a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/13w49a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/13w49a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w02c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w02c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w03b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w03b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w03b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w03b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w04a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w04a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w04a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w04a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w04b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w04b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w04b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w04b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w05b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w05b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w05b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w05b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w06b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w06b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w06b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w06b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w08a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w08a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w08a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w08a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w10c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w10c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w11b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w11b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w11b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w11b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w18b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w18b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w18b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w18b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w20a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w20a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w20a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w20a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w20b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w20b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w20b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w20b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w21a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w21a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w21a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w21a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w21b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w21b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w21b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w21b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w25a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w25a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w25a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w25a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w25b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w25b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w25b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w25b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w26c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w26c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w27a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w27a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w27a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w27a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w27b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w27b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w27b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w27b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w28a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w28a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w28a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w28a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w28b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w28b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w28b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w28b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w29a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w29a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w29a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w29a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w29b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w29b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w29b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w29b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w30c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w30c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w31a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w31a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w31a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w31a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w32d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w32d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w33c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w33c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/14w34d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/14w34d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w31c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w31c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w32c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w32c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w33c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w33c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w34d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w34d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35e.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35e.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w35e.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w35e.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w36d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w36d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w37a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w37a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w37a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w37a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w38a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w38a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w38a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w38a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w38b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w38b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w38b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w38b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w39c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w39c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w40a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w40a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w40a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w40a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w40b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w40b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w40b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w40b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w41a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w41a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w41a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w41a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w41b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w41b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w41b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w41b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w43c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w43c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w44b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w44b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w44b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w44b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w47c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w47c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w49a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w49a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w49a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w49a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w49b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w49b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w49b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w49b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w50a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w50a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w50a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w50a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w51a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w51a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w51a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w51a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w51b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w51b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/15w51b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/15w51b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w02a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w02a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w02a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w02a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w04a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w04a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w04a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w04a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w05b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w05b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w05b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w05b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w07b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w07b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w07b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w07b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w15b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w15b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w15b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w15b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w20a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w20a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w20a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w20a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w21a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w21a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w21a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w21a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w21b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w21b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w21b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w21b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w32a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w32a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w32a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w32a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w32b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w32b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w32b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w32b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w33a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w33a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w33a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w33a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w35a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w35a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w35a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w35a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w36a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w36a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w36a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w36a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w38a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w38a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w38a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w38a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w39c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w39c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w40a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w40a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w40a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w40a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w41a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w41a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w41a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w41a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w50a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w50a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/16w50a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/16w50a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w13b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w13b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w13b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w13b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w16b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w16b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w16b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w16b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w17b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w17b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w17b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w17b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w18b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w18b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w18b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w18b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w31a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w31a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w31a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w31a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w43b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w43b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w43b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w43b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w45b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w45b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w45b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w45b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w47a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w47a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w47a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w47a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w47b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w47b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w47b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w47b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w48a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w48a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w48a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w48a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w49a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w49a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w49a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w49a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w49b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w49b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w49b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w49b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w50a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w50a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/17w50a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/17w50a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w01a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w01a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w01a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w01a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w02a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w02a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w02a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w02a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w03b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w03b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w03b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w03b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w07c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w07c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w08a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w08a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w08a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w08a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w08b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w08b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w08b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w08b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w09a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w09a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w09a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w09a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10d.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10d.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w10d.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w10d.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w14b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w14b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w14b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w14b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w19b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w19b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w19b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w19b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w20c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w20c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w21a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w21a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w21a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w21a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w21b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w21b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w21b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w21b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w22c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w22c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w30a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w30a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w30a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w30a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w30b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w30b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w30b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w30b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w31a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w31a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w31a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w31a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w32a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w32a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w32a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w32a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w33a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w33a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w33a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w33a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w43c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w43c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w47a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w47a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w47a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w47a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w47b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w47b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w47b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w47b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w48a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w48a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w48a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w48a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w48b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w48b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w48b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w48b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w49a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w49a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w49a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w49a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w50a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w50a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/18w50a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/18w50a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w02a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w02a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w02a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w02a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03c.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03c.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w03c.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w03c.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w04a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w04a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w04a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w04a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w04b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w04b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w04b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w04b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w08a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w08a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w08a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w08a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w08b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w08b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w08b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w08b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w09a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w09a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w09a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w09a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w11b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w11b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w11b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w11b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w12a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w12a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w12a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w12a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w12b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w12b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w12b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w12b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w13b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w13b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w13b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w13b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w14b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w14b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w14b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w14b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w34a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w34a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w34a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w34a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w35a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w35a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w35a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w35a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w36a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w36a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w36a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w36a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w37a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w37a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w37a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w37a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w38a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w38a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w38a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w38a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w38b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w38b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w38b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w38b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w39a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w39a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w39a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w39a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w40a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w40a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w40a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w40a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w41a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w41a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w41a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w41a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w45b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w45b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w45b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w45b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w46b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w46b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/19w46b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/19w46b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w08a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w08a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w08a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w08a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w09a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w09a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w09a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w09a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w10a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w10a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w10a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w10a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w12a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w12a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w12a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w12a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w13b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w13b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w13b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w13b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w14infinite.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w14infinite.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w14infinite.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w14infinite.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w20a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w20a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w20a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w20a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w20b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w20b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w20b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w20b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w21a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w21a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w21a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w21a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w22a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w22a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w22a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w22a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w27a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w27a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w27a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w27a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w28a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w28a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w28a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w28a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w29a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w29a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w29a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w29a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w30a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w30a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w30a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w30a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w48a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w48a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w48a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w48a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w49a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w49a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w49a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w49a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w51a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w51a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/20w51a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/20w51a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w05b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w05b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w05b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w05b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w08a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w08a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w08a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w08a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w08b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w08b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w08b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w08b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w10a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w10a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w10a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w10a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w20a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w20a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w20a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w20a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w37a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w37a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w37a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w37a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w38a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w38a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w38a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w38a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w39a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w39a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w39a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w39a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w40a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w40a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w40a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w40a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w41a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w41a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w41a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w41a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/21w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/21w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w11a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w11a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w11a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w11a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w12a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w12a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w12a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w12a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w13oneblockatatime.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w13oneblockatatime.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w13oneblockatatime.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w13oneblockatatime.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w15a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w15a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w15a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w15a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w16b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w16b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w16b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w16b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w19a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w19a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w19a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w19a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w24a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w24a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w24a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w24a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w42a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w42a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w42a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w42a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w43a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w43a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w43a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w43a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w44a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w44a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w44a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w44a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w45a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w45a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w45a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w45a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w46a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w46a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/22w46a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/22w46a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w03a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w03a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w03a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w03a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w04a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w04a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w04a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w04a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w05a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w05a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w05a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w05a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w06a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w06a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w06a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w06a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w07a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w07a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w07a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w07a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w12a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w12a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w12a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w12a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w13a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w13a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w13a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w13a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w13a_or_b.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w13a_or_b.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w13a_or_b.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w13a_or_b.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w14a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w14a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w14a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w14a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w16a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w16a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w16a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w16a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w17a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w17a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w17a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w17a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w18a.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w18a.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/23w18a.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/23w18a.json diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/3D Shareware v1.34.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/3D Shareware v1.34.json similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/mcserver/3D Shareware v1.34.json rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/mcserver/3D Shareware v1.34.json diff --git a/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/minecraft-manifest.json b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/minecraft-manifest.json new file mode 100644 index 000000000..a7288bc94 --- /dev/null +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/minecraft-manifest.json @@ -0,0 +1 @@ +{"latest": {"release": "1.20.6", "snapshot": "24w21b"}, "versions": [{"id": "24w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d585c8e981e58326237746ca1253dea15c9e4aaa/24w21b.json", "time": "2024-05-22T16:34:05+00:00", "releaseTime": "2024-05-22T16:25:41+00:00"}, {"id": "24w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a7346493faf4a8fd8bb4b9ea179ab60345d70b20/24w21a.json", "time": "2024-05-22T14:26:26+00:00", "releaseTime": "2024-05-22T14:18:26+00:00"}, {"id": "24w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f84fe1745344d33978cbf16857a0576402abc9ea/24w20a.json", "time": "2024-05-22T11:55:49+00:00", "releaseTime": "2024-05-15T12:00:35+00:00"}, {"id": "24w19b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e31c245048e6d135e2ebea1755cffebfba0b70c2/24w19b.json", "time": "2024-05-22T11:55:49+00:00", "releaseTime": "2024-05-10T14:32:42+00:00"}, {"id": "24w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0328405027d9526ea41ed764117bec49ddd1ed50/24w19a.json", "time": "2024-05-22T11:55:49+00:00", "releaseTime": "2024-05-10T12:15:31+00:00"}, {"id": "24w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7fe0c83d30004cdd837aa66cd5ff327ecf237e7a/24w18a.json", "time": "2024-05-22T11:55:49+00:00", "releaseTime": "2024-05-03T12:08:27+00:00"}, {"id": "1.20.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/111890b5a8c2fee9b77036f9f377b33df42c718a/1.20.6.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-29T12:40:45+00:00"}, {"id": "1.20.6-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0b322fb5dded24d22e401d095dbfe9cd97f80339/1.20.6-rc1.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-26T10:12:17+00:00"}, {"id": "1.20.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/8184ab98c044f3e0e959023334b8e68564f898fa/1.20.5.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-23T11:54:12+00:00"}, {"id": "1.20.5-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/384892ff9873fd36cc724df7592ba4868fb8d8c3/1.20.5-rc3.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-22T13:42:34+00:00"}, {"id": "1.20.5-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f9451fcbabc8665b031dce7cfeba9a7204821959/1.20.5-rc2.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-19T13:13:15+00:00"}, {"id": "1.20.5-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6e959ae81fd657733e85b0942c868db0af2e41bd/1.20.5-rc1.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-18T11:45:40+00:00"}, {"id": "1.20.5-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e507f80f06058d550a8641f97e67b2dc8a2a8d4c/1.20.5-pre4.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-17T11:56:02+00:00"}, {"id": "1.20.5-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/329217473d516f395a595f3dccf2485b8b99ee32/1.20.5-pre3.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-16T11:57:30+00:00"}, {"id": "1.20.5-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a945c4c2a4b13b1cc3b9fc4b16d3e142b6da69fe/1.20.5-pre2.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-15T12:36:05+00:00"}, {"id": "1.20.5-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0a5ca75889e81bec4f301de6e8e2ef4e6109595d/1.20.5-pre1.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-10T12:44:25+00:00"}, {"id": "24w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fcd2be7658c5698a3afb48df0e1a17a096df1114/24w14a.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-04-03T11:49:39+00:00"}, {"id": "24w14potato", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/84117a6a8dc38e6eb09ce054ad22a1400535ecce/24w14potato.json", "time": "2024-05-22T06:21:38+00:00", "releaseTime": "2024-04-01T11:07:19+00:00"}, {"id": "24w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3c7d7465de719e00176bb116d7fec0cde9b7e0cf/24w13a.json", "time": "2024-05-22T06:22:10+00:00", "releaseTime": "2024-03-27T14:30:20+00:00"}, {"id": "24w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/423d5eda90cf53dd578da10f75a359480acea62e/24w12a.json", "time": "2024-05-22T06:21:38+00:00", "releaseTime": "2024-03-20T14:38:37+00:00"}, {"id": "24w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/41e8e0e812736244d6087d17866e740b2e52c4ae/24w11a.json", "time": "2024-05-22T06:21:38+00:00", "releaseTime": "2024-03-14T14:21:33+00:00"}, {"id": "24w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e2febb2f86141e468e12e449824719858b471a7/24w10a.json", "time": "2024-05-22T06:21:06+00:00", "releaseTime": "2024-03-06T10:37:35+00:00"}, {"id": "24w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/05730d945caea92e50ad6a530d6bd8cbfc1ce712/24w09a.json", "time": "2024-05-22T06:21:06+00:00", "releaseTime": "2024-02-28T12:38:12+00:00"}, {"id": "24w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/db385f670faed64b2ec4ed58406c2dfbeaf70365/24w07a.json", "time": "2024-05-22T06:20:35+00:00", "releaseTime": "2024-02-14T12:51:01+00:00"}, {"id": "24w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/265c2d3604f4249e19d14fe691316c7e3e63aa5b/24w06a.json", "time": "2024-05-22T06:20:35+00:00", "releaseTime": "2024-02-07T14:47:18+00:00"}, {"id": "24w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c4e7f843b1a7ec2040af0bc84d5ef17442dde48b/24w05b.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2024-02-01T12:55:14+00:00"}, {"id": "24w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72916085f400de6bcf3d43c314664b861bfc85c7/24w05a.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2024-01-31T13:05:26+00:00"}, {"id": "24w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/147d46af5a98e79279e2398b69c016208fc40df3/24w04a.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2024-01-24T13:42:45+00:00"}, {"id": "24w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/40048a354be33c59cf37f214a5183c1beac62d95/24w03b.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2024-01-18T12:42:37+00:00"}, {"id": "24w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/471410ff00eb717ccba16d5e3af1263f2a341f7f/24w03a.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2024-01-17T13:19:20+00:00"}, {"id": "23w51b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dfd28c425685a1201169c4ee442bbeee1f658737/23w51b.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-12-18T15:39:14+00:00"}, {"id": "23w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b5df969ee5d2e2a34a662110a872533a98e4b87/23w51a.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-12-18T13:36:46+00:00"}, {"id": "1.20.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/d6ebb22e7eeefd88f1cef6b32bcffcccf4326404/1.20.4.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-12-07T12:56:20+00:00"}, {"id": "1.20.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3f502577d18f0da725d27e61e90ddb94787b8c0b/1.20.4-rc1.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-12-06T14:38:01+00:00"}, {"id": "1.20.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c3474992464799e68d0832b98b6f4f04c55b6af7/1.20.3.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-12-04T12:10:32+00:00"}, {"id": "1.20.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dcdf7615f83cbb7aaf71e0ea02c6a959b3d62d69/1.20.3-rc1.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-11-30T13:41:45+00:00"}, {"id": "1.20.3-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a68a315e410122b8e4fa6c8c898818f8f7163874/1.20.3-pre4.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-11-28T13:47:32+00:00"}, {"id": "1.20.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c8c6ed67dd352769b2e70917c564961084b7ca1/1.20.3-pre3.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-11-27T14:24:36+00:00"}, {"id": "1.20.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2a7487425bcbff4c3c981f3d38d1bd9934c1ec2e/1.20.3-pre2.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-11-22T12:21:26+00:00"}, {"id": "1.20.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/95391efdbf56a0e8f347c5d7341e28e7e39159b7/1.20.3-pre1.json", "time": "2024-05-22T06:20:02+00:00", "releaseTime": "2023-11-20T15:40:14+00:00"}, {"id": "23w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b1a67fe9b2f8775bdd793842475aed5c85bc4262/23w46a.json", "time": "2024-05-22T06:19:31+00:00", "releaseTime": "2023-11-16T14:11:33+00:00"}, {"id": "23w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5fbb884214e7c1b8cf13fec55bd6e58e56874e1f/23w45a.json", "time": "2024-05-22T06:19:31+00:00", "releaseTime": "2023-11-08T13:59:58+00:00"}, {"id": "23w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dd09987266c6cc82637261513bc91b751c5e197e/23w44a.json", "time": "2024-05-22T06:18:59+00:00", "releaseTime": "2023-11-01T12:30:52+00:00"}, {"id": "23w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1377e0eafb22ee4bd9b017170c10a5051f11e649/23w43b.json", "time": "2024-05-22T06:18:59+00:00", "releaseTime": "2023-10-26T13:46:16+00:00"}, {"id": "23w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7eca659647cfd293ac34304a8783ed0696eb2b7f/23w43a.json", "time": "2024-05-22T06:18:59+00:00", "releaseTime": "2023-10-25T13:34:37+00:00"}, {"id": "23w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2299e4aed3d0ec6b6157bee36a3d728a3b1575a1/23w42a.json", "time": "2024-05-22T06:26:05+00:00", "releaseTime": "2023-10-18T11:37:28+00:00"}, {"id": "23w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7fcd0d52f085e461c079e9bd4fe9c9358d71a727/23w41a.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-10-11T12:32:46+00:00"}, {"id": "23w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2224a0e303dfdf5e7d56994cdfc9bc0b73369e73/23w40a.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-10-04T12:48:53+00:00"}, {"id": "1.20.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/eb98f587c0b141b3cd680ccc22e4f2368e04c291/1.20.2.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-20T09:02:57+00:00"}, {"id": "1.20.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7ee4e0ea7e5f5a3c1602fd7e70f59dc793c86fa0/1.20.2-rc2.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-18T12:34:57+00:00"}, {"id": "1.20.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bfc5aa5b29c301dd969f200e5821db09bd50ca4e/1.20.2-rc1.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-15T13:10:30+00:00"}, {"id": "1.20.2-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/10a8dd7738c84bda2a781eb364c1c0bd6b8cc822/1.20.2-pre4.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-13T15:06:51+00:00"}, {"id": "1.20.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/47d98f392371ba45ddc9d2b9d64bb4d3c1a7deff/1.20.2-pre3.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-12T12:15:08+00:00"}, {"id": "1.20.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a7a717e27282014e3eb2cea9a5b73b645a1578b9/1.20.2-pre2.json", "time": "2024-05-22T06:25:35+00:00", "releaseTime": "2023-09-07T12:42:32+00:00"}, {"id": "1.20.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f001a15451d599d9e04c869423841c4d46dc3004/1.20.2-pre1.json", "time": "2024-05-22T06:25:06+00:00", "releaseTime": "2023-09-05T12:06:20+00:00"}, {"id": "23w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c90ed5670e73f337627be21f18d63de7f14aeb5d/23w35a.json", "time": "2024-05-22T06:25:06+00:00", "releaseTime": "2023-08-30T11:24:35+00:00"}, {"id": "23w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/11773f03a0e8b2eff4fde84a3bdaa06307449932/23w33a.json", "time": "2024-05-22T06:25:06+00:00", "releaseTime": "2023-08-17T11:39:08+00:00"}, {"id": "23w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b0c651408aa71ec02466fdf33208cf5198c1284c/23w32a.json", "time": "2024-05-22T06:25:06+00:00", "releaseTime": "2023-08-09T12:14:25+00:00"}, {"id": "23w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bba2d108127ffb5beeb139fbb4a1594843e6e78d/23w31a.json", "time": "2024-05-22T06:24:36+00:00", "releaseTime": "2023-08-01T10:03:13+00:00"}, {"id": "1.20.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/bae8fc85c125a571ed033694040ee96d9d8f1335/1.20.1.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-06-12T13:25:51+00:00"}, {"id": "1.20.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0d63956af75cc3ffd250f82fb918c45e080df083/1.20.1-rc1.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-06-09T14:15:49+00:00"}, {"id": "1.20", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/aad51fce89d7ad4513cff224ed6a3d0913e0f593/1.20.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-06-02T08:36:17+00:00"}, {"id": "1.20-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9cf113236f6fbf2b3c3505ff126c8b6dace20988/1.20-rc1.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-31T12:33:33+00:00"}, {"id": "1.20-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d74d95669f47bb4dcd6f39167fbe1bab0b68818e/1.20-pre7.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-29T13:44:34+00:00"}, {"id": "1.20-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e5d992feea4ad5b0dfbb11c4c6aaf54b7e254ae5/1.20-pre6.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-25T12:22:00+00:00"}, {"id": "1.20-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/daa773408543d0059bfbdaf05193b06c7f1ec79d/1.20-pre5.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-23T12:22:52+00:00"}, {"id": "1.20-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/678fbf6a9dab7dee531c2c64332a73bd4322100b/1.20-pre4.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-19T13:13:45+00:00"}, {"id": "1.20-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fa6000f79b6ab6525546d2aa8d453884792fcc28/1.20-pre3.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-19T11:39:46+00:00"}, {"id": "1.20-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cbd39a7f0ebc6ce620832cb169056a235d8d6fef/1.20-pre2.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-16T11:34:54+00:00"}, {"id": "1.20-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f9e1c46a943b2ff0db2bcb9b56e34ab6eb74d22b/1.20-pre1.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-10T12:19:34+00:00"}, {"id": "23w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/290038589cc31df523137548d76416b20a1b614d/23w18a.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-05-03T11:29:26+00:00"}, {"id": "23w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c707884cb94dd541fd85179996d55a6bca6f4dd/23w17a.json", "time": "2024-05-22T06:24:06+00:00", "releaseTime": "2023-04-26T12:09:48+00:00"}, {"id": "23w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b4d7e7915faebc181314cee988db1e77ad15ad82/23w16a.json", "time": "2024-05-22T06:23:37+00:00", "releaseTime": "2023-04-20T11:55:19+00:00"}, {"id": "23w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/559b191f2be0e49ee449b4fb2277019270aa40b2/23w14a.json", "time": "2024-05-22T06:23:37+00:00", "releaseTime": "2023-04-05T12:05:17+00:00"}, {"id": "23w13a_or_b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/048c12e78ca738aad7d2f3b99f8322d7522deee7/23w13a_or_b.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-04-01T12:52:18+00:00"}, {"id": "23w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cb0635b8064cc97ca700c4a63aefb4e8c8ed3a4d/23w13a.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-29T13:54:16+00:00"}, {"id": "23w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f1d6e29cded4fe46b9ab3318acd49e493db9949d/23w12a.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-22T13:28:42+00:00"}, {"id": "1.19.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/08ab5e375a016dea85ca4f59260683c4e6270fa3/1.19.4.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-14T12:56:18+00:00"}, {"id": "1.19.4-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9f74f3488c41911180e5f2c5bb6dc3c19a3ddd47/1.19.4-rc3.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-13T10:03:11+00:00"}, {"id": "1.19.4-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/33572d03ff57222f4ee4b9f7b12c596e364afe34/1.19.4-rc2.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-10T12:42:54+00:00"}, {"id": "1.19.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba504031065a2f4f4cdaa7886f1b48f59faacd81/1.19.4-rc1.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-09T14:35:50+00:00"}, {"id": "1.19.4-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/810b55059e5bbad99f28d78b488e0d94eb5a0c28/1.19.4-pre4.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-08T13:08:22+00:00"}, {"id": "1.19.4-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e55818b5b61e211c9908a7e5ebb61571e9ed13d8/1.19.4-pre3.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-03-01T14:11:05+00:00"}, {"id": "1.19.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e82a6f5453fb36dbd547045cd738d8af326772a/1.19.4-pre2.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-02-27T13:38:53+00:00"}, {"id": "1.19.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/df49074ed80a5be3888f24d6483faa4f03098f2d/1.19.4-pre1.json", "time": "2024-05-22T06:23:07+00:00", "releaseTime": "2023-02-22T16:00:34+00:00"}, {"id": "23w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/508242eba550cdf25fe28c92e89fab3bc11301c9/23w07a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2023-02-15T14:32:29+00:00"}, {"id": "23w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4bbf5dea894b57c8d03feabdabfc2e6a4bd93ffd/23w06a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2023-02-08T15:00:04+00:00"}, {"id": "23w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/94425f05655de0a75a726b8dbd2ec7f3def5ab67/23w05a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2023-02-01T14:20:33+00:00"}, {"id": "23w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d815f72a76eafe6b37935c743e98a098d74cf7b9/23w04a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2023-01-24T15:19:06+00:00"}, {"id": "23w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1db4bcbdb502701cd0385cec5ab7d19638443c49/23w03a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2023-01-18T13:10:31+00:00"}, {"id": "1.19.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/394d0cedf799c59cde655f2321a1eb4008cd73b9/1.19.3.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-12-07T08:17:18+00:00"}, {"id": "1.19.3-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7eceddc54f79aedab13bd0a11f9e359380d83f88/1.19.3-rc3.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-12-06T10:24:01+00:00"}, {"id": "1.19.3-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/95f9ca6012f2c4f7959b93b69c6e6ddbadb01460/1.19.3-rc2.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-12-05T13:21:34+00:00"}, {"id": "1.19.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fe2392b3dfced180c3a91cd0c56fcbfae1b51855/1.19.3-rc1.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-12-01T13:45:18+00:00"}, {"id": "1.19.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0578432056ba24fac4b515db08470bfa8047c422/1.19.3-pre3.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-11-29T14:28:08+00:00"}, {"id": "1.19.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/577587f5cd20c62941f8a23b9184ac00c8b4ce63/1.19.3-pre2.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-11-23T16:12:25+00:00"}, {"id": "1.19.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a8cd9bc467033d0a7bc9e016a1af9d30e11aa393/1.19.3-pre1.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-11-22T13:59:37+00:00"}, {"id": "22w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/634c29fcf94e9b814a8208154a3b0e492b911d41/22w46a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-11-16T13:32:50+00:00"}, {"id": "22w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6331d2643d3a4b3cedbc7dcc450d56ff9eb036de/22w45a.json", "time": "2024-05-22T06:22:38+00:00", "releaseTime": "2022-11-09T14:30:16+00:00"}, {"id": "22w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ed9485390e2a258c621a63e3c46725b47696a9cb/22w44a.json", "time": "2024-05-22T06:18:29+00:00", "releaseTime": "2022-11-02T13:15:43+00:00"}, {"id": "22w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/00f8ff8619be9242375e61eb0e2b815cfea1ef8a/22w43a.json", "time": "2024-05-22T06:18:29+00:00", "releaseTime": "2022-10-26T11:55:59+00:00"}, {"id": "22w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/42587d1f357bc5a596ad5ee5dfeed558624f52a6/22w42a.json", "time": "2024-05-22T06:18:29+00:00", "releaseTime": "2022-10-19T09:34:22+00:00"}, {"id": "1.19.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/ed548106acf3ac7e8205a6ee8fd2710facfa164f/1.19.2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-05T11:57:05+00:00"}, {"id": "1.19.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ebecfcfa284240daa29737c84eb98a2d2e1a33c2/1.19.2-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-04T15:19:44+00:00"}, {"id": "1.19.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8549c05d26a79c0fb5701ba66d200465daa5f18/1.19.2-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-08-04T10:07:26+00:00"}, {"id": "1.19.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/39d5e8925d37490c6f2abb2e02b8c6f1b35719df/1.19.1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-27T09:25:33+00:00"}, {"id": "1.19.1-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8762a93dc173c7a8e68d70ac5517b37e2c5f969f/1.19.1-rc3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-26T15:34:35+00:00"}, {"id": "1.19.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/be8528e20ead28832f20e4278f45519d1e28022a/1.19.1-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-21T16:25:50+00:00"}, {"id": "1.19.1-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0d36b2776f02dc9d864f0f931b6c052435f7918/1.19.1-pre6.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-20T15:49:31+00:00"}, {"id": "1.19.1-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e832137d90ae9915e1b1a22537f30feb0178ce0/1.19.1-pre5.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-15T11:51:44+00:00"}, {"id": "1.19.1-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b2cebb78f1c95d5d886e2c30e8cf913f574ecd3f/1.19.1-pre4.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-08T11:41:59+00:00"}, {"id": "1.19.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/05935ad004751df834add5d8111bea341f388849/1.19.1-pre3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-07-06T14:50:46+00:00"}, {"id": "1.19.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c2e4db17880bd4dad87cb2cd87d4b5f5d159a6e/1.19.1-pre2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-30T15:57:20+00:00"}, {"id": "1.19.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc09b172bbef8c24a69c4c6711e96051464204ad/1.19.1-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-23T16:32:41+00:00"}, {"id": "1.19.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b684045dca48e65dbf5ec5f09070d9382731d0ab/1.19.1-pre1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-21T17:13:59+00:00"}, {"id": "22w24a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1a490c090ec1affab43deba00929558c73dd1e23/22w24a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-15T16:21:49+00:00"}, {"id": "1.19", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/14bbfb25fb1c1c798e3c9b9482b081a78d1f3a9d/1.19.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-07T09:42:18+00:00"}, {"id": "1.19-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ae2b88a016be92e5838afa6232005b41e2935622/1.19-rc2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-03T11:47:25+00:00"}, {"id": "1.19-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f216ace4c19321071a80e7c6dd51efe402032e94/1.19-rc1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-02T12:12:52+00:00"}, {"id": "1.19-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/800c849fe1e8694e8023920e01174e3d2f73065b/1.19-pre5.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-06-01T10:56:23+00:00"}, {"id": "1.19-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/11edfa21e200734858abdd466aeead7754cc68e2/1.19-pre4.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-30T14:43:01+00:00"}, {"id": "1.19-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bf1ebc7ae0dbef7b92307a11eb0cbbfeaa3359e2/1.19-pre3.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-25T09:56:47+00:00"}, {"id": "1.19-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5dbf076b98594a81069a3d574d985f8e3a701990/1.19-pre2.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-23T14:54:00+00:00"}, {"id": "1.19-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/277c1456e8de294125887c0937ad39f9d286f7e6/1.19-pre1.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-18T13:51:54+00:00"}, {"id": "22w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b823251598bcefadad774283db6979e40044e229/22w19a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-12T15:36:11+00:00"}, {"id": "22w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1de25e62031021df204de79c264822898c937447/22w18a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-05-04T14:41:35+00:00"}, {"id": "22w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4df4e4831fafbaa4d41895f448a0596d779425f3/22w17a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-27T15:54:15+00:00"}, {"id": "22w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f6f22cde08f4603aa90aec80a9c5b60b93a09b15/22w16b.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-20T17:25:32+00:00"}, {"id": "22w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a39b0f1591257664a1296b8e95a0689c1cbdad73/22w16a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-20T14:37:07+00:00"}, {"id": "22w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2ed4589fdbc1d58a6d60e2b6809ac956d0a7cf34/22w15a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-13T15:41:17+00:00"}, {"id": "22w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/36abf1492f25e5bb7187307fefc91470cd40817d/22w14a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-06T13:37:12+00:00"}, {"id": "22w13oneblockatatime", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d70cef49b7606e8c37e49abad4ff542e2ce21d09/22w13oneblockatatime.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-04-01T11:56:58+00:00"}, {"id": "22w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bd1e0454545c498d20d25e4d1bc8fd4ddeeb06fe/22w13a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-31T14:53:25+00:00"}, {"id": "22w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/24998bd342996995e1a2007111056906f465a867/22w12a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-24T16:15:02+00:00"}, {"id": "22w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4f1500bb4141a58c8692224e1157c986c6a00075/22w11a.json", "time": "2023-06-07T10:31:30+00:00", "releaseTime": "2022-03-16T15:55:38+00:00"}, {"id": "1.18.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/334b33fcba3c9be4b7514624c965256535bd7eba/1.18.2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-28T10:42:45+00:00"}, {"id": "1.18.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a88f2199e697f43c06d7051186762cd514f5f629/1.18.2-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-25T13:25:40+00:00"}, {"id": "1.18.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c93d7580baf1b292763fa14a379516ffe5822967/1.18.2-pre3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-23T15:23:12+00:00"}, {"id": "1.18.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/46e96658399bf2e1487d88181bd75689978491f8/1.18.2-pre2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-21T15:26:19+00:00"}, {"id": "1.18.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59bd690c22c69ace39595d3b14bf85a01bb54f35/1.18.2-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-18T16:00:32+00:00"}, {"id": "22w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/83d4e38c96c37a840fed51747e98d45d82115405/22w07a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-16T16:13:58+00:00"}, {"id": "22w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f46697f288f553f7a21a42291b85d708924128e8/22w06a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-09T16:47:48+00:00"}, {"id": "22w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bebb4be7c06e5b311e08a46212328c0d1dee1e60/22w05a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-02-02T16:08:39+00:00"}, {"id": "22w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b19476adc780897c3ea2805bc90ff91f694093bd/22w03a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2022-01-19T16:04:59+00:00"}, {"id": "1.18.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7ff864e988a2c29907154d5f9701e87e5d5e554a/1.18.1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-10T08:23:00+00:00"}, {"id": "1.18.1-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/027ff0f43a3589b3ea16771ec11d052fc0fdf45e/1.18.1-rc3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-10T03:36:38+00:00"}, {"id": "1.18.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0e114a6a9e1f246dea4c8835e8046b3d8ce575e3/1.18.1-rc2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-08T12:29:36+00:00"}, {"id": "1.18.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f24188f9c0759be5c844acae8b47fb582c75e7e/1.18.1-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-07T15:52:47+00:00"}, {"id": "1.18.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/01cb59a31c5af10b73ce11d04df73b469e5e8664/1.18.1-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-12-03T13:45:38+00:00"}, {"id": "1.18", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7367ea8b7cad7c7830192441bb2846be0d2ceeac/1.18.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-30T09:16:29+00:00"}, {"id": "1.18-rc4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/489269e1139f4c9ce6af64e9e80ac094accd3515/1.18-rc4.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-29T13:43:42+00:00"}, {"id": "1.18-rc3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0cea86833bdfb8de6d85f2b87b4dda2081f3fc3c/1.18-rc3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-26T15:51:56+00:00"}, {"id": "1.18-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1cd29ca38d308f1375529c2c52c7819a21bb6410/1.18-rc2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-26T10:02:04+00:00"}, {"id": "1.18-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92779f7a433c8b65d2fe52dca236a0b99a877964/1.18-rc1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-25T14:28:49+00:00"}, {"id": "1.18-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/befe1636010c86b29a0b3b74d9614eaca4679185/1.18-pre8.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-24T14:57:32+00:00"}, {"id": "1.18-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14c6eee2ef0b2ec4dd66d21a45288df9ea445853/1.18-pre7.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-23T16:37:41+00:00"}, {"id": "1.18-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/881f1e388c66a0a27f1e39759d594aba7fc827cc/1.18-pre6.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-22T17:09:05+00:00"}, {"id": "1.18-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c7297b2645db73c3548d9c7bcec9d1f1daf9a3d/1.18-pre5.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-19T15:47:09+00:00"}, {"id": "1.18-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2604a38227d2943e072fb6d1e1885cf71659a620/1.18-pre4.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-17T18:07:56+00:00"}, {"id": "1.18-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6bd8b415c9df47ba64474f10ce777e34d31462de/1.18-pre3.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-17T16:04:25+00:00"}, {"id": "1.18-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f7bc077f4bae337c5d783a77246cdfc019f5a85e/1.18-pre2.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-16T17:04:48+00:00"}, {"id": "1.18-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bad40b99d4019c10ef43641ff11dfecd5fd0a2e0/1.18-pre1.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-11T16:14:06+00:00"}, {"id": "21w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0a663bcbd3c43ced8e0e4889e82b79e48d2c42c/21w44a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-11-03T16:14:34+00:00"}, {"id": "21w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/87fce70da2c59051a18e3d792f35839f7a799f82/21w43a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-27T14:38:55+00:00"}, {"id": "21w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3ce8fdf60e69bfb0944e479ada4cf6b60dcc3995/21w42a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-20T12:41:25+00:00"}, {"id": "21w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f05122bd9496b5277cfb24312c1a7a70510cc84a/21w41a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-13T15:23:23+00:00"}, {"id": "21w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a6a012bab1380ce87f9fc4a20212fd7031ac93a4/21w40a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-10-07T11:17:50+00:00"}, {"id": "21w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/008cea9c2128244b9f1ffa3b9512db1e60558390/21w39a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-29T16:27:05+00:00"}, {"id": "21w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/893da3cf2aaf60457e4805994f8d526305685e77/21w38a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-23T14:36:06+00:00"}, {"id": "21w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fd90ab042d60935a123a579ec03efc422f06e4bb/21w37a.json", "time": "2023-06-07T10:50:17+00:00", "releaseTime": "2021-09-15T16:04:30+00:00"}, {"id": "1.17.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e0e7ab5ed6f55bbd874ef95be3c9356d67e64b57/1.17.1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-06T12:01:34+00:00"}, {"id": "1.17.1-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4224a23efdcd362508457bda732b502d3d8bfbaf/1.17.1-rc2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-05T12:58:01+00:00"}, {"id": "1.17.1-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/27d7a88469c5a59420d7b060f2a253802164185f/1.17.1-rc1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-07-01T15:23:37+00:00"}, {"id": "1.17.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/30637bf484bc2e530db468c42e6d2695bb806420/1.17.1-pre3.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-30T15:43:16+00:00"}, {"id": "1.17.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/95f076c3f748ab83f44bc4c80b0039626b67806e/1.17.1-pre2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-29T15:14:12+00:00"}, {"id": "1.17.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/609fa7a9bb0d1c3855111e1d511d4ba2a398a524/1.17.1-pre1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-18T12:24:40+00:00"}, {"id": "1.17", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/0d9ace8a2ecfd1f4c782786f4b985a499240ff12/1.17.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-08T11:00:40+00:00"}, {"id": "1.17-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/45b8f00ecc9ca265c80da0d8ad9a6710f088bc21/1.17-rc2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-07T11:46:28+00:00"}, {"id": "1.17-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ed41604ce5637dfc62e062e1ce809817d54aa46d/1.17-rc1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-04T13:24:48+00:00"}, {"id": "1.17-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/29bd60294ee8387f7ca7d9c1abd835484f71bbfc/1.17-pre5.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-03T17:01:28+00:00"}, {"id": "1.17-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9c91afc7b8e9bab61facd2423bd75b375df0fc2e/1.17-pre4.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-02T16:15:43+00:00"}, {"id": "1.17-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/de4dd57535bea923731008c1f29562211740aba6/1.17-pre3.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-06-01T15:43:46+00:00"}, {"id": "1.17-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/76f54994dc32298f0743e2a9031ad1bba04cf753/1.17-pre2.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-31T15:54:05+00:00"}, {"id": "1.17-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba419fd73cb07512bd2ca090f179e84333f9804c/1.17-pre1.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-27T09:39:21+00:00"}, {"id": "21w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6757e49a93f18fe7b8d522f83b62d47629da37ab/21w20a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-19T15:22:02+00:00"}, {"id": "21w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a43adfb683de80b158a5c6899f34f3a041dc578/21w19a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-12T11:19:15+00:00"}, {"id": "21w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b3266f58ade03b19896163c7cfb40cf815aa8e28/21w18a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-05-05T15:24:35+00:00"}, {"id": "21w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2af27c4d5412f4476b43882052b5cb510cbc0984/21w17a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-28T13:54:05+00:00"}, {"id": "21w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f083b566dd515b5706ead9522c42b187b3f2f2f6/21w16a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-21T16:41:14+00:00"}, {"id": "21w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce5b993772ae22cc5f518e72b93744954945f755/21w15a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-14T13:41:34+00:00"}, {"id": "21w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7a67f727cc7847efc3753de26a32d051348b5fba/21w14a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-04-07T14:04:09+00:00"}, {"id": "21w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c20df75b956c2eb982a9028ceff965e1aae40345/21w13a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-31T16:17:46+00:00"}, {"id": "21w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c0d562d6db031a67b9569c0765c8ef68434e0ee2/21w11a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-17T15:05:50+00:00"}, {"id": "21w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d4982f2015d40e966beeae097307e33e2f26fa57/21w10a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-03-10T15:24:38+00:00"}, {"id": "21w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7dbd5a6f2eaa20726235a2b40f955004339b7af/21w08b.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-25T11:46:34+00:00"}, {"id": "21w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bc80c3181bbeebd6e0cab46fc445b76b6c9dadb1/21w08a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-24T14:38:51+00:00"}, {"id": "21w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/96476dbdb5d6689b3f1a47c025f1b7ad3630bd95/21w07a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-17T16:35:40+00:00"}, {"id": "21w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/446e380daf0fa4a9d42d5fcfa8984f8a9500e063/21w06a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-10T17:13:54+00:00"}, {"id": "21w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e957c6d798c266d5978835fcf8f74f7af96153e/21w05b.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-04T15:09:29+00:00"}, {"id": "21w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f28b435faf0610838bb6ddf6ace922ea27b89de9/21w05a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-02-03T15:56:54+00:00"}, {"id": "21w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4b7bb5c32164c0497717ab7ec5dc3016de6dfdc0/21w03a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2021-01-20T14:56:29+00:00"}, {"id": "1.16.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fba9f7833e858a1257d810d21a3a9e3c967f9077/1.16.5.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2021-01-14T16:05:32+00:00"}, {"id": "1.16.5-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79b63085fb7b4805877ee719f6518ab3c87b3833/1.16.5-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2021-01-13T15:58:55+00:00"}, {"id": "20w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08f2e16bc1ab7f7bdeaa95f2762ff05c7407100d/20w51a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-12-16T16:27:57+00:00"}, {"id": "20w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba1eaa1e4396bd42eb1ef2a0897fcf0043551f6f/20w49a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-12-02T16:47:20+00:00"}, {"id": "20w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cbbe53da94d1368c5e2fd8309f0e7b1645957516/20w48a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-25T15:42:24+00:00"}, {"id": "20w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d1d7a38b0d650c51473ba04019176b575fd6f34b/20w46a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-11T15:30:32+00:00"}, {"id": "20w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/913ae8af6dcc8b308fb58da1ee3b58e3a83f5f28/20w45a.json", "time": "2023-06-07T11:00:54+00:00", "releaseTime": "2020-11-04T16:42:00+00:00"}, {"id": "1.16.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/596ad61fda7612d9edf8881cf81869276bdb7f82/1.16.4.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-29T15:49:37+00:00"}, {"id": "1.16.4-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ef95b0f319cb282802a4cc38e57e79d4fafc9567/1.16.4-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-27T16:31:08+00:00"}, {"id": "1.16.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5af340937921b990c1b7da8bdac9d04fad7c3c95/1.16.4-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-22T15:32:17+00:00"}, {"id": "1.16.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b48239bf7935185c788e07d9c2d83d788ce3f27b/1.16.4-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-10-13T14:36:07+00:00"}, {"id": "1.16.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/6485dd131ef68c968041a9f6fd73094b027e42e1/1.16.3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-09-10T13:42:37+00:00"}, {"id": "1.16.3-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5ba5cfa865db9020ddab97df365ea8821d3eb454/1.16.3-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-09-07T12:34:06+00:00"}, {"id": "1.16.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/998d9ef5770d05c20d760dc16cf85151f35009f2/1.16.2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-11T10:13:46+00:00"}, {"id": "1.16.2-rc2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/278e49a115bce14e99b5fa9420103652692c9f6b/1.16.2-rc2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-10T11:43:36+00:00"}, {"id": "1.16.2-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/541ad2a92d12e6d36fb6c2b29b5d69ae4b97ab23/1.16.2-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-07T14:35:39+00:00"}, {"id": "1.16.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3df6469e9cc759a1ac0a8f6690289922d547f97b/1.16.2-pre3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-06T16:44:52+00:00"}, {"id": "1.16.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7768698c025d559928042452df9d79910e7818eb/1.16.2-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-08-05T15:30:50+00:00"}, {"id": "1.16.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9709f88b92c9078c3d0a95dae3a225dc8cd70a34/1.16.2-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-29T13:19:05+00:00"}, {"id": "20w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3de2ee50c31ebcd4b1fa9577e2550a6020710df5/20w30a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-22T15:05:15+00:00"}, {"id": "20w29a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d869c8cda528228a47b80dde5cc9ea138f514a99/20w29a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-15T14:13:47+00:00"}, {"id": "20w28a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/33142315373d1ed7289fa6e5b8b2de6980147de8/20w28a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-08T15:10:40+00:00"}, {"id": "20w27a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e442b0f37792b83bf46e9ae0258f45faff33a7cf/20w27a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-07-01T15:07:35+00:00"}, {"id": "1.16.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/54fa3af57d041d2771e66d390197b2c0288e697c/1.16.1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-24T10:31:40+00:00"}, {"id": "1.16", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e9d21d375f9c961f0e9731d4e463306d76e77c48/1.16.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-23T16:20:52+00:00"}, {"id": "1.16-rc1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49d94686688119e1d85d8c7ebc690b0f6d71ebd8/1.16-rc1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-18T12:49:28+00:00"}, {"id": "1.16-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d85ab25ae33462045ba050774cf9cbb978afebca/1.16-pre8.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-17T14:45:23+00:00"}, {"id": "1.16-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec4dc4530869505923e1ebf6fc80ea08eda831e1/1.16-pre7.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-16T15:31:35+00:00"}, {"id": "1.16-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c1ed3dcbbf22fe0a17eb05b3f1f1445f25508d6/1.16-pre6.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-15T16:57:57+00:00"}, {"id": "1.16-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e41cdd44896fcfd96db07aecf89a58bbc89d6c6f/1.16-pre5.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-12T14:33:59+00:00"}, {"id": "1.16-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/68b121aae24c9f217378ac64e7e27e1a4ca6c6e0/1.16-pre4.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-11T15:45:55+00:00"}, {"id": "1.16-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72e9981dd7fb9bc1e775a04aa844ef79192bfebc/1.16-pre3.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-10T14:57:43+00:00"}, {"id": "1.16-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81ae4d3c6cabf02af6c67abd87c6b9c9501bdf26/1.16-pre2.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-05T10:47:59+00:00"}, {"id": "1.16-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bcfd0eeee263ea7779c23ba7d55034607ba4b00e/1.16-pre1.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-06-04T18:17:51+00:00"}, {"id": "20w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a0bbbe0674789a5b2b11705bb868a446bfd660fd/20w22a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-29T11:25:02+00:00"}, {"id": "20w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d95fdd82e0fa506eb4099f3e948c378124a2baf/20w21a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-20T12:07:18+00:00"}, {"id": "20w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2ac29186d5062224ff326d868fe78bea79360ad1/20w20b.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-14T08:16:26+00:00"}, {"id": "20w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4e5118f80f061490e54d843216780dabdaaf59fd/20w20a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-13T15:11:43+00:00"}, {"id": "20w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/be653aac3f8e6cfc2bc40cc9be764f0a4ba46121/20w19a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-05-06T16:23:24+00:00"}, {"id": "20w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1c7978f8d1b6735bb0b6d813f3aed0363bf1bd8d/20w18a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-29T15:16:34+00:00"}, {"id": "20w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/98807b36f1ee047d5e4e2744d94b28d9e5c1b7cd/20w17a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-22T13:47:50+00:00"}, {"id": "20w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9ca086c9195b437c08f9f0c38d25dc1955d91870/20w16a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-15T14:13:01+00:00"}, {"id": "20w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bbf16435ce4c151d3908b442987c162e6f7cf8c5/20w15a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-08T12:29:24+00:00"}, {"id": "20w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e548dbfeb7cb9aa76888b7308112c1a03cf0cc0/20w14a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-02T14:28:06+00:00"}, {"id": "20w14infinite", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73eb2a736f0a7349fb5f73e685f847826e5321fd/20w14infinite.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-04-01T12:47:08+00:00"}, {"id": "20w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/430033af05f29add54241c55be62bbde6b640cd5/20w13b.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-26T13:00:34+00:00"}, {"id": "20w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e7daff8b5d319aca184bfa818f073663ada22d7/20w13a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-25T17:05:33+00:00"}, {"id": "20w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79a74e0bfd167b1d09713accb7c2fe6cd1c5dd8c/20w12a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-18T16:42:06+00:00"}, {"id": "20w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ac08e450ea036741d61bcb7e5ea09e5db2e945d7/20w11a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-11T16:28:27+00:00"}, {"id": "20w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/781dbf396510e90e3ec6c845d60e05719a3c8853/20w10a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-03-04T16:21:41+00:00"}, {"id": "20w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/191f7a06170d42a2aed63c2a8adf4aaae4799892/20w09a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-26T16:43:08+00:00"}, {"id": "20w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/77545f4f812d127fd032e36413901b85215662d9/20w08a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-19T13:30:09+00:00"}, {"id": "20w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49b9a7a4d3ae78d74dcba384e2aea08cb58fbe37/20w07a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-14T13:20:49+00:00"}, {"id": "20w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59a5d77dce749c868f7338c5d6241312a9dc2f1a/20w06a.json", "time": "2023-06-07T11:09:02+00:00", "releaseTime": "2020-02-05T16:05:22+00:00"}, {"id": "1.15.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e9d0adb8f642abe422909ede50f651b2b58a3573/1.15.2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-17T10:03:52+00:00"}, {"id": "1.15.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2b1688e3a06c0427a99cd0042554ed40eb4fafa4/1.15.2-pre2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-16T12:35:57+00:00"}, {"id": "1.15.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7f37c8d4695dff2a9f553952e9c97a49ee471ca/1.15.2-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2020-01-14T16:19:31+00:00"}, {"id": "1.15.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/18c3063de87ae126b4e017121219ba802be0755b/1.15.1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-16T10:29:47+00:00"}, {"id": "1.15.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b5aee0865f805a44ecdbed04c964352e86534f2/1.15.1-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-12T14:02:30+00:00"}, {"id": "1.15", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/833322370ab320e77717097082effe1d124d48bd/1.15.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-09T13:13:38+00:00"}, {"id": "1.15-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e60f500bb19e44c0e632e02da12807ff2fe92e49/1.15-pre7.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-09T12:14:11+00:00"}, {"id": "1.15-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6da29669f5a9cd8ddf8ee92888125a23eb09b877/1.15-pre6.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-06T12:04:30+00:00"}, {"id": "1.15-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e842a4e2c50234213a19931ac8a462de3021467/1.15-pre5.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-05T13:20:00+00:00"}, {"id": "1.15-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b4ca2162a7a098e4e4f7dce619666d0aa6f3e2fc/1.15-pre4.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-12-03T12:24:24+00:00"}, {"id": "1.15-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1f31491b1ea5e89427393ab3ca6aefb5e0e9c34a/1.15-pre3.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-28T17:17:50+00:00"}, {"id": "1.15-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/62c8b621f2be16d47fa2f05f8f6380a696cfeda3/1.15-pre2.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-25T18:09:38+00:00"}, {"id": "1.15-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/66e8035a07e8d2610491003ebf7c51a9c4b0ed67/1.15-pre1.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-21T17:01:17+00:00"}, {"id": "19w46b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/18f4384dd05ad7711714742e5c22947a3828d6a2/19w46b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-14T13:29:24+00:00"}, {"id": "19w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/91bef07ec9143752f2ce038434f60f08e6f10089/19w46a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-13T16:37:46+00:00"}, {"id": "19w45b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce9a87180664cce2eaa96518f6dae923943efe4c/19w45b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-08T12:42:44+00:00"}, {"id": "19w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e459f7878fde73117da2cb89cbaaa6d649b1a39/19w45a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-11-07T16:19:20+00:00"}, {"id": "19w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/652ec7dc926df9b0c7a7f7d00e9cfe34b3b82470/19w44a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-30T15:31:44+00:00"}, {"id": "19w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c7d6f4ba7786e252c79a73a13106eb077e622a3/19w42a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-16T15:30:39+00:00"}, {"id": "19w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a73a6135db91f13d7399fc9d438c24a7a80fb819/19w41a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-09T15:21:35+00:00"}, {"id": "19w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c2b4b675af813d9e8e43767991539a1770b93e6b/19w40a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-10-02T13:40:26+00:00"}, {"id": "19w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14180226c4e65289831b3f28fc75aebf8e114deb/19w39a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-27T10:13:33+00:00"}, {"id": "19w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/72fea837ad3bf55eaf4a1163109afba0d1f9976c/19w38b.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-18T14:59:13+00:00"}, {"id": "19w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e43b0e8f8944107fafb785cb50e2994c4be1676f/19w38a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-18T10:03:22+00:00"}, {"id": "19w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8a986a197d87f45205a5650018708c7f9d9056ad/19w37a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-11T11:46:44+00:00"}, {"id": "19w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/90bc200686ed385ca3ccae265393d28a8d3191fe/19w36a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-09-04T11:19:34+00:00"}, {"id": "19w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/39e153ff4f57f533069cf24441f9fa0a23b6d223/19w35a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-08-28T15:01:44+00:00"}, {"id": "19w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79310fef2c7bb69085e9459568152049f706e52d/19w34a.json", "time": "2023-06-07T11:17:08+00:00", "releaseTime": "2019-08-22T12:06:21+00:00"}, {"id": "1.14.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/be146d5f66a3627ed0a87c234c4d8dde8ab35098/1.14.4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-19T09:25:47+00:00"}, {"id": "1.14.4-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9fa32d63671ca8ad48ffc01f478bb5528a9780bb/1.14.4-pre7.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-18T11:32:36+00:00"}, {"id": "1.14.4-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fc516c11532c5dd97de371786969d0103df1aff9/1.14.4-pre6.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-15T12:39:49+00:00"}, {"id": "1.14.4-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6561296e73e1cbc2371cda68e0f045191d413ea3/1.14.4-pre5.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-11T10:52:33+00:00"}, {"id": "1.14.4-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a08857ff791232848fb4f361c05bfc3096cf02b3/1.14.4-pre4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-10T12:53:29+00:00"}, {"id": "1.14.4-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1304801a59f94205cf234f809f2ddaf78e2b64a8/1.14.4-pre3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-08T11:21:42+00:00"}, {"id": "1.14.4-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/33921eca48b26430ff698ce196645d166529f270/1.14.4-pre2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-04T14:41:05+00:00"}, {"id": "1.14.4-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/22fef20b2c50855f8702a06a836dc4f31412436a/1.14.4-pre1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-07-03T13:01:01+00:00"}, {"id": "1.14.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/e21618620e02be5a14543d1d17ffdba941d09aa8/1.14.3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-24T12:52:52+00:00"}, {"id": "1.14.3-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e197ff501e791295140b7b6b02ca5f476075f634/1.14.3-pre4.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-19T11:44:29+00:00"}, {"id": "1.14.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cee4ea21267c4f62171f5cf19bf5b3322424be33/1.14.3-pre3.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-14T08:03:33+00:00"}, {"id": "1.14.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f4a376be79a51403d9cd0c1dbec1a25a2994dc85/1.14.3-pre2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-07T09:11:29+00:00"}, {"id": "1.14.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6345b47eb7abe7b74870ff11dbd03e282e1b0112/1.14.3-pre1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-06-03T14:34:20+00:00"}, {"id": "1.14.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/83299b3bf3139ebd9ae5547b3144dcf68d4cb1fd/1.14.2.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-27T11:48:25+00:00"}, {"id": "1.14.2 Pre-Release 4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/75bf72d8e4b38cf5f729637efc116697edec4334/1.14.2%20Pre-Release%204.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-27T07:21:11+00:00"}, {"id": "1.14.2 Pre-Release 3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a0126da466f90d6e52eb3e27332f7f7070f4be8/1.14.2%20Pre-Release%203.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-22T13:12:51+00:00"}, {"id": "1.14.2 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dee854f57cac0fc9f1b96b96254a67829dd103ae/1.14.2%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-17T12:21:03+00:00"}, {"id": "1.14.2 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0525ae4750d18d6c3cf9edee1f510333919c6003/1.14.2%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-16T15:40:25+00:00"}, {"id": "1.14.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/183e49ba0fabb5ef8a304f8f5907fa887f40c466/1.14.1.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-13T11:10:12+00:00"}, {"id": "1.14.1 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1d0ccfff5f8d13d3ecaddbc481a9a4815e312e4e/1.14.1%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-09T14:01:04+00:00"}, {"id": "1.14.1 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/656e98e9c5a418b4747b0e5892fd301963b0bcc7/1.14.1%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-05-07T14:44:42+00:00"}, {"id": "1.14", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/0fd01dd81eaa451d3130b1cf025a10f129585b10/1.14.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-23T14:52:44+00:00"}, {"id": "1.14 Pre-Release 5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/157959b1daeda81293854032102eef36e76af108/1.14%20Pre-Release%205.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-18T11:05:19+00:00"}, {"id": "1.14 Pre-Release 4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/93ca7217fa9027019328b1b8f9b2e8f82436622d/1.14%20Pre-Release%204.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-17T15:31:12+00:00"}, {"id": "1.14 Pre-Release 3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/af8a6b1a9d8d44e080451553060a602e1214a7bb/1.14%20Pre-Release%203.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-16T13:57:10+00:00"}, {"id": "1.14 Pre-Release 2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fcbaaa318bf47cecb0c37da7a37903e4bcf24e90/1.14%20Pre-Release%202.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-12T11:38:53+00:00"}, {"id": "1.14 Pre-Release 1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/76dd36e6b4fb2db5e474dd3b44cd96f3f498433d/1.14%20Pre-Release%201.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-10T14:24:16+00:00"}, {"id": "19w14b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/eac7bd3b9b9a8beed783fda4920b76b792120861/19w14b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-05T10:33:58+00:00"}, {"id": "19w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3f547c294bf6f82e76120f760d5574d6b3eb88bc/19w14a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-04-03T13:45:00+00:00"}, {"id": "3D Shareware v1.34", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5b59564acaa4cc153b6f934e566226642ed978ab/3D%20Shareware%20v1.34.json", "time": "2023-06-07T12:27:21+00:00", "releaseTime": "2019-04-01T11:18:08+00:00"}, {"id": "19w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fd82b31c5890e7f118c7ffa9122a0f6b29c87936/19w13b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-29T16:53:22+00:00"}, {"id": "19w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b6b6aa23cbbce46b65e36d0c1bccd4f18438118a/19w13a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-27T15:15:31+00:00"}, {"id": "19w12b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2b7c619474e2a5c19e43494199d47cafba395abf/19w12b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-21T15:20:01+00:00"}, {"id": "19w12a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/91e9bb4b6af34b07c6a89c95696b988b8156702b/19w12a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-20T16:47:34+00:00"}, {"id": "19w11b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/065fec1702d92598089ad37f9e64b2e52ca30114/19w11b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-14T14:26:23+00:00"}, {"id": "19w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec8d1b45727e11cec93a813cc8b66bd48a6a3bad/19w11a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-03-13T13:59:29+00:00"}, {"id": "19w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fe35acc600f18d6247ec9e4228c53447e695f8a3/19w09a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-27T14:44:30+00:00"}, {"id": "19w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8d59acdc1b78c6d4a690c2906bcb0a875f119652/19w08b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-21T13:38:09+00:00"}, {"id": "19w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b21d6ece2b83e7ec488a4536dbe9f9228b744b34/19w08a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-20T14:56:58+00:00"}, {"id": "19w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0be11f1e510a44d0042ad471a72371e7633c9777/19w07a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-13T16:12:08+00:00"}, {"id": "19w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/384c37467913bcd11a0d7f8d8b9ec81c7058f1de/19w06a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-02-06T16:24:13+00:00"}, {"id": "19w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/87712b3fed60308203939e9ac846470f4b9672d3/19w05a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-30T15:16:49+00:00"}, {"id": "19w04b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aaf60b4748fbfa2b08c90c6abb1762fb92cac367/19w04b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-25T12:20:15+00:00"}, {"id": "19w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4eeb1dae750f4152927fe51c5065ca7aa3d53e3e/19w04a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-24T15:31:52+00:00"}, {"id": "19w03c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e7a922f060cc4441841e4722b0a6bab631492c1e/19w03c.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-18T11:27:13+00:00"}, {"id": "19w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a600b0a22f97147e59cd6060b362086ac84cb13e/19w03b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-17T16:43:27+00:00"}, {"id": "19w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e10947fbb39e5d58fb42000348be423e8c0cad64/19w03a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-16T16:45:02+00:00"}, {"id": "19w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5b51ed792b91ce4d281666c64c49084a134ac11d/19w02a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2019-01-09T15:52:07+00:00"}, {"id": "18w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/307a38d1f592a92fcff056165ef05323cb499bfc/18w50a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-12-12T14:58:13+00:00"}, {"id": "18w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7e37cc7f1f8c8d9cde81b7754fda64954578170a/18w49a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-12-05T12:24:30+00:00"}, {"id": "18w48b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/cece9e08337e073961bd7802672050718bf07d0d/18w48b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-30T10:37:31+00:00"}, {"id": "18w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fff0948616360b5545f236e5900af4c7c6da5d86/18w48a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-29T13:11:38+00:00"}, {"id": "18w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9d60a4e4f408db78e5f7797e8996d87e555674d8/18w47b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-23T10:46:41+00:00"}, {"id": "18w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b9345c8f73a33095fba323ebd4c4784796cf4436/18w47a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-21T15:45:22+00:00"}, {"id": "18w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b24c105bfb11d85b4f8cb946c89f762cf099aa2/18w46a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-15T13:43:14+00:00"}, {"id": "18w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8a857bfb02953d2578458402792e3b416d25f9f/18w45a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-11-07T14:40:06+00:00"}, {"id": "18w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7bee20111c1cd50fb0e26b689ea648ff84989ae6/18w44a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-31T15:29:16+00:00"}, {"id": "18w43c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/509730930d8dcd19bd3c6db819d33eb00d272ef4/18w43c.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-26T08:40:46+00:00"}, {"id": "18w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ba1edcdba89ea57137c04952e4c7755926263a76/18w43b.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-24T15:02:30+00:00"}, {"id": "18w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07adde0060f5cbdb01b90ebc03cde154aacebcb/18w43a.json", "time": "2023-06-07T11:25:16+00:00", "releaseTime": "2018-10-24T10:52:16+00:00"}, {"id": "1.13.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fa3ddc22146c46bfeb0e9d322c6f83b937e25005/1.13.2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-22T11:41:07+00:00"}, {"id": "1.13.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7b915c9ca867e916dcbacecdfe19cff3cd94cab8/1.13.2-pre2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-18T14:46:12+00:00"}, {"id": "1.13.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28eb641c164c2ae0879358f884f42f7e2393c366/1.13.2-pre1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-10-16T13:40:58+00:00"}, {"id": "1.13.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/f37fe6f0912ddb7ac3e7d5201a73d56ce170a57f/1.13.1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-22T14:03:42+00:00"}, {"id": "1.13.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f82e1057225a7c9dfe3c75b45924a6bfa4aaeafa/1.13.1-pre2.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-20T13:52:09+00:00"}, {"id": "1.13.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73f5439743e168a8270b538061832f22625369c9/1.13.1-pre1.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-16T13:08:44+00:00"}, {"id": "18w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/495ee0c97c88cf15b6614dd68bc70994413f8e5f/18w33a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-15T14:28:56+00:00"}, {"id": "18w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fa7c2eaa0539d16d3e3887ac16ecd19f25757505/18w32a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-08T13:16:57+00:00"}, {"id": "18w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5f20fbe733b3db3758045626e9ffff050029daf6/18w31a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-08-01T12:54:44+00:00"}, {"id": "18w30b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81891c454a12e9bf4a262002d5c89320bb4ae153/18w30b.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-07-26T16:06:57+00:00"}, {"id": "18w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3e9adc4f817f01b8f92e00cb19e2d604473a83d3/18w30a.json", "time": "2023-06-07T11:32:59+00:00", "releaseTime": "2018-07-25T14:29:31+00:00"}, {"id": "1.13", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c24c2fd37c8ca2e1c18721e2c77caf4d24c87f92/1.13.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-18T15:11:46+00:00"}, {"id": "1.13-pre10", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0d4e1471e49b9657226ffb8684ed6da72bb5068e/1.13-pre10.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-17T14:48:06+00:00"}, {"id": "1.13-pre9", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/43f426cd0895c936110629532c6db46717b2d827/1.13-pre9.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-16T14:17:42+00:00"}, {"id": "1.13-pre8", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28369586c81d7db81d6aea81a6464d2bb1765da8/1.13-pre8.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-13T11:45:00+00:00"}, {"id": "1.13-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/44314cf050787819e3c4b440f736a8c5e18ff862/1.13-pre7.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-10T14:21:42+00:00"}, {"id": "1.13-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e5288f29d1cd7b894ed99610828e713c3ba65ac/1.13-pre6.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-07-04T12:36:00+00:00"}, {"id": "1.13-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f0500efb357283322169d38fd52d24e195d56e05/1.13-pre5.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-28T13:58:53+00:00"}, {"id": "1.13-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5722f90decabdc54cf498d5c2e27e3a094c14018/1.13-pre4.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-26T13:00:55+00:00"}, {"id": "1.13-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/26564723c707a7eadfc07db2962295934c846296/1.13-pre3.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-21T12:57:11+00:00"}, {"id": "1.13-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/657c4cf0ac64074dbc4d97de063275aba31c9bc0/1.13-pre2.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-15T09:20:00+00:00"}, {"id": "1.13-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/28db6a1653a70fc1ac1b352e63f542d21397f59d/1.13-pre1.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-06-04T15:17:34+00:00"}, {"id": "18w22c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b16aeae7fd19224ec48c0e0937321faae2d241ff/18w22c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-31T13:53:15+00:00"}, {"id": "18w22b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e22c333dbaff27f1dfb068aee0a343d7bc3544c/18w22b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-30T13:48:58+00:00"}, {"id": "18w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/587dd0b2f3ac3ffd96b2a3451434d1b23b351066/18w22a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-29T13:23:55+00:00"}, {"id": "18w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aaae28bb5baa12bf5c7ca8c7f3cc8c558a39c038/18w21b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-25T10:09:09+00:00"}, {"id": "18w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92a0cd0254365df7df5e7ad7974ad15285020b32/18w21a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-23T13:11:49+00:00"}, {"id": "18w20c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a9d4d7cd84c112e644f134cc0cbeb0b2efe1d9e5/18w20c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-17T14:06:56+00:00"}, {"id": "18w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/566f11647d85194f292d2300fa550631bf75510a/18w20b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-16T14:35:35+00:00"}, {"id": "18w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a287a82f4f84e9529f8d387f3f23c680d262cf6a/18w20a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-15T14:02:25+00:00"}, {"id": "18w19b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/48a0d019a8ce73d2e492f029e64c9e2791b49339/18w19b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-09T10:00:51+00:00"}, {"id": "18w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/56cac74df46a43a6385708beafeed1df79590eb2/18w19a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-05-08T13:05:19+00:00"}, {"id": "18w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5fcd79de4734a0b058aab67607e44b1a09464290/18w16a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-19T14:46:35+00:00"}, {"id": "18w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c9fe2e1e80b8a5078af2c30cd6b764ca508beaa0/18w15a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-11T14:54:22+00:00"}, {"id": "18w14b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b4dc5007c1306f5823cfcefd4dbb1e944c8439e/18w14b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-05T14:44:02+00:00"}, {"id": "18w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c976a8bb4510edcdcaafca651aae6b49df731bc9/18w14a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-04-04T14:36:14+00:00"}, {"id": "18w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07fefcabe464b19876597340187732ffd59be5f/18w11a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-13T15:10:59+00:00"}, {"id": "18w10d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/282418aaec344de75724caaf9b2def18e892b213/18w10d.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-09T15:19:12+00:00"}, {"id": "18w10c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ab5cfc50c9e95c44d744a9501808621278aec8df/18w10c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-08T15:29:23+00:00"}, {"id": "18w10b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/316ed74ddf2fa0ae65adb2a170ed5aacdada4d51/18w10b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-07T15:56:01+00:00"}, {"id": "18w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fac132e97632d4beff518e7f3f8224c07f9239de/18w10a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-06T15:54:24+00:00"}, {"id": "18w09a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fecf14145dffb1c28922b3c16f14e2972779b1e8/18w09a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-03-01T14:15:10+00:00"}, {"id": "18w08b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3563f3093515369cb24ba5c2d1db610a62e88379/18w08b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-22T15:44:49+00:00"}, {"id": "18w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc7c9d4df688697de0b2f13dc46749e55cbd00ef/18w08a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-21T14:59:00+00:00"}, {"id": "18w07c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c286a5129959684ce6c416f9a150560d6db263af/18w07c.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-16T13:23:32+00:00"}, {"id": "18w07b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dea62b145246671ae46ed157e6ef2cd2de485a1e/18w07b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-15T14:28:42+00:00"}, {"id": "18w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/211e0152bce6081564fc9c40603463c04f89d835/18w07a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-14T17:34:13+00:00"}, {"id": "18w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a19117df869fb45cdd7a3692a3a01aab3979253f/18w06a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-02-09T12:09:55+00:00"}, {"id": "18w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a33a7a4c76821853a7a578920d7d784b91e9581d/18w05a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-31T13:32:09+00:00"}, {"id": "18w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3321f5a7180f93f885b2546368a88a928e11a70a/18w03b.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-17T15:09:14+00:00"}, {"id": "18w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a5e5d97e17af55625c66fa993b105fb774c2d967/18w03a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-17T14:25:24+00:00"}, {"id": "18w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b9bdc1df5d704f0de0a1f2c6b8a721618371213/18w02a.json", "time": "2023-06-07T11:41:22+00:00", "releaseTime": "2018-01-10T11:54:55+00:00"}, {"id": "18w01a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/58589469cc95d98a7cb18823f9dfdd7f14c9d023/18w01a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2018-01-03T13:29:30+00:00"}, {"id": "17w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/63a9166163a505dfb457a236e3e5d0f2ae983c2f/17w50a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-11T15:28:08+00:00"}, {"id": "17w49b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f0a11dbf1fd65a650310359ccd9c3c36f481688/17w49b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-07T15:29:54+00:00"}, {"id": "17w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9fba986bf446a39962189fb76b4236ea81e2f5f8/17w49a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-12-06T14:24:30+00:00"}, {"id": "17w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3b07a3dbdf52535bf05c377cbeb4e4308c6dfd42/17w48a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-27T15:36:33+00:00"}, {"id": "17w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/687c352e333feb8e36ac38e1a3cad8aa1a45affc/17w47b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-23T15:30:12+00:00"}, {"id": "17w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4f2089e0b8a7c209e811fe2ff86c4f9ab5b7bceb/17w47a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-22T12:40:05+00:00"}, {"id": "17w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a073800fa0f758a0570696446cd16df88ffc65f6/17w46a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-15T15:21:55+00:00"}, {"id": "17w45b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ad4e836a7bc594aebc70fae5cfda50b2ca410abd/17w45b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-10T10:07:02+00:00"}, {"id": "17w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b9fbd5f68cb9e4d0326d20afeb248595e4a278b8/17w45a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-11-08T15:48:00+00:00"}, {"id": "17w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6ceca710ad234e4db4c75c8fb9418878f2a8abf7/17w43b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-10-26T13:36:22+00:00"}, {"id": "17w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/50714e6fa84ca0bd804d3fa2f8419bbc08298e76/17w43a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-10-25T14:43:50+00:00"}, {"id": "1.12.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/832d95b9f40699d4961394dcf6cf549e65f15dc5/1.12.2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-18T08:39:46+00:00"}, {"id": "1.12.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1eff7a3a362a1005f202da0d3b7112b00c6259e7/1.12.2-pre2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-15T08:21:17+00:00"}, {"id": "1.12.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/360cab493afe35971fca74d75fbd6b43c41aa797/1.12.2-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-09-13T13:33:31+00:00"}, {"id": "1.12.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5b3e7d137ea360e1d418f0cf68de160acf93fbff/1.12.1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-03T12:40:39+00:00"}, {"id": "1.12.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/36781397c4c05b1ee74276afd9247f9dc33ce692/1.12.1-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-02T10:53:55+00:00"}, {"id": "17w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d500ab4e0838c53f4f7ffc5300521df0be9b9853/17w31a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-08-01T09:41:23+00:00"}, {"id": "1.12", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/da76e0a25ffccf2765f9e86ce61c063e44b2183b/1.12.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-06-02T13:50:27+00:00"}, {"id": "1.12-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/92c171fe6fcf3c16ba95f03307618bcac5e3d947/1.12-pre7.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-31T10:56:41+00:00"}, {"id": "1.12-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b1ba9c1c184e57e1bb970cdf4caa35ece8fb4eac/1.12-pre6.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-29T11:45:12+00:00"}, {"id": "1.12-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5dab6422cd2471a7a1b26435c912679cf66c58a/1.12-pre5.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-19T07:43:28+00:00"}, {"id": "1.12-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e05acd26ca220bb6399f396c0be0893bc74808d/1.12-pre4.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-18T12:28:16+00:00"}, {"id": "1.12-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/47d8cbd470539006d9825de3a890f07e342e4168/1.12-pre3.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-17T14:09:18+00:00"}, {"id": "1.12-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5d014cb12b9aecd84a8d08a7f70bdac55ded1f26/1.12-pre2.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-11T12:11:12+00:00"}, {"id": "1.12-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/80d68dc92cdf2557aada495061e93c2ce4f5ca08/1.12-pre1.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-10T11:37:17+00:00"}, {"id": "17w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/69a0095dd897d6ef87fd449328215d4f3d71c78d/17w18b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-04T13:40:22+00:00"}, {"id": "17w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/659b3c3b8578d45d265b58a0f1e428c044183ab2/17w18a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-05-03T14:50:23+00:00"}, {"id": "17w17b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8cd9ea793f3ee4608edf4fac8efad1b68fbceb65/17w17b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-27T13:24:23+00:00"}, {"id": "17w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9599f29c91fc8f57a77f7a79f4676a09e2ca1fe4/17w17a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-26T13:48:23+00:00"}, {"id": "17w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/38e2d76bea9091f1ed89e9f9c5b4630fcec103d9/17w16b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-21T12:02:59+00:00"}, {"id": "17w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b0369bcb956a4853bcc094ffe0020964061a1379/17w16a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-20T13:58:35+00:00"}, {"id": "17w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/84285c1ad87efc7f59ef75ca4e35ddf57c7193ae/17w15a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-12T09:30:50+00:00"}, {"id": "17w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d56c3a0ac83f263ab173de90dd6f044523a5274/17w14a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-04-05T13:58:01+00:00"}, {"id": "17w13b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b06914e45949d4d0167e339daea5217dc2f1f3c4/17w13b.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-03-31T11:06:35+00:00"}, {"id": "17w13a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5d31a532de28fd250af810ed468a6bd70f3de54/17w13a.json", "time": "2023-06-07T11:49:20+00:00", "releaseTime": "2017-03-30T09:32:19+00:00"}, {"id": "17w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a2a4b51368580cf7abc22d99d360eab2d4f2fec4/17w06a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2017-02-08T13:16:29+00:00"}, {"id": "1.11.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fa3f6d94a9fad648ff97d18fd710997261a421e8/1.11.2.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-21T09:29:12+00:00"}, {"id": "1.11.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b244f9fc1721a2ac90b6e12220f5e40246d2c84d/1.11.1.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-20T14:05:34+00:00"}, {"id": "16w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d4db7d96831cec8c3ad090110dfffae8f6f52aec/16w50a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-12-15T14:38:52+00:00"}, {"id": "1.11", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/935062464617c9904d20045065515cfd3f1b76d2/1.11.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-14T14:34:40+00:00"}, {"id": "1.11-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7bdd264a5a18799413f665a808de94451af68cb7/1.11-pre1.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-08T13:42:50+00:00"}, {"id": "16w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a75c5e9b85de3c7f89e1acbe02702dd4515df5eb/16w44a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-11-03T14:17:11+00:00"}, {"id": "16w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ecdc354d9d658e08c5371a7ce961e4aa35849913/16w43a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-27T09:00:51+00:00"}, {"id": "16w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a133f828ccd3261131132a504729e3106f17f071/16w42a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-19T11:17:47+00:00"}, {"id": "16w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/802bb9d6882c23e6f47e844c09d97914f1e90491/16w41a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-13T14:28:35+00:00"}, {"id": "16w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5c9e009d6875b2b54c231fb81cea4670b7950d5/16w40a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-10-06T13:57:59+00:00"}, {"id": "16w39c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/636990dd6311f6cadddf50c1e4c0a51f8fcdaf2d/16w39c.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-30T14:11:48+00:00"}, {"id": "16w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e4aac42badba700c6b8364ee5ebdc6a3b09073ca/16w39b.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-29T14:39:39+00:00"}, {"id": "16w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a550f22fab3e847433aa3289c6bedbca49057527/16w39a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-28T13:32:06+00:00"}, {"id": "16w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/687018ed85a2784dc63695af097daa280c9a8093/16w38a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-20T12:40:49+00:00"}, {"id": "16w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b49e747382603492f3ca5617a661f39c0c4e4e77/16w36a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-08T14:55:10+00:00"}, {"id": "16w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1ea0cec35ba30ccf2359303a8fbfd643179f0bcf/16w35a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-09-01T13:13:38+00:00"}, {"id": "16w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9fde68c65264789e91e61ce3d5db783fd537d2c/16w33a.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-08-17T12:48:57+00:00"}, {"id": "16w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5e6026e390a7fde3928682740425d49a44d7786/16w32b.json", "time": "2023-06-07T11:59:01+00:00", "releaseTime": "2016-08-11T14:34:29+00:00"}, {"id": "16w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/66d012257108f502883cee77b2ecd7cc40aa6ebc/16w32a.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-08-10T12:30:10+00:00"}, {"id": "1.10.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/819460dcabf1a2e41b0cf65d342b18ad8dc12281/1.10.2.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-23T09:17:32+00:00"}, {"id": "1.10.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9c23be6c5a48ab7dc7698586b5d7177fff4b441a/1.10.1.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-22T10:13:22+00:00"}, {"id": "1.10", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/a827abf9c022a08ed9c4c7807a8c1b7f2f05deca/1.10.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-08T13:06:18+00:00"}, {"id": "1.10-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/16ae6b8daf0522d443a64b79b04fae94077027f0/1.10-pre2.json", "time": "2023-06-07T12:09:50+00:00", "releaseTime": "2016-06-07T14:56:34+00:00"}, {"id": "1.10-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0ac1b4475692d7e7d457bf16ad6dfac040e9f265/1.10-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-06-02T14:45:16+00:00"}, {"id": "16w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49b8423070619688f106e5fa6f4fd9176fc54a93/16w21b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-26T12:47:22+00:00"}, {"id": "16w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/325467ff1dae5a0ef55427a0a7a81c9c7e65ceea/16w21a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-25T13:12:09+00:00"}, {"id": "16w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9286a8e316080ccf271051a014abc7d886469979/16w20a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-18T12:45:14+00:00"}, {"id": "1.9.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b1a314ce2b67b3639bd6407ddcd549ce236de6f6/1.9.4.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-10T10:17:16+00:00"}, {"id": "1.9.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4d37195227760207d397224c509ded4b0c68ea37/1.9.3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-10T08:33:35+00:00"}, {"id": "1.9.3-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bd10c446533e8059a6bb0018525e1bce31572bb9/1.9.3-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-05-03T09:28:11+00:00"}, {"id": "1.9.3-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e179d52f490ab24205b495cb6554f172077db374/1.9.3-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-27T13:33:20+00:00"}, {"id": "1.9.3-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/75c4b0e87d82f8972f9513797915ab8624c60177/1.9.3-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-21T12:41:42+00:00"}, {"id": "16w15b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0d4cf718d11fc50923c10d331be462c11836beb7/16w15b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-13T13:56:41+00:00"}, {"id": "16w15a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/13ae720e4e324deb0f7a7dbbdfb37c330d3adcf2/16w15a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-11T14:38:28+00:00"}, {"id": "16w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c748934ad99af11076a95658af606686bdcbce7d/16w14a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-04-07T12:47:51+00:00"}, {"id": "1.RV-Pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/23761c1cc8b5c7c72f6604e1e7322a056a6af2f8/1.RV-Pre1.json", "time": "2023-06-07T12:36:15+00:00", "releaseTime": "2016-03-31T16:18:53+00:00"}, {"id": "1.9.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9623ca73a57c6d183a28513c894c2337cfe65995/1.9.2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-30T15:23:55+00:00"}, {"id": "1.9.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/fdca0cf4bdab9959fce30413202a00a1bce35be5/1.9.1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-30T13:43:07+00:00"}, {"id": "1.9.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2fa68c071c9cc440e792d70f3b2c2e02e016d657/1.9.1-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-11T09:20:36+00:00"}, {"id": "1.9.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8da8881815e3d53da86adbdc051f836d0c4e2b93/1.9.1-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-10T15:06:03+00:00"}, {"id": "1.9.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1e7ecc95790b3bac41c4c59e9c7186c8b35e3bb3/1.9.1-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-03-09T16:27:29+00:00"}, {"id": "1.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9178828493e41a24452841039710f05728c466d6/1.9.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-29T13:49:54+00:00"}, {"id": "1.9-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/47874af37fe9a921ed0386321445be1dd5754976/1.9-pre4.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-26T15:21:11+00:00"}, {"id": "1.9-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b34824eb8099df04af6542722d571ab20381b416/1.9-pre3.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-24T15:52:36+00:00"}, {"id": "1.9-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/99775b58e157766cb7c4058b244a1a2b357b0889/1.9-pre2.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-18T17:41:00+00:00"}, {"id": "1.9-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/06ae803d5a838a287548f6414b8ede0ebcefe64b/1.9-pre1.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-17T15:23:19+00:00"}, {"id": "16w07b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7abe006dec5beaffac1eb5fcddf86731f6eb97d/16w07b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-16T15:22:39+00:00"}, {"id": "16w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73a10d7e61011af19d4c00565bc4faeaae693c7b/16w07a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-15T15:48:46+00:00"}, {"id": "16w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/86dfa5200058cdb6f96cd2648ec86ddd04bbaf41/16w06a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-10T15:06:41+00:00"}, {"id": "16w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f89c22833e743a144e56aaed3e238c142148d9b2/16w05b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-04T15:28:02+00:00"}, {"id": "16w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/848849c124e368f87bca8a990cbdc9043f678366/16w05a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-02-03T15:48:38+00:00"}, {"id": "16w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ec6cfa675974817435326b87987a512c5af7fbdf/16w04a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-28T15:37:24+00:00"}, {"id": "16w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d254f6fc2e3abb57e016feb6734bfa6ff38802eb/16w03a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-20T14:29:24+00:00"}, {"id": "16w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1ba834734412a1d7532e85844a32ec2ba18c1580/16w02a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2016-01-13T15:15:16+00:00"}, {"id": "15w51b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/40b2a92fcabe632c1239c615188f802a36b3854d/15w51b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-17T15:30:41+00:00"}, {"id": "15w51a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a120a6cce86982907628a84aca21cfc6b9064463/15w51a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-17T14:02:37+00:00"}, {"id": "15w50a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8356a6a93d89e3cc95328b4ee6bbd0697e0de200/15w50a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-09T15:35:57+00:00"}, {"id": "15w49b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8472901afe69ddbe599112d9fc656d3adcd1d5c/15w49b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-03T15:23:22+00:00"}, {"id": "1.8.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/d546f1707a3f2b7d034eece5ea2e311eda875787/1.8.9.json", "time": "2021-12-15T15:44:12+00:00", "releaseTime": "2015-12-03T09:24:39+00:00"}, {"id": "15w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4b2fbb35b426fbd63932801bd5f198229dfd0f62/15w49a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-12-02T15:09:37+00:00"}, {"id": "15w47c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e61f29ace59ae1d4d1cb1473b673b225115dc8a/15w47c.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-20T12:46:56+00:00"}, {"id": "15w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dd2a6ff3fd726a25ea42b020764a0f1c4e935849/15w47b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-19T14:48:03+00:00"}, {"id": "15w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3bab1680f0ec6330a832457f466654c03d799a0e/15w47a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-18T15:53:41+00:00"}, {"id": "15w46a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b40019e05283d502aab6bcf40fa498e333cb08c/15w46a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-12T12:11:47+00:00"}, {"id": "15w45a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c581934b794e798ce74736fd3e802128a44aa698/15w45a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-11-05T13:04:07+00:00"}, {"id": "15w44b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/17c7995e26759d671cb4ba41485b7ddf05bc2aba/15w44b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-30T11:23:17+00:00"}, {"id": "15w44a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dfce16ddf5118c95bb981ae7d84448ad3a60fc73/15w44a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-28T15:09:36+00:00"}, {"id": "15w43c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9a348e6e81aadc6fb563f1586149424af39d5268/15w43c.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-23T15:35:55+00:00"}, {"id": "15w43b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2a40420c0409f6f8fc24efe2c904e03715b22623/15w43b.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-22T14:11:58+00:00"}, {"id": "15w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4aaabcbd0079e99840294002ebed569801729483/15w43a.json", "time": "2023-06-07T12:17:49+00:00", "releaseTime": "2015-10-21T15:28:52+00:00"}, {"id": "15w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7b18842c1dbbe945d991851ffaff49ecd7efbb91/15w42a.json", "time": "2021-12-15T15:45:57+00:00", "releaseTime": "2015-10-14T13:25:14+00:00"}, {"id": "15w41b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/27ab9716cf332d457be085a808eb170fe1a1ff2c/15w41b.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-10-07T14:07:26+00:00"}, {"id": "15w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/38026b4c0301e3441d8e0d5b367392d3212dc51d/15w41a.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-10-07T13:19:53+00:00"}, {"id": "15w40b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a00ee3d8eb0c1cb38d928f5efb4a473768fa5286/15w40b.json", "time": "2021-12-15T15:45:56+00:00", "releaseTime": "2015-09-30T14:13:54+00:00"}, {"id": "15w40a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f5c9662f1674f7f0e55e82a77109ad88a6bc9df7/15w40a.json", "time": "2021-12-15T15:45:55+00:00", "releaseTime": "2015-09-30T13:13:54+00:00"}, {"id": "15w39c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/134e9d87a2c86e82d98bc7f8ba5965b7fd6634c1/15w39c.json", "time": "2021-12-15T15:45:55+00:00", "releaseTime": "2015-09-23T13:13:54+00:00"}, {"id": "15w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/909aa3af2988edc58b1e9c66f906a883d9a34815/15w39b.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-21T15:09:52+00:00"}, {"id": "15w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7f914aa1098b8b35e20e9c021b57378d0a8fcc6c/15w39a.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-21T13:16:32+00:00"}, {"id": "15w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/222a234de865b9147cad4e3b2545d8af93c35065/15w38b.json", "time": "2021-12-15T15:45:54+00:00", "releaseTime": "2015-09-17T14:22:31+00:00"}, {"id": "15w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1b4dcb4c07599a5e5571d9d71570641086e821e4/15w38a.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-16T14:22:31+00:00"}, {"id": "15w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9459c8c56ba4577b69cc12a9034769f0d20fb3dc/15w37a.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-10T14:22:31+00:00"}, {"id": "15w36d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/49a6f0d3a233d103b5fdeb6aefd7a6b0208b5ce9/15w36d.json", "time": "2021-12-15T15:45:53+00:00", "releaseTime": "2015-09-04T14:22:31+00:00"}, {"id": "15w36c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b1a04bae902de441013791777aa0461d446bd2c7/15w36c.json", "time": "2021-12-15T15:45:52+00:00", "releaseTime": "2015-09-02T16:07:22+00:00"}, {"id": "15w36b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2268159e9ce438054660ac86d55db3ddfed1e20b/15w36b.json", "time": "2021-12-15T15:45:52+00:00", "releaseTime": "2015-09-02T15:36:25+00:00"}, {"id": "15w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c185b19d54c00e43f85c610858909c40f9163708/15w36a.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-09-02T14:46:40+00:00"}, {"id": "15w35e", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1fade4fe9d2587106ac3fa14775f9126d3198103/15w35e.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-08-28T18:14:02+00:00"}, {"id": "15w35d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f7eeb1ed37ec5c38cd8a04ba1fe90a50a1b24752/15w35d.json", "time": "2021-12-15T15:45:51+00:00", "releaseTime": "2015-08-28T16:25:35+00:00"}, {"id": "15w35c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/362bda12d03da60b8481c79f4779bba7a2602c89/15w35c.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-28T11:21:00+00:00"}, {"id": "15w35b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/fda82bd0b305eba9607742b9314a41a54f0a9952/15w35b.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-24T15:39:18+00:00"}, {"id": "15w35a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/801ae2c7be9b3e558a7aef6c766bddb74d4be66a/15w35a.json", "time": "2021-12-15T15:45:50+00:00", "releaseTime": "2015-08-24T14:19:31+00:00"}, {"id": "15w34d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3c0d347369147a3951163679127a5bf8e78be5a2/15w34d.json", "time": "2021-12-15T15:45:49+00:00", "releaseTime": "2015-08-21T15:27:55+00:00"}, {"id": "15w34c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/44d6774de6881154fd5f9ac6154dee5f202eb121/15w34c.json", "time": "2021-12-15T15:45:49+00:00", "releaseTime": "2015-08-21T12:45:20+00:00"}, {"id": "15w34b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3bec850cf623d63b26caf462b0be177bc9954a0a/15w34b.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-20T14:00:03+00:00"}, {"id": "15w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b8fdc5838196c33646a68610ed7586678a53b085/15w34a.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-19T12:56:01+00:00"}, {"id": "15w33c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c602ac43b9f2c23b4c39999a6368bbccd31852ca/15w33c.json", "time": "2021-12-15T15:45:48+00:00", "releaseTime": "2015-08-14T13:10:46+00:00"}, {"id": "15w33b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c108562e1ee548ba05439441e97fdcb0b01d1194/15w33b.json", "time": "2021-12-15T15:45:47+00:00", "releaseTime": "2015-08-12T15:29:11+00:00"}, {"id": "15w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e5b7e666fd697aef925f539d3983d03ed5d4457e/15w33a.json", "time": "2021-12-15T15:45:47+00:00", "releaseTime": "2015-08-12T14:05:07+00:00"}, {"id": "15w32c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2bf1e36bc4099bba503063ec507b7600ca088e4c/15w32c.json", "time": "2021-12-15T15:45:46+00:00", "releaseTime": "2015-08-07T14:08:17+00:00"}, {"id": "15w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/59db82d67a0a1c6b6a31d22cd050ff6c43f1611b/15w32b.json", "time": "2021-12-15T15:45:46+00:00", "releaseTime": "2015-08-06T13:51:47+00:00"}, {"id": "15w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4e80b2295bdb531e64326c4d3fbf93e8d330c5e7/15w32a.json", "time": "2021-12-15T15:45:45+00:00", "releaseTime": "2015-08-05T12:22:42+00:00"}, {"id": "15w31c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1345a9c6d2442415e5980c12fd7bd838072dbd90/15w31c.json", "time": "2021-12-15T15:45:44+00:00", "releaseTime": "2015-07-31T13:45:08+00:00"}, {"id": "15w31b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c9c8d4b706ebb7a057bb91ac69d84ea060b8d174/15w31b.json", "time": "2021-12-15T15:45:44+00:00", "releaseTime": "2015-07-30T13:38:32+00:00"}, {"id": "15w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c9ad2064a55148bef3da7d98dde8d9ff50596ea/15w31a.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2015-07-29T13:24:33+00:00"}, {"id": "1.8.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/690172f1227e1c1d2fa8fceadd0f578f7851a69e/1.8.8.json", "time": "2021-12-15T15:44:12+00:00", "releaseTime": "2015-07-27T10:31:28+00:00"}, {"id": "1.8.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7152f102903cd3ce7514d84c8ac98efecac30839/1.8.7.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-06-05T10:10:44+00:00"}, {"id": "1.8.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/acccbb056a3e8f3086c4614974fb3a894317853a/1.8.6.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-05-25T10:31:19+00:00"}, {"id": "1.8.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/16da5f5be7478f3602c25182a90f2057ba2f60d8/1.8.5.json", "time": "2021-12-15T15:44:11+00:00", "releaseTime": "2015-05-22T11:15:28+00:00"}, {"id": "1.8.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/043b84efde9fc25d849e979329c03101ac9b7795/1.8.4.json", "time": "2021-12-15T15:44:10+00:00", "releaseTime": "2015-04-17T11:37:50+00:00"}, {"id": "15w14a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9349d236c0f4b8760f75621b3eaad538055c759/15w14a.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2015-04-01T07:08:00+00:00"}, {"id": "1.8.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/413ad8fdcf8f29f4f1c2b4425aa0dade00f75dd4/1.8.3.json", "time": "2021-12-15T15:44:10+00:00", "releaseTime": "2015-02-20T14:00:09+00:00"}, {"id": "1.8.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/1e35829856a71261f5a7b2b3a83012c7434b2203/1.8.2.json", "time": "2021-12-15T15:44:09+00:00", "releaseTime": "2015-02-19T15:47:29+00:00"}, {"id": "1.8.2-pre7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d07a07da8ffe68a0929710c72346073a02a94933/1.8.2-pre7.json", "time": "2021-12-15T15:45:10+00:00", "releaseTime": "2015-02-16T13:01:35+00:00"}, {"id": "1.8.2-pre6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/07ae1d9b67d36399e239a2ff46d43a1f96ef141a/1.8.2-pre6.json", "time": "2021-12-15T15:45:10+00:00", "releaseTime": "2015-01-30T11:58:24+00:00"}, {"id": "1.8.2-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08e7827173655705e938233cf148f955b4f67901/1.8.2-pre5.json", "time": "2021-12-15T15:45:09+00:00", "releaseTime": "2015-01-26T15:03:24+00:00"}, {"id": "1.8.2-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/db4c583ec25447f7418fc8e458798905a1282b88/1.8.2-pre4.json", "time": "2021-12-15T15:45:09+00:00", "releaseTime": "2015-01-16T14:19:59+00:00"}, {"id": "1.8.2-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3d371e2f8c3b04b44c76ae908a1e6f800895aa80/1.8.2-pre3.json", "time": "2021-12-15T15:45:08+00:00", "releaseTime": "2015-01-15T16:44:33+00:00"}, {"id": "1.8.2-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/50c6a27cbbd2df6adff74aaea9953a00c6ce38e3/1.8.2-pre2.json", "time": "2021-12-15T15:45:08+00:00", "releaseTime": "2015-01-15T15:07:31+00:00"}, {"id": "1.8.2-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79c984156100e076c37316d6d6377ced3daaf379/1.8.2-pre1.json", "time": "2021-12-15T15:45:07+00:00", "releaseTime": "2014-12-18T11:29:41+00:00"}, {"id": "1.8.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/62f9f77f67fd7d6c92cfae57cecd445be14ccd4e/1.8.1.json", "time": "2021-12-15T15:44:09+00:00", "releaseTime": "2014-11-24T14:13:31+00:00"}, {"id": "1.8.1-pre5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4460bbf278fef1312f03c1483599c31149fe85a7/1.8.1-pre5.json", "time": "2021-12-15T15:45:07+00:00", "releaseTime": "2014-11-19T14:30:48+00:00"}, {"id": "1.8.1-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9024ad2831e3fc4450977aafe7bb3d07ff0d542/1.8.1-pre4.json", "time": "2021-12-15T15:45:06+00:00", "releaseTime": "2014-11-06T14:10:50+00:00"}, {"id": "1.8.1-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c2f5fb57bf63012594b3dc34a80a8d888ec017ac/1.8.1-pre3.json", "time": "2021-12-15T15:45:06+00:00", "releaseTime": "2014-10-23T12:59:42+00:00"}, {"id": "1.8.1-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8e77dedf93135552e1aaaebcec4c8d154d4dea04/1.8.1-pre2.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-10-16T14:19:27+00:00"}, {"id": "1.8.1-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f470d54d32f9e1d1a02e4e84e33b2407325ab62d/1.8.1-pre1.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-10-15T13:25:11+00:00"}, {"id": "1.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/9eb165eef46294062d8698c8a78e8ac914949e7a/1.8.json", "time": "2021-12-15T15:44:13+00:00", "releaseTime": "2014-09-02T08:24:35+00:00"}, {"id": "1.8-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7fd3abc53ee1f813f5b574c8dc758fd694b6abd3/1.8-pre3.json", "time": "2021-12-15T15:45:05+00:00", "releaseTime": "2014-08-28T09:40:54+00:00"}, {"id": "1.8-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2c6bf8e3d17565117bbb5e188544439518d3ad95/1.8-pre2.json", "time": "2021-12-15T15:45:04+00:00", "releaseTime": "2014-08-25T14:52:18+00:00"}, {"id": "1.8-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/00ddc59925abc10e08047c94657e3365b1e031d6/1.8-pre1.json", "time": "2021-12-15T15:45:04+00:00", "releaseTime": "2014-08-21T13:56:26+00:00"}, {"id": "14w34d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e314c5316fc189a9883f5a786a6b9daffcff8e84/14w34d.json", "time": "2021-12-15T15:45:43+00:00", "releaseTime": "2014-08-20T12:46:59+00:00"}, {"id": "14w34c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a82b66557f41c05f41477481e39be5d5ceec3c62/14w34c.json", "time": "2021-12-15T15:45:42+00:00", "releaseTime": "2014-08-19T15:31:24+00:00"}, {"id": "14w34b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f24d3b4a363411fec20a36c2bd92a62b628be003/14w34b.json", "time": "2021-12-15T15:45:42+00:00", "releaseTime": "2014-08-18T15:14:28+00:00"}, {"id": "14w34a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dc020c20f2d7a79dee3f601317a8a7cb191c0538/14w34a.json", "time": "2021-12-15T15:45:41+00:00", "releaseTime": "2014-08-18T14:14:11+00:00"}, {"id": "14w33c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/de314d5c6f011057f764e546a212731d40736c1f/14w33c.json", "time": "2021-12-15T15:45:41+00:00", "releaseTime": "2014-08-15T18:00:26+00:00"}, {"id": "14w33b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dec4943bf73d83402d455243f83c8c550e36f7b5/14w33b.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-15T16:23:51+00:00"}, {"id": "14w33a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a1a938359171774c96e06f54bc0c12352a9d7992/14w33a.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-13T15:08:14+00:00"}, {"id": "14w32d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/414e33e7d03d873966c199d959426da08aa5aebc/14w32d.json", "time": "2021-12-15T15:45:40+00:00", "releaseTime": "2014-08-08T15:13:41+00:00"}, {"id": "14w32c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3dfa2c82cd06c89735ac0c9b05151b4994efab19/14w32c.json", "time": "2021-12-15T15:45:39+00:00", "releaseTime": "2014-08-08T14:11:20+00:00"}, {"id": "14w32b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6230265cc1f324689cb5fbb7df21235ca0013e70/14w32b.json", "time": "2021-12-15T15:45:39+00:00", "releaseTime": "2014-08-07T14:45:17+00:00"}, {"id": "14w32a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3af16f96e7800a8f0c31500a873b008c00036c84/14w32a.json", "time": "2021-12-15T15:45:38+00:00", "releaseTime": "2014-08-06T14:01:16+00:00"}, {"id": "14w31a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1243fe2c047064613e42a2c0e7ce0018fdf94035/14w31a.json", "time": "2021-12-15T15:45:38+00:00", "releaseTime": "2014-07-30T15:38:05+00:00"}, {"id": "14w30c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6327714a7712f723bb74492e2f5fcbb92b8b12a9/14w30c.json", "time": "2021-12-15T15:45:37+00:00", "releaseTime": "2014-07-24T14:39:09+00:00"}, {"id": "14w30b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/dddd3cf12b88f179baa286a9bb51f4c3902c3780/14w30b.json", "time": "2021-12-15T15:45:37+00:00", "releaseTime": "2014-07-23T15:03:03+00:00"}, {"id": "14w30a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f73b4bad130911c1ef16066aeb740574f20f90f7/14w30a.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-23T13:15:42+00:00"}, {"id": "14w29b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/02a4803aa427d29f9db910d22b263686d0135fcc/14w29b.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-16T17:27:40+00:00"}, {"id": "14w29a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5219707e16e90d57fbba55f635b68e4725d72b8f/14w29a.json", "time": "2021-12-15T15:45:36+00:00", "releaseTime": "2014-07-16T15:18:17+00:00"}, {"id": "14w28b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c18437b0194fb2af464b5fe0cb67ed0eeafb44e8/14w28b.json", "time": "2021-12-15T15:45:35+00:00", "releaseTime": "2014-07-10T14:28:48+00:00"}, {"id": "14w28a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6d6b755e76453633e464ed09f82b0979a414d8e4/14w28a.json", "time": "2021-12-15T15:45:35+00:00", "releaseTime": "2014-07-09T15:42:36+00:00"}, {"id": "14w27b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/08f1ed6374fb9d87e34fe81ab50d19d01e3055dc/14w27b.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-07-02T18:34:56+00:00"}, {"id": "14w27a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c0e594ad64eac1b322e4724b92292daad80951eb/14w27a.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-07-02T16:07:20+00:00"}, {"id": "14w26c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2fe002bebd830ccb5328329ed7efb7e9fb555519/14w26c.json", "time": "2021-12-15T15:45:34+00:00", "releaseTime": "2014-06-26T15:05:03+00:00"}, {"id": "14w26b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/288aa1d9c5840c8d0f75ee682bc8a0a1564babfb/14w26b.json", "time": "2021-12-15T15:45:33+00:00", "releaseTime": "2014-06-25T15:08:39+00:00"}, {"id": "14w26a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6d41ffb32ced2eaaeed6b0ddd38b5e53f849c25f/14w26a.json", "time": "2021-12-15T15:45:33+00:00", "releaseTime": "2014-06-25T13:59:27+00:00"}, {"id": "14w25b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d8b348b5a412e809748f35f694fe5dc395a83b3a/14w25b.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-06-19T12:29:48+00:00"}, {"id": "14w25a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0091b9fe0f95dc765e187840ff41235638ce22d6/14w25a.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-06-18T15:52:28+00:00"}, {"id": "14w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c5791a666929e783ba360e98247ff744b5ac3520/14w21b.json", "time": "2021-12-15T15:45:32+00:00", "releaseTime": "2014-05-22T15:17:55+00:00"}, {"id": "14w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f8c912b97cf684f4339571b27592e85b7ec84a19/14w21a.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-22T14:44:33+00:00"}, {"id": "14w20b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b4b682e67ff47a689cf3ff0b405eeec5758dfa9a/14w20b.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-15T16:47:21+00:00"}, {"id": "14w20a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/674e75f032a5473ad91531dfbfa7b8cb42f55f71/14w20a.json", "time": "2021-12-15T15:45:31+00:00", "releaseTime": "2014-05-15T14:01:20+00:00"}, {"id": "1.7.10", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/ed5d8789ed29872ea2ef1c348302b0c55e3f3468/1.7.10.json", "time": "2021-12-15T15:44:05+00:00", "releaseTime": "2014-05-14T17:29:23+00:00"}, {"id": "1.7.10-pre4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f2a4a03329bb07d70d4837b6893c435f97deed25/1.7.10-pre4.json", "time": "2021-12-15T15:45:02+00:00", "releaseTime": "2014-05-14T16:29:23+00:00"}, {"id": "1.7.10-pre3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/94578a1fc1db7cb804a9be044008e54367f4905e/1.7.10-pre3.json", "time": "2021-12-15T15:45:01+00:00", "releaseTime": "2014-05-14T15:29:23+00:00"}, {"id": "1.7.10-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2e8103cd14fc9a7db0c56f68cbc41a0b26ea9954/1.7.10-pre2.json", "time": "2021-12-15T15:45:01+00:00", "releaseTime": "2014-05-14T14:29:23+00:00"}, {"id": "1.7.10-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a526665974dfa717f79f15529ae294d0a6074fc5/1.7.10-pre1.json", "time": "2021-12-15T15:45:00+00:00", "releaseTime": "2014-05-14T13:29:23+00:00"}, {"id": "14w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ffcc6382a2d12310c42cc1b654ea8d88117cf105/14w19a.json", "time": "2021-12-15T15:45:30+00:00", "releaseTime": "2014-05-08T14:24:19+00:00"}, {"id": "14w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0aa29d5bc6915b347505a194260bd51bc8bf2960/14w18b.json", "time": "2021-12-15T15:45:30+00:00", "releaseTime": "2014-05-02T11:38:17+00:00"}, {"id": "14w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c64cc4d300948e2d8e5fb05e394b69edc680027e/14w18a.json", "time": "2021-12-15T15:45:29+00:00", "releaseTime": "2014-04-30T10:25:35+00:00"}, {"id": "14w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2d857ecd809f15008f4718dc3b11ef5b60548ce4/14w17a.json", "time": "2021-12-15T15:45:29+00:00", "releaseTime": "2014-04-24T15:44:49+00:00"}, {"id": "14w11b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/022ade13058d98289f1625857462994a6ec40110/14w11b.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-04-14T14:36:19+00:00"}, {"id": "1.7.9", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5579bc9e25a9bb5e3187a2570693a0c6658edce4/1.7.9.json", "time": "2021-12-15T15:44:08+00:00", "releaseTime": "2014-04-14T13:29:23+00:00"}, {"id": "1.7.8", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/03d8e2e1c192d48ffc406cb7a483861cf26dfe25/1.7.8.json", "time": "2021-12-15T15:44:08+00:00", "releaseTime": "2014-04-09T07:58:16+00:00"}, {"id": "1.7.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/47e228263557da73d0e2be803e5d83e5b246ae75/1.7.7.json", "time": "2021-12-15T15:44:07+00:00", "releaseTime": "2014-04-09T07:52:16+00:00"}, {"id": "1.7.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b6dd3e6496ad415f0c57867dea1f97710d5f184c/1.7.6.json", "time": "2021-12-15T15:44:07+00:00", "releaseTime": "2014-04-09T07:52:06+00:00"}, {"id": "14w11a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ed3b597f26c1140b31d4c7421054e83398270e19/14w11a.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-03-13T14:02:50+00:00"}, {"id": "1.7.6-pre2", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/977e8f92b306b2d798a7b69858f48fbe06dbb302/1.7.6-pre2.json", "time": "2021-12-15T15:45:03+00:00", "releaseTime": "2014-03-08T11:00:01+00:00"}, {"id": "1.7.6-pre1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/39e402b6972475126fa9e8a883915a9ce5d7722a/1.7.6-pre1.json", "time": "2021-12-15T15:45:02+00:00", "releaseTime": "2014-03-08T11:00:00+00:00"}, {"id": "14w10c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/312e632fcac49d7c1dca6a7fa58824eace01d91d/14w10c.json", "time": "2021-12-15T15:45:28+00:00", "releaseTime": "2014-03-07T13:49:55+00:00"}, {"id": "14w10b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/90e924daa64f7908e69d4c7c4451599d2592f9d3/14w10b.json", "time": "2021-12-15T15:45:27+00:00", "releaseTime": "2014-03-06T16:25:39+00:00"}, {"id": "14w10a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/643d852decb88d011fab20df4cb14ed100362f0f/14w10a.json", "time": "2021-12-15T15:45:27+00:00", "releaseTime": "2014-03-06T14:23:04+00:00"}, {"id": "14w08a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c04557fe5dcfe1c2e302265b677549384008c14/14w08a.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-26T17:00:00+00:00"}, {"id": "1.7.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4afb628501a6a206b80a47ab4f29ea6b98caac90/1.7.5.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2014-02-26T09:22:17+00:00"}, {"id": "14w07a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/23dbadcc03150f2e3447d528f7f546ba8fd62246/14w07a.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-14T11:05:07+00:00"}, {"id": "14w06b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2c381742bc9cadc33fbc0a823b4fb734aad78533/14w06b.json", "time": "2021-12-15T15:45:26+00:00", "releaseTime": "2014-02-06T17:30:42+00:00"}, {"id": "14w06a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a59d77f95afc36421554f9fee3a930d6cca9209d/14w06a.json", "time": "2021-12-15T15:45:25+00:00", "releaseTime": "2014-02-06T14:30:17+00:00"}, {"id": "14w05b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/0b0f0bb2354640bfeeafe8611a8cfb53e9c3edff/14w05b.json", "time": "2021-12-15T15:45:25+00:00", "releaseTime": "2014-01-31T14:05:50+00:00"}, {"id": "14w05a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e9d4eb5a505a84dda9c36ea32f7ebb998a60a97f/14w05a.json", "time": "2021-12-15T15:45:24+00:00", "releaseTime": "2014-01-30T15:32:41+00:00"}, {"id": "14w04b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/62524cf35e56e365a5dff36353fb77a38ff35269/14w04b.json", "time": "2021-12-15T15:45:24+00:00", "releaseTime": "2014-01-24T15:48:46+00:00"}, {"id": "14w04a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/41307eaf3c2bf6b526986d8bb2fd698099298a2f/14w04a.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-23T15:26:13+00:00"}, {"id": "14w03b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4c3bab6bfb32daed6b30d298818e4b8bb37c4bb2/14w03b.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-16T16:36:19+00:00"}, {"id": "14w03a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/73f7ed186402ac8927ce415507cfa70b6aa5483f/14w03a.json", "time": "2021-12-15T15:45:23+00:00", "releaseTime": "2014-01-16T14:45:13+00:00"}, {"id": "14w02c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e7c40fe6754d5912ebc119a53e752c9024130e3f/14w02c.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-10T15:42:36+00:00"}, {"id": "14w02b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/25f758976bfd97d533af7e38680db8983d2cf82d/14w02b.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-09T15:45:55+00:00"}, {"id": "14w02a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/1348f531ae51631ea0ee1e467348440c5f93dcc2/14w02a.json", "time": "2021-12-15T15:45:22+00:00", "releaseTime": "2014-01-09T14:44:41+00:00"}, {"id": "1.7.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5db9d89cb6b89573384f324aa585b4c99525b37a/1.7.4.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2013-12-09T12:28:10+00:00"}, {"id": "1.7.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/cd133f90b7e339c50b3cdce64188a51469c6a128/1.7.3.json", "time": "2021-12-15T15:44:06+00:00", "releaseTime": "2013-12-06T13:55:34+00:00"}, {"id": "13w49a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/82cf56aabfbca3a1f1d13b4404050d9877b5a67e/13w49a.json", "time": "2021-12-15T15:45:21+00:00", "releaseTime": "2013-12-05T14:34:41+00:00"}, {"id": "13w48b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/55543db98b2df3a986c99d8cdc8278a70493eb4a/13w48b.json", "time": "2021-12-15T15:45:21+00:00", "releaseTime": "2013-11-26T18:36:08+00:00"}, {"id": "13w48a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/329f28adfb5ba0d6d81ceae27209e1eb97c4ef88/13w48a.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-25T16:53:39+00:00"}, {"id": "13w47e", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/81b30470c108a201cfb2dfd548dc0a52afa20a0a/13w47e.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-22T15:16:38+00:00"}, {"id": "13w47d", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ccf62018b2e8aa9628dab2353ed85a4239368f63/13w47d.json", "time": "2021-12-15T15:45:20+00:00", "releaseTime": "2013-11-22T13:51:15+00:00"}, {"id": "13w47c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ca7616ffa259c99e2350f010555eba54e54b4dd0/13w47c.json", "time": "2021-12-15T15:45:19+00:00", "releaseTime": "2013-11-21T17:10:33+00:00"}, {"id": "13w47b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ac1dc3c3a7d33aa47e97c7b3d419510696f57cde/13w47b.json", "time": "2021-12-15T15:45:19+00:00", "releaseTime": "2013-11-21T16:57:41+00:00"}, {"id": "13w47a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/9bb727f63e3af146df7cbd47a6a3332d31550855/13w47a.json", "time": "2021-12-15T15:45:18+00:00", "releaseTime": "2013-11-21T15:59:58+00:00"}, {"id": "1.7.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c2e8ecbf355760a74c93d7210767fa043d53f27c/1.7.2.json", "time": "2021-12-15T15:44:05+00:00", "releaseTime": "2013-10-25T13:00:00+00:00"}, {"id": "1.7.1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/744a42505862bea0bdd5da55ff06e09536f36d66/1.7.1.json", "time": "2021-12-15T15:45:00+00:00", "releaseTime": "2013-10-23T12:01:07+00:00"}, {"id": "1.7", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/7a5aa5f3e3fba022efe0752660a5c7cd2dff2d16/1.7.json", "time": "2021-12-15T15:45:03+00:00", "releaseTime": "2013-10-22T15:04:05+00:00"}, {"id": "13w43a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d7c2d81bf137c9e1a84576241767de08909c29fd/13w43a.json", "time": "2021-12-15T15:45:18+00:00", "releaseTime": "2013-10-21T16:34:47+00:00"}, {"id": "13w42b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/ce863b81986e6acce2983be040d2071711f6403c/13w42b.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-18T16:34:08+00:00"}, {"id": "13w42a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8cef2eee33892b62b3a28559246c750c3487dd8f/13w42a.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-17T18:33:05+00:00"}, {"id": "13w41b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/015456cd8b5c68d0076536d4e867111cd36b541a/13w41b.json", "time": "2021-12-15T15:45:17+00:00", "releaseTime": "2013-10-11T15:09:17+00:00"}, {"id": "13w41a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/43622c17e011441b8b63b0a27d79887c2f7516aa/13w41a.json", "time": "2021-12-15T15:45:16+00:00", "releaseTime": "2013-10-10T14:21:43+00:00"}, {"id": "13w39b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b2d2f0b1fd23b08f8d2fb9beff39f173a2d65160/13w39b.json", "time": "2021-12-13T14:56:26+00:00", "releaseTime": "2013-09-27T12:15:58+00:00"}, {"id": "13w39a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/61b88e8c311ed6a647ebf13d9934c6a1e3a94a75/13w39a.json", "time": "2021-12-13T14:56:26+00:00", "releaseTime": "2013-09-26T15:11:19+00:00"}, {"id": "13w38c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/a9e87e0699f19fea280878f5deb744c5d5d3ccb1/13w38c.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-20T15:11:34+00:00"}, {"id": "13w38b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/6f426be1993b140ab5d10459c91eb1f542d58c82/13w38b.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-20T13:45:40+00:00"}, {"id": "13w38a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e6dc1d9f9c8efeec67af438d5bf61be082f6e8a4/13w38a.json", "time": "2019-06-28T07:08:09+00:00", "releaseTime": "2013-09-19T16:34:21+00:00"}, {"id": "1.6.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/b71bae449192fbbe1582ff32fb3765edf0b9b0a8/1.6.4.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-09-19T15:52:37+00:00"}, {"id": "13w37b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b8d28154ee056af6af3c8c37815418fe0e9f34f8/13w37b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-13T10:54:41+00:00"}, {"id": "1.6.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/903d6ba1bc87c301d88fa418f8b33446201c7d4e/1.6.3.json", "time": "2019-06-28T07:07:47+00:00", "releaseTime": "2013-09-13T10:54:41+00:00"}, {"id": "13w37a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2f33c613a4bb81ef5f56be03a8f578208ada382a/13w37a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-12T14:23:14+00:00"}, {"id": "13w36b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/4a538e23057a596fc8c7e04d8a7738d866467f51/13w36b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-06T12:31:58+00:00"}, {"id": "13w36a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bc915c4dc167dfba92fcc0ae3aa051ae0f9f089b/13w36a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-09-05T13:05:40+00:00"}, {"id": "1.6.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c0729761bf65dc58138ce508645dba1442fa78b8/1.6.2.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-07-05T13:09:02+00:00"}, {"id": "1.6.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7fd8e0c76f62813eb0465e31bb74b160c01472d6/1.6.1.json", "time": "2019-06-28T07:06:16+00:00", "releaseTime": "2013-06-28T14:48:41+00:00"}, {"id": "1.6", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/20116297638f7c70cd046e25a6ac90fee4cae61a/1.6.json", "time": "2019-06-28T07:07:47+00:00", "releaseTime": "2013-06-25T13:08:56+00:00"}, {"id": "13w26a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b349702aef5e3adaebec30c79338300423943930/13w26a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-24T16:06:06+00:00"}, {"id": "13w25c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/934788bc580ef0a19725ee5bd31f02a0b866e0bf/13w25c.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-20T15:23:37+00:00"}, {"id": "13w25b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8b7870ddd0d0b38779479ad782d65ad80e688cf7/13w25b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-18T15:13:27+00:00"}, {"id": "13w25a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/65c0e5fff89b477ac6f8ddb336f0e718d525d311/13w25a.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-17T14:08:06+00:00"}, {"id": "13w24b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/e1294b52803771cfb06767c4c40dced70475cb25/13w24b.json", "time": "2019-06-28T07:08:08+00:00", "releaseTime": "2013-06-14T12:19:13+00:00"}, {"id": "13w24a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/74666ab85cc5539f08aec638eabd63a552ed4125/13w24a.json", "time": "2019-06-28T07:08:07+00:00", "releaseTime": "2013-06-13T15:32:23+00:00"}, {"id": "13w23b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/f17829f3e412b9b727437ec9f8433bdfc6c7b9a7/13w23b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-06-08T00:32:01+00:00"}, {"id": "13w23a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8234057ec006c5bb62a28ca4f6787323968438e6/13w23a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-06-07T16:04:20+00:00"}, {"id": "13w22a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/597a15f27cc0913a77ff7e1e9c62c3affc627fe8/13w22a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-30T14:38:40+00:00"}, {"id": "13w21b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/98f66e115fbab6dcd05f2e5e0a23dd78c0a5e7a3/13w21b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-27T08:50:42+00:00"}, {"id": "13w21a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/aebfb9b82f0712de3e6ef78bc2cafe5dcb742130/13w21a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-23T15:38:28+00:00"}, {"id": "13w19a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/8bb131515d6b483baa76f1b42ea5a1018d11bb22/13w19a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-10T14:48:02+00:00"}, {"id": "13w18c", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/93738bf22f33d9ba5e2980bec849b097a5050c8f/13w18c.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-03T09:19:35+00:00"}, {"id": "13w18b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/2cab9aae9eef3558d6abe8ac2708ea19322a1594/13w18b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-02T17:12:25+00:00"}, {"id": "13w18a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/79bef69b5542046e705a57784cc63574748effe2/13w18a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-05-02T15:45:59+00:00"}, {"id": "13w17a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d21e61b16b0e446b5062e8ee72c9d0ff3bfbd155/13w17a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-25T15:50:00+00:00"}, {"id": "1.5.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/924a2dcd8bdc31f8e9d36229811c298b3537bbc7/1.5.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-25T15:45:00+00:00"}, {"id": "13w16b", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/5f4e1c860d1c79d346f3e4574615ca1fd9da01ed/13w16b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-23T21:51:22+00:00"}, {"id": "13w16a", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/c355e2ee0495dfcc8ec9806955c8d2993179b40c/13w16a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-04-21T12:49:30+00:00"}, {"id": "1.5.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/3c514114d9c2a3ea78f72c4f9fb4eeb56747135a/1.5.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-03-20T10:00:00+00:00"}, {"id": "1.5", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/bb882e3d97bee9c5b5e486da04b85f977e770150/1.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2013-03-06T22:00:00+00:00"}, {"id": "1.4.7", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/7aa8e9aeacf4e1076bfd81c096f78de9b883ebe6/1.4.7.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-27T22:00:00+00:00"}, {"id": "1.4.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/d64a902a48a6a618f9a0a82c183be454e7a1f23b/1.4.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-19T22:00:00+00:00"}, {"id": "1.4.6", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/09832797138da79745ade734da775f44c254066b/1.4.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-19T22:00:00+00:00"}, {"id": "1.4.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/f7de827181036b09444abb6b64c1fcc663b8e98e/1.4.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-12-13T22:00:00+00:00"}, {"id": "1.4.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/3ab416ac64dac1a6123402a8aabd8ef3caeef087/1.4.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-30T22:00:00+00:00"}, {"id": "1.4.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/2fd77aa19aba2860bbf4c1fd9f84f232703dd287/1.4.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-24T22:00:00+00:00"}, {"id": "1.4.1", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/14c3ba517b5baabdfc61b60eb49d9aa7da012906/1.4.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-22T22:00:00+00:00"}, {"id": "1.4", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/d979a4671611bf8704c0a2a0cf09964ca25eefd7/1.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-11-18T22:00:00+00:00"}, {"id": "1.3.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/598eedd6f67db4aefbae6ed119029e3d7373ecf5/1.3.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-08-15T22:00:00+00:00"}, {"id": "1.3.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/637aa8466c4dac462b88682caaf753290f37798f/1.3.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-07-31T22:00:00+00:00"}, {"id": "1.3", "type": "snapshot", "url": "https://piston-meta.mojang.com/v1/packages/b384219c6d4879e56b92eea01a0d986e20d55dea/1.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-07-25T22:00:00+00:00"}, {"id": "1.2.5", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/5158765caf1ca14958cb6c45d52c8e09ed9b046c/1.2.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-29T22:00:00+00:00"}, {"id": "1.2.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/69a67fcf11ed1298c6b43a00d64461908a318749/1.2.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-21T22:00:00+00:00"}, {"id": "1.2.3", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/2f7eaec33e3017a413c677eefa59df2e5919e536/1.2.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-03-01T22:00:00+00:00"}, {"id": "1.2.2", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/4e2e449ba0b8b5da7055f0decea1a3257b282f17/1.2.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-02-29T22:00:01+00:00"}, {"id": "1.2.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/1a45c035ebb969dbac4e0c39582e974ad7f74a9e/1.2.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-02-29T22:00:00+00:00"}, {"id": "1.1", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/c0cb9368dbdbb1e8dbcb9363a28d8da74cf6fc5e/1.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2012-01-11T22:00:00+00:00"}, {"id": "1.0", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/75062586b830dd5160f13f1c9130eb365e01f1b9/1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-11-17T22:00:00+00:00"}, {"id": "b1.8.1", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/440e3b845c3991492a3d0c5f0ccfda78ab90d9b6/b1.8.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-09-18T22:00:00+00:00"}, {"id": "b1.8", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e5b20b1a15daa60effefd86da94b118086214e8b/b1.8.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-09-14T22:00:00+00:00"}, {"id": "b1.7.3", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/44f6969326bd45aa00dcd3c4ca3a7c05ebb24c04/b1.7.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-07-07T22:00:00+00:00"}, {"id": "b1.7.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/00f5aff7cbf6ce109ecf2c8e1a5dc1bcbadb5680/b1.7.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-06-30T22:00:00+00:00"}, {"id": "b1.7", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/f3a725f9f27e90f2a2622ad82c182c1a1178572f/b1.7.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-06-29T22:00:00+00:00"}, {"id": "b1.6.6", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/16cb1aa6f7c9c3953fa2f53abd8f57558efd3e71/b1.6.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-30T22:00:00+00:00"}, {"id": "b1.6.5", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/eae37053bb49092ce93d40e762f4c3a573ee2880/b1.6.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-27T22:00:00+00:00"}, {"id": "b1.6.4", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/ac98b5e9e44038f3a311736111c16fc30006e1fd/b1.6.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:04+00:00"}, {"id": "b1.6.3", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/87785f4386cd308defcc876fb6d62bf3681be6bc/b1.6.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:03+00:00"}, {"id": "b1.6.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/23f8e2f1634d1db8875521d8e0d3fb5340623fd2/b1.6.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:02+00:00"}, {"id": "b1.6.1", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/1958ecd7b20c5a2849b4e1e7a9921891e49178da/b1.6.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:01+00:00"}, {"id": "b1.6", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/7442961ad4f23c60787ab2a3c97a5037c40a92f2/b1.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-05-25T22:00:00+00:00"}, {"id": "b1.5_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/0f0b24408e6ca445e9c4a3ea2a676f71f96f5d35/b1.5_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-19T22:00:00+00:00"}, {"id": "b1.5", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/3fa704bd73444368f04351d6d4add8a3eead9b4e/b1.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-18T22:00:00+00:00"}, {"id": "b1.4_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/d47fcb0e4d9b7169fbb26c0bce56ed2082c3bb1d/b1.4_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-04-04T22:00:00+00:00"}, {"id": "b1.4", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/2cf34d1caca87b68ee104e348480e38f45eb7621/b1.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-03-30T22:00:00+00:00"}, {"id": "b1.3_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/a0e0a27d8f7d4c23b6441e473a3e44b45a958284/b1.3_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-02-22T22:00:00+00:00"}, {"id": "b1.3b", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/16ffb877701f7b41c6f27fb09def7a8e5d667df1/b1.3b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-02-21T22:00:00+00:00"}, {"id": "b1.2_02", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/5352763f0a944e7940e718fd66aae03bc57dc2ef/b1.2_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-20T22:00:00+00:00"}, {"id": "b1.2_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/0fea71dc8c4199581753d8ecb3ae69039a302340/b1.2_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-13T22:00:00+00:00"}, {"id": "b1.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/67bcdada56d272e4508ecb8e35827ffa4a4c18d1/b1.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2011-01-12T22:00:00+00:00"}, {"id": "b1.1_02", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/01042e0ecdd894894ebc6f45300ae306010c154f/b1.1_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-21T22:00:01+00:00"}, {"id": "b1.1_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/1bab185d888a549a3fcb4e528557caa3e7884290/b1.1_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-21T22:00:00+00:00"}, {"id": "b1.0.2", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e0a317286013bdd8e6de6da5e709422af61597d8/b1.0.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-20T22:00:00+00:00"}, {"id": "b1.0_01", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/d3eec813918ee87826f7bca65dd1558b33841798/b1.0_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-19T22:00:01+00:00"}, {"id": "b1.0", "type": "old_beta", "url": "https://piston-meta.mojang.com/v1/packages/e5348beaf3d3c366c522b1c70044f8b7be168b02/b1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-19T22:00:00+00:00"}, {"id": "a1.2.6", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/1c888e4d8aed380db25aeb3835f5918297bb5e3a/a1.2.6.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-12-02T22:00:00+00:00"}, {"id": "a1.2.5", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a925f00e3f7f1bde95240152bef4d15f36971394/a1.2.5.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-30T22:00:00+00:00"}, {"id": "a1.2.4_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/64d6a749cb24ddd8a27546f9555ac7c2853c5943/a1.2.4_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-29T22:00:00+00:00"}, {"id": "a1.2.3_04", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/59c7719b82023e5b71e334a69d3c13137014a2bc/a1.2.3_04.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-25T22:00:00+00:00"}, {"id": "a1.2.3_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b22eadebb4bfb63cdc42e9811da8fd2234eaaa6e/a1.2.3_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-24T22:00:00+00:00"}, {"id": "a1.2.3_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/da7b740e70324be7e189c65f1f834f0a30c0588f/a1.2.3_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-23T22:00:01+00:00"}, {"id": "a1.2.3", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/6c059b7bdb14b29c8d5cca2b250472962fe3b0b1/a1.2.3.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-23T22:00:00+00:00"}, {"id": "a1.2.2b", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/2aba3e114e0a7190ea3dff1553787d5044e1c420/a1.2.2b.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-09T22:00:01+00:00"}, {"id": "a1.2.2a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/03cde2f4856b59adab177ab10673b6d951bfd7c8/a1.2.2a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-09T22:00:00+00:00"}, {"id": "a1.2.1_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/f20e3a7757a92e1d429dcf45fa545cc84a9699da/a1.2.1_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-04T22:00:01+00:00"}, {"id": "a1.2.1", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/05773451d61d92c0e8fa73cdb2e4c0fd23c4e1d4/a1.2.1.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-04T22:00:00+00:00"}, {"id": "a1.2.0_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/57ff567f186230b303af60241fbce283dad44bb2/a1.2.0_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-11-03T22:00:00+00:00"}, {"id": "a1.2.0_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/bed2a50ed2f9ce6a920394916ea66ce41b09b166/a1.2.0_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-10-30T22:00:00+00:00"}, {"id": "a1.2.0", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/abc94a77d94b94042d01476ee0c2e4b8c4eb08e1/a1.2.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-10-29T22:00:00+00:00"}, {"id": "a1.1.2_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/8730e3503e352fc03cca8a6c6ee614a17d66d8c6/a1.1.2_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-22T22:00:00+00:00"}, {"id": "a1.1.2", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b515b79ecaba79a0b5a4a5a03bf2b077f6c53334/a1.1.2.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-19T22:00:00+00:00"}, {"id": "a1.1.0", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/6054271bd0a275ed3030be97b6e9f81977abdf5d/a1.1.0.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-09-12T22:00:00+00:00"}, {"id": "a1.0.17_04", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/fc2b6231e945558df29b6ed12522758860c511ab/a1.0.17_04.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-22T22:00:00+00:00"}, {"id": "a1.0.17_02", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a261074f38c555d9770ba7f1a4cae9351af19d73/a1.0.17_02.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-19T22:00:00+00:00"}, {"id": "a1.0.16", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/205ed38d0d1e135b467702a746e64ed2623b4679/a1.0.16.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-11T22:00:00+00:00"}, {"id": "a1.0.15", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/05a0fdef0a0d62273290eb1c145ad10501941f75/a1.0.15.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-08-03T22:00:00+00:00"}, {"id": "a1.0.14", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/5af21fa2467997914940beb39279f0d545a48335/a1.0.14.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-29T22:00:00+00:00"}, {"id": "a1.0.11", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/b98235f44e6422741df02c781cf0016fce1c4a84/a1.0.11.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-22T22:00:00+00:00"}, {"id": "a1.0.5_01", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/4adaca651189d96ea9d7aa031038ab7b7d3fd807/a1.0.5_01.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-12T22:00:00+00:00"}, {"id": "a1.0.4", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/16c818f17af9e8560589f9e3cae57f0931011c25/a1.0.4.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-07-08T22:00:00+00:00"}, {"id": "inf-20100618", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/51a5c512af384d3d2a79a3efb93f7d4b9a1c6ec2/inf-20100618.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2010-06-15T22:00:00+00:00"}, {"id": "c0.30_01c", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/9392d3f635770ac4dfd3f8c9444f319b00b08945/c0.30_01c.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-12-21T22:00:00+00:00"}, {"id": "c0.0.13a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/5ef11c52e02c27f40924ea0c323efee716de568d/c0.0.13a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-30T22:00:00+00:00"}, {"id": "c0.0.13a_03", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/21122dee2365147033ef6214702098cf7b2549bd/c0.0.13a_03.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-21T22:00:00+00:00"}, {"id": "c0.0.11a", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/2339fd5639204675b9f18dff6055dae83fc91c7e/c0.0.11a.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-16T22:00:00+00:00"}, {"id": "rd-161348", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/f22a3882d124ef4468f6eb50b12836c53286e18a/rd-161348.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-16T11:48:00+00:00"}, {"id": "rd-160052", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/0cac2ceab812568826c6e5aeb4cf980397550479/rd-160052.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-15T22:52:00+00:00"}, {"id": "rd-20090515", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/a3165080e2b0bf20519eac5f55ee841f3491e277/rd-20090515.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-14T22:00:00+00:00"}, {"id": "rd-132328", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/4ec49ff663f96e78a5cf0d9538adb9d1358fc485/rd-132328.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-13T21:28:00+00:00"}, {"id": "rd-132211", "type": "old_alpha", "url": "https://piston-meta.mojang.com/v1/packages/d090f5d3766a28425316473d9ab6c37234d48b02/rd-132211.json", "time": "2022-03-10T09:51:38+00:00", "releaseTime": "2009-05-13T20:11:00+00:00"}]} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml similarity index 62% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml index 6ae32dc3e..f8f72a385 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest-new.xml @@ -3,8 +3,8 @@ <groupId>net.neoforged</groupId> <artifactId>neoforge</artifactId> <versioning> - <latest>20.4.173</latest> - <release>20.4.173</release> + <latest>20.4.235</latest> + <release>20.4.235</release> <versions> <version>20.2.3-beta</version> <version>20.2.4-beta</version> @@ -254,7 +254,163 @@ <version>20.4.171</version> <version>20.4.172</version> <version>20.4.173</version> + <version>20.4.174</version> + <version>20.4.175</version> + <version>20.4.176</version> + <version>20.4.177</version> + <version>20.4.178</version> + <version>20.4.179</version> + <version>20.4.180</version> + <version>20.4.181</version> + <version>20.4.182</version> + <version>20.4.183</version> + <version>20.4.184</version> + <version>20.4.185</version> + <version>20.4.186</version> + <version>20.4.187</version> + <version>20.4.188</version> + <version>20.4.189</version> + <version>20.4.190</version> + <version>20.4.191</version> + <version>20.4.192</version> + <version>20.4.193</version> + <version>20.4.194</version> + <version>20.4.195</version> + <version>20.4.196</version> + <version>20.4.197</version> + <version>20.4.198</version> + <version>20.4.199</version> + <version>20.4.200</version> + <version>20.4.201</version> + <version>20.4.202</version> + <version>20.4.203</version> + <version>20.4.204</version> + <version>20.4.205</version> + <version>20.4.206</version> + <version>20.4.207</version> + <version>20.4.208</version> + <version>20.4.209</version> + <version>20.4.210</version> + <version>20.4.211</version> + <version>20.4.212</version> + <version>20.4.213</version> + <version>20.4.214</version> + <version>20.4.215</version> + <version>20.4.216</version> + <version>20.4.217</version> + <version>20.4.218</version> + <version>20.4.219</version> + <version>20.4.221</version> + <version>20.4.222</version> + <version>20.4.223</version> + <version>20.4.224</version> + <version>20.4.225</version> + <version>20.4.226</version> + <version>20.4.227</version> + <version>20.4.228</version> + <version>20.4.229</version> + <version>20.4.230</version> + <version>20.4.231</version> + <version>20.4.232</version> + <version>20.5.0-beta</version> + <version>20.5.1-beta</version> + <version>20.5.2-beta</version> + <version>20.5.3-beta</version> + <version>20.4.233</version> + <version>20.5.4-beta</version> + <version>20.5.5-beta</version> + <version>20.5.6-beta</version> + <version>20.5.7-beta</version> + <version>20.5.8-beta</version> + <version>20.5.9-beta</version> + <version>20.5.10-beta</version> + <version>20.5.11-beta</version> + <version>20.5.12-beta</version> + <version>20.5.13-beta</version> + <version>20.5.14-beta</version> + <version>20.5.15-beta</version> + <version>20.5.16-beta</version> + <version>20.5.17-beta</version> + <version>20.5.18-beta</version> + <version>20.5.19-beta</version> + <version>20.5.20-beta</version> + <version>20.5.21-beta</version> + <version>20.6.1-beta</version> + <version>20.6.2-beta</version> + <version>20.6.3-beta</version> + <version>20.6.4-beta</version> + <version>20.4.234</version> + <version>20.6.5-beta</version> + <version>20.6.6-beta</version> + <version>20.6.7-beta</version> + <version>20.6.8-beta</version> + <version>20.6.9-beta</version> + <version>20.6.10-beta</version> + <version>20.6.11-beta</version> + <version>20.6.12-beta</version> + <version>20.6.13-beta</version> + <version>20.6.14-beta</version> + <version>20.6.15-beta</version> + <version>20.6.16-beta</version> + <version>20.6.17-beta</version> + <version>20.6.18-beta</version> + <version>20.6.19-beta</version> + <version>20.6.20-beta</version> + <version>20.6.21-beta</version> + <version>20.6.22-beta</version> + <version>20.6.23-beta</version> + <version>20.6.24-beta</version> + <version>20.6.25-beta</version> + <version>20.6.26-beta</version> + <version>20.6.27-beta</version> + <version>20.6.28-beta</version> + <version>20.6.30-beta</version> + <version>20.6.29-beta</version> + <version>20.6.31-beta</version> + <version>20.6.32-beta</version> + <version>20.6.39-beta</version> + <version>20.6.40-beta</version> + <version>20.6.41-beta</version> + <version>20.6.42-beta</version> + <version>20.6.43-beta</version> + <version>20.6.44-beta</version> + <version>20.6.47-beta</version> + <version>20.6.45-beta</version> + <version>20.6.46-beta</version> + <version>20.6.48-beta</version> + <version>20.6.49-beta</version> + <version>20.6.50-beta</version> + <version>20.6.51-beta</version> + <version>20.6.52-beta</version> + <version>20.6.53-beta</version> + <version>20.6.55-beta</version> + <version>20.6.54-beta</version> + <version>20.6.56-beta</version> + <version>20.6.57-beta</version> + <version>20.6.59-beta</version> + <version>20.6.60-beta</version> + <version>20.6.61-beta</version> + <version>20.6.62-beta</version> + <version>20.6.63-beta</version> + <version>20.6.66-beta</version> + <version>20.6.68-beta</version> + <version>20.6.67-beta</version> + <version>20.6.69-beta</version> + <version>20.6.70-beta</version> + <version>20.6.71-beta</version> + <version>20.6.72-beta</version> + <version>20.6.73-beta</version> + <version>20.6.74-beta</version> + <version>20.6.75-beta</version> + <version>20.6.76-beta</version> + <version>20.6.77-beta</version> + <version>20.6.78-beta</version> + <version>20.6.80-beta</version> + <version>20.6.79-beta</version> + <version>20.6.81-beta</version> + <version>20.6.82-beta</version> + <version>20.4.235</version> </versions> - <lastUpdated>20240223175048</lastUpdated> + <lastUpdated>20240526110052</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest.xml similarity index 88% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest.xml index 2e0700a7a..079dcbb8f 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/neoforge-manifest.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/neoforge-manifest.xml @@ -3,8 +3,8 @@ <groupId>net.neoforged</groupId> <artifactId>forge</artifactId> <versioning> - <latest>1.20.1-47.1.100</latest> - <release>1.20.1-47.1.100</release> + <latest>1.20.1-47.1.105</latest> + <release>1.20.1-47.1.105</release> <versions> <version>1.20.1-47.1.7</version> <version>1.20.1-47.1.5</version> @@ -63,7 +63,12 @@ <version>1.20.1-47.1.98</version> <version>1.20.1-47.1.99</version> <version>1.20.1-47.1.100</version> + <version>1.20.1-47.1.101</version> + <version>1.20.1-47.1.102</version> + <version>1.20.1-47.1.103</version> + <version>1.20.1-47.1.104</version> + <version>1.20.1-47.1.105</version> </versions> - <lastUpdated>20240215064837</lastUpdated> + <lastUpdated>20240426004451</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml similarity index 85% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml index 7c071ec25..52226d312 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-installer-manifest.xml @@ -3,8 +3,8 @@ <groupId>org.quiltmc</groupId> <artifactId>quilt-installer</artifactId> <versioning> - <latest>0.9.1</latest> - <release>0.9.1</release> + <latest>0.9.2</latest> + <release>0.9.2</release> <versions> <version>0.3.1</version> <version>0.4.0</version> @@ -24,7 +24,8 @@ <version>0.8.2</version> <version>0.9.0</version> <version>0.9.1</version> + <version>0.9.2</version> </versions> - <lastUpdated>20230917163513</lastUpdated> + <lastUpdated>20240517020203</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-manifest.xml b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-manifest.xml similarity index 94% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-manifest.xml rename to serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-manifest.xml index dd88c92cd..57940962a 100644 --- a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/manifests/quilt-manifest.xml +++ b/serverpackcreator-api/src/main/resources/de/griefed/resources/manifests/quilt-manifest.xml @@ -3,8 +3,8 @@ <groupId>org.quiltmc</groupId> <artifactId>quilt-loader</artifactId> <versioning> - <latest>0.24.0-beta.8</latest> - <release>0.24.0-beta.8</release> + <latest>0.26.0-beta.3</latest> + <release>0.26.0-beta.3</release> <versions> <version>0.16.0-beta.1</version> <version>0.16.0-beta.2</version> @@ -237,7 +237,18 @@ <version>0.24.0-beta.6</version> <version>0.24.0-beta.7</version> <version>0.24.0-beta.8</version> + <version>0.24.0-beta.9</version> + <version>0.24.0</version> + <version>0.24.1-beta.1</version> + <version>0.25.0-beta.1</version> + <version>0.25.0-beta.2</version> + <version>0.25.0-beta.3</version> + <version>0.25.0-beta.4</version> + <version>0.25.0</version> + <version>0.26.0-beta.1</version> + <version>0.26.0-beta.2</version> + <version>0.26.0-beta.3</version> </versions> - <lastUpdated>20240220031414</lastUpdated> + <lastUpdated>20240525235859</lastUpdated> </versioning> </metadata> diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/default_template.ps1 b/serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/default_template.ps1 similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/default_template.ps1 rename to serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/default_template.ps1 diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/default_template.sh b/serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/default_template.sh similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/default_template.sh rename to serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/default_template.sh diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/server-icon.png b/serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/server-icon.png similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/server-icon.png rename to serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/server-icon.png diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/server.properties b/serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/server.properties similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/server_files/server.properties rename to serverpackcreator-api/src/main/resources/de/griefed/resources/server_files/server.properties diff --git a/serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/serverpackcreator.conf b/serverpackcreator-api/src/main/resources/de/griefed/resources/serverpackcreator.conf similarity index 100% rename from serverpackcreator-api/src/jvmMain/resources/de/griefed/resources/serverpackcreator.conf rename to serverpackcreator-api/src/main/resources/de/griefed/resources/serverpackcreator.conf diff --git a/serverpackcreator-api/src/main/resources/log4j2.component.properties b/serverpackcreator-api/src/main/resources/log4j2.component.properties new file mode 100644 index 000000000..e05136308 --- /dev/null +++ b/serverpackcreator-api/src/main/resources/log4j2.component.properties @@ -0,0 +1,3 @@ +log4j.configurationFile=log4j2.xml +log4j.formatMsgNoLookups=true +log4j.configurationFactory=de.griefed.serverpackcreator.api.ApiProperties \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmMain/resources/log4j2.xml b/serverpackcreator-api/src/main/resources/log4j2.xml similarity index 78% rename from serverpackcreator-api/src/jvmMain/resources/log4j2.xml rename to serverpackcreator-api/src/main/resources/log4j2.xml index 8b4cf88dd..8488dc9e3 100644 --- a/serverpackcreator-api/src/jvmMain/resources/log4j2.xml +++ b/serverpackcreator-api/src/main/resources/log4j2.xml @@ -35,22 +35,6 @@ <DefaultRolloverStrategy max="5" /> </RollingFile> - <RollingFile name="InstallerLogger" fileName="${log-path}/modloader_installer.log" filePattern="${archive}/modloader_installer.log.%i"> - <PatternLayout> - <Charset> - ${charset} - </Charset> - <Pattern> - ${pattern} - </Pattern> - </PatternLayout> - <Policies> - <OnStartupTriggeringPolicy /> - <SizeBasedTriggeringPolicy size="10 MB" /> - </Policies> - <DefaultRolloverStrategy max="5" /> - </RollingFile> - <RollingFile name="PluginsLogger" fileName="${log-path}/plugins.log" filePattern="${archive}/plugins.log.%i"> <PatternLayout> <Charset> @@ -79,10 +63,6 @@ <AppenderRef ref="ApplicationLogger" level="${log-level-spc}" /> </Logger> - <Logger name="InstallerLogger" level="ALL" additivity="false"> - <AppenderRef ref="InstallerLogger" level="${log-level-spc}" /> - </Logger> - <Logger name="PluginsLogger" level="ALL" additivity="false"> <AppenderRef ref="PluginsLogger" level="${log-level-spc}" /> </Logger> diff --git a/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties b/serverpackcreator-api/src/main/resources/serverpackcreator.properties similarity index 99% rename from serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties rename to serverpackcreator-api/src/main/resources/serverpackcreator.properties index 887eeb16a..8801818a5 100644 --- a/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties +++ b/serverpackcreator-api/src/main/resources/serverpackcreator.properties @@ -1,7 +1,7 @@ # Supported languages: [en_us, uk_ua, de_de] de.griefed.serverpackcreator.versioncheck.prerelease=false de.griefed.serverpackcreator.language=en_GB -de.griefed.serverpackcreator.configuration.fallback.updateurl=https://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/jvmMain/resources/serverpackcreator.properties +de.griefed.serverpackcreator.configuration.fallback.updateurl=https://raw.githubusercontent.com/Griefed/ServerPackCreator/main/serverpackcreator-api/src/main/resources/serverpackcreator.properties de.griefed.serverpackcreator.configuration.fallbackmodslist=3dskinlayers-,Absolutely-Not-A-Zoom-Mod-,AdvancedChat-,AdvancedChatCore-,AdvancedChatHUD-,AdvancedCompas-,Ambience,AmbientEnvironment-,AmbientSounds_,AnimaticaReforged-,AreYouBlind-,Armor Status HUD-,ArmorSoundTweak-,BH-Menu-,Batty's Coordinates PLUS Mod,BetterAdvancements-,BetterAnimationsCollection-,BetterModsButton-,BetterDarkMode-,BetterF3-,BetterFog-,BetterFoliage-,BetterPingDisplay-,BetterPlacement-,BetterTaskbar-,BetterThirdPerson,BetterTitleScreen-,Blur-,BorderlessWindow-,CTM-,ChunkAnimator-,ClientTweaks_,CompletionistsIndex-,Controller Support-,Controlling-,CraftPresence-,CullLessLeaves-Reforged-,CustomCursorMod-,CustomMainMenu-,DefaultOptions_,DefaultSettings-,DeleteWorldsToTrash-,DetailArmorBar-,Ding-,DistantHorizons-,DripSounds-,Durability101-,DurabilityNotifier-,DynamicSurroundings-,DynamicSurroundingsHuds-,EasyLAN-,EffectsLeft-,EiraMoticons_,EnchantmentDescriptions-,EnhancedVisuals_,EquipmentCompare-,EuphoriaPatcher-,FPS-Monitor-,FabricCustomCursorMod-,FadingNightVision-,Fallingleaves-,FancySpawnEggs,FancyVideo-API-,farsight-,FirstPersonMod,FogTweaker-,ForgeCustomCursorMod-,FpsReducer-,FpsReducer2-,FullscreenWindowed-,GameMenuModOption-,HealthOverlay-,HeldItemTooltips-,HorseStatsMod-,ImmediatelyFastReforged-,InventoryEssentials_,InventoryHud_[1.17.1].forge-,InventorySpam-,InventoryTweaks-,ItemBorders-,ItemLocks-,ItemPhysicLite_,ItemStitchingFix-,JBRA-Client-,JustEnoughCalculation-,JustEnoughEffects-,JustEnoughProfessions-,LeaveMyBarsAlone-,LLOverlayReloaded-,LOTRDRP-,LegendaryTooltips,LegendaryTooltips-,LightOverlay-,MinecraftCapes,MineMenu-,MoBends,ModernUI-,MouseTweaks-,MyServerIsCompatible-,Neat,Neat-,NekosEnchantedBooks-,NoAutoJump-,NoFog-,Notes-,NotifMod-,OldJavaWarning-,OptiFine,OptiFine_,OptiForge,OptiForge-,OverflowingBars-,PackMenu-,PackModeMenu-,PickUpNotifier-,Ping-,PingHUD-,PresenceFootsteps-,RPG-HUD-,ReAuth-,Reforgium-,ResourceLoader-,ResourcePackOrganizer,Ryoamiclights-,ShoulderSurfing-,ShulkerTooltip-,SimpleDiscordRichPresence-,SimpleWorldTimer-,SoundFilters-,SpawnerFix-,StylishEffects-,TextruesRubidiumOptions-,TRansliterationLib-,TipTheScales-,Tips-,Toast Control-,Toast-Control-,ToastControl-,TravelersTitles-,VoidFog-,VR-Combat_,WindowedFullscreen-,WorldNameRandomizer-,YeetusExperimentus-,YungsMenuTweaks-,[1.12.2]DamageIndicatorsMod-,[1.12.2]bspkrscore-,antighost-,anviltooltipmod-,appleskin-,armorchroma-,armorpointspp-,auditory-,authme-,auto-reconnect-,autojoin-,autoreconnect-,axolotl-item-fix-,backtools-,bannerunlimited-,beenfo-1.19-,better-recipe-book-,betterbiomeblend-,bhmenu-,blur-,borderless-mining-,cat_jam-,catalogue-,charmonium-,chat_heads-,cherishedworlds-,cirback-1.0-,classicbar-,clickadv-,clienttweaks-,combat_music-,connectedness-,controllable-,cullleaves-,cullparticles-,custom-crosshair-mod-,customdiscordrpc-,darkness-,dashloader-,defaultoptions-,desiredservers-,discordrpc-,drippyloadingscreen-,drippyloadingscreen_,durabilitytooltip-,dynamic-fps-,dynamic-music-,dynamiclights-,dynmus-,effective-,eggtab-,eguilib-,eiramoticons-,embeddium-,enchantment-lore-,entity-texture-features-,entityculling-,essential_,exhaustedstamina-,extremesoundmuffler-,fabricemotes-,fancymenu_,fancymenu_video_extension,fast-ip-ping-,flickerfix-,fm_audio_extension_,forgemod_VoxelMap-,freelook-,galacticraft-rpc-,gamestagesviewer-,gpumemleakfix-,grid-,helium-,hiddenrecipebook_,hiddenrecipebook-,infinitemusic-,inventoryprofiles,invtweaks-,itemzoom,itlt-,jeed-,jehc-,jeiintegration_,jumpoverfences-,just-enough-harvestcraft-,justenoughbeacons-,justenoughdrags-,justzoom_,keymap-,keywizard-,lazurite-,lazydfu-,lib39-,light-overlay-,lightfallclient-,lightspeed-,loadmyresources_,lock_minecart_view-,lootbeams-,lwl-,macos-input-fixes-,magnesium_extras-,maptooltip-,massunbind,mcbindtype-,mcwifipnp-,medievalmusic-,memoryusagescreen-,mightyarchitect-,mindful-eating-,minetogether-,mobplusplus-,modcredits-,modernworldcreation_,modnametooltip-,modnametooltip_,moreoverlays-,mousewheelie-,movement-vision-,multihotbar-,music-duration-reducer-,musicdr-,neiRecipeHandlers-,ngrok-lan-expose-mod-,no_nv_flash-,nopotionshift_,notenoughanimations-,oculus-,ornaments-,overloadedarmorbar-,panorama-,paperdoll-,physics-mod-,phosphor-,preciseblockplacing-,radon-,realm-of-lost-souls-,rebind_narrator-,rebind-narrator-,rebindnarrator-,rebrand-,reforgium-,replanter-,rrls-,rubidium-,rubidium_extras-,screenshot-to-clipboard-,servercountryflags-,shutupexperimentalsettings-,shutupmodelloader-,signtools-,simple-rpc-,simpleautorun-,smartcursor-,smoothboot-,smoothfocus-,sodium-fabric-,sounddeviceoptions-,soundreloader-,spoticraft-,skinlayers3d-forge,textrues_embeddium_options-,tconplanner-,timestamps-,tooltipscroller-,torchoptimizer-,torohealth-,totaldarkness,toughnessbar-,watermedia-,whats-that-slot-forge-,wisla-,xenon-,xlifeheartcolors-,yisthereautojump- de.griefed.serverpackcreator.configuration.modswhitelist=Ping-Wheel- de.griefed.serverpackcreator.configuration.hastebinserver=https://haste.zneix.eu/documents @@ -49,4 +49,4 @@ spring.datasource.tomcat.min-idle=8 spring.transaction.default-timeout=3600 spring.servlet.multipart.max-file-size=5000MB spring.servlet.multipart.max-request-size=5000MB -spring.jpa.properties.hibernate.jdbc.use_streams_for_binary=true +spring.jpa.properties.hibernate.jdbc.use_streams_for_binary=true \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt similarity index 90% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt index a99ea729b..1733ade85 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPluginsTest.kt @@ -15,13 +15,13 @@ import javax.xml.parsers.ParserConfigurationException class ApiPluginsTest { private val apiPlugins: ApiPlugins = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).apiPlugins + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).apiPlugins @Test @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) fun test() { try { - File("src/jvmTest/resources/testresources/plugins").copyRecursively(File("tests/plugins"), true) + File("src/test/resources/testresources/plugins").copyRecursively(File("tests/plugins"), true) } catch (ignored: Exception) { } Assertions.assertNotNull(apiPlugins) diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt similarity index 90% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt index 0419716c1..466af3f06 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ApiPropertiesTest.kt @@ -10,19 +10,19 @@ import java.io.File class ApiPropertiesTest internal constructor() { private val fileUtilities: FileUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).fileUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).fileUtilities private val systemUtilities: SystemUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).systemUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).systemUtilities private val listUtilities: ListUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).listUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).listUtilities private val jarUtilities: JarUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).jarUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).jarUtilities @Test fun test() { var apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/testresources/properties/filters/contains.properties") + File("src/test/resources/testresources/properties/filters/contains.properties") ) Assertions.assertEquals( ExclusionFilter.CONTAIN, @@ -30,7 +30,7 @@ class ApiPropertiesTest internal constructor() { ) apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/testresources/properties/filters/either.properties") + File("src/test/resources/testresources/properties/filters/either.properties") ) Assertions.assertEquals( ExclusionFilter.EITHER, @@ -38,7 +38,7 @@ class ApiPropertiesTest internal constructor() { ) apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/testresources/properties/filters/end.properties") + File("src/test/resources/testresources/properties/filters/end.properties") ) Assertions.assertEquals( ExclusionFilter.END, @@ -46,7 +46,7 @@ class ApiPropertiesTest internal constructor() { ) apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/testresources/properties/filters/regex.properties") + File("src/test/resources/testresources/properties/filters/regex.properties") ) Assertions.assertEquals( ExclusionFilter.REGEX, @@ -54,7 +54,7 @@ class ApiPropertiesTest internal constructor() { ) apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/testresources/properties/filters/start.properties") + File("src/test/resources/testresources/properties/filters/start.properties") ) Assertions.assertEquals( ExclusionFilter.START, @@ -62,7 +62,7 @@ class ApiPropertiesTest internal constructor() { ) apiProperties = ApiProperties( fileUtilities, systemUtilities, listUtilities, jarUtilities, - File("src/jvmTest/resources/serverpackcreator.properties") + File("src/test/resources/serverpackcreator.properties") ) Assertions.assertNotNull(apiProperties.javaPath) Assertions.assertTrue( diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt similarity index 90% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt index ce8396220..2eecf1bd0 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ConfigurationHandlerTest.kt @@ -10,16 +10,16 @@ import java.util.* internal class ConfigurationHandlerTest { private val apiProperties = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).apiProperties + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).apiProperties private val configurationHandler = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).configurationHandler + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).configurationHandler private val versionMeta = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).versionMeta + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).versionMeta private val projectDir = apiProperties.homeDirectory.parentFile.parentFile @Test fun checkConfigFileTest() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator.conf")) Assertions.assertTrue(check.allChecksPassed) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) @@ -34,7 +34,7 @@ internal class ConfigurationHandlerTest { @Test fun isDirTestCopyDirs() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_copydirs.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_copydirs.conf")) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.configChecksPassed) Assertions.assertTrue(check.otherChecksPassed) @@ -48,7 +48,7 @@ internal class ConfigurationHandlerTest { @Test fun isDirTestMinecraftVersionFalse() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf")) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.inclusionsChecksPassed) @@ -62,7 +62,7 @@ internal class ConfigurationHandlerTest { @Test fun isModLoaderLegacyFabric() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf")) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.inclusionsChecksPassed) @@ -76,7 +76,7 @@ internal class ConfigurationHandlerTest { @Test fun isModLoaderQuilt() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_quilt.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_quilt.conf")) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.inclusionsChecksPassed) @@ -90,7 +90,7 @@ internal class ConfigurationHandlerTest { @Test fun isDirTestModLoaderFalse() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf")) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.inclusionsChecksPassed) Assertions.assertTrue(check.minecraftVersionChecksPassed) @@ -104,7 +104,7 @@ internal class ConfigurationHandlerTest { @Test fun isDirTestModLoaderVersion() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf")) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) Assertions.assertTrue(check.inclusionsChecksPassed) @@ -118,7 +118,7 @@ internal class ConfigurationHandlerTest { @Test fun checkModpackDirTest() { - val modpackDirCorrect = "src/jvmTest/resources/forge_tests" + val modpackDirCorrect = "src/test/resources/forge_tests" val check = configurationHandler.checkModpackDir(modpackDirCorrect) Assertions.assertTrue(check.modpackChecksPassed) } @@ -131,7 +131,7 @@ internal class ConfigurationHandlerTest { @Test fun checkInclusionsTest() { - val modpackDir = "src/jvmTest/resources/forge_tests" + val modpackDir = "src/test/resources/forge_tests" val inclusions = mutableListOf<InclusionSpecification>() inclusions.add(InclusionSpecification("config")) inclusions.add(InclusionSpecification("mods")) @@ -146,7 +146,7 @@ internal class ConfigurationHandlerTest { @Suppress("SpellCheckingInspection") @Test fun checkInclusionsTestFalse() { - val modpackDir = "src/jvmTest/resources/forge_tests" + val modpackDir = "src/test/resources/forge_tests" val inclusions = mutableListOf<InclusionSpecification>() inclusions.add(InclusionSpecification("config")) inclusions.add(InclusionSpecification("modss")) @@ -160,7 +160,7 @@ internal class ConfigurationHandlerTest { @Test fun checkInclusionsTestFiles() { - val modpackDir = "src/jvmTest/resources/forge_tests" + val modpackDir = "src/test/resources/forge_tests" val inclusions = mutableListOf<InclusionSpecification>() inclusions.add(InclusionSpecification("config")) inclusions.add(InclusionSpecification("mods")) @@ -177,7 +177,7 @@ internal class ConfigurationHandlerTest { @Suppress("SpellCheckingInspection") @Test fun checkInclusionsTestFilesFalse() { - val modpackDir = "src/jvmTest/resources/forge_tests" + val modpackDir = "src/test/resources/forge_tests" val inclusions = mutableListOf<InclusionSpecification>() inclusions.add(InclusionSpecification("config")) inclusions.add(InclusionSpecification("mods")) @@ -290,7 +290,7 @@ internal class ConfigurationHandlerTest { inclusions.add(InclusionSpecification("seeds")) inclusions.add(InclusionSpecification("defaultconfigs")) val packConfig = PackConfig() - packConfig.modpackDir = "src/jvmTest/resources/forge_tests" + packConfig.modpackDir = "src/test/resources/forge_tests" packConfig.setClientMods(clientMods) packConfig.setInclusions(inclusions) packConfig.isServerIconInclusionDesired = true @@ -378,7 +378,7 @@ internal class ConfigurationHandlerTest { @Test fun zipArchiveTest() { var packConfig = PackConfig() - packConfig.modpackDir = "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip" + packConfig.modpackDir = "src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip" var check = configurationHandler.checkConfiguration(packConfig) Assertions.assertTrue(check.allChecksPassed) Assertions.assertTrue(check.modloaderChecksPassed) @@ -391,7 +391,7 @@ internal class ConfigurationHandlerTest { Assertions.assertTrue(check.serverPropertiesChecksPassed) Assertions.assertTrue(check.modloaderVersionChecksPassed) packConfig = PackConfig() - packConfig.modpackDir = "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip" + packConfig.modpackDir = "src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip" check = configurationHandler.checkConfiguration(packConfig) Assertions.assertTrue(check.configChecksPassed) Assertions.assertFalse(check.modpackChecksPassed) @@ -407,7 +407,7 @@ internal class ConfigurationHandlerTest { @Test fun checkConfigurationFileTest() { - val check = configurationHandler.checkConfiguration(File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf")) + val check = configurationHandler.checkConfiguration(File("src/test/resources/testresources/spcconfs/serverpackcreator.conf")) Assertions.assertTrue(check.allChecksPassed) Assertions.assertTrue(check.modloaderChecksPassed) Assertions.assertTrue(check.modpackChecksPassed) @@ -424,7 +424,7 @@ internal class ConfigurationHandlerTest { fun checkConfigurationFileAndModelTest() { var packConfig = PackConfig() var check = configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator.conf"), packConfig ) Assertions.assertTrue(check.allChecksPassed) @@ -437,13 +437,13 @@ internal class ConfigurationHandlerTest { Assertions.assertTrue(check.serverIconChecksPassed) Assertions.assertTrue(check.serverPropertiesChecksPassed) Assertions.assertTrue(check.modloaderVersionChecksPassed) - Assertions.assertEquals("src/jvmTest/resources/forge_tests", packConfig.modpackDir) + Assertions.assertEquals("src/test/resources/forge_tests", packConfig.modpackDir) Assertions.assertEquals("1.16.5", packConfig.minecraftVersion) Assertions.assertEquals("Forge", packConfig.modloader) Assertions.assertEquals("36.1.2", packConfig.modloaderVersion) packConfig = PackConfig() check = configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator.conf"), packConfig ) Assertions.assertTrue(check.allChecksPassed) @@ -456,7 +456,7 @@ internal class ConfigurationHandlerTest { Assertions.assertTrue(check.serverIconChecksPassed) Assertions.assertTrue(check.serverPropertiesChecksPassed) Assertions.assertTrue(check.modloaderVersionChecksPassed) - Assertions.assertEquals("src/jvmTest/resources/forge_tests", packConfig.modpackDir) + Assertions.assertEquals("src/test/resources/forge_tests", packConfig.modpackDir) Assertions.assertEquals("1.16.5", packConfig.minecraftVersion) Assertions.assertEquals("Forge", packConfig.modloader) Assertions.assertEquals("36.1.2", packConfig.modloaderVersion) @@ -497,7 +497,7 @@ internal class ConfigurationHandlerTest { inclusions.add(InclusionSpecification("scripts")) inclusions.add(InclusionSpecification("seeds")) inclusions.add(InclusionSpecification("defaultconfigs")) - packConfig.modpackDir = "src/jvmTest/resources/forge_tests" + packConfig.modpackDir = "src/test/resources/forge_tests" packConfig.setClientMods(clientMods) packConfig.setInclusions(inclusions) packConfig.isServerIconInclusionDesired = true @@ -519,7 +519,7 @@ internal class ConfigurationHandlerTest { Assertions.assertTrue(check.serverPropertiesChecksPassed) Assertions.assertTrue(check.modloaderVersionChecksPassed) Assertions.assertEquals( - "src/jvmTest/resources/forge_tests", packConfig.modpackDir + "src/test/resources/forge_tests", packConfig.modpackDir ) Assertions.assertEquals("1.16.5", packConfig.minecraftVersion) Assertions.assertEquals("Forge", packConfig.modloader) @@ -572,9 +572,9 @@ internal class ConfigurationHandlerTest { @Test fun checkZipArchiveTest() { - var check = configurationHandler.checkZipArchive(Paths.get("src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip").toAbsolutePath().toString()) + var check = configurationHandler.checkZipArchive(Paths.get("src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip").toAbsolutePath().toString()) Assertions.assertTrue(check.modpackChecksPassed) - check = configurationHandler.checkZipArchive(Paths.get("src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip").toAbsolutePath().toString()) + check = configurationHandler.checkZipArchive(Paths.get("src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip").toAbsolutePath().toString()) Assertions.assertFalse(check.modpackChecksPassed) } @@ -632,7 +632,7 @@ internal class ConfigurationHandlerTest { clientMods, whitelist, inclusions, - "src/jvmTest/resources/fabric_tests", + "src/test/resources/fabric_tests", javaPath, "1.16.5", "Fabric", @@ -703,7 +703,7 @@ internal class ConfigurationHandlerTest { clientMods, whitelist, inclusions, - "src/jvmTest/resources/forge_tests", + "src/test/resources/forge_tests", javaPath, "1.16.5", "Forge", @@ -725,7 +725,7 @@ internal class ConfigurationHandlerTest { @Test fun writeConfigToFileModelTest() { val packConfig = PackConfig() - packConfig.modpackDir = "src/jvmTest/resources/forge_tests" + packConfig.modpackDir = "src/test/resources/forge_tests" packConfig.setClientMods( arrayListOf( "AmbientSounds", @@ -800,7 +800,7 @@ internal class ConfigurationHandlerTest { @Test fun printConfigModelTest() { val packConfig = PackConfig() - packConfig.modpackDir = "src/jvmTest/resources/forge_tests" + packConfig.modpackDir = "src/test/resources/forge_tests" packConfig.setClientMods( arrayListOf( "AmbientSounds", @@ -851,21 +851,21 @@ internal class ConfigurationHandlerTest { val packConfig = PackConfig() configurationHandler.updateConfigModelFromModrinthManifest( packConfig, - File("src/jvmTest/resources/testresources/modrinth/forge_modrinth.index.json") + File("src/test/resources/testresources/modrinth/forge_modrinth.index.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.2") Assertions.assertEquals(packConfig.modloader, "Forge") Assertions.assertEquals(packConfig.modloaderVersion, "40.1.48") configurationHandler.updateConfigModelFromModrinthManifest( packConfig, - File("src/jvmTest/resources/testresources/modrinth/fabric_modrinth.index.json") + File("src/test/resources/testresources/modrinth/fabric_modrinth.index.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.19") Assertions.assertEquals(packConfig.modloader, "Fabric") Assertions.assertEquals(packConfig.modloaderVersion, "0.14.8") configurationHandler.updateConfigModelFromModrinthManifest( packConfig, - File("src/jvmTest/resources/testresources/modrinth/quilt_modrinth.index.json") + File("src/test/resources/testresources/modrinth/quilt_modrinth.index.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.19") Assertions.assertEquals(packConfig.modloader, "Quilt") @@ -878,14 +878,14 @@ internal class ConfigurationHandlerTest { val packConfig = PackConfig() configurationHandler.updateConfigModelFromCurseManifest( packConfig, - File("src/jvmTest/resources/testresources/curseforge/forge_manifest.json") + File("src/test/resources/testresources/curseforge/forge_manifest.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.16.5") Assertions.assertEquals(packConfig.modloader, "Forge") Assertions.assertEquals(packConfig.modloaderVersion, "36.0.1") configurationHandler.updateConfigModelFromCurseManifest( packConfig, - File("src/jvmTest/resources/testresources/curseforge/fabric_manifest.json") + File("src/test/resources/testresources/curseforge/fabric_manifest.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.2") Assertions.assertEquals(packConfig.modloader, "Fabric") @@ -898,14 +898,14 @@ internal class ConfigurationHandlerTest { val packConfig = PackConfig() configurationHandler.updateConfigModelFromMinecraftInstance( packConfig, - File("src/jvmTest/resources/testresources/curseforge/forge_minecraftinstance.json") + File("src/test/resources/testresources/curseforge/forge_minecraftinstance.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.16.5") Assertions.assertEquals(packConfig.modloader, "Forge") Assertions.assertEquals(packConfig.modloaderVersion, "36.2.4") configurationHandler.updateConfigModelFromMinecraftInstance( packConfig, - File("src/jvmTest/resources/testresources/curseforge/fabric_minecraftinstance.json") + File("src/test/resources/testresources/curseforge/fabric_minecraftinstance.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.2") Assertions.assertEquals(packConfig.modloader, "Fabric") @@ -919,14 +919,14 @@ internal class ConfigurationHandlerTest { val packConfig = PackConfig() configurationHandler.updateConfigModelFromConfigJson( packConfig, - File("src/jvmTest/resources/testresources/gdlauncher/fabric_config.json") + File("src/test/resources/testresources/gdlauncher/fabric_config.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.2") Assertions.assertEquals(packConfig.modloader, "Fabric") Assertions.assertEquals(packConfig.modloaderVersion, "0.14.8") configurationHandler.updateConfigModelFromConfigJson( packConfig, - File("src/jvmTest/resources/testresources/gdlauncher/forge_config.json") + File("src/test/resources/testresources/gdlauncher/forge_config.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.2") Assertions.assertEquals(packConfig.modloader, "Forge") @@ -940,21 +940,21 @@ internal class ConfigurationHandlerTest { val packConfig = PackConfig() configurationHandler.updateConfigModelFromMMCPack( packConfig, - File("src/jvmTest/resources/testresources/multimc/fabric_mmc-pack.json") + File("src/test/resources/testresources/multimc/fabric_mmc-pack.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.18.1") Assertions.assertEquals(packConfig.modloader, "Fabric") Assertions.assertEquals(packConfig.modloaderVersion, "0.12.12") configurationHandler.updateConfigModelFromMMCPack( packConfig, - File("src/jvmTest/resources/testresources/multimc/forge_mmc-pack.json") + File("src/test/resources/testresources/multimc/forge_mmc-pack.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.16.5") Assertions.assertEquals(packConfig.modloader, "Forge") Assertions.assertEquals(packConfig.modloaderVersion, "36.2.23") configurationHandler.updateConfigModelFromMMCPack( packConfig, - File("src/jvmTest/resources/testresources/multimc/quilt_mmc-pack.json") + File("src/test/resources/testresources/multimc/quilt_mmc-pack.json") ) Assertions.assertEquals(packConfig.minecraftVersion, "1.19") Assertions.assertEquals(packConfig.modloader, "Quilt") @@ -967,13 +967,13 @@ internal class ConfigurationHandlerTest { fun updateDestinationFromInstanceCfgTest() { Assertions.assertEquals( configurationHandler.updateDestinationFromInstanceCfg( - File("src/jvmTest/resources/testresources/multimc/better_mc_instance.cfg") + File("src/test/resources/testresources/multimc/better_mc_instance.cfg") ), "Better Minecraft [FABRIC] - 1.18.1" ) Assertions.assertEquals( configurationHandler.updateDestinationFromInstanceCfg( - File("src/jvmTest/resources/testresources/multimc/all_the_mods_instance.cfg") + File("src/test/resources/testresources/multimc/all_the_mods_instance.cfg") ), "All the Mods 6 - ATM6 - 1.16.5" ) @@ -981,7 +981,7 @@ internal class ConfigurationHandlerTest { @Test fun suggestInclusionsTest() { - val dirs: List<InclusionSpecification> = configurationHandler.suggestInclusions("src/jvmTest/resources/fabric_tests") + val dirs: List<InclusionSpecification> = configurationHandler.suggestInclusions("src/test/resources/fabric_tests") dirs.any { inclusion -> inclusion.source == "config" } dirs.any { inclusion -> inclusion.source == "defaultconfigs" } dirs.any { inclusion -> inclusion.source == "mods" } @@ -995,13 +995,13 @@ internal class ConfigurationHandlerTest { fun directoriesInModpackZipTest() { var entries: List<String?> = configurationHandler.getDirectoriesInModpackZipBaseDirectory( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip" ) ) Assertions.assertEquals(1, entries.size) Assertions.assertTrue(entries.contains("overrides/")) entries = configurationHandler.getDirectoriesInModpackZipBaseDirectory( - File("src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip") + File("src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip") ) Assertions.assertTrue(entries.size > 1) Assertions.assertTrue(entries.contains("mods/")) @@ -1015,7 +1015,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getFilesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip" ) ) .isNotEmpty() @@ -1024,7 +1024,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getFilesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip" ) ) .isNotEmpty() @@ -1033,7 +1033,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getDirectoriesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip" ) ) .isNotEmpty() @@ -1042,7 +1042,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getDirectoriesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip" ) ) .isNotEmpty() @@ -1051,7 +1051,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getAllFilesAndDirectoriesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip" ) ) .isNotEmpty() @@ -1060,7 +1060,7 @@ internal class ConfigurationHandlerTest { configurationHandler .getAllFilesAndDirectoriesInModpackZip( File( - "src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip" + "src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip" ) ) .isNotEmpty() diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt similarity index 95% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt index 0e40461dc..e6b147669 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/PackConfigTest.kt @@ -35,8 +35,8 @@ class PackConfigTest internal constructor() { @Throws(FileNotFoundException::class, ParserConfigurationException::class) fun scriptSettingsTest() { val packConfig = PackConfig( - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).utilities, - File("src/jvmTest/resources/testresources/spcconfs/scriptSettings.conf") + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).utilities, + File("src/test/resources/testresources/spcconfs/scriptSettings.conf") ) Assertions.assertEquals( packConfig.serverIconPath, @@ -116,11 +116,11 @@ class PackConfigTest internal constructor() { Assertions.assertEquals((config.get("list") as ArrayList<String>).size, 4) Assertions.assertEquals(config.get("list") as ArrayList<String>, list) } - val apiProperties = ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).apiProperties + val apiProperties = ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).apiProperties val afterFile = File(apiProperties.homeDirectory,"after.conf") packConfig.save(afterFile, apiProperties) val after = PackConfig( - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).utilities, afterFile + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).utilities, afterFile ) Assertions.assertEquals(after.serverIconPath, packConfig.serverIconPath) Assertions.assertEquals(after.serverPackSuffix, packConfig.serverPackSuffix) diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt similarity index 93% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt index e3f63c74f..7b951882c 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/ServerPackHandlerTest.kt @@ -11,20 +11,20 @@ import java.util.* internal class ServerPackHandlerTest { private val configurationHandler = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).configurationHandler + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).configurationHandler private val serverPackHandler = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).serverPackHandler + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).serverPackHandler private val versionMeta = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).versionMeta + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).versionMeta private val apiProperties = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).apiProperties + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).apiProperties init { - File("src/jvmTest/resources/custom_template.ps1").copyTo( + File("src/test/resources/custom_template.ps1").copyTo( File(apiProperties.serverFilesDirectory,"custom_template.ps1"), overwrite = true ) - File("src/jvmTest/resources/custom_template.sh").copyTo( + File("src/test/resources/custom_template.sh").copyTo( File(apiProperties.serverFilesDirectory,"custom_template.sh"), overwrite = true ) @@ -35,7 +35,7 @@ internal class ServerPackHandlerTest { fun neoForgeTest() { val packConfig = PackConfig() configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_neoforge.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator_neoforge.conf"), packConfig ) val neoForgeDir = serverPackHandler.getServerPackDestination(packConfig) @@ -64,7 +64,7 @@ internal class ServerPackHandlerTest { val forgeZip = ZipFile(File(apiProperties.serverPacksDirectory, "forge_tests_server_pack.zip")) apiProperties.scriptTemplates = TreeSet(apiProperties.defaultScriptTemplates()) configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator.conf"), packConfig ) val forgeDir = serverPackHandler.getServerPackDestination(packConfig) @@ -73,7 +73,7 @@ internal class ServerPackHandlerTest { Assertions.assertTrue(File(forgeDir, "config").isDirectory) Assertions.assertTrue(File(forgeDir, "defaultconfigs").isDirectory) val modsDir = File(forgeDir, "mods") - Assertions.assertTrue(modsDir.isDirectory) + Assertions.assertTrue(modsDir.isDirectory, modsDir.absolutePath) Assertions.assertFalse(File(modsDir, "Ping-1.19-1.9.1.jar").isFile) Assertions.assertTrue(File(modsDir, "Ping-Wheel-1.6.1-forge-1.20.1.jar").isFile) Assertions.assertTrue(File(forgeDir, "scripts").isDirectory) @@ -173,7 +173,7 @@ internal class ServerPackHandlerTest { Assertions.assertTrue(File(forgeDir,"some/place/bla.txt").isFile) Assertions.assertTrue(File(forgeDir,"some.file").isFile) try { - File("src/jvmTest/resources/testresources/server_pack.zip").copyTo( + File("src/test/resources/testresources/server_pack.zip").copyTo( File(apiProperties.serverPacksDirectory,"forge_tests_server_pack.zip"), true ) @@ -237,7 +237,7 @@ internal class ServerPackHandlerTest { fun fabricTest() { val packConfig = PackConfig() configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_fabric.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator_fabric.conf"), packConfig ) val fabricDir = serverPackHandler.getServerPackDestination(packConfig) @@ -260,7 +260,7 @@ internal class ServerPackHandlerTest { fun quiltTest() { val packConfig = PackConfig() configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_quilt.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator_quilt.conf"), packConfig ) val quiltDir = serverPackHandler.getServerPackDestination(packConfig) @@ -283,7 +283,7 @@ internal class ServerPackHandlerTest { fun legacyFabricTest() { val packConfig = PackConfig() configurationHandler.checkConfiguration( - File("src/jvmTest/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf"), + File("src/test/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf"), packConfig ) val legacyFabricDir = serverPackHandler.getServerPackDestination(packConfig) diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt similarity index 93% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt index bb4ac34b2..b2706777c 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/BooleanUtilitiesTest.kt @@ -8,7 +8,7 @@ import java.io.File class BooleanUtilitiesTest internal constructor() { private var booleanUtilities: BooleanUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).booleanUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).booleanUtilities @Test fun convertToBooleanTestTrue() { diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt similarity index 61% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt index 87f61e71b..665c76757 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/FileUtilitiesTest.kt @@ -10,25 +10,25 @@ import java.io.IOException class FileUtilitiesTest internal constructor() { private var fileUtilities: FileUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).fileUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).fileUtilities @Test fun unzipArchiveTest() { - val modpackDir = "src/jvmTest/resources/curseforge_tests" - val zipFile = "src/jvmTest/resources/curseforge_tests/modpack.zip" + val modpackDir = "src/test/resources/curseforge_tests" + val zipFile = "src/test/resources/curseforge_tests/modpack.zip" fileUtilities.unzipArchive(zipFile, modpackDir) Assertions.assertTrue( - File("src/jvmTest/resources/curseforge_tests/manifest.json").exists() + File("src/test/resources/curseforge_tests/manifest.json").exists() ) Assertions.assertTrue( - File("src/jvmTest/resources/curseforge_tests/modlist.html").exists() + File("src/test/resources/curseforge_tests/modlist.html").exists() ) Assertions.assertTrue( - File("src/jvmTest/resources/curseforge_tests/overrides").isDirectory + File("src/test/resources/curseforge_tests/overrides").isDirectory ) - File("src/jvmTest/resources/curseforge_tests/manifest.json").deleteQuietly() - File("src/jvmTest/resources/curseforge_tests/modlist.html").deleteQuietly() - File("src/jvmTest/resources/curseforge_tests/overrides").deleteQuietly() + File("src/test/resources/curseforge_tests/manifest.json").deleteQuietly() + File("src/test/resources/curseforge_tests/modlist.html").deleteQuietly() + File("src/test/resources/curseforge_tests/overrides").deleteQuietly() } @Test diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt similarity index 95% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt index f08b77f8b..40a3d4acb 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/JarUtilitiesTest.kt @@ -8,7 +8,7 @@ import java.io.File class JarUtilitiesTest internal constructor() { private var jarUtilities: JarUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).jarUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).jarUtilities @Test fun copyFileFromJarTest() { diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt similarity index 98% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt index d727f4643..71ebafed1 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/ListUtilitiesTest.kt @@ -8,7 +8,7 @@ import java.io.File class ListUtilitiesTest internal constructor() { private var listUtilities: ListUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).listUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).listUtilities @Suppress("SpellCheckingInspection") @Test diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt similarity index 86% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt index 6207de050..911fe1e30 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/StringUtilitiesTest.kt @@ -8,7 +8,7 @@ import java.io.File class StringUtilitiesTest internal constructor() { private var stringUtilities: StringUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).stringUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).stringUtilities @Test fun buildStringTest() { diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt similarity index 89% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt index de428b64f..f70eb3d15 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/SystemUtilitiesTest.kt @@ -8,7 +8,7 @@ import java.io.File class SystemUtilitiesTest internal constructor() { private var systemUtilities: SystemUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).systemUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).systemUtilities @Test fun acquireJavaPathFromSystemTest() { diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt similarity index 93% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt index ff092411a..cfdfc155d 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/common/WebUtilitiesTest.kt @@ -10,7 +10,7 @@ import java.net.URI class WebUtilitiesTest internal constructor() { private var webUtilities: WebUtilities = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).webUtilities + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).webUtilities @Suppress("SpellCheckingInspection") @Test diff --git a/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt new file mode 100644 index 000000000..94aacb54a --- /dev/null +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/modscanning/ModScannerTest.kt @@ -0,0 +1,229 @@ +package de.griefed.serverpackcreator.api.modscanning + +import de.griefed.serverpackcreator.api.ApiWrapper +import de.griefed.serverpackcreator.api.utilities.common.FilterType +import de.griefed.serverpackcreator.api.utilities.common.filteredWalk +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import java.io.File + +class ModScannerTest internal constructor() { + private var modScanner: ModScanner = + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).modScanner + + @Suppress("SpellCheckingInspection") + @Test + fun tomlTest() { + val files: Collection<File> = + File("src/test/resources/forge_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) + + val excluded: List<File> = modScanner.forgeTomlScanner.scan(files).toList() + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/aaaaa.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/bbbbb.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/ccccc.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/ddddd.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/fffff.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/ggggg.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/hhhhh.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/iiiii.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/jjjjj.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/kkkkk.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/lllll.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/nnnnn.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_tests/mods/ppppp.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/qqqqq.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/rrrrr.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/testmod.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/uuuuu.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/vvvvv.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/wwwww.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/xxxxx.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/yyyyy.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_tests/mods/zzzzz.jar")) + ) + } + + @Suppress("SpellCheckingInspection") + @Test + fun fabricTest() { + val files: Collection<File> = + File("src/test/resources/fabric_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) + + val excluded: List<File> = modScanner.fabricScanner.scan(files).toList() + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/aaaaa.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/bbbbb.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/ccccc.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/ddddd.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/eeeee.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/fffff.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/ggggg.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/fabric_tests/mods/hhhhh.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/iiiii.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/jjjjj.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/kkkkk.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/lllll.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/mmmmm.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/nnnnn.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/ooooo.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/ppppp.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/qqqqq.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/fabric_tests/mods/testmod.jar")) + ) + } + + @Suppress("SpellCheckingInspection") + @Test + fun quiltTest() { + val files: Collection<File> = + File("src/test/resources/quilt_tests/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) + + val excluded: List<File> = modScanner.quiltScanner.scan(files).toList() + Assertions.assertTrue( + excluded.contains(File("src/test/resources/quilt_tests/mods/aaaaa.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/quilt_tests/mods/bbbbb.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/quilt_tests/mods/testmod.jar")) + ) + } + + @Suppress("SpellCheckingInspection") + @Test + fun annotationTest() { + val files: Collection<File> = + File("src/test/resources/forge_old/mods").filteredWalk(listOf("jar"), FilterType.ENDS_WITH) + + val excluded: List<File> = modScanner.forgeAnnotationScanner.scan(files).toList() + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/aaaaa.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/bbbbb.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/ccccc.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/ddddd.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/eeeee.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/fffff.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/ggggg.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/hhhhh.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/iiiii.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/jjjjj.jar")) + ) + Assertions.assertTrue( + excluded.contains(File("src/test/resources/forge_old/mods/kkkkk.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/lllll.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/mmmmm.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/nnnnn.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/ooooo.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/ppppp.jar")) + ) + Assertions.assertFalse( + excluded.contains(File("src/test/resources/forge_old/mods/qqqqq.jar")) + ) + } +} \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt similarity index 99% rename from serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt rename to serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt index e36cca63b..fa65ed391 100644 --- a/serverpackcreator-api/src/jvmTest/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt +++ b/serverpackcreator-api/src/test/kotlin/de/griefed/serverpackcreator/api/versionmeta/VersionMetaTest.kt @@ -11,7 +11,7 @@ import javax.xml.parsers.ParserConfigurationException class VersionMetaTest { private val versionMeta: VersionMeta = - ApiWrapper.api(File("src/jvmTest/resources/serverpackcreator.properties")).versionMeta + ApiWrapper.api(File("src/test/resources/serverpackcreator.properties")).versionMeta @Test @Throws(IOException::class, ParserConfigurationException::class, SAXException::class) diff --git a/serverpackcreator-api/src/jvmTest/resources/application.properties b/serverpackcreator-api/src/test/resources/application.properties similarity index 92% rename from serverpackcreator-api/src/jvmTest/resources/application.properties rename to serverpackcreator-api/src/test/resources/application.properties index 1e741233a..ef1acd9f7 100644 --- a/serverpackcreator-api/src/jvmTest/resources/application.properties +++ b/serverpackcreator-api/src/test/resources/application.properties @@ -21,4 +21,4 @@ spring.transaction.default-timeout=3600 spring.datasource.tomcat.max-active=50 spring.datasource.tomcat.max-idle=15 spring.datasource.tomcat.min-idle=8 -spring.config.import=classpath:application.properties,classpath:serverpackcreator.properties,file:./src/jvmTest/resources/serverpackcreator.properties \ No newline at end of file +spring.config.import=classpath:application.properties,classpath:serverpackcreator.properties,file:./src/test/resources/serverpackcreator.properties \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/resources/curseforge_tests/modpack.zip b/serverpackcreator-api/src/test/resources/curseforge_tests/modpack.zip similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/curseforge_tests/modpack.zip rename to serverpackcreator-api/src/test/resources/curseforge_tests/modpack.zip diff --git a/serverpackcreator-api/src/jvmTest/resources/custom_template.ps1 b/serverpackcreator-api/src/test/resources/custom_template.ps1 similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/custom_template.ps1 rename to serverpackcreator-api/src/test/resources/custom_template.ps1 diff --git a/serverpackcreator-api/src/jvmTest/resources/custom_template.sh b/serverpackcreator-api/src/test/resources/custom_template.sh similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/custom_template.sh rename to serverpackcreator-api/src/test/resources/custom_template.sh diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/config/testfile.txt b/serverpackcreator-api/src/test/resources/fabric_tests/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/config/testfile.txt rename to serverpackcreator-api/src/test/resources/fabric_tests/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/fabric_tests/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/fabric_tests/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/eeeee.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/eeeee.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/eeeee.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/eeeee.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/fffff.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/lllll.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/mmmmm.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/mmmmm.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/mmmmm.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/mmmmm.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ooooo.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/ooooo.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ooooo.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/ooooo.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/testmod.jar b/serverpackcreator-api/src/test/resources/fabric_tests/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/fabric_tests/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/fabric_tests/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/fabric_tests/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/fabric_tests/seeds/testjson.json b/serverpackcreator-api/src/test/resources/fabric_tests/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/fabric_tests/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/fabric_tests/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/eeeee.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/eeeee.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/eeeee.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/eeeee.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/fffff.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/lllll.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/mmmmm.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/mmmmm.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/mmmmm.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/mmmmm.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ooooo.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/ooooo.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ooooo.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/ooooo.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_old/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/forge_old/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_old/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/forge_old/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/config/testfile.txt b/serverpackcreator-api/src/test/resources/forge_tests/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/config/testfile.txt rename to serverpackcreator-api/src/test/resources/forge_tests/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/forge_tests/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/forge_tests/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/forge_tests/exclude_me/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/forge_tests/exclude_me/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE b/serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE rename to serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg b/serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg rename to serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/forge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/fffff.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/lllll.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/rrrrr.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/rrrrr.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/rrrrr.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/rrrrr.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/testmod.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/uuuuu.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/uuuuu.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/uuuuu.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/uuuuu.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/vvvvv.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/vvvvv.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/vvvvv.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/vvvvv.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/wwwww.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/wwwww.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/wwwww.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/wwwww.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/xxxxx.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/xxxxx.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/xxxxx.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/xxxxx.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/yyyyy.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/yyyyy.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/yyyyy.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/yyyyy.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/zzzzz.jar b/serverpackcreator-api/src/test/resources/forge_tests/mods/zzzzz.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/mods/zzzzz.jar rename to serverpackcreator-api/src/test/resources/forge_tests/mods/zzzzz.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/forge_tests/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/forge_tests/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/seeds/testjson.json b/serverpackcreator-api/src/test/resources/forge_tests/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/forge_tests/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/test.txt b/serverpackcreator-api/src/test/resources/forge_tests/test.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/test.txt rename to serverpackcreator-api/src/test/resources/forge_tests/test.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/forge_tests/test2.txt b/serverpackcreator-api/src/test/resources/forge_tests/test2.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/forge_tests/test2.txt rename to serverpackcreator-api/src/test/resources/forge_tests/test2.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/config/testfile.txt b/serverpackcreator-api/src/test/resources/legacyfabric_tests/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/config/testfile.txt rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/legacyfabric_tests/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/eeeee.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/eeeee.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/eeeee.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/eeeee.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/fffff.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/lllll.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/mmmmm.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/mmmmm.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/mmmmm.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/mmmmm.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ooooo.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ooooo.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ooooo.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ooooo.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/testmod.jar b/serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/legacyfabric_tests/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/seeds/testjson.json b/serverpackcreator-api/src/test/resources/legacyfabric_tests/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/legacyfabric_tests/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/legacyfabric_tests/seeds/testjson.json diff --git a/serverpackcreator-api/src/test/resources/log4j2.component.properties b/serverpackcreator-api/src/test/resources/log4j2.component.properties new file mode 100644 index 000000000..e05136308 --- /dev/null +++ b/serverpackcreator-api/src/test/resources/log4j2.component.properties @@ -0,0 +1,3 @@ +log4j.configurationFile=log4j2.xml +log4j.formatMsgNoLookups=true +log4j.configurationFactory=de.griefed.serverpackcreator.api.ApiProperties \ No newline at end of file diff --git a/serverpackcreator-api/src/jvmTest/resources/log4j2.xml b/serverpackcreator-api/src/test/resources/log4j2.xml similarity index 77% rename from serverpackcreator-api/src/jvmTest/resources/log4j2.xml rename to serverpackcreator-api/src/test/resources/log4j2.xml index 318b1c6b6..d3fa2dcbf 100644 --- a/serverpackcreator-api/src/jvmTest/resources/log4j2.xml +++ b/serverpackcreator-api/src/test/resources/log4j2.xml @@ -35,22 +35,6 @@ <DefaultRolloverStrategy max="5" /> </RollingFile> - <RollingFile name="InstallerLogger" fileName="${log-path}/modloader_installer.log" filePattern="${archive}/modloader_installer.log.%i"> - <PatternLayout> - <Charset> - ${charset} - </Charset> - <Pattern> - ${pattern} - </Pattern> - </PatternLayout> - <Policies> - <OnStartupTriggeringPolicy /> - <SizeBasedTriggeringPolicy size="10 MB" /> - </Policies> - <DefaultRolloverStrategy max="5" /> - </RollingFile> - <RollingFile name="PluginsLogger" fileName="${log-path}/plugins.log" filePattern="${archive}/plugins.log.%i"> <PatternLayout> <Charset> @@ -79,10 +63,6 @@ <AppenderRef ref="ApplicationLogger" level="${log-level-spc}" /> </Logger> - <Logger name="InstallerLogger" level="ALL" additivity="false"> - <AppenderRef ref="InstallerLogger" level="${log-level-spc}" /> - </Logger> - <Logger name="PluginsLogger" level="ALL" additivity="false"> <AppenderRef ref="PluginsLogger" level="${log-level-spc}" /> </Logger> diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/eeeee.jar b/serverpackcreator-api/src/test/resources/mods/eeeee.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/eeeee.jar rename to serverpackcreator-api/src/test/resources/mods/eeeee.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/fffff.jar b/serverpackcreator-api/src/test/resources/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/lllll.jar b/serverpackcreator-api/src/test/resources/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/mmmmm.jar b/serverpackcreator-api/src/test/resources/mods/mmmmm.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/mmmmm.jar rename to serverpackcreator-api/src/test/resources/mods/mmmmm.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/ooooo.jar b/serverpackcreator-api/src/test/resources/mods/ooooo.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/ooooo.jar rename to serverpackcreator-api/src/test/resources/mods/ooooo.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/config/testfile.txt b/serverpackcreator-api/src/test/resources/neoforge_tests/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/config/testfile.txt rename to serverpackcreator-api/src/test/resources/neoforge_tests/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/neoforge_tests/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/neoforge_tests/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE b/serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE rename to serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/ICANSEEMYHOUSEFROMHEEEEEEEEEEEEERE diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg b/serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg rename to serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/dont_include_me_either.ogg diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file b/serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file rename to serverpackcreator-api/src/test/resources/neoforge_tests/exclude_me/exclude_me_some_more/some_more_dirs_to_exclude/I_dont_want_to_be_included.file diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ddddd.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/ddddd.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ddddd.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/ddddd.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/fffff.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/lllll.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/rrrrr.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/rrrrr.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/rrrrr.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/rrrrr.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/testmod.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/uuuuu.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/uuuuu.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/uuuuu.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/uuuuu.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/vvvvv.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/vvvvv.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/vvvvv.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/vvvvv.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/wwwww.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/wwwww.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/wwwww.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/wwwww.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/xxxxx.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/xxxxx.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/xxxxx.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/xxxxx.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/yyyyy.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/yyyyy.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/yyyyy.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/yyyyy.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/zzzzz.jar b/serverpackcreator-api/src/test/resources/neoforge_tests/mods/zzzzz.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/mods/zzzzz.jar rename to serverpackcreator-api/src/test/resources/neoforge_tests/mods/zzzzz.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/neoforge_tests/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/neoforge_tests/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/seeds/testjson.json b/serverpackcreator-api/src/test/resources/neoforge_tests/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/neoforge_tests/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/test.txt b/serverpackcreator-api/src/test/resources/neoforge_tests/test.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/test.txt rename to serverpackcreator-api/src/test/resources/neoforge_tests/test.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/neoforge_tests/test2.txt b/serverpackcreator-api/src/test/resources/neoforge_tests/test2.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/neoforge_tests/test2.txt rename to serverpackcreator-api/src/test/resources/neoforge_tests/test2.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/config/testfile.txt b/serverpackcreator-api/src/test/resources/overrides/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/config/testfile.txt rename to serverpackcreator-api/src/test/resources/overrides/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/overrides/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/overrides/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/overrides/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/overrides/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/seeds/seed1.json b/serverpackcreator-api/src/test/resources/overrides/seeds/seed1.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/seeds/seed1.json rename to serverpackcreator-api/src/test/resources/overrides/seeds/seed1.json diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/seeds/testjson.json b/serverpackcreator-api/src/test/resources/overrides/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/overrides/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/config/testfile.txt b/serverpackcreator-api/src/test/resources/overridestest/overrides/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/config/testfile.txt rename to serverpackcreator-api/src/test/resources/overridestest/overrides/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/overridestest/overrides/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/overridestest/overrides/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/ccccc.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ccccc.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/ccccc.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ccccc.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/fffff.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/fffff.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/fffff.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/fffff.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/ggggg.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ggggg.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/ggggg.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ggggg.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/hhhhh.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/hhhhh.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/hhhhh.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/hhhhh.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/iiiii.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/iiiii.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/iiiii.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/iiiii.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/jjjjj.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/jjjjj.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/jjjjj.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/jjjjj.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/kkkkk.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/kkkkk.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/kkkkk.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/kkkkk.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/lllll.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/lllll.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/lllll.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/lllll.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/nnnnn.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/nnnnn.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/nnnnn.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/nnnnn.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/ppppp.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ppppp.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/ppppp.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/ppppp.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/qqqqq.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/qqqqq.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/qqqqq.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/qqqqq.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/rrrrr.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/rrrrr.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/rrrrr.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/rrrrr.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/testmod.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/uuuuu.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/uuuuu.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/uuuuu.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/uuuuu.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/vvvvv.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/vvvvv.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/vvvvv.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/vvvvv.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/wwwww.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/wwwww.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/wwwww.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/wwwww.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/xxxxx.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/xxxxx.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/xxxxx.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/xxxxx.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/yyyyy.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/yyyyy.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/yyyyy.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/yyyyy.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overrides/mods/zzzzz.jar b/serverpackcreator-api/src/test/resources/overridestest/overrides/mods/zzzzz.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overrides/mods/zzzzz.jar rename to serverpackcreator-api/src/test/resources/overridestest/overrides/mods/zzzzz.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/overridestest/overrides/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/overridestest/overrides/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/seeds/seed1.json b/serverpackcreator-api/src/test/resources/overridestest/overrides/seeds/seed1.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/seeds/seed1.json rename to serverpackcreator-api/src/test/resources/overridestest/overrides/seeds/seed1.json diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/seeds/testjson.json b/serverpackcreator-api/src/test/resources/overridestest/overrides/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/overridestest/overrides/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/config/testfile.txt b/serverpackcreator-api/src/test/resources/quilt_tests/config/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/config/testfile.txt rename to serverpackcreator-api/src/test/resources/quilt_tests/config/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/defaultconfigs/testfile.txt b/serverpackcreator-api/src/test/resources/quilt_tests/defaultconfigs/testfile.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/defaultconfigs/testfile.txt rename to serverpackcreator-api/src/test/resources/quilt_tests/defaultconfigs/testfile.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/Ping-1.19-1.9.1.jar b/serverpackcreator-api/src/test/resources/quilt_tests/mods/Ping-1.19-1.9.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/Ping-1.19-1.9.1.jar rename to serverpackcreator-api/src/test/resources/quilt_tests/mods/Ping-1.19-1.9.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar b/serverpackcreator-api/src/test/resources/quilt_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar rename to serverpackcreator-api/src/test/resources/quilt_tests/mods/Ping-Wheel-1.6.1-forge-1.20.1.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/aaaaa.jar b/serverpackcreator-api/src/test/resources/quilt_tests/mods/aaaaa.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/aaaaa.jar rename to serverpackcreator-api/src/test/resources/quilt_tests/mods/aaaaa.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/bbbbb.jar b/serverpackcreator-api/src/test/resources/quilt_tests/mods/bbbbb.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/bbbbb.jar rename to serverpackcreator-api/src/test/resources/quilt_tests/mods/bbbbb.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/testmod.jar b/serverpackcreator-api/src/test/resources/quilt_tests/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/overridestest/overrides/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/quilt_tests/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/scripts/testscript.zs b/serverpackcreator-api/src/test/resources/quilt_tests/scripts/testscript.zs similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/scripts/testscript.zs rename to serverpackcreator-api/src/test/resources/quilt_tests/scripts/testscript.zs diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/seeds/testjson.json b/serverpackcreator-api/src/test/resources/quilt_tests/seeds/testjson.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/seeds/testjson.json rename to serverpackcreator-api/src/test/resources/quilt_tests/seeds/testjson.json diff --git a/serverpackcreator-api/src/jvmTest/resources/serverpackcreator.db b/serverpackcreator-api/src/test/resources/serverpackcreator.db similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/serverpackcreator.db rename to serverpackcreator-api/src/test/resources/serverpackcreator.db diff --git a/serverpackcreator-api/src/jvmTest/resources/serverpackcreator.properties b/serverpackcreator-api/src/test/resources/serverpackcreator.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/serverpackcreator.properties rename to serverpackcreator-api/src/test/resources/serverpackcreator.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/SCP_icon.png b/serverpackcreator-api/src/test/resources/testresources/SCP_icon.png similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/SCP_icon.png rename to serverpackcreator-api/src/test/resources/testresources/SCP_icon.png diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip b/serverpackcreator-api/src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/Survive_Create_Prosper_4_invalid.zip rename to serverpackcreator-api/src/test/resources/testresources/Survive_Create_Prosper_4_invalid.zip diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip b/serverpackcreator-api/src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/Survive_Create_Prosper_4_valid.zip rename to serverpackcreator-api/src/test/resources/testresources/Survive_Create_Prosper_4_valid.zip diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/fabric_manifest.json b/serverpackcreator-api/src/test/resources/testresources/curseforge/fabric_manifest.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/fabric_manifest.json rename to serverpackcreator-api/src/test/resources/testresources/curseforge/fabric_manifest.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/fabric_minecraftinstance.json b/serverpackcreator-api/src/test/resources/testresources/curseforge/fabric_minecraftinstance.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/fabric_minecraftinstance.json rename to serverpackcreator-api/src/test/resources/testresources/curseforge/fabric_minecraftinstance.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/forge_manifest.json b/serverpackcreator-api/src/test/resources/testresources/curseforge/forge_manifest.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/forge_manifest.json rename to serverpackcreator-api/src/test/resources/testresources/curseforge/forge_manifest.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/forge_minecraftinstance.json b/serverpackcreator-api/src/test/resources/testresources/curseforge/forge_minecraftinstance.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/curseforge/forge_minecraftinstance.json rename to serverpackcreator-api/src/test/resources/testresources/curseforge/forge_minecraftinstance.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/gdlauncher/fabric_config.json b/serverpackcreator-api/src/test/resources/testresources/gdlauncher/fabric_config.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/gdlauncher/fabric_config.json rename to serverpackcreator-api/src/test/resources/testresources/gdlauncher/fabric_config.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/gdlauncher/forge_config.json b/serverpackcreator-api/src/test/resources/testresources/gdlauncher/forge_config.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/gdlauncher/forge_config.json rename to serverpackcreator-api/src/test/resources/testresources/gdlauncher/forge_config.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/kreezxil.properties b/serverpackcreator-api/src/test/resources/testresources/kreezxil.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/kreezxil.properties rename to serverpackcreator-api/src/test/resources/testresources/kreezxil.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/de_de.properties b/serverpackcreator-api/src/test/resources/testresources/languages/de_de.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/de_de.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/de_de.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/en_us.properties b/serverpackcreator-api/src/test/resources/testresources/languages/en_us.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/en_us.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/en_us.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_de_de.properties b/serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_de_de.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_de_de.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_de_de.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_ef_gh.properties b/serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_ef_gh.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_ef_gh.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_ef_gh.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_en_us.properties b/serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_en_us.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_en_us.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_en_us.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_uk_ua.properties b/serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_uk_ua.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/langMissing/lang_uk_ua.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/langMissing/lang_uk_ua.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/languages/uk_ua.properties b/serverpackcreator-api/src/test/resources/testresources/languages/uk_ua.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/languages/uk_ua.properties rename to serverpackcreator-api/src/test/resources/testresources/languages/uk_ua.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/fabric_modrinth.index.json b/serverpackcreator-api/src/test/resources/testresources/modrinth/fabric_modrinth.index.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/fabric_modrinth.index.json rename to serverpackcreator-api/src/test/resources/testresources/modrinth/fabric_modrinth.index.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/forge_modrinth.index.json b/serverpackcreator-api/src/test/resources/testresources/modrinth/forge_modrinth.index.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/forge_modrinth.index.json rename to serverpackcreator-api/src/test/resources/testresources/modrinth/forge_modrinth.index.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/quilt_modrinth.index.json b/serverpackcreator-api/src/test/resources/testresources/modrinth/quilt_modrinth.index.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/modrinth/quilt_modrinth.index.json rename to serverpackcreator-api/src/test/resources/testresources/modrinth/quilt_modrinth.index.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/multimc/all_the_mods_instance.cfg b/serverpackcreator-api/src/test/resources/testresources/multimc/all_the_mods_instance.cfg similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/multimc/all_the_mods_instance.cfg rename to serverpackcreator-api/src/test/resources/testresources/multimc/all_the_mods_instance.cfg diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/multimc/better_mc_instance.cfg b/serverpackcreator-api/src/test/resources/testresources/multimc/better_mc_instance.cfg similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/multimc/better_mc_instance.cfg rename to serverpackcreator-api/src/test/resources/testresources/multimc/better_mc_instance.cfg diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/multimc/fabric_mmc-pack.json b/serverpackcreator-api/src/test/resources/testresources/multimc/fabric_mmc-pack.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/multimc/fabric_mmc-pack.json rename to serverpackcreator-api/src/test/resources/testresources/multimc/fabric_mmc-pack.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/multimc/forge_mmc-pack.json b/serverpackcreator-api/src/test/resources/testresources/multimc/forge_mmc-pack.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/multimc/forge_mmc-pack.json rename to serverpackcreator-api/src/test/resources/testresources/multimc/forge_mmc-pack.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/multimc/quilt_mmc-pack.json b/serverpackcreator-api/src/test/resources/testresources/multimc/quilt_mmc-pack.json similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/multimc/quilt_mmc-pack.json rename to serverpackcreator-api/src/test/resources/testresources/multimc/quilt_mmc-pack.json diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/plugins/disabled.txt b/serverpackcreator-api/src/test/resources/testresources/plugins/disabled.txt similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/plugins/disabled.txt rename to serverpackcreator-api/src/test/resources/testresources/plugins/disabled.txt diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/plugins/serverpackcreator-plugin-example-dev.jar b/serverpackcreator-api/src/test/resources/testresources/plugins/serverpackcreator-plugin-example-dev.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/plugins/serverpackcreator-plugin-example-dev.jar rename to serverpackcreator-api/src/test/resources/testresources/plugins/serverpackcreator-plugin-example-dev.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/contains.properties b/serverpackcreator-api/src/test/resources/testresources/properties/filters/contains.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/contains.properties rename to serverpackcreator-api/src/test/resources/testresources/properties/filters/contains.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/either.properties b/serverpackcreator-api/src/test/resources/testresources/properties/filters/either.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/either.properties rename to serverpackcreator-api/src/test/resources/testresources/properties/filters/either.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/end.properties b/serverpackcreator-api/src/test/resources/testresources/properties/filters/end.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/end.properties rename to serverpackcreator-api/src/test/resources/testresources/properties/filters/end.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/regex.properties b/serverpackcreator-api/src/test/resources/testresources/properties/filters/regex.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/regex.properties rename to serverpackcreator-api/src/test/resources/testresources/properties/filters/regex.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/start.properties b/serverpackcreator-api/src/test/resources/testresources/properties/filters/start.properties similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/properties/filters/start.properties rename to serverpackcreator-api/src/test/resources/testresources/properties/filters/start.properties diff --git a/serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/testmod.jar b/serverpackcreator-api/src/test/resources/testresources/server_pack/mods/testmod.jar similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/quilt_tests/mods/testmod.jar rename to serverpackcreator-api/src/test/resources/testresources/server_pack/mods/testmod.jar diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/scriptSettings.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/scriptSettings.conf similarity index 100% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/scriptSettings.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/scriptSettings.conf diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator.conf similarity index 98% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator.conf index 8e1c9afbc..adaf8105e 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! @@ -15,10 +15,10 @@ clientMods = ["Armor Status HUD-","[1.12.2]bspkrscore-","[1.12.2]DamageIndicator #copyDirs = ["config","mods","scripts","seeds","defaultconfigs","exclude_me","!exclude_me[/\\]I_dont_want_to_be_included.file","!.ogg","!exclude_me[/\\]exclude_me_some_more[/\\]some_more_dirs_to_exclude","!exclude_me[/\\]exclude_me_some_more[/\\]I_dont_want_to_be_included.file"] # Path to a custom server-icon.png-file to include in the server pack. -serverIconPath = "src/jvmTest/resources/testresources/SCP_icon.png" +serverIconPath = "src/test/resources/testresources/SCP_icon.png" # Path to a custom server.properties-file to include in the server pack. -serverPropertiesPath = "src/jvmTest/resources/testresources/kreezxil.properties" +serverPropertiesPath = "src/test/resources/testresources/kreezxil.properties" # Whether to install a Forge/Fabric server for the serverpack. Must be true or false. # Default value is true. diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_copydirs.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_copydirs.conf similarity index 99% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_copydirs.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_copydirs.conf index d3e5d003a..c4da76b1c 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_copydirs.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_copydirs.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_fabric.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_fabric.conf similarity index 97% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_fabric.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_fabric.conf index 49c37ba94..2a81fe9fa 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_fabric.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_fabric.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/fabric_tests" +modpackDir = "src/test/resources/fabric_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! @@ -15,10 +15,10 @@ clientMods = ["Armor Status HUD-","[1.12.2]bspkrscore-","[1.12.2]DamageIndicator copyDirs = ["config","mods","scripts","seeds","defaultconfigs"] # Path to a custom server-icon.png-file to include in the server pack. -serverIconPath = "src/jvmTest/resources/testresources/SCP_icon.png" +serverIconPath = "src/test/resources/testresources/SCP_icon.png" # Path to a custom server.properties-file to include in the server pack. -serverPropertiesPath = "src/jvmTest/resources/testresources/kreezxil.properties" +serverPropertiesPath = "src/test/resources/testresources/kreezxil.properties" # Whether to install a Forge/Fabric server for the serverpack. Must be true or false. # Default value is true. diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_javapath.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_javapath.conf similarity index 99% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_javapath.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_javapath.conf index 1c2de9a2d..39cda013f 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_javapath.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_javapath.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf similarity index 97% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf index 7980cadd5..00e83b58c 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_legacyfabric.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/legacyfabric_tests" +modpackDir = "src/test/resources/legacyfabric_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! @@ -15,10 +15,10 @@ clientMods = ["Armor Status HUD-","[1.12.2]bspkrscore-","[1.12.2]DamageIndicator copyDirs = ["config","mods","scripts","seeds","defaultconfigs"] # Path to a custom server-icon.png-file to include in the server pack. -serverIconPath = "src/jvmTest/resources/testresources/SCP_icon.png" +serverIconPath = "src/test/resources/testresources/SCP_icon.png" # Path to a custom server.properties-file to include in the server pack. -serverPropertiesPath = "src/jvmTest/resources/testresources/kreezxil.properties" +serverPropertiesPath = "src/test/resources/testresources/kreezxil.properties" # Whether to install a Forge/Fabric server for the serverpack. Must be true or false. # Default value is true. diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf similarity index 99% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf index bd80cd8b6..a623f1059 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_minecraftversion.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf similarity index 99% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf index 58c15a5a6..228af39e7 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderfalse.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf similarity index 99% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf index cce17cb7c..0f65e0066 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_modloaderversion.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/forge_tests" +modpackDir = "src/test/resources/forge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_neoforge.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_neoforge.conf similarity index 97% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_neoforge.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_neoforge.conf index 7a9b7ea5b..cb6658a94 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_neoforge.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_neoforge.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/neoforge_tests" +modpackDir = "src/test/resources/neoforge_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! @@ -15,10 +15,10 @@ clientMods = ["Armor Status HUD-","[1.12.2]bspkrscore-","[1.12.2]DamageIndicator copyDirs = ["config","mods","scripts","seeds","defaultconfigs"] # Path to a custom server-icon.png-file to include in the server pack. -serverIconPath = "src/jvmTest/resources/testresources/SCP_icon.png" +serverIconPath = "src/test/resources/testresources/SCP_icon.png" # Path to a custom server.properties-file to include in the server pack. -serverPropertiesPath = "src/jvmTest/resources/testresources/kreezxil.properties" +serverPropertiesPath = "src/test/resources/testresources/kreezxil.properties" # Whether to install a Forge/Fabric server for the serverpack. Must be true or false. # Default value is true. diff --git a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_quilt.conf b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_quilt.conf similarity index 97% rename from serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_quilt.conf rename to serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_quilt.conf index a2628b8be..a06026c89 100644 --- a/serverpackcreator-api/src/jvmTest/resources/testresources/spcconfs/serverpackcreator_quilt.conf +++ b/serverpackcreator-api/src/test/resources/testresources/spcconfs/serverpackcreator_quilt.conf @@ -1,7 +1,7 @@ # Path to your modpack. Can be either relative or absolute. # Example: "./Some Modpack" or "C:\Minecraft\Some Modpack" # Can also be a combination of CurseForge projectID and fileID. Example for Survive Create Prosper 4 4.6.7 "390331,3215793" -modpackDir = "src/jvmTest/resources/quilt_tests" +modpackDir = "src/test/resources/quilt_tests" # List of client-only mods to delete from serverpack. # No need to include version specifics. Must be the filenames of the mods, not their project names on CurseForge! @@ -15,10 +15,10 @@ clientMods = ["Armor Status HUD-","[1.12.2]bspkrscore-","[1.12.2]DamageIndicator copyDirs = ["config","mods","scripts","seeds","defaultconfigs"] # Path to a custom server-icon.png-file to include in the server pack. -serverIconPath = "src/jvmTest/resources/testresources/SCP_icon.png" +serverIconPath = "src/test/resources/testresources/SCP_icon.png" # Path to a custom server.properties-file to include in the server pack. -serverPropertiesPath = "src/jvmTest/resources/testresources/kreezxil.properties" +serverPropertiesPath = "src/test/resources/testresources/kreezxil.properties" # Whether to install a Forge/Fabric server for the serverpack. Must be true or false. # Default value is true. diff --git a/serverpackcreator-app/build.gradle.kts b/serverpackcreator-app/build.gradle.kts index 59b616104..7c8d4a046 100644 --- a/serverpackcreator-app/build.gradle.kts +++ b/serverpackcreator-app/build.gradle.kts @@ -1,3 +1,4 @@ + import java.time.LocalDate import java.util.* @@ -22,8 +23,8 @@ dependencies { api(project(":serverpackcreator-gui")) api(project(":serverpackcreator-web")) api(project(":serverpackcreator-updater")) - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } springBoot { @@ -40,6 +41,10 @@ tasks.clean { } } +tasks.bootJar { + dependsOn(":serverpackcreator-api:processTestResources") +} + task("copyDependencies", Copy::class) { from(configurations.runtimeClasspath).into("${layout.buildDirectory.asFile.get()}/jars") } @@ -114,4 +119,4 @@ tasks.jpackage { linuxRpmLicenseType = "LGPL-2.1" linuxShortcut = true } -} +} \ No newline at end of file diff --git a/serverpackcreator-app/src/main/kotlin/de/griefed/serverpackcreator/app/ServerPackCreator.kt b/serverpackcreator-app/src/main/kotlin/de/griefed/serverpackcreator/app/ServerPackCreator.kt index fba1766ed..39a0bc1b0 100644 --- a/serverpackcreator-app/src/main/kotlin/de/griefed/serverpackcreator/app/ServerPackCreator.kt +++ b/serverpackcreator-app/src/main/kotlin/de/griefed/serverpackcreator/app/ServerPackCreator.kt @@ -35,11 +35,6 @@ import org.apache.commons.io.monitor.FileAlterationListener import org.apache.commons.io.monitor.FileAlterationMonitor import org.apache.commons.io.monitor.FileAlterationObserver import org.apache.logging.log4j.kotlin.cachedLoggerOf -import org.springframework.boot.autoconfigure.SpringBootApplication -import org.springframework.boot.autoconfigure.domain.EntityScan -import org.springframework.boot.context.properties.EnableConfigurationProperties -import org.springframework.context.annotation.ComponentScan -import org.springframework.scheduling.annotation.EnableScheduling import org.xml.sax.SAXException import java.awt.GraphicsEnvironment import java.io.File @@ -64,21 +59,17 @@ fun main(args: Array<String>) { * API-instance used to run a given instance of SPC. * @author Griefed */ -@SpringBootApplication -@EnableConfigurationProperties -@EntityScan(value = ["de.griefed.serverpackcreator.web"]) -@ComponentScan(value = ["de.griefed.serverpackcreator"]) -@EnableScheduling class ServerPackCreator(private val args: Array<String>) { - private val log = cachedLoggerOf(this.javaClass) - final val commandlineParser: CommandlineParser = CommandlineParser(args) - final val apiWrapper = ApiWrapper.api(commandlineParser.propertiesFile, false) + private val log by lazy { cachedLoggerOf(this.javaClass) } + val commandlineParser: CommandlineParser = CommandlineParser(args) + val apiWrapper = ApiWrapper.api(commandlineParser.propertiesFile, false) private val appInfo = JarInformation(ServerPackCreator::class.java, apiWrapper.jarUtilities) init { if (commandlineParser.language != null) { apiWrapper.apiProperties.changeLocale(commandlineParser.language!!) } + apiWrapper.apiProperties.isExe() } @Suppress("MemberVisibilityCanBePrivate") @@ -102,7 +93,8 @@ class ServerPackCreator(private val args: Array<String>) { log.info("Running in mode: $mode") log.info("App information:") log.info("App Folder: ${appInfo.jarFolder}") - log.info("App Path: ${appInfo.jarFile.absolutePath}") + log.info("App File: ${appInfo.jarFile}") + log.info("App Path: ${appInfo.jarPath}") log.info("App Name: ${appInfo.jarFileName}") log.info("Java version: ${apiWrapper.apiProperties.getJavaVersion()}") log.info("OS architecture: ${apiWrapper.apiProperties.getOSArch()}") diff --git a/serverpackcreator-cli/build.gradle.kts b/serverpackcreator-cli/build.gradle.kts index 8fb985b42..91b1dee59 100644 --- a/serverpackcreator-cli/build.gradle.kts +++ b/serverpackcreator-cli/build.gradle.kts @@ -8,6 +8,6 @@ repositories { dependencies { api(project(":serverpackcreator-api")) - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } \ No newline at end of file diff --git a/serverpackcreator-cli/src/main/kotlin/de/griefed/serverpackcreator/cli/ConfigurationEditor.kt b/serverpackcreator-cli/src/main/kotlin/de/griefed/serverpackcreator/cli/ConfigurationEditor.kt index 77f204386..0cda41538 100644 --- a/serverpackcreator-cli/src/main/kotlin/de/griefed/serverpackcreator/cli/ConfigurationEditor.kt +++ b/serverpackcreator-cli/src/main/kotlin/de/griefed/serverpackcreator/cli/ConfigurationEditor.kt @@ -45,7 +45,7 @@ class ConfigurationEditor( private val utilities: Utilities, private val versionMeta: VersionMeta ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH-mm-ss") private val current = dateTimeFormatter.format(LocalDateTime.now()) private val logFile: File = File(apiProperties.logsDirectory, "configurationCreator-$current.log") diff --git a/serverpackcreator-gui/build.gradle.kts b/serverpackcreator-gui/build.gradle.kts index 3732f8e69..a524af46f 100644 --- a/serverpackcreator-gui/build.gradle.kts +++ b/serverpackcreator-gui/build.gradle.kts @@ -8,25 +8,25 @@ repositories { dependencies { api(project(":serverpackcreator-api")) - api("commons-io:commons-io:2.14.0") - api("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.7.3") - api("org.jetbrains.kotlin:kotlin-reflect:1.9.10") + api("commons-io:commons-io:2.16.1") + api("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.0") + api("org.jetbrains.kotlin:kotlin-reflect:1.9.23") implementation(project(":serverpackcreator-updater")) //New GUI - api("com.formdev:flatlaf:3.2.5") - api("com.formdev:flatlaf-extras:3.2.5") - api("com.formdev:flatlaf-intellij-themes:3.2.5") - api("com.formdev:flatlaf-fonts-jetbrains-mono:2.242") - api("com.formdev:flatlaf-fonts-inter:3.19") + api("com.formdev:flatlaf:3.4") + api("com.formdev:flatlaf-extras:3.4") + api("com.formdev:flatlaf-intellij-themes:3.4") + api("com.formdev:flatlaf-fonts-jetbrains-mono:2.304") + api("com.formdev:flatlaf-fonts-inter:4.0") api("com.formdev:flatlaf-fonts-roboto:2.137") api("com.formdev:flatlaf-fonts-roboto-mono:3.000") - api("com.miglayout:miglayout-swing:11.2") + api("com.miglayout:miglayout-swing:11.3") api("com.formdev:svgSalamander:1.1.4") api("net.java.balloontip:balloontip:1.2.4.1") api("com.cronutils:cron-utils:9.2.1") api("tokyo.northside:tipoftheday:0.4.2") - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } \ No newline at end of file diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/components/ConvenientJTable.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/components/ConvenientJTable.kt index 98284c2f8..e843fc6b9 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/components/ConvenientJTable.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/components/ConvenientJTable.kt @@ -67,7 +67,7 @@ abstract class ConvenientJTable( tableColumnModel: DefaultTableColumnModel? = null, listSelectionModel: DefaultListSelectionModel? = null ) : JTable(tableModel, tableColumnModel, listSelectionModel) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } val scrollPanel: ResizeIndicatorScrollPane init { diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/themes/ThemeManager.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/themes/ThemeManager.kt index bc87ef5d4..eaba5b600 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/themes/ThemeManager.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/themes/ThemeManager.kt @@ -27,7 +27,7 @@ import com.formdev.flatlaf.themes.FlatMacDarkLaf import com.formdev.flatlaf.themes.FlatMacLightLaf import com.formdev.flatlaf.util.StringUtils import de.griefed.serverpackcreator.api.ApiWrapper -import de.griefed.serverpackcreator.api.utilities.common.createDirectories +import de.griefed.serverpackcreator.api.utilities.common.create import de.griefed.serverpackcreator.gui.GuiProps import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.awt.Frame @@ -46,14 +46,14 @@ import javax.swing.UIManager */ class ThemeManager(private val apiWrapper: ApiWrapper, private val guiProps: GuiProps) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val themeRegex = ".*\\.(properties|txt)".toRegex() private val lastModifiedMap: HashMap<File, Long> = HashMap() val themesDir: File = File(apiWrapper.apiProperties.homeDirectory, "themes").absoluteFile val themes = mutableListOf<ThemeInfo>() init { - themesDir.createDirectories(create = true, directory = true) + themesDir.create(create = true, directory = true) provideExamples() reloadThemes() } diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/tips/TipOfTheDayManager.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/tips/TipOfTheDayManager.kt index c7912963f..a1be5914d 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/tips/TipOfTheDayManager.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/tips/TipOfTheDayManager.kt @@ -24,7 +24,6 @@ import de.griefed.serverpackcreator.gui.GuiProps import kotlinx.coroutines.* import kotlinx.coroutines.swing.Swing import tokyo.northside.swing.TipOfTheDay -import tokyo.northside.swing.TipOfTheDay.ShowOnStartupChoice import tokyo.northside.swing.tips.DefaultTipOfTheDayModel import java.util.* import javax.swing.JFrame @@ -57,7 +56,7 @@ class TipOfTheDayManager(private val mainFrame: JFrame, private val guiProps: Gu @OptIn(DelicateCoroutinesApi::class) fun showTipOfTheDay() { - GlobalScope.launch(Dispatchers.Swing, CoroutineStart.UNDISPATCHED) { + GlobalScope.launch(Dispatchers.Swing, CoroutineStart.DEFAULT) { var random = (0..<tipOfTheDayModel.tipCount).random() if (guiProps.viewedTips.size == tipOfTheDayModel.tipCount) { random = 0 @@ -69,7 +68,7 @@ class TipOfTheDayManager(private val mainFrame: JFrame, private val guiProps: Gu val newViewed = TreeSet(guiProps.viewedTips) newViewed.add(random) guiProps.viewedTips = newViewed - val tipOfTheDay = TipOfTheDay(tipOfTheDayModel) + val tipOfTheDay = TipOfTheDay(tipOfTheDayModel, false) tipOfTheDay.currentTip = random val customUI = CustomTipOfTheDayUI(tipOfTheDay, guiProps) tipOfTheDay.setUI(customUI) @@ -80,7 +79,7 @@ class TipOfTheDayManager(private val mainFrame: JFrame, private val guiProps: Gu } } - inner class ShowOnStartup : ShowOnStartupChoice { + inner class ShowOnStartup : TipOfTheDay.ShowOnStartupChoice { override fun setShowingOnStartup(showOnStartup: Boolean) { guiProps.showTipOnStartup = showOnStartup } diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/KeyComboManager.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/KeyComboManager.kt index ea1357b55..1caa0bab0 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/KeyComboManager.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/KeyComboManager.kt @@ -41,7 +41,7 @@ class KeyComboManager( mainPanel: MainPanel ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val configs = mainPanel.tabbedConfigsTab private val control = mainPanel.controlPanel diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/UpdateDialogs.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/UpdateDialogs.kt index 41487ffbe..9f5ab491f 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/UpdateDialogs.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/UpdateDialogs.kt @@ -50,7 +50,7 @@ class UpdateDialogs( private val updateChecker: UpdateChecker, private val mainFrame: JFrame ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } var update: Optional<Update> = updateChecker.checkForUpdate( apiProperties.apiVersion, apiProperties.isCheckingForPreReleasesEnabled diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/ConfigEditor.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/ConfigEditor.kt index af891dfc3..5fc2b4ad9 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/ConfigEditor.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/ConfigEditor.kt @@ -57,7 +57,7 @@ class ConfigEditor( componentResizer: ComponentResizer ) : JScrollPane(), ServerPackConfigTab { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val panel = JPanel( MigLayout( "left,wrap", @@ -74,7 +74,7 @@ class ConfigEditor( private val modpackIcon = StatusIcon(guiProps,Translations.createserverpack_gui_createserverpack_labelmodpackdir_tip.toString()) private val modpackLabel = ElementLabel(Translations.createserverpack_gui_createserverpack_labelmodpackdir.toString()) - private val modpackSetting = ScrollTextFileField(guiProps,File(""), validationChangeListener) + private val modpackSetting = ScrollTextFileField(guiProps,apiWrapper.apiProperties.homeDirectory, validationChangeListener) private val modpackChooser = BalloonTipButton(null, guiProps.folderIcon, Translations.createserverpack_gui_browser.toString(), guiProps) { selectModpackDirectory() } private val modpackCheck = BalloonTipButton(null, guiProps.inspectIcon,Translations.createserverpack_gui_buttonmodpackdir_scan_tip.toString(), guiProps) { updateGuiFromSelectedModpack() } diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/TabbedConfigsTab.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/TabbedConfigsTab.kt index 0eb79dd5d..bd1504e78 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/TabbedConfigsTab.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/TabbedConfigsTab.kt @@ -54,7 +54,7 @@ class TabbedConfigsTab( private val apiWrapper: ApiWrapper, private val mainFrame: MainFrame ) : TabPanel() { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val choose = arrayOf(Translations.createserverpack_gui_quickselect_choose.toString()) private val noVersions = DefaultComboBoxModel(arrayOf(Translations.createserverpack_gui_createserverpack_forge_none.toString())) private val componentResizer = ComponentResizer() diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/SuggestionProvider.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/SuggestionProvider.kt index 23f8ccd5a..f6e48d43c 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/SuggestionProvider.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/SuggestionProvider.kt @@ -56,7 +56,7 @@ class SuggestionProvider( private val sourceComponent: JTextComponent, private val identifier: String ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val suggestionMenu = JPopupMenu() private var suggestionListModel = DefaultListModel<String>() private var suggestionList = JList(suggestionListModel) diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/advanced/AdvancedSettingsPanel.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/advanced/AdvancedSettingsPanel.kt index dd1afc3ff..4260a7b47 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/advanced/AdvancedSettingsPanel.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/advanced/AdvancedSettingsPanel.kt @@ -57,7 +57,7 @@ class AdvancedSettingsPanel( "[left,::64]5[left]5[left,grow]5[left,::64]5[left,::64]", "30" ) ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val clientModsIcon = StatusIcon(guiProps,Translations.createserverpack_gui_createserverpack_labelclientmods_tip.toString()) private val clientModsLabel = ElementLabel(Translations.createserverpack_gui_createserverpack_labelclientmods.toString()) private val clientModsRevert = BalloonTipButton(null, guiProps.revertIcon, Translations.createserverpack_gui_buttonclientmods_revert_tip.toString(), guiProps) { revertExclusions() } diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/inclusions/InclusionsEditor.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/inclusions/InclusionsEditor.kt index 00f50b83d..26d751527 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/inclusions/InclusionsEditor.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/configs/components/inclusions/InclusionsEditor.kt @@ -64,7 +64,7 @@ class InclusionsEditor( private val inclusionFilter: ScrollTextField, private val exclusionFilter: ScrollTextField ) : JSplitPane(HORIZONTAL_SPLIT) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val expertPanel = JPanel( MigLayout( "left,wrap", diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/control/ControlPanel.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/control/ControlPanel.kt index a9fe6a72c..616370644 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/control/ControlPanel.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/control/ControlPanel.kt @@ -53,7 +53,7 @@ class ControlPanel( private val apiWrapper: ApiWrapper, private val mainFrame: MainFrame ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val statusPanel = StatusPanel(guiProps) private val runGeneration = GenerationButton(guiProps) { generate() } diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/menu/file/MainLogToHasteBinItem.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/menu/file/MainLogToHasteBinItem.kt index 09e2906f3..5fda3ef6e 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/menu/file/MainLogToHasteBinItem.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/menu/file/MainLogToHasteBinItem.kt @@ -44,7 +44,7 @@ class MainLogToHasteBinItem( guiProps: GuiProps, mainFrame: JFrame ) : HasteBinMenuItem(Translations.menubar_gui_menuitem_uploadlog.toString(), mainFrame, guiProps, webUtilities) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val spcLogDocument: StyledDocument = DefaultStyledDocument() private val spcLogAttributeSet: SimpleAttributeSet = SimpleAttributeSet() private val spcLogWindowTextPane: JTextPane = JTextPane(spcLogDocument) diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/GlobalSettings.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/GlobalSettings.kt index 2b85064e7..bbb97b0a4 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/GlobalSettings.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/GlobalSettings.kt @@ -54,24 +54,24 @@ class GlobalSettings( controlPanel: ControlPanel ) : Editor(Translations.settings_global.toString(), guiProps) { - private val homeIcon = StatusIcon(guiProps, Translations.settings_global_home_tooltip.toString()) - private val homeLabel = ElementLabel(Translations.settings_global_home_label.toString()) - private val homeSetting = ScrollTextFileField(guiProps, apiProperties.homeDirectory.absoluteFile, changeListener) - private val homeRevert = BalloonTipButton(null, guiProps.revertIcon, Translations.settings_revert.toString(), guiProps) { homeSetting.file = apiProperties.homeDirectory } - private val homeReset = BalloonTipButton(null, guiProps.resetIcon,Translations.settings_reset.toString(), guiProps) { homeSetting.file = apiProperties.defaultHomeDirectory() } - private val homeChoose = BalloonTipButton(null, guiProps.folderIcon,Translations.settings_select_directory.toString(), guiProps) { - val homeChooser = HomeDirChooser(apiProperties,Translations.settings_global_home_chooser.toString()) - if (homeChooser.showSaveDialog(mainFrame.frame) == JFileChooser.APPROVE_OPTION) { - if (homeChooser.selectedFile.absoluteFile.testFileWrite()) { - homeSetting.file = homeChooser.selectedFile.absoluteFile - } else { - JOptionPane.showMessageDialog( - mainFrame.frame, - Translations.settings_directory_error(homeChooser.selectedFile.absolutePath) - ) - } - } - } +// private val homeIcon = StatusIcon(guiProps, Translations.settings_global_home_tooltip.toString()) +// private val homeLabel = ElementLabel(Translations.settings_global_home_label.toString()) +// private val homeSetting = ScrollTextFileField(guiProps, apiProperties.homeDirectory.absoluteFile, changeListener) +// private val homeRevert = BalloonTipButton(null, guiProps.revertIcon, Translations.settings_revert.toString(), guiProps) { homeSetting.file = apiProperties.homeDirectory } +// private val homeReset = BalloonTipButton(null, guiProps.resetIcon,Translations.settings_reset.toString(), guiProps) { homeSetting.file = apiProperties.home } +// private val homeChoose = BalloonTipButton(null, guiProps.folderIcon,Translations.settings_select_directory.toString(), guiProps) { +// val homeChooser = HomeDirChooser(apiProperties,Translations.settings_global_home_chooser.toString()) +// if (homeChooser.showSaveDialog(mainFrame.frame) == JFileChooser.APPROVE_OPTION) { +// if (homeChooser.selectedFile.absoluteFile.testFileWrite()) { +// homeSetting.file = homeChooser.selectedFile.absoluteFile +// } else { +// JOptionPane.showMessageDialog( +// mainFrame.frame, +// Translations.settings_directory_error(homeChooser.selectedFile.absolutePath) +// ) +// } +// } +// } private val javaIcon = StatusIcon(guiProps, Translations.settings_global_java_tooltip.toString()) private val javaLabel = ElementLabel(Translations.settings_global_java_label.toString()) @@ -221,12 +221,12 @@ class GlobalSettings( val postInstallY: Int val javaPathsY: Int var y = 0 - panel.add(homeIcon, "cell 0 $y") - panel.add(homeLabel, "cell 1 $y") - panel.add(homeSetting, "cell 2 $y, grow") - panel.add(homeRevert, "cell 3 $y") - panel.add(homeReset, "cell 4 $y") - panel.add(homeChoose, "cell 5 $y") +// panel.add(homeIcon, "cell 0 $y") +// panel.add(homeLabel, "cell 1 $y") +// panel.add(homeSetting, "cell 2 $y, grow") +// panel.add(homeRevert, "cell 3 $y") +// panel.add(homeReset, "cell 4 $y") +// panel.add(homeChoose, "cell 5 $y") y++ panel.add(javaIcon, "cell 0 $y") @@ -380,7 +380,7 @@ class GlobalSettings( } override fun loadSettings() { - homeSetting.file = apiProperties.homeDirectory.absoluteFile +// homeSetting.file = apiProperties.homeDirectory.absoluteFile javaSetting.file = File(apiProperties.javaPath).absoluteFile serverPacksSetting.file = apiProperties.serverPacksDirectory.absoluteFile zipSetting.text = apiProperties.zipArchiveExclusions.joinToString(", ") @@ -403,7 +403,7 @@ class GlobalSettings( } override fun saveSettings() { - apiProperties.homeDirectory = homeSetting.file.absoluteFile +// apiProperties.homeDirectory = homeSetting.file.absoluteFile apiProperties.javaPath = javaSetting.file.absolutePath apiProperties.serverPacksDirectory = serverPacksSetting.file.absoluteFile apiProperties.zipArchiveExclusions = TreeSet(zipSetting.text.replace(", ",",").split(",")) @@ -429,12 +429,12 @@ class GlobalSettings( override fun validateSettings(): List<String> { val errors = mutableListOf<String>() - if (!homeSetting.file.absoluteFile.isDirectory || !homeSetting.file.absoluteFile.canWrite()) { - homeIcon.error(Translations.settings_check_home.toString()) - errors.add(Translations.settings_check_home.toString()) - } else { - homeIcon.info() - } +// if (!homeSetting.file.absoluteFile.isDirectory || !homeSetting.file.absoluteFile.canWrite()) { +// homeIcon.error(Translations.settings_check_home.toString()) +// errors.add(Translations.settings_check_home.toString()) +// } else { +// homeIcon.info() +// } if (!javaSetting.file.absoluteFile.isFile || !javaSetting.file.absoluteFile.canRead() || !javaSetting.file.absoluteFile.canExecute()) { javaIcon.error(Translations.settings_check_java.toString()) @@ -498,7 +498,7 @@ class GlobalSettings( override fun hasUnsavedChanges(): Boolean { val javaPaths = javaPathsSetting.getData() javaPaths.remove("placeholder") - val changes = homeSetting.file.absolutePath != apiProperties.homeDirectory.absolutePath || + val changes = /*homeSetting.file.absolutePath != apiProperties.homeDirectory.absolutePath ||*/ javaSetting.file.absolutePath != File(apiProperties.javaPath).absolutePath || serverPacksSetting.file.absolutePath != apiProperties.serverPacksDirectory.absolutePath || zipSetting.text != apiProperties.zipArchiveExclusions.joinToString(", ") || diff --git a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/SettingsHandling.kt b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/SettingsHandling.kt index 49e920b7b..ccf749334 100644 --- a/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/SettingsHandling.kt +++ b/serverpackcreator-gui/src/main/kotlin/de/griefed/serverpackcreator/gui/window/settings/SettingsHandling.kt @@ -80,7 +80,6 @@ class SettingsHandling( (tab as Editor).saveSettings() } apiProperties.saveProperties(apiProperties.serverPackCreatorPropertiesFile) - apiProperties.saveOverrides() lastAction = Translations.settings_handle_saved(currentTime()) checkAll() controlPanel.updateStatus(Translations.settings_info_saved(apiProperties.serverPackCreatorPropertiesFile.absolutePath)) diff --git a/serverpackcreator-gui/src/main/resources/de/griefed/resources/gui/LICENSE-AGREEMENT b/serverpackcreator-gui/src/main/resources/de/griefed/resources/gui/LICENSE-AGREEMENT index e1d820cb1..02abccda1 100644 --- a/serverpackcreator-gui/src/main/resources/de/griefed/resources/gui/LICENSE-AGREEMENT +++ b/serverpackcreator-gui/src/main/resources/de/griefed/resources/gui/LICENSE-AGREEMENT @@ -469,52 +469,6 @@ DAMAGES. END OF TERMS AND CONDITIONS - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the library's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random - Hacker. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - Used libraries / dependencies licenses: @@ -546,8 +500,8 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (2 of 41) Group: com.electronwill.night-config Name: toml -Version: 3.6.7 -POM Project URL: https://github.com/TheElectronWill/Night-Config +Version: 3.7.1 +POM Project URL: https://github.com/TheElectronWill/night-config POM License: GNU Lesser General Public License v3.0 @@ -733,7 +687,7 @@ Library. (3 of 41) Group: com.fasterxml.jackson.core Name: jackson-databind -Version: 2.15.3 +Version: 2.17.0 Project URL: https://github.com/FasterXML/jackson\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -976,7 +930,7 @@ from the source code management (SCM) system project uses. (4 of 41) Group: com.fasterxml.jackson.module Name: jackson-module-kotlin -Version: 2.14.2 +Version: 2.17.0 Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -990,7 +944,7 @@ Embedded license: This copy of Jackson JSON processor databind module is licensed under the Apache (Software) License, version 2.0 ("the License"). See the License for details about distribution rights, and the -specific rights regarding derivate works. +specific rights regarding derivative works. You may obtain a copy of the License at: @@ -1005,6 +959,10 @@ been in development since 2007. It is currently developed by a community of developers, as well as supported commercially by FasterXML.com. +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + ## Licensing Jackson core and extension components may be licensed under different licenses. @@ -1024,7 +982,7 @@ from the source code management (SCM) system project uses. (5 of 41) Group: com.fasterxml.jackson.module Name: jackson-module-kotlin -Version: 2.15.3 +Version: 2.17.1 Project URL: https://github.com/FasterXML/jackson-module-kotlin\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -1076,7 +1034,7 @@ from the source code management (SCM) system project uses. (6 of 41) Group: com.formdev Name: flatlaf -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1294,7 +1252,7 @@ Embedded license: (7 of 41) Group: com.formdev Name: flatlaf-extras -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1512,7 +1470,7 @@ Embedded license: (8 of 41) Group: com.formdev Name: flatlaf-fonts-inter -Version: 3.19 +Version: 4.0 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -1729,9 +1687,7 @@ Embedded license: limitations under the License. -Copyright (c) 2016-2020 The Inter Project Authors. -"Inter" is trademark of Rasmus Andersson. -https://github.com/rsms/inter +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: @@ -1830,7 +1786,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE. (9 of 41) Group: com.formdev Name: flatlaf-fonts-jetbrains-mono -Version: 2.242 +Version: 2.304 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -2896,7 +2852,7 @@ Embedded license: (12 of 41) Group: com.formdev Name: flatlaf-intellij-themes -Version: 3.2.5 +Version: 3.4 POM Project URL: https://github.com/JFormDesigner/FlatLaf @@ -3142,7 +3098,7 @@ URL: https://opensource.org/licenses/BSD-2-Clause (14 of 41) Group: com.miglayout Name: miglayout-swing -Version: 11.2 +Version: 11.3 POM Project URL: http://www.miglayout.com/ @@ -3162,7 +3118,7 @@ URL: https://opensource.org/licenses/0BSD (15 of 41) Group: commons-io Name: commons-io -Version: 2.14.0 +Version: 2.16.1 Project URL: https://commons.apache.org/proper/commons-io/\n\n Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3379,7 +3335,7 @@ Embedded license: Apache Commons IO -Copyright 2002-2023 The Apache Software Foundation +Copyright 2002-2024 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (https://www.apache.org/). @@ -3390,7 +3346,7 @@ The Apache Software Foundation (https://www.apache.org/). (16 of 41) Group: de.comahe.i18n4k Name: i18n4k-core -Version: 0.6.2 +Version: 0.7.0 No license information found @@ -3399,7 +3355,7 @@ No license information found (17 of 41) Group: de.comahe.i18n4k Name: i18n4k-core-jvm -Version: 0.6.2 +Version: 0.7.0 POM Project URL: https://comahe-de.github.io/i18n4k/ @@ -3419,7 +3375,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (18 of 41) Group: de.jensklingenberg.ktorfit Name: ktorfit-lib -Version: 1.9.0 +Version: 1.14.0 No license information found @@ -3480,7 +3436,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (22 of 41) Group: org.apache.logging.log4j Name: log4j-api-kotlin -Version: 1.3.0 +Version: 1.4.0 Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3707,7 +3663,7 @@ The Apache Software Foundation (http://www.apache.org/). (23 of 41) Group: org.apache.logging.log4j Name: log4j-core -Version: 2.21.0 +Version: 2.23.1 Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 @@ -3935,7 +3891,7 @@ Copyright 2005-2006 Tim Fennell (24 of 41) Group: org.bouncycastle Name: bcpkix-jdk18on -Version: 1.77 +Version: 1.78 POM Project URL: https://www.bouncycastle.org/java.html @@ -3955,11 +3911,11 @@ URL: https://www.bouncycastle.org/licence.html (25 of 41) Group: org.javassist Name: javassist -Version: 3.29.2-GA +Version: 3.30.2-GA Manifest license URL: https://www.apache.org/licenses/LICENSE-2.0 -POM Project URL: http://www.javassist.org/ +POM Project URL: https://www.javassist.org/ POM License: Apache License, Version 2.0 @@ -3994,7 +3950,7 @@ URL: https://www.mozilla.org/en-US/MPL/1.1 (26 of 41) Group: org.jetbrains.kotlin Name: kotlin-bom -Version: 1.9.21 +Version: 1.9.23 No license information found @@ -4003,7 +3959,7 @@ No license information found (27 of 41) Group: org.jetbrains.kotlin Name: kotlin-reflect -Version: 1.9.10 +Version: 1.9.23 POM Project URL: https://kotlinlang.org/ @@ -4022,8 +3978,8 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (28 of 41) Group: org.jetbrains.kotlin -Name: kotlin-reflect -Version: 1.9.21 +Name: kotlin-stdlib +Version: 1.9.23 POM Project URL: https://kotlinlang.org/ @@ -4043,7 +3999,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (29 of 41) Group: org.jetbrains.kotlin Name: kotlin-stdlib -Version: 1.9.21 +Version: 2.0.0-RC1 POM Project URL: https://kotlinlang.org/ @@ -4063,7 +4019,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (30 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-coroutines-core -Version: 1.7.3 +Version: 1.8.0 No license information found @@ -4072,7 +4028,7 @@ No license information found (31 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-coroutines-swing -Version: 1.7.3 +Version: 1.8.0 POM Project URL: https://github.com/Kotlin/kotlinx.coroutines @@ -4092,7 +4048,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (32 of 41) Group: org.jetbrains.kotlinx Name: kotlinx-datetime -Version: 0.4.1 +Version: 0.5.0 No license information found @@ -4101,7 +4057,7 @@ No license information found (33 of 41) Group: org.pf4j Name: pf4j -Version: 3.10.0 +Version: 3.11.0 POM License: Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0 @@ -4118,7 +4074,7 @@ URL: https://www.apache.org/licenses/LICENSE-2.0 (34 of 41) Group: org.postgresql Name: postgresql -Version: 42.6.0 +Version: 42.7.3 Manifest Project URL: https://jdbc.postgresql.org/ @@ -4270,7 +4226,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (35 of 41) Group: org.springframework.boot Name: spring-boot-devtools -Version: 3.0.4 +Version: 3.2.5 POM Project URL: https://spring.io/projects/spring-boot @@ -4483,8 +4439,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4495,7 +4451,7 @@ the License. (36 of 41) Group: org.springframework.boot Name: spring-boot-devtools -Version: 3.2.0 +Version: 3.3.0 POM Project URL: https://spring.io/projects/spring-boot @@ -4708,8 +4664,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.2.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4720,7 +4676,7 @@ the License. (37 of 41) Group: org.springframework.boot Name: spring-boot-starter-data-jpa -Version: 3.0.4 +Version: 3.2.5 POM Project URL: https://spring.io/projects/spring-boot @@ -4933,8 +4889,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.5 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -4945,7 +4901,7 @@ the License. (38 of 41) Group: org.springframework.boot Name: spring-boot-starter-log4j2 -Version: 3.0.4 +Version: 3.2.4 POM Project URL: https://spring.io/projects/spring-boot @@ -5158,8 +5114,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.0.4 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -5170,7 +5126,7 @@ the License. (39 of 41) Group: org.springframework.boot Name: spring-boot-starter-web -Version: 3.1.0 +Version: 3.2.4 POM Project URL: https://spring.io/projects/spring-boot @@ -5383,8 +5339,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.1.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.2.4 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with @@ -5395,7 +5351,7 @@ the License. (40 of 41) Group: org.springframework.boot Name: spring-boot-starter-web -Version: 3.2.0 +Version: 3.3.0 POM Project URL: https://spring.io/projects/spring-boot @@ -5608,8 +5564,8 @@ Embedded license: See the License for the specific language governing permissions and limitations under the License. -Spring Boot 3.2.0 -Copyright (c) 2012-2023 VMware, Inc. +Spring Boot 3.3.0 +Copyright (c) 2012-2024 VMware, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). You may not use this product except in compliance with diff --git a/serverpackcreator-plugin-example/build.gradle.kts b/serverpackcreator-plugin-example/build.gradle.kts index 87f853540..16c126aca 100644 --- a/serverpackcreator-plugin-example/build.gradle.kts +++ b/serverpackcreator-plugin-example/build.gradle.kts @@ -30,8 +30,8 @@ val pluginDescription = "An example plugin for ServerPackCreator, written in Kot val pluginAuthor = "Griefed" dependencies { - annotationProcessor("org.pf4j:pf4j:3.10.0") - kapt("org.pf4j:pf4j:3.10.0") + annotationProcessor("org.pf4j:pf4j:3.11.0") + kapt("org.pf4j:pf4j:3.11.0") /* * CAUTION: When copying the code of the example plugin, make sure to change the dependency on * the API to implementation("de.griefed:serverpackcreator:serverpackcreator-api:$VERSION") @@ -40,8 +40,8 @@ dependencies { // Testing - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } tasks.processResources { @@ -79,6 +79,10 @@ tasks.sourcesJar { dependsOn(tasks.generateI18n4kFiles) } +tasks.test { + dependsOn(":serverpackcreator-api:processTestResources") +} + tasks.jar { manifest { attributes( diff --git a/serverpackcreator-updater/build.gradle.kts b/serverpackcreator-updater/build.gradle.kts index 7b7716eb7..f8d51c370 100644 --- a/serverpackcreator-updater/build.gradle.kts +++ b/serverpackcreator-updater/build.gradle.kts @@ -8,6 +8,6 @@ repositories { dependencies { implementation(project(":serverpackcreator-api")) - testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.0") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.0") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") } \ No newline at end of file diff --git a/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/MigrationManager.kt b/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/MigrationManager.kt index 87e959b33..191cc0957 100644 --- a/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/MigrationManager.kt +++ b/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/MigrationManager.kt @@ -66,7 +66,7 @@ import java.util.* class MigrationManager( private val apiProperties: ApiProperties, private val tomlParser: TomlParser ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val migrationMethods = MigrationMethods() private val previous: String = apiProperties.oldVersion() private val current: String = apiProperties.apiVersion diff --git a/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/UpdateChecker.kt b/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/UpdateChecker.kt index 8a9ae4c73..87cbb92ac 100644 --- a/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/UpdateChecker.kt +++ b/serverpackcreator-updater/src/main/kotlin/de/griefed/serverpackcreator/updater/UpdateChecker.kt @@ -33,7 +33,7 @@ import java.util.* * @author Griefed */ class UpdateChecker(private val apiProperties: ApiProperties) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private var gitHub: GitHubChecker? = null /** diff --git a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitHubChecker.kt b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitHubChecker.kt index 4fd918665..891349dfb 100644 --- a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitHubChecker.kt +++ b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitHubChecker.kt @@ -29,6 +29,7 @@ import com.fasterxml.jackson.databind.JsonNode import de.griefed.serverpackcreator.api.utilities.common.Comparison import de.griefed.serverpackcreator.api.utilities.common.SemanticVersionComparator import org.apache.logging.log4j.LogManager +import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.io.IOException import java.net.MalformedURLException import java.net.URI @@ -48,7 +49,7 @@ import java.util.* * @author Griefed */ class GitHubChecker : VersionChecker { - private val logger = LogManager.getLogger(GitHubChecker::class.java) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val gitHubApi: URL private val gitHubApiLatest: URL private var repository: JsonNode? = null @@ -104,7 +105,7 @@ class GitHubChecker : VersionChecker { * @return [Update]-instance, wrapped in an [Optional], containing information about the available update. */ override fun check(currentVersion: String, checkForPreReleases: Boolean): Optional<Update> { - logger.debug("Current version: $currentVersion") + log.debug("Current version: $currentVersion") try { val newVersion = isUpdateAvailable(currentVersion, checkForPreReleases) if (newVersion != "up_to_date") { @@ -154,9 +155,9 @@ class GitHubChecker : VersionChecker { ) } } catch (ex: NumberFormatException) { - logger.error("A version could not be parsed into integers.", ex) + log.error("A version could not be parsed into integers.", ex) } catch (ex: MalformedURLException) { - logger.error("URL could not be created.", ex) + log.error("URL could not be created.", ex) } return Optional.empty() } @@ -177,7 +178,7 @@ class GitHubChecker : VersionChecker { } } } - logger.debug("All versions: {}", versions) + log.debug("All versions: $versions") // In case the given repository does not have any releases return if (versions.size == 0) { @@ -204,7 +205,7 @@ class GitHubChecker : VersionChecker { version = alpha } } - logger.debug("Latest version:{}", latest) + log.debug("Latest version: $latest") return version } return "no_release" diff --git a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitLabChecker.kt b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitLabChecker.kt index 834d5be01..73ddf316e 100644 --- a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitLabChecker.kt +++ b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/GitLabChecker.kt @@ -26,6 +26,7 @@ package de.griefed.versionchecker import com.fasterxml.jackson.databind.JsonNode +import org.apache.logging.log4j.kotlin.cachedLoggerOf import de.griefed.serverpackcreator.api.utilities.common.Comparison import de.griefed.serverpackcreator.api.utilities.common.SemanticVersionComparator import org.apache.logging.log4j.LogManager @@ -48,7 +49,7 @@ import java.util.* * @author Griefed */ class GitLabChecker : VersionChecker { - private val logger = LogManager.getLogger(GitLabChecker::class.java) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val gitLabApi: URL private var repository: JsonNode? = null @@ -100,7 +101,7 @@ class GitLabChecker : VersionChecker { * @return [Update]-instance, wrapped in an [Optional], contianing information about the available update. */ override fun check(currentVersion: String, checkForPreReleases: Boolean): Optional<Update> { - logger.debug("Current version: $currentVersion") + log.debug("Current version: $currentVersion") try { val newVersion = isUpdateAvailable(currentVersion, checkForPreReleases) if (newVersion != "up_to_date") { @@ -153,9 +154,9 @@ class GitLabChecker : VersionChecker { ) } } catch (ex: NumberFormatException) { - logger.error("A version could not be parsed into integers.", ex) + log.error("A version could not be parsed into integers.", ex) } catch (ex: MalformedURLException) { - logger.error("URL could not be created.", ex) + log.error("URL could not be created.", ex) } return Optional.empty() } @@ -176,7 +177,7 @@ class GitLabChecker : VersionChecker { } } } - logger.debug("All versions: {}", versions) + log.debug("All versions: $versions") // In case the given repository does not have any releases return if (versions.size == 0) { @@ -207,7 +208,7 @@ class GitLabChecker : VersionChecker { return "no_release" } for (version in allVersions!!) { - logger.debug("version: $version") + log.debug("version: $version") if (!version.contains("alpha") && !version.contains("beta") && SemanticVersionComparator.compareSemantics( latest!!, version, diff --git a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/VersionChecker.kt b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/VersionChecker.kt index 5ce75085a..fb5f2a636 100644 --- a/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/VersionChecker.kt +++ b/serverpackcreator-updater/src/main/kotlin/de/griefed/versionchecker/VersionChecker.kt @@ -27,7 +27,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper import de.griefed.serverpackcreator.api.utilities.common.Comparison import de.griefed.serverpackcreator.api.utilities.common.SemanticVersionComparator -import org.apache.logging.log4j.LogManager +import org.apache.logging.log4j.kotlin.cachedLoggerOf import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader @@ -43,7 +43,7 @@ import java.util.* */ @Suppress("unused") abstract class VersionChecker { - private val logger = LogManager.getLogger(VersionChecker::class.java) + private val log by lazy { cachedLoggerOf(this.javaClass) } protected var allVersions: List<String>? = null private set @@ -60,7 +60,7 @@ abstract class VersionChecker { * New prerelease available: `Current version: 2.0.0. A new PreRelease is available: 3.0.0-alpha.14. Download available at: https://github.com/Griefed/ServerPackCreator/releases/tag/3.0.0-alpha.14` */ fun checkForUpdate(currentVersion: String, checkForPreReleases: Boolean): String { - logger.debug("Current version: $currentVersion") + log.debug("Current version: $currentVersion") return try { val newVersion = isUpdateAvailable(currentVersion, checkForPreReleases) if (newVersion == "up_to_date") { @@ -69,7 +69,7 @@ abstract class VersionChecker { newVersion + ";" + getDownloadUrl(newVersion!!) } } catch (ex: NumberFormatException) { - logger.error("A version could not be parsed into integers.", ex) + log.error("A version could not be parsed into integers.", ex) "No updates available." } } @@ -262,7 +262,7 @@ abstract class VersionChecker { } } } - logger.debug("Latest beta: $beta") + log.debug("Latest beta: $beta") return beta } @@ -288,7 +288,7 @@ abstract class VersionChecker { } } } - logger.debug("Latest alpha: $alpha") + log.debug("Latest alpha: $alpha") return alpha } diff --git a/serverpackcreator-web-frontend/build.gradle.kts b/serverpackcreator-web-frontend/build.gradle.kts index b9fbc5cd8..ed02bbc02 100644 --- a/serverpackcreator-web-frontend/build.gradle.kts +++ b/serverpackcreator-web-frontend/build.gradle.kts @@ -1,13 +1,3 @@ plugins { id("serverpackcreator.quasar-conventions") } - -/* -tasks.register("copyDist", Copy::class) { - from(projectDir.resolve("dist/spa")) - into(rootDir.resolve("serverpackcreator-web/src/main/resources/static")) -} - -tasks.build.get().finalizedBy( - tasks.getByName("copyDist") -)*/ diff --git a/serverpackcreator-web-frontend/package-lock.json b/serverpackcreator-web-frontend/package-lock.json index e28bb6c9c..1615f0596 100644 --- a/serverpackcreator-web-frontend/package-lock.json +++ b/serverpackcreator-web-frontend/package-lock.json @@ -8,26 +8,28 @@ "name": "serverpackcreator-web-frontend", "version": "2.0.0", "dependencies": { - "@quasar/extras": "^1.16.4", - "axios": "^1.2.1", + "@quasar/extras": "^1.16.11", + "apexcharts": "^3.49.0", + "axios": "^1.6.8", "pinia": "^2.0.11", - "quasar": "^2.6.0", - "vue": "^3.0.0", - "vue-i18n": "^9.2.2", - "vue-router": "^4.0.0" + "quasar": "^2.15.4", + "vue": "^3.4.25", + "vue-i18n": "^9.13.1", + "vue-router": "^4.3.2", + "vue3-apexcharts": "^1.5.2" }, "devDependencies": { - "@intlify/vite-plugin-vue-i18n": "^3.3.1", + "@intlify/vite-plugin-vue-i18n": "^7.0.0", "@quasar/app-vite": "^1.3.0", - "@types/node": "^12.20.21", - "@typescript-eslint/eslint-plugin": "^5.10.0", - "@typescript-eslint/parser": "^5.10.0", - "autoprefixer": "^10.4.2", - "eslint": "^8.10.0", - "eslint-config-prettier": "^8.1.0", - "eslint-plugin-vue": "^9.0.0", - "prettier": "^2.5.1", - "typescript": "^4.5.4" + "@types/node": "^20.12.7", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "autoprefixer": "^10.4.19", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-vue": "^9.25.0", + "prettier": "^3.2.5", + "typescript": "^5.4.5" }, "engines": { "node": "^18 || ^16 || ^14.19", @@ -45,9 +47,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -145,15 +147,15 @@ "dev": true }, "node_modules/@intlify/bundle-utils": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-2.2.2.tgz", - "integrity": "sha512-vngkvlIVV8ZJoyC5VqMvqJd2nvsx+qMN7pQjPiPjOrVndeiR7Dlue0k86Q8FsFUzyksW3HJZZi833ldxwbFzTA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-3.4.0.tgz", + "integrity": "sha512-2UQkqiSAOSPEHMGWlybqWm4G2K0X+FyYho5AwXz6QklSX1EY5EDmOSxZmwscn2qmKBnp6OYsme5kUrnN9xrWzQ==", "dev": true, "dependencies": { - "@intlify/message-compiler": "^9.1.0", - "@intlify/shared": "^9.1.0", + "@intlify/message-compiler": "next", + "@intlify/shared": "next", "jsonc-eslint-parser": "^1.0.1", - "source-map": "^0.6.1", + "source-map": "0.6.1", "yaml-eslint-parser": "^0.3.2" }, "engines": { @@ -169,12 +171,27 @@ } }, "node_modules/@intlify/core-base": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.8.0.tgz", - "integrity": "sha512-UxaSZVZ1DwqC/CltUZrWZNaWNhfmKtfyV4BJSt/Zt4Or/fZs1iFj0B+OekYk1+MRHfIOe3+x00uXGQI4PbO/9g==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz", + "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", "dependencies": { - "@intlify/message-compiler": "9.8.0", - "@intlify/shared": "9.8.0" + "@intlify/message-compiler": "9.13.1", + "@intlify/shared": "9.13.1" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/core-base/node_modules/@intlify/message-compiler": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", + "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", + "dependencies": { + "@intlify/shared": "9.13.1", + "source-map-js": "^1.0.2" }, "engines": { "node": ">= 16" @@ -184,11 +201,12 @@ } }, "node_modules/@intlify/message-compiler": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.8.0.tgz", - "integrity": "sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==", + "version": "10.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.0-alpha.3.tgz", + "integrity": "sha512-WjM1KAl5enpOfprfVAJ3FzwACmizZFPgyV0sn+QXoWH8BG2ahVkf7uVEqQH0mvUr2rKKaScwpzhH3wZ5F7ZdPw==", + "dev": true, "dependencies": { - "@intlify/shared": "9.8.0", + "@intlify/shared": "10.0.0-alpha.3", "source-map-js": "^1.0.2" }, "engines": { @@ -198,10 +216,22 @@ "url": "https://github.com/sponsors/kazupon" } }, + "node_modules/@intlify/message-compiler/node_modules/@intlify/shared": { + "version": "10.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.0-alpha.3.tgz", + "integrity": "sha512-fi2q48i+C6sSCAt3vOj/9LD3tkr1wcvLt+ifZEHrpPiwHCyKLDYGp5qBNUHUBBA/iqFTeWdtHUbHE9z9OeTXkw==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, "node_modules/@intlify/shared": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.8.0.tgz", - "integrity": "sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz", + "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==", "engines": { "node": ">= 16" }, @@ -210,40 +240,96 @@ } }, "node_modules/@intlify/vite-plugin-vue-i18n": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-3.4.0.tgz", - "integrity": "sha512-XXcZBgwJ+3FRu11c4ARoY9N00kElPii0/jNZ49qR045Ka7/YGCwb1Ku14BBlMSEHiHDSjLQknLwrJKSQGVZLyA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-7.0.0.tgz", + "integrity": "sha512-2TbDOQ8XD+vkc0s5OFmr+IY/k4mYMC7pzvx0xGQn+cU/ev314+yi7Z7N7rWcBgiYk1WOUalbGSo3d4nJDxOOyw==", + "deprecated": "This plugin support until Vite 3. If you would like to use on Vite 4, please use @intlify/unplugin-vue-i18n", "dev": true, "dependencies": { - "@intlify/bundle-utils": "^2.2.2", - "@intlify/shared": "^9.1.0", - "@rollup/pluginutils": "^4.1.0", + "@intlify/bundle-utils": "^3.1.2", + "@intlify/shared": "next", + "@rollup/pluginutils": "^4.2.0", "debug": "^4.3.1", "fast-glob": "^3.2.5", "source-map": "0.6.1" }, "engines": { - "node": ">= 12" + "node": ">= 14.6" }, "peerDependencies": { - "petite-vue-i18n": "^9.1.0", - "vite": "^2.0.0", - "vue-i18n": "^9.1.0" + "petite-vue-i18n": "*", + "vite": "^2.9.0 || ^3.0.0", + "vue-i18n": "*" }, "peerDependenciesMeta": { "petite-vue-i18n": { "optional": true }, + "vite": { + "optional": true + }, "vue-i18n": { "optional": true } } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -280,9 +366,9 @@ } }, "node_modules/@quasar/app-vite": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.7.1.tgz", - "integrity": "sha512-cs3ix7w8f7884JiTp3EW6auZ9R+Fg4qoPxEZ7VRGOrSsUg5oQtR/i91jeQk4Z96J/JUOqtcKqdqbzN4fzaFyIg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.8.5.tgz", + "integrity": "sha512-OB5nU9qKIl3p7Ton9fLWkSQTv1I/7slfQl8izhZPPJZRY755Jn4Kz1exYUoEgJJ4cLSaUI/cpnVOL59pw53NEg==", "dev": true, "dependencies": { "@quasar/render-ssr-error": "^1.0.3", @@ -304,7 +390,7 @@ "express": "^4.17.3", "fast-glob": "3.2.12", "fs-extra": "^11.1.0", - "html-minifier": "^4.0.0", + "html-minifier-terser": "^7.2.0", "inquirer": "^8.2.1", "isbinaryfile": "^5.0.0", "kolorist": "^1.5.1", @@ -333,6 +419,7 @@ "url": "https://donate.quasar.dev" }, "peerDependencies": { + "@electron/packager": ">= 18", "electron-builder": ">= 22", "electron-packager": ">= 15", "eslint": "^8.11.0", @@ -344,6 +431,9 @@ "workbox-build": ">= 6" }, "peerDependenciesMeta": { + "@electron/packager": { + "optional": true + }, "electron-builder": { "optional": true }, @@ -381,9 +471,9 @@ } }, "node_modules/@quasar/extras": { - "version": "1.16.9", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.9.tgz", - "integrity": "sha512-SlOhwzXyPQHWgQIS2ncyDdYdksCJvUYNtgsDQqzAKEG3r3d/ejOxvThle79HTK3Q6HB+gQWFG21Ux00Osr5XSw==", + "version": "1.16.11", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.11.tgz", + "integrity": "sha512-sbTBHOA+Hi7ah0P6qSm+xfRXqwJ94ct3NKA3Lkq3iNPYuHD7VXbSWtP2eA7Cu9Fd0WjVoPbngf6yFGg46U3IfQ==", "funding": { "type": "github", "url": "https://donate.quasar.dev" @@ -545,10 +635,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/qs": { "version": "6.9.11", @@ -563,9 +656,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "node_modules/@types/send": { @@ -590,32 +683,33 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -623,26 +717,42 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -651,16 +761,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -668,25 +778,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -695,12 +805,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -708,21 +818,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -734,43 +845,96 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "semver": "^7.6.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "7.7.1", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -797,49 +961,49 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz", - "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.25.tgz", + "integrity": "sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==", "dependencies": { - "@babel/parser": "^7.23.5", - "@vue/shared": "3.3.13", + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.25", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", - "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz", + "integrity": "sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==", "dependencies": { - "@vue/compiler-core": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-core": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", - "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", - "dependencies": { - "@babel/parser": "^7.23.5", - "@vue/compiler-core": "3.3.13", - "@vue/compiler-dom": "3.3.13", - "@vue/compiler-ssr": "3.3.13", - "@vue/reactivity-transform": "3.3.13", - "@vue/shared": "3.3.13", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz", + "integrity": "sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.25", + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.32", - "source-map-js": "^1.0.2" + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", - "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz", + "integrity": "sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==", "dependencies": { - "@vue/compiler-dom": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-dom": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/devtools-api": { @@ -848,60 +1012,53 @@ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" }, "node_modules/@vue/reactivity": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz", - "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.25.tgz", + "integrity": "sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==", "dependencies": { - "@vue/shared": "3.3.13" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", - "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", - "dependencies": { - "@babel/parser": "^7.23.5", - "@vue/compiler-core": "3.3.13", - "@vue/shared": "3.3.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "@vue/shared": "3.4.25" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz", - "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.25.tgz", + "integrity": "sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==", "dependencies": { - "@vue/reactivity": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/reactivity": "3.4.25", + "@vue/shared": "3.4.25" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", - "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz", + "integrity": "sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==", "dependencies": { - "@vue/runtime-core": "3.3.13", - "@vue/shared": "3.3.13", + "@vue/runtime-core": "3.4.25", + "@vue/shared": "3.4.25", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz", - "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.25.tgz", + "integrity": "sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==", "dependencies": { - "@vue/compiler-ssr": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25" }, "peerDependencies": { - "vue": "3.3.13" + "vue": "3.4.25" } }, "node_modules/@vue/shared": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz", - "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz", + "integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==" + }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" }, "node_modules/accepts": { "version": "1.3.8", @@ -1017,6 +1174,20 @@ "node": ">= 8" } }, + "node_modules/apexcharts": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.0.tgz", + "integrity": "sha512-2T9HnbQFLCuYRPndQLmh+bEQFoz0meUbvASaGgiSKDuYhWcLBodJtIpKql2aOtMx4B/sHrWW0dm90HsW4+h2PQ==", + "dependencies": { + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, "node_modules/archiver": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", @@ -1122,9 +1293,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "funding": [ { @@ -1141,9 +1312,9 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -1159,11 +1330,11 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -1215,13 +1386,13 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -1229,7 +1400,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -1291,9 +1462,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -1310,8 +1481,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -1355,6 +1526,12 @@ "node": "*" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1365,14 +1542,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -1388,19 +1570,19 @@ } }, "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001571", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", - "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "version": "1.0.30001613", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001613.tgz", + "integrity": "sha512-BNjJULJfOONQERivfxte7alLfeLW4QnwHvNW4wEcLEbXfV6VSCYvr+REbf2Sojv8tC1THpjPXBxWgDbq4NtLWg==", "dev": true, "funding": [ { @@ -1482,15 +1664,15 @@ } }, "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/cli-cursor": { @@ -1610,10 +1792,13 @@ } }, "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } }, "node_modules/compress-commons": { "version": "4.1.2", @@ -1723,9 +1908,9 @@ } }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -1835,17 +2020,20 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -1908,6 +2096,16 @@ "node": ">=6.0.0" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -1930,9 +2128,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.616", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", - "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", "dev": true }, "node_modules/elementtree": { @@ -1971,6 +2169,38 @@ "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "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, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.14.51", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", @@ -2409,9 +2639,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -2421,37 +2651,56 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.19.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz", - "integrity": "sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz", + "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", "xml-name-validator": "^4.0.0" }, "engines": { "node": "^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { @@ -2490,31 +2739,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2556,15 +2780,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -2577,7 +2792,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -2586,15 +2801,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -2619,17 +2825,17 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -2879,9 +3085,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -3000,16 +3206,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -3115,21 +3325,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -3162,34 +3372,25 @@ "node": ">= 0.4" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-minifier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", - "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dev": true, "dependencies": { - "camel-case": "^3.0.0", - "clean-css": "^4.2.1", - "commander": "^2.19.0", - "he": "^1.2.0", - "param-case": "^2.1.1", + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "uglify-js": "^3.5.1" + "terser": "^5.15.1" }, "bin": { - "html-minifier": "cli.js" + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=6" + "node": "^14.13.1 || >=16.0.0" } }, "node_modules/http-errors": { @@ -3241,9 +3442,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -3760,10 +3961,13 @@ } }, "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } }, "node_modules/lru-cache": { "version": "6.0.0", @@ -3778,14 +3982,11 @@ } }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/media-typer": { @@ -3930,12 +4131,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -3946,12 +4141,13 @@ } }, "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "dependencies": { - "lower-case": "^1.1.1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, "node_modules/node-releases": { @@ -4141,12 +4337,13 @@ } }, "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "dependencies": { - "no-case": "^2.2.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/parent-module": { @@ -4170,6 +4367,16 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4286,9 +4493,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -4306,16 +4513,16 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -4341,15 +4548,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -4404,9 +4611,9 @@ } }, "node_modules/quasar": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.2.tgz", - "integrity": "sha512-f5KliWtM5BEuFsDU4yvuP+dlVIWZNrGu5VpWFsxzjpoykcP4B2HIOUiCl3mx2NCqERHd4Ts0aeioRkt9TTeExA==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.15.4.tgz", + "integrity": "sha512-6Rtj0KrsVA0IV9zMZ6R7U7hOpwLS/6E06hsISVHRPn21KEm3XAwHdvy9xWz5kwqWraHRlcisFSDu/KPL4VQK1w==", "engines": { "node": ">= 10.18.1", "npm": ">= 6.13.4", @@ -4456,9 +4663,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -4843,15 +5050,17 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4897,14 +5106,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4952,13 +5165,23 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/stack-trace": { "version": "1.0.0-pre2", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-1.0.0-pre2.tgz", @@ -5068,6 +5291,89 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -5122,6 +5428,30 @@ "node": ">=6" } }, + "node_modules/terser": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", + "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5167,31 +5497,22 @@ "node": ">=0.6" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, "engines": { - "node": ">= 6" + "node": ">=16" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "typescript": ">=4.2.0" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/type-check": { @@ -5232,29 +5553,23 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/universalify": { "version": "2.0.1", @@ -5304,12 +5619,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5344,9 +5653,9 @@ } }, "node_modules/vite": { - "version": "2.9.17", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.17.tgz", - "integrity": "sha512-XxcRzra6d7xrKXH66jZUgb+srThoPu+TLJc06GifUyKq9JmjHkc1Numc8ra0h56rju2jfVWw3B3fs5l3OFMvUw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.18.tgz", + "integrity": "sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==", "dev": true, "dependencies": { "esbuild": "^0.14.27", @@ -5381,15 +5690,15 @@ } }, "node_modules/vue": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz", - "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz", + "integrity": "sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==", "dependencies": { - "@vue/compiler-dom": "3.3.13", - "@vue/compiler-sfc": "3.3.13", - "@vue/runtime-dom": "3.3.13", - "@vue/server-renderer": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-sfc": "3.4.25", + "@vue/runtime-dom": "3.4.25", + "@vue/server-renderer": "3.4.25", + "@vue/shared": "3.4.25" }, "peerDependencies": { "typescript": "*" @@ -5401,9 +5710,9 @@ } }, "node_modules/vue-eslint-parser": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -5424,38 +5733,13 @@ "eslint": ">=6.0.0" } }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/vue-i18n": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.8.0.tgz", - "integrity": "sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.13.1.tgz", + "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", "dependencies": { - "@intlify/core-base": "9.8.0", - "@intlify/shared": "9.8.0", + "@intlify/core-base": "9.13.1", + "@intlify/shared": "9.13.1", "@vue/devtools-api": "^6.5.0" }, "engines": { @@ -5469,11 +5753,11 @@ } }, "node_modules/vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "dependencies": { - "@vue/devtools-api": "^6.5.0" + "@vue/devtools-api": "^6.5.1" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -5482,6 +5766,15 @@ "vue": "^3.2.0" } }, + "node_modules/vue3-apexcharts": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.5.2.tgz", + "integrity": "sha512-rGbgUJDjtsyjfRF0uzwDjzt8+M7ICSRAbm1N9KCDiczW8BSpbEZuaEsJDJYnJuLFIIVXIGilYzIcjNBf6NbeYA==", + "peerDependencies": { + "apexcharts": "> 3.0.0", + "vue": "> 3.0.0" + } + }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -5682,9 +5975,9 @@ "dev": true }, "@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==" + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==" }, "@eslint-community/eslint-utils": { "version": "4.4.0", @@ -5748,60 +6041,123 @@ "dev": true }, "@intlify/bundle-utils": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-2.2.2.tgz", - "integrity": "sha512-vngkvlIVV8ZJoyC5VqMvqJd2nvsx+qMN7pQjPiPjOrVndeiR7Dlue0k86Q8FsFUzyksW3HJZZi833ldxwbFzTA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-3.4.0.tgz", + "integrity": "sha512-2UQkqiSAOSPEHMGWlybqWm4G2K0X+FyYho5AwXz6QklSX1EY5EDmOSxZmwscn2qmKBnp6OYsme5kUrnN9xrWzQ==", "dev": true, "requires": { - "@intlify/message-compiler": "^9.1.0", - "@intlify/shared": "^9.1.0", + "@intlify/message-compiler": "next", + "@intlify/shared": "next", "jsonc-eslint-parser": "^1.0.1", - "source-map": "^0.6.1", + "source-map": "0.6.1", "yaml-eslint-parser": "^0.3.2" } }, "@intlify/core-base": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.8.0.tgz", - "integrity": "sha512-UxaSZVZ1DwqC/CltUZrWZNaWNhfmKtfyV4BJSt/Zt4Or/fZs1iFj0B+OekYk1+MRHfIOe3+x00uXGQI4PbO/9g==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.13.1.tgz", + "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==", "requires": { - "@intlify/message-compiler": "9.8.0", - "@intlify/shared": "9.8.0" + "@intlify/message-compiler": "9.13.1", + "@intlify/shared": "9.13.1" + }, + "dependencies": { + "@intlify/message-compiler": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.13.1.tgz", + "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==", + "requires": { + "@intlify/shared": "9.13.1", + "source-map-js": "^1.0.2" + } + } } }, "@intlify/message-compiler": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.8.0.tgz", - "integrity": "sha512-McnYWhcoYmDJvssVu6QGR0shqlkJuL1HHdi5lK7fNqvQqRYaQ4lSLjYmZxwc8tRNMdIe9/KUKfyPxU9M6yCtNQ==", + "version": "10.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.0-alpha.3.tgz", + "integrity": "sha512-WjM1KAl5enpOfprfVAJ3FzwACmizZFPgyV0sn+QXoWH8BG2ahVkf7uVEqQH0mvUr2rKKaScwpzhH3wZ5F7ZdPw==", + "dev": true, "requires": { - "@intlify/shared": "9.8.0", + "@intlify/shared": "10.0.0-alpha.3", "source-map-js": "^1.0.2" + }, + "dependencies": { + "@intlify/shared": { + "version": "10.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.0-alpha.3.tgz", + "integrity": "sha512-fi2q48i+C6sSCAt3vOj/9LD3tkr1wcvLt+ifZEHrpPiwHCyKLDYGp5qBNUHUBBA/iqFTeWdtHUbHE9z9OeTXkw==", + "dev": true + } } }, "@intlify/shared": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.8.0.tgz", - "integrity": "sha512-TmgR0RCLjzrSo+W3wT0ALf9851iFMlVI9EYNGeWvZFUQTAJx0bvfsMlPdgVtV1tDNRiAfhkFsMKu6jtUY1ZLKQ==" + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.13.1.tgz", + "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==" }, "@intlify/vite-plugin-vue-i18n": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-3.4.0.tgz", - "integrity": "sha512-XXcZBgwJ+3FRu11c4ARoY9N00kElPii0/jNZ49qR045Ka7/YGCwb1Ku14BBlMSEHiHDSjLQknLwrJKSQGVZLyA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-7.0.0.tgz", + "integrity": "sha512-2TbDOQ8XD+vkc0s5OFmr+IY/k4mYMC7pzvx0xGQn+cU/ev314+yi7Z7N7rWcBgiYk1WOUalbGSo3d4nJDxOOyw==", "dev": true, "requires": { - "@intlify/bundle-utils": "^2.2.2", - "@intlify/shared": "^9.1.0", - "@rollup/pluginutils": "^4.1.0", + "@intlify/bundle-utils": "^3.1.2", + "@intlify/shared": "next", + "@rollup/pluginutils": "^4.2.0", "debug": "^4.3.1", "fast-glob": "^3.2.5", "source-map": "0.6.1" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -5829,9 +6185,9 @@ } }, "@quasar/app-vite": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.7.1.tgz", - "integrity": "sha512-cs3ix7w8f7884JiTp3EW6auZ9R+Fg4qoPxEZ7VRGOrSsUg5oQtR/i91jeQk4Z96J/JUOqtcKqdqbzN4fzaFyIg==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@quasar/app-vite/-/app-vite-1.8.5.tgz", + "integrity": "sha512-OB5nU9qKIl3p7Ton9fLWkSQTv1I/7slfQl8izhZPPJZRY755Jn4Kz1exYUoEgJJ4cLSaUI/cpnVOL59pw53NEg==", "dev": true, "requires": { "@quasar/render-ssr-error": "^1.0.3", @@ -5853,7 +6209,7 @@ "express": "^4.17.3", "fast-glob": "3.2.12", "fs-extra": "^11.1.0", - "html-minifier": "^4.0.0", + "html-minifier-terser": "^7.2.0", "inquirer": "^8.2.1", "isbinaryfile": "^5.0.0", "kolorist": "^1.5.1", @@ -5886,9 +6242,9 @@ } }, "@quasar/extras": { - "version": "1.16.9", - "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.9.tgz", - "integrity": "sha512-SlOhwzXyPQHWgQIS2ncyDdYdksCJvUYNtgsDQqzAKEG3r3d/ejOxvThle79HTK3Q6HB+gQWFG21Ux00Osr5XSw==" + "version": "1.16.11", + "resolved": "https://registry.npmjs.org/@quasar/extras/-/extras-1.16.11.tgz", + "integrity": "sha512-sbTBHOA+Hi7ah0P6qSm+xfRXqwJ94ct3NKA3Lkq3iNPYuHD7VXbSWtP2eA7Cu9Fd0WjVoPbngf6yFGg46U3IfQ==" }, "@quasar/render-ssr-error": { "version": "1.0.3", @@ -6024,10 +6380,13 @@ "dev": true }, "@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/qs": { "version": "6.9.11", @@ -6042,9 +6401,9 @@ "dev": true }, "@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true }, "@types/send": { @@ -6069,102 +6428,155 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", "dev": true, "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" } }, "@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" } }, "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "semver": "^7.6.0" + }, + "dependencies": { + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "7.7.1", + "eslint-visitor-keys": "^3.4.3" } }, "@ungap/structured-clone": { @@ -6181,49 +6593,49 @@ "requires": {} }, "@vue/compiler-core": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.13.tgz", - "integrity": "sha512-bwi9HShGu7uaZLOErZgsH2+ojsEdsjerbf2cMXPwmvcgZfVPZ2BVZzCVnwZBxTAYd6Mzbmf6izcUNDkWnBBQ6A==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.25.tgz", + "integrity": "sha512-Y2pLLopaElgWnMNolgG8w3C5nNUVev80L7hdQ5iIKPtMJvhVpG0zhnBG/g3UajJmZdvW0fktyZTotEHD1Srhbg==", "requires": { - "@babel/parser": "^7.23.5", - "@vue/shared": "3.3.13", + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.25", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "@vue/compiler-dom": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.13.tgz", - "integrity": "sha512-EYRDpbLadGtNL0Gph+HoKiYqXLqZ0xSSpR5Dvnu/Ep7ggaCbjRDIus1MMxTS2Qm0koXED4xSlvTZaTnI8cYAsw==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.25.tgz", + "integrity": "sha512-Ugz5DusW57+HjllAugLci19NsDK+VyjGvmbB2TXaTcSlQxwL++2PETHx/+Qv6qFwNLzSt7HKepPe4DcTE3pBWg==", "requires": { - "@vue/compiler-core": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-core": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/compiler-sfc": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.13.tgz", - "integrity": "sha512-DQVmHEy/EKIgggvnGRLx21hSqnr1smUS9Aq8tfxiiot8UR0/pXKHN9k78/qQ7etyQTFj5em5nruODON7dBeumw==", - "requires": { - "@babel/parser": "^7.23.5", - "@vue/compiler-core": "3.3.13", - "@vue/compiler-dom": "3.3.13", - "@vue/compiler-ssr": "3.3.13", - "@vue/reactivity-transform": "3.3.13", - "@vue/shared": "3.3.13", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.25.tgz", + "integrity": "sha512-m7rryuqzIoQpOBZ18wKyq05IwL6qEpZxFZfRxlNYuIPDqywrXQxgUwLXIvoU72gs6cRdY6wHD0WVZIFE4OEaAQ==", + "requires": { + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.25", + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25", "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.32", - "source-map-js": "^1.0.2" + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, "@vue/compiler-ssr": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.13.tgz", - "integrity": "sha512-d/P3bCeUGmkJNS1QUZSAvoCIW4fkOKK3l2deE7zrp0ypJEy+En2AcypIkqvcFQOcw3F0zt2VfMvNsA9JmExTaw==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.25.tgz", + "integrity": "sha512-H2ohvM/Pf6LelGxDBnfbbXFPyM4NE3hrw0e/EpwuSiYu8c819wx+SVGdJ65p/sFrYDd6OnSDxN1MB2mN07hRSQ==", "requires": { - "@vue/compiler-dom": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-dom": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/devtools-api": { @@ -6232,57 +6644,50 @@ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" }, "@vue/reactivity": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.13.tgz", - "integrity": "sha512-fjzCxceMahHhi4AxUBzQqqVhuA21RJ0COaWTbIBl1PruGW1CeY97louZzLi4smpYx+CHfFPPU/CS8NybbGvPKQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.25.tgz", + "integrity": "sha512-mKbEtKr1iTxZkAG3vm3BtKHAOhuI4zzsVcN0epDldU/THsrvfXRKzq+lZnjczZGnTdh3ojd86/WrP+u9M51pWQ==", "requires": { - "@vue/shared": "3.3.13" - } - }, - "@vue/reactivity-transform": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.13.tgz", - "integrity": "sha512-oWnydGH0bBauhXvh5KXUy61xr9gKaMbtsMHk40IK9M4gMuKPJ342tKFarY0eQ6jef8906m35q37wwA8DMZOm5Q==", - "requires": { - "@babel/parser": "^7.23.5", - "@vue/compiler-core": "3.3.13", - "@vue/shared": "3.3.13", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" + "@vue/shared": "3.4.25" } }, "@vue/runtime-core": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.13.tgz", - "integrity": "sha512-1TzA5TvGuh2zUwMJgdfvrBABWZ7y8kBwBhm7BXk8rvdx2SsgcGfz2ruv2GzuGZNvL1aKnK8CQMV/jFOrxNQUMA==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.25.tgz", + "integrity": "sha512-3qhsTqbEh8BMH3pXf009epCI5E7bKu28fJLi9O6W+ZGt/6xgSfMuGPqa5HRbUxLoehTNp5uWvzCr60KuiRIL0Q==", "requires": { - "@vue/reactivity": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/reactivity": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/runtime-dom": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.13.tgz", - "integrity": "sha512-JJkpE8R/hJKXqVTgUoODwS5wqKtOsmJPEqmp90PDVGygtJ4C0PtOkcEYXwhiVEmef6xeXcIlrT3Yo5aQ4qkHhQ==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.25.tgz", + "integrity": "sha512-ode0sj77kuwXwSc+2Yhk8JMHZh1sZp9F/51wdBiz3KGaWltbKtdihlJFhQG4H6AY+A06zzeMLkq6qu8uDSsaoA==", "requires": { - "@vue/runtime-core": "3.3.13", - "@vue/shared": "3.3.13", + "@vue/runtime-core": "3.4.25", + "@vue/shared": "3.4.25", "csstype": "^3.1.3" } }, "@vue/server-renderer": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.13.tgz", - "integrity": "sha512-vSnN+nuf6iSqTL3Qgx/9A+BT+0Zf/VJOgF5uMZrKjYPs38GMYyAU1coDyBNHauehXDaP+zl73VhwWv0vBRBHcg==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.25.tgz", + "integrity": "sha512-8VTwq0Zcu3K4dWV0jOwIVINESE/gha3ifYCOKEhxOj6MEl5K5y8J8clQncTcDhKF+9U765nRw4UdUEXvrGhyVQ==", "requires": { - "@vue/compiler-ssr": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-ssr": "3.4.25", + "@vue/shared": "3.4.25" } }, "@vue/shared": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.13.tgz", - "integrity": "sha512-/zYUwiHD8j7gKx2argXEMCUXVST6q/21DFU0sTfNX0URJroCe3b1UF6vLJ3lQDfLNIiiRl2ONp7Nh5UVWS6QnA==" + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.25.tgz", + "integrity": "sha512-k0yappJ77g2+KNrIaF0FFnzwLvUBLUYr8VOwz+/6vLsmItFp51AcxLL7Ey3iPd7BIRyWPOcqUjMnm7OkahXllA==" + }, + "@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==" }, "accepts": { "version": "1.3.8", @@ -6361,6 +6766,20 @@ "picomatch": "^2.0.4" } }, + "apexcharts": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.49.0.tgz", + "integrity": "sha512-2T9HnbQFLCuYRPndQLmh+bEQFoz0meUbvASaGgiSKDuYhWcLBodJtIpKql2aOtMx4B/sHrWW0dm90HsW4+h2PQ==", + "requires": { + "@yr/monotone-cubic-spline": "^1.0.3", + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, "archiver": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", @@ -6456,25 +6875,25 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "requires": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" } }, "axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "requires": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6509,13 +6928,13 @@ } }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -6523,7 +6942,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -6577,13 +6996,13 @@ } }, "browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" } @@ -6604,6 +7023,12 @@ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -6611,14 +7036,16 @@ "dev": true }, "call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -6628,19 +7055,19 @@ "dev": true }, "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, "caniuse-lite": { - "version": "1.0.30001571", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", - "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "version": "1.0.30001613", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001613.tgz", + "integrity": "sha512-BNjJULJfOONQERivfxte7alLfeLW4QnwHvNW4wEcLEbXfV6VSCYvr+REbf2Sojv8tC1THpjPXBxWgDbq4NtLWg==", "dev": true }, "chalk": { @@ -6682,9 +7109,9 @@ "dev": true }, "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -6776,9 +7203,9 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true }, "compress-commons": { @@ -6864,9 +7291,9 @@ "dev": true }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true }, "cookie-signature": { @@ -6944,14 +7371,14 @@ } }, "define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" } }, "define-lazy-prop": { @@ -6995,6 +7422,16 @@ "esutils": "^2.0.2" } }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "dot-prop": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", @@ -7011,9 +7448,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.616", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", - "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==", "dev": true }, "elementtree": { @@ -7046,6 +7483,26 @@ "once": "^1.4.0" } }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "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 + }, "esbuild": { "version": "0.14.51", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", @@ -7278,22 +7735,6 @@ "text-table": "^0.2.0" }, "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -7306,35 +7747,47 @@ } }, "eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "requires": {} }, "eslint-plugin-vue": { - "version": "9.19.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.19.2.tgz", - "integrity": "sha512-CPDqTOG2K4Ni2o4J5wixkLVNwgctKXFu6oBpVJlpNq7f38lh9I80pRTouZSJ2MAebPJlINU/KTFSXyQfBUlymA==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz", + "integrity": "sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", - "postcss-selector-parser": "^6.0.13", - "semver": "^7.5.4", - "vue-eslint-parser": "^9.3.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" } }, "eslint-utils": { @@ -7378,14 +7831,6 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -7395,20 +7840,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "estree-walker": { @@ -7429,17 +7866,17 @@ "dev": true }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -7642,9 +8079,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "form-data": { "version": "4.0.0", @@ -7717,11 +8154,12 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", @@ -7802,18 +8240,18 @@ "dev": true }, "has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "requires": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true }, "has-symbols": { @@ -7831,25 +8269,19 @@ "function-bind": "^1.1.2" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "html-minifier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", - "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", + "html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dev": true, "requires": { - "camel-case": "^3.0.0", - "clean-css": "^4.2.1", - "commander": "^2.19.0", - "he": "^1.2.0", - "param-case": "^2.1.1", + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "uglify-js": "^3.5.1" + "terser": "^5.15.1" } }, "http-errors": { @@ -7881,9 +8313,9 @@ "dev": true }, "ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true }, "immutable": { @@ -8285,10 +8717,13 @@ } }, "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } }, "lru-cache": { "version": "6.0.0", @@ -8300,9 +8735,9 @@ } }, "magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "requires": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -8404,12 +8839,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -8417,12 +8846,13 @@ "dev": true }, "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "requires": { - "lower-case": "^1.1.1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, "node-releases": { @@ -8558,12 +8988,13 @@ } }, "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "requires": { - "no-case": "^2.2.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "parent-module": { @@ -8581,6 +9012,16 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8646,19 +9087,19 @@ } }, "postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "requires": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" } }, "postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -8678,9 +9119,9 @@ "dev": true }, "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true }, "process-nextick-args": { @@ -8720,9 +9161,9 @@ } }, "quasar": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.14.2.tgz", - "integrity": "sha512-f5KliWtM5BEuFsDU4yvuP+dlVIWZNrGu5VpWFsxzjpoykcP4B2HIOUiCl3mx2NCqERHd4Ts0aeioRkt9TTeExA==" + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/quasar/-/quasar-2.15.4.tgz", + "integrity": "sha512-6Rtj0KrsVA0IV9zMZ6R7U7hOpwLS/6E06hsISVHRPn21KEm3XAwHdvy9xWz5kwqWraHRlcisFSDu/KPL4VQK1w==" }, "queue-microtask": { "version": "1.2.3", @@ -8746,9 +9187,9 @@ "dev": true }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "requires": { "bytes": "3.1.2", @@ -9039,15 +9480,17 @@ } }, "set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "requires": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" } }, "setprototypeof": { @@ -9081,14 +9524,15 @@ "dev": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -9121,9 +9565,19 @@ "dev": true }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, "stack-trace": { "version": "1.0.0-pre2", @@ -9195,6 +9649,70 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "requires": { + "svg.js": "^2.0.1" + } + }, + "svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "requires": { + "svg.js": ">=2.3.x" + } + }, + "svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "requires": { + "svg.js": "^2.2.5" + } + }, + "svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "requires": { + "svg.js": "^2.4.0" + } + }, + "svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "requires": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "dependencies": { + "svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "requires": { + "svg.js": "^2.2.5" + } + } + } + }, + "svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "requires": { + "svg.js": "^2.6.5" + } + }, "table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -9241,6 +9759,26 @@ "readable-stream": "^3.1.1" } }, + "terser": { + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", + "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -9277,29 +9815,19 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true }, + "ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "requires": {} + }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9326,15 +9854,15 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "devOptional": true }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, "universalify": { @@ -9359,12 +9887,6 @@ "picocolors": "^1.0.0" } }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -9393,9 +9915,9 @@ "dev": true }, "vite": { - "version": "2.9.17", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.17.tgz", - "integrity": "sha512-XxcRzra6d7xrKXH66jZUgb+srThoPu+TLJc06GifUyKq9JmjHkc1Numc8ra0h56rju2jfVWw3B3fs5l3OFMvUw==", + "version": "2.9.18", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.18.tgz", + "integrity": "sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==", "dev": true, "requires": { "esbuild": "^0.14.27", @@ -9406,21 +9928,21 @@ } }, "vue": { - "version": "3.3.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.13.tgz", - "integrity": "sha512-LDnUpQvDgsfc0u/YgtAgTMXJlJQqjkxW1PVcOnJA5cshPleULDjHi7U45pl2VJYazSSvLH8UKcid/kzH8I0a0Q==", + "version": "3.4.25", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.25.tgz", + "integrity": "sha512-HWyDqoBHMgav/OKiYA2ZQg+kjfMgLt/T0vg4cbIF7JbXAjDexRf5JRg+PWAfrAkSmTd2I8aPSXtooBFWHB98cg==", "requires": { - "@vue/compiler-dom": "3.3.13", - "@vue/compiler-sfc": "3.3.13", - "@vue/runtime-dom": "3.3.13", - "@vue/server-renderer": "3.3.13", - "@vue/shared": "3.3.13" + "@vue/compiler-dom": "3.4.25", + "@vue/compiler-sfc": "3.4.25", + "@vue/runtime-dom": "3.4.25", + "@vue/server-renderer": "3.4.25", + "@vue/shared": "3.4.25" } }, "vue-eslint-parser": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", "dev": true, "requires": { "debug": "^4.3.4", @@ -9430,44 +9952,32 @@ "esquery": "^1.4.0", "lodash": "^4.17.21", "semver": "^7.3.6" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "vue-i18n": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.8.0.tgz", - "integrity": "sha512-Izho+6PYjejsTq2mzjcRdBZ5VLRQoSuuexvR8029h5CpN03FYqiqBrShMyf2I1DKkN6kw/xmujcbvC+4QybpsQ==", + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.13.1.tgz", + "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==", "requires": { - "@intlify/core-base": "9.8.0", - "@intlify/shared": "9.8.0", + "@intlify/core-base": "9.13.1", + "@intlify/shared": "9.13.1", "@vue/devtools-api": "^6.5.0" } }, "vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "requires": { - "@vue/devtools-api": "^6.5.0" + "@vue/devtools-api": "^6.5.1" } }, + "vue3-apexcharts": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.5.2.tgz", + "integrity": "sha512-rGbgUJDjtsyjfRF0uzwDjzt8+M7ICSRAbm1N9KCDiczW8BSpbEZuaEsJDJYnJuLFIIVXIGilYzIcjNBf6NbeYA==", + "requires": {} + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", diff --git a/serverpackcreator-web-frontend/package.json b/serverpackcreator-web-frontend/package.json index 6fea865fb..40c428729 100644 --- a/serverpackcreator-web-frontend/package.json +++ b/serverpackcreator-web-frontend/package.json @@ -14,26 +14,28 @@ "build": "quasar build" }, "dependencies": { - "axios": "^1.2.1", - "vue-i18n": "^9.2.2", + "@quasar/extras": "^1.16.11", + "apexcharts": "^3.49.0", + "axios": "^1.6.8", "pinia": "^2.0.11", - "@quasar/extras": "^1.16.4", - "quasar": "^2.6.0", - "vue": "^3.0.0", - "vue-router": "^4.0.0" + "quasar": "^2.15.4", + "vue": "^3.4.25", + "vue-i18n": "^9.13.1", + "vue-router": "^4.3.2", + "vue3-apexcharts": "^1.5.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.10.0", - "@typescript-eslint/parser": "^5.10.0", - "eslint": "^8.10.0", - "eslint-plugin-vue": "^9.0.0", - "eslint-config-prettier": "^8.1.0", - "prettier": "^2.5.1", - "@types/node": "^12.20.21", - "@intlify/vite-plugin-vue-i18n": "^3.3.1", + "@intlify/vite-plugin-vue-i18n": "^7.0.0", "@quasar/app-vite": "^1.3.0", - "autoprefixer": "^10.4.2", - "typescript": "^4.5.4" + "@types/node": "^20.12.7", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", + "autoprefixer": "^10.4.19", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-vue": "^9.25.0", + "prettier": "^3.2.5", + "typescript": "^5.4.5" }, "engines": { "node": "^18 || ^16 || ^14.19", diff --git a/serverpackcreator-web-frontend/quasar.config.js b/serverpackcreator-web-frontend/quasar.config.js index bd838a57e..debafd2ee 100644 --- a/serverpackcreator-web-frontend/quasar.config.js +++ b/serverpackcreator-web-frontend/quasar.config.js @@ -31,6 +31,7 @@ module.exports = configure(function (/* ctx */) { // https://v2.quasar.dev/quasar-cli-vite/boot-files boot: [ 'i18n', + 'apexcharts', 'axios' ], diff --git a/serverpackcreator-web-frontend/src/boot/apexcharts.js b/serverpackcreator-web-frontend/src/boot/apexcharts.js new file mode 100644 index 000000000..9d442f2dd --- /dev/null +++ b/serverpackcreator-web-frontend/src/boot/apexcharts.js @@ -0,0 +1,6 @@ +import VueApexCharts from 'vue3-apexcharts' +import { boot } from 'quasar/wrappers' + +export default boot(({ app }) => { + app.use(VueApexCharts) +}) diff --git a/serverpackcreator-web-frontend/src/boot/axios.ts b/serverpackcreator-web-frontend/src/boot/axios.ts index 064e0902b..690171bad 100644 --- a/serverpackcreator-web-frontend/src/boot/axios.ts +++ b/serverpackcreator-web-frontend/src/boot/axios.ts @@ -18,28 +18,34 @@ const baseUrl = '/api/v2/'; const versions = axios.create({ baseURL: baseUrl + 'versions', method: 'get', - timeout: 5000, + timeout: 5000 }); const settings = axios.create({ baseURL: baseUrl + 'settings/', method: 'get', - timeout: 5000, + timeout: 5000 }); const events = axios.create({ baseURL: baseUrl + 'events/', method: 'get', - timeout: 5000, + timeout: 5000 }); const serverpacks = axios.create({ baseURL: baseUrl + 'serverpacks/', - method: 'get', - timeout: 5000, + method: 'get' }); const modpacks = axios.create({ - baseURL: baseUrl + 'modpacks/', + baseURL: baseUrl + 'modpacks/' }); const runConfigs = axios.create({ - baseURL: baseUrl + 'runconfigs/' + baseURL: baseUrl + 'runconfigs/', + method: 'get', + timeout: 5000 +}) +const stats = axios.create({ + baseURL: baseUrl + '/stats/', + method: 'get', + timeout: 5000 }) export default boot(({ app }) => { @@ -54,7 +60,8 @@ export default boot(({ app }) => { app.config.globalProperties.$events = events; app.config.globalProperties.$serverpacks = serverpacks; app.config.globalProperties.$modpacks = modpacks; - app.config.globalProperties.$runConfigs = runConfigs + app.config.globalProperties.$runConfigs = runConfigs; + app.config.globalProperties.$stats = stats; }); -export { versions, settings, events, serverpacks, modpacks, runConfigs }; +export { versions, settings, events, serverpacks, modpacks, runConfigs, stats }; diff --git a/serverpackcreator-web-frontend/src/components/ExampleComponent.vue b/serverpackcreator-web-frontend/src/components/ExampleComponent.vue deleted file mode 100644 index 3bfd35e15..000000000 --- a/serverpackcreator-web-frontend/src/components/ExampleComponent.vue +++ /dev/null @@ -1,64 +0,0 @@ -<template> - <div> - <p>{{ title }}</p> - <ul> - <li v-for="todo in todos" :key="todo.id" @click="increment"> - {{ todo.id }} - {{ todo.content }} - </li> - </ul> - <p>Count: {{ todoCount }} / {{ meta.totalCount }}</p> - <p>Active: {{ active ? 'yes' : 'no' }}</p> - <p>Clicks on todos: {{ clickCount }}</p> - </div> -</template> - -<script lang="ts"> -import { - defineComponent, - PropType, - computed, - ref, - toRef, - Ref, -} from 'vue'; -import { Todo, Meta } from './models'; - -function useClickCount() { - const clickCount = ref(0); - function increment() { - clickCount.value += 1 - return clickCount.value; - } - - return { clickCount, increment }; -} - -function useDisplayTodo(todos: Ref<Todo[]>) { - const todoCount = computed(() => todos.value.length); - return { todoCount }; -} - -export default defineComponent({ - name: 'ExampleComponent', - props: { - title: { - type: String, - required: true - }, - todos: { - type: Array as PropType<Todo[]>, - default: () => [] - }, - meta: { - type: Object as PropType<Meta>, - required: true - }, - active: { - type: Boolean - } - }, - setup (props) { - return { ...useClickCount(), ...useDisplayTodo(toRef(props, 'todos')) }; - }, -}); -</script> diff --git a/serverpackcreator-web-frontend/src/components/HistoryTable.vue b/serverpackcreator-web-frontend/src/components/HistoryTable.vue index 6d269dc35..a55f93ad3 100644 --- a/serverpackcreator-web-frontend/src/components/HistoryTable.vue +++ b/serverpackcreator-web-frontend/src/components/HistoryTable.vue @@ -2,7 +2,7 @@ <q-table class="sticky-header-table" :rows="rows" :columns="columns" row-key="id" bordered dense :filter="filter" no-data-label="No history available (yet)..." title="History / Event Log" no-results-label="The search didn't uncover any results" - :pagination="initialPagination" :loading="visible"> + :pagination="initialPagination" :loading="visible" :visible-columns="visibleColumns"> <template v-slot:loading> <q-inner-loading showing color="accent"/> </template> @@ -13,6 +13,32 @@ <q-icon name="search"/> </template> </q-input> + <q-separator inset spaced/> + <q-select + v-model="visibleColumns" + multiple + outlined + dense + options-dense + :display-value="$q.lang.table.columns" + emit-value + map-options + :options="columns" + option-value="name" + options-cover + style="min-width: 150px" + > + <template v-slot:option="{ itemProps, opt, selected, toggleOption }"> + <q-item v-bind="itemProps"> + <q-item-section> + <q-item-label>{{ opt.label }}</q-item-label> + </q-item-section> + <q-item-section side> + <q-toggle :model-value="selected" @update:model-value="toggleOption(opt)" /> + </q-item-section> + </q-item> + </template> + </q-select> </template> <template v-slot:header="props"> @@ -25,7 +51,6 @@ </q-th> </q-tr> </template> - <template v-slot:body="props"> <q-tr :props="props"> <q-td auto-width> @@ -122,6 +147,7 @@ export default defineComponent({ }, rows: ref([]), columns, + visibleColumns: ref([ 'modPackId', 'serverPackId', 'status', 'message', 'timestamp', 'errors' ]), initialPagination: { sortBy: 'timestamp', descending: true, diff --git a/serverpackcreator-web-frontend/src/components/ModpacksTable.vue b/serverpackcreator-web-frontend/src/components/ModpacksTable.vue index 2043330ce..fc52e6e29 100644 --- a/serverpackcreator-web-frontend/src/components/ModpacksTable.vue +++ b/serverpackcreator-web-frontend/src/components/ModpacksTable.vue @@ -1,7 +1,8 @@ <template> <q-table class="sticky-header-table" :rows="rows" :columns="columns" row-key="id" title="Modpacks" bordered dense no-data-label="No modpacks available (yet)..." :filter="filter" - no-results-label="The search didn't uncover any results" :pagination="initialPagination" :loading="visible"> + no-results-label="The search didn't uncover any results" :pagination="initialPagination" :loading="visible" + :visible-columns="visibleColumns"> <template v-slot:loading> <q-inner-loading showing color="accent"/> </template> @@ -12,6 +13,32 @@ <q-icon name="search"/> </template> </q-input> + <q-separator inset spaced/> + <q-select + v-model="visibleColumns" + multiple + outlined + dense + options-dense + :display-value="$q.lang.table.columns" + emit-value + map-options + :options="columns" + option-value="name" + options-cover + style="min-width: 150px" + > + <template v-slot:option="{ itemProps, opt, selected, toggleOption }"> + <q-item v-bind="itemProps"> + <q-item-section> + <q-item-label>{{ opt.label }}</q-item-label> + </q-item-section> + <q-item-section side> + <q-toggle :model-value="selected" @update:model-value="toggleOption(opt)" /> + </q-item-section> + </q-item> + </template> + </q-select> </template> <template v-slot:header="props"> @@ -38,7 +65,7 @@ <q-td v-for="col in props.cols" :key="col.name" :props="props" auto-width> <span v-if="col.name === 'download'"> <q-btn :to="'/download/modpack/' + props.row.id" color="info" dense icon="download" round size="sm" - v-if="props.row.size > 0"> + @click="props.row.downloads++" v-if="props.row.size > 0" > <q-tooltip> Download modpack </q-tooltip> @@ -67,7 +94,9 @@ import ServerPacksTable from 'components/ServerPacksTable.vue'; const columns = [ {name: 'id', label: 'Modpack ID', field: 'id', sortable: true, align: 'left'}, {name: 'name', label: 'Name', field: 'name', sortable: false, align: 'left'}, + {name: 'fileID', label: 'File ID', field: 'fileID', sortable: false, align: 'left'}, {name: 'download', label: 'Download', sortable: false, align: 'center'}, + {name: 'downloads', label: 'Downloads', field: 'downloads', sortable: true, align: 'left'}, {name: 'projectID', label: 'Project ID', field: 'projectID', sortable: true, align: 'left'}, {name: 'versionID', label: 'Version ID', field: 'versionID', sortable: true, align: 'left'}, {name: 'source', label: 'Source', field: 'source', sortable: false, align: 'left'}, @@ -114,6 +143,7 @@ export default defineComponent({ }, rows: ref([]), columns, + visibleColumns: ref([ 'id', 'name', 'download', 'downloads', 'status', 'size', 'serverPacks', 'sha256', 'dateCreated' ]), initialPagination: { sortBy: 'id', descending: true, diff --git a/serverpackcreator-web-frontend/src/components/ServerPacksTable.vue b/serverpackcreator-web-frontend/src/components/ServerPacksTable.vue index 0ad9619ad..734b1689a 100644 --- a/serverpackcreator-web-frontend/src/components/ServerPacksTable.vue +++ b/serverpackcreator-web-frontend/src/components/ServerPacksTable.vue @@ -1,7 +1,8 @@ <template> <q-table :rows="rows" :columns="columns" row-key="id" title="Server Packs" id="serverpacktable" :filter="filter" bordered dense no-data-label="No server packs available (yet)..." - no-results-label="The search didn't uncover any results" :pagination="initialPagination" :loading="visible"> + no-results-label="The search didn't uncover any results" :pagination="initialPagination" :loading="visible" + :visible-columns="visibleColumns"> <template v-slot:loading> <q-inner-loading showing color="accent"/> </template> @@ -12,6 +13,32 @@ <q-icon name="search"/> </template> </q-input> + <q-separator inset spaced/> + <q-select + v-model="visibleColumns" + multiple + outlined + dense + options-dense + :display-value="$q.lang.table.columns" + emit-value + map-options + :options="columns" + option-value="name" + options-cover + style="min-width: 150px" + > + <template v-slot:option="{ itemProps, opt, selected, toggleOption }"> + <q-item v-bind="itemProps"> + <q-item-section> + <q-item-label>{{ opt.label }}</q-item-label> + </q-item-section> + <q-item-section side> + <q-toggle :model-value="selected" @update:model-value="toggleOption(opt)" /> + </q-item-section> + </q-item> + </template> + </q-select> </template> <template v-slot:header="props"> @@ -24,7 +51,6 @@ </q-th> </q-tr> </template> - <template v-slot:body="props"> <q-tr :props="props"> <q-td auto-width> @@ -97,6 +123,7 @@ import RunConfigurationCard from 'components/RunConfigurationCard.vue'; const columns = [ {name: 'id', label: 'ServerPack ID', field: 'id', sortable: true, align: 'left'}, {name: 'size', label: 'Size', field: 'size', sortable: false, align: 'left'}, + {name: 'fileID', label: 'File ID', field: 'fileID', sortable: false, align: 'left'}, {name: 'download', label: 'Download', sortable: false, align: 'center'}, {name: 'downloads', label: 'Downloads', field: 'downloads', sortable: true, align: 'left'}, {name: 'confirmedWorking', label: 'Confirmed Working', field: 'confirmedWorking', sortable: true, align: 'left'}, @@ -147,6 +174,7 @@ export default defineComponent({ }, rows: ref([]), columns, + visibleColumns: ref([ 'id', 'size', 'download', 'downloads', 'confirmedWorking', 'sha256', 'dateCreated' ]), initialPagination: { sortBy: 'id', descending: true, diff --git a/serverpackcreator-web-frontend/src/components/SubmitModPackForm.vue b/serverpackcreator-web-frontend/src/components/SubmitModPackForm.vue index 05eb97b17..38cdb90c3 100644 --- a/serverpackcreator-web-frontend/src/components/SubmitModPackForm.vue +++ b/serverpackcreator-web-frontend/src/components/SubmitModPackForm.vue @@ -167,7 +167,7 @@ > <q-linear-progress v-if="progress > 0" :stripe="progress === 1" class="absolute-full full-height" :value="progress" color="positive" track-color="primary" instant-feedback> - <div class="absolute-full flex flex-center"> + <div class="absolute-full flex-center" style="display: flex; justify-content: flex-end; margin-right: 10px;"> <q-badge v-if="progress < 1" color="white" text-color="accent" :label="'Uploaded: ' + Math.round(progress * 100) + '%'"/> <q-badge v-else color="white" text-color="accent" label="Upload done. Checking..."/> </div> @@ -186,7 +186,7 @@ <q-icon name="folder_zip" @click.stop.prevent/> </template> <template v-slot:append> - <q-icon name="close" @click.stop.prevent="file = null" class="cursor-pointer"/> + <q-icon v-if="!uploading" name="close" @click.stop.prevent="file = null" class="cursor-pointer"/> <q-btn dense flat icon="help_outline" round @click="zipInfo = true"/> </template> diff --git a/serverpackcreator-web-frontend/src/components/charts/AreaTimeSeriesChart.vue b/serverpackcreator-web-frontend/src/components/charts/AreaTimeSeriesChart.vue new file mode 100644 index 000000000..e97ad0eca --- /dev/null +++ b/serverpackcreator-web-frontend/src/components/charts/AreaTimeSeriesChart.vue @@ -0,0 +1,83 @@ +<template> + <apexchart ref="chart1" height="300" type="area" :options="options" :series="series"></apexchart> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { getCssVar } from 'quasar'; +import { stats } from 'boot/axios'; + +export default defineComponent({ + name: 'AreaTimeSeriesChart', + components: {}, + props: { + endpoint: String, + title: String, + seriesName: String + }, + setup () { + return { + options: { + chart: { + type: 'area' + }, + yaxis: { + labels: { + formatter: (value) => { return value.toFixed(0) } + } + }, + colors: [ + getCssVar('primary'), + getCssVar('secondary'), + getCssVar('negative') + ], + markers: { + size: 4, + hover: { + sizeOffset: 6 + } + }, + xaxis: { + type: 'datetime', + }, + noData: { + text: 'No data' + }, + dataLabels: { + enabled: true + }, + }, + series: [{ + name: 'nodatayet', + data: [] + }] + }; + }, + mounted() { + this.uChart() + }, + methods: { + uChart: function() { + stats.get(this.$props.endpoint).then(response => { + let data = response.data + let formattedData = data.map((e) => { + return { + x: Object.values(e)[1], + y: Object.values(e)[0] + } + }) + this.series = [{ + name: this.$props.seriesName, + data: formattedData + }] + this.$refs.chart1.updateSeries(this.series, true); + }) + } + }, +}); +</script> + + +<style scoped> + +</style> diff --git a/serverpackcreator-web-frontend/src/components/charts/DiskUsageBarGraph.vue b/serverpackcreator-web-frontend/src/components/charts/DiskUsageBarGraph.vue new file mode 100644 index 000000000..be389f6f3 --- /dev/null +++ b/serverpackcreator-web-frontend/src/components/charts/DiskUsageBarGraph.vue @@ -0,0 +1,128 @@ +<template> + <apexchart ref="chart1" height="400" type="bar" :options="options" :series="series"></apexchart> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { getCssVar } from 'quasar'; +import { stats } from 'boot/axios'; + +export default defineComponent({ + name: 'DiskUsageBarGraph', + components: {}, + props: { + endpoint: String, + title: String, + seriesName: String + }, + setup () { + return { + options: { + chart: { + type: 'bar', + stacked: true, + stackType: '100%' + }, + xaxis: { + categories: [ + 'Home', + 'ModPacks', + 'Server Packs', + 'Properties', + 'Configs', + 'Server Files', + 'Icons', + 'Plugins', + 'Plugin Configs', + 'Manifests', + 'Minecraft Server Manifests', + 'Installer Cache', + 'Logs', + 'Tomcat Base', + 'Tomcat Logs', + 'Work', + 'Temp' + ], + }, + fill: { + opacity: 1 + }, + legend: { + position: 'right', + offsetX: 0, + offsetY: 50 + }, + colors: [ + getCssVar('primary'), + getCssVar('secondary'), + getCssVar('negative') + ], + noData: { + text: 'No data' + }, + dataLabels: { + enabled: true + }, + yaxis: { + labels: { + formatter: (value) => { return value.toFixed(0) + '%' } + } + }, + tooltip: { + y: { + formatter: (value) => { return value.toFixed(2) + ' GB' } + } + }, + responsive: [{ + breakpoint: 480, + options: { + legend: { + position: 'bottom', + offsetX: -10, + offsetY: 0 + } + } + }], + }, + series: [] + }; + }, + mounted() { + this.uChart() + }, + methods: { + uChart: function() { + stats.get(this.$props.endpoint).then(response => { + let data = response.data + let freeSpace = [] + let usedSpace = [] + let usedBySPC = [] + for (let disk of data) { + freeSpace.push(disk.freeSpace / (1024**3)) + usedSpace.push((disk.totalSpace - disk.freeSpace - disk.usedBySPC) / (1024**3)) + usedBySPC.push(disk.usedBySPC / (1024**3)) + } + let freeSeries = { + name: 'Free Disk Space', + data: freeSpace + } + let usedSeries = { + name: 'Used Disk Space', + data: usedSpace + } + let usageSeries = { + name: 'Used by SPC', + data: usedBySPC + } + this.series = [freeSeries, usedSeries, usageSeries] + this.$refs.chart1.updateSeries(this.series, true); + }) + } + }, +}); +</script> + + +<style scoped> + +</style> diff --git a/serverpackcreator-web-frontend/src/components/charts/ModServerRunPieChart.vue b/serverpackcreator-web-frontend/src/components/charts/ModServerRunPieChart.vue new file mode 100644 index 000000000..38500d079 --- /dev/null +++ b/serverpackcreator-web-frontend/src/components/charts/ModServerRunPieChart.vue @@ -0,0 +1,92 @@ +<template> + <apexchart ref="chart1" height="300" type="donut" :options="options" :series="series"></apexchart> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import { getCssVar } from 'quasar'; +import { stats } from 'boot/axios'; + +export default defineComponent({ + name: 'ModServerRunPieChart', + components: {}, + props: { + endpoint: String, + title: String, + seriesName: String + }, + setup () { + return { + options: { + chart: { + type: 'donut' + }, + plotOptions: { + pie: { + donut: { + labels: { + show: true, + total: { + label: 'Total', + show: true, + showAlways: true, + formatter: function (w) { + return w.globals.series[0] + + w.globals.series[1] + + w.globals.series[2] + } + } + } + } + } + }, + labels: [ + 'Modpacks', + 'Server Packs', + 'Run Configurations' + ], + colors: [ + getCssVar('primary'), + getCssVar('secondary'), + getCssVar('negative') + ], + noData: { + text: 'No data' + }, + dataLabels: { + enabled: true + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: 'bottom' + } + } + }] + }, + series: [0, 0, 0] + }; + }, + mounted() { + this.uChart() + }, + methods: { + uChart: function() { + stats.get(this.$props.endpoint).then(response => { + let data = response.data + this.series = [data.modPacks, data.serverPacks, data.runConfigurations] + this.$refs.chart1.updateSeries(this.series, true); + }) + } + }, +}); +</script> + + +<style scoped> + +</style> diff --git a/serverpackcreator-web-frontend/src/pages/DownloadsPage.vue b/serverpackcreator-web-frontend/src/pages/DownloadsPage.vue index 72430cb28..9a8b4ca4e 100644 --- a/serverpackcreator-web-frontend/src/pages/DownloadsPage.vue +++ b/serverpackcreator-web-frontend/src/pages/DownloadsPage.vue @@ -1,6 +1,6 @@ <template> - <q-page class="col items-center justify-evenly"> - <q-card square> + <q-page class="q-pa-sm"> + <q-card rounded> <ModpacksTable class="table-size"/> </q-card> </q-page> @@ -23,7 +23,7 @@ export default defineComponent({ <style scoped> .table-size { - height: calc(100vh - 53px);; + height: calc(100vh - 67px);; box-sizing: border-box; } </style> diff --git a/serverpackcreator-web-frontend/src/pages/IndexPage.vue b/serverpackcreator-web-frontend/src/pages/IndexPage.vue index 7c9adbc09..d4002e281 100644 --- a/serverpackcreator-web-frontend/src/pages/IndexPage.vue +++ b/serverpackcreator-web-frontend/src/pages/IndexPage.vue @@ -1,89 +1,75 @@ <template> - <q-page class="row items-center justify-evenly"> - <q-card bordered style='max-width: 80%'> - <q-card-section> - <div class="text-h6">Welcome to ServerPackCreator!</div> - </q-card-section> - - <q-card-section class="q-pt-none"> - Welcome to the ServerPackCreator-Webservice, where you can generate server packs from your modpacks, - without having to install any software.<br> - <br> - The web-version of ServerPackCreator is a convenient way of generating a server pack with minimal effort. - Said minimal effort comes at a price, though! Some customization-options are not available in the web-version of - ServerPackCreator. For maximum customization of your server pack, make sure to download and install it to your - machine.<br> - Some options not available in the web-version are: - <ul> - <li>Custom script templates</li> - <li>Custom server icon</li> - <li>custom server properties</li> - <li>Custom server pack suffix</li> - <li>Custom script variables and values</li> - <li>Custom inclusions of files and / or folders</li> - <li>etc.</li> - </ul> - <br> - If you're fine with the limited options the web-version offers, feel free to proceed to the ZIP-page and upload - your modpack! - </q-card-section> - - <q-separator inset /> - - <q-card-section> - The menu on the left lets you browse to the different areas of the web-version of ServerPackCreator.<br> - The list below gives you a small overview of what's what and what's available.<br> - <br> - I suggest checking out the <strong>Submissions</strong>-page first! - </q-card-section> - - <q-list> - <IndexItem - v-for="item in indexItems" - :key="item.title" - v-bind="item" - /> - </q-list> - </q-card> + <q-page class="q-pa-sm"> + <div class="row q-col-gutter-sm q-py-xs"> + <div class="col-lg-6 col-md-12 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Disk Usage(s)</div> + <DiskUsageBarGraph endpoint="disk" series-name="Disk Usage"></DiskUsageBarGraph> + </q-card-section> + </q-card> + </div> + </div> + <div class="row q-col-gutter-sm q-py-xs"> + <div class="col-lg-3 col-md-6 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Modpack Uploads</div> + <AreaTimeSeriesChart endpoint="creation/modpacks" series-name="Modpack Uploads"></AreaTimeSeriesChart> + </q-card-section> + </q-card> + </div> + <div class="col-lg-3 col-md-6 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Server Pack Creations</div> + <AreaTimeSeriesChart endpoint="creation/serverpacks" series-name="Server Pack Creations"></AreaTimeSeriesChart> + </q-card-section> + </q-card> + </div> + <div class="col-lg-3 col-md-6 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Modpack Downloads</div> + <AreaTimeSeriesChart endpoint="downloads/modpacks" series-name="Modpack Downloads"></AreaTimeSeriesChart> + </q-card-section> + </q-card> + </div> + <div class="col-lg-3 col-md-6 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Server Pack Downloads</div> + <AreaTimeSeriesChart endpoint="downloads/serverpacks" series-name="Server Pack Downloads"></AreaTimeSeriesChart> + </q-card-section> + </q-card> + </div> + <div class="col-lg-3 col-md-6 col-sm-12 col-xs-12"> + <q-card> + <q-card-section> + <div class="text-h6">Modpacks - Server Packs - Run Configurations</div> + <ModServerRunPieChart endpoint="packs" ></ModServerRunPieChart> + </q-card-section> + </q-card> + </div> + </div> </q-page> </template> <script lang="ts"> import { defineComponent } from 'vue'; -import IndexItem from 'components/IndexItem.vue'; -const indexItems = [ - { - title: 'Submissions', - caption: 'This is where you upload a zipped modpack, or request a regeneration of an already uploaded modpack, in order to have ServerPackCreator generate a server pack from it.', - icon: 'upload', - link: 'submissions' - }, - { - title: 'Downloads', - caption: 'Here you can browse available modpacks and their available server packs, and download any modpack and server pack you want.', - icon: 'download', - link: 'downloads' - }, - { - title: 'Event Log / History', - caption: 'See the latest history for submitted tasks and find out whether your server pack was generated, or whether it is still waiting in the queue.', - icon: 'history', - link: 'history' - }, - { - title: 'About ServerPackCreator', - caption: 'General information about this instance of the ServerPackCreator webservice, like the version, useful links, etc...', - icon: 'info', - link: 'about' - } -] +import AreaTimeSeriesChart from 'components/charts/AreaTimeSeriesChart.vue'; +import DiskUsageBarGraph from 'components/charts/DiskUsageBarGraph.vue'; +import ModServerRunPieChart from 'components/charts/ModServerRunPieChart.vue'; + export default defineComponent({ name: 'IndexPage', - components: { IndexItem }, + components: { ModServerRunPieChart, DiskUsageBarGraph, AreaTimeSeriesChart }, setup () { return { - indexItems: indexItems + }; - } + }, + mounted() {}, + methods: {}, }); </script> diff --git a/serverpackcreator-web-frontend/src/pages/ModPackDownload.vue b/serverpackcreator-web-frontend/src/pages/ModPackDownload.vue index cbc27fcc5..3697eaaa1 100644 --- a/serverpackcreator-web-frontend/src/pages/ModPackDownload.vue +++ b/serverpackcreator-web-frontend/src/pages/ModPackDownload.vue @@ -2,10 +2,10 @@ <q-page class="row items-center justify-evenly"> <q-card flat bordered class="relative-position download-modpack" v-if="visible"> <q-card-section> - <transition appear enter-active-class="animated fadeIn" leave-active-class="animated fadeOut"/> + <transition appear enter-active-class="animated fadeIn" leave-active-class="animated fadeOut" /> </q-card-section> <q-inner-loading :showing="visible"> - <q-spinner-gears size="50px" color="accent"/> + <q-spinner-gears size="50px" color="accent" /> </q-inner-loading> </q-card> <q-card flat bordered class="relative-position download-modpack" v-else-if="!visible && !available"> @@ -18,8 +18,9 @@ <q-card-section class="q-pt-xs"> <div class="row"> <div class="col text-overline">ModPack {{ $route.params.id }}</div> - <div v-if="projectID.length > 0" class="col text-overline">| Project ID {{ projectID }}</div> - <div v-if="versionID.length > 0" class="col text-overline">| Version ID {{ versionID }}</div> + <div class="col text-overline">Source {{ source }}</div> + <div v-if="projectID.length > 0" class="col text-overline">Project ID {{ projectID }}</div> + <div v-if="versionID.length > 0" class="col text-overline">Version ID {{ versionID }}</div> </div> <div class="text-h5 q-mt-sm q-mb-xs">{{ name }}</div> </q-card-section> @@ -28,7 +29,7 @@ <q-list dense> <q-item clickable @click="copyToClipboard(size.toString())"> <q-item-section side> - <q-icon color="accent" name="scale"/> + <q-icon color="accent" name="scale" /> </q-item-section> <q-item-section> <q-item-label>Size</q-item-label> @@ -38,7 +39,7 @@ <q-item clickable @click="copyToClipboard(status)"> <q-item-section side> - <q-icon color="accent" name="pending_actions"/> + <q-icon color="accent" name="pending_actions" /> </q-item-section> <q-item-section> <q-item-label>Current Status</q-item-label> @@ -48,7 +49,7 @@ <q-item clickable @click="copyToClipboard(source)"> <q-item-section side> - <q-icon color="accent" name="move_to_inbox"/> + <q-icon color="accent" name="move_to_inbox" /> </q-item-section> <q-item-section> <q-item-label>ModPack Source</q-item-label> @@ -58,7 +59,7 @@ <q-item clickable @click="copyToClipboard(sha256)"> <q-item-section side> - <q-icon color="accent" name="tag"/> + <q-icon color="accent" name="tag" /> </q-item-section> <q-item-section> <q-item-label>ModPack SHA256 Hash</q-item-label> @@ -68,7 +69,7 @@ <q-item clickable @click="copyToClipboard(serverPacks.length.toString())"> <q-item-section side> - <q-icon color="accent" name="dns"/> + <q-icon color="accent" name="dns" /> </q-item-section> <q-item-section> <q-item-label>ServerPacks</q-item-label> @@ -78,7 +79,7 @@ <q-item clickable @click="copyToClipboard(date.formatDate(dateCreated, 'YYYY-MM-DD : HH:mm'))"> <q-item-section side> - <q-icon color="accent" name="event"/> + <q-icon color="accent" name="event" /> </q-item-section> <q-item-section> <q-item-label>Creation Date and Time</q-item-label> @@ -86,14 +87,18 @@ </q-item-section> </q-item> </q-list> - <q-separator vertical/> + <q-separator vertical /> <q-card-actions vertical class="justify-around"> - <q-btn size="xl" flat round color="positive" icon="download" - :href="buildDownloadUrl($route.params.id)" type="a"/> - <q-btn size="xl" flat round color="info" icon="share" @click="copyToClipboard(location())"/> + <q-btn size="xl" flat round color="positive" icon="download" :loading="loading" + @click="downloadWithAxios($route.params.id);this.count = false; this.canceled = true;"> + <template v-slot:loading> + <q-spinner-hourglass/> + </template> + </q-btn> + <q-btn size="xl" flat round color="info" icon="share" @click="copyToClipboard(current())" /> </q-card-actions> </q-card-section> - <q-separator/> + <q-separator /> <q-card-section> <q-item> <q-item-section> @@ -104,11 +109,11 @@ {{ counter === 0 ? 'Downloading...' : 'Download starting in ' + counter }} </q-item-label> <q-item-label> - <q-linear-progress :value="counter / 100 * 20" rounded class="q-mt-md" animation-speed="200"/> + <q-linear-progress :value="counter / 100 * 20" rounded class="q-mt-md" animation-speed="200" /> </q-item-label> </q-item-section> <q-item-section side> - <q-btn round color="negative" icon="cancel" @click="this.count = false; this.canceled = true;"/> + <q-btn v-if="this.count" round color="negative" icon="cancel" @click="this.count = false; this.canceled = true;"/> </q-item-section> </q-item> </q-card-section> @@ -117,9 +122,9 @@ </template> <script lang="ts"> -import {defineComponent, ref} from 'vue'; -import {modpacks} from 'boot/axios'; -import {date} from 'quasar'; +import { defineComponent, ref } from 'vue'; +import { modpacks } from 'boot/axios'; +import { date } from 'quasar'; export default defineComponent({ name: 'ModPackDownload', @@ -129,8 +134,8 @@ export default defineComponent({ } }, setup() { - const count = ref(true) - const counter = ref(5) + const count = ref(true); + const counter = ref(5); const visible = ref(true); const available = ref(true); const showSimulatedReturnData = ref(false); @@ -157,19 +162,17 @@ export default defineComponent({ status: ref(''), versionID: ref(''), canceled: ref(false), + loading: ref(false), count, counter }; }, methods: { - location(): string { + current(): string { const route = this.$router.resolve({}); - console.log(this.$route) + console.log(this.$route); return new URL(route.href, window.location.origin).href; }, - buildDownloadUrl(id: number): string { - return '/api/v2/modpacks/download/' + id - }, copyToClipboard(text: string) { navigator.clipboard.writeText(text); this.$q.notify({ @@ -184,19 +187,42 @@ export default defineComponent({ if (this.counter > 0 && this.count) { setTimeout(() => { this.counter -= 1; - this.countDownTimer() - }, 1000) + this.countDownTimer(); + }, 1000); } else if (this.counter === 0 && this.count && !this.canceled) { this.count = false; - window.open(window.location.origin + this.buildDownloadUrl(this.$route.params.id.toString())); + this.downloadWithAxios(this.$route.params.id) } + }, + downloadWithAxios(id: string) { + this.loading = true + modpacks.get('download/' + id, { + responseType: 'arraybuffer' + }).then(response => { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', this.name) + document.body.appendChild(link) + link.click() + this.loading = false + }).catch(error => { + this.$q.notify({ + timeout: 5000, + progress: true, + icon: 'error', + color: 'negative', + message: 'Could not retrieve modpack: ' + error + }); + this.loading = false + }); } }, mounted() { this.showTextLoading(); modpacks.get(this.$route.params.id.toString()).then(response => { this.dateCreated = response.data.dateCreated; - this.name = response.data.name; + this.name = response.data.name.replaceAll(' ', '_'); this.projectID = response.data.projectID; this.serverPacks = response.data.serverPacks; this.sha256 = response.data.sha256; @@ -226,7 +252,7 @@ export default defineComponent({ <style> .download-modpack { - height: 430px; + height: 450px; width: 600px; } </style> diff --git a/serverpackcreator-web-frontend/src/pages/ServerPackDownload.vue b/serverpackcreator-web-frontend/src/pages/ServerPackDownload.vue index a488a5455..896c3f06a 100644 --- a/serverpackcreator-web-frontend/src/pages/ServerPackDownload.vue +++ b/serverpackcreator-web-frontend/src/pages/ServerPackDownload.vue @@ -2,10 +2,10 @@ <q-page class="row items-center justify-evenly"> <q-card flat bordered class="relative-position download-serverpack" v-if="visible"> <q-card-section> - <transition appear enter-active-class="animated fadeIn" leave-active-class="animated fadeOut"/> + <transition appear enter-active-class="animated fadeIn" leave-active-class="animated fadeOut" /> </q-card-section> <q-inner-loading :showing="visible"> - <q-spinner-gears size="50px" color="accent"/> + <q-spinner-gears size="50px" color="accent" /> </q-inner-loading> </q-card> <q-card flat bordered class="relative-position download-serverpack" v-else-if="!visible && !available"> @@ -16,14 +16,17 @@ <q-card class="relative-position download-serverpack" v-else> <q-card-section horizontal> <q-card-section class="q-pt-xs"> - <div class="text-overline">Server Pack {{ $route.params.id }}</div> + <div class="row"> + <div class="col text-overline">Server Pack {{ $route.params.id }}</div> + </div> + <div class="text-h5 q-mt-sm q-mb-xs">{{ name }}</div> </q-card-section> </q-card-section> <q-card-section horizontal> <q-list dense> <q-item clickable @click="copyToClipboard(size.toString())"> <q-item-section side> - <q-icon color="accent" name="scale"/> + <q-icon color="accent" name="scale" /> </q-item-section> <q-item-section> <q-item-label>Size</q-item-label> @@ -33,7 +36,7 @@ <q-item clickable @click="copyToClipboard(downloads.toString())"> <q-item-section side> - <q-icon color="accent" name="download"/> + <q-icon color="accent" name="download" /> </q-item-section> <q-item-section> <q-item-label>Downloads</q-item-label> @@ -43,7 +46,7 @@ <q-item clickable @click="copyToClipboard(confirmedWorking.toString())"> <q-item-section side> - <q-icon color="accent" name="thumbs_up_down"/> + <q-icon color="accent" name="thumbs_up_down" /> </q-item-section> <q-item-section> <q-item-label>Confirmed Working</q-item-label> @@ -53,7 +56,7 @@ <q-item clickable @click="copyToClipboard(date.formatDate(dateCreated, 'YYYY-MM-DD : HH:mm'))"> <q-item-section side> - <q-icon color="accent" name="event"/> + <q-icon color="accent" name="event" /> </q-item-section> <q-item-section> <q-item-label>Creation Date and Time</q-item-label> @@ -63,7 +66,7 @@ <q-item clickable @click="copyToClipboard(sha256)"> <q-item-section side> - <q-icon color="accent" name="tag"/> + <q-icon color="accent" name="tag" /> </q-item-section> <q-item-section> <q-item-label>ModPack SHA256 Hash</q-item-label> @@ -71,14 +74,18 @@ </q-item-section> </q-item> </q-list> - <q-separator vertical/> + <q-separator vertical /> <q-card-actions vertical class="justify-around"> - <q-btn size="xl" flat round color="positive" icon="download" - :href="buildDownloadUrl($route.params.id)" type="a"/> - <q-btn size="xl" flat round color="info" icon="share" @click="copyToClipboard(location())"/> + <q-btn size="xl" flat round color="positive" icon="download" :loading="loading" + @click="downloadWithAxios($route.params.id);this.count = false; this.canceled = true;"> + <template v-slot:loading> + <q-spinner-hourglass/> + </template> + </q-btn> + <q-btn size="xl" flat round color="info" icon="share" @click="copyToClipboard(current())" /> </q-card-actions> </q-card-section> - <q-separator/> + <q-separator /> <q-card-section> <q-item> <q-item-section> @@ -89,11 +96,11 @@ {{ counter === 0 ? 'Downloading...' : 'Download starting in ' + counter }} </q-item-label> <q-item-label> - <q-linear-progress :value="counter / 100 * 20" rounded class="q-mt-md" animation-speed="200"/> + <q-linear-progress :value="counter / 100 * 20" rounded class="q-mt-md" animation-speed="200" /> </q-item-label> </q-item-section> <q-item-section side> - <q-btn round color="negative" icon="cancel" @click="this.count = false; this.canceled = true;"/> + <q-btn v-if="this.count" round color="negative" icon="cancel" @click="this.count = false; this.canceled = true;" /> </q-item-section> </q-item> </q-card-section> @@ -102,9 +109,9 @@ </template> <script lang="ts"> -import {defineComponent, ref} from 'vue'; -import {serverpacks} from 'boot/axios'; -import {date} from 'quasar'; +import { defineComponent, ref } from 'vue'; +import { modpacks, serverpacks } from 'boot/axios'; +import { date } from 'quasar'; export default defineComponent({ name: 'ServerPackDownload', @@ -114,8 +121,8 @@ export default defineComponent({ } }, setup() { - const count = ref(true) - const counter = ref(5) + const count = ref(true); + const counter = ref(5); const visible = ref(true); const available = ref(true); const showSimulatedReturnData = ref(false); @@ -132,24 +139,23 @@ export default defineComponent({ showSimulatedReturnData.value = true; }, 3000); }, + name: ref(''), size: ref(0), downloads: ref(0), confirmedWorking: ref(0), dateCreated: ref(0), sha256: ref(''), canceled: ref(false), + loading: ref(false), count, counter }; }, methods: { - location(): string { + current(): string { const route = this.$router.resolve({}); return new URL(route.href, window.location.origin).href; }, - buildDownloadUrl(id: number): string { - return '/api/v2/serverpacks/download/' + id - }, copyToClipboard(text: string) { navigator.clipboard.writeText(text); this.$q.notify({ @@ -164,12 +170,35 @@ export default defineComponent({ if (this.counter > 0 && this.count) { setTimeout(() => { this.counter -= 1; - this.countDownTimer() - }, 1000) + this.countDownTimer(); + }, 1000); } else if (this.counter === 0 && this.count && !this.canceled) { this.count = false; - window.open(window.location.origin + this.buildDownloadUrl(this.$route.params.id.toString())); + this.downloadWithAxios(this.$route.params.id) } + }, + downloadWithAxios(id: string) { + this.loading = true + serverpacks.get('download/' + id, { + responseType: 'arraybuffer' + }).then(response => { + const url = window.URL.createObjectURL(new Blob([response.data])) + const link = document.createElement('a') + link.href = url + link.setAttribute('download', this.name) + document.body.appendChild(link) + link.click() + this.loading = false + }).catch(error => { + this.$q.notify({ + timeout: 5000, + progress: true, + icon: 'error', + color: 'negative', + message: 'Could not retrieve server pack: ' + error + }); + this.loading = false + }); } }, mounted() { @@ -196,13 +225,24 @@ export default defineComponent({ message: 'Could not retrieve server pack: ' + error }); }); + modpacks.get('byserverpack/' + this.$route.params.id.toString()).then(response => { + this.name = response.data.name.replaceAll(' ', '_').replace('.zip', '_server_pack.zip') + }).catch(error => { + this.$q.notify({ + timeout: 5000, + progress: true, + icon: 'error', + color: 'negative', + message: 'Could not retrieve modpack: ' + error + }); + }) } }); </script> <style> .download-serverpack { - height: 350px; + height: 400px; width: 600px; } </style> diff --git a/serverpackcreator-web/build.gradle.kts b/serverpackcreator-web/build.gradle.kts index 862cf7654..29c655168 100644 --- a/serverpackcreator-web/build.gradle.kts +++ b/serverpackcreator-web/build.gradle.kts @@ -29,21 +29,25 @@ configurations { dependencies { api(project(":serverpackcreator-api")) - api("org.jetbrains.kotlin:kotlin-reflect:1.9.10") - api("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.2") - api("org.springframework.boot:spring-boot-starter-web:3.1.0") - api("org.springframework.boot:spring-boot-starter-log4j2:3.0.4") - api("org.springframework.boot:spring-boot-starter-data-jpa:3.0.4") - api("org.postgresql:postgresql:42.6.0") - api("org.javassist:javassist:3.29.2-GA") - testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.3") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.3") - testRuntimeOnly("com.h2database:h2:2.2.220") - testImplementation("org.springframework.boot:spring-boot-starter-test:3.1.0") - developmentOnly("org.springframework.boot:spring-boot-devtools:3.0.4") + api("org.jetbrains.kotlin:kotlin-reflect:1.9.23") + api("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.0") + api("org.springframework.boot:spring-boot-starter-web:3.2.4") + api("org.springframework.boot:spring-boot-starter-log4j2:3.2.4") + api("org.springframework.boot:spring-boot-starter-data-jpa:3.2.5") + api("org.postgresql:postgresql:42.7.3") + api("org.javassist:javassist:3.30.2-GA") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") + testRuntimeOnly("com.h2database:h2:2.2.224") + testImplementation("org.springframework.boot:spring-boot-starter-test:3.2.4") + developmentOnly("org.springframework.boot:spring-boot-devtools:3.2.5") //developmentOnly("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0") } +tasks.bootJar { + dependsOn(":serverpackcreator-api:processTestResources") +} + tasks.clean { doFirst { delete { @@ -55,6 +59,7 @@ tasks.clean { } tasks.test { + dependsOn(":serverpackcreator-api:processTestResources") systemProperty("java.util.logging.manager","org.jboss.logmanager.LogManager") doFirst { val tests = File(projectDir,"tests").absoluteFile diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/WebService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/WebService.kt index 5c98534e8..528c9f9f6 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/WebService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/WebService.kt @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Griefed +/* Copyright (C) 2024 Griefed * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -27,19 +27,25 @@ import org.springframework.boot.autoconfigure.domain.EntityScan import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.ConfigurableApplicationContext import org.springframework.scheduling.annotation.EnableScheduling +import java.io.File @SpringBootApplication @EnableConfigurationProperties @EntityScan(value = ["de.griefed.serverpackcreator.web"]) @EnableScheduling class WebService(private val api: ApiWrapper) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } fun start(args: Array<String>): ConfigurableApplicationContext { + val userHome = System.getProperty("user.home") val lastIndex = "--spring.config.location=classpath:/application.properties," + "classpath:/serverpackcreator.properties," + "optional:file:./serverpackcreator.properties," + - "optional:file:${api.apiProperties.serverPackCreatorPropertiesFile.absolutePath}" + "optional:file:./overrides.properties," + + "optional:file:${api.apiProperties.serverPackCreatorPropertiesFile.absolutePath},"+ + "optional:file:${api.apiProperties.overridesPropertiesFile.absolutePath}," + + "optional:file:${File(userHome,"serverpackcreator.properties").absolutePath}," + + "optional:file:${File(userHome,"overrides.properties").absolutePath}" val springArgs = if (args.isEmpty()) { arrayOf(lastIndex) } else { diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPackView.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPackView.kt deleted file mode 100644 index 9766ed9af..000000000 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPackView.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.web.data - -import de.griefed.serverpackcreator.web.modpack.ModpackSource -import de.griefed.serverpackcreator.web.modpack.ModpackStatus -import org.springframework.data.web.ProjectedPayload -import java.sql.Timestamp - -@ProjectedPayload -interface ModPackView { - var id: Int - var projectID: String - var versionID: String - var dateCreated: Timestamp - var name: String - var size: Double - var status: ModpackStatus - var source: ModpackSource - var sha256: String - var serverPacks: MutableList<ServerPack> -} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPackView.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPackView.kt deleted file mode 100644 index d822d421e..000000000 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPackView.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 2024 Griefed - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - * USA - * - * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE - */ -package de.griefed.serverpackcreator.web.data - -import org.springframework.data.web.ProjectedPayload -import java.sql.Timestamp - -@ProjectedPayload -interface ServerPackView { - var id: Int - var size: Double - var downloads: Int - var confirmedWorking: Int - var dateCreated: Timestamp - var sha256: String - var runConfiguration: RunConfiguration -} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPack.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPack.kt similarity index 86% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPack.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPack.kt index 6e957aaa9..38de779dd 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ModPack.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPack.kt @@ -17,10 +17,10 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.modpack -import de.griefed.serverpackcreator.web.modpack.ModpackSource -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.api.ModpackSource +import de.griefed.serverpackcreator.web.serverpack.ServerPack import jakarta.persistence.* import org.hibernate.annotations.Cascade import org.hibernate.annotations.CascadeType @@ -52,7 +52,13 @@ class ModPack { var size: Int = 0 @Column - var status: ModpackStatus = ModpackStatus.QUEUED + var downloads: Int? = 0 + get() { + return field ?: 0 + } + + @Column + var status: ModPackStatus = ModPackStatus.QUEUED @Column var source: ModpackSource = ModpackSource.ZIP @@ -92,6 +98,6 @@ class ModPack { } override fun toString(): String { - return "ModPack(id=$id, projectID='$projectID', versionID='$versionID', dateCreated=$dateCreated, name='$name', size=$size, status=$status, source=$source, fileID=$fileID, sha256=$sha256, serverPacks=$serverPacks)" + return "ModPack(id=$id, projectID='$projectID', versionID='$versionID', dateCreated=$dateCreated, name='$name', size=$size, downloads=$downloads, status=$status, source=$source, fileID=$fileID, sha256=$sha256, serverPacks=$serverPacks)" } } \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackController.kt similarity index 84% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackController.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackController.kt index 83ac6b543..684c4a982 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackController.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackController.kt @@ -19,14 +19,11 @@ */ package de.griefed.serverpackcreator.web.modpack -import de.griefed.serverpackcreator.web.data.ModPackView -import de.griefed.serverpackcreator.web.data.ServerPack -import de.griefed.serverpackcreator.web.data.ZipResponse -import de.griefed.serverpackcreator.web.runconfiguration.RunConfigurationService +import de.griefed.serverpackcreator.web.serverpack.ServerPack +import de.griefed.serverpackcreator.web.serverpack.runconfiguration.RunConfigurationService import de.griefed.serverpackcreator.web.storage.StorageException import de.griefed.serverpackcreator.web.task.TaskDetail import de.griefed.serverpackcreator.web.task.TaskExecutionServiceImpl -import org.apache.logging.log4j.kotlin.KotlinLogger import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.springframework.beans.factory.annotation.Autowired import org.springframework.core.io.ByteArrayResource @@ -41,24 +38,27 @@ import org.springframework.web.multipart.MultipartFile @RestController @CrossOrigin(origins = ["*"]) @RequestMapping("/api/v2/modpacks") -class ModpackController @Autowired constructor( - private val modpackService: ModpackService, +class ModPackController @Autowired constructor( + private val modpackService: ModPackService, private val runConfigurationService: RunConfigurationService, private val taskExecutionServiceImpl: TaskExecutionServiceImpl ) { - private val logger: KotlinLogger = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } @GetMapping("/download/{id:[0-9]+}", produces = ["application/zip"]) @ResponseBody fun downloadModpack(@PathVariable id: Int): ResponseEntity<Resource> { val modpack = modpackService.getModpack(id) if (modpack.isEmpty) { + log.warn("Modpack with ID $id not found") return ResponseEntity.notFound().build() } val modpackArchive = modpackService.getModPackArchive(modpack.get()) if (modpackArchive.isEmpty) { + log.warn("No archive found for modpack with ID $id") return ResponseEntity.notFound().build() } + modpackService.updateDownloadStats(modpack.get()) return ResponseEntity.ok() .contentType(MediaType.parseMediaType("application/zip")) .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"${modpack.get().name}\"") @@ -89,7 +89,7 @@ class ModpackController @Autowired constructor( modPackId = null, runConfigId = null, serverPackId = null, - status = ModpackStatus.ERROR + status = ModPackStatus.ERROR ) return ResponseEntity.badRequest().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE) .body(zipResponse) @@ -108,7 +108,7 @@ class ModpackController @Autowired constructor( modPackId = modpack.id, runConfigId = taskDetail.runConfiguration?.id, serverPackId = null, - status = ModpackStatus.QUEUED + status = ModPackStatus.QUEUED ) return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE) .body(zipResponse) @@ -119,7 +119,7 @@ class ModpackController @Autowired constructor( modPackId = ex.id, runConfigId = runConfig.id, serverPackId = null, - status = ModpackStatus.ERROR + status = ModPackStatus.ERROR ) return ResponseEntity.badRequest().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE) .body(zipResponse) @@ -147,12 +147,12 @@ class ModpackController @Autowired constructor( modPackId = modPackID, runConfigId = null, serverPackId = null, - status = ModpackStatus.ERROR + status = ModPackStatus.ERROR ) ) } val taskDetail = TaskDetail(modpack.get()) - taskDetail.modpack.status = ModpackStatus.QUEUED + taskDetail.modpack.status = ModPackStatus.QUEUED taskDetail.runConfiguration = runConfigurationService.createRunConfig( minecraftVersion, modloader, modloaderVersion, startArgs, clientMods, whiteListMods ) @@ -171,7 +171,7 @@ class ModpackController @Autowired constructor( modPackId = modPackID, runConfigId = taskDetail.runConfiguration!!.id, serverPackId = serverpack.id, - status = ModpackStatus.GENERATED + status = ModPackStatus.GENERATED ) ) } @@ -184,14 +184,14 @@ class ModpackController @Autowired constructor( modPackId = modPackID, runConfigId = taskDetail.runConfiguration?.id, serverPackId = null, - status = ModpackStatus.QUEUED + status = ModPackStatus.QUEUED ) ) } @GetMapping("/all", produces = ["application/json"]) @ResponseBody - fun getAllModPacks(): ResponseEntity<List<ModPackView>> { + fun getAllModPacks(): ResponseEntity<List<ModPack>> { return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( modpackService.getModpacks() ) @@ -199,10 +199,24 @@ class ModpackController @Autowired constructor( @GetMapping("/{id:[0-9]+}", produces = ["application/json"]) @ResponseBody - fun getModpack(@PathVariable id: Int): ResponseEntity<ModPackView> { - return if (modpackService.getModpackView(id).isPresent) { + fun getModpack(@PathVariable id: Int): ResponseEntity<ModPack> { + val pack = modpackService.getModpack(id) + return if (pack.isPresent) { ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( - modpackService.getModpackView(id).get() + pack.get() + ) + } else { + ResponseEntity.notFound().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).build() + } + } + + @GetMapping("byserverpack/{id:[0-9]+}", produces = ["application/json"]) + @ResponseBody + fun getModPackByServerPack(@PathVariable id: Int): ResponseEntity<ModPack> { + val pack = modpackService.getByServerPack(id) + return if (pack.isPresent) { + ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + pack.get() ) } else { ResponseEntity.notFound().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).build() diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownload.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownload.kt new file mode 100644 index 000000000..592db0c16 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownload.kt @@ -0,0 +1,18 @@ +package de.griefed.serverpackcreator.web.modpack + +import jakarta.persistence.* +import org.hibernate.annotations.CreationTimestamp +import java.sql.Timestamp + +@Entity +class ModPackDownload(@ManyToOne var modPack: ModPack) { + + @Id + @GeneratedValue + @Column(updatable = false, nullable = false) + var id: Int = 0 + + @CreationTimestamp + @Column + var downloadedAt: Timestamp? = null +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownloadRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownloadRepository.kt new file mode 100644 index 000000000..921575c01 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackDownloadRepository.kt @@ -0,0 +1,9 @@ +package de.griefed.serverpackcreator.web.modpack + +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +@Repository +interface ModPackDownloadRepository : JpaRepository<ModPackDownload, Int> { + fun findAllByModPack(modPack: ModPack): List<ModPackDownload> +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackRepository.kt similarity index 72% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackRepository.kt index 21747272d..7950fa415 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackRepository.kt @@ -19,18 +19,13 @@ */ package de.griefed.serverpackcreator.web.modpack -import de.griefed.serverpackcreator.web.data.ModPack -import de.griefed.serverpackcreator.web.data.ModPackView -import de.griefed.serverpackcreator.web.data.ServerPack -import org.springframework.data.domain.Sort +import de.griefed.serverpackcreator.web.serverpack.ServerPack import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository + import java.util.* @Repository -interface ModpackRepository : JpaRepository<ModPack, Int> { - fun findAllProjectedBy(): MutableList<ModPackView> - fun findAllProjectedBy(sort: Sort): MutableList<ModPackView> - fun findProjectedById(id: Int) : Optional<ModPackView> +interface ModPackRepository : JpaRepository<ModPack, Int> { fun findByServerPacksContains(serverPack: ServerPack): Optional<ModPack> } \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackService.kt similarity index 76% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackService.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackService.kt index 4ac06c27d..b854db022 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackService.kt @@ -21,11 +21,11 @@ package de.griefed.serverpackcreator.web.modpack import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.ConfigurationHandler +import de.griefed.serverpackcreator.api.ModpackSource import de.griefed.serverpackcreator.api.PackConfig -import de.griefed.serverpackcreator.web.data.ModPack -import de.griefed.serverpackcreator.web.data.ModPackView -import de.griefed.serverpackcreator.web.data.RunConfiguration -import de.griefed.serverpackcreator.web.data.ServerPack +import de.griefed.serverpackcreator.web.serverpack.ServerPack +import de.griefed.serverpackcreator.web.serverpack.ServerPackRepository +import de.griefed.serverpackcreator.web.serverpack.customizing.RunConfiguration import de.griefed.serverpackcreator.web.storage.StorageException import de.griefed.serverpackcreator.web.storage.StorageSystem import org.springframework.beans.factory.annotation.Autowired @@ -38,14 +38,35 @@ import java.nio.file.Path import java.util.* @Service -class ModpackService @Autowired constructor( - private val modpackRepository: ModpackRepository, +class ModPackService @Autowired constructor( + private val modpackRepository: ModPackRepository, private val configurationHandler: ConfigurationHandler, + private val modPackDownloadRepository: ModPackDownloadRepository, + private val serverPackRepository: ServerPackRepository, apiProperties: ApiProperties, ) { private val rootLocation: Path = apiProperties.modpacksDirectory.toPath() private val storage: StorageSystem = StorageSystem(rootLocation) + /** + * Increment the download counter for a given modpack entry in the database identified by the + * database id. + * + * @param id The database id of the modpack. + * @author Griefed + */ + fun updateDownloadStats(modPack: ModPack): Optional<ModPack> { + val request = modpackRepository.findById(modPack.id) + if (request.isPresent) { + val pack = request.get() + pack.downloads = pack.downloads!! + 1 + modPackDownloadRepository.save(ModPackDownload(modPack)) + return Optional.of(modpackRepository.save(pack)) + } else { + return Optional.empty() + } + } + /** * Store the multipart-file to disk. If a match in SHA256 hashes is found, a [StorageException] is thrown to prevent * duplicates and save storage. @@ -55,7 +76,7 @@ class ModpackService @Autowired constructor( @Throws(StorageException::class) fun saveZipModpack(file: MultipartFile): ModPack { val modpack = ModPack() - modpack.status = ModpackStatus.QUEUED + modpack.status = ModPackStatus.QUEUED modpack.source = ModpackSource.ZIP val savedFile = storage.store(file).get() val check = configurationHandler.checkZipArchive(savedFile.file.toString()) @@ -88,12 +109,17 @@ class ModpackService @Autowired constructor( return modpackRepository.findById(id) } - fun getModpackView(id: Int): Optional<ModPackView> { - return modpackRepository.findProjectedById(id) + fun getModpacks(): List<ModPack> { + return modpackRepository.findAll(Sort.by(Sort.Direction.DESC, "dateCreated")) } - fun getModpacks(): List<ModPackView> { - return modpackRepository.findAllProjectedBy(Sort.by(Sort.Direction.DESC, "dateCreated")) + fun getByServerPack(id: Int) : Optional<ModPack> { + val serverPack = serverPackRepository.findById(id) + return if (serverPack.isPresent) { + getByServerPack(serverPack.get()) + } else { + Optional.empty() + } } fun getByServerPack(serverPack: ServerPack) : Optional<ModPack> { @@ -105,7 +131,7 @@ class ModpackService @Autowired constructor( packConfig.modpackDir = rootLocation.resolve("${modpack.fileID}.zip").normalize().toFile().absolutePath packConfig.setClientMods(runConfiguration.clientMods.map { it.mod }.toMutableList()) packConfig.setModsWhitelist(runConfiguration.whitelistedMods.map { it.mod }.toMutableList()) - if (modpack.status == ModpackStatus.GENERATING) { + if (modpack.status == ModPackStatus.GENERATING) { packConfig.inclusions.addAll(configurationHandler.suggestInclusions(packConfig.modpackDir)) } packConfig.minecraftVersion = runConfiguration.minecraftVersion diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackStatus.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackStatus.kt similarity index 97% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackStatus.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackStatus.kt index 7f25ba74a..cf0e9a2b2 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModpackStatus.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ModPackStatus.kt @@ -19,6 +19,6 @@ */ package de.griefed.serverpackcreator.web.modpack -enum class ModpackStatus { +enum class ModPackStatus { QUEUED, CHECKING, CHECKED, GENERATING, GENERATED, ERROR } \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ZipResponse.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ZipResponse.kt similarity index 93% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ZipResponse.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ZipResponse.kt index df9f4536a..8eac6a9a8 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ZipResponse.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/modpack/ZipResponse.kt @@ -17,9 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data - -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +package de.griefed.serverpackcreator.web.modpack class ZipResponse( val message: String, @@ -27,7 +25,7 @@ class ZipResponse( val modPackId: Int?, val runConfigId: Int?, val serverPackId: Int?, - val status: ModpackStatus? + val status: ModPackStatus? ) { override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/DatabaseCleanupSchedule.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/DatabaseCleanupSchedule.kt index 45196c0b1..73ec8d746 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/DatabaseCleanupSchedule.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/DatabaseCleanupSchedule.kt @@ -20,9 +20,9 @@ package de.griefed.serverpackcreator.web.scheduling import de.griefed.serverpackcreator.api.ApiProperties -import de.griefed.serverpackcreator.web.modpack.ModpackRepository -import de.griefed.serverpackcreator.web.modpack.ModpackService -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPackRepository +import de.griefed.serverpackcreator.web.modpack.ModPackService +import de.griefed.serverpackcreator.web.modpack.ModPackStatus import de.griefed.serverpackcreator.web.serverpack.ServerPackRepository import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.springframework.beans.factory.annotation.Autowired @@ -33,12 +33,12 @@ import kotlin.io.path.listDirectoryEntries @Service class DatabaseCleanupSchedule @Autowired constructor( - private val modpackRepository: ModpackRepository, - private val modpackService: ModpackService, + private val modpackRepository: ModPackRepository, + private val modpackService: ModPackService, private val serverPackRepository: ServerPackRepository, apiProperties: ApiProperties ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val modPackRoot: Path = apiProperties.modpacksDirectory.toPath() private val serverPackRoot: Path = apiProperties.serverPacksDirectory.toPath() @@ -47,7 +47,7 @@ class DatabaseCleanupSchedule @Autowired constructor( log.info("Cleaning database...") val modpackFiles = modPackRoot.listDirectoryEntries().map { it.toFile() } for (modpack in modpackRepository.findAll()) { - if (modpack.status == ModpackStatus.ERROR) { + if (modpack.status == ModPackStatus.ERROR) { modpackService.deleteModpack(modpack.id) log.info("Deleted Modpack: ${modpack.id}-${modpack.name}") } else if (modpackFiles.find { modpackFile -> modpackFile.name.contains(modpack.fileID!!.toString(), ignoreCase = true) } == null) { diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/FileCleanupSchedule.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/FileCleanupSchedule.kt index 9aaa3bc1a..b968b5b82 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/FileCleanupSchedule.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/FileCleanupSchedule.kt @@ -21,7 +21,7 @@ package de.griefed.serverpackcreator.web.scheduling import de.griefed.serverpackcreator.api.ApiProperties import de.griefed.serverpackcreator.api.utilities.common.deleteQuietly -import de.griefed.serverpackcreator.web.modpack.ModpackRepository +import de.griefed.serverpackcreator.web.modpack.ModPackRepository import de.griefed.serverpackcreator.web.serverpack.ServerPackRepository import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.springframework.beans.factory.annotation.Autowired @@ -32,11 +32,11 @@ import kotlin.io.path.listDirectoryEntries @Service class FileCleanupSchedule @Autowired constructor( - private val modpackRepository: ModpackRepository, + private val modpackRepository: ModPackRepository, private val serverPackRepository: ServerPackRepository, apiProperties: ApiProperties ) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val modPackRoot: Path = apiProperties.modpacksDirectory.toPath() private val serverPackRoot: Path = apiProperties.serverPacksDirectory.toPath() diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/VersionRefreshSchedule.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/VersionRefreshSchedule.kt index de81ca4ce..bac94d5dd 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/VersionRefreshSchedule.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/scheduling/VersionRefreshSchedule.kt @@ -35,7 +35,7 @@ import javax.xml.parsers.ParserConfigurationException */ @Service class VersionRefreshSchedule @Autowired constructor(private val versionMeta: VersionMeta) { - private val log = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } @Scheduled(cron = "\${de.griefed.serverpackcreator.spring.schedules.versions.refresh}") private fun refreshVersionLister() { diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPack.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPack.kt similarity index 95% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPack.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPack.kt index 7e1f3b62f..ddd3b52d8 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ServerPack.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPack.kt @@ -17,8 +17,9 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.serverpack +import de.griefed.serverpackcreator.web.serverpack.customizing.RunConfiguration import jakarta.persistence.* import org.hibernate.annotations.CreationTimestamp import java.sql.Timestamp diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackController.kt index 582b497a9..452e8cfbd 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackController.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackController.kt @@ -19,9 +19,7 @@ */ package de.griefed.serverpackcreator.web.serverpack -import de.griefed.serverpackcreator.web.data.ServerPack -import de.griefed.serverpackcreator.web.data.ServerPackView -import de.griefed.serverpackcreator.web.modpack.ModpackService +import de.griefed.serverpackcreator.web.modpack.ModPackService import org.springframework.beans.factory.annotation.Autowired import org.springframework.core.io.ByteArrayResource import org.springframework.core.io.Resource @@ -33,7 +31,7 @@ import org.springframework.web.bind.annotation.* /** * RestController for everything server pack related, like downloads.<br></br> All requests are in - * `/api/v1/packs`. + * `/api/v2/serverpacks`. * * @author Griefed */ @@ -42,7 +40,7 @@ import org.springframework.web.bind.annotation.* @RequestMapping("/api/v2/serverpacks") class ServerPackController @Autowired constructor( private val serverPackService: ServerPackService, - private val modpackService: ModpackService + private val modpackService: ModPackService ) { /** @@ -62,7 +60,7 @@ class ServerPackController @Autowired constructor( ResponseEntity.notFound().build() } else { val modPack = modpackService.getByServerPack(serverPack.get()) - serverPackService.updateDownloadCounter(id) + serverPackService.updateDownloadStats(id) val fileName = modPack.get().name.replace(".zip","",ignoreCase = true) ResponseEntity.ok() .contentType(MediaType.parseMediaType("application/zip")) @@ -114,7 +112,7 @@ class ServerPackController @Autowired constructor( */ @GetMapping("/all", produces = ["application/json"]) @ResponseBody - fun getAllServerPacks(): ResponseEntity<List<ServerPackView>> { + fun getAllServerPacks(): ResponseEntity<List<ServerPack>> { return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( serverPackService.getServerPacks() ) @@ -122,10 +120,10 @@ class ServerPackController @Autowired constructor( @GetMapping("/{id:[0-9]+}", produces = ["application/json"]) @ResponseBody - fun getServerPack(@PathVariable id: Int): ResponseEntity<ServerPackView> { - return if (serverPackService.getServerPackView(id).isPresent) { + fun getServerPack(@PathVariable id: Int): ResponseEntity<ServerPack> { + return if (serverPackService.getServerPack(id).isPresent) { ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( - serverPackService.getServerPackView(id).get() + serverPackService.getServerPack(id).get() ) } else { ResponseEntity.notFound().build() diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownload.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownload.kt new file mode 100644 index 000000000..39268f0be --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownload.kt @@ -0,0 +1,18 @@ +package de.griefed.serverpackcreator.web.serverpack + +import jakarta.persistence.* +import org.hibernate.annotations.CreationTimestamp +import java.sql.Timestamp + +@Entity +class ServerPackDownload(@ManyToOne var serverPack: ServerPack) { + + @Id + @GeneratedValue + @Column(updatable = false, nullable = false) + var id: Int = 0 + + @CreationTimestamp + @Column + var downloadedAt: Timestamp? = null +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownloadRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownloadRepository.kt new file mode 100644 index 000000000..d26b9facd --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackDownloadRepository.kt @@ -0,0 +1,9 @@ +package de.griefed.serverpackcreator.web.serverpack + +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +@Repository +interface ServerPackDownloadRepository : JpaRepository<ServerPackDownload, Int> { + fun findAllByServerPack(serverPack: ServerPack): List<ServerPackDownload> +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackRepository.kt index 39194cdc6..0336c1a36 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackRepository.kt @@ -19,16 +19,8 @@ */ package de.griefed.serverpackcreator.web.serverpack -import de.griefed.serverpackcreator.web.data.ServerPack -import de.griefed.serverpackcreator.web.data.ServerPackView -import org.springframework.data.domain.Sort import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository -import java.util.* @Repository -interface ServerPackRepository : JpaRepository<ServerPack, Int> { - fun findAllProjectedBy(): MutableList<ServerPackView> - fun findAllProjectedBy(sort: Sort): MutableList<ServerPackView> - fun findProjectedById(id: Int): Optional<ServerPackView> -} \ No newline at end of file +interface ServerPackRepository : JpaRepository<ServerPack, Int> \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackService.kt index 921567560..987bbff83 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/ServerPackService.kt @@ -20,10 +20,7 @@ package de.griefed.serverpackcreator.web.serverpack import de.griefed.serverpackcreator.api.ApiProperties -import de.griefed.serverpackcreator.web.data.ServerPack -import de.griefed.serverpackcreator.web.data.ServerPackView import de.griefed.serverpackcreator.web.storage.StorageSystem -import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.Sort import org.springframework.http.ResponseEntity @@ -42,10 +39,10 @@ import kotlin.io.path.moveTo @Service class ServerPackService @Autowired constructor( private val serverPackRepository: ServerPackRepository, + private val serverPackDownloadRepository: ServerPackDownloadRepository, messageDigestInstance: MessageDigest, apiProperties: ApiProperties ) { - private val log = cachedLoggerOf(this.javaClass) private val rootLocation: Path = apiProperties.serverPacksDirectory.toPath() private val storage: StorageSystem = StorageSystem(rootLocation, messageDigestInstance) @@ -60,11 +57,12 @@ class ServerPackService @Autowired constructor( * @param id The database id of the server pack. * @author Griefed */ - fun updateDownloadCounter(id: Int): Optional<ServerPack> { + fun updateDownloadStats(id: Int): Optional<ServerPack> { val request = serverPackRepository.findById(id) if (request.isPresent) { val pack = request.get() pack.downloads++ + serverPackDownloadRepository.save(ServerPackDownload(pack)) return Optional.of(serverPackRepository.save(pack)) } else { return Optional.empty() @@ -78,7 +76,7 @@ class ServerPackService @Autowired constructor( * @param serverPack The server pack for which to update the download counter. * @author Griefed */ - fun updateDownloadCounter(serverPack: ServerPack) { + fun updateDownloadStats(serverPack: ServerPack) { serverPack.downloads++ serverPackRepository.save(serverPack) } @@ -117,8 +115,8 @@ class ServerPackService @Autowired constructor( * @return List ServerPackModel. Returns a list of all available server packs. * @author Griefed */ - fun getServerPacks(): List<ServerPackView> { - return serverPackRepository.findAllProjectedBy(Sort.by(Sort.Direction.DESC, "dateCreated")) + fun getServerPacks(): List<ServerPack> { + return serverPackRepository.findAll(Sort.by(Sort.Direction.DESC, "dateCreated")) } /** @@ -178,7 +176,7 @@ class ServerPackService @Autowired constructor( return storage.load(id) } - fun getServerPackView(id: Int): Optional<ServerPackView> { - return serverPackRepository.findProjectedById(id) + fun getServerPackView(id: Int): Optional<ServerPack> { + return serverPackRepository.findById(id) } } diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ClientMod.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientMod.kt similarity index 96% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ClientMod.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientMod.kt index d14a4fdd8..0b0ee7c3c 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ClientMod.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientMod.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.serverpack.customizing import jakarta.persistence.Column import jakarta.persistence.Entity diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ClientModRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientModRepository.kt similarity index 90% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ClientModRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientModRepository.kt index f110392e9..525af8c64 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ClientModRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ClientModRepository.kt @@ -17,9 +17,8 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.customizing +package de.griefed.serverpackcreator.web.serverpack.customizing -import de.griefed.serverpackcreator.web.data.ClientMod import org.springframework.stereotype.Repository @Repository diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ModRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ModRepository.kt similarity index 94% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ModRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ModRepository.kt index dcc2927b9..2053b6872 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/ModRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/ModRepository.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.customizing +package de.griefed.serverpackcreator.web.serverpack.customizing import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.repository.NoRepositoryBean diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/RunConfiguration.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/RunConfiguration.kt similarity index 98% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/RunConfiguration.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/RunConfiguration.kt index 3452ba070..175beadd2 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/RunConfiguration.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/RunConfiguration.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.serverpack.customizing import jakarta.persistence.* diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/StartArgument.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgument.kt similarity index 92% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/StartArgument.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgument.kt index bd4e6b744..c762ec8e7 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/StartArgument.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgument.kt @@ -1,4 +1,4 @@ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.serverpack.customizing import jakarta.persistence.Column import jakarta.persistence.Entity diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/StartArgumentRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgumentRepository.kt similarity index 91% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/StartArgumentRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgumentRepository.kt index 7610bb23c..890ee6676 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/StartArgumentRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/StartArgumentRepository.kt @@ -17,9 +17,8 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.customizing +package de.griefed.serverpackcreator.web.serverpack.customizing -import de.griefed.serverpackcreator.web.data.StartArgument import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.util.* diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/WhitelistedMod.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedMod.kt similarity index 96% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/WhitelistedMod.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedMod.kt index 1d7daa956..e21e5740c 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/WhitelistedMod.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedMod.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.serverpack.customizing import jakarta.persistence.Column import jakarta.persistence.Entity diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/WhitelistedModRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedModRepository.kt similarity index 89% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/WhitelistedModRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedModRepository.kt index 47f897834..9d5367239 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/customizing/WhitelistedModRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/customizing/WhitelistedModRepository.kt @@ -17,9 +17,8 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.customizing +package de.griefed.serverpackcreator.web.serverpack.customizing -import de.griefed.serverpackcreator.web.data.WhitelistedMod import org.springframework.stereotype.Repository @Repository diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationController.kt similarity index 93% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationController.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationController.kt index 2a7a1aa12..5d49e9169 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationController.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationController.kt @@ -17,9 +17,9 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.runconfiguration +package de.griefed.serverpackcreator.web.serverpack.runconfiguration -import de.griefed.serverpackcreator.web.data.RunConfiguration +import de.griefed.serverpackcreator.web.serverpack.customizing.RunConfiguration import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpHeaders import org.springframework.http.ResponseEntity diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationRepository.kt similarity index 83% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationRepository.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationRepository.kt index 150b6865d..4437f240a 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationRepository.kt @@ -17,12 +17,12 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.runconfiguration +package de.griefed.serverpackcreator.web.serverpack.runconfiguration -import de.griefed.serverpackcreator.web.data.ClientMod -import de.griefed.serverpackcreator.web.data.RunConfiguration -import de.griefed.serverpackcreator.web.data.StartArgument -import de.griefed.serverpackcreator.web.data.WhitelistedMod +import de.griefed.serverpackcreator.web.serverpack.customizing.ClientMod +import de.griefed.serverpackcreator.web.serverpack.customizing.RunConfiguration +import de.griefed.serverpackcreator.web.serverpack.customizing.StartArgument +import de.griefed.serverpackcreator.web.serverpack.customizing.WhitelistedMod import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.util.* diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationService.kt similarity index 91% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationService.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationService.kt index 5d9e12139..64b8414c1 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/runconfiguration/RunConfigurationService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/serverpack/runconfiguration/RunConfigurationService.kt @@ -17,16 +17,10 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.runconfiguration +package de.griefed.serverpackcreator.web.serverpack.runconfiguration import de.griefed.serverpackcreator.api.ApiProperties -import de.griefed.serverpackcreator.web.customizing.ClientModRepository -import de.griefed.serverpackcreator.web.customizing.StartArgumentRepository -import de.griefed.serverpackcreator.web.customizing.WhitelistedModRepository -import de.griefed.serverpackcreator.web.data.ClientMod -import de.griefed.serverpackcreator.web.data.RunConfiguration -import de.griefed.serverpackcreator.web.data.StartArgument -import de.griefed.serverpackcreator.web.data.WhitelistedMod +import de.griefed.serverpackcreator.web.serverpack.customizing.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.util.* @@ -131,14 +125,16 @@ class RunConfigurationService @Autowired constructor( clientMods: MutableList<ClientMod>, whitelistedMods: MutableList<WhitelistedMod> ): RunConfiguration { - return save(RunConfiguration( + return save( + RunConfiguration( minecraftVersion = minecraftVersion, modloader = modloader, modloaderVersion = modloaderVersion, startArgs = startArgs, clientMods = clientMods, whitelistedMods = whitelistedMods - )) + ) + ) } fun load(id: Int): Optional<RunConfiguration> { diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/StatsController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/StatsController.kt new file mode 100644 index 000000000..2221c3f93 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/StatsController.kt @@ -0,0 +1,107 @@ +package de.griefed.serverpackcreator.web.stats + +import de.griefed.serverpackcreator.web.modpack.ModPackDownload +import de.griefed.serverpackcreator.web.serverpack.ServerPackDownload +import de.griefed.serverpackcreator.web.stats.creation.AmountPerDate +import de.griefed.serverpackcreator.web.stats.creation.CreationStatsService +import de.griefed.serverpackcreator.web.stats.disk.DiskStatsData +import de.griefed.serverpackcreator.web.stats.disk.DiskStatsService +import de.griefed.serverpackcreator.web.stats.downloads.DownloadStatsService +import de.griefed.serverpackcreator.web.stats.packs.AmountStatsData +import de.griefed.serverpackcreator.web.stats.packs.AmountStatsService +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpHeaders +import org.springframework.http.ResponseEntity +import org.springframework.util.MimeTypeUtils +import org.springframework.web.bind.annotation.* + +@RestController +@CrossOrigin(origins = ["*"]) +@RequestMapping("/api/v2/stats") +class StatsController @Autowired constructor( + private val downloadStatsService: DownloadStatsService, + private val diskStatsService: DiskStatsService, + private val creationStatsService: CreationStatsService, + private val amountStatsService: AmountStatsService +) { + + @GetMapping("/downloads/modpacks") + @ResponseBody + fun modPackDownloads(): ResponseEntity<List<AmountPerDate>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.modPackDownloads() + ) + } + + @GetMapping("/downloads/serverpacks") + @ResponseBody + fun serverPackDownloads(): ResponseEntity<List<AmountPerDate>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.serverPackDownloads() + ) + } + + @GetMapping("/downloads/modpacks/history") + @ResponseBody + fun modPackDownloadHistory(): ResponseEntity<List<ModPackDownload>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.allModPackDownloadsHistory() + ) + } + + @GetMapping("/downloads/serverpacks/history") + @ResponseBody + fun serverPackDownloadHistory(): ResponseEntity<List<ServerPackDownload>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.allServerPackDownloadsHistory() + ) + } + + @GetMapping("/downloads/modpacks/{modPackID}") + @ResponseBody + fun allDownloadsForModPack(@PathVariable modPackID: Int): ResponseEntity<List<ModPackDownload>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.downloadHistoryForModPack(modPackID) + ) + } + + @GetMapping("/downloads/modpacks/{serverPackID}") + @ResponseBody + fun allDownloadsForServerPack(@PathVariable serverPackID: Int): ResponseEntity<List<ServerPackDownload>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + downloadStatsService.downloadHistoryForServerPack(serverPackID) + ) + } + + @GetMapping("/disk") + @ResponseBody + fun diskStats(): ResponseEntity<List<DiskStatsData>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + diskStatsService.stats + ) + } + + @GetMapping("/creation/modpacks") + @ResponseBody + fun modPacksCreationTimes(): ResponseEntity<List<AmountPerDate>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + creationStatsService.getModpackTimeStamps() + ) + } + + @GetMapping("/creation/serverpacks") + @ResponseBody + fun serverPacksCreationTimes(): ResponseEntity<List<AmountPerDate>> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + creationStatsService.getServerPackTimeStamps() + ) + } + + @GetMapping("/packs") + @ResponseBody + fun amountStats(): ResponseEntity<AmountStatsData> { + return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE).body( + amountStatsService.stats + ) + } +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/AmountPerDate.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/AmountPerDate.kt new file mode 100644 index 000000000..751387b71 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/AmountPerDate.kt @@ -0,0 +1,3 @@ +package de.griefed.serverpackcreator.web.stats.creation + +data class AmountPerDate(val creations: Int, val date: String) diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/CreationStatsService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/CreationStatsService.kt new file mode 100644 index 000000000..4d0fe4e82 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/creation/CreationStatsService.kt @@ -0,0 +1,50 @@ +package de.griefed.serverpackcreator.web.stats.creation + +import de.griefed.serverpackcreator.web.modpack.ModPackService +import de.griefed.serverpackcreator.web.serverpack.ServerPackService +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.time.LocalDateTime + +@Service +class CreationStatsService @Autowired constructor( + private val serverPackService: ServerPackService, + private val modpackService: ModPackService +) { + + fun getModpackTimeStamps(): List<AmountPerDate> { + val dates = mutableListOf<LocalDateTime>() + for (pack in modpackService.getModpacks()) { + dates.add(pack.dateCreated!!.toLocalDateTime()) + } + return count(dates) + } + + fun getServerPackTimeStamps(): List<AmountPerDate> { + val dates = mutableListOf<LocalDateTime>() + for (pack in serverPackService.getServerPacks()) { + dates.add(pack.dateCreated!!.toLocalDateTime()) + } + return count(dates) + } + + private fun count(dates: List<LocalDateTime>): List<AmountPerDate> { + val creations = mutableListOf<AmountPerDate>() + for (date in dates) { + //skip if the date was already checked + if (creations.any { it.date == dateToString(date) }) { + continue + } + val dateStr = dateToString(date) + val count = dates.count { stamp -> + dateToString(stamp) == dateStr + } + creations.add(AmountPerDate(count, dateStr)) + } + return creations + } + + private fun dateToString(date: LocalDateTime): String { + return "${date.year}-${date.monthValue}-${date.dayOfMonth}" + } +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsData.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsData.kt new file mode 100644 index 000000000..32e44f06a --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsData.kt @@ -0,0 +1,10 @@ +package de.griefed.serverpackcreator.web.stats.disk + +data class DiskStatsData( + val identifier: String, + val dirName: String, + val rootName: String, + val totalSpace: Long, + val freeSpace: Long, + val usedBySPC: Long +) diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsService.kt new file mode 100644 index 000000000..a6e1855a0 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/disk/DiskStatsService.kt @@ -0,0 +1,59 @@ +package de.griefed.serverpackcreator.web.stats.disk + +import de.griefed.serverpackcreator.api.ApiProperties +import de.griefed.serverpackcreator.api.utilities.common.size +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.io.File +import java.util.* + +@Service +class DiskStatsService @Autowired constructor( + private val apiProperties: ApiProperties +) { + val stats: MutableList<DiskStatsData> = mutableListOf() + + init { + val task = object : TimerTask() { + override fun run() { + refreshStats() + } + } + val timer = Timer("DiskStatsTimer") + timer.scheduleAtFixedRate(task, 0, 300000L) + } + + private fun refreshStats() { + stats.clear() + stats.addAll(computeStats()) + } + + private fun computeStats(): List<DiskStatsData> { + val stats = mutableListOf<DiskStatsData>() + stats.add(computeStatsFromDirectory(apiProperties.homeDirectory, "Home")) + stats.add(computeStatsFromDirectory(apiProperties.modpacksDirectory, "ModPacks")) + stats.add(computeStatsFromDirectory(apiProperties.serverPacksDirectory, "Server Packs")) + stats.add(computeStatsFromDirectory(apiProperties.propertiesDirectory, "Properties")) + stats.add(computeStatsFromDirectory(apiProperties.configsDirectory, "Configs")) + stats.add(computeStatsFromDirectory(apiProperties.serverFilesDirectory, "Server Files")) + stats.add(computeStatsFromDirectory(apiProperties.iconsDirectory, "Icons")) + stats.add(computeStatsFromDirectory(apiProperties.pluginsDirectory, "Plugins")) + stats.add(computeStatsFromDirectory(apiProperties.pluginsConfigsDirectory, "Plugin Configs")) + stats.add(computeStatsFromDirectory(apiProperties.manifestsDirectory, "Manifests")) + stats.add(computeStatsFromDirectory(apiProperties.minecraftServerManifestsDirectory, "MC Server Manifests")) + stats.add(computeStatsFromDirectory(apiProperties.installerCacheDirectory, "Installer Cache")) + stats.add(computeStatsFromDirectory(apiProperties.logsDirectory, "Logs")) + stats.add(computeStatsFromDirectory(apiProperties.tomcatBaseDirectory, "Tomcat Base")) + stats.add(computeStatsFromDirectory(apiProperties.tomcatLogsDirectory, "Tomcat Logs")) + stats.add(computeStatsFromDirectory(apiProperties.workDirectory, "Work")) + stats.add(computeStatsFromDirectory(apiProperties.tempDirectory, "Temp")) + return stats + } + + private fun computeStatsFromDirectory(directory: File, identifier: String): DiskStatsData { + val root: File = directory.absoluteFile.toPath().root.toFile() + val directorySize = directory.size() + val stats = DiskStatsData(identifier, directory.name, root.toString(), root.totalSpace, root.freeSpace, directorySize.toLong()) + return stats + } +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/downloads/DownloadStatsService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/downloads/DownloadStatsService.kt new file mode 100644 index 000000000..6af445281 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/downloads/DownloadStatsService.kt @@ -0,0 +1,93 @@ +package de.griefed.serverpackcreator.web.stats.downloads + +import de.griefed.serverpackcreator.web.modpack.ModPack +import de.griefed.serverpackcreator.web.modpack.ModPackDownload +import de.griefed.serverpackcreator.web.modpack.ModPackDownloadRepository +import de.griefed.serverpackcreator.web.modpack.ModPackRepository +import de.griefed.serverpackcreator.web.serverpack.ServerPack +import de.griefed.serverpackcreator.web.serverpack.ServerPackDownload +import de.griefed.serverpackcreator.web.serverpack.ServerPackDownloadRepository +import de.griefed.serverpackcreator.web.serverpack.ServerPackRepository +import de.griefed.serverpackcreator.web.stats.creation.AmountPerDate +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.time.LocalDateTime + +@Service +class DownloadStatsService @Autowired constructor( + private val modPackDownloadRepository: ModPackDownloadRepository, + private val serverPackDownloadRepository: ServerPackDownloadRepository, + private val modpackRepository: ModPackRepository, + private val serverPackRepository: ServerPackRepository, +) { + + fun modPackDownloads(): List<AmountPerDate> { + val dates = mutableListOf<LocalDateTime>() + for (download in modPackDownloadRepository.findAll().filter { it.downloadedAt != null }) { + dates.add(download.downloadedAt!!.toLocalDateTime()) + } + return count(dates) + } + + fun serverPackDownloads(): List<AmountPerDate> { + val dates = mutableListOf<LocalDateTime>() + for (download in serverPackDownloadRepository.findAll().filter { it.downloadedAt != null }) { + dates.add(download.downloadedAt!!.toLocalDateTime()) + } + return count(dates) + } + + private fun count(dates: List<LocalDateTime>): List<AmountPerDate> { + val creations = mutableListOf<AmountPerDate>() + for (date in dates) { + //skip if the date was already checked + if (creations.any { it.date == dateToString(date) }) { + continue + } + val dateStr = dateToString(date) + val count = dates.count { stamp -> + dateToString(stamp) == dateStr + } + creations.add(AmountPerDate(count, dateStr)) + } + return creations + } + + private fun dateToString(date: LocalDateTime): String { + return "${date.year}-${date.monthValue}-${date.dayOfMonth}" + } + + fun allModPackDownloadsHistory(): List<ModPackDownload> { + return modPackDownloadRepository.findAll() + } + + fun allServerPackDownloadsHistory(): List<ServerPackDownload> { + return serverPackDownloadRepository.findAll() + } + + fun downloadHistoryForModPack(modPackID: Int): List<ModPackDownload> { + val pack = modpackRepository.findById(modPackID) + return if (pack.isPresent) { + downloadHistoryForModPack(pack.get()) + } else { + listOf() + } + } + + fun downloadHistoryForModPack(modPack: ModPack): List<ModPackDownload> { + return modPackDownloadRepository.findAllByModPack(modPack) + } + + fun downloadHistoryForServerPack(serverPackID: Int): List<ServerPackDownload> { + val pack = serverPackRepository.findById(serverPackID) + return if (pack.isPresent) { + downloadHistoryForServerPack(pack.get()) + } else { + listOf() + } + } + + fun downloadHistoryForServerPack(serverPack: ServerPack): List<ServerPackDownload> { + return serverPackDownloadRepository.findAllByServerPack(serverPack) + } +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsData.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsData.kt new file mode 100644 index 000000000..07b85ff16 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsData.kt @@ -0,0 +1,3 @@ +package de.griefed.serverpackcreator.web.stats.packs + +data class AmountStatsData(val modPacks: Int, val serverPacks: Int, val runConfigurations: Int) diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsService.kt new file mode 100644 index 000000000..f0587c8f3 --- /dev/null +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/stats/packs/AmountStatsService.kt @@ -0,0 +1,19 @@ +package de.griefed.serverpackcreator.web.stats.packs + +import de.griefed.serverpackcreator.web.modpack.ModPackRepository +import de.griefed.serverpackcreator.web.serverpack.ServerPackRepository +import de.griefed.serverpackcreator.web.serverpack.runconfiguration.RunConfigurationRepository +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service + +@Service +class AmountStatsService @Autowired constructor( + private val serverPackRepository: ServerPackRepository, + private val modpackRepository: ModPackRepository, + private val runConfigurationRepository: RunConfigurationRepository +) { + val stats: AmountStatsData + get() { + return AmountStatsData(modpackRepository.findAll().size, serverPackRepository.findAll().size, runConfigurationRepository.findAll().size) + } +} \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/FileSystemStorageService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/FileSystemStorageService.kt index 7615100e3..efb70ac65 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/FileSystemStorageService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/FileSystemStorageService.kt @@ -20,8 +20,6 @@ package de.griefed.serverpackcreator.web.storage import de.griefed.serverpackcreator.api.utilities.common.size -import de.griefed.serverpackcreator.web.data.SavedFile -import org.apache.logging.log4j.kotlin.KotlinLogger import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.bouncycastle.util.encoders.Hex import org.springframework.util.FileSystemUtils @@ -37,7 +35,7 @@ class FileSystemStorageService(private val rootLocation: Path, private val messa constructor(rootLocation: Path) : this(rootLocation, MessageDigest.getInstance("SHA-256")) - private val logger: KotlinLogger = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } @Throws(StorageException::class) fun store(file: MultipartFile): Optional<SavedFile> { @@ -52,7 +50,7 @@ class FileSystemStorageService(private val rootLocation: Path, private val messa throw StorageException("Cannot store file outside current directory.") } file.transferTo(destinationFile) - logger.debug("Stored file to $destinationFile.") + log.debug("Stored file to $destinationFile.") val sha256 = String(Hex.encode(messageDigestInstance.digest(destinationFile.toFile().readBytes()))) return Optional.of( SavedFile( @@ -73,7 +71,7 @@ class FileSystemStorageService(private val rootLocation: Path, private val messa return if (file != null && file.exists()) { Optional.of(file) } else { - logger.warn("Filesystem does not contain a file for $id.") + log.warn("Filesystem does not contain a file for $id.") Optional.empty() } } diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/SavedFile.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/SavedFile.kt similarity index 95% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/SavedFile.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/SavedFile.kt index a0f9cd5c4..4422c358d 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/SavedFile.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/SavedFile.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.storage import java.nio.file.Path diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/StorageSystem.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/StorageSystem.kt index b7e1c6498..002236192 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/StorageSystem.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/storage/StorageSystem.kt @@ -19,8 +19,6 @@ */ package de.griefed.serverpackcreator.web.storage -import de.griefed.serverpackcreator.web.data.SavedFile -import org.apache.logging.log4j.kotlin.KotlinLogger import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.springframework.web.multipart.MultipartFile import java.io.File @@ -29,7 +27,7 @@ import java.security.MessageDigest import java.util.* class StorageSystem(private val fileSystemStorageService: FileSystemStorageService) { - private val logger: KotlinLogger = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } constructor(rootLocation: Path, messageDigest: MessageDigest) : this( FileSystemStorageService(rootLocation, messageDigest) @@ -48,7 +46,7 @@ class StorageSystem(private val fileSystemStorageService: FileSystemStorageServi if (fileSys.isPresent) { return fileSys } - logger.error("File with ID $id could not be found.") + log.error("File with ID $id could not be found.") return Optional.empty() } diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ErrorEntry.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorEntry.kt similarity index 97% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ErrorEntry.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorEntry.kt index 01fb1d760..c200cef51 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/ErrorEntry.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorEntry.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.task import jakarta.persistence.Column import jakarta.persistence.Entity diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorRepository.kt index 7ec62647e..55e03ab2c 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/ErrorRepository.kt @@ -19,7 +19,6 @@ */ package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.data.ErrorEntry import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository import java.util.* diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventController.kt index 8d715e00c..13f4b2391 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventController.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventController.kt @@ -19,8 +19,7 @@ */ package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.data.QueueEvent -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPackStatus import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpHeaders import org.springframework.http.ResponseEntity @@ -55,7 +54,7 @@ class EventController @Autowired constructor(private val eventService: EventServ @GetMapping("/status/{status:[A-Z]+}", produces = ["application/json"]) @ResponseBody - fun getStatusEvents(@PathVariable status: ModpackStatus): ResponseEntity<List<QueueEvent>> { + fun getStatusEvents(@PathVariable status: ModPackStatus): ResponseEntity<List<QueueEvent>> { return ResponseEntity.ok().header(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE) .body(eventService.loadAllByStatus(status)) } diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventService.kt index fa7ce25b8..017d0d469 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/EventService.kt @@ -19,9 +19,7 @@ */ package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.data.ErrorEntry -import de.griefed.serverpackcreator.web.data.QueueEvent -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPackStatus import org.springframework.beans.factory.annotation.Autowired import org.springframework.data.domain.Sort import org.springframework.stereotype.Service @@ -35,7 +33,7 @@ class EventService @Autowired constructor( fun submit( modPackId: Int?, serverPackId: Int?, - status: ModpackStatus?, + status: ModPackStatus?, message: String, errors: List<String>? = null ) { @@ -71,7 +69,7 @@ class EventService @Autowired constructor( return queueEventRepository.findAllByServerPackId(serverPackId) } - fun loadAllByStatus(status: ModpackStatus): MutableList<QueueEvent> { + fun loadAllByStatus(status: ModPackStatus): MutableList<QueueEvent> { return queueEventRepository.findAllByStatus(status) } } \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/QueueEvent.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEvent.kt similarity index 94% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/QueueEvent.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEvent.kt index c93424d5c..3ba7a7b81 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/QueueEvent.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEvent.kt @@ -17,9 +17,9 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPackStatus import jakarta.persistence.* import org.hibernate.annotations.CreationTimestamp import java.sql.Timestamp @@ -39,7 +39,7 @@ class QueueEvent() { var serverPackId: Int? = null @Column - var status: ModpackStatus? = null + var status: ModPackStatus? = null @Column var message: String = "" @@ -54,7 +54,7 @@ class QueueEvent() { constructor( modPackId: Int, serverPackId: Int?, - status: ModpackStatus?, + status: ModPackStatus?, message: String, timestamp: Timestamp?, errors: MutableList<ErrorEntry> diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEventRepository.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEventRepository.kt index 42ef50b94..2936678eb 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEventRepository.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/QueueEventRepository.kt @@ -19,8 +19,7 @@ */ package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.data.QueueEvent -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPackStatus import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -28,5 +27,5 @@ import org.springframework.stereotype.Repository interface QueueEventRepository : JpaRepository<QueueEvent, Int> { fun findAllByModPackId(modPackId: Int): MutableList<QueueEvent> fun findAllByServerPackId(serverPackId: Int): MutableList<QueueEvent> - fun findAllByStatus(status: ModpackStatus): MutableList<QueueEvent> + fun findAllByStatus(status: ModPackStatus): MutableList<QueueEvent> } \ No newline at end of file diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskDetail.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskDetail.kt index bf60871a5..152941e36 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskDetail.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskDetail.kt @@ -20,9 +20,9 @@ package de.griefed.serverpackcreator.web.task import de.griefed.serverpackcreator.api.PackConfig -import de.griefed.serverpackcreator.web.data.ModPack -import de.griefed.serverpackcreator.web.data.RunConfiguration -import de.griefed.serverpackcreator.web.data.ServerPack +import de.griefed.serverpackcreator.web.modpack.ModPack +import de.griefed.serverpackcreator.web.serverpack.ServerPack +import de.griefed.serverpackcreator.web.serverpack.customizing.RunConfiguration import java.io.File class TaskDetail(val modpack: ModPack) { diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionService.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionService.kt index ff99d281b..a513e5c8d 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionService.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionService.kt @@ -19,7 +19,7 @@ */ package de.griefed.serverpackcreator.web.task -import de.griefed.serverpackcreator.web.data.ModPack +import de.griefed.serverpackcreator.web.modpack.ModPack interface TaskExecutionService { fun submitTaskInQueue(taskDetail: TaskDetail) diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionServiceImpl.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionServiceImpl.kt index 705ab0894..48795ad87 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionServiceImpl.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/task/TaskExecutionServiceImpl.kt @@ -23,14 +23,12 @@ import de.griefed.serverpackcreator.api.ConfigurationHandler import de.griefed.serverpackcreator.api.ServerPackHandler import de.griefed.serverpackcreator.api.utilities.common.deleteQuietly import de.griefed.serverpackcreator.api.utilities.common.size -import de.griefed.serverpackcreator.web.data.ModPack -import de.griefed.serverpackcreator.web.data.ServerPack -import de.griefed.serverpackcreator.web.modpack.ModpackService -import de.griefed.serverpackcreator.web.modpack.ModpackSource -import de.griefed.serverpackcreator.web.modpack.ModpackStatus +import de.griefed.serverpackcreator.web.modpack.ModPack +import de.griefed.serverpackcreator.web.modpack.ModPackService +import de.griefed.serverpackcreator.web.modpack.ModPackStatus +import de.griefed.serverpackcreator.web.serverpack.ServerPack import de.griefed.serverpackcreator.web.serverpack.ServerPackService import de.griefed.serverpackcreator.web.storage.StorageException -import org.apache.logging.log4j.kotlin.KotlinLogger import org.apache.logging.log4j.kotlin.cachedLoggerOf import org.bouncycastle.util.encoders.Hex import org.springframework.beans.factory.annotation.Autowired @@ -42,7 +40,7 @@ import java.util.concurrent.LinkedBlockingDeque @Service class TaskExecutionServiceImpl @Autowired constructor( - private val modpackService: ModpackService, + private val modpackService: ModPackService, private val serverPackService: ServerPackService, private val configurationHandler: ConfigurationHandler, private val serverPackHandler: ServerPackHandler, @@ -50,7 +48,7 @@ class TaskExecutionServiceImpl @Autowired constructor( private val eventService: EventService ) : TaskExecutionService { - private val logger: KotlinLogger = cachedLoggerOf(this.javaClass) + private val log by lazy { cachedLoggerOf(this.javaClass) } private val blockingQueue: BlockingQueue<TaskDetail> = LinkedBlockingDeque() init { @@ -65,21 +63,21 @@ class TaskExecutionServiceImpl @Autowired constructor( while (true) { try { if (!blockingQueue.isEmpty()) { - logger.info("Processing Next Task from Queue") + log.info("Processing Next Task from Queue") val taskDetail = blockingQueue.take() processTask(taskDetail) } else { Thread.sleep(1000) } } catch (e: InterruptedException) { - logger.error("There was an error while processing ", e) + log.error("There was an error while processing ", e) Thread.currentThread().interrupt() } } } thread.name = "GenerationThread" thread.start() - logger.info("Worker Thread ${thread.name} initiated successfully") + log.info("Worker Thread ${thread.name} initiated successfully") } /** @@ -96,19 +94,12 @@ class TaskExecutionServiceImpl @Autowired constructor( } private fun processTask(taskDetail: TaskDetail) { - logger.info("Running on Thread ${Thread.currentThread().name}") + log.info("Running on Thread ${Thread.currentThread().name}") when (taskDetail.modpack.status) { - ModpackStatus.QUEUED -> checkModpack(taskDetail) - ModpackStatus.CHECKED -> { - if (taskDetail.modpack.source == ModpackSource.ZIP) { - generateFromZip(taskDetail) - } else { - generateFromModrinth(taskDetail.modpack) - } - } - - ModpackStatus.GENERATED, ModpackStatus.ERROR -> finishing(taskDetail) - else -> logger.error("${taskDetail.modpack.status} does not merit unique processing.") + ModPackStatus.QUEUED -> checkModpack(taskDetail) + ModPackStatus.CHECKED -> generateFromZip(taskDetail) + ModPackStatus.GENERATED, ModPackStatus.ERROR -> finishing(taskDetail) + else -> log.error("${taskDetail.modpack.status} does not merit unique processing.") } } @@ -130,16 +121,16 @@ class TaskExecutionServiceImpl @Autowired constructor( ) } Runtime.getRuntime().gc() - logger.info("Remaining tasks in queue: ${getQueueSize()}") + log.info("Remaining tasks in queue: ${getQueueSize()}") } private fun checkModpack(taskDetail: TaskDetail) { - logger.info("Performing Modpack check for modpack : ${taskDetail.modpack.id}") + log.info("Performing Modpack check for modpack : ${taskDetail.modpack.id}") val zipFile = modpackService.getModPackArchive(taskDetail.modpack) if (zipFile.isEmpty) { throw StorageException("ModPack-file for ${taskDetail.modpack.id} not found.") } - taskDetail.modpack.status = ModpackStatus.CHECKING + taskDetail.modpack.status = ModPackStatus.CHECKING eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -151,8 +142,13 @@ class TaskExecutionServiceImpl @Autowired constructor( taskDetail.modPackFile = File(packConfig.modpackDir) val check = configurationHandler.checkConfiguration(packConfig) if (check.allChecksPassed) { - taskDetail.modpack.status = ModpackStatus.CHECKED + taskDetail.modpack.status = ModPackStatus.CHECKED taskDetail.packConfig = packConfig + if (packConfig.projectID != null && packConfig.versionID != null) { + taskDetail.modpack.projectID = packConfig.projectID!! + taskDetail.modpack.versionID = packConfig.versionID!! + taskDetail.modpack.source = packConfig.source + } eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -160,7 +156,7 @@ class TaskExecutionServiceImpl @Autowired constructor( "ModPack checks passed." ) } else { - taskDetail.modpack.status = ModpackStatus.ERROR + taskDetail.modpack.status = ModPackStatus.ERROR eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -173,15 +169,9 @@ class TaskExecutionServiceImpl @Autowired constructor( submitTaskInQueue(taskDetail) } - private fun generateFromModrinth(modpack: ModPack) { - logger.info("Server Pack will be generated from Modrinth modpack : ${modpack.id}") - logger.warn("Modrinth API will be available in Milestone 6.") - /*logger.info("Server Pack generated.")*/ - } - private fun generateFromZip(taskDetail: TaskDetail) { - logger.info("Server Pack will be generated from uploaded, zipped, modpack : ${taskDetail.modpack.id}") - taskDetail.modpack.status = ModpackStatus.GENERATING + log.info("Server Pack will be generated from uploaded, zipped, modpack : ${taskDetail.modpack.id}") + taskDetail.modpack.status = ModPackStatus.GENERATING eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -206,7 +196,7 @@ class TaskExecutionServiceImpl @Autowired constructor( serverPack.sha256 = String(Hex.encode(messageDigestInstance.digest(serverPackFile.readBytes()))) serverPackService.saveServerPack(serverPack) taskDetail.modpack.serverPacks.addLast(serverPack) - taskDetail.modpack.status = ModpackStatus.GENERATED + taskDetail.modpack.status = ModPackStatus.GENERATED eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -218,7 +208,7 @@ class TaskExecutionServiceImpl @Autowired constructor( File(destination).deleteQuietly() File(taskDetail.packConfig!!.modpackDir).deleteQuietly() } else { - taskDetail.modpack.status = ModpackStatus.ERROR + taskDetail.modpack.status = ModPackStatus.ERROR eventService.submit( taskDetail.modpack.id, taskDetail.serverPack?.id, @@ -228,7 +218,7 @@ class TaskExecutionServiceImpl @Autowired constructor( } modpackService.saveModpack(taskDetail.modpack) submitTaskInQueue(taskDetail) - logger.info("Server Pack generated.") + log.info("Server Pack generated.") } /** diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/VersionMetaResponse.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionMetaResponse.kt similarity index 95% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/VersionMetaResponse.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionMetaResponse.kt index 40b0c49b1..7caf3beb9 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/data/VersionMetaResponse.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionMetaResponse.kt @@ -17,7 +17,7 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web.data +package de.griefed.serverpackcreator.web.versions class VersionMetaResponse( val minecraft: List<String>, diff --git a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/VersionsController.kt b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionsController.kt similarity index 98% rename from serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/VersionsController.kt rename to serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionsController.kt index f989707e0..bb7f61b4e 100644 --- a/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/VersionsController.kt +++ b/serverpackcreator-web/src/main/kotlin/de/griefed/serverpackcreator/web/versions/VersionsController.kt @@ -17,10 +17,9 @@ * * The full license can be found at https:github.com/Griefed/ServerPackCreator/blob/main/LICENSE */ -package de.griefed.serverpackcreator.web +package de.griefed.serverpackcreator.web.versions import de.griefed.serverpackcreator.api.versionmeta.VersionMeta -import de.griefed.serverpackcreator.web.data.VersionMetaResponse import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpHeaders import org.springframework.http.ResponseEntity diff --git a/serverpackcreator-web/src/main/resources/application.properties b/serverpackcreator-web/src/main/resources/application.properties index 9381d26b4..c8e7adebd 100644 --- a/serverpackcreator-web/src/main/resources/application.properties +++ b/serverpackcreator-web/src/main/resources/application.properties @@ -26,4 +26,4 @@ spring.transaction.default-timeout=3600 spring.servlet.multipart.max-file-size=5000MB spring.servlet.multipart.max-request-size=5000MB spring.jpa.properties.hibernate.jdbc.use_streams_for_binary=true -spring.config.import=classpath:/application.properties,classpath:/serverpackcreator.properties,optional:file:./serverpackcreator.properties \ No newline at end of file +spring.config.import=classpath:/application.properties,classpath:/serverpackcreator.properties,optional:file:./serverpackcreator.properties,optional:file:./overrides.properties \ No newline at end of file diff --git a/serverpackcreator-web/src/test/kotlin/de/griefed/serverpackcreator/web/WebServiceTest.kt b/serverpackcreator-web/src/test/kotlin/de/griefed/serverpackcreator/web/WebServiceTest.kt index 0a96e248d..6a19de46b 100644 --- a/serverpackcreator-web/src/test/kotlin/de/griefed/serverpackcreator/web/WebServiceTest.kt +++ b/serverpackcreator-web/src/test/kotlin/de/griefed/serverpackcreator/web/WebServiceTest.kt @@ -14,7 +14,7 @@ class WebServiceTest internal constructor() { ApiWrapper.api( File( File("").absoluteFile.parent, - "serverpackcreator-api/src/jvmTest/resources/serverpackcreator.properties" + "serverpackcreator-api/src/test/resources/serverpackcreator.properties" ) ) ) diff --git a/serverpackcreator-web/src/test/resources/log4j2.xml b/serverpackcreator-web/src/test/resources/log4j2.xml index 318b1c6b6..d3fa2dcbf 100644 --- a/serverpackcreator-web/src/test/resources/log4j2.xml +++ b/serverpackcreator-web/src/test/resources/log4j2.xml @@ -35,22 +35,6 @@ <DefaultRolloverStrategy max="5" /> </RollingFile> - <RollingFile name="InstallerLogger" fileName="${log-path}/modloader_installer.log" filePattern="${archive}/modloader_installer.log.%i"> - <PatternLayout> - <Charset> - ${charset} - </Charset> - <Pattern> - ${pattern} - </Pattern> - </PatternLayout> - <Policies> - <OnStartupTriggeringPolicy /> - <SizeBasedTriggeringPolicy size="10 MB" /> - </Policies> - <DefaultRolloverStrategy max="5" /> - </RollingFile> - <RollingFile name="PluginsLogger" fileName="${log-path}/plugins.log" filePattern="${archive}/plugins.log.%i"> <PatternLayout> <Charset> @@ -79,10 +63,6 @@ <AppenderRef ref="ApplicationLogger" level="${log-level-spc}" /> </Logger> - <Logger name="InstallerLogger" level="ALL" additivity="false"> - <AppenderRef ref="InstallerLogger" level="${log-level-spc}" /> - </Logger> - <Logger name="PluginsLogger" level="ALL" additivity="false"> <AppenderRef ref="PluginsLogger" level="${log-level-spc}" /> </Logger> diff --git a/spc.install4j b/spc.install4j new file mode 100644 index 000000000..313a43ae4 --- /dev/null +++ b/spc.install4j @@ -0,0 +1,2313 @@ +<?xml version="1.0" encoding="UTF-8"?> +<install4j version="10.0.7" transformSequenceNumber="10"> + <directoryPresets config="./img" /> + <application name="ServerPackCreator" applicationId="3565-3228-6904-0931" mediaDir="./media" compression="9" lzmaCompression="true" commonExternalFiles="true" shrinkRuntime="false" shortName="SPC" publisher="Griefed" publisherWeb="https://serverpackcreator.de" version="${compiler:projectVersion}" allPathsRelative="true" autoSave="true" macVolumeId="521d0a10ddf6d897" javaMinVersion="21"> + <variables> + <variable name="projectDir" value="F:\GitLab\ServerPackCreator" description="Project directory of ServerPackCreator on your system" /> + <variable name="projectVersion" value="dev" description="The version with which to build this installer." /> + <variable name="projectYear" value="2024" /> + </variables> + <jreBundles jdkProviderId="Zulu" release="21/21.0.3"> + <modules> + <defaultModules set="all" /> + </modules> + </jreBundles> + </application> + <files defaultOverwriteMode="1" defaultUninstallMode="2" launcherOverwriteMode="1" defaultFileMode="755"> + <mountPoints> + <mountPoint id="26" /> + </mountPoints> + <entries> + <fileEntry mountPoint="26" file="${compiler:projectDir}/CHANGELOG.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/serverpackcreator-api/src/main/resources/log4j2.xml" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/serverpackcreator-api/src/main/resources/serverpackcreator.properties" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/CODE_OF_CONDUCT.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/CONTRIBUTING.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/HELP.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/LICENSE" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/README.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <fileEntry mountPoint="26" file="${compiler:projectDir}/SECURITY.md" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" /> + <dirEntry mountPoint="26" file="${compiler:projectDir}/serverpackcreator-app/build/libs" overwriteMode="1" fileMode="755" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="libs" excludeSuffixes="plain.jar" /> + </entries> + </files> + <launchers> + <launcher name="ServerPackCreator-GUI" id="183" excludeFromMenu="true" icnsFile="${compiler:projectDir}/img/app.icns"> + <executable name="ServerPackCreator-GUI" iconSet="true" iconFile="${compiler:projectDir}/img/icon.ico" redirectStderr="false" stderrFile="error.log${installer:sys.installationDir}/logs/run.log" stderrMode="append" stdoutFile="error.log${installer:sys.installationDir}/logs/run.log" stdoutMode="append" executableMode="gui" singleInstance="true" checkConsoleParameter="true" globalSingleInstance="true" windowsSessionSingleInstance="false"> + <versionInfo include="true" fileDescription="Create server packs from Minecraft modpacks." legalCopyright="Copyright (C) ${compiler:projectYear} Griefed" internalName="ServerPackCreator" /> + </executable> + <java mainClass="org.springframework.boot.loader.launch.JarLauncher" arguments="-gui"> + <classPath> + <scanDirectory location="." failOnError="false" /> + </classPath> + <modulePath> + <directory location="lib" failOnError="false" /> + </modulePath> + </java> + <iconImageFiles> + <file path="${compiler:projectDir}/img/app.png" /> + </iconImageFiles> + </launcher> + <launcher name="ServerPackCreator" id="232" excludeFromMenu="true" icnsFile="${compiler:projectDir}/img/app.icns"> + <executable name="ServerPackCreator" iconSet="true" iconFile="${compiler:projectDir}/img/icon.ico" redirectStderr="false" stderrFile="error.log${installer:sys.installationDir}/logs/run.log" stderrMode="append" stdoutFile="error.log${installer:sys.installationDir}/logs/run.log" stdoutMode="append" executableMode="console" singleInstance="true" checkConsoleParameter="true" globalSingleInstance="true"> + <versionInfo include="true" fileDescription="Create server packs from Minecraft modpacks." legalCopyright="Copyright (C) ${compiler:projectYear} Griefed" internalName="ServerPackCreator" /> + </executable> + <java mainClass="org.springframework.boot.loader.launch.JarLauncher"> + <classPath> + <scanDirectory location="." failOnError="false" /> + </classPath> + <modulePath> + <directory location="lib" failOnError="false" /> + </modulePath> + </java> + <iconImageFiles> + <file path="${compiler:projectDir}/img/app.png" /> + </iconImageFiles> + </launcher> + <launcher name="ServerPackCreator-WEB" id="234" excludeFromMenu="true" icnsFile="${compiler:projectDir}/img/app.icns"> + <executable name="ServerPackCreator-WEB" iconSet="true" iconFile="${compiler:projectDir}/img/icon.ico" redirectStderr="false" stderrFile="~/ServerPackCreator/serverpackcreator.log" stderrMode="append" stdoutFile="~/ServerPackCreator/serverpackcreator.log" stdoutMode="append" executableMode="service" singleInstance="true" checkConsoleParameter="true" globalSingleInstance="true" dpiAware="false"> + <versionInfo include="true" fileDescription="Create server packs from Minecraft modpacks." legalCopyright="Copyright (C) ${compiler:projectYear} Griefed" internalName="ServerPackCreator" /> + </executable> + <java mainClass="org.springframework.boot.loader.launch.JarLauncher" arguments="-web"> + <classPath> + <scanDirectory location="." failOnError="false" /> + </classPath> + <modulePath> + <directory location="lib" failOnError="false" /> + </modulePath> + </java> + <iconImageFiles> + <file path="${compiler:projectDir}/img/app.png" /> + </iconImageFiles> + </launcher> + </launchers> + <installerGui> + <applications> + <application id="installer" beanClass="com.install4j.runtime.beans.applications.InstallerApplication"> + <serializedBean> + <property name="customIconImageFiles"> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_16x16.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_32x32.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_48x48.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_128x128.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_256x256.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/install_512x512.png</string> + </object> + </add> + </property> + <property name="frameWidth" type="int" value="600" /> + <property name="useCustomIcon" type="boolean" value="true" /> + </serializedBean> + <startup> + <screen id="1" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0"> + <actions> + <action id="22" beanClass="com.install4j.runtime.beans.actions.misc.RequestPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="failIfNotObtainedLinux" type="boolean" value="true" /> + <property name="linuxPrivilegeRequirement" type="enum" class="com.install4j.runtime.beans.actions.misc.PrivilegeRequirement" value="OBTAIN" /> + <property name="obtainIfAdminMac" type="boolean" value="true" /> + <property name="obtainIfNormalMac" type="boolean" value="true" /> + <property name="obtainIfNormalWin" type="boolean" value="true" /> + </serializedBean> + </action> + </actions> + </screen> + </startup> + <screens> + <screen id="2" beanClass="com.install4j.runtime.beans.screens.WelcomeScreen" styleId="7" rollbackBarrierExitCode="0"> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="46" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTH" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <actions> + <action id="7" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true"> + <serializedBean> + <property name="excludedVariables" type="array" elementType="string" length="1"> + <element index="0">sys.installationDir</element> + </property> + </serializedBean> + <condition>context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition> + </action> + </actions> + <formComponents> + <formComponent id="3" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent"> + <serializedBean> + <property name="labelText" type="string">${form:welcomeMessage}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + </formComponent> + <formComponent id="4" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent"> + <serializedBean> + <property name="consoleScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">String message = context.getMessage("ConsoleWelcomeLabel", context.getApplicationName()); +return console.askOkCancel(message, true); +</property> + </object> + </property> + </serializedBean> + </formComponent> + <formComponent id="5" beanClass="com.install4j.runtime.beans.formcomponents.UpdateAlertComponent" useExternalParametrization="true" externalParametrizationName="Update Alert" externalParametrizationMode="include"> + <externalParametrizationPropertyNames> + <propertyName>updateCheck</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="6" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetTop="20"> + <serializedBean> + <property name="labelText" type="string">${i18n:ClickNext}</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen id="320" beanClass="com.install4j.runtime.beans.screens.LicenseScreen" rollbackBarrierExitCode="0"> + <formComponents> + <formComponent id="321" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:LicenseLabel3}</property> + </serializedBean> + </formComponent> + <formComponent id="322" beanClass="com.install4j.runtime.beans.formcomponents.LicenseComponent" useExternalParametrization="true" externalParametrizationName="License Agreement" externalParametrizationMode="include"> + <serializedBean> + <property name="displayedTextFile" id="LocalizedExternalFile0"> + <property name="languageIdToExternalFile"> + <entry> + <string>en</string> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/licenses/LICENSE-AGREEMENT.txt</string> + </object> + </entry> + </property> + </property> + <property name="fillVertical" type="boolean" value="true" /> + <property name="readAllRequired" type="boolean" value="true" /> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>textSource</propertyName> + <propertyName>displayedText</propertyName> + <propertyName>displayedTextFile</propertyName> + <propertyName>variableName</propertyName> + <propertyName>acceptInitiallySelected</propertyName> + <propertyName>readAllRequired</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <screen id="8" beanClass="com.install4j.runtime.beans.screens.InstallationDirectoryScreen" actionElevationType="none" rollbackBarrierExitCode="0"> + <condition>!context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition> + <actions> + <action id="11" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true"> + <serializedBean> + <property name="excludedVariables" type="array" elementType="string" length="1"> + <element index="0">sys.installationDir</element> + </property> + </serializedBean> + <condition>context.getVariable("sys.responseFile") == null</condition> + </action> + <action id="252" beanClass="com.install4j.runtime.beans.actions.registry.LoadInstallerVariablesAction" commentSet="true" comment="This action loads the installer variables from the preference store that have been saved by the "Save installer variables to the Java preference store" action on the "Installation" screen. 

It overrides installer variables that are loaded from the response file. The response file holds the settings as they were last made in the installer, but the settings that are actually usd by the application live in the preference store." actionElevationType="elevated" rollbackBarrierExitCode="0" multiExec="true"> + <serializedBean> + <property name="packageName" type="string">${compiler:sys.applicationId}</property> + </serializedBean> + </action> + </actions> + <formComponents> + <formComponent id="9" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="25"> + <serializedBean> + <property name="labelText" type="string">${i18n:SelectDirLabel(${compiler:sys.fullName})}</property> + </serializedBean> + </formComponent> + <formComponent id="10" beanClass="com.install4j.runtime.beans.formcomponents.InstallationDirectoryChooserComponent" useExternalParametrization="true" externalParametrizationName="Installation Directory Chooser" externalParametrizationMode="include"> + <serializedBean> + <property name="requestFocus" type="boolean" value="true" /> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>allowSpacesOnUnix</propertyName> + <propertyName>checkFreeSpace</propertyName> + <propertyName>checkWritable</propertyName> + <propertyName>existingDirWarning</propertyName> + <propertyName>manualEntryAllowed</propertyName> + <propertyName>showFreeDiskSpace</propertyName> + <propertyName>showRequiredDiskSpace</propertyName> + <propertyName>standardValidation</propertyName> + <propertyName>suggestAppDir</propertyName> + <propertyName>validateApplicationId</propertyName> + <propertyName>validationScript</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <screen name="Configure Webservice" id="48" beanClass="com.install4j.runtime.beans.screens.FormScreen" enabled="false"> + <serializedBean> + <property name="subTitle" type="string">Please choose options for the webservice</property> + <property name="title" type="string">Webservice Options</property> + </serializedBean> + <validation>if (!context.getBooleanVariable("specialUserAccount")) { + context.setVariable("serviceAccount", "NT AUTHORITY\\System"); + context.setVariable("servicePassword", ""); +} +return true;</validation> + <formComponents> + <formComponent id="49" beanClass="com.install4j.runtime.beans.formcomponents.MultilineHtmlLabelComponent"> + <serializedBean> + <property name="labelHtml" type="string">ServerPackCreator can be run as a webservice to generate server packs from your browser.</property> + </serializedBean> + </formComponent> + <formComponent id="50" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">Install ServerPackCreator webservice</property> + <property name="coupledComponentIds"> + <add type="string">51</add> + </property> + <property name="variableName" type="string">installService</property> + </serializedBean> + </formComponent> + <group id="51" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup"> + <serializedBean> + <property name="insets"> + <object class="java.awt.Insets"> + <int>0</int> + <int>20</int> + <int>0</int> + <int>0</int> + </object> + </property> + <property name="visibilityScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string" /> + </object> + </property> + </serializedBean> + <beans> + <group id="57" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup"> + <beans> + <group id="67" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup"> + <beans> + <formComponent name="Database Host" id="62" beanClass="com.install4j.runtime.beans.formcomponents.TextfieldComponent"> + <serializedBean> + <property name="helpText" type="string">Hostname on which your database runs.</property> + <property name="initialText" type="string">localhost</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Database Host</property> + <property name="variableName" type="string">databaseHost</property> + </serializedBean> + </formComponent> + <formComponent name="Database Port" id="63" beanClass="com.install4j.runtime.beans.formcomponents.IntegerTextfieldComponent"> + <serializedBean> + <property name="helpText" type="string">Port at which the database listens at on the database host.</property> + <property name="initialText" type="string">5432</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Database Port</property> + <property name="variableName" type="string">databasePort</property> + </serializedBean> + </formComponent> + </beans> + </group> + <formComponent name="Database Name" id="64" beanClass="com.install4j.runtime.beans.formcomponents.TextfieldComponent"> + <serializedBean> + <property name="helpText" type="string">The database to use with the webservice. </property> + <property name="initialText" type="string">serverpackcreator</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Database Name</property> + <property name="variableName" type="string">databaseName</property> + </serializedBean> + </formComponent> + <group id="68" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup"> + <beans> + <formComponent name="Database Username" id="65" beanClass="com.install4j.runtime.beans.formcomponents.TextfieldComponent"> + <serializedBean> + <property name="helpText" type="string">Username with which the database will be accessed.</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Database Username</property> + <property name="variableName" type="string">databaseUser</property> + </serializedBean> + </formComponent> + <formComponent name="Database Password" id="66" beanClass="com.install4j.runtime.beans.formcomponents.PasswordComponent"> + <serializedBean> + <property name="helpText" type="string">Password used to access the database.</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Database Password</property> + <property name="variableName" type="string">databasePassword</property> + </serializedBean> + </formComponent> + </beans> + </group> + <formComponent name="WebService Port" id="78" beanClass="com.install4j.runtime.beans.formcomponents.IntegerTextfieldComponent"> + <serializedBean> + <property name="helpText" type="string">Port at which the webservice will be available at. Example: http://localhost:8080</property> + <property name="initialText" type="string">8080</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Webservice Port</property> + <property name="variableName" type="string">webservicePort</property> + </serializedBean> + </formComponent> + </beans> + </group> + </beans> + </group> + </formComponents> + </screen> + <screen name="Select Home-Directory" id="328" beanClass="com.install4j.runtime.beans.screens.FormScreen" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="subTitle" type="string">Configure ServerPackCreatos new home</property> + <property name="title" type="string">Home-Directory</property> + </serializedBean> + <formComponents> + <formComponent id="329" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="25" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">Set the home-directory in which ServerPackCreator will create and store initial data as well as created data. Initial data are files such as manifests and templates, created data are files such as generated server packs. + +If you are installing this on a multi-user system and intend other users to use ServerPackCreator, choose a directory to which all users have access to.</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="330" beanClass="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent" useExternalParametrization="true" externalParametrizationName="Directory" externalParametrizationMode="include"> + <serializedBean> + <property name="helpText" type="string">An existing directory where ServerPackCreatos data will be stored in, such as server packs, manifest, templates etc.</property> + <property name="initialFile" type="string">${installer:sys.userHome}</property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Home-Directory</property> + <property name="nextOnEnter" type="boolean" value="true" /> + <property name="onlyWritable" type="boolean" value="true" /> + <property name="variableName" type="string">homeDirectory</property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>directoryDescription</propertyName> + <propertyName>initialFile</propertyName> + <propertyName>onlyWritable</propertyName> + <propertyName>standardDirectoryName</propertyName> + <propertyName>standardValidation</propertyName> + <propertyName>validationScript</propertyName> + <propertyName>variableName</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="333" beanClass="com.install4j.runtime.beans.formcomponents.LabelComponent"> + <serializedBean> + <property name="labelColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>0</int> + <int>0</int> + <int>255</int> + </object> + </property> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="labelText" type="string">Caution!</property> + </serializedBean> + </formComponent> + <formComponent id="332" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="25" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">Changing the home-directory after installation requires manual editing of ${installer:sys.installationDir}${installer:sys.fileSeparator}serverpackcreator.properties. Choose wisely!</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <screen id="47" beanClass="com.install4j.runtime.beans.screens.StandardProgramGroupScreen"> + <serializedBean> + <property name="programGroupName" type="string">${compiler:sys.fullName}</property> + </serializedBean> + <condition>!context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition> + </screen> + <screen id="341" beanClass="com.install4j.runtime.beans.screens.AdditionalConfirmationsScreen" rollbackBarrierExitCode="0"> + <formComponents> + <formComponent id="342" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10"> + <serializedBean> + <property name="labelText" type="string">${form:confirmationMessage}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + </formComponent> + <formComponent name="Add an executable to the dock" id="343" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">${i18n:AddToDock}</property> + <property name="initiallySelected" type="boolean" value="true" /> + <property name="variableName" type="string">addToDockAction</property> + </serializedBean> + <visibilityScript>Util.isMacOS()</visibilityScript> + </formComponent> + <formComponent name="Add a desktop link" id="345" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">${i18n:CreateDesktopIcon}</property> + <property name="initiallySelected" type="boolean" value="true" /> + <property name="variableName" type="string">createDesktopLinkAction</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen id="15" beanClass="com.install4j.runtime.beans.screens.InstallationScreen" actionElevationType="elevated" rollbackBarrier="true" rollbackBarrierExitCode="0"> + <actions> + <group name="Stop Services" id="69" beanClass="com.install4j.runtime.beans.groups.ActionGroup" enabled="false"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getBooleanVariable("installService")</property> + </object> + </property> + </serializedBean> + <beans> + <action id="70" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none"> + <serializedBean> + <property name="statusMessage" type="string">${i18n:StatusStoppingServices}</property> + <property name="useDetail" type="boolean" value="true" /> + <property name="useStatus" type="boolean" value="true" /> + </serializedBean> + </action> + <action id="71" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none"> + <serializedBean> + <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" /> + </serializedBean> + </action> + <action id="72" beanClass="com.install4j.runtime.beans.actions.services.StopServiceAction" commentSet="true" comment="This action is necessary otherwise the following "Delete a file an directories" action might fail on Windows, since the files that are to be deleted might be in use.

Otherwise, you do not have to stop services explicitly, the "Uninstall files" action will stop all services." actionElevationType="elevated"> + <serializedBean> + <property name="executable"> + <object class="java.io.File"> + <string>ServerPackCreator-WEB</string> + </object> + </property> + <property name="launcherId" type="string">234</property> + <property name="serviceName" type="string">ServerPackCreator-Webservice</property> + </serializedBean> + </action> + <action id="73" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none"> + <serializedBean> + <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_DETERMINATE" /> + </serializedBean> + </action> + </beans> + </group> + <action id="294" beanClass="com.install4j.runtime.beans.actions.control.SleepAction" actionElevationType="none" rollbackBarrierExitCode="0" /> + <action id="74" beanClass="com.install4j.runtime.beans.actions.misc.CheckRunningProcessesAction" commentSet="true" comment="Note that the "Install Files" action always checks that no process that are started from affected files are running. However, if you want to give your users the ability to close the applications automatically, you have to add this action before the "Install Files" action." actionElevationType="none" failureStrategy="quit"> + <serializedBean> + <property name="closeStrategy" type="enum" class="com.install4j.runtime.beans.actions.misc.CloseStrategy" value="ASK_FOR_CLOSE_AND_TERMINATE" /> + </serializedBean> + </action> + <action id="295" beanClass="com.install4j.runtime.beans.actions.control.SleepAction" actionElevationType="none" rollbackBarrierExitCode="0" /> + <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" /> + <action id="18" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" enabled="false" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="addUninstaller" type="boolean" value="true" /> + <property name="categories" type="string">Application;Utilitiy;FileTools;Java</property> + <property name="programGroupEntryConfigs"> + <add> + <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig"> + <property name="iconFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/icon.ico</string> + </object> + </property> + <property name="name" type="string">Run ServerPackCreator</property> + <property name="runAsAdministrator" type="boolean" value="true" /> + <property name="target"> + <object class="java.io.File"> + <string>ServerPackCreator</string> + </object> + </property> + </object> + </add> + <add> + <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig"> + <property name="name" type="string">README</property> + <property name="target"> + <object class="java.io.File"> + <string>README.md</string> + </object> + </property> + </object> + </add> + <add> + <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig"> + <property name="name" type="string">Change Log</property> + <property name="target"> + <object class="java.io.File"> + <string>CHANGELOG.md</string> + </object> + </property> + </object> + </add> + </property> + <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property> + </serializedBean> + </action> + <action id="352" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="additionalDesktopFileEntries" type="string">Exec=sudo -i sh -c "${installer:sys.installationDir}/ServerPackCreator" +Terminal=true +Comment=Create server packs from Minecraft modpacks. +Categories=Application;Utility;FileTools;Java</property> + <property name="categories" type="string">Application;Utilitiy;FileTools;Java</property> + <property name="entryName" type="string">ServerPackCreator</property> + <property name="file"> + <object class="java.io.File"> + <string>ServerPackCreator</string> + </object> + </property> + <property name="icon"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/icon.ico</string> + </object> + </property> + <property name="runAsAdministrator" type="boolean" value="true" /> + <property name="unixIconFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/icon.png</string> + </object> + </property> + </serializedBean> + <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition> + </action> + <action id="19" beanClass="com.install4j.runtime.beans.actions.desktop.RegisterAddRemoveAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="icon"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/icon.ico</string> + </object> + </property> + <property name="iconSource" type="enum" class="com.install4j.runtime.beans.actions.desktop.IconSource" value="CUSTOM" /> + <property name="itemName" type="string">${compiler:sys.fullName} ${compiler:sys.version}</property> + </serializedBean> + </action> + <group name="Prepare Webservice" id="77" beanClass="com.install4j.runtime.beans.groups.ActionGroup" enabled="false"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getBooleanVariable("installService")</property> + </object> + </property> + </serializedBean> + <beans> + <action name="Install webservice" id="75" beanClass="com.install4j.runtime.beans.actions.services.InstallServiceAction" actionElevationType="elevated"> + <serializedBean> + <property name="accountNameOrSid" type="string">${installer:serviceAccount}</property> + <property name="autoStart" type="boolean" value="false" /> + <property name="description" type="string">Webservice to generate server packs from your browser.</property> + <property name="executable"> + <object class="java.io.File"> + <string>ServerPackCreator-WEB</string> + </object> + </property> + <property name="launcherId" type="string">234</property> + <property name="macosIdentifier" type="string">de.griefed.serverpackcreator</property> + <property name="password" type="string">${installer:servicePassword}</property> + <property name="serviceAccount" type="enum" class="com.install4j.runtime.beans.actions.services.ServiceAccount" value="OTHER" /> + <property name="serviceName" type="string">ServerPackCreator-Webservice</property> + <property name="windowsDisplayName" type="string">ServerPackCreator-Webservice</property> + </serializedBean> + <condition>context.getBooleanVariable("installService")</condition> + </action> + <action name="Set Webservice properties" id="327" beanClass="com.install4j.runtime.beans.actions.properties.WritePropertiesFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Couldn't writer properties!"> + <serializedBean> + <property name="encoding" type="enum" class="com.install4j.runtime.beans.actions.properties.PropertiesFileEncoding" value="JAVA_PROPERTIES" /> + <property name="file"> + <object class="java.io.File"> + <string>${installer:sys.installationDir}/serverpackcreator.properties</string> + </object> + </property> + <property name="propertiesSortMode" type="enum" class="com.install4j.runtime.beans.actions.properties.PropertiesSortMode" value="KEYS_ALPHABETICALLY" /> + <property name="sourcePropertyDefinitions" type="string">spring.datasource.url=jdbc\:postgresql\://${installer:databaseHost}\:${installer:databasePort}/${installer:databaseName} +spring.datasource.username=${installer:databaseUser} +spring.datasource.password=${installer:databasePassword} +server.port=${installer:webservicePort}</property> + <property name="updateExistingComments" type="boolean" value="true" /> + <property name="updateExistingKeys" type="boolean" value="true" /> + </serializedBean> + <condition>context.getBooleanVariable("installService")</condition> + </action> + </beans> + </group> + <action name="Set home-directory property" id="331" beanClass="com.install4j.runtime.beans.actions.properties.WritePropertiesFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Couldn't writer properties!"> + <serializedBean> + <property name="encoding" type="enum" class="com.install4j.runtime.beans.actions.properties.PropertiesFileEncoding" value="JAVA_PROPERTIES" /> + <property name="file"> + <object class="java.io.File"> + <string>${installer:sys.installationDir}/serverpackcreator.properties</string> + </object> + </property> + <property name="propertiesSortMode" type="enum" class="com.install4j.runtime.beans.actions.properties.PropertiesSortMode" value="KEYS_ALPHABETICALLY" /> + <property name="sourcePropertyDefinitions" type="string">de.griefed.serverpackcreator.home=${installer:homeDirectory}</property> + <property name="updateExistingComments" type="boolean" value="true" /> + <property name="updateExistingKeys" type="boolean" value="true" /> + </serializedBean> + </action> + <action name="Set Log Path" id="337" beanClass="com.install4j.runtime.beans.actions.text.ModifyTextFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="encoding" type="string">UTF-8</property> + <property name="files" type="array" class="java.io.File" length="1"> + <element index="0"> + <object class="java.io.File"> + <string>${installer:sys.installationDir}/log4j2.xml</string> + </object> + </element> + </property> + <property name="replaceValue" type="string"><Property name="log-path">${installer:homeDirectory}\logs</Property></property> + <property name="searchValue" type="string"><Property name="log-path">logs</Property></property> + </serializedBean> + </action> + <action name="Set Log Level" id="338" beanClass="com.install4j.runtime.beans.actions.text.ModifyTextFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="encoding" type="string">UTF-8</property> + <property name="files" type="array" class="java.io.File" length="1"> + <element index="0"> + <object class="java.io.File"> + <string>${installer:sys.installationDir}/log4j2.xml</string> + </object> + </element> + </property> + <property name="replaceValue" type="string"><Property name="log-level-spc">DEBUG</Property></property> + <property name="searchValue" type="string"><Property name="log-level-spc">INFO</Property></property> + </serializedBean> + <condition>context.getCompilerVariable("projectVersion").contains("dev") || context.getCompilerVariable("projectVersion").contains("alpha") || context.getCompilerVariable("projectVersion").contains("beta") </condition> + </action> + <action id="254" beanClass="com.install4j.runtime.beans.actions.registry.SaveInstallerVariablesAction" commentSet="true" comment="The launchers will access the user-defined greeting by loading the installer variables saved to the preference store by this action. They do this through a helper class provided by the install4j API.

Another way would have been to load the variable from the automatically created response file (through the same helper class). However, we want to save the settings on a per-user basis." actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="installerVariables" type="array" elementType="string" length="9"> + <element index="0">databaseHost</element> + <element index="1">databaseName</element> + <element index="2">databasePort</element> + <element index="3">databaseUser</element> + <element index="4">installService</element> + <element index="5">serviceAccount</element> + <element index="6">specialUserAccount</element> + <element index="7">sys.installationDir</element> + <element index="8">:webservicePort</element> + </property> + <property name="packageName" type="string">${compiler:sys.applicationId}</property> + </serializedBean> + </action> + <action id="346" beanClass="com.install4j.runtime.beans.actions.desktop.CreateDesktopLinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="additionalDesktopFileEntries" type="string">Exec=sudo -i sh -c "${installer:sys.installationDir}/ServerPackCreator" +Terminal=true +Comment=Create server packs from Minecraft modpacks. +Categories=Utility;FileTools;Java</property> + <property name="allUsers" type="boolean" value="false" /> + <property name="description" type="string">Create server packs from Minecraft modpacks.</property> + <property name="file"> + <object class="java.io.File"> + <string>ServerPackCreator-GUI</string> + </object> + </property> + <property name="name" type="string">${compiler:sys.fullName}</property> + <property name="runAsAdministrator" type="boolean" value="true" /> + <property name="unixIconFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/app.png</string> + </object> + </property> + <property name="winIconFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/icon.ico</string> + </object> + </property> + </serializedBean> + <textOverrides> + <property name="allUsers" value="${installer:sys.programGroupAllUsers}" /> + </textOverrides> + <condition>context.getBooleanVariable("createDesktopLinkAction")</condition> + </action> + <action id="340" beanClass="com.install4j.runtime.beans.actions.desktop.AddToDockAction" actionElevationType="none" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="executable"> + <object class="java.io.File"> + <string>ServerPackCreator-GUI</string> + </object> + </property> + </serializedBean> + <condition>context.getBooleanVariable("addToDockAction")</condition> + </action> + </actions> + <formComponents> + <formComponent id="16" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent"> + <serializedBean> + <property name="initialStatusMessage" type="string">${i18n:WizardPreparing}</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen id="20" beanClass="com.install4j.runtime.beans.screens.FinishedScreen" styleId="7" rollbackBarrierExitCode="0" finishScreen="true"> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="80" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <actions> + <action id="81" beanClass="com.install4j.runtime.beans.actions.finish.ExecuteLauncherAction" actionElevationType="elevated"> + <serializedBean> + <property name="launcherId" type="string">232</property> + </serializedBean> + <condition>context.getBooleanVariable("executeLauncherAction") && context.isGui()</condition> + </action> + <action id="79" beanClass="com.install4j.runtime.beans.actions.services.StartServiceAction" enabled="false" actionElevationType="elevated"> + <serializedBean> + <property name="executable"> + <object class="java.io.File"> + <string>ServerPackCreator-WEB</string> + </object> + </property> + <property name="launcherId" type="string">234</property> + <property name="serviceName" type="string">ServerPackCreator Webservice</property> + </serializedBean> + <condition>context.getBooleanVariable("executeServiceAction")</condition> + </action> + <action id="264" beanClass="com.install4j.runtime.beans.actions.misc.CreateResponseFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0"> + <serializedBean> + <property name="excludedVariables" type="array" elementType="string" length="2"> + <element index="0">databasePassword</element> + <element index="1">servicePassword</element> + </property> + <property name="file"> + <object class="java.io.File"> + <string>${installer:sys.installationDir}/varfile</string> + </object> + </property> + </serializedBean> + </action> + </actions> + <formComponents> + <formComponent id="21" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10"> + <serializedBean> + <property name="labelText" type="string">${form:finishedMessage}</property> + </serializedBean> + </formComponent> + <formComponent name="Execute Launcher" id="82" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">${i18n:RunEntryExec("${compiler:sys.fullName}")}</property> + <property name="initiallySelected" type="boolean" value="true" /> + <property name="variableName" type="string">executeLauncherAction</property> + </serializedBean> + <visibilityScript>context.isGui()</visibilityScript> + </formComponent> + <formComponent name="Execute Service" id="319" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">${i18n:RunEntryExec("${compiler:sys.fullName}")} Service</property> + <property name="variableName" type="string">executeServiceAction</property> + </serializedBean> + <visibilityScript>context.isGui() && context.getBooleanVariable("installService")</visibilityScript> + </formComponent> + </formComponents> + </screen> + </screens> + </application> + <application id="uninstaller" beanClass="com.install4j.runtime.beans.applications.UninstallerApplication"> + <serializedBean> + <property name="customIconImageFiles"> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_16x16.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_32x32.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_48x48.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_128x128.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_256x256.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/uninstall_512x512.png</string> + </object> + </add> + </property> + <property name="customMacosExecutableName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property> + <property name="frameWidth" type="int" value="600" /> + <property name="unixMode" type="string">755</property> + <property name="useCustomIcon" type="boolean" value="true" /> + <property name="useCustomMacosExecutableName" type="boolean" value="true" /> + </serializedBean> + <startup> + <screen id="23" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0"> + <actions> + <action id="33" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true"> + <condition>context.getVariable("sys.responseFile") == null</condition> + </action> + <action id="34" beanClass="com.install4j.runtime.beans.actions.misc.RequireInstallerPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0" /> + </actions> + </screen> + </startup> + <screens> + <screen id="24" beanClass="com.install4j.runtime.beans.screens.UninstallWelcomeScreen" styleId="7" rollbackBarrierExitCode="0"> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="83" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <formComponents> + <formComponent id="25" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10"> + <serializedBean> + <property name="labelText" type="string">${form:welcomeMessage}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + </formComponent> + <formComponent id="26" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent"> + <serializedBean> + <property name="consoleScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">String message = context.getMessage("ConfirmUninstall", context.getApplicationName()); +return console.askYesNo(message, true); +</property> + </object> + </property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen name="Service options" id="272" beanClass="com.install4j.runtime.beans.screens.FormScreen" enabled="false"> + <serializedBean> + <property name="subTitle" type="string">Please choose options for the webservice</property> + <property name="title" type="string">Webservice Options</property> + </serializedBean> + <validation>if (!context.getBooleanVariable("specialUserAccount")) { + context.setVariable("serviceAccount", "NT AUTHORITY\\System"); + context.setVariable("servicePassword", ""); +} +return true;</validation> + <formComponents> + <formComponent id="273" beanClass="com.install4j.runtime.beans.formcomponents.MultilineHtmlLabelComponent"> + <serializedBean> + <property name="labelHtml" type="string">Delete the ServerPackCreator directory in your users home-directory, if it exists?</property> + </serializedBean> + </formComponent> + <formComponent id="274" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">Delete Home-Directory</property> + <property name="variableName" type="string">deleteHome</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen id="27" beanClass="com.install4j.runtime.beans.screens.UninstallationScreen" rollbackBarrierExitCode="0"> + <actions> + <link id="84" targetId="69" /> + <action id="293" beanClass="com.install4j.runtime.beans.actions.control.SleepAction" actionElevationType="none" rollbackBarrierExitCode="0" /> + <action id="29" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" /> + </actions> + <formComponents> + <formComponent id="28" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent"> + <serializedBean> + <property name="initialStatusMessage" type="string">${i18n:UninstallerPreparing}</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen id="32" beanClass="com.install4j.runtime.beans.screens.UninstallFailureScreen" rollbackBarrierExitCode="0" finishScreen="true" /> + <screen id="30" beanClass="com.install4j.runtime.beans.screens.UninstallSuccessScreen" styleId="7" rollbackBarrierExitCode="0" finishScreen="true"> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="86" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <formComponents> + <formComponent id="31" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10"> + <serializedBean> + <property name="labelText" type="string">${form:successMessage}</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + </screens> + </application> + <application name="Standalone update downloader" id="87" beanClass="com.install4j.runtime.beans.applications.CustomApplication" enabled="false" launchInNewProcess="false"> + <serializedBean> + <property name="customIconImageFiles"> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:sys.install4jHome}/resource/updater_16.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:sys.install4jHome}/resource/updater_32.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:sys.install4jHome}/resource/updater_48.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:sys.install4jHome}/resource/updater_128.png</string> + </object> + </add> + <add> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:sys.install4jHome}/resource/updater_256.png</string> + </object> + </add> + </property> + <property name="executableName" type="string">ServerPackCreator_update</property> + <property name="useCustomIcon" type="boolean" value="true" /> + <property name="windowTitle" type="string">${i18n:updater.WindowTitle("${compiler:sys.fullName}")}</property> + </serializedBean> + <startup> + <screen id="88" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0" /> + </startup> + <screens> + <screen name="Welcome" id="89" beanClass="com.install4j.runtime.beans.screens.FormScreen" styleId="7"> + <serializedBean> + <property name="title" type="string">${i18n:updater.WelcomeTitle("${compiler:sys.fullName}")}</property> + </serializedBean> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="149" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <formComponents> + <formComponent id="90" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">${i18n:updater.WelcomeInfoText("${compiler:sys.fullName}")}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <screen name="Check for update" id="91" beanClass="com.install4j.runtime.beans.screens.FormScreen"> + <serializedBean> + <property name="subTitle" type="string">${i18n:updater.CheckForUpdateSubtitle}</property> + <property name="title" type="string">${i18n:updater.CheckForUpdateTitle}</property> + </serializedBean> + <postActivation>context.getWizardContext().setControlButtonVisible(ControlButtonType.NEXT, false); +context.getWizardContext().setControlButtonVisible(ControlButtonType.PREVIOUS, false); +context.goForward(1, true, true); +</postActivation> + <actions> + <action id="92" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none"> + <serializedBean> + <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" /> + </serializedBean> + </action> + <action id="93" beanClass="com.install4j.runtime.beans.actions.update.CheckForUpdateAction" actionElevationType="none" failureStrategy="quit"> + <serializedBean> + <property name="url" type="string">${compiler:sys.updatesUrl}</property> + <property name="variable" type="string">updateDescriptor</property> + </serializedBean> + </action> + <action id="94" beanClass="com.install4j.runtime.beans.actions.control.SleepAction" actionElevationType="none" /> + <action name="Update descriptor entry" id="95" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptor)context.getVariable("updateDescriptor")).getPossibleUpdateEntry()</property> + </object> + </property> + <property name="variableName" type="string">updateDescriptorEntry</property> + </serializedBean> + </action> + <group name="Update available" id="96" beanClass="com.install4j.runtime.beans.groups.ActionGroup"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getVariable("updateDescriptorEntry") != null</property> + </object> + </property> + </serializedBean> + <beans> + <action name="New version" id="97" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getNewVersion()</property> + </object> + </property> + <property name="variableName" type="string">updaterNewVersion</property> + </serializedBean> + </action> + <action name="Download size" id="98" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getFileSizeVerbose()</property> + </object> + </property> + <property name="variableName" type="string">updaterDownloadSize</property> + </serializedBean> + </action> + <action name="Comment" id="99" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getComment()</property> + </object> + </property> + <property name="variableName" type="string">updaterComment</property> + </serializedBean> + </action> + <action name="Download URL" id="100" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getURL().toExternalForm()</property> + </object> + </property> + <property name="variableName" type="string">updaterDownloadUrl</property> + </serializedBean> + </action> + <action name="Archive" id="101" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).isArchive() ? Boolean.TRUE : Boolean.FALSE</property> + </object> + </property> + <property name="variableName" type="string">isArchive</property> + </serializedBean> + </action> + <action name="DMG" id="102" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getFileName().toLowerCase().endsWith(".dmg")</property> + </object> + </property> + <property name="variableName" type="string">isDmg</property> + </serializedBean> + </action> + </beans> + </group> + </actions> + <formComponents> + <formComponent id="103" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent" useExternalParametrization="true" externalParametrizationName="Directory" externalParametrizationMode="include"> + <serializedBean> + <property name="initialStatusMessage" type="string">${i18n:updater.CheckForUpdateLabel}</property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>statusVisible</propertyName> + <propertyName>initialStatusMessage</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <group name="Up to date" id="104" beanClass="com.install4j.runtime.beans.groups.ScreenGroup"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getVariable("updateDescriptorEntry") == null</property> + </object> + </property> + </serializedBean> + <beans> + <screen name="Up to date notification" id="105" beanClass="com.install4j.runtime.beans.screens.FormScreen" styleId="7" finishScreen="true"> + <serializedBean> + <property name="title" type="string">${i18n:updater.UpToDateTitle}</property> + </serializedBean> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="150" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <formComponents> + <formComponent id="106" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">${i18n:updater.UpToDateInfoText("${compiler:sys.fullName}")}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + </beans> + </group> + <group name="Update available" id="107" beanClass="com.install4j.runtime.beans.groups.ScreenGroup"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getVariable("updateDescriptorEntry") != null</property> + </object> + </property> + </serializedBean> + <beans> + <screen name="New version available" id="108" beanClass="com.install4j.runtime.beans.screens.FormScreen"> + <serializedBean> + <property name="subTitle" type="string">${i18n:updater.NewVersionAvailableSubtitle("${compiler:sys.fullName}")}</property> + <property name="title" type="string">${i18n:updater.NewVersionAvailableTitle}</property> + </serializedBean> + <condition>!context.getBooleanVariable("skipNewVersionAvailable")</condition> + <formComponents> + <formComponent id="109" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.CurrentVersionLabel}</property> + <property name="valueLabelColor"> + <object class="java.awt.Color"> + <int>128</int> + <int>0</int> + <int>0</int> + <int>255</int> + </object> + </property> + <property name="valueLabelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="valueLabelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="valueLabelText" type="string">${installer:sys.version}</property> + </serializedBean> + </formComponent> + <group id="110" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup"> + <beans> + <formComponent id="111" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.NewVersionLabel}</property> + <property name="valueLabelColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>128</int> + <int>0</int> + <int>255</int> + </object> + </property> + <property name="valueLabelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="valueLabelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + <property name="valueLabelText" type="string">${installer:updaterNewVersion}</property> + </serializedBean> + </formComponent> + <formComponent id="112" beanClass="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent" insetLeft="5"> + <serializedBean> + <property name="actionScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.goForward(1, false, false);</property> + </object> + </property> + <property name="hyperlinkText" type="string">${i18n:updater.ShowComments}</property> + </serializedBean> + <visibilityScript> ((String)context.getVariable("updaterComment")).length() > 0</visibilityScript> + </formComponent> + </beans> + </group> + <formComponent id="113" beanClass="com.install4j.runtime.beans.formcomponents.SpacerComponent" /> + <formComponent id="114" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.DownloadLocationLabel}</property> + </serializedBean> + </formComponent> + <formComponent id="115" beanClass="com.install4j.runtime.beans.formcomponents.DirectoryChooserComponent"> + <serializedBean> + <property name="initialFile" type="string">${installer:sys.downloadsDir}</property> + <property name="labelText" type="string">${i18n:updater.DownloadToLabel}</property> + <property name="manualEntryAllowed" type="boolean" value="false" /> + <property name="variableName" type="string">updaterDownloadLocation</property> + </serializedBean> + </formComponent> + <formComponent id="116" beanClass="com.install4j.runtime.beans.formcomponents.KeyValuePairComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.DownloadSizeLabel}</property> + <property name="valueLabelText" type="string">${installer:updaterDownloadSize}</property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen name="Update message" id="117" beanClass="com.install4j.runtime.beans.screens.FormScreen"> + <serializedBean> + <property name="scrollable" type="boolean" value="false" /> + <property name="subTitle" type="string">${i18n:updater.CommentsSubTitle}</property> + <property name="title" type="string">${i18n:updater.CommentsTitle}</property> + </serializedBean> + <condition>false // This screen is only shown if the user clicks the "Show comments" hyperlink label in the previous screen. +</condition> + <validation>if (context.isConsole()) { + context.goBackInHistory(1); +} +return true;</validation> + <postActivation>WizardContext wizardContext = context.getWizardContext(); +wizardContext.setControlButtonVisible(ControlButtonType.NEXT, false); +wizardContext.setControlButtonVisible(ControlButtonType.CANCEL, false);</postActivation> + <formComponents> + <formComponent id="118" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">${i18n:updater.CommentsLabel}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="119" beanClass="com.install4j.runtime.beans.formcomponents.HtmlDisplayFormComponent" useExternalParametrization="true" externalParametrizationName="HTML display" externalParametrizationMode="include"> + <serializedBean> + <property name="displayedText" type="string">${installer:updaterComment}</property> + <property name="fillVertical" type="boolean" value="true" /> + <property name="textSource" type="enum" class="com.install4j.runtime.beans.screens.components.TextSource" value="DIRECT" /> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>textSource</propertyName> + <propertyName>displayedText</propertyName> + <propertyName>displayedTextFile</propertyName> + <propertyName>variableName</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="120" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent"> + <serializedBean> + <property name="consoleScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">console.waitForEnter(); +return true; +</property> + </object> + </property> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen name="Download new version" id="121" beanClass="com.install4j.runtime.beans.screens.FormScreen"> + <serializedBean> + <property name="subTitle" type="string">${i18n:updater.DownloadSubTitle}</property> + <property name="title" type="string">${i18n:updater.DownloadTitle}</property> + </serializedBean> + <postActivation>context.getWizardContext().setControlButtonVisible(ControlButtonType.NEXT, false); +context.getWizardContext().setControlButtonVisible(ControlButtonType.PREVIOUS, false); +context.goForward(1, true, true); +</postActivation> + <actions> + <action name="Download location" id="122" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getVariable("updaterDownloadLocation") + File.separator + ((UpdateDescriptorEntry)context.getVariable("updateDescriptorEntry")).getFileName()</property> + </object> + </property> + <property name="variableName" type="string">updaterDownloadFile</property> + </serializedBean> + </action> + <action id="123" beanClass="com.install4j.runtime.beans.actions.net.DownloadFileAction" actionElevationType="elevated" failureStrategy="quit"> + <serializedBean> + <property name="targetFile"> + <object class="java.io.File"> + <string>${installer:updaterDownloadFile}</string> + </object> + </property> + <property name="url" type="string">${installer:updaterDownloadUrl}</property> + </serializedBean> + </action> + <action id="124" beanClass="com.install4j.runtime.beans.actions.files.SetModeAction" actionElevationType="elevated"> + <serializedBean> + <property name="files" type="array" class="java.io.File" length="1"> + <element index="0"> + <object class="java.io.File"> + <string>${installer:updaterDownloadFile}</string> + </object> + </element> + </property> + <property name="mode" type="string">755</property> + </serializedBean> + </action> + </actions> + <formComponents> + <formComponent id="125" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent" useExternalParametrization="true" externalParametrizationName="Directory" externalParametrizationMode="include"> + <externalParametrizationPropertyNames> + <propertyName>statusVisible</propertyName> + <propertyName>initialStatusMessage</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + </formComponents> + </screen> + <group name="Finish" id="126" beanClass="com.install4j.runtime.beans.groups.ScreenGroup"> + <beans> + <screen name="Finish" id="127" beanClass="com.install4j.runtime.beans.screens.FormScreen" styleId="7" finishScreen="true"> + <serializedBean> + <property name="title" type="string">${i18n:updater.FinishTitle}</property> + </serializedBean> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="151" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <condition>!(context.getBooleanVariable("isArchive") && context.getBooleanVariable("isDmg"))</condition> + <actions> + <group name="Execute installer" id="128" beanClass="com.install4j.runtime.beans.groups.ActionGroup"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">!context.getBooleanVariable("isArchive") && ((Integer)context.getVariable("updaterLaunchSelection")).intValue() == 0</property> + </object> + </property> + </serializedBean> + <beans> + <action name="Set installer arguments" id="129" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">List<String> args = new ArrayList<String>(); +String installationDirectory = context.getInstallationDirectory().getPath(); +if (context.isUnattended()) { + args.add("-q"); + args.add("-wait"); + args.add("20"); + ProgressInterface progressInterface = context.getProgressInterface(); + if (progressInterface.isUnattendedProgressDialog()) { + if (progressInterface.isAlertsShown()) { + args.add("-alerts"); + } + args.add("-splash"); + args.add("Installing"); + } +} else if (context.isConsole()) { + args.add("-c"); +} + args.add("-dir"); + args.add(installationDirectory); + + return args.toArray(new String[args.size()]); +</property> + </object> + </property> + <property name="variableName" type="string">installerArguments</property> + </serializedBean> + </action> + <action id="130" beanClass="com.install4j.runtime.beans.actions.update.ShutdownCallingLauncherAction" actionElevationType="none" /> + <action id="131" beanClass="com.install4j.runtime.beans.actions.misc.RunExecutableAction" actionElevationType="elevated" failureStrategy="quit" errorMessage="${i18n:updater.LaunchError}"> + <serializedBean> + <property name="arguments" type="array" elementType="string" length="1"> + <element index="0">${installer:installerArguments}</element> + </property> + <property name="executable"> + <object class="java.io.File"> + <string>${installer:updaterDownloadFile}</string> + </object> + </property> + <property name="workingDirectory"> + <object class="java.io.File"> + <string>${installer:updaterDownloadLocation}</string> + </object> + </property> + </serializedBean> + </action> + </beans> + </group> + </actions> + <formComponents> + <formComponent id="132" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="133" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">${i18n:updater.FinishInfoText("${compiler:sys.fullName}")}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="134" beanClass="com.install4j.runtime.beans.formcomponents.LabelComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.LaunchUpdaterQuestion}</property> + </serializedBean> + </formComponent> + <formComponent id="135" beanClass="com.install4j.runtime.beans.formcomponents.SpacerComponent"> + <serializedBean> + <property name="height" type="int" value="5" /> + </serializedBean> + </formComponent> + <formComponent id="136" beanClass="com.install4j.runtime.beans.formcomponents.RadiobuttonsComponent"> + <serializedBean> + <property name="radioButtonLabels" type="array" elementType="string" length="2"> + <element index="0">${i18n:updater.LaunchUpdaterLabel}</element> + <element index="1">${i18n:updater.DoNotLaunchUpdaterLabel}</element> + </property> + <property name="variableName" type="string">updaterLaunchSelection</property> + </serializedBean> + <visibilityScript>!context.getBooleanVariable("isArchive")</visibilityScript> + </formComponent> + <formComponent id="137" beanClass="com.install4j.runtime.beans.formcomponents.HyperlinkActionLabelComponent"> + <serializedBean> + <property name="actionScript"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">Util.showPath((String)context.getVariable("updaterDownloadFile"));</property> + </object> + </property> + <property name="hyperlinkText" type="string">${i18n:updater.OpenContainingFolderLabel}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + </formComponent> + <formComponent id="138" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent"> + <serializedBean> + <property name="detailVisible" type="boolean" value="false" /> + <property name="hideInitially" type="boolean" value="true" /> + </serializedBean> + </formComponent> + </formComponents> + </screen> + <screen name="Finish DMG Archive" id="139" beanClass="com.install4j.runtime.beans.screens.FormScreen" styleId="7" finishScreen="true"> + <serializedBean> + <property name="title" type="string">${i18n:updater.FinishTitle}</property> + </serializedBean> + <styleOverrides> + <styleOverride name="Customize banner image" enabled="true"> + <group id="152" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>6</int> + <int>16</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + </styleOverride> + </styleOverrides> + <condition>context.getBooleanVariable("isArchive") && context.getBooleanVariable("isDmg")</condition> + <actions> + <group name="Execute installer" id="140" beanClass="com.install4j.runtime.beans.groups.ActionGroup"> + <serializedBean> + <property name="conditionExpression"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">context.getBooleanVariable("updaterOpenDmg")</property> + </object> + </property> + </serializedBean> + <beans> + <action id="141" beanClass="com.install4j.runtime.beans.actions.update.ShutdownCallingLauncherAction" actionElevationType="none" /> + <action name="Open DMG" id="142" beanClass="com.install4j.runtime.beans.actions.control.RunScriptAction"> + <serializedBean> + <property name="script"> + <object class="com.install4j.api.beans.ScriptProperty"> + <property name="value" type="string">Util.showPath((String)context.getVariable("updaterDownloadFile")); +return true;</property> + </object> + </property> + </serializedBean> + </action> + </beans> + </group> + </actions> + <formComponents> + <formComponent id="143" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="144" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="20" useExternalParametrization="true" externalParametrizationName="Header" externalParametrizationMode="include"> + <serializedBean> + <property name="hideIfBlank" type="boolean" value="true" /> + <property name="labelText" type="string">${i18n:updater.FinishInfoText("${compiler:sys.fullName}")}</property> + </serializedBean> + <visibilityScript>!context.isConsole()</visibilityScript> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent id="145" beanClass="com.install4j.runtime.beans.formcomponents.LabelComponent"> + <serializedBean> + <property name="labelText" type="string">${i18n:updater.LaunchUpdaterQuestion}</property> + </serializedBean> + </formComponent> + <formComponent id="146" beanClass="com.install4j.runtime.beans.formcomponents.SpacerComponent"> + <serializedBean> + <property name="height" type="int" value="5" /> + </serializedBean> + </formComponent> + <formComponent id="147" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent"> + <serializedBean> + <property name="checkboxText" type="string">${i18n:updater.OpenContainingFolderLabel}</property> + <property name="initiallySelected" type="boolean" value="true" /> + <property name="variableName" type="string">updaterOpenDmg</property> + </serializedBean> + </formComponent> + <formComponent id="148" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent"> + <serializedBean> + <property name="detailVisible" type="boolean" value="false" /> + <property name="hideInitially" type="boolean" value="true" /> + </serializedBean> + </formComponent> + </formComponents> + </screen> + </beans> + </group> + </beans> + </group> + </screens> + </application> + </applications> + <styles defaultStyleId="1"> + <style name="Standard" id="1" beanClass="com.install4j.runtime.beans.styles.FormStyle"> + <formComponents> + <formComponent name="Header" id="2" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0"> + <serializedBean> + <property name="styleId" type="string">14</property> + </serializedBean> + </formComponent> + <group name="Main" id="3" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup"> + <beans> + <formComponent id="4" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetLeft="20" insetBottom="10" insetRight="20" /> + <formComponent name="Watermark" id="5" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="Custom watermark" externalParametrizationMode="include"> + <serializedBean> + <property name="enabledTitleText" type="boolean" value="false" /> + <property name="labelText" type="string">Copyright (C) ${compiler:projectYear} by Griefed</property> + </serializedBean> + <externalParametrizationPropertyNames> + <propertyName>labelText</propertyName> + </externalParametrizationPropertyNames> + </formComponent> + <formComponent name="Footer" id="6" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0"> + <serializedBean> + <property name="styleId" type="string">18</property> + </serializedBean> + </formComponent> + </beans> + </group> + </formComponents> + </style> + <style name="Banner" id="7" beanClass="com.install4j.runtime.beans.styles.FormStyle"> + <formComponents> + <group id="8" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="WEST" /> + <property name="imageEdgeBackgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>25</int> + <int>143</int> + <int>220</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>0</int> + <int>74</int> + <int>151</int> + <int>255</int> + </object> + </object> + </property> + <property name="imageEdgeBorder" type="boolean" value="true" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>${compiler:projectDir}/img/banner_installer_fin.png</string> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>5</int> + <int>10</int> + <int>10</int> + <int>10</int> + </object> + </property> + </serializedBean> + <beans> + <formComponent id="9" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetTop="0"> + <serializedBean> + <property name="labelFontSizePercent" type="int" value="130" /> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + </serializedBean> + </formComponent> + <formComponent id="10" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" /> + <formComponent id="11" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetBottom="0" /> + </beans> + <externalParametrizationPropertyNames> + <propertyName>imageAnchor</propertyName> + <propertyName>imageEdgeBackgroundColor</propertyName> + <propertyName>imageFile</propertyName> + </externalParametrizationPropertyNames> + </group> + <formComponent id="12" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetBottom="0"> + <serializedBean> + <property name="styleId" type="string">18</property> + </serializedBean> + </formComponent> + </formComponents> + </style> + <group name="Style components" id="13" beanClass="com.install4j.runtime.beans.groups.StyleGroup"> + <beans> + <style name="Standard header" id="14" beanClass="com.install4j.runtime.beans.styles.FormStyle"> + <serializedBean> + <property name="fillVertical" type="boolean" value="false" /> + <property name="standalone" type="boolean" value="false" /> + <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTH" /> + </serializedBean> + <formComponents> + <group id="15" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize title bar" externalParametrizationMode="include"> + <serializedBean> + <property name="backgroundColor"> + <object class="com.install4j.runtime.beans.LightOrDarkColor"> + <object class="java.awt.Color"> + <int>255</int> + <int>255</int> + <int>255</int> + <int>255</int> + </object> + <object class="java.awt.Color"> + <int>49</int> + <int>52</int> + <int>53</int> + <int>255</int> + </object> + </object> + </property> + <property name="borderSides"> + <object class="com.install4j.runtime.beans.formcomponents.BorderSides"> + <property name="bottom" type="boolean" value="true" /> + </object> + </property> + <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTHEAST" /> + <property name="imageEdgeBorderWidth" type="int" value="2" /> + <property name="imageFile"> + <object class="com.install4j.api.beans.ExternalFile"> + <string>icon:${installer:sys.installerApplicationMode}_header.png</string> + </object> + </property> + <property name="imageInsets"> + <object class="java.awt.Insets"> + <int>0</int> + <int>5</int> + <int>1</int> + <int>1</int> + </object> + </property> + <property name="insets"> + <object class="java.awt.Insets"> + <int>0</int> + <int>20</int> + <int>0</int> + <int>10</int> + </object> + </property> + </serializedBean> + <beans> + <formComponent name="Title" id="16" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent"> + <serializedBean> + <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" /> + <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" /> + </serializedBean> + </formComponent> + <formComponent name="Subtitle" id="17" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetLeft="8"> + <serializedBean> + <property name="titleType" type="enum" class="com.install4j.runtime.beans.styles.TitleType" value="SUB_TITLE" /> + </serializedBean> + </formComponent> + </beans> + <externalParametrizationPropertyNames> + <propertyName>backgroundColor</propertyName> + <propertyName>foregroundColor</propertyName> + <propertyName>imageAnchor</propertyName> + <propertyName>imageFile</propertyName> + <propertyName>imageOverlap</propertyName> + </externalParametrizationPropertyNames> + </group> + </formComponents> + </style> + <style name="Standard footer" id="18" beanClass="com.install4j.runtime.beans.styles.FormStyle"> + <serializedBean> + <property name="fillVertical" type="boolean" value="false" /> + <property name="standalone" type="boolean" value="false" /> + <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="SOUTH" /> + </serializedBean> + <formComponents> + <group id="19" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup"> + <serializedBean> + <property name="alignFirstLabel" type="boolean" value="false" /> + <property name="insets"> + <object class="java.awt.Insets"> + <int>3</int> + <int>5</int> + <int>8</int> + <int>5</int> + </object> + </property> + </serializedBean> + <beans> + <formComponent id="20" beanClass="com.install4j.runtime.beans.formcomponents.SpringComponent" /> + <formComponent name="Back button" id="21" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent"> + <serializedBean> + <property name="buttonText" type="string">< ${i18n:ButtonBack}</property> + <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="PREVIOUS" /> + </serializedBean> + </formComponent> + <formComponent name="Next button" id="22" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent"> + <serializedBean> + <property name="buttonText" type="string">${i18n:ButtonNext} ></property> + <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="NEXT" /> + </serializedBean> + </formComponent> + <formComponent name="Cancel button" id="23" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent" insetLeft="5"> + <serializedBean> + <property name="buttonText" type="string">${i18n:ButtonCancel}</property> + <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="CANCEL" /> + </serializedBean> + </formComponent> + </beans> + </group> + </formComponents> + </style> + </beans> + </group> + </styles> + </installerGui> + <mediaSets> + <windows name="Windows 64-bit" id="154" mediaFileName="${compiler:sys.shortName}_${compiler:sys.platform}_${compiler:sys.version}" installDir="ServerPackCreator" architecture="64"> + <jreBundle usePack200="false"> + <modules> + <defaultModules set="all" /> + </modules> + </jreBundle> + </windows> + <unixInstaller name="Unix Installer" id="159" installDir="serverpackcreator"> + <jreBundle usePack200="false"> + <modules> + <defaultModules set="all" /> + </modules> + </jreBundle> + </unixInstaller> + <macosArchive name="macOS Single Bundle Archive" id="158" architecture="universal" launcherId="183"> + <jreBundle> + <modules> + <defaultModules set="all" /> + </modules> + </jreBundle> + </macosArchive> + </mediaSets> +</install4j> -- GitLab