Creating an SDLWindow in swift just makes it magically work

This commit is contained in:
stossy11 2024-10-30 22:25:15 +11:00
parent 16a2c8a463
commit 5511d1885c
6 changed files with 325 additions and 12 deletions

View File

@ -131,6 +131,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 4E87E29A2CCE2C1100F54325 /* Build configuration list for PBXNativeTarget "MeloNX" */;
buildPhases = (
4ECF0AD52CD0FB5B00A3820B /* ShellScript */,
4E87E2882CCE2C1000F54325 /* Sources */,
4E87E2892CCE2C1000F54325 /* Frameworks */,
4E87E28A2CCE2C1000F54325 /* Resources */,
@ -198,6 +199,28 @@
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
4ECF0AD52CD0FB5B00A3820B /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/bash;
shellScript = "
";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
4E87E2882CCE2C1000F54325 /* Sources */ = {
isa = PBXSourcesBuildPhase;
@ -359,6 +382,11 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;
@ -400,6 +428,11 @@
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
"$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX;

View File

@ -52,7 +52,6 @@ struct ContentView: View {
}
func startEmulation(game: URL) {
setenv("DOTNET_EnableDiagnostics", "0", 1)
setenv("HOME", String(validatingUTF8: getenv("HOME"))! + "/Documents", 1)
setenv("MVK_CONFIG_LOG_LEVEL", "4", 1)
@ -63,12 +62,20 @@ func startEmulation(game: URL) {
graphicsBackend: "Vulkan"
)
DispatchQueue.main.async {
patchMakeKeyAndVisible()
SDL_SetMainReady()
SDL_iPhoneSetEventPump(SDL_TRUE)
SDL_Init(SDL_INIT_VIDEO)
patchMakeKeyAndVisible()
SDL_SetMainReady()
SDL_iPhoneSetEventPump(SDL_TRUE)
print(SDL_Init(SDL_INIT_VIDEO))
let window = SDL_CreateWindow("Ryujinx", Int32(SDL_WINDOWPOS_CENTERED_MASK), Int32(SDL_WINDOWPOS_CENTERED_MASK), 640, 480, SDL_WINDOW_SHOWN.rawValue | SDL_WINDOW_ALLOW_HIGHDPI.rawValue)
if window == nil {
print("Error creating SDL window: \(String(cString: SDL_GetError()))")
} else {
print("SDL Window created successfully!")
}
// SDL_Init(SDL_INIT_VIDEO)
let emulator = RyujinxEmulator()
do {
try emulator.startWithRunLoop(config: config)
@ -87,10 +94,11 @@ func patchMakeKeyAndVisible() {
extension UIWindow {
@objc func wdb_makeKeyAndVisible() {
print("Making window key and visible...")
self.windowScene = (UIApplication.shared.connectedScenes.first! as! UIWindowScene)
if #available(iOS 13.0, *) {
self.windowScene = (UIApplication.shared.connectedScenes.first! as! UIWindowScene)
}
self.wdb_makeKeyAndVisible()
theWindow = self
reconnectVirtualController()
}
}
@ -106,7 +114,9 @@ func showVirtualController(url: URL) {
g_gcVirtualController = GCVirtualController(configuration: config)
g_gcVirtualController.connect { err in
print("Controller connect: \(String(describing: err))")
startEmulation(game: url)
DispatchQueue.main.async {
startEmulation(game: url)
}
}
}

View File

@ -68,6 +68,7 @@ class RyujinxEmulator {
// args.append(contentsOf: ["--fullscreen", "true"])
args.append(contentsOf: ["--enable-debug-logs", "true"])
args.append(contentsOf: ["--enable-trace-logs", "true"])
// args.append(contentsOf: ["--list-inputs-ids", "true"])
args.append(contentsOf: ["--input-id-1", "1-47150005-05ac-0000-0100-00004f066d01"])
// args.append("--input-path")
@ -106,7 +107,7 @@ class RyujinxEmulator {
let port = Port()
runLoop.add(port, forMode: .default)
DispatchQueue.main.async {
//DispatchQueue.main.async {
do {
try Self.start(with: config)
} catch {
@ -114,7 +115,7 @@ class RyujinxEmulator {
self.isRunning = false
return
}
}
// }

View File

@ -52,6 +52,7 @@ namespace Ryujinx.HLE
Gpu = new GpuContext(Configuration.GpuRenderer);
System = new HOS.Horizon(this);
Statistics = new PerformanceStatistics();
Hid = new Hid(this, System.HidStorage);
Processes = new ProcessLoader(this);
TamperMachine = new TamperMachine();

View File

@ -196,7 +196,7 @@ namespace Ryujinx.Headless.SDL2
throw new Exception(errorMessage);
}
SetWindowIcon();
// SetWindowIcon();
_windowId = SDL_GetWindowID(WindowHandle);
SDL2Driver.Instance.RegisterWindow(_windowId, HandleWindowEvent);
@ -218,6 +218,15 @@ namespace Ryujinx.Headless.SDL2
Height = evnt.window.data2;
Renderer?.Window.SetSize(Width, Height);
MouseDriver.SetClientSize(Width, Height);
// if (Renderer != null && Renderer.Window != null)
// {
// Renderer.Window.SetSize(Width, Height);
// }
// else
// {
// Logger.Error?.Print(LogClass.Application, "Renderer or Window is null.");
// }
// MouseDriver.SetClientSize(Width, Height);
}
break;

259
src/src.sln Normal file
View File

@ -0,0 +1,259 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.002.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ARMeilleure", "ARMeilleure\ARMeilleure.csproj", "{92028C81-6D42-42B8-ACE9-F6A0C735125D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Headless.SDL2", "Ryujinx.Headless.SDL2\Ryujinx.Headless.SDL2.csproj", "{BCA26137-98AE-4DFC-95E4-2EC3C9EA8520}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Kernel.Generators", "Ryujinx.Horizon.Kernel.Generators\Ryujinx.Horizon.Kernel.Generators.csproj", "{7C43CDDE-E3FA-48BB-AEEF-696D5B96CE57}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vulkan", "Ryujinx.Graphics.Vulkan\Ryujinx.Graphics.Vulkan.csproj", "{4509928D-F3F8-42E6-ACF0-DBAA533F85FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Video", "Ryujinx.Graphics.Video\Ryujinx.Graphics.Video.csproj", "{DDC0E4F8-5CF5-4F49-B497-02E60DA623A0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input.SDL2", "Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj", "{30ECA87A-E699-40A0-A1C0-8E4E3CA746AF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Generators", "Ryujinx.Horizon.Generators\Ryujinx.Horizon.Generators.csproj", "{3DCC6730-9571-4D08-BC0C-772B39E55020}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SDL2", "Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj", "{A23C389C-941B-4021-965F-C5EE6B572A4F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Device", "Ryujinx.Graphics.Device\Ryujinx.Graphics.Device.csproj", "{0AE5EBE7-4121-49EE-99C2-6442255FDBE0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE.Generators", "Ryujinx.HLE.Generators\Ryujinx.HLE.Generators.csproj", "{A426D174-5943-4876-9BD5-0B29D8E9E67D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Shader", "Ryujinx.Graphics.Shader\Ryujinx.Graphics.Shader.csproj", "{76ED2C02-B77C-4EAA-BEF9-FEC4B4E29FD1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Texture", "Ryujinx.Graphics.Texture\Ryujinx.Graphics.Texture.csproj", "{189172BD-B480-47F8-AC61-B66E3297E5D4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Common", "Ryujinx.Common\Ryujinx.Common.csproj", "{F2FDF393-89A1-4412-B565-09DF4279B4E3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Host1x", "Ryujinx.Graphics.Host1x\Ryujinx.Graphics.Host1x.csproj", "{F7FB045C-B4BE-470B-A6D3-1E7E844E9904}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon.Common", "Ryujinx.Horizon.Common\Ryujinx.Horizon.Common.csproj", "{E0335FAF-720B-4E1B-B444-A9B5A1F54F5B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests", "Ryujinx.Tests\Ryujinx.Tests.csproj", "{74B9FA90-71BC-49D3-B774-BEC2EED22023}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.OpenGL", "Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj", "{07FF746B-9138-4F11-8C3E-564FCEEADD36}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spv.Generator", "Spv.Generator\Spv.Generator.csproj", "{1C6167F7-A786-4D8C-B656-EE312598A594}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.OpenAL", "Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj", "{172ABA70-22DA-4D4C-9C5C-39292A87946A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Ui.Common", "Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj", "{F1B0258E-7941-40C9-BAF1-F98D3C2D51C7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.GAL", "Ryujinx.Graphics.GAL\Ryujinx.Graphics.GAL.csproj", "{AE158864-CAF7-4D66-8E47-5A81680BB927}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Input", "Ryujinx.Input\Ryujinx.Input.csproj", "{C901DBDF-D72F-4191-8653-4A0F13A999BB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx", "Ryujinx\Ryujinx.csproj", "{FB317532-E79E-4514-BDE4-3CB59961A46B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.FFmpeg", "Ryujinx.Graphics.Nvdec.FFmpeg\Ryujinx.Graphics.Nvdec.FFmpeg.csproj", "{A51D22FB-34FB-43C7-B4E2-D44882A09458}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Memory", "Ryujinx.Tests.Memory\Ryujinx.Tests.Memory.csproj", "{8D6EC127-FE6C-432B-AA33-0208ED153C71}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Horizon", "Ryujinx.Horizon\Ryujinx.Horizon.csproj", "{8FCEAD03-FB47-4E5F-95A8-039C333FC87D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio", "Ryujinx.Audio\Ryujinx.Audio.csproj", "{F6ACC37D-4BEF-4779-9A8E-899F13E19DA3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.SDL2.Common", "Ryujinx.SDL2.Common\Ryujinx.SDL2.Common.csproj", "{5AB7D4FB-D1DA-45CD-B0AD-B838CD5D6351}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Ui.LocaleGenerator", "Ryujinx.Ui.LocaleGenerator\Ryujinx.Ui.LocaleGenerator.csproj", "{B63DA225-AC04-4FD5-A126-9392F9E7FC27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec.Vp9", "Ryujinx.Graphics.Nvdec.Vp9\Ryujinx.Graphics.Nvdec.Vp9.csproj", "{C0A1D2FC-C694-4561-B34B-0341E4B95074}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Audio.Backends.SoundIo", "Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj", "{2B0FDF34-E428-43D7-B26A-3365F4EA9268}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Nvdec", "Ryujinx.Graphics.Nvdec\Ryujinx.Graphics.Nvdec.csproj", "{7A738B9E-CE8E-49C7-A3F4-1551AEA1F4A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Gpu", "Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj", "{11846CF3-1574-47CB-828E-3850BFD63C50}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Ava", "Ryujinx.Ava\Ryujinx.Ava.csproj", "{8349BAAF-08A2-4E31-A822-E2488D574EAA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Cpu", "Ryujinx.Cpu\Ryujinx.Cpu.csproj", "{200F7A51-27BD-4CF1-9902-4F7902257EF6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.HLE", "Ryujinx.HLE\Ryujinx.HLE.csproj", "{336077C8-8380-4775-9114-4448EEC6176F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Tests.Unicorn", "Ryujinx.Tests.Unicorn\Ryujinx.Tests.Unicorn.csproj", "{20E66278-A85F-4F80-A901-08E3CB9A6BC9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Graphics.Vic", "Ryujinx.Graphics.Vic\Ryujinx.Graphics.Vic.csproj", "{D820B245-0E50-4DF1-A098-655722E1FF47}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.ShaderTools", "Ryujinx.ShaderTools\Ryujinx.ShaderTools.csproj", "{7B0A43AD-8F26-42DD-A90F-3CD24703EDF4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ryujinx.Memory", "Ryujinx.Memory\Ryujinx.Memory.csproj", "{48D27A42-B417-4480-BB01-57CBB41AB790}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{92028C81-6D42-42B8-ACE9-F6A0C735125D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92028C81-6D42-42B8-ACE9-F6A0C735125D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92028C81-6D42-42B8-ACE9-F6A0C735125D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92028C81-6D42-42B8-ACE9-F6A0C735125D}.Release|Any CPU.Build.0 = Release|Any CPU
{BCA26137-98AE-4DFC-95E4-2EC3C9EA8520}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCA26137-98AE-4DFC-95E4-2EC3C9EA8520}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BCA26137-98AE-4DFC-95E4-2EC3C9EA8520}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCA26137-98AE-4DFC-95E4-2EC3C9EA8520}.Release|Any CPU.Build.0 = Release|Any CPU
{7C43CDDE-E3FA-48BB-AEEF-696D5B96CE57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C43CDDE-E3FA-48BB-AEEF-696D5B96CE57}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C43CDDE-E3FA-48BB-AEEF-696D5B96CE57}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C43CDDE-E3FA-48BB-AEEF-696D5B96CE57}.Release|Any CPU.Build.0 = Release|Any CPU
{4509928D-F3F8-42E6-ACF0-DBAA533F85FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4509928D-F3F8-42E6-ACF0-DBAA533F85FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4509928D-F3F8-42E6-ACF0-DBAA533F85FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4509928D-F3F8-42E6-ACF0-DBAA533F85FC}.Release|Any CPU.Build.0 = Release|Any CPU
{DDC0E4F8-5CF5-4F49-B497-02E60DA623A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDC0E4F8-5CF5-4F49-B497-02E60DA623A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDC0E4F8-5CF5-4F49-B497-02E60DA623A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDC0E4F8-5CF5-4F49-B497-02E60DA623A0}.Release|Any CPU.Build.0 = Release|Any CPU
{30ECA87A-E699-40A0-A1C0-8E4E3CA746AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30ECA87A-E699-40A0-A1C0-8E4E3CA746AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{30ECA87A-E699-40A0-A1C0-8E4E3CA746AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30ECA87A-E699-40A0-A1C0-8E4E3CA746AF}.Release|Any CPU.Build.0 = Release|Any CPU
{3DCC6730-9571-4D08-BC0C-772B39E55020}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3DCC6730-9571-4D08-BC0C-772B39E55020}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DCC6730-9571-4D08-BC0C-772B39E55020}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DCC6730-9571-4D08-BC0C-772B39E55020}.Release|Any CPU.Build.0 = Release|Any CPU
{A23C389C-941B-4021-965F-C5EE6B572A4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A23C389C-941B-4021-965F-C5EE6B572A4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A23C389C-941B-4021-965F-C5EE6B572A4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A23C389C-941B-4021-965F-C5EE6B572A4F}.Release|Any CPU.Build.0 = Release|Any CPU
{0AE5EBE7-4121-49EE-99C2-6442255FDBE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AE5EBE7-4121-49EE-99C2-6442255FDBE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AE5EBE7-4121-49EE-99C2-6442255FDBE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0AE5EBE7-4121-49EE-99C2-6442255FDBE0}.Release|Any CPU.Build.0 = Release|Any CPU
{A426D174-5943-4876-9BD5-0B29D8E9E67D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A426D174-5943-4876-9BD5-0B29D8E9E67D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A426D174-5943-4876-9BD5-0B29D8E9E67D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A426D174-5943-4876-9BD5-0B29D8E9E67D}.Release|Any CPU.Build.0 = Release|Any CPU
{76ED2C02-B77C-4EAA-BEF9-FEC4B4E29FD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76ED2C02-B77C-4EAA-BEF9-FEC4B4E29FD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76ED2C02-B77C-4EAA-BEF9-FEC4B4E29FD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76ED2C02-B77C-4EAA-BEF9-FEC4B4E29FD1}.Release|Any CPU.Build.0 = Release|Any CPU
{189172BD-B480-47F8-AC61-B66E3297E5D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{189172BD-B480-47F8-AC61-B66E3297E5D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{189172BD-B480-47F8-AC61-B66E3297E5D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{189172BD-B480-47F8-AC61-B66E3297E5D4}.Release|Any CPU.Build.0 = Release|Any CPU
{F2FDF393-89A1-4412-B565-09DF4279B4E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2FDF393-89A1-4412-B565-09DF4279B4E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F2FDF393-89A1-4412-B565-09DF4279B4E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2FDF393-89A1-4412-B565-09DF4279B4E3}.Release|Any CPU.Build.0 = Release|Any CPU
{F7FB045C-B4BE-470B-A6D3-1E7E844E9904}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7FB045C-B4BE-470B-A6D3-1E7E844E9904}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7FB045C-B4BE-470B-A6D3-1E7E844E9904}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7FB045C-B4BE-470B-A6D3-1E7E844E9904}.Release|Any CPU.Build.0 = Release|Any CPU
{E0335FAF-720B-4E1B-B444-A9B5A1F54F5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E0335FAF-720B-4E1B-B444-A9B5A1F54F5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0335FAF-720B-4E1B-B444-A9B5A1F54F5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0335FAF-720B-4E1B-B444-A9B5A1F54F5B}.Release|Any CPU.Build.0 = Release|Any CPU
{74B9FA90-71BC-49D3-B774-BEC2EED22023}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74B9FA90-71BC-49D3-B774-BEC2EED22023}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74B9FA90-71BC-49D3-B774-BEC2EED22023}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74B9FA90-71BC-49D3-B774-BEC2EED22023}.Release|Any CPU.Build.0 = Release|Any CPU
{07FF746B-9138-4F11-8C3E-564FCEEADD36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07FF746B-9138-4F11-8C3E-564FCEEADD36}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07FF746B-9138-4F11-8C3E-564FCEEADD36}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07FF746B-9138-4F11-8C3E-564FCEEADD36}.Release|Any CPU.Build.0 = Release|Any CPU
{1C6167F7-A786-4D8C-B656-EE312598A594}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C6167F7-A786-4D8C-B656-EE312598A594}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1C6167F7-A786-4D8C-B656-EE312598A594}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C6167F7-A786-4D8C-B656-EE312598A594}.Release|Any CPU.Build.0 = Release|Any CPU
{172ABA70-22DA-4D4C-9C5C-39292A87946A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{172ABA70-22DA-4D4C-9C5C-39292A87946A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{172ABA70-22DA-4D4C-9C5C-39292A87946A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{172ABA70-22DA-4D4C-9C5C-39292A87946A}.Release|Any CPU.Build.0 = Release|Any CPU
{F1B0258E-7941-40C9-BAF1-F98D3C2D51C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1B0258E-7941-40C9-BAF1-F98D3C2D51C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1B0258E-7941-40C9-BAF1-F98D3C2D51C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1B0258E-7941-40C9-BAF1-F98D3C2D51C7}.Release|Any CPU.Build.0 = Release|Any CPU
{AE158864-CAF7-4D66-8E47-5A81680BB927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE158864-CAF7-4D66-8E47-5A81680BB927}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AE158864-CAF7-4D66-8E47-5A81680BB927}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE158864-CAF7-4D66-8E47-5A81680BB927}.Release|Any CPU.Build.0 = Release|Any CPU
{C901DBDF-D72F-4191-8653-4A0F13A999BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C901DBDF-D72F-4191-8653-4A0F13A999BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C901DBDF-D72F-4191-8653-4A0F13A999BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C901DBDF-D72F-4191-8653-4A0F13A999BB}.Release|Any CPU.Build.0 = Release|Any CPU
{FB317532-E79E-4514-BDE4-3CB59961A46B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FB317532-E79E-4514-BDE4-3CB59961A46B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FB317532-E79E-4514-BDE4-3CB59961A46B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB317532-E79E-4514-BDE4-3CB59961A46B}.Release|Any CPU.Build.0 = Release|Any CPU
{A51D22FB-34FB-43C7-B4E2-D44882A09458}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A51D22FB-34FB-43C7-B4E2-D44882A09458}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A51D22FB-34FB-43C7-B4E2-D44882A09458}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A51D22FB-34FB-43C7-B4E2-D44882A09458}.Release|Any CPU.Build.0 = Release|Any CPU
{8D6EC127-FE6C-432B-AA33-0208ED153C71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8D6EC127-FE6C-432B-AA33-0208ED153C71}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8D6EC127-FE6C-432B-AA33-0208ED153C71}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8D6EC127-FE6C-432B-AA33-0208ED153C71}.Release|Any CPU.Build.0 = Release|Any CPU
{8FCEAD03-FB47-4E5F-95A8-039C333FC87D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FCEAD03-FB47-4E5F-95A8-039C333FC87D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FCEAD03-FB47-4E5F-95A8-039C333FC87D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FCEAD03-FB47-4E5F-95A8-039C333FC87D}.Release|Any CPU.Build.0 = Release|Any CPU
{F6ACC37D-4BEF-4779-9A8E-899F13E19DA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6ACC37D-4BEF-4779-9A8E-899F13E19DA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6ACC37D-4BEF-4779-9A8E-899F13E19DA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6ACC37D-4BEF-4779-9A8E-899F13E19DA3}.Release|Any CPU.Build.0 = Release|Any CPU
{5AB7D4FB-D1DA-45CD-B0AD-B838CD5D6351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5AB7D4FB-D1DA-45CD-B0AD-B838CD5D6351}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5AB7D4FB-D1DA-45CD-B0AD-B838CD5D6351}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5AB7D4FB-D1DA-45CD-B0AD-B838CD5D6351}.Release|Any CPU.Build.0 = Release|Any CPU
{B63DA225-AC04-4FD5-A126-9392F9E7FC27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B63DA225-AC04-4FD5-A126-9392F9E7FC27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B63DA225-AC04-4FD5-A126-9392F9E7FC27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B63DA225-AC04-4FD5-A126-9392F9E7FC27}.Release|Any CPU.Build.0 = Release|Any CPU
{C0A1D2FC-C694-4561-B34B-0341E4B95074}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C0A1D2FC-C694-4561-B34B-0341E4B95074}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C0A1D2FC-C694-4561-B34B-0341E4B95074}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C0A1D2FC-C694-4561-B34B-0341E4B95074}.Release|Any CPU.Build.0 = Release|Any CPU
{2B0FDF34-E428-43D7-B26A-3365F4EA9268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2B0FDF34-E428-43D7-B26A-3365F4EA9268}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B0FDF34-E428-43D7-B26A-3365F4EA9268}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B0FDF34-E428-43D7-B26A-3365F4EA9268}.Release|Any CPU.Build.0 = Release|Any CPU
{7A738B9E-CE8E-49C7-A3F4-1551AEA1F4A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A738B9E-CE8E-49C7-A3F4-1551AEA1F4A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A738B9E-CE8E-49C7-A3F4-1551AEA1F4A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A738B9E-CE8E-49C7-A3F4-1551AEA1F4A3}.Release|Any CPU.Build.0 = Release|Any CPU
{11846CF3-1574-47CB-828E-3850BFD63C50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{11846CF3-1574-47CB-828E-3850BFD63C50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11846CF3-1574-47CB-828E-3850BFD63C50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11846CF3-1574-47CB-828E-3850BFD63C50}.Release|Any CPU.Build.0 = Release|Any CPU
{8349BAAF-08A2-4E31-A822-E2488D574EAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8349BAAF-08A2-4E31-A822-E2488D574EAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8349BAAF-08A2-4E31-A822-E2488D574EAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8349BAAF-08A2-4E31-A822-E2488D574EAA}.Release|Any CPU.Build.0 = Release|Any CPU
{200F7A51-27BD-4CF1-9902-4F7902257EF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{200F7A51-27BD-4CF1-9902-4F7902257EF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{200F7A51-27BD-4CF1-9902-4F7902257EF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{200F7A51-27BD-4CF1-9902-4F7902257EF6}.Release|Any CPU.Build.0 = Release|Any CPU
{336077C8-8380-4775-9114-4448EEC6176F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{336077C8-8380-4775-9114-4448EEC6176F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{336077C8-8380-4775-9114-4448EEC6176F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{336077C8-8380-4775-9114-4448EEC6176F}.Release|Any CPU.Build.0 = Release|Any CPU
{20E66278-A85F-4F80-A901-08E3CB9A6BC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20E66278-A85F-4F80-A901-08E3CB9A6BC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20E66278-A85F-4F80-A901-08E3CB9A6BC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20E66278-A85F-4F80-A901-08E3CB9A6BC9}.Release|Any CPU.Build.0 = Release|Any CPU
{D820B245-0E50-4DF1-A098-655722E1FF47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D820B245-0E50-4DF1-A098-655722E1FF47}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D820B245-0E50-4DF1-A098-655722E1FF47}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D820B245-0E50-4DF1-A098-655722E1FF47}.Release|Any CPU.Build.0 = Release|Any CPU
{7B0A43AD-8F26-42DD-A90F-3CD24703EDF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B0A43AD-8F26-42DD-A90F-3CD24703EDF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B0A43AD-8F26-42DD-A90F-3CD24703EDF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B0A43AD-8F26-42DD-A90F-3CD24703EDF4}.Release|Any CPU.Build.0 = Release|Any CPU
{48D27A42-B417-4480-BB01-57CBB41AB790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{48D27A42-B417-4480-BB01-57CBB41AB790}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48D27A42-B417-4480-BB01-57CBB41AB790}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48D27A42-B417-4480-BB01-57CBB41AB790}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AFECFCAF-8719-4DF6-AD02-3B1E6FC10ED7}
EndGlobalSection
EndGlobal