diff --git a/AM2RPortHelper/AM2RPortHelper.csproj b/AM2RPortHelper/AM2RPortHelper.csproj index a5766a4..4b979e0 100644 --- a/AM2RPortHelper/AM2RPortHelper.csproj +++ b/AM2RPortHelper/AM2RPortHelper.csproj @@ -1,10 +1,15 @@ - + Exe net5.0 + LatestMajor + + + + PreserveNewest @@ -18,6 +23,33 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -36,6 +68,60 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/AM2RPortHelper/Program.cs b/AM2RPortHelper/Program.cs index cfef263..0cb8c90 100644 --- a/AM2RPortHelper/Program.cs +++ b/AM2RPortHelper/Program.cs @@ -1,4 +1,8 @@ -using System; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Formats; +using SixLabors.ImageSharp.Processing; +using SixLabors.ImageSharp.Processing.Processors.Transforms; +using System; using System.Diagnostics; using System.IO; using System.IO.Compression; @@ -33,8 +37,9 @@ namespace AM2RPortHelper return; } + Console.WriteLine("\n**Make sure to replace the icon.png and splash.png with custom ones if you don't want to have placeholders**\n"); Console.WriteLine("THIS ONLY WORKS FOR MODS BASED ON THE COMMUNITY UPDATES! MODS BASED ON 1.1 WILL NOT WORK!"); - Console.WriteLine("To which platform do you want to port to?\n1 - Linux\n2 - Android"); + Console.WriteLine("To which platform do you want to port to?\n1 - Linux\n2 - Android\n3 - MacOS"); var input = Console.ReadKey().Key.ToString(); Console.WriteLine(); @@ -44,9 +49,11 @@ namespace AM2RPortHelper case "D2": PortForAndroid(modZipPath); break; + case "D3": PortForMac(modZipPath); break; + default: Console.WriteLine("Unacceptable input. Aborting..."); return; } - + Console.WriteLine("Successfully finished!"); Console.WriteLine("Exiting in 5 seconds..."); Thread.Sleep(5000); } @@ -92,6 +99,7 @@ namespace AM2RPortHelper //zip the result if no if (File.Exists(linuxModPath)) { + Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(linuxModPath + " already exists! Please move it somewhere else."); return; } @@ -100,9 +108,6 @@ namespace AM2RPortHelper // Clean up Directory.Delete(assetsDir, true); - - Console.WriteLine("Successfully finished!"); - Console.WriteLine("\n**Make sure to replace the icon.png and splash.png with custom ones if you don't want to have placeholders**\n"); } static void PortForAndroid(FileInfo modZipPath) @@ -164,6 +169,17 @@ namespace AM2RPortHelper yamlFile = yamlFile.Replace("doNotCompress:", "doNotCompress:\n- ogg"); File.WriteAllText(apkDir + "/apktool.yml", yamlFile); + // Edit the icons in the apk + string resPath = apkDir + "/res"; + Image orig = Image.Load(utilDir + "/icon.png"); + SaveAndroidIcon(orig, 96, resPath + "/drawable/icon.png"); + SaveAndroidIcon(orig, 72, resPath + "/drawable-hdpi-v4/icon.png"); + SaveAndroidIcon(orig, 36, resPath + "/drawable-ldpi-v4/icon.png"); + SaveAndroidIcon(orig, 48, resPath + "/drawable-mdpi-v4/icon.png"); + SaveAndroidIcon(orig, 96, resPath + "/drawable-xhdpi-v4/icon.png"); + SaveAndroidIcon(orig, 144, resPath + "/drawable-xxhdpi-v4/icon.png"); + SaveAndroidIcon(orig, 192, resPath + "/drawable-xxxhdpi-v4/icon.png"); + // Run APKTOOL and build the apk Console.WriteLine("Rebuild apk..."); pStartInfo = new ProcessStartInfo @@ -191,6 +207,7 @@ namespace AM2RPortHelper //Move apk if it doesn't exist already if (File.Exists(apkModPath)) { + Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(apkModPath + " already exists! Please move it somewhere else."); return; } @@ -198,9 +215,114 @@ namespace AM2RPortHelper // Clean up Directory.Delete(extractDirectory, true); + } + static void PortForMac(FileInfo modZipPath) + { + string baseTempDirectory = tmp + "/" + modZipPath.Name; + string extractDirectory = baseTempDirectory + "/extract"; + string appDirectory = baseTempDirectory + "/AM2R.app"; + string contentsDir = baseTempDirectory + "/Contents"; + string assetsDir = contentsDir + "/Resources"; + string macosModPath = currentDir + "/" + Path.GetFileNameWithoutExtension(modZipPath.FullName) + "_MACOS.zip"; + + // Get name from user + //TODO: handle error on special characters + Console.WriteLine("State the name of your mod (no special characters!)"); + string input = Console.ReadLine(); + + // Rename the .app "file", makes it too difficult to use with modpacker so commented out. + //if (!String.IsNullOrWhiteSpace(input)) + // appDirectory = appDirectory.Replace("AM2R", input); + + // Check if temp folder exists, delete if yes, copy bare runner to there + if (Directory.Exists(baseTempDirectory)) + Directory.Delete(baseTempDirectory, true); + Console.WriteLine("Copying Runner..."); + Directory.CreateDirectory(contentsDir); + DirectoryCopy(utilDir + "/Contents", contentsDir, true); + + // Extract mod to temp location + Console.WriteLine("Extracting..."); + ZipFile.ExtractToDirectory(modZipPath.FullName, extractDirectory, true); - Console.WriteLine("Successfully finished!"); - Console.WriteLine("\n**This will currently use default splashes and icons, if you don't like them don't forget to replace them in the apk**\n"); + // Delete unnecessary files, rename data.win, move in the new runner + Console.WriteLine("Delete unnecesary files and lowercase them..."); + File.Delete(extractDirectory + "/AM2R.exe"); + File.Delete(extractDirectory + "/D3DX9_43.dll"); + File.Move(extractDirectory + "/data.win", extractDirectory + "/game.ios"); + if (!File.Exists(assetsDir + "/icon.png")) + File.Copy(utilDir + "/icon.png", extractDirectory + "/icon.png"); + if (!File.Exists(assetsDir + "/splash.png")) + File.Copy(utilDir + "/splash.png", extractDirectory + "/splash.png"); + // Delete fonts folder if it exists, because I need to convert bytecode version from game and newer version doesn't support font loading + if (Directory.Exists(extractDirectory + "/lang/fonts")) + Directory.Delete(extractDirectory + "/lang/fonts", true); + + // Lowercase every file first + LowercaseFolder(extractDirectory); + + // Convert data.win to BC16 and get rid of not needed functions anymore + Console.WriteLine("Editing data.win to change data.win BC version and functions..."); + string bin = ""; + string args = "" ; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + bin = "\"" + utilDir + "/UTMTCli/UndertaleModCli.exe\""; + args = ""; + } + else + { + // First chmod the file, just in case + Process.Start("chmod", "+x \"" + utilDir + "/UTMTCli/UndertaleModCli.dll\""); + bin = "dotnet"; + args = "\"" + utilDir + "/UTMTCli/UndertaleModCli.dll\" "; + // Also chmod the runner. Just in case. + Process.Start("chmod", "+x \"" + contentsDir + "/MacOS/Mac_Runner"); + } + + ProcessStartInfo pStartInfo = new ProcessStartInfo + { + FileName = bin, + Arguments = args + "load \"" + extractDirectory + "/game.ios\" -s \"" + utilDir + "/bc16AndRemoveFunctions.csx\" --dest \"" + extractDirectory + "/game.ios\"", + CreateNoWindow = false + }; + Process p = new Process() { StartInfo = pStartInfo }; + p.Start(); + p.WaitForExit(); + + // Copy assets to the place where they belong to + Console.WriteLine("Copy files over..."); + DirectoryCopy(extractDirectory, assetsDir, true); + + // Edit config and plist to change display name + Console.WriteLine("Editing Runner references to AM2R..."); + string textFile = File.ReadAllText(assetsDir + "/yoyorunner.config"); + textFile = textFile.Replace("YoYo Runner", input); + File.WriteAllText(assetsDir + "/yoyorunner.config", textFile); + + textFile = File.ReadAllText(contentsDir + "/Info.plist"); + textFile = textFile.Replace("YoYo Runner", input); + File.WriteAllText(contentsDir + "/Info.plist", textFile); + + // Create a .app directory and move contents in there + Directory.CreateDirectory(appDirectory); + Directory.Move(contentsDir, appDirectory + "/Contents"); + + Directory.Delete(extractDirectory, true); + + //zip the result if no + if (File.Exists(macosModPath)) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine(macosModPath + " already exists! Please move it somewhere else."); + return; + } + Console.WriteLine("Creating zip..."); + ZipFile.CreateFromDirectory(baseTempDirectory, macosModPath); + + // Clean up + Directory.Delete(baseTempDirectory, true); } static void LowercaseFolder(string directory) @@ -220,5 +342,48 @@ namespace AM2RPortHelper LowercaseFolder(subdir.FullName); } } + + static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) + { + // Get the subdirectories for the specified directory. + DirectoryInfo dir = new DirectoryInfo(sourceDirName); + + if (!dir.Exists) + { + throw new DirectoryNotFoundException( + "Source directory does not exist or could not be found: " + + sourceDirName); + } + + DirectoryInfo[] dirs = dir.GetDirectories(); + + // If the destination directory doesn't exist, create it. + Directory.CreateDirectory(destDirName); + + // Get the files in the directory and copy them to the new location. + FileInfo[] files = dir.GetFiles(); + foreach (FileInfo file in files) + { + string tempPath = Path.Combine(destDirName, file.Name); + file.CopyTo(tempPath, true); + } + + // If copying subdirectories, copy them and their contents to new location. + if (copySubDirs) + { + foreach (DirectoryInfo subdir in dirs) + { + string tempPath = Path.Combine(destDirName, subdir.Name); + DirectoryCopy(subdir.FullName, tempPath, copySubDirs); + } + } + } + + static void SaveAndroidIcon(Image icon, int dimensions, string filePath) + { + Image picture = icon; + picture.Mutate(x => x.Resize(dimensions, dimensions, KnownResamplers.NearestNeighbor)); + picture.SaveAsPng(filePath); + } } } diff --git a/AM2RPortHelper/utils/Contents/Frameworks/libYoYoGamepad.dylib b/AM2RPortHelper/utils/Contents/Frameworks/libYoYoGamepad.dylib new file mode 100644 index 0000000..586fafb Binary files /dev/null and b/AM2RPortHelper/utils/Contents/Frameworks/libYoYoGamepad.dylib differ diff --git a/AM2RPortHelper/utils/Contents/Frameworks/libYoYoIAP.dylib b/AM2RPortHelper/utils/Contents/Frameworks/libYoYoIAP.dylib new file mode 100644 index 0000000..0a47ac4 Binary files /dev/null and b/AM2RPortHelper/utils/Contents/Frameworks/libYoYoIAP.dylib differ diff --git a/AM2RPortHelper/utils/Contents/Info.plist b/AM2RPortHelper/utils/Contents/Info.plist new file mode 100644 index 0000000..7b0d4a5 --- /dev/null +++ b/AM2RPortHelper/utils/Contents/Info.plist @@ -0,0 +1,56 @@ + + + + + BuildMachineOSBuild + 16G1036 + CFBundleDevelopmentRegion + English + CFBundleDisplayName + YoYo Runner + CFBundleExecutable + Mac_Runner + CFBundleIconFile + icon.icns + CFBundleIdentifier + com.yoyogames.am2r + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Mac_Runner + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.4.1804 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 1.4.1804 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 9C40b + DTPlatformVersion + GM + DTSDKBuild + 17C76 + DTSDKName + macosx10.13 + DTXcode + 0920 + DTXcodeBuild + 9C40b + LSApplicationCategoryType + public.app-category.developer-tools + LSMinimumSystemVersion + 10.6 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/AM2RPortHelper/utils/Contents/MacOS/Mac_Runner b/AM2RPortHelper/utils/Contents/MacOS/Mac_Runner new file mode 100755 index 0000000..8e20aeb Binary files /dev/null and b/AM2RPortHelper/utils/Contents/MacOS/Mac_Runner differ diff --git a/AM2RPortHelper/utils/Contents/PkgInfo b/AM2RPortHelper/utils/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/AM2RPortHelper/utils/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/AM2RPortHelper/utils/Contents/Resources/English.lproj/MainMenu.nib b/AM2RPortHelper/utils/Contents/Resources/English.lproj/MainMenu.nib new file mode 100644 index 0000000..478bab4 --- /dev/null +++ b/AM2RPortHelper/utils/Contents/Resources/English.lproj/MainMenu.nib @@ -0,0 +1,10372 @@ + + + + + $archiver + NSKeyedArchiver + $objects + + $null + + $class + + CF$UID + 651 + + NSAccessibilityConnectors + + CF$UID + 649 + + NSAccessibilityOidsKeys + + CF$UID + 650 + + NSAccessibilityOidsValues + + CF$UID + 650 + + NSConnections + + CF$UID + 7 + + NSObjectsKeys + + CF$UID + 441 + + NSObjectsValues + + CF$UID + 478 + + NSOidsKeys + + CF$UID + 479 + + NSOidsValues + + CF$UID + 480 + + NSRoot + + CF$UID + 2 + + NSVisibleWindows + + CF$UID + 5 + + + + $class + + CF$UID + 4 + + NSClassName + + CF$UID + 3 + + + NSApplication + + $classes + + NSCustomObject + NSObject + + $classname + NSCustomObject + + + $class + + CF$UID + 6 + + NS.objects + + + + $classes + + NSMutableSet + NSSet + NSObject + + $classname + NSMutableSet + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 8 + + + CF$UID + 13 + + + CF$UID + 67 + + + CF$UID + 84 + + + CF$UID + 86 + + + CF$UID + 137 + + + CF$UID + 177 + + + CF$UID + 205 + + + CF$UID + 275 + + + CF$UID + 277 + + + CF$UID + 279 + + + CF$UID + 281 + + + CF$UID + 283 + + + CF$UID + 285 + + + CF$UID + 320 + + + CF$UID + 322 + + + CF$UID + 324 + + + CF$UID + 347 + + + CF$UID + 349 + + + CF$UID + 371 + + + CF$UID + 373 + + + CF$UID + 375 + + + CF$UID + 377 + + + CF$UID + 379 + + + CF$UID + 381 + + + CF$UID + 383 + + + CF$UID + 385 + + + CF$UID + 387 + + + CF$UID + 389 + + + CF$UID + 390 + + + CF$UID + 391 + + + CF$UID + 392 + + + CF$UID + 394 + + + CF$UID + 396 + + + CF$UID + 399 + + + CF$UID + 401 + + + CF$UID + 405 + + + CF$UID + 407 + + + CF$UID + 409 + + + CF$UID + 411 + + + CF$UID + 413 + + + CF$UID + 415 + + + CF$UID + 417 + + + CF$UID + 419 + + + CF$UID + 421 + + + CF$UID + 423 + + + CF$UID + 425 + + + CF$UID + 427 + + + CF$UID + 429 + + + CF$UID + 431 + + + CF$UID + 433 + + + CF$UID + 435 + + + CF$UID + 437 + + + CF$UID + 439 + + + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 11 + + NSSource + + CF$UID + 2 + + + + $class + + CF$UID + 4 + + NSClassName + + CF$UID + 10 + + + Mac_RunnerAppDelegate + delegate + + $classes + + NSNibOutletConnector + NSNibConnector + NSObject + + $classname + NSNibOutletConnector + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 11 + + NSSource + + CF$UID + 14 + + + + $class + + CF$UID + 45 + + NSMenuItems + + CF$UID + 16 + + NSName + + CF$UID + 66 + + NSTitle + + CF$UID + 15 + + + AMainMenu + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 17 + + + CF$UID + 59 + + + + + $class + + CF$UID + 32 + + NSAction + + CF$UID + 26 + + NSKeyEquiv + + CF$UID + 19 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 14 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSSubmenu + + CF$UID + 27 + + NSTarget + + CF$UID + 27 + + NSTitle + + CF$UID + 18 + + + + + + $class + + CF$UID + 23 + + NSClassName + + CF$UID + 21 + + NSResourceName + + CF$UID + 22 + + + NSImage + NSMenuCheckmark + + $classes + + NSCustomResource + NSObject + + $classname + NSCustomResource + + + $class + + CF$UID + 23 + + NSClassName + + CF$UID + 21 + + NSResourceName + + CF$UID + 25 + + + NSMenuMixedState + submenuAction: + + $class + + CF$UID + 45 + + NSMenuItems + + CF$UID + 29 + + NSName + + CF$UID + 58 + + NSTitle + + CF$UID + 28 + + + GameName + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 30 + + + CF$UID + 33 + + + CF$UID + 35 + + + CF$UID + 38 + + + CF$UID + 39 + + + CF$UID + 46 + + + CF$UID + 47 + + + CF$UID + 50 + + + CF$UID + 52 + + + CF$UID + 54 + + + CF$UID + 55 + + + + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 19 + + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 31 + + + About + + $classes + + NSMenuItem + NSObject + + $classname + NSMenuItem + + + $class + + CF$UID + 32 + + NSIsDisabled + + NSIsSeparator + + NSKeyEquiv + + CF$UID + 34 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 34 + + + + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 37 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 36 + + + Preferences… + , + + $class + + CF$UID + 32 + + NSIsDisabled + + NSIsSeparator + + NSKeyEquiv + + CF$UID + 34 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 34 + + + + $class + + CF$UID + 32 + + NSAction + + CF$UID + 26 + + NSKeyEquiv + + CF$UID + 19 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSSubmenu + + CF$UID + 41 + + NSTarget + + CF$UID + 41 + + NSTitle + + CF$UID + 40 + + + Services + + $class + + CF$UID + 45 + + NSMenuItems + + CF$UID + 42 + + NSName + + CF$UID + 44 + + NSTitle + + CF$UID + 40 + + + + $class + + CF$UID + 43 + + NS.objects + + + + $classes + + NSMutableArray + NSArray + NSObject + + $classname + NSMutableArray + + _NSServicesMenu + + $classes + + NSMenu + NSObject + + $classname + NSMenu + + + $class + + CF$UID + 32 + + NSIsDisabled + + NSIsSeparator + + NSKeyEquiv + + CF$UID + 34 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 34 + + + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 49 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 48 + + + Hide + h + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 49 + + NSKeyEquivModMask + 1572864 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 51 + + + Hide Others + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 19 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 53 + + + Show All + + $class + + CF$UID + 32 + + NSIsDisabled + + NSIsSeparator + + NSKeyEquiv + + CF$UID + 34 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 34 + + + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 57 + + NSKeyEquivModMask + 1048576 + NSMenu + + CF$UID + 27 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 56 + + + Quit + q + _NSAppleMenu + + $class + + CF$UID + 32 + + NSAction + + CF$UID + 26 + + NSKeyEquiv + + CF$UID + 19 + + NSMenu + + CF$UID + 14 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSSubmenu + + CF$UID + 61 + + NSTarget + + CF$UID + 61 + + NSTitle + + CF$UID + 60 + + + View + + $class + + CF$UID + 45 + + NSMenuItems + + CF$UID + 62 + + NSTitle + + CF$UID + 60 + + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 63 + + + + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 65 + + NSKeyEquivModMask + 1310720 + NSMenu + + CF$UID + 61 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTag + 17 + NSTitle + + CF$UID + 64 + + + Toggle Fullscreen + f + _NSMainMenu + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 11 + + NSSource + + CF$UID + 68 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSScreenRect + + CF$UID + 80 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + 1618477056 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 71 + + NSWindowCollectionBehavior + 128 + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 69 + + NSWindowStyleMask + 15 + NSWindowTitle + + CF$UID + 70 + + NSWindowView + + CF$UID + 72 + + + {{344, 198}, {966, 620}} + GameName + NSWindow + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 78 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 73 + + NSvFlags + 274 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 74 + + + + + $class + + CF$UID + 77 + + NSClassName + + CF$UID + 76 + + NSFrameSize + + CF$UID + 75 + + NSNextResponder + + CF$UID + 72 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 72 + + NSvFlags + -2147483374 + + {966, 620} + YYGLView + + $classes + + NSCustomView + NSView + NSResponder + NSObject + + $classname + NSCustomView + + {966, 620} + + $classes + + NSView + NSResponder + NSObject + + $classname + NSView + + {{0, 0}, {1680, 1028}} + {10000000000000, 10000000000000} + {0, 0} + + $classes + + NSWindowTemplate + NSObject + + $classname + NSWindowTemplate + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 30 + + NSLabel + + CF$UID + 85 + + NSSource + + CF$UID + 9 + + + aboutMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 87 + + NSLabel + + CF$UID + 136 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSMinSize + + CF$UID + 135 + + NSScreenRect + + CF$UID + 134 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + 1618477056 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 71 + + NSWindowContentMinSize + + CF$UID + 90 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 88 + + NSWindowStyleMask + 11 + NSWindowTitle + + CF$UID + 89 + + NSWindowView + + CF$UID + 91 + + + {{157, 191}, {480, 270}} + Debug Window + {480, 270} + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 133 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 92 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 93 + + + CF$UID + 104 + + + CF$UID + 117 + + + CF$UID + 121 + + + CF$UID + 125 + + + CF$UID + 129 + + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 96 + + NSEnabled + + NSFrame + + CF$UID + 94 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSvFlags + 289 + + {{370, 12}, {96, 32}} + {250, 750} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 129 + NSCellFlags + 67108864 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 97 + + NSControlView + + CF$UID + 93 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + Ok + + $class + + CF$UID + 100 + + NSName + + CF$UID + 99 + + NSSize + 13 + NSfFlags + 1044 + + .AppleSystemUIFont + + $classes + + NSFont + NSObject + + $classname + NSFont + + + $class + + CF$UID + 100 + + NSName + + CF$UID + 99 + + NSSize + 13 + NSfFlags + 16 + + + $classes + + NSButtonCell + NSActionCell + NSCell + NSObject + + $classname + NSButtonCell + + + $classes + + NSButton + NSControl + NSView + NSResponder + NSObject + + $classname + NSButton + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 106 + + NSEnabled + + NSFrame + + CF$UID + 105 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 282 + + {{20, 48}, {440, 137}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + -1805647871 + NSCellFlags2 + 272629760 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 104 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 110 + + NSColorName + + CF$UID + 109 + + NSColorSpace + 6 + + System + textBackgroundColor + + $class + + CF$UID + 111 + + NSColorSpace + 3 + NSWhite + + MQA= + + + + $classes + + NSColor + NSObject + + $classname + NSColor + + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 114 + + NSColorName + + CF$UID + 113 + + NSColorSpace + 6 + + textColor + + $class + + CF$UID + 111 + + NSColorSpace + 3 + NSWhite + + MAA= + + + + $classes + + NSTextFieldCell + NSActionCell + NSCell + NSObject + + $classname + NSTextFieldCell + + + $classes + + NSTextField + NSControl + NSView + NSResponder + NSObject + + $classname + NSTextField + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 119 + + NSEnabled + + NSFrame + + CF$UID + 118 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSvFlags + 268 + + {{20, 206}, {61, 56}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2033565696 + NSButtonFlags2 + 162 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 120 + + NSControlView + + CF$UID + 117 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + Run + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 123 + + NSEnabled + + NSFrame + + CF$UID + 122 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSvFlags + 268 + + {{89, 206}, {61, 56}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2033565696 + NSButtonFlags2 + 162 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 124 + + NSControlView + + CF$UID + 121 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + Pause + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 127 + + NSEnabled + + NSFrame + + CF$UID + 126 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSvFlags + 268 + + {{158, 206}, {61, 56}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2033565696 + NSButtonFlags2 + 162 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 128 + + NSControlView + + CF$UID + 125 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + Step + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 131 + + NSEnabled + + NSFrame + + CF$UID + 130 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 91 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 91 + + NSvFlags + 265 + + {{399, 206}, {61, 56}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2033565696 + NSButtonFlags2 + 162 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 132 + + NSControlView + + CF$UID + 129 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + Stop + {480, 270} + {{0, 0}, {1680, 1028}} + {480, 292} + debugWindow + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 138 + + NSLabel + + CF$UID + 176 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 175 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSMinSize + + CF$UID + 174 + + NSScreenRect + + CF$UID + 173 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + -1602747392 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 141 + + NSWindowContentMaxSize + + CF$UID + 142 + + NSWindowContentMinSize + + CF$UID + 143 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 139 + + NSWindowStyleMask + 8223 + NSWindowTitle + + CF$UID + 140 + + NSWindowView + + CF$UID + 144 + + + {{-1038.5, 505.5}, {477, 189}} + Download + DownloadView + {477, 189} + {477, 189} + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 172 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 145 + + NSvFlags + 264 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 146 + + + CF$UID + 150 + + + CF$UID + 159 + + + CF$UID + 163 + + + CF$UID + 168 + + + + + $class + + CF$UID + 149 + + NSFrame + + CF$UID + 147 + + NSHuggingPriority + + CF$UID + 148 + + NSMaxValue + 100 + NSNextResponder + + CF$UID + 144 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 144 + + NSpiFlags + 16399 + NSvFlags + 268 + + {{39, 70}, {398, 20}} + {250, 250} + + $classes + + NSProgressIndicator + NSView + NSResponder + NSObject + + $classname + NSProgressIndicator + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 152 + + NSEnabled + + NSFrame + + CF$UID + 151 + + NSNextResponder + + CF$UID + 144 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 144 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{38, 160}, {400, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 68157504 + NSCellFlags2 + 138413056 + NSContents + + CF$UID + 153 + + NSControlView + + CF$UID + 150 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Label + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 156 + + NSColorName + + CF$UID + 155 + + NSColorSpace + 6 + + controlColor + + $class + + CF$UID + 111 + + NSColorSpace + 3 + NSWhite + + MC42NjY2NjY2NjY3AA== + + + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 110 + + NSColorName + + CF$UID + 158 + + NSColorSpace + 6 + + highlightColor + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSAntiCompressionPriority + + CF$UID + 95 + + NSCell + + CF$UID + 161 + + NSEnabled + + NSFrame + + CF$UID + 160 + + NSNextResponder + + CF$UID + 144 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 144 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 264 + + {{38, 105}, {400, 47}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 67108864 + NSCellFlags2 + 272629760 + NSContents + + CF$UID + 162 + + NSControlView + + CF$UID + 159 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Multiline Label + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 165 + + NSEnabled + + NSFrame + + CF$UID + 164 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 144 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 144 + + NSvFlags + 268 + + {{41, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 166 + + NSControlView + + CF$UID + 163 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + Change Settings + + $class + + CF$UID + 100 + + NSName + + CF$UID + 99 + + NSSize + 12 + NSfFlags + 4883 + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 170 + + NSEnabled + + NSFrame + + CF$UID + 169 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 144 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 144 + + NSvFlags + 268 + + {{313, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 171 + + NSControlView + + CF$UID + 168 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + Exit + {477, 189} + {{-1600, 150}, {1600, 900}} + {477, 211} + {477, 211} + downloadPanel + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 178 + + NSLabel + + CF$UID + 204 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSScreenRect + + CF$UID + 203 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + -1602747392 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 181 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 179 + + NSWindowStyleMask + 8223 + NSWindowTitle + + CF$UID + 180 + + NSWindowView + + CF$UID + 182 + + + {{621.5, 427}, {437, 174}} + Download Settings + DownloadSettings + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 202 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 183 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 184 + + + CF$UID + 187 + + + CF$UID + 191 + + + CF$UID + 194 + + + CF$UID + 198 + + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 186 + + NSEnabled + + NSFrame + + CF$UID + 185 + + NSNextResponder + + CF$UID + 182 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 182 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{130, 117}, {287, 22}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + -1804599231 + NSCellFlags2 + 272630784 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 184 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 189 + + NSEnabled + + NSFrame + + CF$UID + 188 + + NSNextResponder + + CF$UID + 182 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 182 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{-19, 122}, {121, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 68157504 + NSCellFlags2 + 71304192 + NSContents + + CF$UID + 190 + + NSControlView + + CF$UID + 187 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + IP Address + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 193 + + NSEnabled + + NSFrame + + CF$UID + 192 + + NSNextResponder + + CF$UID + 182 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 182 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{130, 79}, {287, 22}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + -1804599231 + NSCellFlags2 + 272630784 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 191 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 196 + + NSEnabled + + NSFrame + + CF$UID + 195 + + NSNextResponder + + CF$UID + 182 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 182 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{-19, 84}, {121, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 68157504 + NSCellFlags2 + 71304192 + NSContents + + CF$UID + 197 + + NSControlView + + CF$UID + 194 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Port + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 200 + + NSEnabled + + NSFrame + + CF$UID + 199 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 182 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 182 + + NSvFlags + 268 + + {{295, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 201 + + NSControlView + + CF$UID + 198 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + OK + {437, 174} + {{0, 0}, {1680, 1028}} + downloadSettings + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 206 + + NSLabel + + CF$UID + 274 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSMinSize + + CF$UID + 273 + + NSScreenRect + + CF$UID + 272 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + 1618477056 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 71 + + NSWindowContentMinSize + + CF$UID + 209 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 207 + + NSWindowStyleMask + 7 + NSWindowTitle + + CF$UID + 208 + + NSWindowView + + CF$UID + 210 + + + {{157, 208}, {441, 253}} + GameMaker:Studio + {441, 253} + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 271 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 211 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 212 + + + CF$UID + 215 + + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 214 + + NSEnabled + + NSFrame + + CF$UID + 213 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 210 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 210 + + NSvFlags + 289 + + {{331, 12}, {96, 32}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 129 + NSCellFlags + 67108864 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 97 + + NSControlView + + CF$UID + 212 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + + $class + + CF$UID + 270 + + NSContentView + + CF$UID + 217 + + NSFrame + + CF$UID + 264 + + NSGestureRecognizers + + CF$UID + 265 + + NSHScroller + + CF$UID + 258 + + NSMagnification + 1 + NSMaxMagnification + 4 + NSMinMagnification + 0.25 + NSNextKeyView + + CF$UID + 217 + + NSNextResponder + + CF$UID + 210 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 216 + + NSSuperview + + CF$UID + 210 + + NSVScroller + + CF$UID + 262 + + NSsFlags + 133138 + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 217 + + + CF$UID + 258 + + + CF$UID + 262 + + + + + $class + + CF$UID + 257 + + NSAutomaticallyAdjustsContentInsets + + NSBGColor + + CF$UID + 110 + + NSCursor + + CF$UID + 255 + + NSDocView + + CF$UID + 219 + + NSFrame + + CF$UID + 254 + + NSNextKeyView + + CF$UID + 219 + + NSNextResponder + + CF$UID + 215 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 218 + + NSSuperview + + CF$UID + 215 + + NScvFlags + 4 + NSvFlags + 2304 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 219 + + + + + $class + + CF$UID + 253 + + NSDelegate + + CF$UID + 0 + + NSFrameSize + + CF$UID + 220 + + NSMaxSize + + CF$UID + 252 + + NSNextResponder + + CF$UID + 217 + + NSNibTouchBar + + CF$UID + 0 + + NSSharedData + + CF$UID + 230 + + NSSuperview + + CF$UID + 217 + + NSTVFlags + 70 + NSTextContainer + + CF$UID + 221 + + NSvFlags + 2322 + + {384, 179} + + $class + + CF$UID + 229 + + NSLayoutManager + + CF$UID + 222 + + NSMinWidth + 15 + NSTCFlags + 1 + NSTextView + + CF$UID + 219 + + NSWidth + 384 + + + $class + + CF$UID + 228 + + NSDelegate + + CF$UID + 0 + + NSLMFlags + 230 + NSTextContainers + + CF$UID + 227 + + NSTextStorage + + CF$UID + 223 + + + + $class + + CF$UID + 226 + + NSDelegate + + CF$UID + 0 + + NSString + + CF$UID + 224 + + + + $class + + CF$UID + 225 + + NS.string + + + + $classes + + NSMutableString + NSString + NSObject + + $classname + NSMutableString + + + $classes + + NSTextStorage + NSMutableAttributedString + NSAttributedString + NSObject + + $classname + NSTextStorage + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 221 + + + + + $classes + + NSLayoutManager + NSObject + + $classname + NSLayoutManager + + + $classes + + NSTextContainer + NSObject + + $classname + NSTextContainer + + + $class + + CF$UID + 251 + + NSAutomaticTextCompletionDisabled + + NSBackgroundColor + + CF$UID + 110 + + NSDefaultParagraphStyle + + CF$UID + 0 + + NSFlags + 67120100 + NSInsertionColor + + CF$UID + 239 + + NSLinkAttributes + + CF$UID + 241 + + NSMarkedAttributes + + CF$UID + 0 + + NSMoreFlags + 1 + NSPreferredTextFinderStyle + 1 + NSSelectedAttributes + + CF$UID + 231 + + NSTextCheckingTypes + 0 + NSTextFinder + + CF$UID + 0 + + + + $class + + CF$UID + 238 + + NS.keys + + + CF$UID + 232 + + + CF$UID + 233 + + + NS.objects + + + CF$UID + 234 + + + CF$UID + 236 + + + + NSBackgroundColor + NSColor + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 156 + + NSColorName + + CF$UID + 235 + + NSColorSpace + 6 + + selectedTextBackgroundColor + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 114 + + NSColorName + + CF$UID + 237 + + NSColorSpace + 6 + + selectedTextColor + + $classes + + NSDictionary + NSObject + + $classname + NSDictionary + + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 114 + + NSColorName + + CF$UID + 240 + + NSColorSpace + 6 + + controlTextColor + + $class + + CF$UID + 238 + + NS.keys + + + CF$UID + 233 + + + CF$UID + 242 + + + CF$UID + 243 + + + NS.objects + + + CF$UID + 244 + + + CF$UID + 247 + + + CF$UID + 250 + + + + NSCursor + NSUnderline + + $class + + CF$UID + 111 + + NSCatalogName + + CF$UID + 108 + + NSColor + + CF$UID + 246 + + NSColorName + + CF$UID + 245 + + NSColorSpace + 6 + + linkColor + + $class + + CF$UID + 111 + + NSColorSpace + 1 + NSRGB + + MCAwIDEA + + + + $class + + CF$UID + 249 + + NSCursorType + 13 + NSHotSpot + + CF$UID + 248 + + + {8, -8} + + $classes + + NSCursor + NSObject + + $classname + NSCursor + + 1 + + $classes + + NSTextViewSharedData + NSObject + + $classname + NSTextViewSharedData + + {463, 10000000} + + $classes + + NSTextView + NSText + NSView + NSResponder + NSObject + + $classname + NSTextView + + {{1, 1}, {399, 179}} + + $class + + CF$UID + 249 + + NSCursorType + 0 + NSHotSpot + + CF$UID + 256 + + + {1, -1} + + $classes + + NSClipView + NSView + NSResponder + NSObject + + $classname + NSClipView + + + $class + + CF$UID + 261 + + NSAction + + CF$UID + 260 + + NSAllowsLogicalLayoutDirection + + NSControlAction + + CF$UID + 260 + + NSControlTarget + + CF$UID + 215 + + NSCurValue + 1 + NSFrame + + CF$UID + 259 + + NSNextResponder + + CF$UID + 215 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 215 + + NSTarget + + CF$UID + 215 + + NSsFlags + 1 + NSvFlags + -2147483392 + + {{-100, -100}, {87, 18}} + _doScroller: + + $classes + + NSScroller + NSControl + NSView + NSResponder + NSObject + + $classname + NSScroller + + + $class + + CF$UID + 261 + + NSAction + + CF$UID + 260 + + NSAllowsLogicalLayoutDirection + + NSControlAction + + CF$UID + 260 + + NSControlTarget + + CF$UID + 215 + + NSCurValue + 1 + NSFrame + + CF$UID + 263 + + NSNextResponder + + CF$UID + 215 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 215 + + NSTarget + + CF$UID + 215 + + NSvFlags + 256 + + {{385, 1}, {15, 179}} + {{20, 60}, {401, 181}} + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 266 + + + + + $class + + CF$UID + 268 + + NSGestureRecognizer.action + + CF$UID + 267 + + NSGestureRecognizer.allowedTouchTypes + 1 + NSGestureRecognizer.target + + CF$UID + 215 + + NSPanGestureRecognizer.buttonMask + 0 + NSPanGestureRecognizer.numberOfTouchesRequired + 1 + + _panWithGestureRecognizer: + + $classes + + NSPanGestureRecognizer + NSGestureRecognizer + NSObject + + $classname + NSPanGestureRecognizer + + + $classes + + NSArray + NSObject + + $classname + NSArray + + + $classes + + NSScrollView + NSView + NSResponder + NSObject + + $classname + NSScrollView + + {441, 253} + {{0, 0}, {1680, 1028}} + {441, 275} + errorWindow + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 219 + + NSLabel + + CF$UID + 276 + + NSSource + + CF$UID + 9 + + + errorWindowTextField + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 63 + + NSLabel + + CF$UID + 278 + + NSSource + + CF$UID + 9 + + + fullScreenMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 27 + + NSLabel + + CF$UID + 280 + + NSSource + + CF$UID + 9 + + + gameMenu + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 74 + + NSLabel + + CF$UID + 282 + + NSSource + + CF$UID + 9 + + + glView + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 47 + + NSLabel + + CF$UID + 284 + + NSSource + + CF$UID + 9 + + + hideMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 286 + + NSLabel + + CF$UID + 319 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSScreenRect + + CF$UID + 318 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + -1602747392 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 289 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 287 + + NSWindowStyleMask + 8221 + NSWindowTitle + + CF$UID + 288 + + NSWindowView + + CF$UID + 290 + + + {{621.5, 427}, {437, 174}} + Login + LoginPanel + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 317 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 291 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 292 + + + CF$UID + 295 + + + CF$UID + 299 + + + CF$UID + 303 + + + CF$UID + 306 + + + CF$UID + 310 + + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 294 + + NSEnabled + + NSFrame + + CF$UID + 293 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{130, 117}, {287, 22}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + -1804599231 + NSCellFlags2 + 272630784 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 292 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 297 + + NSEnabled + + NSFrame + + CF$UID + 296 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{-19, 122}, {121, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 68157504 + NSCellFlags2 + 71304192 + NSContents + + CF$UID + 298 + + NSControlView + + CF$UID + 295 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Username + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 301 + + NSEnabled + + NSFrame + + CF$UID + 300 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{-19, 84}, {121, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 68157504 + NSCellFlags2 + 71304192 + NSContents + + CF$UID + 302 + + NSControlView + + CF$UID + 299 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Password + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 305 + + NSEnabled + + NSFrame + + CF$UID + 304 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSvFlags + 268 + + {{157, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 201 + + NSControlView + + CF$UID + 303 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 308 + + NSEnabled + + NSFrame + + CF$UID + 307 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSvFlags + 268 + + {{300, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 309 + + NSControlView + + CF$UID + 306 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + Cancel + + $class + + CF$UID + 316 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 312 + + NSEnabled + + NSFrame + + CF$UID + 311 + + NSNextResponder + + CF$UID + 290 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 290 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{130, 85}, {287, 22}} + + $class + + CF$UID + 315 + + NSAllowedInputLocales + + CF$UID + 313 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + 342884417 + NSCellFlags2 + 272630848 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 310 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 314 + + + + NSAllRomanInputSourcesLocaleIdentifier + + $classes + + NSSecureTextFieldCell + NSTextFieldCell + NSActionCell + NSCell + NSObject + + $classname + NSSecureTextFieldCell + + + $classes + + NSSecureTextField + NSTextField + NSControl + NSView + NSResponder + NSObject + + $classname + NSSecureTextField + + {437, 174} + {{0, 0}, {1680, 1028}} + loginPanel + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 14 + + NSLabel + + CF$UID + 321 + + NSSource + + CF$UID + 9 + + + mainMenu + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 17 + + NSLabel + + CF$UID + 323 + + NSSource + + CF$UID + 9 + + + mainMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 325 + + NSLabel + + CF$UID + 346 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSScreenRect + + CF$UID + 345 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + -529005568 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 328 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 326 + + NSWindowStyleMask + 8223 + NSWindowTitle + + CF$UID + 327 + + NSWindowView + + CF$UID + 329 + + + {{196, 132}, {534, 118}} + Input Query + MessageView + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 344 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 330 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 331 + + + CF$UID + 334 + + + CF$UID + 337 + + + CF$UID + 341 + + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 333 + + NSEnabled + + NSFrame + + CF$UID + 332 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 329 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 329 + + NSvFlags + 268 + + {{20, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 309 + + NSControlView + + CF$UID + 331 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 336 + + NSEnabled + + NSFrame + + CF$UID + 335 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 329 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 329 + + NSvFlags + 268 + + {{392, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 97 + + NSControlView + + CF$UID + 334 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSAntiCompressionPriority + + CF$UID + 95 + + NSCell + + CF$UID + 339 + + NSEnabled + + NSFrame + + CF$UID + 338 + + NSNextResponder + + CF$UID + 329 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 329 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{17, 81}, {473, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 67108864 + NSCellFlags2 + 272629824 + NSContents + + CF$UID + 340 + + NSControlView + + CF$UID + 337 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Multiline Label + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 343 + + NSEnabled + + NSFrame + + CF$UID + 342 + + NSNextResponder + + CF$UID + 329 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 329 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{20, 48}, {494, 22}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 107 + + NSCellFlags + -1804599231 + NSCellFlags2 + 272630784 + NSContents + + CF$UID + 19 + + NSControlView + + CF$UID + 341 + + NSDrawsBackground + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 112 + + + {534, 118} + {{0, 0}, {1680, 1028}} + messagePanel + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 63 + + NSLabel + + CF$UID + 348 + + NSSource + + CF$UID + 9 + + + newFullScreenMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 350 + + NSLabel + + CF$UID + 370 + + NSSource + + CF$UID + 9 + + + + $class + + CF$UID + 83 + + NSMaxFullScreenContentSize + + CF$UID + 82 + + NSMaxSize + + CF$UID + 81 + + NSMinFullScreenContentSize + + CF$UID + 82 + + NSScreenRect + + CF$UID + 369 + + NSUserInterfaceItemIdentifier + + CF$UID + 0 + + NSViewClass + + CF$UID + 0 + + NSWTFlags + -529005568 + NSWindowBacking + 2 + NSWindowClass + + CF$UID + 353 + + NSWindowIsRestorable + + NSWindowRect + + CF$UID + 351 + + NSWindowStyleMask + 8223 + NSWindowTitle + + CF$UID + 352 + + NSWindowView + + CF$UID + 354 + + + {{779, 589}, {534, 118}} + Question + QuestionView + + $class + + CF$UID + 79 + + NSFrameSize + + CF$UID + 368 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 355 + + NSvFlags + 256 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 356 + + + CF$UID + 360 + + + CF$UID + 364 + + + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 358 + + NSEnabled + + NSFrame + + CF$UID + 357 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 354 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 354 + + NSvFlags + 268 + + {{57, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 359 + + NSControlView + + CF$UID + 356 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + Yes + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 362 + + NSEnabled + + NSFrame + + CF$UID + 361 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 354 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 354 + + NSvFlags + 268 + + {{392, 19}, {122, 19}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 167 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 164 + NSCellFlags + -2080374784 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 363 + + NSControlView + + CF$UID + 360 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 167 + + + No + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSAntiCompressionPriority + + CF$UID + 95 + + NSCell + + CF$UID + 366 + + NSEnabled + + NSFrame + + CF$UID + 365 + + NSNextResponder + + CF$UID + 354 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 354 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{17, 81}, {473, 17}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 67108864 + NSCellFlags2 + 272629824 + NSContents + + CF$UID + 367 + + NSControlView + + CF$UID + 364 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 157 + + + Multiline Label + {534, 118} + {{0, 0}, {1680, 1028}} + questionPanel + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 55 + + NSLabel + + CF$UID + 372 + + NSSource + + CF$UID + 9 + + + quitMenuItem + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 72 + + NSLabel + + CF$UID + 374 + + NSSource + + CF$UID + 9 + + + view + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 59 + + NSLabel + + CF$UID + 376 + + NSSource + + CF$UID + 9 + + + viewMenu + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 68 + + NSLabel + + CF$UID + 378 + + NSSource + + CF$UID + 9 + + + window + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 150 + + NSLabel + + CF$UID + 380 + + NSSource + + CF$UID + 138 + + + label + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 159 + + NSLabel + + CF$UID + 382 + + NSSource + + CF$UID + 138 + + + message + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 146 + + NSLabel + + CF$UID + 384 + + NSSource + + CF$UID + 138 + + + progress + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 184 + + NSLabel + + CF$UID + 386 + + NSSource + + CF$UID + 178 + + + textIPAddress + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 191 + + NSLabel + + CF$UID + 388 + + NSSource + + CF$UID + 178 + + + textPort + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 337 + + NSLabel + + CF$UID + 380 + + NSSource + + CF$UID + 325 + + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 341 + + NSLabel + + CF$UID + 382 + + NSSource + + CF$UID + 325 + + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 364 + + NSLabel + + CF$UID + 380 + + NSSource + + CF$UID + 350 + + + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 310 + + NSLabel + + CF$UID + 393 + + NSSource + + CF$UID + 286 + + + textPassword + + $class + + CF$UID + 12 + + NSDestination + + CF$UID + 292 + + NSLabel + + CF$UID + 395 + + NSSource + + CF$UID + 286 + + + textUsername + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 397 + + NSSource + + CF$UID + 30 + + + showAboutWindow: + + $classes + + NSNibControlConnector + NSNibConnector + NSObject + + $classname + NSNibControlConnector + + + $class + + CF$UID + 398 + + NSLabel + + CF$UID + 400 + + NSSource + + CF$UID + 47 + + + hide: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 402 + + NSLabel + + CF$UID + 404 + + NSSource + + CF$UID + 55 + + + + $class + + CF$UID + 4 + + NSClassName + + CF$UID + 403 + + + NSApplication + terminate: + + $class + + CF$UID + 398 + + NSLabel + + CF$UID + 406 + + NSSource + + CF$UID + 50 + + + hideOtherApplications: + + $class + + CF$UID + 398 + + NSLabel + + CF$UID + 408 + + NSSource + + CF$UID + 52 + + + unhideAllApplications: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 410 + + NSSource + + CF$UID + 93 + + + debugWindowOKClicked: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 412 + + NSSource + + CF$UID + 117 + + + debugWindowRun: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 414 + + NSSource + + CF$UID + 121 + + + debugWindowPause: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 416 + + NSSource + + CF$UID + 125 + + + debugWindowSingleStep: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 418 + + NSSource + + CF$UID + 129 + + + debugWindowSingleStop: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 9 + + NSLabel + + CF$UID + 420 + + NSSource + + CF$UID + 212 + + + errorWindowOKClicked: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 138 + + NSLabel + + CF$UID + 422 + + NSSource + + CF$UID + 163 + + + pressChangeSettings: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 138 + + NSLabel + + CF$UID + 424 + + NSSource + + CF$UID + 168 + + + pressExit: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 178 + + NSLabel + + CF$UID + 426 + + NSSource + + CF$UID + 198 + + + pressOK: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 325 + + NSLabel + + CF$UID + 428 + + NSSource + + CF$UID + 334 + + + pressOk: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 325 + + NSLabel + + CF$UID + 430 + + NSSource + + CF$UID + 331 + + + pressExit: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 350 + + NSLabel + + CF$UID + 432 + + NSSource + + CF$UID + 356 + + + pressOk: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 350 + + NSLabel + + CF$UID + 434 + + NSSource + + CF$UID + 360 + + + pressNo: + + $class + + CF$UID + 398 + + NSLabel + + CF$UID + 436 + + NSSource + + CF$UID + 63 + + + toggleFullScreen: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 286 + + NSLabel + + CF$UID + 438 + + NSSource + + CF$UID + 303 + + + pressOK: + + $class + + CF$UID + 398 + + NSDestination + + CF$UID + 286 + + NSLabel + + CF$UID + 440 + + NSSource + + CF$UID + 306 + + + pressCancel: + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 402 + + + CF$UID + 14 + + + CF$UID + 17 + + + CF$UID + 27 + + + CF$UID + 30 + + + CF$UID + 33 + + + CF$UID + 35 + + + CF$UID + 38 + + + CF$UID + 39 + + + CF$UID + 41 + + + CF$UID + 46 + + + CF$UID + 47 + + + CF$UID + 50 + + + CF$UID + 52 + + + CF$UID + 54 + + + CF$UID + 55 + + + CF$UID + 59 + + + CF$UID + 61 + + + CF$UID + 63 + + + CF$UID + 68 + + + CF$UID + 72 + + + CF$UID + 74 + + + CF$UID + 9 + + + CF$UID + 442 + + + CF$UID + 87 + + + CF$UID + 91 + + + CF$UID + 93 + + + CF$UID + 96 + + + CF$UID + 104 + + + CF$UID + 106 + + + CF$UID + 117 + + + CF$UID + 119 + + + CF$UID + 121 + + + CF$UID + 123 + + + CF$UID + 125 + + + CF$UID + 127 + + + CF$UID + 129 + + + CF$UID + 131 + + + CF$UID + 206 + + + CF$UID + 210 + + + CF$UID + 212 + + + CF$UID + 214 + + + CF$UID + 215 + + + CF$UID + 217 + + + CF$UID + 219 + + + CF$UID + 258 + + + CF$UID + 262 + + + CF$UID + 444 + + + CF$UID + 470 + + + CF$UID + 472 + + + CF$UID + 466 + + + CF$UID + 468 + + + CF$UID + 462 + + + CF$UID + 464 + + + CF$UID + 450 + + + CF$UID + 459 + + + CF$UID + 446 + + + CF$UID + 448 + + + CF$UID + 138 + + + CF$UID + 144 + + + CF$UID + 146 + + + CF$UID + 150 + + + CF$UID + 152 + + + CF$UID + 159 + + + CF$UID + 161 + + + CF$UID + 163 + + + CF$UID + 165 + + + CF$UID + 168 + + + CF$UID + 170 + + + CF$UID + 178 + + + CF$UID + 182 + + + CF$UID + 184 + + + CF$UID + 186 + + + CF$UID + 187 + + + CF$UID + 189 + + + CF$UID + 191 + + + CF$UID + 193 + + + CF$UID + 194 + + + CF$UID + 196 + + + CF$UID + 198 + + + CF$UID + 200 + + + CF$UID + 286 + + + CF$UID + 290 + + + CF$UID + 292 + + + CF$UID + 294 + + + CF$UID + 295 + + + CF$UID + 297 + + + CF$UID + 299 + + + CF$UID + 301 + + + CF$UID + 303 + + + CF$UID + 305 + + + CF$UID + 306 + + + CF$UID + 308 + + + CF$UID + 310 + + + CF$UID + 312 + + + CF$UID + 476 + + + CF$UID + 325 + + + CF$UID + 329 + + + CF$UID + 331 + + + CF$UID + 333 + + + CF$UID + 334 + + + CF$UID + 336 + + + CF$UID + 337 + + + CF$UID + 339 + + + CF$UID + 341 + + + CF$UID + 343 + + + CF$UID + 350 + + + CF$UID + 354 + + + CF$UID + 356 + + + CF$UID + 358 + + + CF$UID + 360 + + + CF$UID + 362 + + + CF$UID + 364 + + + CF$UID + 366 + + + + + $class + + CF$UID + 4 + + NSClassName + + CF$UID + 443 + + + NSFontManager + + $class + + CF$UID + 77 + + NSClassName + + CF$UID + 475 + + NSFrameSize + + CF$UID + 474 + + NSNextResponder + + CF$UID + 0 + + NSNibTouchBar + + CF$UID + 0 + + NSSubviews + + CF$UID + 445 + + NSvFlags + 268 + + + $class + + CF$UID + 43 + + NS.objects + + + CF$UID + 446 + + + CF$UID + 450 + + + CF$UID + 462 + + + CF$UID + 466 + + + CF$UID + 470 + + + + + $class + + CF$UID + 116 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 448 + + NSEnabled + + NSFrame + + CF$UID + 447 + + NSNextResponder + + CF$UID + 444 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 444 + + NSTextFieldAlignmentRectInsetsVersion + 2 + NSvFlags + 268 + + {{43, 70}, {393, 120}} + + $class + + CF$UID + 115 + + NSBackgroundColor + + CF$UID + 154 + + NSCellFlags + 67108864 + NSCellFlags2 + 138412032 + NSContents + + CF$UID + 449 + + NSControlView + + CF$UID + 446 + + NSSupport + + CF$UID + 98 + + NSTextColor + + CF$UID + 239 + + + Multiline Label + + $class + + CF$UID + 461 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 459 + + NSDragTypes + + CF$UID + 451 + + NSEditable + + NSEnabled + + NSFrame + + CF$UID + 458 + + NSNextResponder + + CF$UID + 444 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 444 + + NSvFlags + 268 + + + $class + + CF$UID + 6 + + NS.objects + + + CF$UID + 452 + + + CF$UID + 453 + + + CF$UID + 454 + + + CF$UID + 455 + + + CF$UID + 456 + + + CF$UID + 457 + + + + Apple PNG pasteboard type + Apple PDF pasteboard type + NSFilenamesPboardType + Apple PICT pasteboard type + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + {{17, 59}, {446, 196}} + + $class + + CF$UID + 460 + + NSAlign + 0 + NSAnimates + + NSCellFlags + 0 + NSCellFlags2 + 33554432 + NSScale + 0 + NSStyle + 2 + + + $classes + + NSImageCell + NSCell + NSObject + + $classname + NSImageCell + + + $classes + + NSImageView + NSControl + NSView + NSResponder + NSObject + + $classname + NSImageView + + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 464 + + NSEnabled + + NSFrame + + CF$UID + 463 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 444 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 444 + + NSvFlags + 268 + + {{370, 13}, {96, 32}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 129 + NSCellFlags + 67108864 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 465 + + NSControlView + + CF$UID + 462 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + 1-Ok + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 468 + + NSEnabled + + NSFrame + + CF$UID + 467 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 444 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 444 + + NSvFlags + 268 + + {{274, 13}, {96, 32}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 129 + NSCellFlags + 67108864 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 469 + + NSControlView + + CF$UID + 466 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + 2 + + $class + + CF$UID + 103 + + NSAllowsLogicalLayoutDirection + + NSCell + + CF$UID + 472 + + NSEnabled + + NSFrame + + CF$UID + 471 + + NSHuggingPriority + + CF$UID + 95 + + NSNextResponder + + CF$UID + 444 + + NSNibTouchBar + + CF$UID + 0 + + NSSuperview + + CF$UID + 444 + + NSvFlags + 268 + + {{178, 13}, {96, 32}} + + $class + + CF$UID + 102 + + NSAlternateContents + + CF$UID + 19 + + NSAlternateImage + + CF$UID + 101 + + NSButtonFlags + -2038284288 + NSButtonFlags2 + 129 + NSCellFlags + 67108864 + NSCellFlags2 + 134217728 + NSContents + + CF$UID + 473 + + NSControlView + + CF$UID + 470 + + NSKeyEquivalent + + CF$UID + 34 + + NSPeriodicDelay + 400 + NSPeriodicInterval + 75 + NSSupport + + CF$UID + 98 + + + 3 + {480, 272} + NSView + + $class + + CF$UID + 32 + + NSKeyEquiv + + CF$UID + 19 + + NSMixedImage + + CF$UID + 24 + + NSMnemonicLoc + 2147483647 + NSOnImage + + CF$UID + 20 + + NSTitle + + CF$UID + 477 + + + Item + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 2 + + + CF$UID + 2 + + + CF$UID + 14 + + + CF$UID + 17 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 39 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 27 + + + CF$UID + 14 + + + CF$UID + 59 + + + CF$UID + 61 + + + CF$UID + 2 + + + CF$UID + 68 + + + CF$UID + 72 + + + CF$UID + 2 + + + CF$UID + 2 + + + CF$UID + 2 + + + CF$UID + 87 + + + CF$UID + 91 + + + CF$UID + 93 + + + CF$UID + 91 + + + CF$UID + 104 + + + CF$UID + 91 + + + CF$UID + 117 + + + CF$UID + 91 + + + CF$UID + 121 + + + CF$UID + 91 + + + CF$UID + 125 + + + CF$UID + 91 + + + CF$UID + 129 + + + CF$UID + 2 + + + CF$UID + 206 + + + CF$UID + 210 + + + CF$UID + 212 + + + CF$UID + 210 + + + CF$UID + 215 + + + CF$UID + 217 + + + CF$UID + 215 + + + CF$UID + 215 + + + CF$UID + 2 + + + CF$UID + 444 + + + CF$UID + 470 + + + CF$UID + 444 + + + CF$UID + 466 + + + CF$UID + 444 + + + CF$UID + 462 + + + CF$UID + 444 + + + CF$UID + 450 + + + CF$UID + 444 + + + CF$UID + 446 + + + CF$UID + 2 + + + CF$UID + 138 + + + CF$UID + 144 + + + CF$UID + 144 + + + CF$UID + 150 + + + CF$UID + 144 + + + CF$UID + 159 + + + CF$UID + 144 + + + CF$UID + 163 + + + CF$UID + 144 + + + CF$UID + 168 + + + CF$UID + 2 + + + CF$UID + 178 + + + CF$UID + 182 + + + CF$UID + 184 + + + CF$UID + 182 + + + CF$UID + 187 + + + CF$UID + 182 + + + CF$UID + 191 + + + CF$UID + 182 + + + CF$UID + 194 + + + CF$UID + 182 + + + CF$UID + 198 + + + CF$UID + 2 + + + CF$UID + 286 + + + CF$UID + 290 + + + CF$UID + 292 + + + CF$UID + 290 + + + CF$UID + 295 + + + CF$UID + 290 + + + CF$UID + 299 + + + CF$UID + 290 + + + CF$UID + 303 + + + CF$UID + 290 + + + CF$UID + 306 + + + CF$UID + 290 + + + CF$UID + 310 + + + CF$UID + 2 + + + CF$UID + 2 + + + CF$UID + 325 + + + CF$UID + 329 + + + CF$UID + 331 + + + CF$UID + 329 + + + CF$UID + 334 + + + CF$UID + 329 + + + CF$UID + 337 + + + CF$UID + 329 + + + CF$UID + 341 + + + CF$UID + 2 + + + CF$UID + 350 + + + CF$UID + 354 + + + CF$UID + 356 + + + CF$UID + 354 + + + CF$UID + 360 + + + CF$UID + 354 + + + CF$UID + 364 + + + + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 2 + + + CF$UID + 402 + + + CF$UID + 14 + + + CF$UID + 17 + + + CF$UID + 27 + + + CF$UID + 30 + + + CF$UID + 33 + + + CF$UID + 35 + + + CF$UID + 38 + + + CF$UID + 39 + + + CF$UID + 41 + + + CF$UID + 46 + + + CF$UID + 47 + + + CF$UID + 50 + + + CF$UID + 52 + + + CF$UID + 54 + + + CF$UID + 55 + + + CF$UID + 59 + + + CF$UID + 61 + + + CF$UID + 63 + + + CF$UID + 68 + + + CF$UID + 72 + + + CF$UID + 74 + + + CF$UID + 9 + + + CF$UID + 442 + + + CF$UID + 87 + + + CF$UID + 91 + + + CF$UID + 93 + + + CF$UID + 96 + + + CF$UID + 104 + + + CF$UID + 106 + + + CF$UID + 117 + + + CF$UID + 119 + + + CF$UID + 121 + + + CF$UID + 123 + + + CF$UID + 125 + + + CF$UID + 127 + + + CF$UID + 129 + + + CF$UID + 131 + + + CF$UID + 206 + + + CF$UID + 210 + + + CF$UID + 212 + + + CF$UID + 214 + + + CF$UID + 215 + + + CF$UID + 217 + + + CF$UID + 219 + + + CF$UID + 258 + + + CF$UID + 262 + + + CF$UID + 444 + + + CF$UID + 470 + + + CF$UID + 472 + + + CF$UID + 466 + + + CF$UID + 468 + + + CF$UID + 462 + + + CF$UID + 464 + + + CF$UID + 450 + + + CF$UID + 459 + + + CF$UID + 446 + + + CF$UID + 448 + + + CF$UID + 138 + + + CF$UID + 144 + + + CF$UID + 146 + + + CF$UID + 150 + + + CF$UID + 152 + + + CF$UID + 159 + + + CF$UID + 161 + + + CF$UID + 163 + + + CF$UID + 165 + + + CF$UID + 168 + + + CF$UID + 170 + + + CF$UID + 178 + + + CF$UID + 182 + + + CF$UID + 184 + + + CF$UID + 186 + + + CF$UID + 187 + + + CF$UID + 189 + + + CF$UID + 191 + + + CF$UID + 193 + + + CF$UID + 194 + + + CF$UID + 196 + + + CF$UID + 198 + + + CF$UID + 200 + + + CF$UID + 286 + + + CF$UID + 290 + + + CF$UID + 292 + + + CF$UID + 294 + + + CF$UID + 295 + + + CF$UID + 297 + + + CF$UID + 299 + + + CF$UID + 301 + + + CF$UID + 303 + + + CF$UID + 305 + + + CF$UID + 306 + + + CF$UID + 308 + + + CF$UID + 310 + + + CF$UID + 312 + + + CF$UID + 476 + + + CF$UID + 325 + + + CF$UID + 329 + + + CF$UID + 331 + + + CF$UID + 333 + + + CF$UID + 334 + + + CF$UID + 336 + + + CF$UID + 337 + + + CF$UID + 339 + + + CF$UID + 341 + + + CF$UID + 343 + + + CF$UID + 350 + + + CF$UID + 354 + + + CF$UID + 356 + + + CF$UID + 358 + + + CF$UID + 360 + + + CF$UID + 362 + + + CF$UID + 364 + + + CF$UID + 366 + + + CF$UID + 8 + + + CF$UID + 13 + + + CF$UID + 67 + + + CF$UID + 84 + + + CF$UID + 86 + + + CF$UID + 137 + + + CF$UID + 177 + + + CF$UID + 205 + + + CF$UID + 275 + + + CF$UID + 277 + + + CF$UID + 279 + + + CF$UID + 281 + + + CF$UID + 283 + + + CF$UID + 285 + + + CF$UID + 320 + + + CF$UID + 322 + + + CF$UID + 324 + + + CF$UID + 347 + + + CF$UID + 349 + + + CF$UID + 371 + + + CF$UID + 373 + + + CF$UID + 375 + + + CF$UID + 377 + + + CF$UID + 379 + + + CF$UID + 381 + + + CF$UID + 383 + + + CF$UID + 385 + + + CF$UID + 387 + + + CF$UID + 389 + + + CF$UID + 390 + + + CF$UID + 391 + + + CF$UID + 392 + + + CF$UID + 394 + + + CF$UID + 396 + + + CF$UID + 399 + + + CF$UID + 401 + + + CF$UID + 405 + + + CF$UID + 407 + + + CF$UID + 409 + + + CF$UID + 411 + + + CF$UID + 413 + + + CF$UID + 415 + + + CF$UID + 417 + + + CF$UID + 419 + + + CF$UID + 421 + + + CF$UID + 423 + + + CF$UID + 425 + + + CF$UID + 427 + + + CF$UID + 429 + + + CF$UID + 431 + + + CF$UID + 433 + + + CF$UID + 435 + + + CF$UID + 437 + + + CF$UID + 439 + + + + + $class + + CF$UID + 269 + + NS.objects + + + CF$UID + 250 + + + CF$UID + 481 + + + CF$UID + 482 + + + CF$UID + 483 + + + CF$UID + 484 + + + CF$UID + 485 + + + CF$UID + 486 + + + CF$UID + 487 + + + CF$UID + 488 + + + CF$UID + 489 + + + CF$UID + 490 + + + CF$UID + 491 + + + CF$UID + 492 + + + CF$UID + 493 + + + CF$UID + 494 + + + CF$UID + 495 + + + CF$UID + 496 + + + CF$UID + 497 + + + CF$UID + 498 + + + CF$UID + 499 + + + CF$UID + 500 + + + CF$UID + 501 + + + CF$UID + 502 + + + CF$UID + 503 + + + CF$UID + 504 + + + CF$UID + 505 + + + CF$UID + 506 + + + CF$UID + 507 + + + CF$UID + 508 + + + CF$UID + 509 + + + CF$UID + 510 + + + CF$UID + 511 + + + CF$UID + 512 + + + CF$UID + 513 + + + CF$UID + 514 + + + CF$UID + 515 + + + CF$UID + 516 + + + CF$UID + 517 + + + CF$UID + 518 + + + CF$UID + 519 + + + CF$UID + 520 + + + CF$UID + 521 + + + CF$UID + 522 + + + CF$UID + 523 + + + CF$UID + 524 + + + CF$UID + 525 + + + CF$UID + 526 + + + CF$UID + 527 + + + CF$UID + 528 + + + CF$UID + 529 + + + CF$UID + 530 + + + CF$UID + 531 + + + CF$UID + 532 + + + CF$UID + 533 + + + CF$UID + 534 + + + CF$UID + 535 + + + CF$UID + 536 + + + CF$UID + 537 + + + CF$UID + 538 + + + CF$UID + 539 + + + CF$UID + 540 + + + CF$UID + 541 + + + CF$UID + 542 + + + CF$UID + 543 + + + CF$UID + 544 + + + CF$UID + 545 + + + CF$UID + 546 + + + CF$UID + 547 + + + CF$UID + 548 + + + CF$UID + 549 + + + CF$UID + 550 + + + CF$UID + 551 + + + CF$UID + 552 + + + CF$UID + 553 + + + CF$UID + 554 + + + CF$UID + 555 + + + CF$UID + 556 + + + CF$UID + 557 + + + CF$UID + 558 + + + CF$UID + 559 + + + CF$UID + 560 + + + CF$UID + 561 + + + CF$UID + 562 + + + CF$UID + 563 + + + CF$UID + 564 + + + CF$UID + 565 + + + CF$UID + 566 + + + CF$UID + 567 + + + CF$UID + 568 + + + CF$UID + 569 + + + CF$UID + 570 + + + CF$UID + 571 + + + CF$UID + 572 + + + CF$UID + 573 + + + CF$UID + 574 + + + CF$UID + 575 + + + CF$UID + 576 + + + CF$UID + 577 + + + CF$UID + 578 + + + CF$UID + 579 + + + CF$UID + 580 + + + CF$UID + 581 + + + CF$UID + 582 + + + CF$UID + 583 + + + CF$UID + 584 + + + CF$UID + 585 + + + CF$UID + 586 + + + CF$UID + 587 + + + CF$UID + 588 + + + CF$UID + 589 + + + CF$UID + 590 + + + CF$UID + 591 + + + CF$UID + 592 + + + CF$UID + 593 + + + CF$UID + 594 + + + CF$UID + 595 + + + CF$UID + 596 + + + CF$UID + 597 + + + CF$UID + 598 + + + CF$UID + 599 + + + CF$UID + 600 + + + CF$UID + 601 + + + CF$UID + 602 + + + CF$UID + 603 + + + CF$UID + 604 + + + CF$UID + 605 + + + CF$UID + 606 + + + CF$UID + 607 + + + CF$UID + 608 + + + CF$UID + 609 + + + CF$UID + 610 + + + CF$UID + 611 + + + CF$UID + 612 + + + CF$UID + 613 + + + CF$UID + 614 + + + CF$UID + 615 + + + CF$UID + 616 + + + CF$UID + 617 + + + CF$UID + 618 + + + CF$UID + 619 + + + CF$UID + 620 + + + CF$UID + 621 + + + CF$UID + 622 + + + CF$UID + 623 + + + CF$UID + 624 + + + CF$UID + 625 + + + CF$UID + 626 + + + CF$UID + 627 + + + CF$UID + 628 + + + CF$UID + 629 + + + CF$UID + 630 + + + CF$UID + 631 + + + CF$UID + 632 + + + CF$UID + 633 + + + CF$UID + 634 + + + CF$UID + 635 + + + CF$UID + 636 + + + CF$UID + 637 + + + CF$UID + 638 + + + CF$UID + 639 + + + CF$UID + 640 + + + CF$UID + 641 + + + CF$UID + 642 + + + CF$UID + 643 + + + CF$UID + 644 + + + CF$UID + 645 + + + CF$UID + 646 + + + CF$UID + 647 + + + CF$UID + 648 + + + + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + + $class + + CF$UID + 43 + + NS.objects + + + + $class + + CF$UID + 269 + + NS.objects + + + + $classes + + NSIBObjectData + NSObject + + $classname + NSIBObjectData + + + $top + + IB.objectdata + + CF$UID + 1 + + IB.systemFontUpdateVersion + 1 + + $version + 100000 + + diff --git a/AM2RPortHelper/utils/Contents/Resources/gamecontrollerdb.txt b/AM2RPortHelper/utils/Contents/Resources/gamecontrollerdb.txt new file mode 100644 index 0000000..33b79e0 --- /dev/null +++ b/AM2RPortHelper/utils/Contents/Resources/gamecontrollerdb.txt @@ -0,0 +1,110 @@ +# Windows - DINPUT +8f0e1200000000000000504944564944,Acme,platform:Windows,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, +341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, +6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,platform:Windows, +4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Windows, +25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows, +4c05c405000000000000504944564944,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +6d0418c2000000000000504944564944,Logitech RumblePad 2 USB,platform:Windows,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +36280100000000000000504944564944,OUYA Controller,platform:Windows,a:b0,b:b3,y:b2,x:b1,start:b14,guide:b15,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b8,dpleft:b10,dpdown:b9,dpright:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b12,righttrigger:b13, +4f0400b3000000000000504944564944,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Windows, +00f00300000000000000504944564944,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows, +00f0f100000000000000504944564944,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Windows, +28040140000000000000504944564944,GamePad Pro USB,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,lefttrigger:b6,righttrigger:b7, +ff113133000000000000504944564944,SVEN X-PAD,platform:Windows,a:b2,b:b3,y:b1,x:b0,start:b5,back:b4,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b8,righttrigger:b9, +8f0e0300000000000000504944564944,Piranha xtreme,platform:Windows,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, +8f0e0d31000000000000504944564944,Multilaser JS071 USB,platform:Windows,a:b1,b:b2,y:b3,x:b0,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, +10080300000000000000504944564944,PS2 USB,platform:Windows,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a4,righty:a2,lefttrigger:b4,righttrigger:b5, +79000600000000000000504944564944,G-Shark GS-GP702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Windows, +4b12014d000000000000504944564944,NYKO AIRFLO,a:b0,b:b1,x:b2,y:b3,back:b8,guide:b10,start:b9,leftstick:a0,rightstick:a2,leftshoulder:a3,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:h0.6,lefty:h0.12,rightx:h0.9,righty:h0.4,lefttrigger:b6,righttrigger:b7,platform:Windows, +d6206dca000000000000504944564944,PowerA Pro Ex,a:b1,b:b2,x:b0,y:b3,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.0,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Windows, +a3060cff000000000000504944564944,Saitek P2500,a:b2,b:b3,y:b1,x:b0,start:b4,guide:b10,back:b5,leftstick:b8,rightstick:b9,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,platform:Windows, +4f0415b3000000000000504944564944,Thrustmaster Dual Analog 3.2,platform:Windows,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +6f0e1e01000000000000504944564944,Rock Candy Gamepad for PS3,platform:Windows,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, +83056020000000000000504944564944,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,y:b2,x:b3,start:b7,back:b6,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Windows, +10080100000000000000504944564944,PS1 USB,platform:Windows,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, + +# OS X +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, +6d0400000000000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +6d0400000000000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, +4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,Platform:Mac OS X, +5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +891600000000000000fd000000000000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b8,guide:b10,back:b9,leftstick:b6,rightstick:b7,leftshoulder:b4,rightshoulder:b5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Mac OS X, +4f0400000000000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Mac OS X, +8f0e0000000000000300000000000000,Piranha xtreme,platform:Mac OS X,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, +0d0f0000000000004d00000000000000,HORI Gem Pad 3,platform:Mac OS X,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, +79000000000000000600000000000000,G-Shark GP-702,a:b2,b:b1,x:b3,y:b0,back:b8,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Mac OS X, +4f0400000000000015b3000000000000,Thrustmaster Dual Analog 3.2,platform:Mac OS X,x:b1,a:b0,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +AD1B00000000000001F9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, +050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,y:b9,x:b10,start:b6,guide:b8,back:b7,dpup:b2,dpleft:b0,dpdown:b3,dpright:b1,leftx:a0,lefty:a1,lefttrigger:b12,righttrigger:,leftshoulder:b11,platform:Mac OS X, +83050000000000006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Mac OS X, + +# Linux +0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, +03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, +030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, +030000004c050000c405000011010000,Sony DualShock 4,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7,platform:Linux, +030000006f0e00003001000001010000,EA Sports PS3 Controller,platform:Linux,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, +03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,y:b0,x:b3,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platform:Linux, +03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a4,lefttrigger:b6,righttrigger:b7,platform:Linux, +030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,y:b3,x:b1,start:b9,guide:,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux, +030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5, +030000008f0e00000300000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b6,lefttrigger:b4,rightshoulder:b7,righttrigger:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, +030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick ,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a2, +030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, +030000006d04000016c2000010010000,Logitech Logitech Dual Action,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +03000000260900008888000000010000,GameCube {WiseGroup USB box},a:b0,b:b2,y:b3,x:b1,start:b7,leftshoulder:,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,rightstick:,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,platform:Linux, +030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,y:b4,x:b3,start:b8,guide:b5,back:b2,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b9,righttrigger:b10,platform:Linux, +030000006d04000018c2000010010000,Logitech Logitech RumblePad 2 USB,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +05000000d6200000ad0d000001000000,Moga Pro,platform:Linux,a:b0,b:b1,y:b3,x:b2,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a5,righttrigger:a4, +030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,guide:b12,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7, +030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,platform:Linux,a:b1,b:b2,x:b0,y:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a5,lefttrigger:b6,righttrigger:b7, +0300000000f000000300000000010000,RetroUSB.com RetroPad,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, +0300000000f00000f100000000010000,RetroUSB.com Super RetroPort,a:b1,b:b5,x:b0,y:b4,back:b2,start:b3,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1,platform:Linux, +030000006f0e00001f01000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, +03000000280400000140000000010000,Gravis GamePad Pro USB ,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftx:a0,lefty:a1, +030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b6,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b5,lefttrigger:a2,rightshoulder:b2,righttrigger:a5,leftstick:b8,rightstick:b9,leftx:a0,lefty:a1,rightx:a3,righty:a4, +030000006f0e00001e01000011010000,Rock Candy Gamepad for PS3,platform:Linux,a:b1,b:b2,x:b0,y:b3,back:b8,start:b9,guide:b12,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, +03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,platform:Linux,a:b2,b:b1,y:b0,x:b3,start:b8,back:b9,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5, +030000008916000000fd000024010000,Razer Onza Tournament,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:b13,dpleft:b11,dpdown:b14,dpright:b12,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, +030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,y:b3,x:b1,start:b10,guide:b8,back:b9,leftstick:b11,rightstick:b12,leftshoulder:b4,rightshoulder:b6,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b5,righttrigger:b7,platform:Linux, +03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,y:b3,x:b2,start:b7,guide:b8,back:b6,leftstick:b9,rightstick:b10,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux, +050000004c050000c405000000010000,PS4 Controller (Bluetooth),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +060000004c0500006802000000010000,PS3 Controller (Bluetooth),a:b14,b:b13,y:b12,x:b15,start:b3,guide:b16,back:b0,leftstick:b1,rightstick:b2,leftshoulder:b10,rightshoulder:b11,dpup:b4,dpleft:b7,dpdown:b6,dpright:b5,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b8,righttrigger:b9,platform:Linux, +03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick ,platform:Linux,x:b3,a:b2,b:b1,y:b0,back:b8,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4, +03000000666600000488000000010000,Super Joy Box 5 Pro,platform:Linux,a:b2,b:b1,x:b3,y:b0,back:b9,start:b8,leftshoulder:b6,rightshoulder:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b4,righttrigger:b5,dpup:b12,dpleft:b15,dpdown:b14,dpright:b13, +05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2, +05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2, +030000008916000001fd000024010000,Razer Onza Classic Edition,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:b11,dpdown:b14,dpright:b12,dpup:b13,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, +030000005e040000d102000001010000,Microsoft X-Box One pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, +03000000790000001100000010010000,RetroLink Saturn Classic Controller,platform:Linux,x:b3,a:b0,b:b1,y:b4,back:b5,guide:b2,start:b8,leftshoulder:b6,rightshoulder:b7,leftx:a0,lefty:a1, +050000007e0500003003000001000000,Nintendo Wii U Pro Controller,platform:Linux,a:b0,b:b1,x:b3,y:b2,back:b8,start:b9,guide:b10,leftshoulder:b4,rightshoulder:b5,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,dpup:b13,dpleft:b15,dpdown:b14,dpright:b16, +030000005e0400008e02000004010000,Microsoft X-Box 360 pad,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2, +030000000d0f00002200000011010000,HORI CO.,LTD. REAL ARCADE Pro.V3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1, +030000000d0f00001000000011010000,HORI CO.,LTD. FIGHTING STICK 3,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7 +03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3, +0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),platform:Linux,a:b0,b:b1,x:b2,y:b3,start:b7,back:b6,guide:b8,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,lefttrigger:a5,righttrigger:a4,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a2,righty:a3, +03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,y:b0,x:b3,start:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7,platform:Linux, +030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, +030000006f0e00001304000000010000,Generic X-Box pad,platform:Linux,x:b2,a:b0,b:b1,y:b3,back:b6,guide:b8,start:b7,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,leftstick:a0,rightstick:a3,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4, +03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,platform:Linux,x:b0,a:b1,b:b2,y:b3,back:b8,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a2,rightshoulder:b6,rightshoulder:b5,righttrigger:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a3,righty:a4, +03000000830500006020000010010000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,x:b3,y:b2,back:b6,start:b7,leftshoulder:b4,rightshoulder:b5,leftx:a0,lefty:a1,platform:Linux, +03000000c9110000f055000011010000,HJC Game GAMEPAD,leftx:a0,lefty:a1,dpdown:h0.4,rightstick:b11,rightshoulder:b5,rightx:a2,start:b9,righty:a3,dpleft:h0.8,lefttrigger:b6,x:b2,dpup:h0.1,back:b8,leftstick:b10,leftshoulder:b4,y:b3,a:b0,dpright:h0.2,righttrigger:b7,b:b1,platform:Linux, +03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,y:b3,x:b0,start:b12,guide:b9,back:b8,leftstick:b10,rightstick:b11,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a2,lefttrigger:b4,righttrigger:b5,platorm:Linux, +03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,y:b3,x:b0,start:b9,guide:,back:,leftstick:,rightstick:,leftshoulder:,dpleft:b15,dpdown:b14,dpright:b13,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:a3,righttrigger:a4,rightshoulder:b7,dpup:b12,platform:Linux, \ No newline at end of file diff --git a/AM2RPortHelper/utils/Contents/Resources/yoyorunner.config b/AM2RPortHelper/utils/Contents/Resources/yoyorunner.config new file mode 100644 index 0000000..b385aac --- /dev/null +++ b/AM2RPortHelper/utils/Contents/Resources/yoyorunner.config @@ -0,0 +1,6 @@ +YY_Mac_VERSION=$SOURCE_MAJOR_VERSION.$SOURCE_MINOR_VERSION.$SOURCE_BUILD_NUMBER +YY_Mac_AppId=com.yoyogames.am2r +YY_Mac_DisplayName="YoYo Runner" +YY_Mac_Icon=YoYoRunner.icns +YY_Mac_App_Category=public.app-category.developer-tools +YY_Mac_Resizeable_Window=1 diff --git a/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.Scripting.dll b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.Scripting.dll new file mode 100644 index 0000000..8218d03 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.Scripting.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.dll b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 0000000..883697c Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.Scripting.dll b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.Scripting.dll new file mode 100644 index 0000000..2727d0c Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.Scripting.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.dll b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.dll new file mode 100644 index 0000000..9b51cba Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Microsoft.CodeAnalysis.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/Microsoft.Win32.SystemEvents.dll b/AM2RPortHelper/utils/UTMTCli/Microsoft.Win32.SystemEvents.dll new file mode 100644 index 0000000..d62f333 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Microsoft.Win32.SystemEvents.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/Newtonsoft.Json.dll b/AM2RPortHelper/utils/UTMTCli/Newtonsoft.Json.dll new file mode 100644 index 0000000..1ffeabe Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/Newtonsoft.Json.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/PropertyChanged.dll b/AM2RPortHelper/utils/UTMTCli/PropertyChanged.dll new file mode 100644 index 0000000..571d594 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/PropertyChanged.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/System.CommandLine.dll b/AM2RPortHelper/utils/UTMTCli/System.CommandLine.dll new file mode 100644 index 0000000..6fbcda9 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/System.CommandLine.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/System.Drawing.Common.dll b/AM2RPortHelper/utils/UTMTCli/System.Drawing.Common.dll new file mode 100644 index 0000000..6ab3e30 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/System.Drawing.Common.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.deps.json b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.deps.json new file mode 100644 index 0000000..4e46ce4 --- /dev/null +++ b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.deps.json @@ -0,0 +1,309 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v5.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v5.0": { + "UndertaleModCli/1.0.0": { + "dependencies": { + "Microsoft.CodeAnalysis.CSharp.Scripting": "3.9.0", + "Newtonsoft.Json": "13.0.1", + "System.CommandLine": "2.0.0-beta1.21308.1", + "UndertaleModLib": "1.0.0" + }, + "runtime": { + "UndertaleModCli.dll": {} + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": {}, + "Microsoft.CodeAnalysis.Common/3.9.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.0.0", + "System.Collections.Immutable": "5.0.0", + "System.Memory": "4.5.4", + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encoding.CodePages": "4.5.1", + "System.Threading.Tasks.Extensions": "4.5.4" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "3.9.0.0", + "fileVersion": "3.900.21.12420" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/3.9.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "3.9.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "3.9.0.0", + "fileVersion": "3.900.21.12420" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Scripting/3.9.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "Microsoft.CodeAnalysis.CSharp": "3.9.0", + "Microsoft.CodeAnalysis.Common": "3.9.0", + "Microsoft.CodeAnalysis.Scripting.Common": "3.9.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Scripting.dll": { + "assemblyVersion": "3.9.0.0", + "fileVersion": "3.900.21.12420" + } + } + }, + "Microsoft.CodeAnalysis.Scripting.Common/3.9.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "3.9.0" + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Scripting.dll": { + "assemblyVersion": "3.9.0.0", + "fileVersion": "3.900.21.12420" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "Microsoft.NETCore.Platforms/5.0.0": {}, + "Microsoft.Win32.SystemEvents/5.0.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll": { + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + }, + "runtimeTargets": { + "runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "5.0.0.0", + "fileVersion": "5.0.20.51904" + } + } + }, + "Newtonsoft.Json/13.0.1": { + "runtime": { + "lib/netstandard2.0/Newtonsoft.Json.dll": { + "assemblyVersion": "13.0.0.0", + "fileVersion": "13.0.1.25517" + } + } + }, + "PropertyChanged.Fody/3.3.3": { + "runtime": { + "lib/netstandard2.1/PropertyChanged.dll": { + "assemblyVersion": "3.3.3.0", + "fileVersion": "3.3.3.0" + } + } + }, + "System.Collections.Immutable/5.0.0": {}, + "System.CommandLine/2.0.0-beta1.21308.1": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Memory": "4.5.4" + }, + "runtime": { + "lib/netstandard2.0/System.CommandLine.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.21.30801" + } + } + }, + "System.Drawing.Common/5.0.2": { + "dependencies": { + "Microsoft.Win32.SystemEvents": "5.0.0" + }, + "runtime": { + "lib/netcoreapp3.0/System.Drawing.Common.dll": { + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + } + }, + "runtimeTargets": { + "runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "rid": "unix", + "assetType": "runtime", + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + }, + "runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll": { + "rid": "win", + "assetType": "runtime", + "assemblyVersion": "5.0.0.2", + "fileVersion": "5.0.421.11614" + } + } + }, + "System.Memory/4.5.4": {}, + "System.Reflection.Metadata/5.0.0": {}, + "System.Runtime.CompilerServices.Unsafe/5.0.0": {}, + "System.Text.Encoding.CodePages/4.5.1": { + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } + }, + "System.Threading.Tasks.Extensions/4.5.4": {}, + "UndertaleModLib/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "PropertyChanged.Fody": "3.3.3", + "System.Drawing.Common": "5.0.2" + }, + "runtime": { + "UndertaleModLib.dll": {} + } + } + } + }, + "libraries": { + "UndertaleModCli/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CodeAnalysis.Analyzers/3.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ojG5pGAhTPmjxRGTNvuszO3H8XPZqksDwr9xLd4Ae/JBjZZdl6GuoLk7uLMf+o7yl5wO0TAqoWcEKkEWqrZE5g==", + "path": "microsoft.codeanalysis.analyzers/3.0.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.0.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/3.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-HiWjF7PNIEngmFg2Xk8cZ/83lRIRkk9v+5ibbY5B7VvjNGdClGAMuWtZER9F5rGRR41VbJLco9ah73jFTh4vPw==", + "path": "microsoft.codeanalysis.common/3.9.0", + "hashPath": "microsoft.codeanalysis.common.3.9.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/3.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NTsiK3fnoZGemy4dBHrILwg9rL+jDnOJ7aixFu4EOWM1r6MZMrNCIhT2tO4AmIMdfICLPwj910uZRRLpbMnqHg==", + "path": "microsoft.codeanalysis.csharp/3.9.0", + "hashPath": "microsoft.codeanalysis.csharp.3.9.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Scripting/3.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6Sb2z76TKmgHY/+RHEyb0kFuc0leZyWESd5xx/GePL4wGUHvGtJ+9XoYrWNGfyNJVMtJGEnyCtGr4mMS90fhGw==", + "path": "microsoft.codeanalysis.csharp.scripting/3.9.0", + "hashPath": "microsoft.codeanalysis.csharp.scripting.3.9.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Scripting.Common/3.9.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-47scTiU65vHf0qYqNYpjyRKVIjULxXqkMaBWgG+UzRXvvXdI6EZtcllMQu1qAcyC8DU96muhiLn0shNYY+OnTg==", + "path": "microsoft.codeanalysis.scripting.common/3.9.0", + "hashPath": "microsoft.codeanalysis.scripting.common.3.9.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", + "path": "microsoft.netcore.platforms/5.0.0", + "hashPath": "microsoft.netcore.platforms.5.0.0.nupkg.sha512" + }, + "Microsoft.Win32.SystemEvents/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Bh6blKG8VAKvXiLe2L+sEsn62nc1Ij34MrNxepD2OCrS5cpCwQa9MeLyhVQPQ/R4Wlzwuy6wMK8hLb11QPDRsQ==", + "path": "microsoft.win32.systemevents/5.0.0", + "hashPath": "microsoft.win32.systemevents.5.0.0.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", + "path": "newtonsoft.json/13.0.1", + "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512" + }, + "PropertyChanged.Fody/3.3.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2dHoq3+Y37J2g06RRyV57zMY9uVOq9JanPienXxineL1pIACCgxn8dL/f6C9I0L1hPvhoipxtP2u9jcSlVsn6Q==", + "path": "propertychanged.fody/3.3.3", + "hashPath": "propertychanged.fody.3.3.3.nupkg.sha512" + }, + "System.Collections.Immutable/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "path": "system.collections.immutable/5.0.0", + "hashPath": "system.collections.immutable.5.0.0.nupkg.sha512" + }, + "System.CommandLine/2.0.0-beta1.21308.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-X8qLygjyktfmcNMNFekMkumyaTblJmkH3BBbKiQlk4FvJfp613gkMKrA0CNqLUT9tEfLcm3XMzAbsiYFwM8zbQ==", + "path": "system.commandline/2.0.0-beta1.21308.1", + "hashPath": "system.commandline.2.0.0-beta1.21308.1.nupkg.sha512" + }, + "System.Drawing.Common/5.0.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rvr/M1WPf24ljpvvrVd74+NdjRUJu1bBkspkZcnzSZnmAUQWSvanlQ0k/hVHk+cHufZbZfu7vOh/vYc0q5Uu/A==", + "path": "system.drawing.common/5.0.2", + "hashPath": "system.drawing.common.5.0.2.nupkg.sha512" + }, + "System.Memory/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "path": "system.memory/4.5.4", + "hashPath": "system.memory.4.5.4.nupkg.sha512" + }, + "System.Reflection.Metadata/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==", + "path": "system.reflection.metadata/5.0.0", + "hashPath": "system.reflection.metadata.5.0.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==", + "path": "system.runtime.compilerservices.unsafe/5.0.0", + "hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512" + }, + "System.Text.Encoding.CodePages/4.5.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4J2JQXbftjPMppIHJ7IC+VXQ9XfEagN92vZZNoG12i+zReYlim5dMoXFC1Zzg7tsnKDM7JPo5bYfFK4Jheq44w==", + "path": "system.text.encoding.codepages/4.5.1", + "hashPath": "system.text.encoding.codepages.4.5.1.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.5.4": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", + "path": "system.threading.tasks.extensions/4.5.4", + "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512" + }, + "UndertaleModLib/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.dll b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.dll new file mode 100644 index 0000000..24df2ed Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.exe b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.exe new file mode 100644 index 0000000..3ce4871 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.exe differ diff --git a/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.runtimeconfig.json b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.runtimeconfig.json new file mode 100644 index 0000000..22de998 --- /dev/null +++ b/AM2RPortHelper/utils/UTMTCli/UndertaleModCli.runtimeconfig.json @@ -0,0 +1,10 @@ +{ + "runtimeOptions": { + "tfm": "net5.0", + "rollForward": "LatestMajor", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "5.0.0" + } + } +} \ No newline at end of file diff --git a/AM2RPortHelper/utils/UTMTCli/UndertaleModLib.dll b/AM2RPortHelper/utils/UTMTCli/UndertaleModLib.dll new file mode 100644 index 0000000..348e97d Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/UndertaleModLib.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll b/AM2RPortHelper/utils/UTMTCli/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll new file mode 100644 index 0000000..8b95164 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll b/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll new file mode 100644 index 0000000..b5aa0c4 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/Microsoft.Win32.SystemEvents.dll differ diff --git a/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll b/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll new file mode 100644 index 0000000..b80b430 Binary files /dev/null and b/AM2RPortHelper/utils/UTMTCli/runtimes/win/lib/netcoreapp3.0/System.Drawing.Common.dll differ diff --git a/AM2RPortHelper/utils/bc16AndRemoveFunctions.csx b/AM2RPortHelper/utils/bc16AndRemoveFunctions.csx new file mode 100644 index 0000000..af98ebf --- /dev/null +++ b/AM2RPortHelper/utils/bc16AndRemoveFunctions.csx @@ -0,0 +1,185 @@ +//Upgrade from bytecode 13 (experimental), 14, 15, 17 to 16 - by Grossley +//13 and 14 do not work apparently due to variable issues that I don't know how to fix. +//Need to test this, once I do then I can obsolete the other two scripts +if (!((Data.GMS2_3 == false) && (Data.GMS2_3_1 == false) && (Data.GMS2_3_2 == false))) +{ + bool x = RunUMTScript(Path.Combine(ExePath, "HelperScripts", "ConvertFrom17to16_for_2.3.csx")); + if (x == false) + ScriptError("ConvertFrom17to16_for_2.3.csx failed!"); + return; +} + +EnsureDataLoaded(); + +string currentBytecodeVersion = Data?.GeneralInfo.BytecodeVersion.ToString(); +string game_name = Data.GeneralInfo.Name.Content; + +bool is13 = false; + +if (!(Data.FORM.Chunks.ContainsKey("AGRP"))) +{ + /* is13 = true; + ScriptMessage("Bytecode 13 type game detected. The upgrading of this game is experimental."); + currentBytecodeVersion = "13";*/ + ScriptError("Bytecode 13 is not supported."); + return; +} +if (Data?.GeneralInfo.BytecodeVersion == 14) +{ + ScriptError("Bytecode 14 is not supported."); + return; +} + +if (!((Data.GMS2_3 == false) && (Data.GMS2_3_1 == false) && (Data.GMS2_3_2 == false))) +{ + ScriptError(game_name + "is GMS 2.3+ and is ineligible", "Ineligible"); + return; +} + +if (!(Data.FORM.Chunks.ContainsKey("AGRP"))) +{ + is13 = true; + ScriptMessage("Bytecode 13 type game detected. The upgrading of this game is experimental."); + currentBytecodeVersion = "13"; +} + + +if ((Data?.GeneralInfo.BytecodeVersion == 14) || (Data?.GeneralInfo.BytecodeVersion == 15) || (is13 == true)) +{ + if (Data?.GeneralInfo.BytecodeVersion <= 14) + { + foreach (UndertaleCode code in Data.Code) + { + UndertaleCodeLocals locals = new UndertaleCodeLocals(); + locals.Name = code.Name; + + UndertaleCodeLocals.LocalVar argsLocal = new UndertaleCodeLocals.LocalVar(); + argsLocal.Name = Data.Strings.MakeString("arguments"); + argsLocal.Index = 0; + + locals.Locals.Add(argsLocal); + + code.LocalsCount = 1; + code.GenerateLocalVarDefinitions(code.FindReferencedLocalVars(), locals); // Dunno if we actually need this line, but it seems to work? + Data.CodeLocals.Add(locals); + } + } + if (!(Data.FORM.Chunks.ContainsKey("AGRP"))) + { + Data.FORM.Chunks["AGRP"] = new UndertaleChunkAGRP(); + var previous = -1; + var j = 0; + for (var i = -1; i < Data.Sounds.Count - 1; i++) + { + UndertaleSound sound = Data.Sounds[i + 1]; + bool flagCompressed = sound.Flags.HasFlag(UndertaleSound.AudioEntryFlags.IsCompressed); + bool flagEmbedded = sound.Flags.HasFlag(UndertaleSound.AudioEntryFlags.IsEmbedded); + if (i == -1) + { + if (!flagCompressed && !flagEmbedded) + { + sound.AudioID = -1; + } + else + { + sound.AudioID = 0; + previous = 0; + j = 1; + } + } + else + { + if (!flagCompressed && !flagEmbedded) + sound.AudioID = previous; + else + { + sound.AudioID = j; + previous = j; + j++; + } + } + } + foreach (UndertaleSound sound in Data.Sounds) + { + if ((sound.AudioID >= 0) && (sound.AudioID < Data.EmbeddedAudio.Count)) + { + sound.AudioFile = Data.EmbeddedAudio[sound.AudioID]; + } + sound.GroupID = 0; + } + Data.GeneralInfo.Build = 1804; + var newProductID = new byte[] { 0xBA, 0x5E, 0xBA, 0x11, 0xBA, 0xDD, 0x06, 0x60, 0xBE, 0xEF, 0xED, 0xBA, 0x0B, 0xAB, 0xBA, 0xBE }; + Data.FORM.EXTN.productIdData.Add(newProductID); + Data.Options.Constants.Clear(); + Data.Options.Constants.Add(new UndertaleOptions.Constant() { Name = Data.Strings.MakeString("@@SleepMargin"), Value = Data.Strings.MakeString(1.ToString()) }); + Data.Options.Constants.Add(new UndertaleOptions.Constant() { Name = Data.Strings.MakeString("@@DrawColour"), Value = Data.Strings.MakeString(0xFFFFFFFF.ToString()) }); + } + Data.FORM.Chunks["LANG"] = new UndertaleChunkLANG(); + Data.FORM.LANG.Object = new UndertaleLanguage(); + Data.FORM.Chunks["GLOB"] = new UndertaleChunkGLOB(); + String[] order = { "GEN8", "OPTN", "LANG", "EXTN", "SOND", "AGRP", "SPRT", "BGND", "PATH", "SCPT", "GLOB", "SHDR", "FONT", "TMLN", "OBJT", "ROOM", "DAFL", "TPAG", "CODE", "VARI", "FUNC", "STRG", "TXTR", "AUDO" }; + Dictionary newChunks = new Dictionary(); + foreach (String name in order) + newChunks[name] = Data.FORM.Chunks[name]; + Data.FORM.Chunks = newChunks; + Data.GeneralInfo.BytecodeVersion = 16; + ScriptMessage("Upgraded from " + currentBytecodeVersion + " to 16 successfully. Save the game to apply the changes."); + ScriptMessage("Trying to remove functions \"immersion_play_effect\", \"immersion_stop\" and \"font_replace\"!"); + + RemoveFunctions(); +} +else if (Data?.GeneralInfo.BytecodeVersion == 17) +{ + if (!ScriptQuestion("Downgrade bytecode from 17 to 16?")) + { + ScriptMessage("Cancelled."); + return; + } + Data.GeneralInfo.BytecodeVersion = 16; + if (Data.FORM.Chunks.ContainsKey("TGIN")) + Data.FORM.Chunks.Remove("TGIN"); + Data.GMS2_2_2_302 = false; + ScriptMessage("Downgraded from 17 to 16 successfully. Save the game to apply the changes."); +} +else if (Data?.GeneralInfo.BytecodeVersion == 16) +{ + ScriptMessage("This is already bytecode 16."); + ScriptMessage("Trying to remove functions \"immersion_play_effect\", \"immersion_stop\" and \"font_replace\"!"); + + RemoveFunctions(); + + return; +} +else +{ + string error = @"This game is not bytecode 13, +14, 15, 16, or 17, and is not made in GameMaker 2.3 +or greater. Please report this game to Grossley#2869 +on Discord and provide the name of the game, where +you obtained it from, and additionally send the +data.win file of the game." + @" + +Current status of game '" + game_name + @"': +GMS 2.3 == " + Data.GMS2_3.ToString() + @" +GMS 2.3.1 == " + Data.GMS2_3_1.ToString() + @" +GMS 2.3.2 == " + Data.GMS2_3_2.ToString() + @" +Bytecode == " + (Data?.GeneralInfo.BytecodeVersion).ToString(); + ScriptError(error, "Unknown game error"); + SetUMTConsoleText(error); + SetFinishedMessage(false); + return; +} + +void RemoveFunctions() +{ + List funcsToRemove = new List(); + + foreach (UndertaleFunction func in Data.Functions) + { + if(func.ToString() == "immersion_play_effect" || func.ToString() == "immersion_stop" || func.ToString() == "font_replace") + funcsToRemove.Add(func); + } + + foreach(var func in funcsToRemove) + Data.Functions.Remove(func); +} diff --git a/README.md b/README.md index ed7fc51..d66d419 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,25 @@ A simple tool to make porting Windows builds of AM2R-Mods to other platforms eas You need to have at least .NET Core 5 installed. ## How do I use this? -Simply compress your mod as a zip, and then drag-n-drop it into this tool. After that, select if you want to have a port made for Linux or Android. A zip/apk that can be used for the [AM2RModPacker]() will then be created into the directory next to the program. +Simply compress your mod as a zip, and then drag-n-drop it into this tool. After that, select if you want to have a port made for Linux or Android. A zip/apk that can be used for the [AM2RModPacker](https://github.com/Miepee/AM2RModpacker-Mac) will then be created into the directory next to the program. For Android builds, you need to have Java installed. + +By default, the ports will use stock splash and icon images. Replacing `icon.png`, `splash.png` and `splashAndroid.png` in the utils folder with your own is recommended. + +## Porting notes +- Keep Game Maker: Studio documentation in mind, using any functions that only work on one OS or function differently on different OS could lead to the ports having unexpected behaviour or even crashing. +- Use `/` for folder seperation, instead of `\`. `\` only works on Windows, `/` works on every OS. + +### Linux +- Don't write to the asset folder. Linux is distributed as an AppImage, which makes that whole directory read only and such operations would lead to a crash. Create the files you need in `working_directory` on game boot if they don't exist, and then write to `working_directory` instead. This will create the files and read from them in `~/.config/`. Do not ship those files in the asset folder if you're planning to write to them. + +### Mac +- The following functions will crash the game if you'll use them: + - `immersion_play_effect` and `immersion_stop`, `font_replace`. Make sure to either create an OS check before using those, or don't use them entirely. ***AM2R uses these by default, make sure to remove them or create an OS check!*** +- If you use a custom save directory that's *not* inside of `%localappdata%/AM2R`, but instead in `%localappdata%/MyModWithCoolName` you have to change `com.yoyogames.am2r` to `com.yoyogames.mymodwithcoolname` (needs to be all lowercase) in the following files: + * `utils/Contents/Info.plist`, . + * `utils/Contents/Resources/yoyorunner.config` + +### Android +- If you use a custom save directory that's *not* inside of `%localappdata%/AM2R`, but instead in `%localappdata%/MyModWithCoolName` you have to change all instances of `com.companyname.AM2RWrapper` to `com.companyname.MyModWithCoolName` in the `AndroidManifest.xml` inside of the `AM2RWrapper.apk`. For this you have to decompile the apk with apktool (`java -jar apktool.jar d AM2RWrapper.apk`), edit the contents, and then rebuild it (`java -jar b apktool.jar b AM2RWrapper`) and sign it (`java -jar uber-apk-signer.jar -a theNewApk.apk`).