From 48f29b983df19328aba6ef2686979960e480b286 Mon Sep 17 00:00:00 2001 From: Thaina Date: Fri, 7 Jun 2024 01:26:05 +0700 Subject: [PATCH] fix number + find packages system + move java bridge to native compiled --- Assets/Plugins/Android.meta | 5 - .../GooglePlayGamesManifest.androidlib.meta | 143 ---- .../AndroidManifest.xml.meta | 8 - .../project.properties | 2 - .../project.properties.meta | 4 - .../Editor/Dependencies.xml | 6 + ...anifest.txt.meta => Dependencies.xml.meta} | 5 +- .../com.google.play.games/Editor/GPGSUtil.cs | 63 +- .../Editor/template-AndroidManifest.txt | 27 - .../m2repository.meta => Proguard.meta} | 2 - .../com.google.play.games/Proguard/games.txt | 3 + .../games.txt.meta} | 3 - .../com.google.play.games/Runtime.meta | 8 + .../Runtime/Scripts.meta | 8 + .../Runtime/Scripts/GameInfo.cs | 72 -- .../Runtime/Scripts/GameInfo.cs.meta | 12 - .../Runtime/Scripts/PluginVersion.cs | 2 +- .../Runtime/Scripts/Plugins/Android.meta | 8 + .../Android/PlayGamesPluginSupport.meta | 8 + .../Android/PlayGamesPluginSupport/com.meta | 8 + .../PlayGamesPluginSupport/com/google.meta | 8 + .../com/google/games.meta | 8 + .../com/google/games/bridge.meta | 8 + .../games/bridge/AchievementUiRequest.java | 0 .../bridge/AchievementUiRequest.java.meta | 2 + .../bridge/AllLeaderboardsUiRequest.java | 0 .../bridge/AllLeaderboardsUiRequest.java.meta | 2 + .../google/games/bridge/CommonUIStatus.java | 0 .../games/bridge/CommonUIStatus.java.meta | 2 + .../games/bridge/CompareProfileUiRequest.java | 0 .../bridge/CompareProfileUiRequest.java.meta | 2 + .../ConnectionLifecycleCallbackProxy.java | 0 ...ConnectionLifecycleCallbackProxy.java.meta | 2 + .../EndpointDiscoveryCallbackProxy.java | 0 .../EndpointDiscoveryCallbackProxy.java.meta | 2 + .../bridge/GenericResolutionActivity.java | 0 .../GenericResolutionActivity.java.meta | 2 + .../bridge/GenericResolutionUiRequest.java | 0 .../GenericResolutionUiRequest.java.meta | 2 + .../google/games/bridge/HelperFragment.java | 0 .../games/bridge/HelperFragment.java.meta | 2 + .../games/bridge/LeaderboardUiRequest.java | 0 .../bridge/LeaderboardUiRequest.java.meta | 2 + .../games/bridge/NativeBridgeActivity.java | 0 .../bridge/NativeBridgeActivity.java.meta | 2 + .../games/bridge/PayloadCallbackProxy.java | 0 .../bridge/PayloadCallbackProxy.java.meta | 2 + .../games/bridge/SelectSnapshotUiRequest.java | 0 .../bridge/SelectSnapshotUiRequest.java.meta | 2 + .../google/games/bridge/SimpleUiRequest.java | 0 .../games/bridge/SimpleUiRequest.java.meta | 2 + .../com/google/games/bridge/Utils.java | 0 .../com/google/games/bridge/Utils.java.meta | 2 + .../com.google.play.games/package.json | 2 +- .../PlayGamesPluginSupport/CMakeLists.txt | 36 - .../PlayGamesPluginSupport/build.gradle | 97 --- .../gradle/wrapper/gradle-wrapper.jar | Bin 63721 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../Public/PlayGamesPluginSupport/gradlew | 249 ------ .../Public/PlayGamesPluginSupport/gradlew.bat | 92 --- .../src/main/AndroidManifest.xml | 14 - .../src/main/cpp/bridge.cc | 21 - .../src/main/cpp/bridge.h | 75 -- .../src/main/cpp/plugin_shim.cc | 27 - .../src/main/ic_launcher-web.png | Bin 47072 -> 0 bytes .../main/res/drawable-nodpi/ic_launcher.png | Bin 7783 -> 0 bytes .../src/main/res/values/strings.xml | 6 - .../src/main/res/values/styles.xml | 20 - build.gradle | 754 ------------------ gradlew | 249 ------ gradlew.bat | 92 --- 71 files changed, 145 insertions(+), 2046 deletions(-) delete mode 100644 Assets/Plugins/Android.meta delete mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta delete mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml.meta delete mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties delete mode 100644 Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml rename Assets/Public/GooglePlayGames/com.google.play.games/Editor/{template-AndroidManifest.txt.meta => Dependencies.xml.meta} (54%) delete mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt rename Assets/Public/GooglePlayGames/com.google.play.games/{Editor/m2repository.meta => Proguard.meta} (80%) rename Assets/Public/GooglePlayGames/com.google.play.games/{Editor/GooglePlayGamesPlugin.txt.meta => Proguard/games.txt.meta} (84%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta delete mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs delete mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games.meta create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/AchievementUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/AllLeaderboardsUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/CommonUIStatus.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/CompareProfileUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/GenericResolutionActivity.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/GenericResolutionUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/HelperFragment.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/LeaderboardUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/NativeBridgeActivity.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/PayloadCallbackProxy.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/SelectSnapshotUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/SimpleUiRequest.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java.meta rename {SupportFiles/Public/PlayGamesPluginSupport/src/main/java => Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport}/com/google/games/bridge/Utils.java (100%) create mode 100644 Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java.meta delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/CMakeLists.txt delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/build.gradle delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.jar delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.properties delete mode 100755 SupportFiles/Public/PlayGamesPluginSupport/gradlew delete mode 100755 SupportFiles/Public/PlayGamesPluginSupport/gradlew.bat delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/AndroidManifest.xml delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.cc delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.h delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/plugin_shim.cc delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/ic_launcher-web.png delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/res/drawable-nodpi/ic_launcher.png delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/strings.xml delete mode 100644 SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/styles.xml delete mode 100644 build.gradle delete mode 100755 gradlew delete mode 100755 gradlew.bat diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta deleted file mode 100644 index 6a11e50de..000000000 --- a/Assets/Plugins/Android.meta +++ /dev/null @@ -1,5 +0,0 @@ -fileFormatVersion: 2 -guid: b8f0d9a6a7f9240c981894807effddbc -folderAsset: yes -DefaultImporter: - userData: diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta deleted file mode 100644 index fa0745149..000000000 --- a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib.meta +++ /dev/null @@ -1,143 +0,0 @@ -fileFormatVersion: 2 -guid: 44f4150f398dc4f22b230f8c74866383 -folderAsset: yes -timeCreated: 1504033921 -licenseType: Pro -PluginImporter: - serializedVersion: 2 - iconMap: {} - executionOrder: {} - isPreloaded: 0 - isOverridable: 0 - platformData: - data: - first: - '': Any - second: - enabled: 0 - settings: - Exclude Android: 0 - Exclude Editor: 0 - Exclude Linux: 0 - Exclude Linux64: 0 - Exclude LinuxUniversal: 0 - Exclude OSXIntel: 0 - Exclude OSXIntel64: 0 - Exclude OSXUniversal: 0 - Exclude WebGL: 0 - Exclude Win: 0 - Exclude Win64: 0 - Exclude iOS: 0 - data: - first: - '': Editor - second: - enabled: 0 - settings: - CPU: AnyCPU - OS: AnyOS - data: - first: - Android: Android - second: - enabled: 1 - settings: - CPU: ARMv7 - data: - first: - Any: - second: - enabled: 1 - settings: {} - data: - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - data: - first: - Facebook: Win - second: - enabled: 0 - settings: - CPU: AnyCPU - data: - first: - Facebook: Win64 - second: - enabled: 0 - settings: - CPU: AnyCPU - data: - first: - Standalone: Linux - second: - enabled: 1 - settings: - CPU: x86 - data: - first: - Standalone: Linux64 - second: - enabled: 1 - settings: - CPU: x86_64 - data: - first: - Standalone: LinuxUniversal - second: - enabled: 1 - settings: {} - data: - first: - Standalone: OSXIntel - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: OSXIntel64 - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: OSXUniversal - second: - enabled: 1 - settings: {} - data: - first: - Standalone: Win - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - Standalone: Win64 - second: - enabled: 1 - settings: - CPU: AnyCPU - data: - first: - WebGL: WebGL - second: - enabled: 1 - settings: {} - data: - first: - iPhone: iOS - second: - enabled: 1 - settings: - CompileFlags: - FrameworkDependencies: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml.meta b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml.meta deleted file mode 100644 index a060c97be..000000000 --- a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0a6132672415643e8b1f16585785afe9 -timeCreated: 1504034459 -licenseType: Pro -TextScriptImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties deleted file mode 100644 index f438126c4..000000000 --- a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties +++ /dev/null @@ -1,2 +0,0 @@ -target=android-16 -android.library=true diff --git a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties.meta b/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties.meta deleted file mode 100644 index f43a87ce3..000000000 --- a/Assets/Plugins/Android/GooglePlayGamesManifest.androidlib/project.properties.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 6156f0fc2bafa4f0c86d61673c0068d0 -DefaultImporter: - userData: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml new file mode 100644 index 000000000..8f2f104a8 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml.meta similarity index 54% rename from Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta rename to Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml.meta index e777dbe6c..f54f057cd 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt.meta +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/Dependencies.xml.meta @@ -1,8 +1,7 @@ fileFormatVersion: 2 -guid: 0e1f3c150256848b1ba98702cfb71220 -timeCreated: 1435699670 -licenseType: Pro +guid: 934b981265cbf984fa7fc451550eadcc TextScriptImporter: + externalObjects: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs index 4eadb15ac..4bc78319b 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GPGSUtil.cs @@ -22,6 +22,7 @@ namespace GooglePlayGames.Editor using System.Collections.Generic; using System.IO; using System.Xml; + using System.Linq; using UnityEditor; using UnityEngine; @@ -107,8 +108,7 @@ public static class GPGSUtil /// /// The Games SDK requires additional metadata in the AndroidManifest.xml /// file. - private const string ManifestRelativePath = - "../../Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml"; + private const string ManifestRelativePath = "Plugins/Android/GooglePlayGamesManifest.androidlib/AndroidManifest.xml"; private const string RootFolderName = "com.google.play.games"; @@ -119,18 +119,26 @@ public static string RootPath { get { - if (string.IsNullOrEmpty(mRootPath)) + if (string.IsNullOrEmpty(mRootPath) || !Directory.Exists(mRootPath)) { #if UNITY_2018_4_OR_NEWER - // Search for root path in plugin locations for both Asset packages and UPM packages - string[] dirs = Directory.GetDirectories("Packages", RootFolderName, SearchOption.AllDirectories); - string[] dir1 = Directory.GetDirectories("Assets", RootFolderName, SearchOption.AllDirectories); - int dirsLength = dirs.Length; - Array.Resize(ref dirs, dirsLength + dir1.Length); - Array.Copy(dir1, 0, dirs, dirsLength, dir1.Length); -#else - string[] dirs = Directory.GetDirectories("Assets", RootFolderName, SearchOption.AllDirectories); + mRootPath = Path.GetFullPath(Path.Combine("Packages",RootFolderName)); + if(Directory.Exists(mRootPath)) + return mRootPath; +#endif + + string[] dirs = new[] { +#if UNITY_2018_4_OR_NEWER + // search for remote UPM installation + Path.Join("Library","PackageCache"), + "Packages", #endif + "Assets" + }.Distinct().SelectMany((path) => { + return Directory.GetDirectories(path, RootFolderName + "*", SearchOption.AllDirectories); + }).Distinct().ToArray(); + + switch (dirs.Length) { case 0: @@ -144,8 +152,7 @@ public static string RootPath default: for (int i = 0; i < dirs.Length; i++) { - if (File.Exists(SlashesToPlatformSeparator(Path.Combine(dirs[i], GameInfoRelativePath))) - ) + if (File.Exists(SlashesToPlatformSeparator(Path.Combine(dirs[i], GameInfoRelativePath)))) { mRootPath = SlashesToPlatformSeparator(dirs[i]); break; @@ -177,7 +184,7 @@ public static string RootPath /// private static string GameInfoPath { - get { return SlashesToPlatformSeparator(Path.Combine(RootPath, GameInfoRelativePath)); } + get { return SlashesToPlatformSeparator(Path.Combine("Assets", GameInfoRelativePath)); } } /// @@ -187,7 +194,7 @@ private static string GameInfoPath /// file. private static string ManifestPath { - get { return SlashesToPlatformSeparator(Path.Combine(RootPath, ManifestRelativePath)); } + get { return SlashesToPlatformSeparator(Path.Combine("Assets", ManifestRelativePath)); } } /// @@ -251,8 +258,7 @@ public static string ReadFile(string filePath) /// Name of the template in the editor directory. public static string ReadEditorTemplate(string name) { - return ReadFile( - Path.Combine(RootPath, string.Format("Editor{0}{1}.txt", Path.DirectorySeparatorChar, name))); + return ReadFile(Path.Combine(RootPath,"Editor",string.Format("{0}.txt", name))); } /// @@ -662,9 +668,9 @@ public static void UpdateGameInfo() /// public static void CheckAndFixDependencies() { - string depPath = - SlashesToPlatformSeparator(Path.Combine(GPGSUtil.RootPath, - "Editor/GooglePlayGamesPluginDependencies.xml")); + string depPath = SlashesToPlatformSeparator(Path.Combine("Assets","Editor","GooglePlayGamesPluginDependencies.xml")); + if(!File.Exists(depPath)) + return; XmlDocument doc = new XmlDocument(); doc.Load(depPath); @@ -694,10 +700,18 @@ public static void CheckAndFixDependencies() /// public static void CheckAndFixVersionedAssestsPaths() { - string[] foundPaths = - Directory.GetFiles(RootPath, "GooglePlayGamesPlugin_v*.txt", SearchOption.AllDirectories); + string[] rootPaths = new string[] { "Assets",RootPath }; + string[] foundPaths = rootPaths.Select((rootPath) => { + string editorPath = Path.Combine(rootPath,"Editor"); + if(!Directory.Exists(editorPath)) + return Array.Empty(); - if (foundPaths.Length == 1) + return Directory.GetFiles(editorPath, "GooglePlayGamesPlugin_v*.txt", SearchOption.AllDirectories); + }).FirstOrDefault((txtFiles) => { + return txtFiles.Length > 0 && File.Exists(txtFiles[0]); + }); + + if (foundPaths?.Length == 1) { string tmpFilePath = Path.GetTempFileName(); @@ -710,8 +724,7 @@ public static void CheckAndFixVersionedAssestsPaths() int pos = assetPath.IndexOf(RootFolderName); if (pos != -1) { - assetPath = Path.Combine(RootPath, assetPath.Substring(pos + RootFolderName.Length + 1)) - .Replace("\\", "/"); + assetPath = Path.Combine(RootPath, assetPath.Substring(pos + RootFolderName.Length + 1)).Replace("\\", "/"); } writer.WriteLine(assetPath); diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt b/Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt deleted file mode 100644 index d32616fb6..000000000 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/template-AndroidManifest.txt +++ /dev/null @@ -1,27 +0,0 @@ - - - - - __NEARBY_PERMISSIONS__ - - - - __NEARBY_SERVICE_ELEMENT__ - - - - - - - - - - - diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/m2repository.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard.meta similarity index 80% rename from Assets/Public/GooglePlayGames/com.google.play.games/Editor/m2repository.meta rename to Assets/Public/GooglePlayGames/com.google.play.games/Proguard.meta index b57f75888..4a7d303ba 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/m2repository.meta +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard.meta @@ -1,8 +1,6 @@ fileFormatVersion: 2 guid: a1aac54589c4640cd89900056af3a094 folderAsset: yes -timeCreated: 1515000812 -licenseType: Free DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt index 63c7b08cf..62b587d3a 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt @@ -1,8 +1,10 @@ +-keep class com.google.android.gms.games.PlayGames { *; } -keep class com.google.android.gms.games.leaderboard.** { *; } -keep class com.google.android.gms.games.snapshot.** { *; } -keep class com.google.android.gms.games.achievement.** { *; } -keep class com.google.android.gms.games.event.** { *; } -keep class com.google.android.gms.games.stats.** { *; } +-keep class com.google.android.gms.games.video.** { *; } -keep class com.google.android.gms.games.* { *; } -keep class com.google.android.gms.common.api.ResultCallback { *; } -keep class com.google.android.gms.signin.** { *; } @@ -17,4 +19,5 @@ -keep class com.google.android.gms.common.GooglePlayServicesUtil { *; } -keep class com.google.android.gms.common.api.** { *; } -keep class com.google.android.gms.common.data.DataBufferUtils { *; } +-keep class com.google.android.gms.games.quest.** { *; } -keep class com.google.android.gms.nearby.** { *; } diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin.txt.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta similarity index 84% rename from Assets/Public/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin.txt.meta rename to Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta index 5932b27aa..a511a9780 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Editor/GooglePlayGamesPlugin.txt.meta +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Proguard/games.txt.meta @@ -5,6 +5,3 @@ TextScriptImporter: userData: assetBundleName: assetBundleVariant: -labels: -- gvh -- gvh_manifest diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime.meta new file mode 100644 index 000000000..1b4e5aa47 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd0ac925755a93f468f9512314445211 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta new file mode 100644 index 000000000..05a73186a --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 59e19e4181908444696b31ddc5d39242 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs deleted file mode 100644 index d6a65d680..000000000 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (C) 2015 Google 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 -// -// 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. -// - -#if UNITY_ANDROID -namespace GooglePlayGames -{ - /// - /// This file is automatically generated DO NOT EDIT! - /// - /// These are the constants defined in the Play Games Console for Game Services - /// Resources. - /// - /// - /// File containing information about the game. This is automatically updated by running the - /// platform-appropriate setup commands in the Unity editor (which does a simple search / replace - /// on the IDs in the form "__ID__"). We can check whether any particular field has been updated - /// by checking whether it still retains its initial value - we prevent the constants from being - /// replaced in the aforementioned search/replace by stripping off the leading and trailing "__". - /// - public static class GameInfo - { - private const string UnescapedApplicationId = "APP_ID"; - private const string UnescapedWebClientId = "WEB_CLIENTID"; - private const string UnescapedNearbyServiceId = "NEARBY_SERVICE_ID"; - - public const string ApplicationId = "__APP_ID__"; // Filled in automatically - public const string WebClientId = "__WEB_CLIENTID__"; // Filled in automatically - public const string NearbyConnectionServiceId = "__NEARBY_SERVICE_ID__"; - - - public static bool ApplicationIdInitialized() - { - return !string.IsNullOrEmpty(ApplicationId) && - !ApplicationId.Equals(ToEscapedToken(UnescapedApplicationId)); - } - - public static bool WebClientIdInitialized() - { - return !string.IsNullOrEmpty(WebClientId) && !WebClientId.Equals(ToEscapedToken(UnescapedWebClientId)); - } - - public static bool NearbyConnectionsInitialized() - { - return !string.IsNullOrEmpty(NearbyConnectionServiceId) && - !NearbyConnectionServiceId.Equals(ToEscapedToken(UnescapedNearbyServiceId)); - } - - /// - /// Returns an escaped token (i.e. one flanked with "__") for the passed token - /// - /// The escaped token. - /// The Token - private static string ToEscapedToken(string token) - { - return string.Format("__{0}__", token); - } - } -} -#endif //UNITY_ANDROID \ No newline at end of file diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta deleted file mode 100644 index fd031ffb8..000000000 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/GameInfo.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: a722d413080904cc1bd07f4db21e1af1 -timeCreated: 1435699550 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs index eaf682090..eb8d263ce 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/PluginVersion.cs @@ -20,7 +20,7 @@ public class PluginVersion { // Current Version. public const int VersionInt = 0x01101; - public const string VersionString = "0.11.01"; + public const string VersionString = "0.11.1"; public const string VersionKey = "01101" ; } } diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android.meta new file mode 100644 index 000000000..b9a154356 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6bfcb1d6916d78f4583bdabd39381fd8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport.meta new file mode 100644 index 000000000..ef82bfd68 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8147152d9e5fe61419dd1f53c0458f44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com.meta new file mode 100644 index 000000000..517db5a41 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b95c8473e1ebc164d9cd15a329252e20 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google.meta new file mode 100644 index 000000000..2ca1583cb --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85ca6e6e94af9dc42b7b37d6503c01ef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games.meta new file mode 100644 index 000000000..6a92e9f96 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70869f98832921b4dafd66fbb553b3c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge.meta new file mode 100644 index 000000000..43174dc60 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 432674a00b61dc24bb763d81e289af52 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/AchievementUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/AchievementUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java.meta new file mode 100644 index 000000000..6b6204dff --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AchievementUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 38b00d1abfee17342b65128e3e2f4b2b \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/AllLeaderboardsUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/AllLeaderboardsUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java.meta new file mode 100644 index 000000000..51db88c23 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/AllLeaderboardsUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 99094e102809adb469b0fc4926e8cea3 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/CommonUIStatus.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/CommonUIStatus.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java.meta new file mode 100644 index 000000000..0ec7da48c --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CommonUIStatus.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7b5ddbaf6cadf00488e4fa278947e79c \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/CompareProfileUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/CompareProfileUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java.meta new file mode 100644 index 000000000..3d19c710e --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/CompareProfileUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4c535fafd50bfdc4e983fa9b875d8ca1 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java.meta new file mode 100644 index 000000000..65c1140ee --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/ConnectionLifecycleCallbackProxy.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2c298016396142e44b342cca809971c9 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java.meta new file mode 100644 index 000000000..165a3156b --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/EndpointDiscoveryCallbackProxy.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8eb2e3dc383e1d646bc3ce5578d2391a \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/GenericResolutionActivity.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/GenericResolutionActivity.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java.meta new file mode 100644 index 000000000..1b15ba610 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionActivity.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 731e40efbdc9a7148a76357b9f149c2b \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/GenericResolutionUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/GenericResolutionUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java.meta new file mode 100644 index 000000000..fa6a994f4 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/GenericResolutionUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 56580c8edb194d4469e097a661b0bb74 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/HelperFragment.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/HelperFragment.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java.meta new file mode 100644 index 000000000..2c7b36f55 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/HelperFragment.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9389a2c4400794a4fbc9577c272735cf \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/LeaderboardUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/LeaderboardUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java.meta new file mode 100644 index 000000000..4fc77cc6b --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/LeaderboardUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ccd37b133b1dfd44f81e6d5e3938ffab \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/NativeBridgeActivity.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/NativeBridgeActivity.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java.meta new file mode 100644 index 000000000..639c6993b --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/NativeBridgeActivity.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e466d6408a655594796e1f9ad1453ad0 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/PayloadCallbackProxy.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/PayloadCallbackProxy.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java.meta new file mode 100644 index 000000000..4a83a5f21 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/PayloadCallbackProxy.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 79a3ebea938b5314b9dd3a977f4f5aaf \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/SelectSnapshotUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/SelectSnapshotUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java.meta new file mode 100644 index 000000000..24a5c91ea --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SelectSnapshotUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 037d0990822597c43be7c4fa0d493484 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/SimpleUiRequest.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/SimpleUiRequest.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java.meta new file mode 100644 index 000000000..cb01c79a4 --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/SimpleUiRequest.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 243a99c032e213a4fa9f8e2a818cec71 \ No newline at end of file diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/Utils.java b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java similarity index 100% rename from SupportFiles/Public/PlayGamesPluginSupport/src/main/java/com/google/games/bridge/Utils.java rename to Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java.meta b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java.meta new file mode 100644 index 000000000..678a83f1b --- /dev/null +++ b/Assets/Public/GooglePlayGames/com.google.play.games/Runtime/Scripts/Plugins/Android/PlayGamesPluginSupport/com/google/games/bridge/Utils.java.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3a959daa9a4301142b9d127e3cb49b7e \ No newline at end of file diff --git a/Assets/Public/GooglePlayGames/com.google.play.games/package.json b/Assets/Public/GooglePlayGames/com.google.play.games/package.json index 5b29d7a2b..9f5ccf552 100644 --- a/Assets/Public/GooglePlayGames/com.google.play.games/package.json +++ b/Assets/Public/GooglePlayGames/com.google.play.games/package.json @@ -2,7 +2,7 @@ "name": "com.google.play.games", "displayName": "Google Play Games", "description": "The Google Play Games plugin for Unity allows you to access the Google Play Games API through Unity's social interface.", - "version": "0.11.01", + "version": "0.11.1", "unity": "2018.4", "author": { "name": "Google LLC" diff --git a/SupportFiles/Public/PlayGamesPluginSupport/CMakeLists.txt b/SupportFiles/Public/PlayGamesPluginSupport/CMakeLists.txt deleted file mode 100644 index 44b65ed7a..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) 2018 Google LLC -# -# 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. -## - -cmake_minimum_required(VERSION 3.4.1) - -add_library(gpg_sdk STATIC IMPORTED) -set_target_properties(gpg_sdk PROPERTIES IMPORTED_LOCATION - ${GPG_SDK_PATH}/lib/c++/${ANDROID_ABI}/libgpg.a) - - -add_library(gpg - SHARED - src/main/cpp/bridge.cc - src/main/cpp/plugin_shim.cc - ) - - -target_include_directories(gpg PRIVATE - ${GPG_SDK_PATH}/include -) -target_link_libraries(gpg - gpg_sdk - android - log) diff --git a/SupportFiles/Public/PlayGamesPluginSupport/build.gradle b/SupportFiles/Public/PlayGamesPluginSupport/build.gradle deleted file mode 100644 index 58d772980..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/build.gradle +++ /dev/null @@ -1,97 +0,0 @@ -buildscript { - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' - } -} - -allprojects { - repositories { - google() - mavenCentral() - // The following line is needed when building the plugin with an unreleased SDK. - maven { url '/tmp/games_m2/repository' } - } -} - -apply plugin: 'maven-publish' -apply plugin: 'com.android.library' - -group 'com.google.games' -project.ext.baseName = "gpgs-plugin-support" - -if (project.hasProperty("projVersion")) { - project.version = project.projVersion -} else { - project.version '0-SNAPSHOT' -} - -if (project.hasProperty("uploadDir")) { - project.ext.uploadDir = project.uploadDir -} else { - project.ext.uploadDir = "${buildDir}/m2repository" -} - -android { - namespace 'com.google.games.bridge' - - lintOptions { - abortOnError true - warningsAsErrors true - - // Don't fail when new versions of dependencies are available. Allows reproducible builds - disable("AndroidGradlePluginVersion", "GradleDependency", "NewerVersionAvailable", "UnusedResources") - } - defaultConfig { - versionName project.version - archivesBaseName = project.ext.baseName - minSdkVersion 19 - - } - compileSdkVersion 28 -} - -// Rename the .aar file to be .srcaar to work around having the local repo in a -// subdirectory in a Unity project. -// The jar resolver plugin handles the changing back from .srcaarto .aar -task renameLibrary(type: Copy) { - from "${buildDir}/outputs/aar/${baseName}-release.aar" - into "${buildDir}" - rename { String fn -> - fn.replace("release.aar", "${version}.srcaar") - } -} - -tasks.whenTaskAdded { task -> - if (task.name == 'assembleRelease') { - renameLibrary.dependsOn(task) - } -} - -publishing { - publications { - release(MavenPublication) { - groupId = project.group - artifactId = project.ext.baseName - version = project.version - - artifact("${buildDir}/${baseName}-${version}.srcaar" as File) - } - } - - repositories { - maven { - url uri(project.ext.uploadDir) - } - } -} - -tasks.withType(PublishToMavenRepository) { it.dependsOn renameLibrary } - -dependencies { - implementation 'com.google.android.gms:play-services-games-v2:17.0.0' - implementation 'com.google.android.gms:play-services-nearby:18.5.0' -} diff --git a/SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.jar b/SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 7f93135c49b765f8051ef9d0a6055ff8e46073d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63721 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鯊%1Et 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⁢ zv5o9#E7!G0XmdzfsS{efPNi`1b44~SZ4Z8fuX!I}#8g+(wxzQwUT#Xb2(tbY1+EUhGKoT@KEU9Ktl>_0 z%bjDJg;#*gtJZv!-Zs`?^}v5eKmnbjqlvnSzE@_SP|LG_PJ6CYU+6zY6>92%E+ z=j@TZf-iW4(%U{lnYxQA;7Q!b;^brF8n0D>)`q5>|WDDXLrqYU_tKN2>=#@~OE7grMnNh?UOz-O~6 z6%rHy{#h9K0AT+lDC7q4{hw^|q6*Ry;;L%Q@)Ga}$60_q%D)rv(CtS$CQbpq9|y1e zRSrN4;$Jyl{m5bZw`$8TGvb}(LpY{-cQ)fcyJv7l3S52TLXVDsphtv&aPuDk1OzCA z4A^QtC(!11`IsNx_HnSy?>EKpHJWT^wmS~hc^p^zIIh@9f6U@I2 zC=Mve{j2^)mS#U$e{@Q?SO6%LDsXz@SY+=cK_QMmXBIU)j!$ajc-zLx3V60EXJ!qC zi<%2x8Q24YN+&8U@CIlN zrZkcT9yh%LrlGS9`G)KdP(@9Eo-AQz@8GEFWcb7U=a0H^ZVbLmz{+&M7W(nXJ4sN8 zJLR7eeK(K8`2-}j(T7JsO`L!+CvbueT%izanm-^A1Dn{`1Nw`9P?cq;7no+XfC`K(GO9?O^5zNIt4M+M8LM0=7Gz8UA@Z0N+lg+cX)NfazRu z5D)~HA^(u%w^cz+@2@_#S|u>GpB+j4KzQ^&Wcl9f z&hG#bCA(Yk0D&t&aJE^xME^&E-&xGHhXn%}psEIj641H+Nl-}boj;)Zt*t(4wZ5DN z@GXF$bL=&pBq-#vkTkh>7hl%K5|3 z{`Vn9b$iR-SoGENp}bn4;fR3>9sA%X2@1L3aE9yTra;Wb#_`xWwLSLdfu+PAu+o3| zGVnpzPr=ch{uuoHjtw7+_!L_2;knQ!DuDl0R`|%jr+}jFzXtrHIKc323?JO{l&;VF z*L1+}JU7%QJOg|5|Tc|D8fN zJORAg=_vsy{ak|o);@)Yh8Lkcg@$FG3k@ep36BRa^>~UmnRPziS>Z=`Jb2x*Q#`%A zU*i3&Vg?TluO@X0O;r2Jl6LKLUOVhSqg1*qOt^|8*c7 zo(298@+r$k_wQNGHv{|$tW(T8L+4_`FQ{kEW5Jgg{yf7ey4ss_(SNKfz(N9lx&a;< je(UuV8hP?p&}TPdm1I$XmG#(RzlD&B2izSj9sl%y5~4qc diff --git a/SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.properties b/SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 8c86a9640..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Mon Mar 20 17:28:30 PDT 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip diff --git a/SupportFiles/Public/PlayGamesPluginSupport/gradlew b/SupportFiles/Public/PlayGamesPluginSupport/gradlew deleted file mode 100755 index 1aa94a426..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# 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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/SupportFiles/Public/PlayGamesPluginSupport/gradlew.bat b/SupportFiles/Public/PlayGamesPluginSupport/gradlew.bat deleted file mode 100755 index 93e3f59f1..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/AndroidManifest.xml b/SupportFiles/Public/PlayGamesPluginSupport/src/main/AndroidManifest.xml deleted file mode 100644 index d6e9ef262..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/AndroidManifest.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.cc b/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.cc deleted file mode 100644 index 80bfb24af..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.cc +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @file bridge.cc - * @copyright Copyright 2014 Google Inc. All Rights Reserved. - * @brief JNI implementation for use by the NativeActivityBridge - */ - -#include -#include -#include "gpg/android_support.h" -#include "bridge.h" - - -#define LOG_TAG "GamesUnitySDK" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) - -JNIEXPORT void JNICALL Java_com_google_games_bridge_NativeBridgeActivity_forwardActivityResult - (JNIEnv * env, jobject activity, jint request_code, jint result_code, jobject result) { - LOGD("Forwarding OnActivityResult"); - gpg::AndroidSupport::OnActivityResult(env, activity, request_code, result_code, result); - LOGD("Forwarding OnActivityResult Finished"); -} diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.h b/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.h deleted file mode 100644 index b7b2f8923..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/bridge.h +++ /dev/null @@ -1,75 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_google_games_bridge_NativeBridgeActivity */ - -#ifndef _Included_com_google_games_bridge_NativeBridgeActivity -#define _Included_com_google_games_bridge_NativeBridgeActivity -#ifdef __cplusplus -extern "C" { -#endif -#undef com_google_games_bridge_NativeBridgeActivity_MODE_PRIVATE -#define com_google_games_bridge_NativeBridgeActivity_MODE_PRIVATE 0L -#undef com_google_games_bridge_NativeBridgeActivity_MODE_WORLD_READABLE -#define com_google_games_bridge_NativeBridgeActivity_MODE_WORLD_READABLE 1L -#undef com_google_games_bridge_NativeBridgeActivity_MODE_WORLD_WRITEABLE -#define com_google_games_bridge_NativeBridgeActivity_MODE_WORLD_WRITEABLE 2L -#undef com_google_games_bridge_NativeBridgeActivity_MODE_APPEND -#define com_google_games_bridge_NativeBridgeActivity_MODE_APPEND 32768L -#undef com_google_games_bridge_NativeBridgeActivity_MODE_MULTI_PROCESS -#define com_google_games_bridge_NativeBridgeActivity_MODE_MULTI_PROCESS 4L -#undef com_google_games_bridge_NativeBridgeActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING -#define com_google_games_bridge_NativeBridgeActivity_MODE_ENABLE_WRITE_AHEAD_LOGGING 8L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_AUTO_CREATE -#define com_google_games_bridge_NativeBridgeActivity_BIND_AUTO_CREATE 1L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_DEBUG_UNBIND -#define com_google_games_bridge_NativeBridgeActivity_BIND_DEBUG_UNBIND 2L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_NOT_FOREGROUND -#define com_google_games_bridge_NativeBridgeActivity_BIND_NOT_FOREGROUND 4L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_ABOVE_CLIENT -#define com_google_games_bridge_NativeBridgeActivity_BIND_ABOVE_CLIENT 8L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_ALLOW_OOM_MANAGEMENT -#define com_google_games_bridge_NativeBridgeActivity_BIND_ALLOW_OOM_MANAGEMENT 16L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_WAIVE_PRIORITY -#define com_google_games_bridge_NativeBridgeActivity_BIND_WAIVE_PRIORITY 32L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_IMPORTANT -#define com_google_games_bridge_NativeBridgeActivity_BIND_IMPORTANT 64L -#undef com_google_games_bridge_NativeBridgeActivity_BIND_ADJUST_WITH_ACTIVITY -#define com_google_games_bridge_NativeBridgeActivity_BIND_ADJUST_WITH_ACTIVITY 128L -#undef com_google_games_bridge_NativeBridgeActivity_CONTEXT_INCLUDE_CODE -#define com_google_games_bridge_NativeBridgeActivity_CONTEXT_INCLUDE_CODE 1L -#undef com_google_games_bridge_NativeBridgeActivity_CONTEXT_IGNORE_SECURITY -#define com_google_games_bridge_NativeBridgeActivity_CONTEXT_IGNORE_SECURITY 2L -#undef com_google_games_bridge_NativeBridgeActivity_CONTEXT_RESTRICTED -#define com_google_games_bridge_NativeBridgeActivity_CONTEXT_RESTRICTED 4L -#undef com_google_games_bridge_NativeBridgeActivity_RESULT_CANCELED -#define com_google_games_bridge_NativeBridgeActivity_RESULT_CANCELED 0L -#undef com_google_games_bridge_NativeBridgeActivity_RESULT_OK -#define com_google_games_bridge_NativeBridgeActivity_RESULT_OK -1L -#undef com_google_games_bridge_NativeBridgeActivity_RESULT_FIRST_USER -#define com_google_games_bridge_NativeBridgeActivity_RESULT_FIRST_USER 1L -#undef com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_DISABLE -#define com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_DISABLE 0L -#undef com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_DIALER -#define com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_DIALER 1L -#undef com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SHORTCUT -#define com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SHORTCUT 2L -#undef com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SEARCH_LOCAL -#define com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SEARCH_LOCAL 3L -#undef com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SEARCH_GLOBAL -#define com_google_games_bridge_NativeBridgeActivity_DEFAULT_KEYS_SEARCH_GLOBAL 4L -#undef com_google_games_bridge_NativeBridgeActivity_GPG_RESPONSE_CODE -#define com_google_games_bridge_NativeBridgeActivity_GPG_RESPONSE_CODE 4673607L -#undef com_google_games_bridge_NativeBridgeActivity_BG_COLOR -#define com_google_games_bridge_NativeBridgeActivity_BG_COLOR 1090519039L -/* - * Class: com_google_games_bridge_NativeBridgeActivity - * Method: forwardActivityResult - * Signature: (IILandroid/content/Intent;)V - */ -JNIEXPORT void JNICALL Java_com_google_games_bridge_NativeBridgeActivity_forwardActivityResult - (JNIEnv *, jobject, jint, jint, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/plugin_shim.cc b/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/plugin_shim.cc deleted file mode 100644 index bb2ac6c48..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/cpp/plugin_shim.cc +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @file plugin_shim.cpp - * @copyright Copyright 2014 Google Inc. All Rights Reserved. - * @brief Tiny shim that enables initialization of GPG SDK - */ - -#include -#include -#include "gpg/android_initialization.h" - - -#define LOG_TAG "GamesUnitySDK" -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) - -extern "C" { - -/** - * A trivial implementation of JNI_OnLoad that initializes the Google Play Games - * SDK when the shared library containing this method definition is loaded. - */ -jint JNI_OnLoad(JavaVM *vm, void *reserved) { - LOGD("Performing Android initialization of the GPG SDK"); - gpg::AndroidInitialization::JNI_OnLoad(vm); - return JNI_VERSION_1_6; -} - -} // extern "C" diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/ic_launcher-web.png b/SupportFiles/Public/PlayGamesPluginSupport/src/main/ic_launcher-web.png deleted file mode 100644 index 5c63bc5e8c8c0cf90e8398e5de9aee577e987f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47072 zcmdqJbyVBy(gqsbU5mSGDN=$Ich^GkwiLG_!6_D?Kyg~26fYi%7f(WI@lqtX6!#** z;imhXv-dvdp6~na-*>I7m3RG;mE@gw=9y=nnP1}cb=8RQ>F@yn0Fj2evLOI~j#{Dv zaIsNOCjsM^06;iELs`K%U}ksT-<;BEQsOW#4|43D>*2=@{F$xV8@|e-ZcLc%183-y zT90~YJ8TaaR5!*{;KU>6xCbDkh(}Y={sCRRmAQ-(Ut2|6+%t_WA_y`|*3@SmD1Pf4_8` z%xKHpQ>9l&KasXg)lRzu&g-1*vVPPAbIdkHTf&guIN*J)>2HhNP!VaA%e=8y*Am!q zy5q7m+P)<|7OuEq$|690umVnZ6lR%?g9Q#$O=N_s?ePUH`H+38-I70H6U7 z(*Qz+yrmd~0Do@cpO;Zzdf_2}CjKz6u1J{Lw|t;3duLt?a@bCc7wc_-R!n$JP~f6t~tBB~R6DP9d;!@n-1lnzduy;Wg5~F7jTr1I>XreFEq} zth(&--jVh~Zv#FK%2%%K@xzZk2msT+OJfm8Z+Jasc!5SBePBQrP@_ZEBvG-Ig;+0o z&P;!N=Y@8DAPhKKd<^j|Q4e`GB<)NL^2zIVEXy%TpNghT7$&0JT-#C!4M12oL z#AKoC`Wrx72rXE7>Gv_U06fu_(7XRQpZ~tT`wp|IBh_>vTL`w9O+i$U0vFx5_c(SR zl>(#I8`+Whz6*L!rIM$ZFu4xw?~rzwcwMIb7^3NK*bc+=@QjZZuzq!gn>{GWY4`Oh^RuJ4OUKmw1CNKl*dG1iUBAyp2=EV2`>*R`W@~^m9pNVsuzFrJ z-?r^BeUYn&Ly(abANoim+OB@4CApu-fbZ$>YUZN-tz&hl$KZ(V_(4&fCo$#g3%P2= z4<`8O7#DlpVOl#^4R1;D=*~(6FfGoiPkrd?FH$3peqC|9jXm8x-W{tnFg5>@hW0aU z;Bui`@n}YF(SK3}`rOUQi#n&X=cUhxfliJs26y(g#>L$?4CbGCfQJmj!UtC2T|Oqa zpKd0R{KV5y_OlL*`{!j+Xw<<4f@Il0xE%an<d$n(8c}%ZeLJnHvd-x$@ zBv(vvtrJ)%x6p-f&Bf5l&AybAuy1lASqtg9cX;wT-{$6@k?=I|U5=zFo@J(S_vD&6)vkGg zF&@y&u#MUbx*v_;M?55|49}ymf!44hd=TGD7@C4?lPe_0`}R$$Z$4GIE_#T-^l$Ga z02*&4EV52b7WC{UzRrL?e;6W{EC1l4 zsT3=$eI*|SS`YBUoqZeZMYJF9oy;DXHC*6ZQn}JYqz6CKQeZGcFy7YG5-!j z;jD5>{4+9m=Ro9w@NPrKX0=PnASHm|4tvNgw6|M$G}*UrMJurLOA?h|)xz6NTm%#_ z@QSxGhufjFw3OLiS2sWSaOCnS-tV0BJM^)_2>}1g`uZ#b{d1s&k4a~3$iT&{+m$Un zn_H#mqB+idLGEPuo|gYNq@Gti{Po3MgCU;fE`$#;SwiO*Xar=d=$0f1!rI}l!#6iN zMbAVtB~DnnC!l|53c^2jF~$}H8=j->_n5B;y^a9l``f*ODtpcHD&uL>JSRW1>rApR z4`t4zvO6n&wtQB+HVc^z%-2N-&f~W=n2E_jSMQttSX>hd=(0gu2!k3joy~f#do3np zdw>7vk!y6C%P44VOJVjPf6hst-AKC<&X=zwbNKL2Z~hG!%YSYDFX+pa6kYfJ z$~8CI1bUf41rY*Uuw&o8+cC$gs(@O*O5Vp3$bxJ@jQL_Y;Xcvc<^lq2@11xex8NAr zJo7OHa6wvuc}(Hx0=gLf*OaQf+M^CCBFhtk*@p4+Z$iJe2+IB>HLXr&Er_Q+o>2 zY~}u0S=IR_p^m3y|Sl`1GSE6axh3%r> zTU1k2)Zu5CtnA3a36$QNYozx)D8&4-U8A5^NcwqGNJ)*2S=!hEG}?K|*1#_G2sjVQ zAP%<*Px2)DOx9{B|Mdq68-7I}SylzN%(pPvJ(-Po%r?(P=B#@{Ucf3l}Fn=h}bxTN{Ww;Qy`%r*9 zGN>deHMTW5N;Z}={F}-$?_e5)TV#r-P@hyUst=#U7T=5Hi-w8_xCOhTgnu-$g>XI& zeUocV$&8IeTB{YG=7X5+M#-?J?lzCz!_UK)uF+Lf^B?>7Gu{dZ%J$svzp|0Hl;fcp z;9=g6<&!Djf^B9?h)J2I`48sSdt4PucDd)uj|Z|LG}} z8|H=AO=t<_YeF!JOl~>2US>YGa@=!GjdTNl3T;1b$cuU=yJ-|{1(L40q^g>7IC8%1 z6QTdOMUEs~PnfN#D4pC&KRac}MC01GoSPC@A=Ae3YO*d;!#|p0;+u>82A8EJX||Q} zV#J1;Y-&*|GOye}iP0KO_!`Uf24_BwU^GLD8~;&LXJpi~?U}6+)8+}g@(ed{LwwWa z_y!|Di~j)4Y2=dp-bm~sEVchq{&oBJU!3doixq)7*%?uZ76=Y>`mOn=lic~iM`)(A zmB=6q=3hVELjMZke-O<7dcdLUhd2lR=`ictcSn9^1yeNU`$Y#p8=kkp)1 zO`uFreOXidq7xF^)Tj)YeO~)EQ)QG6ITGDeBUxFrTa!rXENDe^kVDxEU_cG#Ll8?jq4A zU#qymis3iEK2xMvFKZNcxC(P-HUF@~OP=%fBC(2FEkhY2aLigWc+NVOanPO9Ex8fL zb(pJ6!I+NYZlso^XI)8AsKiB`{*uSmt8_}+`Wm}9vLm=I4IdP&$2S_kgNtr8)8oT9g@TAvVZ ztJ&+@H``%)=@EXv@1>gDF;2U`UGE3d$Kk`o>%lKj#We_7bUEaF53}GQTf=O_TZH-2 zYCMTxRc0lOL8nz-jWc{ha1%#h=&{n?N%PdqpZh*v8+6*t3Or837?-~Be&uzi?62qD zMqVY=oB~J%mo4KsAeq%Jm&*K0&R4>L#`X~#v+KJ$PLenT>RYxedqfBNFA?-YW`bQt z;a+$s8vaME@sAV!uYh%pZa;`Fzvku+8y|_ciw7bZf+f1beaj$O5F{3olDdm8g-g?% zS39lWmiia^Bmha62~*0}nTutHhv%!O$B~E2Mynj+Pm)d8FICVS^V00!NFClueB+6Y zepHAqL7~@!vk!f_!u2|qUgTX1pC*whF06NyS#dQoiw7+dOmGZb8_U>&IDJnvSa9>BZh7VM>Js@3Ap1!w;ob}wz ztX+n1H(k$5K$=$gHfZ>dBKMy(;*a(Jz^$&)W4c5wFR5Y0_Ymyn?KTgKZMrSW8BEE{ zKIAjCVHFi~LnuYOfH1y*-OtP3Egn>HcK-BSq$MJHl<}N!0&_j%Zms|#APSI(CYIFN zUsc1keubn}7fD0n&;mtKr^OblW ztSlA0?jsevuaO0C&<)EvyLTK6+O0+c7Ct*$23wmE$n1>5Da)m6SwZd zDU0r$6UO)6edVVq^bBnZ(KOOp<}V`Z<#?v*@MrV)J}d@JqKPa9#HvTP-lpt@C95b0 zbP9(_FL^8*qN>Zk8|Hsn-xgtadiOo>G<3W4q52YHfcbOBp#)+p&lO`nriI|KOSVlp z0X!#@w59dJ;nF;MC0RvC4O23IG)IcT+=lmaiCCMJ3EcCT3tI?DXiBkGsNGHqV+eAB zywwlQm)T{GTTaaAVf$4t$f4O|xmKW9zU-HP3tDpUw~aYx)}re~6K*QK`zR?g)aJRCy_)@iD_hS(n9oZsGuJ-6 ztC5U03~w}4Ja=VNQpME=a|n-IS*^L%zz}}WfGUQ`h*wfDn=+U?)I0?3gmu41yPF9d zaX#)TabsFXyKdGy3SFf-G_Rut``b}_*-%Cs8ZbE@=~H4<89R6`QekAj6N)){up*%? z9`7xF=LS17Y+k}yDGeZuwMx-CxNiaZr))M_}bHNR}_`ey;m;Le{ zHW>*V@I@02=@5+J_ham&fw@w8!61PBYBmEve6Q`7{cZ-)j~isoy;F7eUU$9rONK@! z?r~^U##KkK5pOM}6uYG^U#08NDI$!!YL}I>PG|G;v&m^5@|)(IBqhZHbE4$qZvrflJ?a! z$AByMl@ZU(*iKRjFs)owFyH&XAzqi-6uqMiVr<%J*h{G9cH6h5FRGfVm30SRLwu09u??3=&&)I1v3>24oh|R2j3TOcWJd zHd`2bR%)ehVmI5Hc0r`-b-peoOh9zikwPVA;@D%J)NyR8cL|=pwxZLMtv*M&Saxl` zkYj%cThx(jGy80JKE3c+=(fuxrr<79=CGEw|GVW;cb`zt3$HKosVyIwiD}@YecskV zWYZau@OyUvwi}R*I{$AAjOD45W3epTIkN3{reJ;eNaVHq?g`){1l^47flU!0*C$Hp zVS3m*E2<{oH{Isbba7kyWXs;Fht927KllK*w~dRi(Ce4~U?;yT&HqcRIp|NuseR`s zuJz;eMZDE_y~|s!!N4e4Kz@H8!~j|Ydn)U9PgQfH*gc$zPUtbv#17j_g|O+#A=_%+ zj!=(!;Uhwcs!@IFQc^Rb%9X9~cETcKe5!@?*L84lQP+%g{=>!e6pgTE7rGic>}yLi z_zg|`9Yvc!=mt7Wv8(xLH6nRcvuNp+JEm8sh4qPK`qwI2<)`foJlLUOY^RTz)j=~k zQdX0B>cI%2l>>h+-TBif3V&(RK945$!uT1*D4D|)$bc@X_qPb#VHcG(X@yZNniYLr zeyKNWk1&g8C_=wAjUfYaoL!9?N*ZpnIc@nP1-{tHDP%JBPraUmK9XDciw^t_qkmC@ z|6J#W`J;WMz~L()FoEINn-zcCiMPA;slqfh&VcgC`aPx-w7VE1-OBC6vCS$GwQtek z#4q^;=e&6_k+J1{%FbdVAMFB-agu$Hl&2!ovITO;#iBWW6*9ueFX2qQ0U~mxn3qcmjq8TH0u5Qbb(R(|cuTq`PvkhMAOa8HHD23p;%7h$G3`mmNxA#mX`A zRw{K7k4@;5gE-%Zo%nh4E7^P0@CCvkMAowUc^QJDEp4}3azPc^lnY6fU~J|e9X9pD5-9qF^V9^%=?#A~TzW!OjaZYpb}0gXT$BUh&}3DC2c|6J-rBD)7{P%o0u{SEcC3 z0(}Z*Uv<(aMkd^!=UE9pRTo`SBYl{GvYgow{vE6G7Xo3at6co<-pj)vWaZxz3thb>gE93Ju@NYn?C3y9)@^~WBbN4e2*<(b8 zl#dJ79O#{WBWUv1)W=Ng z@cXID`S11DqxY%j0$TIG2FhWl4#>t;;R|nPOyv}YKQ-&mf-!2Z8WS13X&z-%+BbDrT6Oj_D0FHjTDeA1F}%lECVTys%}vnPy?z+j^uPaz9+^xJ8~rep@Y9XitYj zZWHSlrz{xJHorWc=dL_ht*d-8r0aQ&O=Z1_-jiiP?wF88W;Or~om{jM-uh5+$(iEq zONHr(WNYfn;WvNf(au=67A5W)-^4K)W4R-eZ>x1PcC#KXc;eFeyvgGSQ#R5iU5Ij( z{Qn~v4y^!;H*Dz*!ra5+1h+=X2LeU6&HZ{2+z8GaZQ0D)94@P>cj{jW2FBi>v8TQd zATMKXj*U{Qj%(nKWI6sOg+kJ7-M|v*O|1_`2J4_xofc%UaLO;&2f3j$5nqEJs&f|E zv#{C_o0(9eB6NW=k`-Txi2gvI4rZlM=c$+ZOHsoCkrfojs#hX+?;{KLZPBf=_uKOz z*@Rz$eX(>@BMvo`0Dpo5AYVjJ=27jYiN-eJ)OtTVMT6X7Jm$ zttq&k>tL^%Fbd;IRIJx*j8{*YO51e|osvuAp2=p}z8&d%(qEnpKtxyYO78}*DThoB z7=(Yziq;97%TVXpc?6er#o*otlHN<^Qr!PR6*Z|~BWyCE{`RPXUjO{1WD4>HCOoT= zJ>7DlH0#XF3Mp{|3KO-((HF*^P+zdqbA!Ztzj4u^faL~AtBcPWF_GwN2<_-`$fl3% zUy;X=T!PUSbHHs=k#9zjdJFri@VRZam|#b?qtDzZio~t_q(Je=YRR((BgJzMhwb3j z`qW2(Fu0>Lesqf;uX;n#+DnRKRghZ({(ws&Uj%E>JjmYXwYaN{yG9jp{iuUCntA9~ zO(^xQL1u9*-I+7>*00cV;u&s2_%6)P4QXyj}i=byDdG{&aVQ@+;&?ds#|sA+>s@yMiCmd z|00EMMgVCY=N>ri%tGnJN{#K;zO8yIFj}7`T=D=zf4e<6B)`Qflzhd5q;^39cx1eSaoU|Myrl!5zuM_m)19Zr=xPCa zt(cmzeGxeXQXF+BQ#zh!qY$1wYgPeK(xj~Z9tU%yiIw;%kepj6IeMk<8+>4jMEv&X zq?L6`g|P~qZGF%b;T^zJcN;)q@9>fUh2u#gl;P@Hii9C6-1y-fF>H8#a5#P zcJl2R`^)V17la9IQ$+Uhvfxd7(Yb_qDhmqHW=mKc&<(}*td_r0IkMg9N*O%KB$l?K zVzoh@-q!ml@17dK<90BX5Q&rUxLL;D?j22d#!I8kn$Pg+;AzVexS?PNWnd)=(&=UN zM_Y8BXb5Y%yjk2TC}i55?-e;vRi^Q!!ss9%165Oa?K-PXINug!0lQOPA(hQTE!m6- zuinf}Dvw4_dY;QP%Ku2|_l&{Vas!J+^RqTfWe5D)Ci6OW7gEkga+@9;po=vO-oT13-C_L;lUjq4&8xddp!-wxlX74Ub4{=1F- zr?~M)Q|%uOraz?F?|c9d2-P8fhqV+Kdtp9Uy&wB?pBNzU>((}8C6ZNIdjX9Y2r3g( zUUb%B=vuR8zwi_7bpwB;cSqIY(dzt1tU`0sM9ujeWYHz8Z~W!M!JRY7QlZtcEq6_* zbd}_JQo43^;>xUu2Lm5(` zb}}4KER2eNAhF$fu+nsmr^rAwB41%o#~&S4 z*xRcWa=Ipnu{V8@BBxK9hJNaP4zJMnF%N>LB50i|KPlMVhyu--?ewaMd{Ewl&>A3_ z*{+Me6)Xk;bI>GuHrfpB*Zd=tI_M{0tK=U}Yr;Q~9+Lg;$o)++{FmqaG1~BN!Fab| zSL^!-EHit1rdAIO)qa9(k5IARJ7OvQC~5m$WxnL6%KV8rT-^V|+|s5v4cp4QO0qfQ zB&)1e3bmRRgXnz}&Z-uON7A)IHT-et(JWbkqPn{!+qpfx=xRA^V=k_n zK~jo`BzW~vX~L2=iYd&dO==Q`sM-4)Y9V}Q-XoZ_z5&lsZ6H&KC?$rgLvdbzi~|yW z3C@J<^E7g$TTr=@pvpTbR5!1OH$f^?xSLk2>2A24!oFrO@t5_YdsaWr*GqkRtqo#FC5?m4&DAAtvywG9j zsE}(Tp($Ac(;k__GyM3}Y8yC{tXv#<(6T>~D$gHMVl)>ia%a5I$-`S4mEalsAUc=P z5ZmG1QpqTIQv5*fGfk+5ps`$=+5%xP2~^~eig_aqM~*9hkD1i*91$vdxR!ijhtgKi z4cE|@l+W|XQh65xfc8PTvaZ1CR8*Ld&=*k}qki_KVB9GgvHhk|W$$QTurivt-)PJm zg6=u1AzwsP1`*&Y6ckwxbCje7C+2?t&~((eyM}7izDB|JUw-lju>1?O|Gn1xO$P3) z4E8UxKGgB>oV1sPAfl5xMAy)3AlH6lDFb;Y=H?3YyeFwZ{c6fwmeo`-vI^F!?q1v) zzU8d>as0VBh?cuER<#LKxS2JHG7!wFuJXjqte$_*B*|(|zX;6l+*cD=!Q)Xh=QXnA zjg#0LBu?VJW-kYOB{$)DrjJJsV-O?s@7)iHB_z21C`oX=kZN{vkmi4?ge-m7!z8*S zdMB0?W%H?hb0h+hfgtze((klia*!9oEY3P@q*BT^6vBVPY{!o+)5tZ4Z5nI9PclnB zKr-E(8ZrsLo`3!s)LA-#2*|%Am+*TWxfAI)IU5HWs`4lg7CbKdJ$m+M*^4s8e@Eqi z#MYz3i{WY|p_fdFyppbDI3V6#LmWoxcLzeztF7o0@%YD@@IjS>|_;)=iwFcj$=pX%A5pD-C-*8I@>apWX~24w?xL?upVdx72| zmS#u6NKQmD;~+VP{6L1j(7qU9@EVuA{Sr>G6!}qi8N6G5KJ^XGZBjsxVk_BblaZgi z0l*b}O6Kg6tX~PMvNPdnWE+h!4;`hWK4@fX_iq{<`6WJKSAh;`xZUgdu@hq-`8?F6 zw()CLEiTGS2!H*~*{JTsk%R(`G!d@!R4)!N{U^Tp(nB-e&2~$1zw=l1FVA05=qHV< zsNwdzJ;UVASdwvMQ&#ePpP&hjuf&$5GI)Wj#H;UQRCI_=(x^p;KVukQ?L#!XvEFPV zx-QYLz{E##l)xlzNG(54WG>0(J?})c>`lN_=a@zVBnDa}=Fmb}YWQ4U z=~%AY&?({^6&3XL9~aUhesszvpXOUk!Qk*!tJlc^eIGK6H`z-A7?$I9 zAvI0LQbG;g+{Y(xfn=$(7M#Yc9C}Lb^o=qknmZDzA_DzJqjanN8J95=mm55&+yb-j zbd_AO&8+<5X*NcO9F9RtE|2MG?>-=GoE15=BnMJZ-AW&#W@&&3CKoMNSp~Pax`?6g z=`x3s4E1d3Svb}d?s%0-g1D$^()^yXAn=8Pz_cSV!SxV$x^t-btz{1BV(mu~#8)g| z8=`E(Hq0I1?QG~?pyZucDTwf#MhO1|+bdsuIXaGE_-+B+Q>yK%3if!uNMvn$_vT)8 z@r@&6MciQK*sV5BH}TU-#z8L*!jea4MDWkAXk2k(|)%OUTu zb;YWyt?=eG3cB>amyzb_hYGs|SuW3X6gKlfL3Q>M~P zCJ}Dx1F^K`Th8Zh9(+Rxd&S_cCxoF-)BWeSZ_`||974W?0;_av(rQKiUn%l$t%u(% z>@R@)t$W?c3S&F$15vG+`9mKHc{utA^6|aw@BA3EIqSrT_YWL-S$eHw_cZF$kj2v& zO=ndzov$;ac!=p3jESEbRA9w^5+Itc{>Z?cq4X}7>WMM>h?7^zu#412X{H0A8Pyv1 zgY<-xhL|Sm2}M03`NnKLmlpc^ZoSs%T5rT%OJV-*X4Z?^LI&iW#}fOj?sWHL+W7hl z7gQ!Gssf+(3D{X-Hd+t{yJpyZ&wp6QHcFVuTu8kq&Pk2=Ahs2lLoU`V5wVq{4fYzK zBZX~DWCZG+Tg0ByS_Z{9c3oy>Pm1>ZuAQ?dy%a!m>Zm~gnuxm~bEbf<$`hYt6BQNf z172Q#!L`Efe@?^v10?^ZGXLfs{~C_wUP7Ys)Tp>LD9kv?lfLgS2y5xyf7%b z*ku)g%h22p$vb9 zQ?3%E9fx&Ghh>|<1E4SW(xTt2BRk&N4oa>qfqhP_kR2(~n>Wp_!}_4QVqU_4^yXCu zaHF#&uDRJC#oXxGW||4ExGv^JY=zX?2c^!MI)rMtPqdNm`6Bi?EHwaw2e0$u zdGM7VRmfr%8w8D6R(w^7@Yeq>KzuI=-l^SqLr46yi4Ex}UCtm9UvEJC+`yvQpr$FS z9H$kzR1@b-zrftQQtj1J_K|mFw=t%}`^x&QvsxECA2DWTXITZc!I5iPi;@~hE|6d< zlTdz~AQsAx5`+5l?ohprizu+zEsL1_bOANw1kfnboqmW!8Bk5k{&JmbY@BEu@rHX)B12WhX4HpEz|IQC4WZ0E=hehSpGYjA)Z|(NkPd0hi9SzG2I+|;hN}B6$ zZP(QaA41z_nAa&>6{-k7g|Ed9#g*U;*?tRkwtGZiA7Mj~-TWgxyRQ79ww0QW^@MqH zqUEGM-Tg|T?>^djCc{?SFH!dNu>Rc}Ye=HdV_gq}c$=HG5t{mSYuas{k=T8IvWphr z0p0J(9cs2clGv?y;QsU3{8wLdWF?xs?Y*^-j+F!7dRVGv(A`CT?Mn-JKviEVa$q z7rD<7RD>Tc+OY6Yq=MsxerA-clLf>0Sb4`*(ibw$aCI}WQuP-h`IC=7YrdO#-(bq8 zn)i)AHbip>wt$GJ^=&%f_gJnhz6{6@j?pU@+TnN2Y(}b}0#^E`nd`4MYo<#zURX&e zj0cosqrI^15Bl(s)#J47sXWU6UYjpDa>axa*niTZQ9k%}YWmQh zGLqS#b0Lqg4|C*9lsnNM+eUGdxy}(Xe8O7wURiLOJ?2)U3UhtU-rr8unk?8R+$uxW zy1j}ylz5UF5+ba9;Pr9W!Hv+?0Md_~&9 zbjoEqubB0*g3pVo-6748?V%Ofe#s=my#<=Gg$}(0JCi#+&DN5G=ZRQhIZ2j1r993` z#U=6Wr@~D_Q1nTr64Tfmic09}{M{h91jn*_<)##lDnvM3n>>7+F27KR>sU-T1kZiq zB8e*@N_KFd&cS^B-b0#-{$VA^VGTdbLDyQy>}tI0#QCkbUv;3Lke`x#TMO-TbW`+& zLjW~JvMrSt&AQ_I2jH*4^H_%bGh}heA6sykJg+lRL~0|wPJZ?mZqv`Gn+-(Mi=1R* zf=}W}K{7XgCvT`k{)QfP*XLRPP_tjJxtI-JQBNKnpMUY z*~;C83|_NAh!FFWRXKs+B&!;xE82lt1|#qN3y7k?&G$DHj+!0B4k^(gvG!zGH`2Q@ z^K1OOk6!)o2pfK`;BtdK1u{ZkumFuZi8k$qcPx%|n6@HP0Xt<{=&op%UZY8e4_ygd zVCAP|5|Cxu#)t1xCB3J)Y{sa5CDxm`k=OGZEH~Wb^u~d0ytNL2N=`&a;gmRh6H-Bj zjCY|9OCP=YWw8dg>F9dxoaI42SKs}SgKjvw;Z)-Dsd>bgxfS6`+=l&XR@e4 z5(_P|DJyU{L3Pc(tV@1Gb)v{YR5hMtbH!FM>I_M)^PezUpraTz@e+-v(5PKdqaeEbi*l`mOXdb8w=NNI% zeuAFfl`kqxT;2D4Mp{hF^^&fyK+LqQ)K*@=$x;GTz)hMkqlri_sV;Gn(+wXocOem* znkDsVdP{Na{|=TKLLH^|M*O!@C807+VOeMiMH&&qhcVR*2zk~XH_AN7Xj|FS`C*<> zYyM04;JR7r%btSX%^~i z;3orh=!pBB#9R7$)=<=)RpqVvt1ehyS5FjBbJv-$W*)bf=(HE*kx64$#ofvTgOrv zqnt^o>wQ5NGVpzr6;+M#Fz48NB92t%vlLXHmy6BgxEsyEya|$d(=Ij)2i`L%cb8))BCNwi%PnaXqHLxRU1Voz*377p| zo-E$5HS^l@V2*Z9TAVFcc89zsZ~Ik{WQA2e_R{nnuyA%XMmd=*@xzEYg?)E1*V3ty zkv*KjdA0qy$a7Y4_d4F-u3{|F#|+nXyp;mBGZtF*UsU zI{o0U=9}ntZ$sP0+x;h9Z;64hk?5gmXZ}ze=P#-*&XMBUDE6yu<$xt$Rmvq$&(djQ zPwYUQO~$_Q4tn@-2(Q*jCoaP1-J>o%F6G+qi3L}<6+gQVz{EFn;c9yQjXtsy$KPvC zo701=ApUM2MoD+A=*W`Xhw!E(GDi#2#J-p39PbRv=JG+@LvnxA4RO{px0!rEvM{!{6c z=|}G7!%z2K-kXa$WEjPrIdf5O@vqfu@hiuvo|)p@o!bs?6no};EdG6P+eO65AmPQR za_DV{La@=9SfSti$nxxG8#3SRiC3RbySV5i%hj^qN}|!w;1qV0@xR=kdABM4f#`c< z?GLwRU9O&Ntv>8w-H@<5OKlSXaq9z1(8mdUSC`jr5gxhXwsu(VCg$))JFzCm+s%673-%)=WmFWJ{YsXo;wehIkshZ&Zh9MKiFcNWZ69h%&`u+_zj+z;16h~M1r#^>ueeVoi? zVpjlSJVo0QMCEowuKALOb4xm}M1X3@rdTKO^1`uJp-I_D_uSSUDbY|EiEqwr=J`pE zf1G^Sh08fCKTPEsncVe?Buww-5@S2>EDWpbvJnb|*4`R*9P2$D47tk*lkZ*J&hrn$ zI_T63Ia~%F<}4a^U4buu=J)!nACrJbx-LjNtB&R2{-t3Y+5)$j&xx5SB&zQSk$bm_ z4O_<#zlV-)jJgfdDCcX~XkwIxs=T(G!-N)4Kt$0*l|`Z~7x-Xsu}26yOLJIpvA z@%^AciR#CxB{=W2vOTIgh-b+>YR~lCu@DOn%n)Idd75R&($yR+H-%#;{D5dA!9Z~tVkw7*Z`LIbT8^Kg9iub#yp zXZ<(P^>?-R*Cg9N-nS7JgeC%_LG=_B9?A|Xd4C4k7l2T*^kKB$XQhYL6>&bpm)#7G zc);KVA|8KSW2xW;r59RjFIkA6HAdbzF-0vpnIZ0NXjcL4O`@v_KaGN}#4%hiOP_<% zLf(CG=&y{fww$_vF>37HzE+`pxyWRIxZ%sZaV58XtM^6AiKNfOA;k=+rO;Xv&RdJ$ zy!TYgoM!!zz_bI#vA;Rl&n!t!RpAF{wN6A}>z~_?no}C_k~?k4_GP;OY9k}Kvl98Q z8fUqqoCdl`hjwoXxiXn45(kyHL~g(zr&g2GzcCl+7Ri$?N?c=%-zHU<9QYg0FZP)E zhH3?0?0GCF%-ksj-zLsD+VF?q=1&yL-Ed#-?kwutKMJimRB?;;xKk5X?yBIw68z;G zvYmt76*)sxE}e*SHSLd=LwAoJh}=Z-fWtW6ncv~Pn=xG1WhTq4VUEn}v%ysx(d#Kc zc2sT)wIP3x(e;XB1gF!HPXng~8swLtaEZ8EKHPt%)c$(ZLnnEbbBO zWDiWPZu?r&x3Qmnlr8CH;!_sKZwa^e@t0`pdZA~8H%snT32S-}nK%Gv2_Iii?*H&6 z^SsSL-DuV`tgHr=)LqE?@gCJbY?6cGn?}E*&?0FX6`uAeg>hB6ve^~UpuFaO`=ou< z4_qNYSIhbDn>s)n<#*jdX@O1CS#vIg>-4kaJeE$DRnNrN=^Z&QzDxs3I~$y|V43xZ zq;pdUd(up3{EQ!zOoG`%qe|WxMYvtTy;l~Sby&AUr}a&eDUdk+9Li+tQ7MwE^PkCK zkwfPDzYJbXZc3X!GTaHd{Z``-IUH~gN9ka=ah%rV)L~sTaQRJ54*4zRV!0i($5htJ z>jMgJE?#K{Bcj1=i}z3+?Kp?2Re$3diddhI7>={h{isR!W|X1Eae^R{DhU`d&^@tKj>PKAKzM{j3g!X{3bzR8M1+EV4*fCO{aaSf6OzY+lV1`YNEHQy8UHxpx&a5JKq z-^3z1F<->Z_8(h088A^j}<>)XCPurm*w)K5vxkA;Pl#0b|k2o_; zvh0!!W+`=?tTI830SqGfqy*-EUr`mlM@4?utZ{6j#}$^z$H!v zp!joo8eyr!#Mgn=3 zgA*JqVwZ~7BsjzVQY(GOL4c)~8q%>v?0KHsrkv{^4WoGi9@R27kI11NXM)$c>?s$# z&|_#@S5UV0;BR0rbZ?-MCjG8r^^x9c`Ml9xd3?g1w4Btp6*Y@Dijibhn6!@9YP@;j zKHj=dnyQ24=o|Y%n@^;J-;1Z3pFz8TIF~H7Jfy6=1Nt5=6crY%hG1NbK-`;6lAfUU z%ROQV)@vlQpqSNdF%YeRh|j3>JbpHd=O9(?D*HVi!3Eq>=h3QHsABi+M{9cDUygOSflEK#B_;(Tp! z3rFY96#6;&+OI6A+2f171(xj~v{VDppp(cv{EI4*`7xt&L7(ztGOS00?oWSsS^A>s zix381{8DO2iav5c!7+7mGLOyg#{Zss0StbCkzD`?i0esiV1}aVhj3LiM4D6!?EQH` zTHUD{1Ba{5$HY(-&tqp-6LkWO274Ch10MH!K4rIOq?}>K?iZ}i-$KRA+ncdOr<%)| za_V}O-);UNg|OCdQ=R3R14)di0SAm7ckRM<-af8B$dZfbp;q}0vkpUO$BE5R^WP@P zxoq-h<$IG5L6h(MA+aHE1>=-9EaE;bX-BQMku77PZg`l8d_(Z)L`RRUvly7-*~QHv zyQ`E7nj=At?{eQCz@d0N68i|5V5dAhK;~Iv&v6+s&3fYTl3(HE)=$4w6x)RY!fS7HZ;K>kq>J;Sy1B$ zIg|0Y>RwUvWsKmxI&Tn!U4o&Wb&@e-#J(C#6)R{rt$>muyB;og%sy$)90G6A_jcRN zzRqr`C?G~P(K(QL*R_LqCjHo6KtrWE<>R- zRS$B{mS6m>k%IF8M)@=QCI0;L1bDX%t*z$Z^rUgJ&LV06ydox?=&eat!{Tb7q$tIX zhg=V~p3e=N6zEqoVjH%P6GHq@zI!q%2fb5I#LwE4P=95x@+Q;Op}}Cl5SXpO`1OTgXsENz=eGFv4*n+Y2@}qx*95=!X&*{K}f3tD~&ZX z>N(mWO6t#|{eLKX@2Dofu3L16P^1PBqzR!)5d=Z$B{Tt1KtP&Oq)Qj1w;ba-MCt!2iF|bJM;4cAb7e|7Yh@ZG2Xn%1 zWEFH&G^bKkg$nQUw2GT{snfl1srl@=^dFiW%)_!y?1!1$6_geM6Um$GqF2xQd1^uf z*78c#SHA?mrgP^B^Vufms<7q&1li(z#`{`8`bu=N8G;-yQuJMMs22-W^R$ zYAC?#9aDa&KLlCoy5HjrzHlmdsAjrimZyl`qpyulndQ2gT-&(wOCNgeD;1jb9yLhz z_lME4kJSAa}>^}&ft0pxzlO~wld{Q#I z!Sws;kLv=Da55{D7Kd9Lp-PxIqNE2ZZ+E{PdpSiJzeQ;mR&vei#m|vAn@P1tlVeb$HP}`}R`B2ijwwT35IRVjU)JA~uo{j14{fiv^CrN)wav{rxm%ni~t&q#{ ziqM06@MUb&ZFX0xkYnskTOZgXbhrgkp`&KD(eJ}GnT>f43P@uU+P`*+aG+ztQ6$if zWw6TJ8fACYp7#0tTK7xSv#Beg3SXRYVuo<{BdN5tPrad}kFG7esA8#XAImLF$aeMA zT^imkclgwBGsX11QZCI_u7ZK>)5lu2cbmR8>yn%eXG}m^J574Ql{=gyMGreTUM&Sg zUl<>5N=SF}*dHIC*||>pj@TE5-&a?^5qEC|SI#+@0jL~U z?yG6VlEmqX#9>2MLk6B7cyB-KrFnm>8+F}m`|ZbC%QHGYaD=3xxGFU2_}gXEh1XCL zh&Pa1%q_n(`Or6`eD9NpYSE7D+iqVyxiAq{d=xtZ9aGIhaw>z{d^3g;1mDxe?}7vW zzKz-FPoK^nyWr;QI7my05>YfEbV<=Vz6h$+wHC~kPir?@@dza#!ld1be;fFPwby-%Jjfc$eqfb^c?Wa{A$7cXb^wW0kd%5ZhFkLuk#Tt zTj75COzDC>ohYJI39u8R18`;2zmF=!DePUC;s2JdxWT7AIvQoxccg}jFS6RWjm$ic zksol2abDtG?m8BVD77!dPw_s~j-eqSXP??7aZbTfgBMoBb5^Q~y69FMB( z0&@g%H|7q&tsAZj>*!PL4iBdV-OU55+X{m8t~y*5{nOWs|MX&tUowH@;0w6(?&S{O zpr8t%a#fpsHZHjY&oRlCfMk7du51>Aj9rO(`vuo;k3)Q8|Fm@v!TdrciGF6PBSJSB z-)EiOJIdcNstCCBwdqD9L#8E+KA);NW-i1;QE$2`*pR84L@HS^*CF4?RZh{ghAdiV znx{+LTz6B*J2@iIG}>Q_j#T;+6;-lz7@QgS^rgbX>w-za7qSP%qowoeEM(qGryCy) z^)dv}m1f<|A-k1c`DzzJ72YM#>90?Oad;@xT#<18R#T#sFB%Gm%9EvI86-&z!Vv_` zp&H7SgaQ+bmqhVTKhNNH&Zg*Pl=?~w@BCC)dZ{>kq)m4`82kN!j~D7tic0>$iBTv6 zpNshZ$QR)vBd#|HU+aSJOF?28@`4!sd`I_;f3`XRqX^sfCj+u2y$<}Ou({9NAcB-h zr?ZhT2H~r03$FVXy9#JC6Qa)&q3953LFxUBJo(1=l(1Hf6K5A@aeCo{WsPcSKY3ZV{fg_cCqfyfv_G@D?uJ`Y!6Wzj}S~ zd*UQyHq-3i^k8RNt+ryZt#;wj%&pghFC5goY3%d#hzZYbIX=9XoFZMTr!m!{T;B5k~yFZDa*eC>IF zpE6s35~^vF>Ae@>PToZ0)xEDoUs(>^cjny{qT{FLKYA(6cr25cp9NB^XDlbj`lt9r zrPdvDo0i>P-0N8$Q_7w}G5Nj_lGybi)2tjoa*y|58KyTvxs>E}nf4WJq9YV-q9W$` zFF(cR$zQ%5I{V2JuXT>zz3|HmD6$y4DRHjYjR{!aI(9cTPTMEQjk?&-MxG^4XIbg< zy)S{O77dlf+wikz{0#4)e#XG3ro+V=N6?(bLh^$WtO*)g7WO!KQs3us7qhjV3q%fH z2YKo**y}DkK#XJti=XkE<0H9xqw$}c&-?6#kK`WJY?3U%wwLGLRdulTVCPVm2} z3DH-Rv(`OCE%~&4odg5Bw`k3JmgSM91ZdGI_cgo;0_jY<(=xjuw%>ede}MIVxoqy; z&B|&@EBv6(k&HkppVO^%h$odx^Rk!NoiolG-;}w>66xN*I6HY;`9&3hX6Zm2!U3r;PNL&$eMi%? z8Cl}EJ-HSBT=e@^9^BZqJKbj}-D9{&`5IWr^*;pG9TAawUQ!4&4{ye6#D(003c?tI z<{$6>wQ3aizR^wH)R3#$`>^k&i~nwYr$X-B*6ynOm;0XgfA#dG7;E4K2<{`E8Ng9K zZ1HVyv_GkL2C1bxe!<=9bI-5cPku2I0U|V34y>FpUg{E~CI7W=wrLOy@dj(p!uel3 zBS)b3SdxQNU!7-@(i0X;+;JU~LR8J-ci}K6B7C{92Kdd-R6wZGm7X*z(JVgjr(ATT zY2uSj_fCz*#q9&O7u_XwO9a!g9~=5ZcVA67+ud>=5K>(4(ye4$zUA}E$8VK)sI(nu zSnDIxPH*l`$V8QSr`?jB*fQwm*`$rua}#I9t25MFm6rNQ^6HPg8Trol_BR)oNleQ_ zlpv20`xa=-?D)^ZO$xrxTPQODKb;)A^w}yQ;Cwtszy+)y0gZn!p3cIGe`Sn)mtdNx zrp=p>`5?RG{cViMt@cPRsP3ik0ltiH(;Yl?=~|Ok^n3A_ymiy?+rnPsn4boW2%!5n zE~{xNCDuu(1l&WfQqeOAER1PQIt1}<3{@sSx#5p~Su5E2W2rDD*jll+L3@-vaW>%b z`jO?ryB6a#axQ5)G?zL-X!Zg(1#=FgfPc#he^m8FRU@0d5=+NfN=d`5FFBLc&!w;R zR?ajLo$N83#fr>&M;JCbQ3X-k}UJacS1)nz6|n=YNKd~^SN(t;Q%x=lWlSU{piLgA` zBDUgl?^o(RjFP=yrp9S5oJ&*+TP`BBfNCC!W2t^me zJJkrj)C?hFrMNNTe1m>LxBNzpI6d8sUuZ-LRif9$m;$HH9^5`# zt3$9@_4}L1cp`pOx)@(X`C#f!2x`qAVJ_P)3EG5{==CJ9^dmU^E(YEV!)t z+_j%%;gLn4NAKjik^sD0C2GM*7q8`6B#ha|;FFKzZlx#7c!4BHI+-IFv4Swj>+B&d zP|gMZ$tYZVh>rexvMwDu$q z#M2|5JPjibG=~Yeo${#-?yi)yMa%duZ?ULOmaDn+EV{F3g%AfiSJiS;m3eb^rR^nG+hp3Z=hDO>m|F6I=0bL zIG8dTY18yHPlA)RI?fmw>;b4->oPT8o2K}(Gw0Jjl`HQoKCORf$=P1|FneN7x7hGu z{i!b9ab6sj9cE%P%GRAFa~u4P#vg#|w|o-_FBP4@RD7kVEH(Z5^q_V0={2xc zIz>yB&<$rcce+kh@56-$@X(UrP?A!H0YWx-1~?|8x>wMA?{lZMC_$QVCll!K*@l;b z_jk^Y`Ue*}ciPk>-507fj3&#;TzcZ&nIYh~n}Hw|1!T%NDCeie34okC{krzJ`!+V& zIi$h!Oe6D8)Q<95iQ@W7Tuo<><8<51*)fMXMqc}(f2O-JU-cT)|Ag4lBe~Z%8eXM{ z@2MZQCcCqRAiI_*ipjb*o#X{4Q{QJ;aJ}vMgc9D)@KFI{vjH|&z|xBGN)kSb35s8O zeek7G%D;6zV+g~Ue!iHkQQqYqn+3+Ypzf>m$u;0NfrD=P6~Ysr(S-Q)w*&YO{1uLa z{`YYWnv{PV1-1uN%`;aCTQvGwa!K;WMAWnZ)%te)AlnJFY8o>-uE4x%RnIb<;H^adbUu7S8dAj(%AGN?(jrV`@&mC`vw7xY4S0DppE=3Z>-_jNnGN{EGc@e<}BCru=gfG z%pQ$8OX98cq4Mbh$Ixf+hSV)DVvxLV%PFy{AsVW@Yb$-a&$sxlNvfAjQscGudfMj+ z-W(F2cE9Zb5eC3b?WM4G1Emi_lR*b4cEnkfN76fi^-)UjNgJl&MhZ7EOn{~#Q%p)s zYO#`<916AO$8eKbHkGoBq(E5`o@JQH_~r!h($;oy?(DSp{S^w;L{5L%mfcFzn$)y& zJiMODbljDIzqm6K7v&Si5Gbb=l5Sl4ywhs%wSJR(K*A0X^}jsl$JCEJkNo|cyGUN& z{uYU#y<6FiKj%%TI~%$oP55YHBZ!;ADMUo`mL&C{yEw*RnB~i93{r%MTV^gGesgGt zMo8U!wgGRwts?j(4O>K22*fUuZEyfRa6^D7!&tma@t`057&={W( z+fM34yr<_Zd;O;+^f(OdyW)6oZ&!R6h9U9Elz##;hrLYidLe$A`Uln_AMP$v zkmC+te{U1Wa~N3#b+un&N(qZiLO5B8!5IV_0{GwJqWUc#Ks-hygzRg&+paxXfAcyk zs=oe?Wv8O`kNOrbYonae&@!t5Xwz5q*$7lU@MY|_bG6hswA8(H-6@yDyAQ4;v#B0> zu-wPZQ76zQK$qSohZ;I(IcAL)sBw)PCHm-x_mZOf%{P?f$+heS!Us~{Xy3_XGxW9@ zPruy7-CfO2&v8rd34VWVbhJ|< z&c5WXyF7xb_SkA57pGu19Ay>6D)^MPTzq^dteGP)L6!IdnN>J>#33FMe=!IB?h-Ss^~T#%YkEj znmBJZw85X(ang=EZ)sNUUFw<3M@98r!5W))891`vwc?QQI+9*&IGU;O7X&IwsoPZO z;XF5~#z`6(zVDQBQj(xQRVrlaXzp31r#Gpf!*6Eu{r%(*13!(KpL3My?agpy7TfZ^ zZE~f;ei&luzUBWAHkhX*_%35M^z(=Z^J;}O?rf5)FO}y%GvI%FHYX05q%Z01dt&A85~Jd*g1#;l2NM2-d)%jvtzhcREpY4T4OyrRURZvGVGf zZ0cCo5SyI(i_4z%lToA`VA>+CN4}FB4Uyg*JLqGoqzdu-c%D%nW2{JbC zo#E`*XqgkV@8tS7H>;Ww(wGg>)w;;IG zapGT|2`GzwSHHdq(FXUa;%5WiZ7jhCH^Mt{n(Gy#%_~>z=}5h9mP@M+V7Bi>bK+bh zGr<36y|KpM?yUM6472o8rVlnK-VBs4lHeu`$a8=_8X*Tp#*RQTElTp@)NOd~CC0cJ3mjG=(d_( z7^L%ppW6W{G`EaQw*0pdi|PY1Uzz;QZ)FyXY)F9t<&uF{hnc+0?ngV*E(qm{XGjQVsLqwT11M zA#qUd(_jQM!a3I2RpQ`~lo#Buz(vs@z~uzN0UkP$dLm|{4Rd!@9O}I$a7<(n=!WPU z(IGa72U|hib)0&8l{FL0s)+>1V{rwqKeHp3VcAjK*o>R}qL2bX*SD!`Q;TGY;;jS^Pu`Le`%e_dT{#4CYHaZ3_Gw-&6t zWe_&O{!XN<8`G_4(ULA#9%1Q*{j-Q^2Fix4)L61knc4GSTo>BKHnM2d?YgW+hW;xJ zzWe0Q(g)KJqIiVE43!FH60{Q&AcmsRGK8$`LCUY|xbIxEE^!RfGl&UAL{nZZsHX5| zkLoPl)DltSGhT0rhd8Puvp-3Y>9+U z4t?LftAR7uJ3bH-k(V1<;>N4$_);!@Qq)Dfo?_>xj6UFk&yI!W!kZHj7b?oe0GEZq zIn_?1+WacSiE2Ung=o#xpFq*VE4b*cs1bVMeyW$2Z7N;+uj#*eH9is&+2#it*Zh$> z6C2-VuN<=mN%)YfCW;8{h{$N%D@*JfTZy#mJd_`yuSb5kgFPzCXci0nSCYwr&k_C- zp$7}wiTJ3HuOJ7~k(Bdda8cb(Yd_w%C=Y&=y@a&4T>~o;N${Ez`4fg|`U;y1T|fPW z56KG#99v)BxerN&Cb+Kddb(XMa4!z-IA`Wcyiqhq$X>HMr%tB06k;#qB6&V;&}`(h zDz>=)Vc^cj4;m!$r}KXCy0uZC(luhnk0j>=$Xa6k#5>f4VIw7Bs#pU3G|~43A~kI8 zsn+sozNlL<8^aJWx%zy*i;F|ARctY>V(yn)CfV)dp7;jx^=;LTJAqPwEy|p z+9@fzHc-erW4GbzFs!(*ZA4`K@?qt?BL;@C6MrR`SU{%z-!m z_*^B6CsA+L;q61Koo9zb<#yZy2THFX+SUW1Q#{R3Vz;Mh*po86(AJdYr>tF>PW?vt z==4|hoH0J?a?j7D?0BMx#HZ6v7>juL@ZWnhs2Kc(dH>(|FQkyQ?-6`%?$f<*4bcqW zP!%DTMz44d)#@RQdd8g{$lb+lUeCA3u_N_3z7WET5kwux8bMu=CAg3hVjM`qtTsZ8{_=*88$LvElS| zuk#zy-&#iD3Z=-AVXaS?uiGir?gRsWsf^SS?T^9OkVRbwb6d)bIQ^3y z&qp#eMP<;MW0hP>Mw=j~nmaw*w*XdLg$3jxSS&Zt=7f2bMc^Bo%P0JuQ;0Pi{Bca! zZ1#JeAgy;l*ap!r34gbh>T%mKnW0S*O8czCS3%yhCdG$ep2mFz%7t!KvV^5TnK4V8 z(CJUB?5B+J9wi>gZ^Tt(aj&4pb0S~ko)GdJeFv;V$CHm?J6y ztjfd)ElYntR0-OC8NAyboNzN{Ntg2o3355KV&Y4`^X7KLZVT@M>jSw`1IgH4OLZoq z_k!D`2YNQ72|B;NMcjoc8;D_D;&E9YS#q*VMiMmFPI_g`4F_s{eaNst_+d?i^p!a* zMq|P5VZO^V4L^tj)5O78S0Mt;)nT1uMgOXq9d#u>kd9klV3e1gA(*r;EZ-nfDm^qx z6to9uCDumcSpGA1|L120v(cYPd}5Dn$)qfpyjEV6G3AMgt_kJTd;d6@DsUiqYmd|W z7{3uU*?fd5os?Q1#mdn=-24M_c8g`hmNqLN2Hgr>XK#l3p|7YR8pMl*qDUEZZ=dXv zSfA{G>^XGri_-q#Dr8gFQB8Sh%agSXIP^L@D?Ssw! zWKZfLe@Xay@+E*H(EDDzpXpWe56y!A0QL$yBGp?h!i%CT&z>JXL^nWn>OKT@)?p@# zfyiP46d$A&`z2P9@{G;*!JCt1KTk`7V^qlfyIkX+W^i++E(w+#4m6u6Y<4T@7<^(~ z=^AyoB;Vnn6WD?ItO*AolT6(p9A-*!C4xAWmxnUv)Z^WQA&r`#nib+GD_0O^8LQ!r zFDRRCi9HP9m?|3_r2`#sQuH+T0>q@o zvslbA&`*);gLdj#{fyzRHhWdGU;*n>&5&H>&_JjK<&)+38)b4|Z%7{p^y;X9m%BxZ zoY3lAx_yCIj++o`#WPXhCx{Be$;pHW)WY7kXsDk$<tT+ncXF`TR14wLj zSxu51^zsIxMz2oQa9%!(u}H2W?VjB%@FGIdEl%J|XRV*|Pb>v;K|Ad}$SG8G+9CX2sNcSG!U;|eZp@j4>DD7 zm@UvSa$Z989Vj^*e5mcLzznbR4b@!z@f2DR(hB4pV%>t9z=?gghNQJY$P>yyQmPo^b~p=c3fNs53|N z{65ar=ps#yB!2|Iw!Gli9HZzpI+^^``C$*4?^l$T)}zc1rM$qori%(lqM#Wccd;TL z*8(pffh4zL(+9IgF}_U`eeoFI&www%U?Zp#&WsMZQYrn7g76`u!xM5(Z+^&S_VBk@ zAm%Q9Rp)kjY$B%GROvBTv_B}9Ju&opavOOXEK+y@q?+D#ry8;jlIK_w`X%9G94BSS#>OU@Cxn(4s*d*hWtZa0#xqq^843c240{}aZH@}sp`G-x~rcTrp3^LSjb%W z#?4bG$76to0(1#qsNi7!8mlS@ox+WLS#1LOg`iKNn0aOt(5hL#NzdpJNTBdHGB5Cv zewA~F66qz?vK0iD>94zw9!P&81643Q^y*Dq6g~1(Llf_s?jO7Ge)p9i9ZtlW2(T=2 zK5W#1#q8b1NAI$uX~Bs^(-sV4)Ggts?3THC)nEMUA!C7JLiWY=F59#gqvJJX>_ER? zCjG}erK?S?FB-5L5LZ5b{cL?dTUm3SoxQ|5o*hix!9_cuU@=CJ7;nx2-rQhGf?^8c zH)nu{4kAFYK#|-ejdxs&gXw_Zwz+~HG%qrfmKCX%uSKU{y!~&q-G7Kn|NXZk2NVEN zukE+jFrbSF`a{<5Nt`#v;Pe*Z5o|XP_b;oX{v~hBym>5Ap{jOi>#8L9WJ>>@P*%!0 zrvuIdUKd5v@Kn1;o^0M3k5$^V)nUE*tC9>!6|E{2gaTF1Eme$$zF4uye-a9e;JYO} zWNFC%``OhZiAuY@_F4${tqo_x@8e*8HufCPn!~mY#R#3|V9b;8A)~(rW;$x4f3m8+ zh3?B7IW*qmFACt!^8+Z3F^MD$<(QHc#JfAdB>{+@3u4EAD`YE;|w^0`}$j$`f z{$*YHCt@>XbTQn52^{fRV_?h@2ae4!jUqBME>vJPU;@svsX zpZ9=re#b)3)0l_%fgbefbU5*vmh+pM(3`e&7 zte)L3`5EKQKP29m2gB={xq<{Uvm9J!2#Mc3ZAY_Is)jQMRcl%60s3y z%%y-lJ@_qNbCNccN$<3*6+RmB&kbB*NBz$@```bNDAN8T@@3wj*ABrgM0c+xr-h`+M^0HL%~#CRcO>hA?qw{SjR zyY)l%KKOE1+#sV`lM^aDkYdga(qvMRST)bticq^WPG2>B-$fcZ5q}K0%(5xGHXm*hGv zB*(9}6LCZ4i$)sQT(k<@q!m&~`~S?p_+{xODrX85_CV;IJQAv;o(6D}s#8WR8V4hP z4SYHtM25f4K7RUIhw~5OG~(jK$$EV(9h>ss6W0IvmA~oi+pP6*UmO4MH2yF$3425P zJL7SNXShV5Gdm|Nsgd>+yW5c^vjW+)1%(e7FNnv}amWkd32C@ol6b{${~yO*Ql;IP z9hWjC_z?#fQfSTX+$uka9}g-);SG`a)?^^S?kZ;Y6F>M>{M32DuLv%e65ft%Zg+*xP3$n*Til(Ei!X)dk1iq_vfe+s=KTNnT9jk=iY@9 z1SD|HM^bJ4f%sV-O~?qQ3hZ{|oF||=5@nDIjzlgP7rjun{&+-Z{WzuZOy?pR3#K!h zR`LHmp#N_k8;mLe$sL=$A|~I44TMHphG!83-U7B%;Fv(DDox;_lX<|8%w+Ha*wrS$ z1|{>ksyu&d#fXEah0mZ4k^uxs48vlSV9c|)$0T^ocS*tcjb?+?*R+7?f&g{kkzjC} zP=$-$D!dOFXibP7r^i8wU4d+E9P~IQYXEMN2$`lDe*@awvmIt-b(qryAK&cUx0xyI zUbamAuTkiVP6p(crnP2-9d}G(o|o0}Wlv8Nal?^6Uj8vwoo!a4=YVOfb^CLb9Ba~; zYsH>&qu;5>djJy4!QLhLWoDK(pW$@STm1fsr8LfG5z)U=Uy7R{B2x^suLabZ>*AW- z$L+*n4uN(v15|zGXY0VA6O{l0Efr!5S)T{B0PnBBndyD-DtZSlYS`DM%6@bht)XX=#+#-nl6AXKryt^`Z2 zTA_e^a6LuFcoGnyT#YdOEsqr30RlYo$h^HOe^Z>G8=k2_I$zh0qG%63Jz){4GQNab zxqmiB4z2@YBXswXny(TQaL`en+8(6=4xNcr7qX^+mj2A`0&=6}d|kMo68oN2X)<_< zqG7PRou!h4fk4RmUguy9g!{9We^>N+T)FS)^ejep9ExmT=41kN7$itn4aqatuYZ`;6}LI``5- ztt5L7j=HsBg8O|@=pEL@O;&F-Z_FrvS3?ft%ZxWe@YanX~I!Qw7G4h9mV zZsJ3bpiii`rcWqJ{ts|sGyxt@>%iDoIL3vY6#*n^+cUB-;P?^`J^UsWl9nRI5##Y# zY8;F~2oy>AEaY8ZlDi`w55+*YT&rAMK$#m>UWGo=U0>{LDHzzuyn7wI($t>iO?4P+XF#z-Te2A@8^z88uZzYFU^wGSR z#M(MC9Is}$W;W3Zn>TUHh%f}I8={@#Q;~SfjM8~59FZ=Ws|GHtfrZ6ewk?M%bb5WbN8;5u}CWD0xxxU4xrzk*yp zaj6?K+(kAbHeY4@$}*V5P{bzwTY<(~&qlU#X)R=xt=N<(03yjM3bNW?R|bg>3<=g- znT3$8G0uub)h@>4ef(rcA5;C5=ldHCu^Ps}r2C*r!!19piOFk%S$u;Gk{~0xM+h@^^u5(_Z zl<=SD-Th%ZQ2H&ckw!mpHCSP}c1L#O4HqO~tjL$+qCWEioS5DT=7h%*G+jAKRzf=c zN+T9ELe{ROajtI1bE<<8F&S&VoVC;V9M^aosST|5-{_e+iIa9DR6kY8b$h1KZ>i1@ zKbcz<7IMT@b$Y-6B!0q7VsX*VyU6(A?hwC*ej+-XZ<8d$0i6@^JN)vtl;1|DeD?Ze z0{)t`24{URVV;b*=zlqIJ;ECH<#Tqn7dSC*q-2Yh?GB4&vxMDkb&|dLe=PK48uR^v z+|M5VaX*Kw=TJvBKV}TkhWz(S6#F5C;;-dg=SE%;Jgp`kN?7fWr~#h6i!-sovLr5D zd@2@Q(lwkgowp`CAr;RFr)_UCQl8BQ3p>qee|`m2*?J3NoM_6X>Tebzp{7 z3L9FU$xDY=@*-=Wty3+x#Eknae$()HGn!IN6+N0UCYM;ILJfI@pC7HuR<3yOReIiD z=~0IA?lTA7yq zKT{0<%@McE>~zNR@>~=f9k|m(_H+G-GpBZ`*+khn0a{kSpu5?9BS0|8@WcJMDt?dbJ%Ux15cJ~HqJU7BX7-m%M5tSfFxR(V7mC?M}YVb;mXSmgIO3j^c-Dqo^)-GYz*jJqB|Jq$A%t(Mk|e z?F|Fs+8fM4lbmCiSA{#3=Y=nnHxq8_xDX_KpPPi!{ZTri=ixNSSbU4Qsd7?wOa9r8 znXqgI;iXW=Gk*L4J1ypdHD=H%5psFu?K_j4 z5eZE?6NzTj?_P(UKeCNqLG?r&%oHr%Y$8)Ga4}&~X=*hME{ow3$;_{#_uOu0al1U% z&&f~B$0l{aRj$>ovO{ftI2{s14TZe|& z7-yW?dcoCFU$x+IHO1d zMy%G-LIvxDI)4h%-LAqj2(NnBghTC+KA}}ERZPP(Cfq@^da(S}ax%=iB6=*v76sG*2a_@gJN&OdN zXu*~e#0gwNM&!l2uaD((Eq)CxgxB|*)utU&y5oP=K7AVSw&y@<$D*)7Ijrn%;TT~U z-%ABy?zX9gpTzb8b%$R>YFP3qr@b?lO8Q4mDA?%kxD3a%X(i4W;6FbxxVt%RZ8Jr) z2h7K>H)HCfUR0(CH!*S5O_$Ar6^7$i_BK%ecrSX<&1-k?2g@VRHvRYW!tB;dk)0{q zPsZ|Sk(rHb;f#_aVNdHlC~AC8O0y#E4Df3t!D$oO@%QZLlIakem?9yt$hmjG+U?-S zw-%=^BWL7s!d>a9L|4k!~HCE6b4AM$4)W5mWxP)bOXws??}%Ag_w$Ul+%`xSB}CtkJ>8vF4TmujDhIgGfDZz{k3-d1~~uZ+fkY0WYy zL7^rkl|gvnq4n=>7LI^${2*C_M*Kc^JHfkq&|yZ$Ion4r<)w z{cxWAf-2(%1>g&7pd$>cOD#}yk}vH^D0`FOp-^wQd6JlJf=u(FsX0EuJ0NuLW)a1C zST&Q2(|j6OQNm>AgZ`K6>eupjC@c7>;cFT|^g#8!{cy zYb+94piCR}`mLB%sx}ZdgrqckVy>#KOnf_+#Yz0C+u=I#ssx)>%s{9u0ptu z3?4=+b&iu5xRS3th8vUMs3xi%3=G&Dn9x1cGvI>`I=8n9ImrK3x(M#Oa%OC9*v-yf z#QJvH{hVwu5HY(19}Kqk^g@X%-1TvWPC_X{uoo^xq<7EFwe(LMvGn#k@>fh=>yXN< z#8zt8fDq)LipAr-#49zqV6K$(qit=Y6RIm&k<{&7Xcc37(NU=ElbbINc&0hBVco%v zWU+YY5=+6a@aE1C>G)g3=%-Ns5*kmKn9a{{PI$+)YjD^s8*#zN?%&rYv0zc;9c!ti z#8o)x?d;q^3pck(tKchgZ86kX9a-X+>v$q(#5+;HkJmXRx#gjA(QBq5xAR^b`g0L; z#gRVwm__3$uE}}zt;6U4X(WVff>2BF{|?3f$aU8Wu;n;Wd)OHC;v$*>iVGdingODR zPWr?_9IFV_e3vvrAv4Mo&md0lFttL(Y&N8IK`H&U&bO1MD#5Q?jvAf#TUL-qQySJs z?A{gl`?a|J6$8O3f+T9e^C|}i2btI6kos_ph~NPeh_Bf@S444#T|;i?n0}Lc4BoFN zgK4_V4RMpZ<6Y4mOIcx|O+| zcwzjm@|4|EKXtM99pF^{k%H@r-OcK}kX=AafCKPYL1rE0PEt$geBD5H2+0ZgLQ9j+ zzV))Ptbtosk6Je|Kf@_8*XJqh?{ZCln$DjBJ+o7S?yTB_CG2|U&yDX8cju)GapYT$ zC|GNKx3=OcY_~0j4n>RomX+Du$}>(fDQ{fJ#yKXC4Ffx)ufKVnJ1CY8kz1?$+-9}* zj8L7-)4L!HMI6x_$6#+#(Tkk&Ss&cMj_TU&`(87somtynP>$XhTz^Lv03C#gVlt4P z*T8F5wH)UJDjNg~M{;>!?1Yq{xiWwNee8YHpNsKL?eVLnJu(1CAr0ciJ?fzW(;6 z_qzc9lUmTLRkCGl{?a5#Wxu}#-V2&NCbrHAMt0^i z28dyR=zH2pKY>Q#yh(Bq+)WX!wCQ~2hxLlDYny#2pT7z2PCDDkdHy< zqM%H5(IF$>Z`u1ZL(85@`y(oTI!~$8U|*6-GB)S@8Ly-Zxgh6)duO+(h-D{2Hfn09 z<8rt4YG}g2n9#Sew6?pQ3+)WCDZz9;D>AR4_Lp4b+}C3_9Xclw5?jA(eeDD7>j(N? zR|RjbyW1%)n6UGV1|cjN-)ggDkZ3X2+~*5J%w2W{SK3vF>tf%G!Z~}O4*K#bwccC7 z{T=~0@-&nZJZ@3;syP*(6CHX0;V^oCKd;WYDh!50{#td-#jaIMLQ8>#P`MQ4YtGO{ zNwo{Cc&9~?>Yx0HlVtvhdG-IuA^*iC=$F#AyBLocX-p8b?@An`R0A+ z&o4VGS$UF`b@tik{I;CE_p?IUcw>A2wDzj3GiX!ccEiSQXCd#-Q0l()DUG#OTATzYn$@sr_W*L8EPJ|bB_&@6yO>p9% z2(MJ_pfpJO*<(6aMgyf}b-bp0GNe)?fvg$LnVq{lwoM>Xr?UB`X#at6SeR~eV0*7$ zIF9}x??y}vys7m&r8#)X*DvqZ(2Av7AT4a*n*Nc{W7*XH zt(Vh8;q7}ulJg%@@qYSikDQVMh7D2keWH-VeCrfGd8x}HCO1Eau)I-<- zBYFhc!%c2F0AYwU3EEj1M&`E!4o2LC6D6M<48m7?UC4bL!=ZogD%o1nvMIbR&sDQi=6EAgt) z6`#;_FNh(PZE)R(4vb2PH#1F+m(plx+-VhHYF{ONs^ z;)w;ah1Au1&z#hwwSyX6GjXt0$j&vs)-T4Z_laM|v{k|xUAs=A5`%62bFpxld+-yO{b9W|^6VPJ zid~MdRtor)7DOkVe>xm^=UuU3j}?fVD_DX;5X6{yo&~Z_5NIu6xqbSRqizW}pMEej zv-OO|K~v&G`d;LyQ4{(w8;&`UG5SOL_wM%v19@-{1^Ns|b_3ZN3#&sPW~=Sz7)^Yx z&j=F`kk2{lZRmQy#BxE=Vi&JWb$$}qd! z0*Kr0*It^2?CJH8tSku@xs>sbbD|)&Dir)sg)2j;GWH|xI;#rKe|UVw;wB4 zQNgo}s#+fa$(Mjuj(u4VpTMRb%sZvOD_WI~!`BUOhrA6$sa5F33Qmj-7NN{#EA`-L z{h~#Q#z~0mXk-tKa~g7&p0UBTH4is`U#AhzQnsi-8Y55FKru%iLQiP=J(3}LN8h4F zY|>LS4>!SSS_{W{ZM=BMPIJU@z^e1P!sV@Y!fN>f2*Qe;%uMj`ca}@JY)j%C+6z#J z3FGqnPix#&j&YprcIJ4*4wGz#eh$|VQkm86bBONhq~!V3Az=IEvd=%Z)jmvA^2RzHxFA9xTE6TLk~ zR#f2hBRRgJdKkDj4A7XLiEWmihepfsv2V2_LyqxcPhYL}=6}+h{oQCo#YGwVG$h%a z;pg0#BT0Gu9CT2Yoe8|NY9DeXh3n)LB5vD&PX1tZ1XJ1&-dCgYJjth)ErhcQcf@WW znYJPhOM==t_r2Ff)seFv#TjhH7BaYT@Uy+v2CB;H60|WZU=EBm5f?wvZ_hlkjhM8z zHbqsJ+^G9xfydCHKTa5Riwy14q?!m}up3&0X=0Pk5xRu{8-?JrO>Eu$*i|u}xj0qt z-yRVJq+X*-cIc*=tRaQ;C(I#1?oVC$uR@+V1)@}FJqn8rg2Sq&1r0cn6~$@xwd7CXe6QLPIK-&sFRy^)wT*@x?Q!>~ zKBEvn>P$amvMjWcr1MTNen+pg5NpJaSRm&6{g(^ca8apLljss1%W|C#j+P#b7c8fn zs8rFzv-DX<;1*sX7A}`W!5PB2M+#X?b07BVW|WFdxruWNTOHgJRU{f6r-o#{7RnEr zPQg2W%iAzm`Y`}rQ;yX>tl11BQfAAp=kK6db+T(84x<%$*%a&jQUYXD=inlnfsv@Y zKAwNFFu_se&tXw{uGcv<>q|R;ej1qEIifA)%oHx?@o~0GDWawM?~GOjleoaeHe#3r zUFXgZ75K7JWa5BcUNQsdlB-YaMwvQ03LaZQA=b@T=jjRcmg;*SAPIMObIny=SO#mC`ycnpO z#_&F-wnJW2`eLxQo8h!-@SaUI)`(+zl+`o_pXEL=L%R>3%Ez8W6=u2@j6?>0YY!Qk z%(6LW_{OmN(+5wbHAF0ZX0!Z&ja(y13N}8NMyA1ZeBV4O$B(knodkSW=EK3 z68;6hes7FFp&dC}e*)X@FC6k!mWat{M0k1Ht=71aZmI>RrDlO$gUh~8()HBW&yH!H zbPd^3VKZBw=JJ1tQwH!-g%zi&TZC6g%RhcVlr|NZL7u{r9%psT({*tGe+C@3PcO!f z7!5zvFS4MR5s0&n%!Jol8_KUUGSQThNRGZ@q7|t^N#`3{WTF@Gd$ZMuZsC;Pq6S=+ z34YDdj5D&EUOgj;I_#8HZsFYR#-OTZZ*a>0Vf6DhN0A4)1tfQ1@?$VE@m!jrC49cCoiQfjt0(i%B>~<2M+!A)3v3)%?W5z%cKXT`%^mXn(esAsNkE^zNQkvA2L0w| z1^rvX)Y(s}{d7Z4Ms)h4qp{H+vcu7q{3>0m`zZRRpDo(h_l&B&ttwnfZ4uHi84>TB z6f&(1eD!{#nfp5lJsPD7uqoz=N2n6Vpiqr`)SfPuZbKn%Wi7q7h2Tte>dI%$+F(T^ zObchj(a!2AddN(W2{n*WLBMipj|O{w?B(71IyQKz zAU!-VPx^Q8tMJwBZ*?wlt1a#2$0L1vv6`UR^zGejWL2|tox#+&?5^gZkx{)XPlzrP z4m7L;N3l;GtMILazFz@#qNZqMXG2z0x;+V<2vi(Eu1j|r`_Vu~izRWT(XckkAXAsl zJ9fmtSq`(5mclKIWF9#MRUnh&?(82nBs&_gzyI)_0{<{iXPRK3*X&8peU5?2$i2(KSjb}AfmrAk>_d&bgaXg3LWGpYJNuyN-8{LHifiV1Qy}P2cvG#POA4xFb5~l>=_!Yc8)^2H%lr|J4@DIZ8 z0d)P1q%mn91O85-_*X|U4?HyT(=^^3Z^B(};)R{}%EGr`{>sqBq?Pe1F&fC|4p{R! zW13!o5-99TM`0m-V0lCM`_dp#sio}TJM{s~T|Wx`Pl+_)vx&eh8(jXn9BwA=R6hQ+ z3Xc^XX-=cpW+XL2kq8HLo9zl24wJRi>dbV6gOkOnk66RmyRyn?gZp+Wn{{BrvvWu8 z^X#&Hmvi1N)7nVpPO+}`A8MUZYDRu_@h!i;nYiAG+1MP1;o2ZgaeZ)UhJlyz!QoF7 z1Xn=vtz&BK7$aY4o&JP4ale4!cVlg^dRyyf!55$~XkA03NXPuN$zA2sSQ)&R>S>aF zYY(JC@zDW)kSr!D;O|5m$^-a2;miJLwgq^#g5G!n+Bm3hLM_Yp%Cu+gj;<9rBOa!_ z3Xq0P9N4<;;$pLP%J@4rP;1#>+&0-y87;mW0r|Zkx61JE*hmx;3v!rOJF{n5>v3;NKzDO|v*<=q80m!Gi&U_cla@ci^kahs{-8L4*0 zup*lfg+;x?*(0_F`%Wd!Z-d3jd!(%WM)un>OjUayhAL0Y-Ry7WP1>cjmdJ;aGlMrm z7}LwQu~P8zc%Flw0mI|p>ng^`pQ`3~jWnhIvYr0rvxCQSJ>MwhT4{SHBKSGsc3{rt zES_accZ?GndF;)G7687oAmDG(_{E(J=G>}wl2icAWLTMJytEKye#x^xw%+sO8I0w= zH4DQc-S91g))XZdY*9efRpkSVBes>>$(^bPG;av<%Y0+jSeb2MFjiHe7Im5qxI;U|LgJtx#VWgHkyAd6=~PThmu zsRdh%@3idgSod!Sf}~}(eQ!&4oTW;qf6zlLLgHEM#QQd8C=>CpxIV%nG;sY+Q4$Td z*^e#jD{c9?IiC^oOAN>-A??EW`B-vdj{nEB5i>hne3Y< z=#h58ed;0xH!8OAd}D$~*{E6Dk7%^apLJ_P*+@}Je}WX;>&n!v_f<;Ti~*1s05<96 z?>%wG18~0UZ%_wKk+Slph7SN!;u6cNa+HND416D^dR33q{~_!N8gNVPp{OO_?utW9R%DTp;VN!-{MphzdUaqZZLPGqoxKRvvssNlD}uBy4_pJ4PZ@CEy+`Q(V7#DJCu)bG>mLmqEvP_A|_vQZkl zHT;4{XMjjGmbbgaMeUMNN87WHHQ+WfxmjvUH0LJ@HY(sBz=0xBualUU`^<&V3sB3hXA}8-GEteI912>KM(yDkh=!@tb@|Ga3(kv$wE5n*B8* z3MWFroJjBM8~u&hw>#0}ZYL202PynKS7#{_&j=y| z{1c1+#`o{3SiYClM(-N;KWkViA*t5sP{`@{aEZ6s!XxAUGF)lDECe{EUz=~J7%V>p zqS2ZqWjP^vd7IFUa6&o4UyaH{-3SRi_DIUi&g@l9bvrZ+qfUB71hdld>p(T*j`zMq zq#;m#!7P&}*r;#hQ`UZnMWX#?5K-;p%vPl;aw3&z;t#UYp|o(@K*{eA0m;Y(D(7#l zEmLqr9TeH=;U}3Ma3f|e`2?Mg3e+>&@B+1v@8$rS(66>%t6qH%@?3d>r!gX2;V-LZ z0&AOUE`E~iO{=|=G0S7DMK0r>J%O3TAIcjO`kq8g&*hPgJ!f}e1^ateVYH}8-Rjx| zEnJTHkK-u>`JctiawU_8D;_6KMu9yc?T-Nm)N;Gtzm}G6=MeE;zA=0N6W@L4AZrrm zbq&OReZn&lo0@2eNYm|5QaHt=!xRKe!Pwa9jz9*Zs*JYAA$jVEEjGVNEefg6+ zYCKwV@ATR1PAu)k)UitGyQ^GOT2)dkkevLfw*CVa?YA_q_+NLQFZ&*_PwzCqT{QXi z+{e$stIaayFRI-b`mbl zf)y~bYhC5x^W`Y5z5NXs+Whs2UACJ^N`9tqYpbZ zS9MmaP1e|KmIF^9$G>Yj<}0h*goTC0iU&@Cm=$Z8|y+Aqw7nSaDXD_ zApkC!d@HBC0=!-ytpEp?FKvxgYIEIOE1BfP=VO!mDY!;UA#E07#J-HGT739KmKGe%Q?epqj2CbTl$Zi384%};yr-P!m2pMeCE0()AQ>Qw`^QRgGRo>) z9N~0r8VXM%6)ogjG@4#-Mh5~Di5YK7eMODlWzX=H@>bbVu90K3_`FJoY|rpmGa*Wa zf>d85rLsaECDgOsdP2B;085|UcTu2YYkSn1P~$=WY@K%XH`m_`;21{QGDS7{QJJ^$ z<%c|469r4=yy@l8P(D~tjpW=@j2?w4=}_fQ5d;35S`JvL_CBbqY0?=3mt)k--y$^`zs*dGq&!(nL68r}9RSAGl#{eN5b|1kFp+VKFi$S3tp z-;5_BBv0Q*=zi=6T24O2VnQO{gLE}-GM@A2fQIUrV3yK=lm<>ktX)|K%iLJvZ&TT> z0>Q7{SxEE4c&|)iAv?I{Y>RXmiK#rSWlUxfuu4pFkra01A8$zjrbjKkxi!9|5;Y$` z#l^0u-Tu%D86H&7@t`2l*3k=uKp*nr+#Ur{@_!P;7cG1SjFhT@AoGm+lQ7EDV>WHlYB7GCc#bo($Dl!to)%b zTCM^q*kEC#6YHm;}V~OyJOr| zKd$JOOE#(<$y7@&Ee^UDTFP=py{6WqdOF-VCs$HhfM4psp#$1K)Ao#3ki5Y9Z)Bq` z4B+ysxl^;>e}(3mt^WLx{YEgdiIyS{{bE9}+t73~KGiZMTJ}|8*EfRNo>R{4PQ1cH4}pe*%A70__`kgc1949zY<_4vb4qzCyJ`N;G;g%)I!M{3O$!S3E+@1VMA zQV9UMt+HvM=<`GuJr8uuiqC^9oNqO7j)K$$anPb?5Cr zxsiu&T!{TPmN8fFxu*2fr$r0RN6V%j!bOf;QOyD#Alw0}BN$RaD1rF0=P%yBIx;^# z3z_aefOkHxk~IC5daN0fpNzs&|76VuIcZ0dfOk~kGZHwtu{KwFg$RPK)3I%`qlRh_ttDS9lyyvr>^C)!_(JKh~V%cp}EltQ;?Q zW`d{OTfdhq;yW7LOynmUzkGl+Vq5OZ1Tz(8spK}`*O~7$Dceo|)};GN-Cmd+F$tD`obgaX5o%;slEOh|4~JG-iQ1AE0CQ0vmefx28UTkjo=) zMe3M*nzMP)t6OS_O-4)Z|9_*G~4;h zJ`uEsxnHhaa8KKc0Ahq=@HChGYu-Zb!|KP1!7Bn4M9JL+u0RSIYE4R8Sv0ud6DH~& zf*5OB*!m2t2|>?RR~Uf!0cMRax=M}nYV*x^VC#X406XMPUzR9oBavtvCj=|t1w7M| z{T-_*IC){DmF?HP#~+&MpCV5G&`Y$B1AVKc^!OFO7?1c*c&|aS$XoFD-Lm7gBNJJ! zn^fJqSC-MGWBh)6%$A^w2aGilk02G%>F9ux_7*V5?}uUwMD(L>p}kL|r}E>>`{z#t z!>w$rC@!#14JgIWsXi`M#U0(WTYiKaYp*!&B<-(HQ1gtv$5R^vk;3^Yw{2|b8AsY) zf@b>dF7xBe(RJg!$&AE)_G3M{8^6~39_qdgki!@m>yu1{&;9roa^t<6M zSh|`mD5SVpA~4|KZ}ivphym(LjGb@}zDR9(CJdJVo|_MDTXq(2ARDPd+s$jzGH}ne zo>0nAHQ(u&w$xBa=KX|Tz%gdFqho`Toz}Foyf=SP+FT7`wDZ>m*K_9FeAqD+ubXP7 zVAr^1haHm+BAe@$_dObHk+-qpf025_K0nT=Ea!0Otb8YG1U^2Rm1z_yLW7GIUN>Ax zsxiZPAXtZfKQHpu)Q?5~Z!ZIUsn`WJ;*yfasbaDj!RT{`H4$G6HzCL($rqK6SH<(j zVscg9iH$LSf)t!4v6UJ1?qV%Hj~eMn7|8jO2w8)3lm|ret24H?G7+ZxyxPD^?|2Wb zm4-PuAMw=HHj&zgI+ADY{nt@UZ_8ZABK4>*B$gcWt>XK%TEo4)Yq5ID7p z%pVgspvm#(%gg96+Oz2}_@3KhI528b^=91oqs4}45@dL!B=K!)Aka`P$uT-owUz(s zoHdEx2f3qJi|Bt47@fxB%jQkdfT$gJ2K7^4+HpQ|Mb$nq+A}>H>sOk-u<0;sIw~1H z?sv9#O*q<9O<%>I2y{wxboin&xQG7NNRlJ6)6+L^(Wxu^`I1A%H9o=bAtA^TUWgwoa5klWoz07RWXJr{Qj3d)mwH9Tv*o0Ic z(x2vSj5Evr5!em=17(na@<%We6YS^P@+yA<=rJi!%2_7LY++J1s&(js$F-?EJ>*tS z_Nr=ihE1m;^w?35zoVLT{V8;G&QNe&pX<6yD9txwM>5B6Sb%U=y}V}g{v7pQc>kxH zuQz4oM@7GDy`o;$>w(CXqJd`303LApue|b--K!j^Z6+G@R#y1!U1w&0|AAq~qm{a$ z&gGFxai@z9nVp9B%Y7be?8%lA;I@EEc|mAeFBRzx?Y}#?$kq6F&_LqI$@aoXzsvsE z5Xkx==%}DmCWBdB@|#rNCG+&E?DFnee-AY;d;h^3#)FvZ8?F zbN}}8`9AyfK(nd~XsZK$Hk-Bbv#nozwzo1?F$DS=S*R`CrPjia7XRjBC!!Pj6jq@#U3W zZSrxQd?~5Y_@;H}u06iJ4&+QlRR@ub1l9N@hMbPvh(ey41Z=ETr=X%t|I&4=24Bld z2)YZ74;!&&r?=}0seLix+{wGMks%eV2U07Fj4|7b2f)5xy8GvP>dOBa*}?xK*8S&1 z%VHK>Q%X|b4|`#snqI~B#)~frtZvBxvkjdVy;KFPGt?sWc3&x}=W{$Va6Q6&U-G#$ z=>a5n`vMgfq<&j!vUYFKj_YgQMsSkP_kaaa9bB|H_yEGMZmpORUM{|~z8s{iKKH#| yCA||}x^cVlmib@Dk7Nb8_WwV9`D#1e`5-{^xmgq2%_ac(c%kr8zFO8S_?g<1;~9oCGw1!D-}8H)=bah;<3E1ie&2rI ze&7C$w+k=k4BdTo>QI?X_Md(Ey!`pDApVm>_or$!TvT|YU&7&o*m!E(`qiB-ZFw6E z-u*d9GRXe3H-7GUI}!Tcp@-ATn>y@1mo1SDZELf5t>3}nk=JT6ckzC!CryW}3mU%s zJEUF+ZD@Oq2YU9MkiFh}ACKPWdHJ}W+a32jLsoP;K8z`mlzWA$zt`6a{eK22W0Aq9 zCF@K#H660KzOdbLG{4eqZ8UHK)CP;!UZ7lA!2EH~P!rvSij3!|&FMmY`V-WJJw)xe zYtIWm?d+7j&Yw&ESc})be(tZZ`NG(53sx9knHs5~Xwl!)^XkS2lvrV?TCv&e`$Y#V zFEs6Q8q(cet=EO(+$WfK=rQuTA0m@IKsx&YY3v5V*k$;#OPEgK&n_bL=>-8#50)K=%2ENE03- zM|glV+(ROhM*_QsV0I3Z*lCPsofylGv9UPPJytl><<`~lVCwljx4hOYIbd@?yimJp zQmo2f`Zb(hkNF+}f4Tl7E$!TsY4`3RoU28+hZNjJJf0vQ-KYc5D8^$H<1&JA2A=4I z2aXDEIQVQF_CIoFyYAWxyY4u$)=o=Sy~QT1>VQN42E^ffhp3MqBCq^D(x2W$G^J5C zt|JonNjWc2Lr|7ew1A1xO!w#E5<>7b{BROJIM(ffjxIOsdoUWi?l@!nH9Ks)WX)Q> zvb;y;UnuKTf4yHq;s$&c!2|9hXU`q-mMi2fw~~ESDKs827i!x~8)~(AR^)){O zqVJLO{3M&k&ahcHB?RJxFcT*Qf1F`K1c3Gk#94yIft*DcMJT0K2u>jgU(s<#pHC+^ zp4fNa18p~5vF*wzf@6=>r)|-E+yae<%rXB9V^+RdpJg}e1eKRt{8ztFPsdYFy>o2t z{d1Trbac7n$a61z{VW?dU+loyXC*lD%m>GXX`(_-vH+YSfF~(BDZV0*$6om3@YCt& zc;th9_oiUi%?a3kbsRQba>0%Z{y2Mk4Gw)e+H@{ND~e3Rr)#JDMGQJPo_=I^)1SZ*;S#WWwEe_~H^eeh9?D$KE*j#2bgZd?}_A zkQq4ighQEz_6I)Lf6o(N+@6BA>jdY@cx<{j8mrD&;p>~+%moPS1v<`Gq3Uy8RBSaw zUaP*4vOs&e#cw&)_=)YfF=5n~KLp()4Izix-U*Jpw;CJyZSqy5-@V>0&M z^&oXj#{T=BI6$%gz8C%Mg}ryCV$UrO#si;Uoq(<1x?kNqtIN9;lD{hy%p`2%WloPuKNnxu8hT|%eL5j*$x{n z*x>k;`E>PHVADBwY`HudpI;->{oV~bue(!BpxYC%;~H0sJGOo6hAo#|vGM#ktovpZ z)|@6dC+yLD%oa<(w8W<4A=ua1fP!WABAnv&1gO=B$>vLhIr%D?GTDGX{3Zcy_|o~^ z4QI#Q*nH8AtvhFfb?2xK*vgZ(Y{kiuSaH&VrejNSN?vu!rYG#M`iwoLj3b2; z)=}!L6~hH<&NyTBDQB!AC@W4l_JFYkHM&?r%2~93Bo=&Oj=DB8RBbmQ^%xTzBNVJM zM0S%QWOY&@D0A3%-f@bizqvFM0UdS=YdmDZnhuX(%Z`qqI%Nb+$0O15l?8<*g%u6j z8m%X62!NgFDLi$0g9B+fPI1hx2aGkAc35F?yCoX-ji4!=!!bq8=O(Dw!qsDld8_rg zK_g>{F5+vnn171W)5#%0b@)9~ZPE$|-xU9n0o7&&Jaii_O z{$&N_t1tEtmGAHu>^%woqK$14Z!g*7xu9W>4XfW{LRZ@q3-+4Ql{ck9nvr*ykrK=a znmG-A1jR@S3xZ)G?m3Vp?G|*Lg_ueU_sPM`-(xPqsohC%c5pbxDBEm^lJy2CT%(WN z7CmG(5ugQ9#Fl9zI7@|1m^CE7_q-mUNZ}?jXJ11?`B@fR+VNnr&z_r;{@SOI_>ME`+3cBf2i1M zgqj`3G)MyWg&6@eBVguYEZRSUfXHJZ-Cjs(#8Zib;aSs!VObdgx2kBEE&=AWQ@f7)CX*$kQbK(6Sv@BGJ{dKPl)JC?*Q3-PS|@p!iN ziXB^ieB{}At91?fWSN$$=Hf-4H%>o~t~&KR?BSVbvBKGBN$iWe9&Ez}m+mF)wpX&7 z^`>%&`)~V6>Nn0f7@j=t*%%K)*p5|$^%x~Mc__nurYbz=Xuv;73&H6U8jv1hOAQcT zVSuD+W2DUIVS6h|cTAa9XHn7Ex7M9@ zt3G%ygl#xGmQ`&tL&hQ_1g5HEV(<{yP8a}V`;VYy@>i(pypN&ke}7s`@9LBsGp=v#k)5u-lBD6fH- z5TpR#xFHBg9g5&gH8v?oDJ?8t+aj?}>w4u@V`2VoUK&`ClFdlf29%OgAuv_#%UGx)Oapw^LD0m5sKI8FrNFx>uC0%sWoT09^$Jtn19l+Z?nohKd9R5u#)>s z^D%3zI!*P@IVY-l9I^2N)jb!e@H;ym8&11pZKpd{9(6>YKt{0H(R1=D-R2bk*MCz!<>A`RIG!_HW{I4tpOReKGOLtRwY45_HenCr zd1N%|Aa$XX;7AcMPYS=JVQjSTXJr9NDz;I@YIo^4CKi+%IZQ**)MX1K!i)s9Q)7G- zH2VlpfK|Z?W0un_q0kYhRX%f29wVw$o%zHLz3m%pJs@X^kZl zHjRnRX4CE)PC!i?N-n!U!cB^#}x+F~Janu6)@>dCkMqqi_wuSt*~r z#EZ082eSE6%&pKtc)l)XByvE5%lu`U4iQCaKNPGaK%^WFsb~$UzL@|~OENu9?UZ9* z0czraT8&xuGHsTvQe-wtX=)`vCF;yOX6WsS1Sq4yereV+O_sMphZU~XBS{ma zP5LxQ0=30ZgvDpISEGCjhhl*84HjtK8-mY|=A(X#t2l*oASLT*V3g7v%)C_wyeXx^ zkZPZ0q@Ja6^(58tDPD>>xjLAhFqDnTwtEK`MO!NcMWuo?xqdQcxBF$|5*fO;XBvDM?iuQN?+(D(t9$Uc>mIthU*OjL3)peA z2o>uck<+Rz4y>RD4p$CWK~|G4odYirrAVxmP^wE1mLtXVcsU?Sdxx-m6#}G37mEO` zH5377aX@w2!n9b`BhDV54C@m>jeBMr9I$k z$&j>KyM~m7>Xe2OmcN1kttLQ}YQ>al#RMw1RRb04?6CcCE`d3X=P#cA2+WT+CjJwI z7kKda29A8Q3JW(+M{u;Xtos7;*{7ZFNN$`GCkMOT$QIe z%XJu6U?BnG-jzwFo>-$Tct>#sDfA7Xmc0?W1+AtmW2qK}HeET1XwZqZ1gMArMGbj8 z#@j$4rPj7Qd4W19O~Ue8rIZ%BqFRd9>eF5io4?FP*RzM>;DsKQ{F03;N?dTGICXwE z3YIyE>f!#A{11S936Qhr;Pk*Gz44S{UD?ZZ83)55<*m>ceJi0xoB2i$Z+DzLXt0IF zudJqdq1e1PT)UvvOazp^M4PUhw%8nUKoNzS%qwc>voT&$rSw{-^2GUSETd7I!0Xi9mEt`l7fa&iVaSm8800lnmfFUOqtZIFM1g7`nhk#6ClqB${Amq#@duUE2L)X?$u z65P7`9r9}e;1_LzmUWf5a_!Gq&*6@uTN(xd;pD|a>ErbANHR>=9reLK38N9xzy!dJf^NrE!J3uQ5 zP=2$ykhWNprBeQRqR#!=@aVkrwQ)T24jF$qrEjm=?Qc>Bg zj{PU=MHo-J9^%-UosgA|L0GCKw(VMp$B!TNC`yp~P7kzizq^2}l3AD$qlbknQ*rUT zlj1RtpFBcbiHWFSZqRcpIUqd|5Y=SN#Y-_QAYR*t0Cm%Z!gyJbzk&eq=9U1>t&*~7 zu{vK^j~XzbPXMjn8>d{*GU9paA_7EkQW^*l&0uq@G%=?@oq0tn3N8dFwZ@?=p;nb2 zBhGd_&8Q9$0qyy!>Sem{;0Ar-+zup_IwB<53R`xz;MT3{O;Ksw}ydSZI<-Z6!YeQu== z^NH#sK>P{hfGi%RF4SNt4Vsi*bmeL_#T7gb$TMOHbDp54om^>~6JMiB$B>!RY{yl^ zTa(OXYS?r9$AEq`L(xB;dMmc&As|VDQ|H=yyh->;Z+i0dF~W0novQ?)8y&|sBdyvI z_aELAi^rdy@|oyCbFvM26^}SlPfRHXWQfRI3y>djla8Dbt3D$nTUnrzgz7R~ad9oH zNl$E#=9cThJ5svIY}8xt^$DQQJM%v*XtB7NvOt4zI7yUV@zomC|EObj_HZ^eT#-3V z9431!Q@X7lBFj z8Z>)oQ0~*om8v6H1f)QKhUlhoKvi-;+|1LLNW{J^ZK>)n03?WjlFJFu!(RX>Rhx=b z4N5a=cZxY66NG1vz*G*%Ye?A4xzY%l#aJ((>}3RKDfM9lD6UK&o?+6p2F`E4+b4hy zoUZyyezWz}WKvL4od%^BNxM>=PEHPJ3IVbuKq*yDSt6kNUO?Jn- z*)IbWoJI=bfJ($_9X$Ucq`7}fM(|?GhS`;-Yu(%SJAvtB|xPHm>ME! zmPp=vt4{#!JGb(k{1%(bN%J+Bs2-kP6$Ge64MADTY|5O$%yE*UUP`rnN-P0NBtX0r z;6)|x-BK5;ViyPWPX_%m#SZ=w1qlS`76Foo3W_S$L}Ve&s3n$&$gvP-RF|oWGyD>C zB3}Y(lmp_cj)`^J;ySlym|l~i;RkQ_3841d?QhO&u{obqt1cu|t5f}>&Q}uY1l2Gr zLzzwP0YoX55?e`t>f~nL>qBWvG_Z1aJnlcZ{ZA|BUIitU{xqPM_0#h%be=hcz!Y_= z;x$C|M9d>kEV0Gh!Z9>q3>O?GDa`bXlTM$Vqxw9hLBhClGMDlqQCIB4VoS`J?;Nw@ zUtJ{j0^+q$&QiNWlv>?$tJJ8Dkf&Efp&9~HhY1sBD?D?YsH~i`z&$0dlB-OM@mh(u zBs|SBNJWX&I!GzG`&4Xu<2?A17NI9gS9zbzL)>J6E zFrNsWZu?0?0=%LOv;t)6CuMbJLdN0|6lOHL8Vj*yM%@uPw$Hu73?2IfP%os&9P>%D z(loDxW*KzPPL~J)$?C%NI8DJlK=py+l)*Xtn5q@QNf`~+q#%iyV!SQkX~tIoIIPfI zWlReB42gLjIDYbgSkLsf6@0(9W8+IeybtT`$8O%fhNhKe@D4S`Sib>O3@RfeOI5C* z!d^f&h|PClGonVku%Dpd$IpA(TuqJGLfZ{_i>6*GSn7K}t=9eKoGi;-LCL05`uyG1 zhzN_fJ;ODed?Iu|_l-2U>=|Nsb&|i%!BJkr{hcO>?=QVxw>mVsV5ut^xkOAcZqyu* zxB@_XGH)?8gR+LfKS7G3x^P_m{*t^~Csp+Vy8qz1SQqj8w(Mv@M9Mf!4Ic)-q~VyI zNu@=W8p86_MFnv<;RSL)F$8FOr1?|Z@q;}$0Irb8e8Ufu%AE`|>fN0a%0^j**79{FEpgz1X~SvongmRhdOQw5OKc_LD&%WEJm%7E5mX7UgS6;40+efj zsGQL(Fy4xd_a7D&6!hV5^V6>?uB{?%hf?} zx*kGOM+$+7CW23-)~4}ul;8hNe_opBcubD#p95ujC4PyjmjhEN9r8yasmuvU6%I(O zutq}pNb0D~5MOCZ12;t?k7_d{RgXY&tp$Y@WVJR(sk1|By**ND9g$2;Y*M8o;>pBg zi|i1QYlYCv5o}h9;j@`Zl8b)vn&AQc<;yMnB%|^S-i^$*wVEEQ^UODPI6^aw5I4^O zvNCt1R!l@ng&S4P&CN;`iaP_pM z;1QyXX|Y<=jZ<@(Wkt|jXli$Tm{vLQW=75A`&sp#Kjh5!xt~4XN64PGBObWV8b}@XC$OFPF)YV@ zLNNeVt^;X55O(fLY?QZhb$G6sb!5JUb4-ziv#esA>*PS)8#eBrG8=a~X2NF_gT%0P z{|uI{pD?aLmZoWp{1Sqy&f8+4t z#fxvG)Yx2`oimIDrt!LFC{@Htlp;gm;-vsvQijcVMP}wSF#6Tns=dAaO;;c7b7rGH z5Uj?31bdHxbi5+LRl?ZmN*Luch)wc05=MFa8vx2^u)7vfq{8Opt6+Av3jAfm;Ty|) zvSH*&3UHV>gpG6=^dmr>ot>{wm?=GNHU4jc)6`Efb_S_0co-&!4aXFU2|Hvp8o)Zx46GF28;q9(2%&B<3INa~oGtR^;~ zZZp*cTQ|jsR{`;_jn9ZSJu^OFpfDv|5x#NC@TcPgQ#5I>K?)qk{Gvy8kDu1h0Rea| zx6$F7m{K)?uRcZ=t08=zI(6dIf2C=_J7yU32-5Aga~~S`GwV*`H&PgGIyM5z^ zQd+7aI75>(xNlTC$5vsLmuJO=&g)q(QcVHtXo z;B-m*+!A}1SmD5A)h#D(G%!hj!JG`c zqmel-mtu0qoQ=qI-WHHx>i^FQJ$~PuLgn}4ip^6p>RophE}eFwsL}6eT8;a%hyqL3 ze*YI2e$>Dcgvk-_zU>vKtQ?eTW*C%Vr4t}C{E)W@|Jxw>?|d2*-iXT6`B+x%peCzx tRF+kmywk7$R>$w#@7wR&@7w=j`)@L)kHdOT`^^9V002ovPDHLkV1gB+{`vp_ diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/strings.xml b/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/strings.xml deleted file mode 100644 index 70433a626..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - PlayGamesPluginSupport - - diff --git a/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/styles.xml b/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/styles.xml deleted file mode 100644 index 6ce89c7ba..000000000 --- a/SupportFiles/Public/PlayGamesPluginSupport/src/main/res/values/styles.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - diff --git a/build.gradle b/build.gradle deleted file mode 100644 index d36dc2443..000000000 --- a/build.gradle +++ /dev/null @@ -1,754 +0,0 @@ -/* -* Gradle file to build the Unity plugin for Google Play Game Services. -*/ - -buildscript { - repositories { - google() - mavenCentral() - mavenLocal() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -/* - Project level variables -*/ -project.ext { - os_name = System.getProperty("os.name").toLowerCase(); - os_osx = os_name.contains("mac os x"); - os_windows = os_name.contains("windows"); - os_linux = os_name.contains("linux"); - - ndk_root = System.getProperty("ANDROID_NDK_ROOT") - if (ndk_root == null || ndk_root.isEmpty()) { - ndk_root = System.getenv("ANDROID_NDK_ROOT") - } - sdk_root = System.getProperty("ANDROID_HOME") - if (sdk_root == null || sdk_root.isEmpty()) { - sdk_root = System.getenv("ANDROID_HOME") - } - unity_exe = System.getProperty("UNITY_EXE") - if (unity_exe == null || unity_exe.isEmpty()) { - unity_exe = System.getenv("UNITY_EXE") - } - - // Take a guess at where Unity is located as a last resort. - if (unity_exe == null || unity_exe.isEmpty()) { - if (os_osx) { - unity_exe ='/Applications/Unity/Unity.app/Contents/MacOS/Unity' - } else if (os_windows) { - unity_exe ='c:\\program files\\unity\\editor\\unity.exe' - } else { - unity_exe = 'Unity' - } - } - - git_exe = System.getProperty("GIT_EXE") - if (git_exe == null || git_exe.isEmpty()) { - git_exe = System.getenv("GIT_EXE") - } - if (git_exe == null || git_exe.isEmpty()) { - git_exe = 'git' - } - - // Also update in com.google.play.games/package.json - pluginVersion = "0.11.01" - - // String for specifying the build mode. - // If 'eap', will include all files from the 'Protected' folder. - // If build mode is anything other than 'eap', assumes a regular public - // build. - // -PbuildMode=eap - if (!project.hasProperty('buildMode') || buildMode != 'eap') { - buildMode = 'public' - } - - if (buildMode == 'eap') { - buildPath = file('build-eap').absolutePath - currentPluginPath = buildPath - currentPluginVersion = "${pluginVersion}-eap" - } else { - buildPath = file('build').absolutePath - currentPluginPath = buildPath - currentPluginVersion = "${pluginVersion}" - } - pluginSrc = file('Assets/Public/GooglePlayGames').absolutePath - manifestSrc = file('Assets/Plugins').absolutePath - protectedPluginSrc = file('Assets/Protected/GooglePlayGames').absolutePath - supportLib = file('SupportFiles/Public').absolutePath - protectedSupportLib = file('SupportFiles/Protected').absolutePath - supportLibProj = file("${buildPath}/SupportLibProject").absolutePath - supportLibGradle = "${buildPath}/SupportLibProject/build.gradle" - pluginBuildSrc = file("${buildPath}/PluginSrc/Assets/GooglePlayGames").absolutePath - manifestBuildSrc = file("${buildPath}/PluginSrc/Assets/Plugins").absolutePath - pluginProj = file("${buildPath}/PluginProject").absolutePath - samplesPath = file('Samples').absolutePath - protectedSamplesPath = file('Samples').absolutePath - samplesBuildSrc = file("${buildPath}/sampleSrc").absolutePath - exportPath = file("${buildPath}/plugin.unitypackage").absolutePath - currentPluginBasename = 'GooglePlayGamesPlugin' - currentPluginName = "${currentPluginBasename}-${currentPluginVersion}.unitypackage" - resolverDir = new File("${buildPath}/jarresolver").absolutePath - - editorDir = "Assets/GooglePlayGames/com.google.play.games/Editor" - pluginRepoDir = "${pluginProj}/${editorDir}/m2repository" - - // Determine where we are relative to the Assets directory. - def currentDirectory = file('.') - if (file('PluginDev/Assets').isDirectory()) { - assetsPath = file('PluginDev/Assets') - } else if (file('Assets').isDirectory()) { - assetsPath = file('Assets') - } else if (currentDirectory.getName() == 'Assets') { - assetsPath = currentDirectory - } else if (currentDirectory.getParentFile().getName() == 'Assets') { - assetsPath = currentDirectory.getParentFile() - } else { - throw new GradleException("Unable to locate Assets directory in path: $currentDirectory") - } - - // String for specifying if samples are built. - // If 'off', only the plugin will be built. - // If sampleBuild mode is anything other than 'off', assume samples are - // built. - // -PsampleBuild=off - if (!project.hasProperty('sampleBuild') || sampleBuild != 'off') { - sampleBuild = 'on' - } - - if (sampleBuild == 'on') { - sampleList = ['SmokeTest'] - } else { - sampleList = [] - } - - jarresolver_uri = System.getProperty("RESOLVER_PACKAGE_URI") - jarresolver_repos = [ - 'https://github.com/googlesamples/unity-jar-resolver.git' - ] - jarresolver_tag = 'v1.2.182'; -} - -if (!tasks.findByName('prebuild')) { - task prebuild() { - println('Local prebuild') - } - prebuild.dependsOn { - project.tasks.findAll { task -> task.ext.has('remoteTaskPhase') && task.ext.remoteTaskPhase == 'prebuild' } - } -} -if (!tasks.findByName('build')) { - task build() { - println('Local build') - } - build.dependsOn { - project.tasks.findAll { task -> task.ext.has('remoteTaskPhase') && task.ext.remoteTaskPhase == 'build' } - } -} -if (!tasks.findByName('postbuild')) { - task postbuild() { - println('Local postbuild') - } - postbuild.dependsOn { - project.tasks.findAll { task -> task.ext.has('remoteTaskPhase') && task.ext.remoteTaskPhase == 'postbuild' } - } -} - -project.defaultTasks = ['prebuild', 'build', 'postbuild'] - - -/** - Final task of building all the unity packages. -**/ -task unity_package(dependsOn:'export_legacy_package') { - - description = "Top level task for building the unity packages" - - doLast { - println "Packaging Complete!" - } - - // Mark this a build phase task for remoteTask support. - ext.remoteTaskPhase = 'build' - - // Depends on packaging all the samples - dependsOn { - tasks.findAll { task -> task.name.startsWith('PackageSample') } - } -} - -/** - Generate tasks for the samples. There are several tasks for each sample. -**/ -sampleList.each { sampleName -> - def createTask = project.tasks.create('CreateSample' + sampleName) - def copySrcTask = project.tasks.create('CopySrcSample' + sampleName) - def copyBuildSrcTask = project.tasks.create('CopyBuildSrcSample' + sampleName) - def copyPluginSrcTask = project.tasks.create('CopyPluginSrcSample' + sampleName) - - // this is the path to the source code - def sampleSrcDir = samplesPath + '/' + sampleName - - // this is the path to the source code for eap code - def protectedSampleSrcDir = protectedSamplesPath + '/' + sampleName - - // this is the path to the source code in the build dir - def sampleBuildSrcDir = samplesBuildSrc + '/' + sampleName - - // this is the path to build the sample package - def sampleDestSrcDir = file("${pluginProj}/Samples/${sampleName}/Assets/${sampleName}").absolutePath - - // this is the path for the plugin assets for the sample package - def samplePluginSrcDir = file("${pluginProj}/Samples/${sampleName}/Assets").absolutePath - - // the relative path to the sample assets within the project. - def sampleAssets = "Assets/${sampleName}" - - // the path to the plugin code that will be copied into the sample package - def pluginDir = file("${pluginProj}/Assets") - - def sampleDir = file("${pluginProj}/Samples/${sampleName}/Assets/${sampleName}") - if (!sampleDir.exists()) { - sampleDir.mkdirs() - } - - /* - Create the sample in the build directory - */ - createTask.description = "Create the ${sampleName} package" - createTask.dependsOn 'export_legacy_package' - createTask.doFirst { - delete "${pluginProj}/Samples/${sampleName}/Assets/${sampleName}" - - def logFilename = "${pluginProj}/Samples/${sampleName}/CreateSample${sampleName}.log" - def argv = [ - "-gvh_disable", - "-g.building", - "-batchmode", - "-createProject", "${pluginProj}/Samples/${sampleName}", - "-logFile", logFilename, - "-quit" - ] - runUnity(argv, logFilename) - - } - // This is a build task - createTask.ext.remoteTaskPhase = 'build' - - /* - Copy the source of the sample into build dir. - This is done so it can be remoted and assembled as a part of a RemoteTask. - */ - copyBuildSrcTask.description = "Copies sample ${sampleName} source code to build area" - copyBuildSrcTask.doFirst { - copy { - from sampleSrcDir - into sampleBuildSrcDir - } - if (buildMode == 'eap') { - copy { - from protectedSampleSrcDir - into sampleBuildSrcDir - } - } - } - copyBuildSrcTask.doLast { - println 'copied ' + sampleSrcDir + ' to ' + sampleBuildSrcDir - } - - copyBuildSrcTask.ext.remoteTaskPhase = 'prebuild' - - /* - Copy the source of the sample into build target. Don't import the - sample package, since we want the latest source code. - */ - copySrcTask.description = "Copies sample ${sampleName} source code to sample project build area" - copySrcTask.dependsOn createTask, copyBuildSrcTask - copySrcTask.doFirst { - copy { - from sampleBuildSrcDir - into sampleDestSrcDir - } - } - copySrcTask.doLast { - println 'copied ' + sampleBuildSrcDir + ' to ' + sampleDestSrcDir - } - - copySrcTask.ext.remoteTaskPhase = 'build' - - /* - Copy the source of the plugin and jar resolver into build dir. - This is done so it can be remoted and assembled as a part of a RemoteTask. - */ - copyPluginSrcTask.description = "Copies plugin into sample ${sampleName} build area" - copyPluginSrcTask.dependsOn createTask, copySrcTask, 'export_legacy_package' - - copyPluginSrcTask.doFirst { - copy { - from pluginDir - into samplePluginSrcDir - } - } - copyPluginSrcTask.doLast { - println 'copied ' + pluginDir + ' to ' + samplePluginSrcDir - } - - copyPluginSrcTask.ext.remoteTaskPhase = 'build' - - /* - Create the exported package - */ - def packageTask = project.tasks.create('PackageSample' + sampleName) - - packageTask.description = "Package ${sampleName} sample" - - packageTask.dependsOn createTask, copySrcTask, copyPluginSrcTask - - packageTask.doLast { - def pluginAssets = file("${pluginProj}/Samples/${sampleName}/Assets/GooglePlayGames/com.google.play.games") - if (!pluginAssets.exists()) { - println 'Could not find ' + pluginAssets - } - def logFilename = "${pluginProj}/Samples/${sampleName}/ExportSample${sampleName}.log" - def argv = [ - "-gvh_disable", - "-g.building", - "-batchmode", - "-projectPath", "${pluginProj}/Samples/${sampleName}", - "-buildTarget", "android", - "-logFile", logFilename, - "-exportPackage", - "${sampleAssets}", - "Assets/GooglePlayGames/com.google.play.games", - "Assets/Plugins/Android/GooglePlayGamesManifest.androidlib", - "${pluginProj}/Samples/${sampleName}.unitypackage", - "-quit" - ] - runUnity(argv, logFilename) - } - packageTask.ext.remoteTaskPhase = 'build' - - /* - Finally, copy the package to the source sample dir. - */ - def copySamplePackageTask = project.tasks.create('CopySamplePackage' + sampleName) - copySamplePackageTask.description = "Copy unity package for " + sampleName + " back to src dir" - copySamplePackageTask.doLast { - if (buildMode == 'eap') { - copy { - from file("${pluginProj}/Samples/${sampleName}.unitypackage") - into file("${protectedSamplesPath}/${sampleName}") - } - } else { - copy { - from file("${pluginProj}/Samples/${sampleName}.unitypackage") - into file("${samplesPath}/${sampleName}") - } - } - } - - copySamplePackageTask.ext.remoteTaskPhase = 'postbuild' -} - -task import_jarresolver() { - description = "Imports the jar resolver package into the plugin" - ext.remoteTaskPhase = 'build' - doFirst { - if (file(pluginProj).exists()) { - delete pluginProj - } - } - doLast { - def tree = fileTree("${resolverDir}") - { - include 'external-dependency-manager-latest.unitypackage' - } - def jarresolver_package = tree.getSingleFile() - - def logFilename = "${pluginProj}/import_resolver_unity.log" - def argv = [ - "-gvh_disable", - "-g.building", - "-batchmode", - "-createProject", "${pluginProj}", - "-logFile", logFilename, - "-importPackage", "${jarresolver_package}", - "-quit" - ] - runUnity(argv, logFilename) - } - -} -// don't explicitly depend on copy_jarresolver here since it is run -// as a prebuild step, and import_jarresolver is a build step which can happen -// on a machine with limited network connectivity. -// import_jarresolver.dependsOn "copy_jarresolver" - -task copy_pluginProjSrc () { - doFirst { - copy { - from {"${pluginBuildSrc}"} - includes ["**/*"] - duplicatesStrategy DuplicatesStrategy.INCLUDE - into {"${pluginProj}/Assets/GooglePlayGames"} - } - copy { - from {"${manifestBuildSrc}"} - includes ["**/*"] - duplicatesStrategy DuplicatesStrategy.INCLUDE - into {"${pluginProj}/Assets/Plugins"} - } - } - doLast { - copy { - from {"${project.ext.buildPath}/m2repository"} - includes ["**/*"] - duplicatesStrategy DuplicatesStrategy.INCLUDE - into {"${pluginRepoDir}"} - } - } -} -copy_pluginProjSrc.dependsOn import_jarresolver -copy_pluginProjSrc.ext.remoteTaskPhase = 'build' - - - -task generate_dependency_xml() { - description "Generate the JarResolver dependency file for the support library" - dependsOn copy_pluginProjSrc - doFirst { - def xmlFile = file("${pluginProj}/${editorDir}/${currentPluginBasename}Dependencies.xml") - xmlFile << '\n' - xmlFile << '\n' - xmlFile << '\n' - xmlFile << ' \n' - xmlFile << ' \n" - xmlFile << ' \n' - xmlFile << ' Packages/com.google.play.games/Editor/m2repository\n' - xmlFile << ' \n' - xmlFile << ' \n' - xmlFile << ' \n' - xmlFile << '\n' - } -} - - -task inject_versionIntoMetaFiles() { - description 'Inject the version number into the plugin\'s meta files.' - dependsOn copy_pluginProjSrc, generate_dependency_xml, import_jarresolver - doLast { - def currentManifestFile = versionedAssetName("${currentPluginBasename}.txt", "${currentPluginVersion}") - for (fileobj in fileTree("${pluginProj}")) { - if (fileobj.path.endsWith('.meta')) { - // Skip the manifest files for any previous versions - // Skip any files in 'PackageCache' subdirectory - if (fileobj.path.contains("Editor/${currentPluginBasename}") && - !fileobj.path.contains(currentManifestFile) || - fileobj.path.contains("PackageCache")) { - continue - } - def lines = fileobj.text.split('\n') - def outputLines = [] - def added = false - for (line in lines) { - outputLines.add(line) - if (line.contains('labels:')) { - outputLines.add("- gvh_v${currentPluginVersion}") - added = true - } else if (line.contains('folderAsset:') && line.contains('yes')) { - added = true - } - } - if (!added) { - outputLines.add("labels:\n- gvh_v${currentPluginVersion}") - } - fileobj.write(outputLines.join('\n') + '\n') - } - } - } -} - -task generate_manifest(dependsOn: [ 'inject_versionIntoMetaFiles']) { - description 'Generate a manifest for the files in the plug-in.' - doLast { - def dir = file("${pluginProj}/Assets") - def list = [] - dir.eachFileRecurse(groovy.io.FileType.FILES) { filename -> - def path = filename.path - if (!path.toLowerCase().endsWith('.meta')) { - list << filename.path.replace("${pluginProj}/", '') - } - } - def manifest = file("${pluginProj}/${editorDir}/" + - versionedAssetName(currentPluginBasename + '.txt', "${currentPluginVersion}")) - manifest.write(list.join('\n') + '\n') - } -} - - -task copy_manifestMetadata(dependsOn: generate_manifest, type: Copy) { - def manifestBasename = versionedAssetName(currentPluginBasename + '.txt', - null) + '.meta' - description 'Copy .meta file for the plugin manifest.' - from file("${pluginProj}/${editorDir}/" + manifestBasename) - into file("${pluginProj}/${editorDir}/") - rename { - String fn -> - return fn.replace(manifestBasename, - versionedAssetName(currentPluginBasename + '.txt', - "${currentPluginVersion}") + '.meta') - } -} -task export_legacy_package () { - description = "Creates and exports the Plugin unity package" - doFirst { - ext.path = "${pluginProj}/${editorDir}/projsettings.txt" - delete '${ext.path}' - } - - doLast { - def logFilename = "${pluginProj}/unity.log" - def argv = [ - "-g.building", - // This prevents the VersionHandler to preserve the plugin layout - "-gvh_disable", - // NOTE: This doesn't target Android since we don't want to have - // dependencies on the Jar Resolver as they require the plugin to - // be enabled during the build process which would break the - // versioning process. Compilation is verified when exporting - // the sample projects. - "-batchmode", - "-projectPath", "${pluginProj}", - "-logFile", logFilename, - "-exportPackage", - "Assets/GooglePlayGames/com.google.play.games", - "Assets/Plugins/Android/GooglePlayGamesManifest.androidlib", - "Assets/ExternalDependencyManager", - "${exportPath}", - "-quit" - ] - runUnity(argv, logFilename) - } -} -export_legacy_package.dependsOn generate_manifest, import_jarresolver, copy_manifestMetadata -export_legacy_package.dependsOn copy_pluginProjSrc -export_legacy_package.ext.remoteTaskPhase = 'build' - -task export_plugin_tgz_setup() { - description 'Creates a gradle task for each UPM .tgz that we need to generate' - fileTree(assetsPath).matching { - include '**/package.json' - }.each { - def packageJsonFile -> - println 'Package.json file found at ' + packageJsonFile - def packageJson = new groovy.json.JsonSlurper().parse(packageJsonFile) - def packageName = packageJson.name - def packageVersion = packageJson.version - // Create a Tar task for each package. - def task = tasks.create(name: "upmTar-${packageName}", type: Tar) { - compression = Compression.GZIP - archiveFileName = "${packageName}-${packageVersion}.tgz" - destinationDirectory = file("${project.ext.buildPath}") - into('package') { - from file("${pluginProj}/Assets/GooglePlayGames/${packageName}") - } - } - task.dependsOn generate_manifest, import_jarresolver, copy_manifestMetadata - task.dependsOn copy_pluginProjSrc - } -} -export_plugin_tgz_setup.ext.remoteTaskPhase = 'build' - -task export_plugin_tgz(dependsOn: export_plugin_tgz_setup) { - description 'Creates a Unity Package Manager .tgz file for every package in the project' - doFirst { - println "Creating .tgz packages." - } - // Lazily add a dependency on each of the package creation tasks. - dependsOn { - tasks.findAll { task -> task.name.startsWith('upmTar') } - } -} -export_plugin_tgz.ext.remoteTaskPhase = 'build' - -/* - Copy the plugin to the current-build directory -*/ -task copy_plugin() { - description = 'Copy plugin to the current-build directory' - doFirst { - copy { - from file(exportPath) - into file(currentPluginPath) - rename ('plugin.unitypackage', currentPluginName) - } - } - - doLast { - println "Copied ${exportPath} to ${currentPluginPath}" - } - - ext.remoteTaskPhase = 'postbuild' -} - -task copy_plugin_source { - description = "Copies plugin source into build directory" - ext.remoteTaskPhase = 'prebuild' - - doFirst { - copy { - from("${pluginSrc}") { - exclude '**/Samples', '**/Samples.meta' - } - into {"${pluginBuildSrc}"} - } - copy { - from("${manifestSrc}") - into {"${manifestBuildSrc}"} - } - println "Copied ${manifestSrc} to ${manifestBuildSrc}" - if (buildMode == 'eap') { - copy { - from("${protectedPluginSrc}") { - exclude 'README.md', '**/Samples', '**/Samples.meta' - } - into {"${pluginBuildSrc}"} - } - } - } -} - -task copy_supportlib_source { - description = "Copies support lib source into build directory for EAPs only" - ext.remoteTaskPhase = 'prebuild' - - copy { - from("${supportLib}") - into {"${supportLibProj}"} - } - if (buildMode == 'eap') { - copy { - from("${protectedSupportLib}") { - exclude 'README.md' - } - into {"${supportLibProj}"} - } - } -} - -task copy_jarresolver() { - description = "Clones the jar resolver project and copied into the build." - ext.remoteTaskPhase = "prebuild" - dependsOn copy_plugin_source - - doFirst { - if (file(resolverDir).exists()) { - delete resolverDir - } - } - - doLast { - if (jarresolver_uri != null) { - mkdir("${resolverDir}") - def resolver = new File("${resolverDir}/resolver.unitypackage") - new URL("${jarresolver_uri}").withInputStream { - inputStream -> resolver.withOutputStream { it << inputStream } - } - return - } - - for (repo in jarresolver_repos) { - println 'clone ' + repo - def result = exec { - executable "${git_exe}" - args "clone", repo, "${resolverDir}" - ignoreExitValue true - } - if (result.exitValue == 0 && jarresolver_tag != null) { - result = exec { - executable "${git_exe}" - args "checkout", "-b", "buildver", "${jarresolver_tag}" - workingDir "${resolverDir}" - } - } - - if (result.exitValue == 0) { - println "Downloaded resolver from " + repo - return - } - } - } -} - -task build_java_support_lib(type: GradleBuild) { - description = "Builds the client libraries for Android" - buildFile = supportLibGradle - dependsOn copy_supportlib_source - startParameter.projectProperties.put('projVersion',currentPluginVersion) - startParameter.projectProperties.put('uploadDir', "${project.ext.buildPath}/m2repository") - - tasks = ['build', 'publish'] -} - -build_java_support_lib.ext.remoteTaskPhase = 'prebuild' - -task clean_support_lib(type: GradleBuild) { - description = "cleans the client libraries for Android" - buildFile = supportLibGradle - tasks = ['clean'] -} -task clean() { - doFirst { - delete 'build' - } - dependsOn clean_support_lib -} - -tasks.findAll { task -> task.ext.has('remoteTaskPhase') && task.ext.remoteTaskPhase == 'build' }*.dependsOn('prebuild') -tasks.findAll { task -> task.ext.has('remoteTaskPhase') && task.ext.remoteTaskPhase == 'postbuild' }*.dependsOn('build') - -// Construct the name of a versioned asset from the source filename and version -// // string. -// // The encoded string takes the form... -// // ${filename}_v${version}_.${extension} -// // where extension is derived from the specified filename. -def versionedAssetName(filename, version) { - def extensionIndex = filename.lastIndexOf('.') - def basename = filename.substring(0, extensionIndex) - def extension = filename.substring(extensionIndex) - // Encode the DLL version and target names into the DLL in the form... - // ${dllname}_t${hypen_separated_target_names}_v${version}.dll - def targetName = basename - if (version != null && !version.isEmpty()) { - targetName += '_v' + version - } - return targetName + extension -} - -def runUnity(argv, logFilename) { - def result = exec { - executable "${project.ext.unity_exe}" - args argv - ignoreExitValue true - } - - if (result.exitValue != 0) { - println "***Error Running Unity: ${result}" - def src = file(logFilename).text - print src - throw new GradleException('error exporting sample') - } -} diff --git a/gradlew b/gradlew deleted file mode 100755 index 1aa94a426..000000000 --- a/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# 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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100755 index 93e3f59f1..000000000 --- a/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega