From 1e55f613d81ff1c67bdd9b32757920aa9a1d182f Mon Sep 17 00:00:00 2001 From: Charles Betros Date: Sun, 19 Jun 2016 09:18:22 -0500 Subject: [PATCH 1/3] Build config changes. --- .../Desktop/FrotzBase/FrotzNetDLL.csproj | 18 + .../FrotzKernel/FrotzKernel.csproj | 36 + .../Frotz.Net/source/zConsole/zConsole.csproj | 20 + Tests/BoxingTests/BoxingTests.csproj | 24 + .../Cosmos.Compiler.Tests.Encryption.csproj | 36 + .../Cosmos.Compiler.Tests.MethodTests.csproj | 36 + .../Cosmos.Compiler.Tests.LinqTests.csproj | 36 + appveyor.yml | 8 +- install-VS2015.bat | 2 +- source/Build.sln | 124 +- source/Builder.sln | 22 +- .../Cosmos.Assembler/Cosmos.Assembler.csproj | 36 + source/Cosmos.Build.Builder/BuildState.cs | 13 + .../Cosmos.Build.Builder.csproj | 41 + source/Cosmos.Build.Builder/CosmosTask.cs | 1084 ++++++------ .../Cosmos.Build.Common.csproj | 36 + .../Cosmos.Build.Installer.csproj | 36 + .../Cosmos.Build.MSBuild.csproj | 36 + .../Cosmos.Core.Memory.Test.csproj | 19 + .../Cosmos.Core.Memory.csproj | 21 +- source/Cosmos.sln | 1459 +++++++---------- source/VMWareLib/VMWareLib.csproj | 2 +- 22 files changed, 1786 insertions(+), 1359 deletions(-) create mode 100644 source/Cosmos.Build.Builder/BuildState.cs diff --git a/Demos/zMachine/Frotz.Net/source/Desktop/FrotzBase/FrotzNetDLL.csproj b/Demos/zMachine/Frotz.Net/source/Desktop/FrotzBase/FrotzNetDLL.csproj index 56feeed40..f89182c86 100644 --- a/Demos/zMachine/Frotz.Net/source/Desktop/FrotzBase/FrotzNetDLL.csproj +++ b/Demos/zMachine/Frotz.Net/source/Desktop/FrotzBase/FrotzNetDLL.csproj @@ -53,6 +53,24 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/Demos/zMachine/Frotz.Net/source/FrotzKernel/FrotzKernel/FrotzKernel/FrotzKernel.csproj b/Demos/zMachine/Frotz.Net/source/FrotzKernel/FrotzKernel/FrotzKernel/FrotzKernel.csproj index 368ad1f63..2b0181b42 100644 --- a/Demos/zMachine/Frotz.Net/source/FrotzKernel/FrotzKernel/FrotzKernel/FrotzKernel.csproj +++ b/Demos/zMachine/Frotz.Net/source/FrotzKernel/FrotzKernel/FrotzKernel/FrotzKernel.csproj @@ -32,6 +32,42 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/Demos/zMachine/Frotz.Net/source/zConsole/zConsole.csproj b/Demos/zMachine/Frotz.Net/source/zConsole/zConsole.csproj index 8f564153e..e919ddb55 100644 --- a/Demos/zMachine/Frotz.Net/source/zConsole/zConsole.csproj +++ b/Demos/zMachine/Frotz.Net/source/zConsole/zConsole.csproj @@ -52,6 +52,26 @@ MinimumRecommendedRules.ruleset true + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + diff --git a/Tests/BoxingTests/BoxingTests.csproj b/Tests/BoxingTests/BoxingTests.csproj index 2ee315216..9b2ab095f 100644 --- a/Tests/BoxingTests/BoxingTests.csproj +++ b/Tests/BoxingTests/BoxingTests.csproj @@ -23,6 +23,30 @@ x86 bin\x86\Release\ + + true + bin\Debug\ + TRACE;DEBUG + AnyCPU + MinimumRecommendedRules.ruleset + + + bin\Release\ + AnyCPU + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + TRACE;DEBUG + x64 + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + x64 + MinimumRecommendedRules.ruleset + False diff --git a/Tests/Cosmos.Compiler.Tests.Encryption/Cosmos.Compiler.Tests.Encryption.csproj b/Tests/Cosmos.Compiler.Tests.Encryption/Cosmos.Compiler.Tests.Encryption.csproj index e5ccbd90c..b07b98882 100644 --- a/Tests/Cosmos.Compiler.Tests.Encryption/Cosmos.Compiler.Tests.Encryption.csproj +++ b/Tests/Cosmos.Compiler.Tests.Encryption/Cosmos.Compiler.Tests.Encryption.csproj @@ -32,6 +32,42 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/Tests/Cosmos.Compiler.Tests.MethodTests/Cosmos.Compiler.Tests.MethodTests.csproj b/Tests/Cosmos.Compiler.Tests.MethodTests/Cosmos.Compiler.Tests.MethodTests.csproj index 59fa8f44b..bca072685 100644 --- a/Tests/Cosmos.Compiler.Tests.MethodTests/Cosmos.Compiler.Tests.MethodTests.csproj +++ b/Tests/Cosmos.Compiler.Tests.MethodTests/Cosmos.Compiler.Tests.MethodTests.csproj @@ -32,6 +32,42 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/Tests/Cosmos.Kernel.Tests.LinqTests/Cosmos.Compiler.Tests.LinqTests.csproj b/Tests/Cosmos.Kernel.Tests.LinqTests/Cosmos.Compiler.Tests.LinqTests.csproj index f4ddd0d40..e137e23d8 100644 --- a/Tests/Cosmos.Kernel.Tests.LinqTests/Cosmos.Compiler.Tests.LinqTests.csproj +++ b/Tests/Cosmos.Kernel.Tests.LinqTests/Cosmos.Compiler.Tests.LinqTests.csproj @@ -33,6 +33,42 @@ prompt 4 + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/appveyor.yml b/appveyor.yml index 3255f46cf..3a3dc961b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,6 +1,6 @@ version: 0.20150918.{build} configuration: Debug -platform: x86 +platform: AnyCPU shallow_clone: true clone_folder: c:\Cosmos build_script: @@ -11,10 +11,10 @@ build_script: nuget restore "source\Cosmos.sln" - msbuild "source\Builder.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform=x86 /p:Configuration=Debug /p:DeployExtension=false + msbuild "source\Builder.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform="Any CPU" /p:Configuration=Debug /p:DeployExtension=false - msbuild "source\Build.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform=x86 /p:Configuration=Debug /p:OutputPath="%APPVEYOR_BUILD_FOLDER%\Build\VSIP" /p:DeployExtension=false + msbuild "source\Build.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform="Any CPU" /p:Configuration=Debug /p:OutputPath="%APPVEYOR_BUILD_FOLDER%\Build\VSIP" /p:DeployExtension=false xcopy /Y "%APPVEYOR_BUILD_FOLDER%\Build\VSIP\Cosmos.targets" "%ProgramFiles(x86)%\MSBuild\Cosmos\" @@ -45,7 +45,7 @@ build_script: reg add HKCR\BochsConfigFile\shell\Run\command /ve /d "\"C:\Program Files (x86)\Bochs-2.6.8\Bochs.exe\" -q -f \"%1\"" - msbuild "source\Cosmos.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform=x86 /p:Configuration=Debug /p:DeployExtension=false + msbuild "source\Cosmos.sln" /maxcpucount /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Platform="Any CPU" /p:Configuration=Debug /p:DeployExtension=false notifications: - provider: Webhook url: https://webhooks.gitter.im/e/a0ff70f4ffc77a2d07a0 diff --git a/install-VS2015.bat b/install-VS2015.bat index e421db233..4eeb70b5a 100644 --- a/install-VS2015.bat +++ b/install-VS2015.bat @@ -5,6 +5,6 @@ del source\Cosmos.Build.Builder\bin\Debug\Cosmos.Build.Builder.* "Build\Tools\nuget.exe" restore "source\Cosmos.sln" -"%ProgramFiles(x86)%\MSBuild\14.0\Bin\msbuild.exe" "source\Builder.sln" /nologo /maxcpucount /p:Configuration=Debug /p:Platform=x86 +"%ProgramFiles(x86)%\MSBuild\14.0\Bin\msbuild.exe" "source\Builder.sln" /nologo /maxcpucount /p:Configuration="Debug" /p:Platform="Any CPU" start source\Cosmos.Build.Builder\bin\Debug\Cosmos.Build.Builder.exe -bat -VS2015 %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/source/Build.sln b/source/Build.sln index 9fd2a5c17..04cb63d75 100644 --- a/source/Build.sln +++ b/source/Build.sln @@ -94,227 +94,341 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.ActiveCfg = Debug|x86 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.ActiveCfg = Debug|x64 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.Build.0 = Debug|x64 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x86.ActiveCfg = Debug|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x86.Build.0 = Debug|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|Any CPU.ActiveCfg = Release|x86 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x64.ActiveCfg = Release|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.ActiveCfg = Release|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.Build.0 = Release|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.ActiveCfg = Debug|x86 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.ActiveCfg = Debug|x64 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.Build.0 = Debug|x64 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x86.ActiveCfg = Debug|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x86.Build.0 = Debug|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|Any CPU.ActiveCfg = Release|x86 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x64.ActiveCfg = Release|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.ActiveCfg = Release|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.Build.0 = Release|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.ActiveCfg = Debug|x64 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.Build.0 = Debug|x64 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x86.ActiveCfg = Debug|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x86.Build.0 = Debug|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Any CPU.ActiveCfg = Release|Any CPU {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Any CPU.Build.0 = Release|Any CPU + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.ActiveCfg = Release|Any CPU + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.Build.0 = Release|Any CPU {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.ActiveCfg = Release|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.Build.0 = Release|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.ActiveCfg = Debug|x64 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.Build.0 = Debug|x64 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x86.ActiveCfg = Debug|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x86.Build.0 = Debug|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Any CPU.Build.0 = Release|Any CPU + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.ActiveCfg = Release|Any CPU + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.Build.0 = Release|Any CPU {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.ActiveCfg = Release|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.Build.0 = Release|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.ActiveCfg = Debug|x64 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.Build.0 = Debug|x64 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x86.ActiveCfg = Debug|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x86.Build.0 = Debug|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Any CPU.ActiveCfg = Release|Any CPU {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Any CPU.Build.0 = Release|Any CPU + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.ActiveCfg = Release|Any CPU + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.Build.0 = Release|Any CPU {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.ActiveCfg = Release|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.Build.0 = Release|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.ActiveCfg = Debug|x64 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.Build.0 = Debug|x64 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x86.ActiveCfg = Debug|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x86.Build.0 = Debug|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Any CPU.ActiveCfg = Release|Any CPU {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Any CPU.Build.0 = Release|Any CPU + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.ActiveCfg = Release|Any CPU + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.Build.0 = Release|Any CPU {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.ActiveCfg = Release|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.Build.0 = Release|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.ActiveCfg = Debug|x64 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.Build.0 = Debug|x64 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x86.ActiveCfg = Debug|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x86.Build.0 = Debug|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Any CPU.ActiveCfg = Release|Any CPU {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Any CPU.Build.0 = Release|Any CPU + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.ActiveCfg = Release|Any CPU + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.Build.0 = Release|Any CPU {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.ActiveCfg = Release|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.Build.0 = Release|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.ActiveCfg = Debug|x64 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.Build.0 = Debug|x64 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x86.ActiveCfg = Debug|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x86.Build.0 = Debug|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Any CPU.ActiveCfg = Release|Any CPU {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Any CPU.Build.0 = Release|Any CPU + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.ActiveCfg = Release|Any CPU + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.Build.0 = Release|Any CPU {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.ActiveCfg = Release|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.Build.0 = Release|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.ActiveCfg = Debug|x64 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.Build.0 = Debug|x64 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x86.ActiveCfg = Debug|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x86.Build.0 = Debug|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Any CPU.ActiveCfg = Release|Any CPU {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Any CPU.Build.0 = Release|Any CPU + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.ActiveCfg = Release|Any CPU + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.Build.0 = Release|Any CPU {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.ActiveCfg = Release|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.Build.0 = Release|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.ActiveCfg = Debug|x86 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.ActiveCfg = Debug|x64 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.Build.0 = Debug|x64 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x86.ActiveCfg = Debug|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x86.Build.0 = Debug|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|Any CPU.ActiveCfg = Release|x86 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x64.ActiveCfg = Release|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.ActiveCfg = Release|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.Build.0 = Release|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.ActiveCfg = Debug|x64 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.Build.0 = Debug|x64 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x86.ActiveCfg = Debug|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x86.Build.0 = Debug|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Any CPU.Build.0 = Release|Any CPU + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.ActiveCfg = Release|Any CPU + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.Build.0 = Release|Any CPU {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.ActiveCfg = Release|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.Build.0 = Release|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.ActiveCfg = Debug|x64 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.Build.0 = Debug|x64 {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x86.ActiveCfg = Debug|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x86.Build.0 = Debug|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Any CPU.Build.0 = Release|Any CPU + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.ActiveCfg = Release|Any CPU + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.Build.0 = Release|Any CPU {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.ActiveCfg = Release|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.Build.0 = Release|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.ActiveCfg = Debug|x64 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.Build.0 = Debug|x64 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x86.ActiveCfg = Debug|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x86.Build.0 = Debug|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Any CPU.Build.0 = Release|Any CPU + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.ActiveCfg = Release|Any CPU + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.Build.0 = Release|Any CPU {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.ActiveCfg = Release|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.Build.0 = Release|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.ActiveCfg = Debug|x64 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.Build.0 = Debug|x64 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x86.ActiveCfg = Debug|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x86.Build.0 = Debug|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Any CPU.ActiveCfg = Release|Any CPU {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Any CPU.Build.0 = Release|Any CPU + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.ActiveCfg = Release|Any CPU + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.Build.0 = Release|Any CPU {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.ActiveCfg = Release|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.Build.0 = Release|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.ActiveCfg = Debug|x64 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.Build.0 = Debug|x64 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x86.ActiveCfg = Debug|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x86.Build.0 = Debug|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Any CPU.ActiveCfg = Release|Any CPU {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Any CPU.Build.0 = Release|Any CPU + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.ActiveCfg = Release|Any CPU + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.Build.0 = Release|Any CPU {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.ActiveCfg = Release|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.Build.0 = Release|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.ActiveCfg = Debug|x64 + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.Build.0 = Debug|x64 {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x86.ActiveCfg = Debug|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x86.Build.0 = Debug|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Any CPU.ActiveCfg = Release|Any CPU {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Any CPU.Build.0 = Release|Any CPU + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.ActiveCfg = Release|Any CPU + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.Build.0 = Release|Any CPU {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.ActiveCfg = Release|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.Build.0 = Release|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.ActiveCfg = Debug|x64 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.Build.0 = Debug|x64 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x86.ActiveCfg = Debug|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x86.Build.0 = Debug|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Any CPU.ActiveCfg = Release|Any CPU {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Any CPU.Build.0 = Release|Any CPU + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.ActiveCfg = Release|Any CPU + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.Build.0 = Release|Any CPU {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.ActiveCfg = Release|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.Build.0 = Release|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.ActiveCfg = Debug|x64 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.Build.0 = Debug|x64 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x86.ActiveCfg = Debug|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x86.Build.0 = Debug|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Any CPU.Build.0 = Release|Any CPU + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.ActiveCfg = Release|Any CPU + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.Build.0 = Release|Any CPU {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.ActiveCfg = Release|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.Build.0 = Release|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.ActiveCfg = Debug|x64 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.Build.0 = Debug|x64 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x86.ActiveCfg = Debug|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x86.Build.0 = Debug|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Any CPU.ActiveCfg = Release|Any CPU {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Any CPU.Build.0 = Release|Any CPU + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.ActiveCfg = Release|Any CPU + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.Build.0 = Release|Any CPU {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.ActiveCfg = Release|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.Build.0 = Release|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.ActiveCfg = Debug|x64 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.Build.0 = Debug|x64 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x86.ActiveCfg = Debug|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x86.Build.0 = Debug|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Any CPU.ActiveCfg = Release|Any CPU {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Any CPU.Build.0 = Release|Any CPU + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.ActiveCfg = Release|Any CPU + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.Build.0 = Release|Any CPU {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.ActiveCfg = Release|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.Build.0 = Release|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.ActiveCfg = Debug|x64 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.Build.0 = Debug|x64 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x86.ActiveCfg = Debug|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x86.Build.0 = Debug|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Any CPU.ActiveCfg = Release|Any CPU {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Any CPU.Build.0 = Release|Any CPU + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.ActiveCfg = Release|Any CPU + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.Build.0 = Release|Any CPU {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.ActiveCfg = Release|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.Build.0 = Release|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.ActiveCfg = Debug|x64 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.Build.0 = Debug|x64 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x86.ActiveCfg = Debug|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x86.Build.0 = Debug|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Any CPU.ActiveCfg = Release|Any CPU {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Any CPU.Build.0 = Release|Any CPU + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.ActiveCfg = Release|Any CPU + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.Build.0 = Release|Any CPU {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.ActiveCfg = Release|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.Build.0 = Release|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.ActiveCfg = Debug|x64 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.Build.0 = Debug|x64 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x86.ActiveCfg = Debug|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x86.Build.0 = Debug|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Any CPU.ActiveCfg = Release|Any CPU {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Any CPU.Build.0 = Release|Any CPU + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.ActiveCfg = Release|Any CPU + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.Build.0 = Release|Any CPU {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.ActiveCfg = Release|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.Build.0 = Release|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.ActiveCfg = Debug|x64 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.Build.0 = Debug|x64 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x86.ActiveCfg = Debug|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x86.Build.0 = Debug|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Any CPU.ActiveCfg = Release|Any CPU {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Any CPU.Build.0 = Release|Any CPU + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.ActiveCfg = Release|Any CPU + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.Build.0 = Release|Any CPU {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.ActiveCfg = Release|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.Build.0 = Release|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.ActiveCfg = Debug|x64 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.Build.0 = Debug|x64 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x86.ActiveCfg = Debug|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x86.Build.0 = Debug|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Any CPU.Build.0 = Release|Any CPU + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.ActiveCfg = Release|Any CPU + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.Build.0 = Release|Any CPU {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.ActiveCfg = Release|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.Build.0 = Release|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.ActiveCfg = Debug|x64 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.Build.0 = Debug|x64 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x86.ActiveCfg = Debug|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x86.Build.0 = Debug|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Any CPU.ActiveCfg = Release|Any CPU {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Any CPU.Build.0 = Release|Any CPU + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.ActiveCfg = Release|Any CPU + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.Build.0 = Release|Any CPU {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.ActiveCfg = Release|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.Build.0 = Release|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.ActiveCfg = Debug|x64 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.Build.0 = Debug|x64 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x86.ActiveCfg = Debug|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x86.Build.0 = Debug|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Any CPU.ActiveCfg = Release|Any CPU {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Any CPU.Build.0 = Release|Any CPU + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.ActiveCfg = Release|Any CPU + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.Build.0 = Release|Any CPU {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.ActiveCfg = Release|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.Build.0 = Release|x86 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.Build.0 = Debug|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.ActiveCfg = Debug|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.Build.0 = Debug|Any CPU + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.ActiveCfg = Debug|x64 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.Build.0 = Debug|x64 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.ActiveCfg = Debug|x86 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.Build.0 = Debug|x86 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Any CPU.ActiveCfg = Release|Any CPU {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Any CPU.Build.0 = Release|Any CPU + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.ActiveCfg = Release|Any CPU + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.Build.0 = Release|Any CPU {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.ActiveCfg = Release|Any CPU {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection diff --git a/source/Builder.sln b/source/Builder.sln index fcb6c2824..d96620d28 100644 --- a/source/Builder.sln +++ b/source/Builder.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +VisualStudioVersion = 14.0.25123.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Build.Builder", "Cosmos.Build.Builder\Cosmos.Build.Builder.csproj", "{74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}" EndProject @@ -9,16 +9,36 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Build.Installer", "C EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|x64.ActiveCfg = Debug|x64 + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|x64.Build.0 = Debug|x64 {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|x86.ActiveCfg = Debug|x86 {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Debug|x86.Build.0 = Debug|x86 + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|Any CPU.Build.0 = Release|Any CPU + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|x64.ActiveCfg = Release|x64 + {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|x64.Build.0 = Release|x64 {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|x86.ActiveCfg = Release|x86 {74A9329A-2B0B-4C0A-976C-E4FB7228D8B2}.Release|x86.Build.0 = Release|x86 + {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|x64.ActiveCfg = Debug|x64 + {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|x64.Build.0 = Debug|x64 {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|x86.ActiveCfg = Debug|x86 {27D94586-FE88-4203-BE6A-C99013FD5018}.Debug|x86.Build.0 = Debug|x86 + {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|Any CPU.Build.0 = Release|Any CPU + {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|x64.ActiveCfg = Release|x64 + {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|x64.Build.0 = Release|x64 {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|x86.ActiveCfg = Release|x86 {27D94586-FE88-4203-BE6A-C99013FD5018}.Release|x86.Build.0 = Release|x86 EndGlobalSection diff --git a/source/Cosmos.Assembler/Cosmos.Assembler.csproj b/source/Cosmos.Assembler/Cosmos.Assembler.csproj index 727e6c443..befd06a29 100644 --- a/source/Cosmos.Assembler/Cosmos.Assembler.csproj +++ b/source/Cosmos.Assembler/Cosmos.Assembler.csproj @@ -67,6 +67,42 @@ prompt false + + true + bin\Debug\ + TRACE;DEBUG + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + TRACE;DEBUG + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.Build.Builder/BuildState.cs b/source/Cosmos.Build.Builder/BuildState.cs new file mode 100644 index 000000000..6860bde20 --- /dev/null +++ b/source/Cosmos.Build.Builder/BuildState.cs @@ -0,0 +1,13 @@ +namespace Cosmos.Build.Builder +{ + /// + /// Build state enum. + /// + public enum BuildState + { + CleanupError, + CompilationError, + PrerequisiteMissing, + Running + } +} \ No newline at end of file diff --git a/source/Cosmos.Build.Builder/Cosmos.Build.Builder.csproj b/source/Cosmos.Build.Builder/Cosmos.Build.Builder.csproj index a8071e456..291271062 100644 --- a/source/Cosmos.Build.Builder/Cosmos.Build.Builder.csproj +++ b/source/Cosmos.Build.Builder/Cosmos.Build.Builder.csproj @@ -38,6 +38,46 @@ prompt 4 + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + true + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + false + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + .\Interop.TaskScheduler.dll @@ -72,6 +112,7 @@ App.xaml Code + MainWindow.xaml diff --git a/source/Cosmos.Build.Builder/CosmosTask.cs b/source/Cosmos.Build.Builder/CosmosTask.cs index 4c237c37f..4d5d9dd88 100644 --- a/source/Cosmos.Build.Builder/CosmosTask.cs +++ b/source/Cosmos.Build.Builder/CosmosTask.cs @@ -2,547 +2,661 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text; using Cosmos.Build.Installer; using System.IO; using Microsoft.Win32; -using System.Windows; -public enum BuildState +namespace Cosmos.Build.Builder { - CleanupError, - CompilationError, - PrerequisiteMissing, - Running -} -namespace Cosmos.Build.Builder { - public class CosmosTask : Task { - protected string mCosmosDir; - protected string mOutputDir; - protected BuildState mBuildState; - protected string mAppDataDir; - protected int mReleaseNo; - protected string mInnoFile; - protected string mInnoPath; - // Instead of throwing every exception, we collect them in a list - protected List mExceptionList = new List(); - public string InnoScriptTargetFile = "Current.iss"; - public CosmosTask(string aCosmosDir, int aReleaseNo) { - mCosmosDir = aCosmosDir; - mAppDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Cosmos User Kit"); - mReleaseNo = aReleaseNo; - mInnoFile = Path.Combine(mCosmosDir, @"Setup\Cosmos.iss"); - } - /// - /// Get name of the setup file based on release number and the current setting. + /// Cosmos task. /// - /// Release number for the current setup. - /// Name of the setup file. - public static string GetSetupName(int releaseNumber) + /// + public class CosmosTask : Task { - var setupName = "CosmosUserKit-" + releaseNumber; - switch (App.VsVersion) - { - case VsVersion.Vs2015: - setupName += "-vs2015"; - break; + protected string mCosmosDir; + protected string mOutputDir; + protected BuildState mBuildState; + protected string mAppDataDir; + protected int mReleaseNo; + protected string mInnoFile; + protected string mInnoPath; + // Instead of throwing every exception, we collect them in a list + protected List mExceptionList = new List(); + public string InnoScriptTargetFile = "Current.iss"; + public CosmosTask(string aCosmosDir, int aReleaseNo) + { + mCosmosDir = aCosmosDir; + mAppDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "Cosmos User Kit"); + mReleaseNo = aReleaseNo; + mInnoFile = Path.Combine(mCosmosDir, @"Setup\Cosmos.iss"); } - if (App.UseVsHive) + /// + /// Get name of the setup file based on release number and the current setting. + /// + /// Release number for the current setup. + /// Name of the setup file. + public static string GetSetupName(int releaseNumber) { - setupName += "Exp"; - } - - return setupName; - } - - void CleanupVSIPFolder() { - if (Directory.Exists(mOutputDir)) { - Section("Cleaning up VSIP Folder"); - - // Make sure no files are left, else things can be not be rebuilt and when adding - // new items this can cause issues. - Echo("Deleting build output directory."); - Echo(" " + mOutputDir); - Directory.Delete(mOutputDir, true); - } - } - - void CleanupAlreadyInstalled() { - //in case install folder is the same like the last installation, inno setup delete already this path! - // mean this is normally not needed, what do you think? - if (Directory.Exists(mAppDataDir)) { - Section("Cleaning up currently installed user kit directory"); - Echo(" " + mAppDataDir); - Directory.Delete(mAppDataDir, true); - } - } - - protected override List DoRun() { - mOutputDir = Path.Combine(mCosmosDir, @"Build\VSIP"); - if (!App.TestMode) { - CheckPrereqs(); //Working - // No point in continuing if Prerequisites are missing - // Could potentially add more State checks in the future, but for now - // only the prerequisites are handled... - if (mBuildState != BuildState.PrerequisiteMissing) - { - CleanupVSIPFolder(); - - CompileCosmos(); //Working - CopyTemplates(); - - CreateScriptToUseChangesetWhichTaskIsUse(); - - CreateSetup(); //Working - if (!App.IsUserKit) + var setupName = "CosmosUserKit-" + releaseNumber; + switch (App.VsVersion) { - CleanupAlreadyInstalled(); //Working - RunSetup(); //Working - forgot to run as user kit first - WriteDevKit(); //Working - if (!App.DoNotLaunchVS) { LaunchVS(); } //Working + case VsVersion.Vs2015: + setupName += "-vs2015"; + break; + + } + + if (App.UseVsHive) + { + setupName += "Exp"; + } + + return setupName; + } + + void CleanupVSIPFolder() + { + if (Directory.Exists(mOutputDir)) + { + Section("Cleaning up VSIP Folder"); + + // Make sure no files are left, else things can be not be rebuilt and when adding + // new items this can cause issues. + Echo("Deleting build output directory."); + Echo(" " + mOutputDir); + Directory.Delete(mOutputDir, true); } } - Done(); - } else { - Section("Testing..."); - //Uncomment bits that you want to test... - //CheckForInno(); - CheckPrereqs(); //Working - if (mBuildState != BuildState.PrerequisiteMissing) - Echo("all checks suceeded"); - //Cleanup(); //Working - //CompileCosmos(); //Working - //CopyTemplates(); //Working - //if (App.IsUserKit) - //{ - // CreateUserKitScript(); //Working - //} - //CreateSetup(); //Working - //if (!App.IsUserKit) - //{ - // RunSetup(); //Working - // WriteDevKit(); //Working - // if (!App.DoNotLaunchVS) { LaunchVS(); } //Working - //} - - //Done(); - } - return mExceptionList; - } - - protected void MsBuild(string aSlnFile, string aBuildCfg) { - string xMsBuild = Path.Combine(Paths.ProgFiles32, @"MSBuild\14.0\Bin\msbuild.exe"); - string xParams = Quoted(aSlnFile) + @" /maxcpucount /verbosity:normal /nologo /p:Configuration=" + aBuildCfg + " /p:Platform=x86 /p:OutputPath=" + Quoted(mOutputDir); - // Clean then build: http://adrianfoyn.wordpress.com/2011/03/30/wrestling-with-msbuild-the-bane-of-trebuild/ - if (false == App.NoMsBuildClean) { - StartConsole(xMsBuild, "/t:Clean " + xParams); - } - StartConsole(xMsBuild, "/t:Build " + xParams); - } - - protected int NumProcessesContainingName(string name) { - return (from x in Process.GetProcesses() where x.ProcessName.Contains(name) select x).Count(); - } - - protected bool CheckForInstall(string aCheck, bool aCanThrow) { - return CheckForProduct(aCheck, aCanThrow, @"SOFTWARE\Classes\Installer\Products\", "ProductName"); - } - protected bool CheckForUninstall(string aCheck, bool aCanThrow) { - return CheckForProduct(aCheck, aCanThrow, @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", "DisplayName"); - } - protected bool CheckForProduct(string aCheck, bool aCanThrow, string aKey, string aValueName) { - Echo("Checking for " + aCheck); - string xCheck = aCheck.ToUpper(); - string[] xKeys; - using (var xKey = Registry.LocalMachine.OpenSubKey(aKey, false)) { - xKeys = xKey.GetSubKeyNames(); - } - foreach (string xSubKey in xKeys) { - using (var xKey = Registry.LocalMachine.OpenSubKey(aKey + xSubKey)) { - string xValue = (string)xKey.GetValue(aValueName); - if (xValue != null && xValue.ToUpper().Contains(xCheck)) { - if (mBuildState != BuildState.PrerequisiteMissing) + void CleanupAlreadyInstalled() + { + //in case install folder is the same like the last installation, inno setup delete already this path! + // mean this is normally not needed, what do you think? + if (Directory.Exists(mAppDataDir)) { - mBuildState = BuildState.Running; - return true; + Section("Cleaning up currently installed user kit directory"); + Echo(" " + mAppDataDir); + Directory.Delete(mAppDataDir, true); + } + } + + protected override List DoRun() + { + mOutputDir = Path.Combine(mCosmosDir, @"Build\VSIP"); + if (!App.TestMode) + { + CheckPrereqs(); + // No point in continuing if Prerequisites are missing + // Could potentially add more State checks in the future, but for now + // only the prerequisites are handled... + if (mBuildState != BuildState.PrerequisiteMissing) + { + CleanupVSIPFolder(); + + CompileCosmos(); + CopyTemplates(); + + CreateScriptToUseChangesetWhichTaskIsUse(); + + CreateSetup(); + if (!App.IsUserKit) + { + CleanupAlreadyInstalled(); + RunSetup(); + WriteDevKit(); + if (!App.DoNotLaunchVS) + { + LaunchVS(); + } + } + } + Done(); } else - return false; - } - } - } + { + Section("Testing..."); + //Uncomment bits that you want to test... + //CheckForInno(); + CheckPrereqs(); + if (mBuildState != BuildState.PrerequisiteMissing) + { + Echo("all checks succeeded"); + } + //Cleanup(); - if (aCanThrow) { - NotFound(aCheck); - } + //CompileCosmos(); + //CopyTemplates(); + //if (App.IsUserKit) + //{ + // CreateUserKitScript(); + //} + //CreateSetup(); + //if (!App.IsUserKit) + //{ + // RunSetup(); + // WriteDevKit(); + // if (!App.DoNotLaunchVS) { LaunchVS(); } + //} + + //Done(); + } + return mExceptionList; + } + + protected void MsBuild(string aSlnFile, string aBuildCfg) + { + string xMsBuild = Path.Combine(Paths.ProgFiles32, @"MSBuild\14.0\Bin\msbuild.exe"); + string xParams = $"{Quoted(aSlnFile)} " + + "/nologo " + + "/maxcpucount " + + $"/p:Configuration={Quoted(aBuildCfg)} " + + $"/p:Platform={Quoted("Any CPU")} " + + $"/p:OutputPath={Quoted(mOutputDir)}"; + + if (!App.NoMsBuildClean) + { + StartConsole(xMsBuild, $"/t:Clean {xParams}"); + } + StartConsole(xMsBuild, $"/t:Build {xParams}"); + } + + protected int NumProcessesContainingName(string name) + { + return (from x in Process.GetProcesses() where x.ProcessName.Contains(name) select x).Count(); + } + + protected bool CheckForInstall(string aCheck, bool aCanThrow) + { + return CheckForProduct(aCheck, aCanThrow, @"SOFTWARE\Classes\Installer\Products\", "ProductName"); + } + + protected bool CheckForUninstall(string aCheck, bool aCanThrow) + { + return CheckForProduct(aCheck, aCanThrow, @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", + "DisplayName"); + } + + protected bool CheckForProduct(string aCheck, bool aCanThrow, string aKey, string aValueName) + { + Echo("Checking for " + aCheck); + string xCheck = aCheck.ToUpper(); + string[] xKeys; + using (var xKey = Registry.LocalMachine.OpenSubKey(aKey, false)) + { + xKeys = xKey.GetSubKeyNames(); + } + foreach (string xSubKey in xKeys) + { + using (var xKey = Registry.LocalMachine.OpenSubKey(aKey + xSubKey)) + { + string xValue = (string) xKey.GetValue(aValueName); + if (xValue != null && xValue.ToUpper().Contains(xCheck)) + { + if (mBuildState != BuildState.PrerequisiteMissing) + { + mBuildState = BuildState.Running; + return true; + } + else + return false; + } + } + } + + if (aCanThrow) + { + NotFound(aCheck); + } return false; - } - - protected void CheckNet35Sp1() { - Echo("Checking for .NET 3.5 SP1"); - bool xInstalled = false; - using (var xKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5")) { - if (xKey != null) { - xInstalled = (int)xKey.GetValue("SP", 0) >= 1; } - } - if (!xInstalled) { - NotFound(".NET 3.5 SP1"); - mBuildState = BuildState.PrerequisiteMissing; - } - } - protected void CheckNet403() { - Echo("Checking for .NET 4.03"); - if (Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.3") == null) { - NotFound(".NET 4.03 Full Install (not client)"); - } - } - - protected void CheckOS() { - Echo("Checking Operating System"); - var xOsInfo = System.Environment.OSVersion; - if (xOsInfo.Platform != PlatformID.Win32NT) { - NotFound("Supported OS"); - } - decimal xVer = decimal.Parse(xOsInfo.Version.Major + "." + xOsInfo.Version.Minor, System.Globalization.CultureInfo.InvariantCulture); - // 6.0 Vista - // 6.1 2008 - // 6.2 Windows 7 - // 6.3 Windows 8 - // 6.4 Windows 10 - if (xVer < 6.0m) { - NotFound("Minimum Supported OS is Vista/2008"); - } - } - - protected void CheckIfBuilderRunning() { - //Check for builder process - Echo("Checking if Builder is already running."); - // Check > 1 so we exclude ourself. - if (NumProcessesContainingName("Cosmos.Build.Builder") > 1) { - throw new Exception("Another instance of builder is running."); - } - } - - protected void CheckIfUserKitRunning() { - Echo("Check if User Kit Installer is already running."); - if (NumProcessesContainingName("CosmosUserKit") > 1) { - throw new Exception("Another instance of the user kit installer is running."); - } - } - - protected void CheckIsVsRunning() { - int xSeconds = 500; - if (App.IgnoreVS) { - return; - } - - if (AreWeNowDebugTheBuilder()) { - Echo("Checking if Visual Studio is running is ignored by debugging of Builder."); - } - else { - Echo("Checking if Visual Studio is running."); - if (IsRunning("devenv")) { - Echo("--Visual Studio is running."); - Echo("--Waiting " + xSeconds + " seconds to see if Visual Studio exits."); - // VS doesnt exit right away and user can try devkit again after VS window has closed but is still running. - // So we wait a few seconds first. - if (WaitForExit("devenv", xSeconds * 1000)) { - throw new Exception("Visual Studio is running. Please close it or kill it in task manager."); - } - } - } - } - - private bool AreWeNowDebugTheBuilder() { - return Process.GetCurrentProcess().ProcessName.EndsWith(".vshost"); - } - - protected void NotFound(string aName) { - mExceptionList.Add("Prerequisite '" + aName + "' not found."); - mBuildState = BuildState.PrerequisiteMissing; - } - - protected void CheckPrereqs() { - Section("Checking Prerequisites"); - Echo("Note: This check only prerequisites for building, please see website for full list."); - - Echo("Checking for x86 run."); - if (!AmRunning32Bit()) { - mExceptionList.Add("Builder must run as x86"); - mBuildState = BuildState.PrerequisiteMissing; - } - - // We assume they have normal .NET stuff if user was able to build the builder... - - CheckOS(); - CheckIfUserKitRunning(); - CheckIsVsRunning(); - CheckIfBuilderRunning(); - - switch (App.VsVersion) { - case VsVersion.Vs2015: - CheckVs2015(); - CheckForInstall("Microsoft Visual Studio 2015 SDK - ENU", true); - break; - default: - throw new NotImplementedException(); - } - - //works also without, only close of VMWare is not working! - CheckNet35Sp1(); // Required by VMWareLib and other stuff - CheckNet403(); - CheckForInno(); - bool vmWareInstalled = true; - bool bochsInstalled = IsBochsInstalled(); - if (!CheckForInstall("VMware Workstation", false)) { - if (!CheckForInstall("VMware Player", false)) { - // Fix issue #15553 - if (!CheckForInstall("VMwarePlayer_x64", false)) { - vmWareInstalled = false; - } - } - } - if (!vmWareInstalled && !bochsInstalled) { - NotFound("VMWare or Bochs"); - } - // VIX is installed with newer VMware Workstations (8+ for sure). VMware player does not install it? - // We need to just watch this and adjust as needed. - //CheckForInstall("VMWare VIX", true); - } - - /// Check for Bochs being installed. - private static bool IsBochsInstalled() { - try { - using (var runCommandRegistryKey = Registry.ClassesRoot.OpenSubKey(@"BochsConfigFile\shell\Run\command", false)) { - if (null == runCommandRegistryKey) { return false; } - string commandLine = (string)runCommandRegistryKey.GetValue(null, null); - if (null != commandLine) { commandLine = commandLine.Trim(); } - if (string.IsNullOrEmpty(commandLine)) { return false; } - // Now perform some parsing on command line to discover full exe path. - string candidateFilePath; - int commandLineLength = commandLine.Length; - if ('"' == commandLine[0]) { - // Seek for a non escaped double quote. - int lastDoubleQuoteIndex = 1; - for (; lastDoubleQuoteIndex < commandLineLength; lastDoubleQuoteIndex++) { - if ('"' != commandLine[lastDoubleQuoteIndex]) { continue; } - if ('\\' != commandLine[lastDoubleQuoteIndex - 1]) { break; } + protected void CheckNet35Sp1() + { + Echo("Checking for .NET 3.5 SP1"); + bool xInstalled = false; + using (var xKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5")) + { + if (xKey != null) + { + xInstalled = (int) xKey.GetValue("SP", 0) >= 1; + } } - if (lastDoubleQuoteIndex >= commandLineLength) { return false; } - candidateFilePath = commandLine.Substring(1, lastDoubleQuoteIndex - 1); - } else { - // Seek for first separator character. - int firstSeparatorIndex = 0; - for (; firstSeparatorIndex < commandLineLength; firstSeparatorIndex++) { - if (char.IsSeparator(commandLine[firstSeparatorIndex])) { break; } + if (!xInstalled) + { + NotFound(".NET 3.5 SP1"); + mBuildState = BuildState.PrerequisiteMissing; } - if (firstSeparatorIndex >= commandLineLength) { return false; } - candidateFilePath = commandLine.Substring(0, firstSeparatorIndex); - } - return File.Exists(candidateFilePath); } - } catch { return false; } - } - void CheckForInno() { - Echo("Checking for Inno Setup"); - using (var xKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 5_is1", false)) { - if (xKey == null) { - mExceptionList.Add("Cannot find Inno Setup."); + protected void CheckNet403() + { + Echo("Checking for .NET 4.03"); + if ( + Registry.LocalMachine.OpenSubKey( + @"SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.3") == null) + { + NotFound(".NET 4.03 Full Install (not client)"); + } + } + + protected void CheckOS() + { + Echo("Checking Operating System"); + var xOsInfo = System.Environment.OSVersion; + if (xOsInfo.Platform != PlatformID.Win32NT) + { + NotFound("Supported OS"); + } + decimal xVer = decimal.Parse(xOsInfo.Version.Major + "." + xOsInfo.Version.Minor, + System.Globalization.CultureInfo.InvariantCulture); + // 6.0 Vista + // 6.1 2008 + // 6.2 Windows 7 + // 6.3 Windows 8 + // 6.4 Windows 10 + if (xVer < 6.0m) + { + NotFound("Minimum Supported OS is Vista/2008"); + } + } + + protected void CheckIfBuilderRunning() + { + //Check for builder process + Echo("Checking if Builder is already running."); + // Check > 1 so we exclude ourself. + if (NumProcessesContainingName("Cosmos.Build.Builder") > 1) + { + throw new Exception("Another instance of builder is running."); + } + } + + protected void CheckIfUserKitRunning() + { + Echo("Check if User Kit Installer is already running."); + if (NumProcessesContainingName("CosmosUserKit") > 1) + { + throw new Exception("Another instance of the user kit installer is running."); + } + } + + protected void CheckIsVsRunning() + { + int xSeconds = 500; + if (App.IgnoreVS) + { + return; + } + + if (AreWeNowDebugTheBuilder()) + { + Echo("Checking if Visual Studio is running is ignored by debugging of Builder."); + } + else + { + Echo("Checking if Visual Studio is running."); + if (IsRunning("devenv")) + { + Echo("--Visual Studio is running."); + Echo("--Waiting " + xSeconds + " seconds to see if Visual Studio exits."); + // VS doesnt exit right away and user can try devkit again after VS window has closed but is still running. + // So we wait a few seconds first. + if (WaitForExit("devenv", xSeconds*1000)) + { + throw new Exception("Visual Studio is running. Please close it or kill it in task manager."); + } + } + } + } + + private bool AreWeNowDebugTheBuilder() + { + return Process.GetCurrentProcess().ProcessName.EndsWith(".vshost"); + } + + protected void NotFound(string aName) + { + mExceptionList.Add("Prerequisite '" + aName + "' not found."); + mBuildState = BuildState.PrerequisiteMissing; + } + + protected void CheckPrereqs() + { + Section("Checking Prerequisites"); + Echo("Note: This check only prerequisites for building, please see website for full list."); + + Echo("Checking for x86 run."); + if (!AmRunning32Bit()) + { + mExceptionList.Add("Builder must run as x86"); + mBuildState = BuildState.PrerequisiteMissing; + } + + // We assume they have normal .NET stuff if user was able to build the builder... + + CheckOS(); + CheckIfUserKitRunning(); + CheckIsVsRunning(); + CheckIfBuilderRunning(); + + switch (App.VsVersion) + { + case VsVersion.Vs2015: + CheckVs2015(); + CheckForInstall("Microsoft Visual Studio 2015 SDK - ENU", true); + break; + default: + throw new NotImplementedException(); + } + + //works also without, only close of VMWare is not working! + CheckNet35Sp1(); // Required by VMWareLib and other stuff + CheckNet403(); + CheckForInno(); + bool vmWareInstalled = true; + bool bochsInstalled = IsBochsInstalled(); + if (!CheckForInstall("VMware Workstation", false)) + { + if (!CheckForInstall("VMware Player", false)) + { + if (!CheckForInstall("VMwarePlayer_x64", false)) + { + vmWareInstalled = false; + } + } + } + if (!vmWareInstalled && !bochsInstalled) + { + NotFound("VMWare or Bochs"); + } + // VIX is installed with newer VMware Workstations (8+ for sure). VMware player does not install it? + // We need to just watch this and adjust as needed. + //CheckForInstall("VMWare VIX", true); + } + + /// Check for Bochs being installed. + private static bool IsBochsInstalled() + { + try + { + using ( + var runCommandRegistryKey = Registry.ClassesRoot.OpenSubKey(@"BochsConfigFile\shell\Run\command", + false)) + { + if (null == runCommandRegistryKey) + { + return false; + } + string commandLine = (string) runCommandRegistryKey.GetValue(null, null); + if (null != commandLine) + { + commandLine = commandLine.Trim(); + } + if (string.IsNullOrEmpty(commandLine)) + { + return false; + } + // Now perform some parsing on command line to discover full exe path. + string candidateFilePath; + int commandLineLength = commandLine.Length; + if ('"' == commandLine[0]) + { + // Seek for a non escaped double quote. + int lastDoubleQuoteIndex = 1; + for (; lastDoubleQuoteIndex < commandLineLength; lastDoubleQuoteIndex++) + { + if ('"' != commandLine[lastDoubleQuoteIndex]) + { + continue; + } + if ('\\' != commandLine[lastDoubleQuoteIndex - 1]) + { + break; + } + } + if (lastDoubleQuoteIndex >= commandLineLength) + { + return false; + } + candidateFilePath = commandLine.Substring(1, lastDoubleQuoteIndex - 1); + } + else + { + // Seek for first separator character. + int firstSeparatorIndex = 0; + for (; firstSeparatorIndex < commandLineLength; firstSeparatorIndex++) + { + if (char.IsSeparator(commandLine[firstSeparatorIndex])) + { + break; + } + } + if (firstSeparatorIndex >= commandLineLength) + { + return false; + } + candidateFilePath = commandLine.Substring(0, firstSeparatorIndex); + } + return File.Exists(candidateFilePath); + } + } + catch + { + return false; + } + } + + void CheckForInno() + { + Echo("Checking for Inno Setup"); + using ( + var xKey = + Registry.LocalMachine.OpenSubKey( + @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Inno Setup 5_is1", false)) + { + if (xKey == null) + { + mExceptionList.Add("Cannot find Inno Setup."); mBuildState = BuildState.PrerequisiteMissing; return; - } - mInnoPath = (string)xKey.GetValue("InstallLocation"); - if (string.IsNullOrWhiteSpace(mInnoPath)) { - mExceptionList.Add("Cannot find Inno Setup."); - mBuildState = BuildState.PrerequisiteMissing; + } + mInnoPath = (string) xKey.GetValue("InstallLocation"); + if (string.IsNullOrWhiteSpace(mInnoPath)) + { + mExceptionList.Add("Cannot find Inno Setup."); + mBuildState = BuildState.PrerequisiteMissing; return; - } - } + } + } - Echo("Checking for Inno Preprocessor"); - if (!File.Exists(Path.Combine(mInnoPath, "ISPP.dll"))) { - mExceptionList.Add("Inno Preprocessor not detected."); + Echo("Checking for Inno Preprocessor"); + if (!File.Exists(Path.Combine(mInnoPath, "ISPP.dll"))) + { + mExceptionList.Add("Inno Preprocessor not detected."); mBuildState = BuildState.PrerequisiteMissing; return; - } - } - - void CheckVs2015() { - Echo("Checking for Visual Studio 2015 RC"); - string key = @"SOFTWARE\Microsoft\VisualStudio\14.0"; - if (Environment.Is64BitOperatingSystem) - key = @"SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0"; - using (var xKey = Registry.LocalMachine.OpenSubKey(key)) { - string xDir = (string)xKey.GetValue("InstallDir"); - if (String.IsNullOrWhiteSpace(xDir)) { - mExceptionList.Add("Visual Studio 2015 RC not detected!"); - mBuildState = BuildState.PrerequisiteMissing; - } - } - } - - void WriteDevKit() { - Section("Writing Dev Kit to Registry"); - - // Inno deletes this from registry, so we must add this after. - // We let Inno delete it, so if user runs it by itself they get - // only UserKit, and no DevKit settings. - // HKCU instead of HKLM because builder does not run as admin. - // - // HKCU is not redirected. - using (var xKey = Registry.CurrentUser.CreateSubKey(@"Software\Cosmos")) { - xKey.SetValue("DevKit", mCosmosDir); - } - } - - void CreateScriptToUseChangesetWhichTaskIsUse() { - Section("Creating Inno Setup Script"); - - // Read in iss file - using (var xSrc = new StreamReader(mInnoFile)) { - mInnoFile = Path.Combine(Path.GetDirectoryName(mInnoFile), InnoScriptTargetFile); - // Write out new iss - using (var xDest = new StreamWriter(mInnoFile)) { - string xLine; - while ((xLine = xSrc.ReadLine()) != null) { - if (xLine.StartsWith("#define ChangeSetVersion ", StringComparison.InvariantCultureIgnoreCase)) { - xDest.WriteLine("#define ChangeSetVersion " + Quoted(mReleaseNo.ToString())); - } else { - xDest.WriteLine(xLine); } - } } - } - } - void CompileXSharpCompiler() { - Section("Compiling X# Compiler"); - MsBuild(Path.Combine(mCosmosDir, @"source\XSharp.sln"), "Debug"); - } - - void CompileXSharpSource() { - Section("Compiling X# Sources"); - - // XSC can do all files in path, but we do it on our own currently for better status updates. - // When we get xsproj files we can build directly. - var xFiles = Directory.GetFiles(mCosmosDir + @"source\Cosmos.Debug.DebugStub\", "*.xs"); - foreach (var xFile in xFiles) { - Echo("Compiling " + Path.GetFileName(xFile)); - string xDest = Path.ChangeExtension(xFile, ".cs"); - if (File.Exists(xDest)) { - ResetReadOnly(xDest); + void CheckVs2015() + { + Echo("Checking for Visual Studio 2015"); + string key = @"SOFTWARE\Microsoft\VisualStudio\14.0"; + if (Environment.Is64BitOperatingSystem) + key = @"SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0"; + using (var xKey = Registry.LocalMachine.OpenSubKey(key)) + { + string xDir = (string) xKey.GetValue("InstallDir"); + if (String.IsNullOrWhiteSpace(xDir)) + { + mExceptionList.Add("Visual Studio 2015 not detected!"); + mBuildState = BuildState.PrerequisiteMissing; + } + } } - // We dont ref the X# asm directly because then we could not compile it without dynamic loading. - // This way we can build it and call it directly. - StartConsole(mOutputDir + @"\xsc.exe", Quoted(xFile) + @" Cosmos.Debug.DebugStub"); - } - } - void CompileCosmos() { - Section("Compiling Cosmos"); + void WriteDevKit() + { + Section("Writing Dev Kit to Registry"); - MsBuild(Path.Combine(mCosmosDir, @"source\Build.sln"), "Debug"); - } + // Inno deletes this from registry, so we must add this after. + // We let Inno delete it, so if user runs it by itself they get + // only UserKit, and no DevKit settings. + // HKCU instead of HKLM because builder does not run as admin. + // + // HKCU is not redirected. + using (var xKey = Registry.CurrentUser.CreateSubKey(@"Software\Cosmos")) + { + xKey.SetValue("DevKit", mCosmosDir); + } + } - void CopyTemplates() { - Section("Copying Templates"); + void CreateScriptToUseChangesetWhichTaskIsUse() + { + Section("Creating Inno Setup Script"); - CD(mOutputDir); - SrcPath = Path.Combine(mCosmosDir, @"source\Cosmos.VS.Package\obj\x86\Debug"); - Copy("CosmosProject (C#).zip", true); - Copy("CosmosKernel (C#).zip", true); - Copy("CosmosProject (F#).zip", true); - Copy("Cosmos.zip", true); - Copy("CosmosProject (VB).zip", true); - Copy("CosmosKernel (VB).zip", true); - Copy(mCosmosDir + @"source\XSharp.VS\Template\XSharpFileItem.zip", true); - } + // Read in iss file + using (var xSrc = new StreamReader(mInnoFile)) + { + mInnoFile = Path.Combine(Path.GetDirectoryName(mInnoFile), InnoScriptTargetFile); + // Write out new iss + using (var xDest = new StreamWriter(mInnoFile)) + { + string xLine; + while ((xLine = xSrc.ReadLine()) != null) + { + if (xLine.StartsWith("#define ChangeSetVersion ", StringComparison.InvariantCultureIgnoreCase)) + { + xDest.WriteLine("#define ChangeSetVersion " + Quoted(mReleaseNo.ToString())); + } + else + { + xDest.WriteLine(xLine); + } + } + } + } + } - void CreateSetup() { - Section("Creating Setup"); + void CompileCosmos() + { + Section("Compiling Cosmos"); + + MsBuild(Path.Combine(mCosmosDir, @"source\Build.sln"), "Debug"); + } + + void CopyTemplates() + { + Section("Copying Templates"); + + CD(mOutputDir); + SrcPath = Path.Combine(mCosmosDir, @"source\Cosmos.VS.Package\obj\Debug"); + Copy("CosmosProject (C#).zip", true); + Copy("CosmosKernel (C#).zip", true); + Copy("CosmosProject (F#).zip", true); + Copy("Cosmos.zip", true); + Copy("CosmosProject (VB).zip", true); + Copy("CosmosKernel (VB).zip", true); + Copy(mCosmosDir + @"source\XSharp.VS\Template\XSharpFileItem.zip", true); + } + + void CreateSetup() + { + Section("Creating Setup"); - string xISCC = Path.Combine(mInnoPath, "ISCC.exe"); - if (!File.Exists(xISCC)) { - mExceptionList.Add("Cannot find Inno setup."); + string xISCC = Path.Combine(mInnoPath, "ISCC.exe"); + if (!File.Exists(xISCC)) + { + mExceptionList.Add("Cannot find Inno setup."); return; - } - string xCfg = App.IsUserKit ? "UserKit" : "DevKit"; - string vsVersionConfiguration = "vs2015"; - switch (App.VsVersion) { - case VsVersion.Vs2015: - vsVersionConfiguration = "vs2015"; - break; - } - // Use configuration which will instal to the VS Exp Hive - if (App.UseVsHive) { - vsVersionConfiguration += "Exp"; - } - StartConsole(xISCC, @"/Q " + Quoted(mInnoFile) + " /dBuildConfiguration=" + xCfg + " /dVsVersion=" + vsVersionConfiguration); + } + string xCfg = App.IsUserKit ? "UserKit" : "DevKit"; + string vsVersionConfiguration = "vs2015"; + switch (App.VsVersion) + { + case VsVersion.Vs2015: + vsVersionConfiguration = "vs2015"; + break; + } + // Use configuration which will instal to the VS Exp Hive + if (App.UseVsHive) + { + vsVersionConfiguration += "Exp"; + } + StartConsole(xISCC, + @"/Q " + Quoted(mInnoFile) + " /dBuildConfiguration=" + xCfg + " /dVsVersion=" + vsVersionConfiguration); - if (App.IsUserKit) { - File.Delete(mInnoFile); - } - } + if (App.IsUserKit) + { + File.Delete(mInnoFile); + } + } - void LaunchVS() { - Section("Launching Visual Studio"); + void LaunchVS() + { + Section("Launching Visual Studio"); - string xVisualStudio = Paths.VSInstall + @"\devenv.exe"; - if (!File.Exists(xVisualStudio)) { - mExceptionList.Add("Cannot find Visual Studio."); + string xVisualStudio = Paths.VSInstall + @"\devenv.exe"; + if (!File.Exists(xVisualStudio)) + { + mExceptionList.Add("Cannot find Visual Studio."); return; - } + } - if (App.ResetHive) { - Echo("Resetting hive"); - Start(xVisualStudio, @"/setup /rootsuffix Exp /ranu"); - } + if (App.ResetHive) + { + Echo("Resetting hive"); + Start(xVisualStudio, @"/setup /rootsuffix Exp /ranu"); + } - Echo("Launching Visual Studio"); - // Fix issue #15565 - Start(xVisualStudio, Quoted(mCosmosDir + @"\source\Cosmos.sln"), false, true); - } + Echo("Launching Visual Studio"); + // Fix issue #15565 + Start(xVisualStudio, Quoted(mCosmosDir + @"\source\Cosmos.sln"), false, true); + } - void RunSetup() { - Section("Running Setup"); + void RunSetup() + { + Section("Running Setup"); - string setupName = GetSetupName(mReleaseNo); + string setupName = GetSetupName(mReleaseNo); - if (App.UseTask) { - // This is a hack to avoid the UAC dialog on every run which can be very disturbing if you run - // the dev kit a lot. - Start(@"schtasks.exe", @"/run /tn " + Quoted("CosmosSetup"), true, false); + if (App.UseTask) + { + // This is a hack to avoid the UAC dialog on every run which can be very disturbing if you run + // the dev kit a lot. + Start(@"schtasks.exe", @"/run /tn " + Quoted("CosmosSetup"), true, false); - // Must check for start before stop, else on slow machines we exit quickly because Exit is found before - // it starts. - // Some slow user PCs take around 5 seconds to start up the task... - int xSeconds = 10; - var xTimed = DateTime.Now; - Echo("Waiting " + xSeconds + " seconds for Setup to start."); - if (WaitForStart(setupName, xSeconds * 1000)) { - mExceptionList.Add("Setup did not start."); + // Must check for start before stop, else on slow machines we exit quickly because Exit is found before + // it starts. + // Some slow user PCs take around 5 seconds to start up the task... + int xSeconds = 10; + var xTimed = DateTime.Now; + Echo("Waiting " + xSeconds + " seconds for Setup to start."); + if (WaitForStart(setupName, xSeconds*1000)) + { + mExceptionList.Add("Setup did not start."); return; - } - Echo("Setup is running. " + DateTime.Now.Subtract(xTimed).ToString(@"ss\.fff")); + } + Echo("Setup is running. " + DateTime.Now.Subtract(xTimed).ToString(@"ss\.fff")); - // Scheduler starts it an exits, but we need to wait for the setup itself to exit before proceding - Echo("Waiting for Setup to complete."); - WaitForExit(setupName); - } else { - Start(mCosmosDir + @"Setup\Output\" + setupName + ".exe", @"/SILENT"); + // Scheduler starts it an exits, but we need to wait for the setup itself to exit before proceding + Echo("Waiting for Setup to complete."); + WaitForExit(setupName); + } + else + { + Start(mCosmosDir + @"Setup\Output\" + setupName + ".exe", @"/SILENT"); + } + } + + void Done() + { + Section("Build Complete!"); } } - - void Done() { - Section("Build Complete!"); - } - } -} +} \ No newline at end of file diff --git a/source/Cosmos.Build.Common/Cosmos.Build.Common.csproj b/source/Cosmos.Build.Common/Cosmos.Build.Common.csproj index 16a9b98cf..7ab0b4c2f 100644 --- a/source/Cosmos.Build.Common/Cosmos.Build.Common.csproj +++ b/source/Cosmos.Build.Common/Cosmos.Build.Common.csproj @@ -39,6 +39,42 @@ prompt 4 + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.Build.Installer/Cosmos.Build.Installer.csproj b/source/Cosmos.Build.Installer/Cosmos.Build.Installer.csproj index 23af22766..c44477f55 100644 --- a/source/Cosmos.Build.Installer/Cosmos.Build.Installer.csproj +++ b/source/Cosmos.Build.Installer/Cosmos.Build.Installer.csproj @@ -37,6 +37,42 @@ prompt 4 + + true + bin\Debug\ + DEBUG;TRACE + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.Build.MSBuild/Cosmos.Build.MSBuild.csproj b/source/Cosmos.Build.MSBuild/Cosmos.Build.MSBuild.csproj index fbe4befc1..349eaf642 100644 --- a/source/Cosmos.Build.MSBuild/Cosmos.Build.MSBuild.csproj +++ b/source/Cosmos.Build.MSBuild/Cosmos.Build.MSBuild.csproj @@ -42,6 +42,42 @@ prompt false + + true + bin\Debug\ + TRACE;DEBUG + full + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + bin\Release\ + TRACE + true + pdbonly + AnyCPU + prompt + MinimumRecommendedRules.ruleset + + + true + bin\x64\Debug\ + TRACE;DEBUG + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.Core.Memory.Test/Cosmos.Core.Memory.Test.csproj b/source/Cosmos.Core.Memory.Test/Cosmos.Core.Memory.Test.csproj index 77d26a1f4..94166e075 100644 --- a/source/Cosmos.Core.Memory.Test/Cosmos.Core.Memory.Test.csproj +++ b/source/Cosmos.Core.Memory.Test/Cosmos.Core.Memory.Test.csproj @@ -55,6 +55,25 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x64\Debug\ + DEBUG;TRACE + true + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.Core.Memory/Cosmos.Core.Memory.csproj b/source/Cosmos.Core.Memory/Cosmos.Core.Memory.csproj index cb7f0cde8..c89c9bd19 100644 --- a/source/Cosmos.Core.Memory/Cosmos.Core.Memory.csproj +++ b/source/Cosmos.Core.Memory/Cosmos.Core.Memory.csproj @@ -21,7 +21,7 @@ prompt 4 true - x86 + AnyCPU pdbonly @@ -56,6 +56,25 @@ prompt MinimumRecommendedRules.ruleset + + true + bin\x64\Debug\ + DEBUG;TRACE + true + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + diff --git a/source/Cosmos.sln b/source/Cosmos.sln index 2a2132249..8e0ec4285 100644 --- a/source/Cosmos.sln +++ b/source/Cosmos.sln @@ -277,1307 +277,1044 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.ActiveCfg = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.Build.0 = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.ActiveCfg = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.Build.0 = Debug|x86 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.ActiveCfg = Debug|x64 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x64.Build.0 = Debug|x64 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x86.ActiveCfg = Debug|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Debug|x86.Build.0 = Debug|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|Any CPU.ActiveCfg = Debug|x86 {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|Any CPU.Build.0 = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|Mixed Platforms.Build.0 = Release|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x64.ActiveCfg = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x64.Build.0 = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.ActiveCfg = Debug|x86 - {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.Build.0 = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.ActiveCfg = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.Build.0 = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.ActiveCfg = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.Build.0 = Debug|x86 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x64.ActiveCfg = Release|x64 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x64.Build.0 = Release|x64 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.ActiveCfg = Release|x86 + {0462E82B-8C29-41A9-8265-9C89038ADB29}.Release|x86.Build.0 = Release|x86 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.ActiveCfg = Debug|x64 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x64.Build.0 = Debug|x64 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x86.ActiveCfg = Debug|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Debug|x86.Build.0 = Debug|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|Any CPU.ActiveCfg = Debug|x86 {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|Any CPU.Build.0 = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|Mixed Platforms.Build.0 = Release|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x64.ActiveCfg = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x64.Build.0 = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.ActiveCfg = Debug|x86 - {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.Build.0 = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.ActiveCfg = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.Build.0 = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.ActiveCfg = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.Build.0 = Debug|x86 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x64.ActiveCfg = Release|x64 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x64.Build.0 = Release|x64 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.ActiveCfg = Release|x86 + {BC6AE974-1F18-4A19-A956-5062E4D3FD53}.Release|x86.Build.0 = Release|x86 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.ActiveCfg = Debug|x64 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x64.Build.0 = Debug|x64 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x86.ActiveCfg = Debug|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Debug|x86.Build.0 = Debug|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Any CPU.ActiveCfg = Debug|x86 {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Any CPU.Build.0 = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|Mixed Platforms.Build.0 = Release|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.ActiveCfg = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.Build.0 = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.ActiveCfg = Debug|x86 - {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.Build.0 = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.ActiveCfg = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.Build.0 = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.ActiveCfg = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.Build.0 = Debug|x86 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.ActiveCfg = Release|x64 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x64.Build.0 = Release|x64 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.ActiveCfg = Release|x86 + {AB24E403-54F3-4F67-B5E0-119A7227AAC1}.Release|x86.Build.0 = Release|x86 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.ActiveCfg = Debug|x64 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x64.Build.0 = Debug|x64 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x86.ActiveCfg = Debug|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Debug|x86.Build.0 = Debug|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Any CPU.ActiveCfg = Debug|x86 {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Any CPU.Build.0 = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|Mixed Platforms.Build.0 = Release|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.ActiveCfg = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.Build.0 = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.ActiveCfg = Debug|x86 - {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.Build.0 = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.ActiveCfg = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.Build.0 = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.ActiveCfg = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.Build.0 = Debug|x86 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.ActiveCfg = Release|x64 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x64.Build.0 = Release|x64 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.ActiveCfg = Release|x86 + {6D2688FE-6FD8-44A8-B96A-6037457F72A7}.Release|x86.Build.0 = Release|x86 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.ActiveCfg = Debug|x64 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x64.Build.0 = Debug|x64 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x86.ActiveCfg = Debug|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Debug|x86.Build.0 = Debug|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Any CPU.ActiveCfg = Debug|x86 {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Any CPU.Build.0 = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|Mixed Platforms.Build.0 = Release|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.ActiveCfg = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.Build.0 = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.ActiveCfg = Debug|x86 - {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.Build.0 = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.ActiveCfg = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.Build.0 = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.ActiveCfg = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.Build.0 = Debug|x86 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.ActiveCfg = Release|x64 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x64.Build.0 = Release|x64 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.ActiveCfg = Release|x86 + {61535AF6-4A1E-4691-B2BC-039851EF4850}.Release|x86.Build.0 = Release|x86 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.ActiveCfg = Debug|x64 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x64.Build.0 = Debug|x64 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x86.ActiveCfg = Debug|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Debug|x86.Build.0 = Debug|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Any CPU.ActiveCfg = Debug|x86 {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Any CPU.Build.0 = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|Mixed Platforms.Build.0 = Release|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.ActiveCfg = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.Build.0 = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.ActiveCfg = Debug|x86 - {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.Build.0 = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.Build.0 = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.ActiveCfg = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.Build.0 = Debug|x86 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.ActiveCfg = Release|x64 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x64.Build.0 = Release|x64 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.ActiveCfg = Release|x86 + {239E33A7-F0C3-4801-85CA-4D8F89A31DC0}.Release|x86.Build.0 = Release|x86 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.ActiveCfg = Debug|x64 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x64.Build.0 = Debug|x64 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x86.ActiveCfg = Debug|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Debug|x86.Build.0 = Debug|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Any CPU.ActiveCfg = Debug|x86 {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Any CPU.Build.0 = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|Mixed Platforms.Build.0 = Release|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.ActiveCfg = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.Build.0 = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.ActiveCfg = Debug|x86 - {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.Build.0 = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.Build.0 = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.ActiveCfg = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.Build.0 = Debug|x86 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.ActiveCfg = Release|x64 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x64.Build.0 = Release|x64 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.ActiveCfg = Release|x86 + {C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E}.Release|x86.Build.0 = Release|x86 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.ActiveCfg = Debug|x64 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x64.Build.0 = Debug|x64 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x86.ActiveCfg = Debug|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Debug|x86.Build.0 = Debug|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Any CPU.ActiveCfg = Debug|x86 {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Any CPU.Build.0 = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|Mixed Platforms.Build.0 = Release|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.ActiveCfg = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.Build.0 = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.ActiveCfg = Debug|x86 - {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.Build.0 = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.ActiveCfg = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.Build.0 = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.ActiveCfg = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.Build.0 = Debug|x86 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.ActiveCfg = Release|x64 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x64.Build.0 = Release|x64 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.ActiveCfg = Release|x86 + {3370FC04-B669-46A4-A4AA-A89540318F8D}.Release|x86.Build.0 = Release|x86 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.ActiveCfg = Debug|x64 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x64.Build.0 = Debug|x64 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x86.ActiveCfg = Debug|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Debug|x86.Build.0 = Debug|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Any CPU.ActiveCfg = Debug|x86 {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Any CPU.Build.0 = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|Mixed Platforms.Build.0 = Release|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.ActiveCfg = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.Build.0 = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.ActiveCfg = Debug|x86 - {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.Build.0 = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.ActiveCfg = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.Build.0 = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.ActiveCfg = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.Build.0 = Debug|x86 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.ActiveCfg = Release|x64 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x64.Build.0 = Release|x64 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.ActiveCfg = Release|x86 + {A7F3F078-CF99-4018-9A35-2D6DC9517ADB}.Release|x86.Build.0 = Release|x86 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.ActiveCfg = Debug|x64 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x64.Build.0 = Debug|x64 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x86.ActiveCfg = Debug|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Debug|x86.Build.0 = Debug|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|Any CPU.ActiveCfg = Debug|x86 {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|Any CPU.Build.0 = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|Mixed Platforms.Build.0 = Release|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x64.ActiveCfg = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x64.Build.0 = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.ActiveCfg = Debug|x86 - {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.Build.0 = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.ActiveCfg = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.Build.0 = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.ActiveCfg = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.Build.0 = Debug|x86 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x64.ActiveCfg = Release|x64 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x64.Build.0 = Release|x64 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.ActiveCfg = Release|x86 + {1116130E-28E0-428A-A597-F4B3B676C0CA}.Release|x86.Build.0 = Release|x86 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.ActiveCfg = Debug|x64 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x64.Build.0 = Debug|x64 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x86.ActiveCfg = Debug|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Debug|x86.Build.0 = Debug|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Any CPU.ActiveCfg = Debug|x86 {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Any CPU.Build.0 = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|Mixed Platforms.Build.0 = Release|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.ActiveCfg = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.Build.0 = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.ActiveCfg = Debug|x86 - {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.Build.0 = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.ActiveCfg = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.Build.0 = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.ActiveCfg = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.Build.0 = Debug|x86 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.ActiveCfg = Release|x64 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x64.Build.0 = Release|x64 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.ActiveCfg = Release|x86 + {5AC4773C-CB4E-4CD9-8D50-02E10A07DEE6}.Release|x86.Build.0 = Release|x86 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.ActiveCfg = Debug|x64 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x64.Build.0 = Debug|x64 {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x86.ActiveCfg = Debug|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Debug|x86.Build.0 = Debug|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Any CPU.ActiveCfg = Debug|x86 {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Any CPU.Build.0 = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|Mixed Platforms.Build.0 = Release|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.ActiveCfg = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.Build.0 = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.ActiveCfg = Debug|x86 - {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.Build.0 = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.ActiveCfg = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.Build.0 = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.ActiveCfg = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.Build.0 = Debug|x86 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.ActiveCfg = Release|x64 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x64.Build.0 = Release|x64 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.ActiveCfg = Release|x86 + {6A991D03-1435-4005-9809-B8BACDF3B021}.Release|x86.Build.0 = Release|x86 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.ActiveCfg = Debug|x64 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x64.Build.0 = Debug|x64 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x86.ActiveCfg = Debug|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Debug|x86.Build.0 = Debug|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Any CPU.ActiveCfg = Debug|x86 {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Any CPU.Build.0 = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|Mixed Platforms.Build.0 = Release|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.ActiveCfg = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.Build.0 = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.ActiveCfg = Debug|x86 - {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.Build.0 = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.ActiveCfg = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.Build.0 = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.ActiveCfg = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.Build.0 = Debug|x86 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.ActiveCfg = Release|x64 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x64.Build.0 = Release|x64 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.ActiveCfg = Release|x86 + {7C64B97F-516D-4A6D-B9E1-3FE48F561409}.Release|x86.Build.0 = Release|x86 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.ActiveCfg = Debug|x64 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x64.Build.0 = Debug|x64 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x86.ActiveCfg = Debug|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Debug|x86.Build.0 = Debug|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Any CPU.ActiveCfg = Debug|x86 {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Any CPU.Build.0 = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|Mixed Platforms.Build.0 = Release|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.ActiveCfg = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.Build.0 = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.ActiveCfg = Debug|x86 - {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.Build.0 = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.ActiveCfg = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.Build.0 = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.ActiveCfg = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.Build.0 = Debug|x86 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.ActiveCfg = Release|x64 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x64.Build.0 = Release|x64 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.ActiveCfg = Release|x86 + {2259402E-3EAB-448D-9CC6-E5C1C2C716A5}.Release|x86.Build.0 = Release|x86 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.ActiveCfg = Debug|x64 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x64.Build.0 = Debug|x64 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x86.ActiveCfg = Debug|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Debug|x86.Build.0 = Debug|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Any CPU.ActiveCfg = Debug|x86 {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Any CPU.Build.0 = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|Mixed Platforms.Build.0 = Release|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.ActiveCfg = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.Build.0 = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.ActiveCfg = Debug|x86 - {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.Build.0 = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.ActiveCfg = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.Build.0 = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.ActiveCfg = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.Build.0 = Debug|x86 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.ActiveCfg = Release|x64 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x64.Build.0 = Release|x64 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.ActiveCfg = Release|x86 + {D9A87AAD-FCC9-4517-B31D-E904DAD00784}.Release|x86.Build.0 = Release|x86 + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.ActiveCfg = Debug|x64 + {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x64.Build.0 = Debug|x64 {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x86.ActiveCfg = Debug|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Debug|x86.Build.0 = Debug|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Any CPU.ActiveCfg = Debug|x86 {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Any CPU.Build.0 = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|Mixed Platforms.Build.0 = Release|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.ActiveCfg = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.Build.0 = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.ActiveCfg = Debug|x86 - {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.Build.0 = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.ActiveCfg = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.Build.0 = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.ActiveCfg = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.Build.0 = Debug|x86 + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.ActiveCfg = Release|x64 + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x64.Build.0 = Release|x64 + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.ActiveCfg = Release|x86 + {61607F1E-58F9-41CF-972F-128384F3E115}.Release|x86.Build.0 = Release|x86 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.ActiveCfg = Debug|x64 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x64.Build.0 = Debug|x64 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x86.ActiveCfg = Debug|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Debug|x86.Build.0 = Debug|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Any CPU.ActiveCfg = Debug|x86 {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Any CPU.Build.0 = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|Mixed Platforms.Build.0 = Release|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.ActiveCfg = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.Build.0 = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.ActiveCfg = Debug|x86 - {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.Build.0 = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Any CPU.ActiveCfg = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Any CPU.Build.0 = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x64.ActiveCfg = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x64.Build.0 = Debug|x86 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.ActiveCfg = Release|x64 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x64.Build.0 = Release|x64 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.ActiveCfg = Release|x86 + {B97A2956-C363-47F2-A6AA-B4FCCFF4D315}.Release|x86.Build.0 = Release|x86 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|Any CPU.Build.0 = Debug|Any CPU + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x64.ActiveCfg = Debug|x64 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x64.Build.0 = Debug|x64 {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x86.ActiveCfg = Debug|x86 {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Debug|x86.Build.0 = Debug|x86 {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|Any CPU.ActiveCfg = Debug|x86 {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|Any CPU.Build.0 = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|Mixed Platforms.Build.0 = Release|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x64.ActiveCfg = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x64.Build.0 = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x86.ActiveCfg = Debug|x86 - {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x86.Build.0 = Debug|x86 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x64.ActiveCfg = Release|x64 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x64.Build.0 = Release|x64 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x86.ActiveCfg = Release|x86 + {73CF15C1-0AB6-4B3A-8142-D326ADA72970}.Release|x86.Build.0 = Release|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|Any CPU.ActiveCfg = Debug|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|Any CPU.Build.0 = Debug|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|Mixed Platforms.Build.0 = Debug|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|x64.ActiveCfg = Debug|x86 + {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|x64.Build.0 = Debug|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|x86.ActiveCfg = Debug|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Debug|x86.Build.0 = Debug|x86 {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|Any CPU.ActiveCfg = Debug|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|Mixed Platforms.Build.0 = Release|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|x64.ActiveCfg = Debug|x86 - {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|x86.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.Build.0 = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.Build.0 = Debug|x86 + {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|x64.ActiveCfg = Release|x86 + {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|x86.ActiveCfg = Release|x86 + {5B2C0369-7A84-4113-892C-F71B50E1DA12}.Release|x86.Build.0 = Release|x86 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.ActiveCfg = Debug|x64 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x64.Build.0 = Debug|x64 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x86.ActiveCfg = Debug|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Debug|x86.Build.0 = Debug|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Any CPU.ActiveCfg = Debug|x86 {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Any CPU.Build.0 = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|Mixed Platforms.Build.0 = Release|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.Build.0 = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.ActiveCfg = Debug|x86 - {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.Build.0 = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.ActiveCfg = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.Build.0 = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.ActiveCfg = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.Build.0 = Debug|x86 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.ActiveCfg = Release|x64 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x64.Build.0 = Release|x64 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.ActiveCfg = Release|x86 + {1FAC100C-D732-4EA4-B518-5AF4BAF64F2E}.Release|x86.Build.0 = Release|x86 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.ActiveCfg = Debug|x64 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x64.Build.0 = Debug|x64 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x86.ActiveCfg = Debug|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Debug|x86.Build.0 = Debug|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Any CPU.ActiveCfg = Debug|x86 {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Any CPU.Build.0 = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|Mixed Platforms.Build.0 = Release|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.ActiveCfg = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.Build.0 = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.ActiveCfg = Debug|x86 - {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.Build.0 = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Any CPU.ActiveCfg = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Any CPU.Build.0 = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x64.ActiveCfg = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x64.Build.0 = Debug|x86 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.ActiveCfg = Release|x64 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x64.Build.0 = Release|x64 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.ActiveCfg = Release|x86 + {47E8F3DC-FF3F-4CC7-8643-1807260B0B18}.Release|x86.Build.0 = Release|x86 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x64.ActiveCfg = Debug|x64 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x64.Build.0 = Debug|x64 {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x86.ActiveCfg = Debug|x86 {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Debug|x86.Build.0 = Debug|x86 {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|Any CPU.ActiveCfg = Debug|x86 {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|Any CPU.Build.0 = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|Mixed Platforms.Build.0 = Release|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x64.ActiveCfg = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x64.Build.0 = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x86.ActiveCfg = Debug|x86 - {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x86.Build.0 = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Any CPU.ActiveCfg = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Any CPU.Build.0 = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|x64.ActiveCfg = Debug|x86 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x64.ActiveCfg = Release|x64 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x64.Build.0 = Release|x64 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x86.ActiveCfg = Release|x86 + {9C96A7B5-19E5-4923-9569-DB9454E69C82}.Release|x86.Build.0 = Release|x86 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|x64.ActiveCfg = Debug|x64 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|x64.Build.0 = Debug|x64 {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|x86.ActiveCfg = Debug|x86 {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Debug|x86.Build.0 = Debug|x86 {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|Any CPU.ActiveCfg = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|Mixed Platforms.Build.0 = Release|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x64.ActiveCfg = Debug|x86 - {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x86.ActiveCfg = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Any CPU.ActiveCfg = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Any CPU.Build.0 = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|x64.ActiveCfg = Debug|x86 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x64.ActiveCfg = Release|x64 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x64.Build.0 = Release|x64 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x86.ActiveCfg = Release|x86 + {EA63FDF9-057F-4E67-9060-74F4E7A09AE0}.Release|x86.Build.0 = Release|x86 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|x64.ActiveCfg = Debug|x64 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|x64.Build.0 = Debug|x64 {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|x86.ActiveCfg = Debug|x86 {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Debug|x86.Build.0 = Debug|x86 {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|Any CPU.ActiveCfg = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|Mixed Platforms.Build.0 = Release|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x64.ActiveCfg = Debug|x86 - {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x86.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.Build.0 = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.Build.0 = Debug|x86 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x64.ActiveCfg = Release|x64 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x64.Build.0 = Release|x64 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x86.ActiveCfg = Release|x86 + {F708C866-1C9B-4579-8C28-0728ECCFC1ED}.Release|x86.Build.0 = Release|x86 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.ActiveCfg = Debug|x64 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x64.Build.0 = Debug|x64 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x86.ActiveCfg = Debug|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Debug|x86.Build.0 = Debug|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Any CPU.ActiveCfg = Debug|x86 {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Any CPU.Build.0 = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|Mixed Platforms.Build.0 = Release|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.Build.0 = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.ActiveCfg = Debug|x86 - {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.Build.0 = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.ActiveCfg = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.Build.0 = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.ActiveCfg = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.Build.0 = Debug|x86 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.ActiveCfg = Release|x64 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x64.Build.0 = Release|x64 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.ActiveCfg = Release|x86 + {A281A1B1-C718-4BCB-A7BE-ED840A70449A}.Release|x86.Build.0 = Release|x86 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.ActiveCfg = Debug|x64 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x64.Build.0 = Debug|x64 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x86.ActiveCfg = Debug|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Debug|x86.Build.0 = Debug|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Any CPU.ActiveCfg = Debug|x86 {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Any CPU.Build.0 = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|Mixed Platforms.Build.0 = Release|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.ActiveCfg = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.Build.0 = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.ActiveCfg = Debug|x86 - {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.Build.0 = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.ActiveCfg = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.Build.0 = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.ActiveCfg = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.Build.0 = Debug|x86 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.ActiveCfg = Release|x64 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x64.Build.0 = Release|x64 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.ActiveCfg = Release|x86 + {FB71E8EF-E229-4D81-984A-B9170D752BF9}.Release|x86.Build.0 = Release|x86 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.ActiveCfg = Debug|x64 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x64.Build.0 = Debug|x64 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x86.ActiveCfg = Debug|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Debug|x86.Build.0 = Debug|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Any CPU.ActiveCfg = Debug|x86 {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Any CPU.Build.0 = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|Mixed Platforms.Build.0 = Release|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.ActiveCfg = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.Build.0 = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.ActiveCfg = Debug|x86 - {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.Build.0 = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.ActiveCfg = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.Build.0 = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.ActiveCfg = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.Build.0 = Debug|x86 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.ActiveCfg = Release|x64 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x64.Build.0 = Release|x64 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.ActiveCfg = Release|x86 + {76CDB55D-55E3-4B53-AE33-12EC31430826}.Release|x86.Build.0 = Release|x86 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.ActiveCfg = Debug|x64 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x64.Build.0 = Debug|x64 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x86.ActiveCfg = Debug|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Debug|x86.Build.0 = Debug|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Any CPU.ActiveCfg = Debug|x86 {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Any CPU.Build.0 = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|Mixed Platforms.Build.0 = Release|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.ActiveCfg = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.Build.0 = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.ActiveCfg = Debug|x86 - {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.Build.0 = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.ActiveCfg = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.Build.0 = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.ActiveCfg = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.Build.0 = Debug|x86 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.ActiveCfg = Release|x64 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x64.Build.0 = Release|x64 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.ActiveCfg = Release|x86 + {3D84CF8B-C6DF-4D78-8DE1-708582B43711}.Release|x86.Build.0 = Release|x86 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.ActiveCfg = Debug|x64 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x64.Build.0 = Debug|x64 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x86.ActiveCfg = Debug|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Debug|x86.Build.0 = Debug|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Any CPU.ActiveCfg = Debug|x86 {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Any CPU.Build.0 = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|Mixed Platforms.Build.0 = Release|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.ActiveCfg = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.Build.0 = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.ActiveCfg = Debug|x86 - {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.Build.0 = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Any CPU.ActiveCfg = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Any CPU.Build.0 = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|x64.ActiveCfg = Debug|x86 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.ActiveCfg = Release|x64 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x64.Build.0 = Release|x64 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.ActiveCfg = Release|x86 + {D4BA64B3-D7F6-4A3A-AF1D-74E41B49D865}.Release|x86.Build.0 = Release|x86 + {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|x64.ActiveCfg = Debug|x64 + {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|x64.Build.0 = Debug|x64 {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|x86.ActiveCfg = Debug|x86 {2A59517C-356E-4B55-B155-50335BF482FB}.Debug|x86.Build.0 = Debug|x86 {2A59517C-356E-4B55-B155-50335BF482FB}.Release|Any CPU.ActiveCfg = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Release|Mixed Platforms.Build.0 = Release|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x64.ActiveCfg = Debug|x86 - {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x86.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.Build.0 = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.Build.0 = Debug|x86 + {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x64.ActiveCfg = Release|x64 + {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x64.Build.0 = Release|x64 + {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x86.ActiveCfg = Release|x86 + {2A59517C-356E-4B55-B155-50335BF482FB}.Release|x86.Build.0 = Release|x86 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.ActiveCfg = Debug|x64 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x64.Build.0 = Debug|x64 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x86.ActiveCfg = Debug|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Debug|x86.Build.0 = Debug|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Any CPU.ActiveCfg = Debug|x86 {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Any CPU.Build.0 = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|Mixed Platforms.Build.0 = Release|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.Build.0 = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.ActiveCfg = Debug|x86 - {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.Build.0 = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Any CPU.ActiveCfg = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Any CPU.Build.0 = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x64.ActiveCfg = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x64.Build.0 = Debug|x86 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.ActiveCfg = Release|x64 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x64.Build.0 = Release|x64 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.ActiveCfg = Release|x86 + {841A734E-9606-4AAB-9C4A-74E7E303FF5D}.Release|x86.Build.0 = Release|x86 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x64.ActiveCfg = Debug|x64 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x64.Build.0 = Debug|x64 {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x86.ActiveCfg = Debug|x86 {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Debug|x86.Build.0 = Debug|x86 {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|Any CPU.ActiveCfg = Debug|x86 {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|Any CPU.Build.0 = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|Mixed Platforms.Build.0 = Release|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x64.ActiveCfg = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x64.Build.0 = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x86.ActiveCfg = Debug|x86 - {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x86.Build.0 = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Any CPU.ActiveCfg = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Any CPU.Build.0 = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x64.ActiveCfg = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x64.Build.0 = Debug|x86 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x64.ActiveCfg = Release|x64 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x64.Build.0 = Release|x64 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x86.ActiveCfg = Release|x86 + {44604DA8-CABD-4CBC-AA9A-258AC59F03AD}.Release|x86.Build.0 = Release|x86 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x64.ActiveCfg = Debug|x64 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x64.Build.0 = Debug|x64 {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x86.ActiveCfg = Debug|x86 {3720749F-1519-4A35-B944-FF05AD01F8DC}.Debug|x86.Build.0 = Debug|x86 {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|Any CPU.ActiveCfg = Debug|x86 {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|Any CPU.Build.0 = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|Mixed Platforms.Build.0 = Release|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x64.ActiveCfg = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x64.Build.0 = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x86.ActiveCfg = Debug|x86 - {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x86.Build.0 = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.ActiveCfg = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.Build.0 = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.ActiveCfg = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.Build.0 = Debug|x86 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x64.ActiveCfg = Release|x64 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x64.Build.0 = Release|x64 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x86.ActiveCfg = Release|x86 + {3720749F-1519-4A35-B944-FF05AD01F8DC}.Release|x86.Build.0 = Release|x86 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.ActiveCfg = Debug|x64 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x64.Build.0 = Debug|x64 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x86.ActiveCfg = Debug|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Debug|x86.Build.0 = Debug|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Any CPU.ActiveCfg = Debug|x86 {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Any CPU.Build.0 = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|Mixed Platforms.Build.0 = Release|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.ActiveCfg = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.Build.0 = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.ActiveCfg = Debug|x86 - {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.Build.0 = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Any CPU.ActiveCfg = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Any CPU.Build.0 = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|x64.ActiveCfg = Debug|x86 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.ActiveCfg = Release|x64 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x64.Build.0 = Release|x64 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.ActiveCfg = Release|x86 + {3DEF0461-08AB-471A-8F03-A9C556652A0F}.Release|x86.Build.0 = Release|x86 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|x64.ActiveCfg = Debug|x64 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|x64.Build.0 = Debug|x64 {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|x86.ActiveCfg = Debug|x86 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Debug|x86.Build.0 = Debug|x86 {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|Any CPU.ActiveCfg = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|Mixed Platforms.Build.0 = Debug|x86 - {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|x64.ActiveCfg = Debug|x86 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|x64.ActiveCfg = Debug|x64 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|x64.Build.0 = Debug|x64 {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|x86.ActiveCfg = Debug|x86 + {91CBD640-C07D-4556-B4CB-6F8CD88C67C9}.Release|x86.Build.0 = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|Any CPU.ActiveCfg = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|Any CPU.Build.0 = Debug|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|Mixed Platforms.Build.0 = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|x64.ActiveCfg = Debug|x86 + {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|x64.Build.0 = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|x86.ActiveCfg = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Debug|x86.Build.0 = Debug|x86 {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|Any CPU.ActiveCfg = Debug|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|Mixed Platforms.Build.0 = Release|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|x64.ActiveCfg = Debug|x86 - {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|x86.ActiveCfg = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Any CPU.ActiveCfg = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Any CPU.Build.0 = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|x64.ActiveCfg = Debug|x86 + {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|x64.ActiveCfg = Release|x86 + {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|x86.ActiveCfg = Release|x86 + {E5647BFD-1507-4F02-A7D5-E0F9D6AECE3A}.Release|x86.Build.0 = Release|x86 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|x64.ActiveCfg = Debug|x64 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|x64.Build.0 = Debug|x64 {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|x86.ActiveCfg = Debug|x86 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Debug|x86.Build.0 = Debug|x86 {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|Any CPU.ActiveCfg = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|Mixed Platforms.Build.0 = Release|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x64.ActiveCfg = Debug|x86 - {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x86.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Any CPU.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Any CPU.Build.0 = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x64.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x64.Build.0 = Debug|x86 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x64.ActiveCfg = Release|x64 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x64.Build.0 = Release|x64 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x86.ActiveCfg = Release|x86 + {8E71FA9E-BB28-4B34-AB11-729E33B8C8E6}.Release|x86.Build.0 = Release|x86 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x64.ActiveCfg = Debug|x64 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x64.Build.0 = Debug|x64 {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x86.ActiveCfg = Debug|x86 {8840988C-0D5B-4761-96BF-7241FAC38199}.Debug|x86.Build.0 = Debug|x86 {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|Any CPU.ActiveCfg = Debug|x86 {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|Any CPU.Build.0 = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|Mixed Platforms.Build.0 = Release|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x64.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x64.Build.0 = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x86.ActiveCfg = Debug|x86 - {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x86.Build.0 = Debug|x86 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x64.ActiveCfg = Release|x64 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x64.Build.0 = Release|x64 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x86.ActiveCfg = Release|x86 + {8840988C-0D5B-4761-96BF-7241FAC38199}.Release|x86.Build.0 = Release|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|Any CPU.ActiveCfg = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|Any CPU.Build.0 = Debug|x86 - {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|Mixed Platforms.Build.0 = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|x64.ActiveCfg = Debug|x86 + {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|x64.Build.0 = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|x86.ActiveCfg = Debug|x86 + {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Debug|x86.Build.0 = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|Any CPU.ActiveCfg = Debug|x86 - {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|Mixed Platforms.Build.0 = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|x64.ActiveCfg = Debug|x86 + {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|x64.Build.0 = Debug|x86 {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|x86.ActiveCfg = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Any CPU.ActiveCfg = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Any CPU.Build.0 = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|x64.ActiveCfg = Debug|x86 + {7D29D57D-A78B-4E67-BBC3-DF84BD10FC6D}.Release|x86.Build.0 = Debug|x86 + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|x64.ActiveCfg = Debug|x64 + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|x64.Build.0 = Debug|x64 {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|x86.ActiveCfg = Debug|x86 {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Debug|x86.Build.0 = Debug|x86 {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|Any CPU.ActiveCfg = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|Mixed Platforms.Build.0 = Debug|x86 - {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|x64.ActiveCfg = Debug|x86 + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|x64.ActiveCfg = Debug|x64 + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|x64.Build.0 = Debug|x64 {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|x86.ActiveCfg = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Any CPU.ActiveCfg = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Any CPU.Build.0 = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|x64.ActiveCfg = Debug|x86 + {8E3537CB-D0F9-4CFB-AE6F-72B465CA03F6}.Release|x86.Build.0 = Debug|x86 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|Any CPU.Build.0 = Debug|Any CPU + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|x64.ActiveCfg = Debug|x64 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|x64.Build.0 = Debug|x64 {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|x86.ActiveCfg = Debug|x86 {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Debug|x86.Build.0 = Debug|x86 {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|Any CPU.ActiveCfg = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|Mixed Platforms.Build.0 = Release|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x64.ActiveCfg = Debug|x86 - {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x86.ActiveCfg = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Debug|Any CPU.ActiveCfg = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Debug|Any CPU.Build.0 = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Debug|x64.ActiveCfg = Debug|x86 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x64.ActiveCfg = Release|x64 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x64.Build.0 = Release|x64 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x86.ActiveCfg = Release|x86 + {82F6DDA3-E45D-4E7A-AA09-85FC2EDE2F76}.Release|x86.Build.0 = Release|x86 + {E978986A-8160-4979-919E-F099A43EF146}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E978986A-8160-4979-919E-F099A43EF146}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E978986A-8160-4979-919E-F099A43EF146}.Debug|x64.ActiveCfg = Debug|x64 + {E978986A-8160-4979-919E-F099A43EF146}.Debug|x64.Build.0 = Debug|x64 {E978986A-8160-4979-919E-F099A43EF146}.Debug|x86.ActiveCfg = Debug|x86 {E978986A-8160-4979-919E-F099A43EF146}.Debug|x86.Build.0 = Debug|x86 {E978986A-8160-4979-919E-F099A43EF146}.Release|Any CPU.ActiveCfg = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Release|Mixed Platforms.Build.0 = Release|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Release|x64.ActiveCfg = Debug|x86 - {E978986A-8160-4979-919E-F099A43EF146}.Release|x86.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Any CPU.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Any CPU.Build.0 = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x64.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x64.Build.0 = Debug|x86 + {E978986A-8160-4979-919E-F099A43EF146}.Release|x64.ActiveCfg = Release|x64 + {E978986A-8160-4979-919E-F099A43EF146}.Release|x64.Build.0 = Release|x64 + {E978986A-8160-4979-919E-F099A43EF146}.Release|x86.ActiveCfg = Release|x86 + {E978986A-8160-4979-919E-F099A43EF146}.Release|x86.Build.0 = Release|x86 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x64.ActiveCfg = Debug|x64 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x64.Build.0 = Debug|x64 {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x86.ActiveCfg = Debug|x86 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Debug|x86.Build.0 = Debug|x86 {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|Any CPU.ActiveCfg = Debug|x86 {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|Any CPU.Build.0 = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|Mixed Platforms.Build.0 = Release|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x64.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x64.Build.0 = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x86.ActiveCfg = Debug|x86 - {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x86.Build.0 = Debug|x86 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x64.ActiveCfg = Release|x64 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x64.Build.0 = Release|x64 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x86.ActiveCfg = Release|x86 + {4BD6A15B-DFD3-4A63-8097-88D2F79ED590}.Release|x86.Build.0 = Release|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|Any CPU.ActiveCfg = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|Any CPU.Build.0 = Debug|x86 - {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|Mixed Platforms.Build.0 = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|x64.ActiveCfg = Debug|x86 + {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|x64.Build.0 = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|x86.ActiveCfg = Debug|x86 + {55E633B7-8252-4B48-948B-EC83338CAC61}.Debug|x86.Build.0 = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|Any CPU.ActiveCfg = Debug|x86 - {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|Mixed Platforms.Build.0 = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|x64.ActiveCfg = Debug|x86 + {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|x64.Build.0 = Debug|x86 {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|x86.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Any CPU.Build.0 = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x64.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x64.Build.0 = Debug|x86 + {55E633B7-8252-4B48-948B-EC83338CAC61}.Release|x86.Build.0 = Debug|x86 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x64.ActiveCfg = Debug|x64 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x64.Build.0 = Debug|x64 {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x86.ActiveCfg = Debug|x86 {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Debug|x86.Build.0 = Debug|x86 {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|Any CPU.ActiveCfg = Debug|x86 {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|Any CPU.Build.0 = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|Mixed Platforms.Build.0 = Release|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x64.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x64.Build.0 = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x86.ActiveCfg = Debug|x86 - {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x86.Build.0 = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Any CPU.ActiveCfg = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Any CPU.Build.0 = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x64.ActiveCfg = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x64.Build.0 = Debug|x86 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x64.ActiveCfg = Release|x64 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x64.Build.0 = Release|x64 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x86.ActiveCfg = Release|x86 + {C264460F-C9C8-41C3-8C26-9BDF4710744C}.Release|x86.Build.0 = Release|x86 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x64.ActiveCfg = Debug|x64 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x64.Build.0 = Debug|x64 {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x86.ActiveCfg = Debug|x86 {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Debug|x86.Build.0 = Debug|x86 {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|Any CPU.ActiveCfg = Debug|x86 {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|Any CPU.Build.0 = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|Mixed Platforms.Build.0 = Release|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x64.ActiveCfg = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x64.Build.0 = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x86.ActiveCfg = Debug|x86 - {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x86.Build.0 = Debug|x86 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x64.ActiveCfg = Release|x64 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x64.Build.0 = Release|x64 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x86.ActiveCfg = Release|x86 + {57045FE8-B0FE-4FC1-810F-7C3914AEF1DE}.Release|x86.Build.0 = Release|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|Any CPU.ActiveCfg = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|Any CPU.Build.0 = Debug|x86 - {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|Mixed Platforms.Build.0 = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|x64.ActiveCfg = Debug|x86 + {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|x64.Build.0 = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|x86.ActiveCfg = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Debug|x86.Build.0 = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|Any CPU.ActiveCfg = Debug|x86 - {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|Mixed Platforms.Build.0 = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|x64.ActiveCfg = Debug|x86 + {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|x64.Build.0 = Debug|x86 {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|x86.ActiveCfg = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Any CPU.ActiveCfg = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Any CPU.Build.0 = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|x64.ActiveCfg = Debug|x86 + {73D29A51-072A-4310-B3D1-539AA92094AA}.Release|x86.Build.0 = Debug|x86 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|x64.ActiveCfg = Debug|x64 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|x64.Build.0 = Debug|x64 {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|x86.ActiveCfg = Debug|x86 {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Debug|x86.Build.0 = Debug|x86 {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|Any CPU.ActiveCfg = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|Mixed Platforms.Build.0 = Release|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x64.ActiveCfg = Debug|x86 - {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x86.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Any CPU.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Any CPU.Build.0 = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x64.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x64.Build.0 = Debug|x86 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x64.ActiveCfg = Release|x64 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x64.Build.0 = Release|x64 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x86.ActiveCfg = Release|x86 + {220BFCDD-0747-4A3D-B022-51D4CFB373BE}.Release|x86.Build.0 = Release|x86 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x64.ActiveCfg = Debug|x64 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x64.Build.0 = Debug|x64 {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x86.ActiveCfg = Debug|x86 {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Debug|x86.Build.0 = Debug|x86 {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|Any CPU.ActiveCfg = Debug|x86 {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|Any CPU.Build.0 = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|Mixed Platforms.Build.0 = Release|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x64.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x64.Build.0 = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x86.ActiveCfg = Debug|x86 - {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x86.Build.0 = Debug|x86 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x64.ActiveCfg = Release|x64 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x64.Build.0 = Release|x64 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x86.ActiveCfg = Release|x86 + {BDC011BE-6041-4A58-A6E7-0F592E78CB27}.Release|x86.Build.0 = Release|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|Any CPU.ActiveCfg = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|Any CPU.Build.0 = Debug|x86 - {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|Mixed Platforms.Build.0 = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|x64.ActiveCfg = Debug|x86 + {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|x64.Build.0 = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|x86.ActiveCfg = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Debug|x86.Build.0 = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|Any CPU.ActiveCfg = Debug|x86 - {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|Mixed Platforms.Build.0 = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|x64.ActiveCfg = Debug|x86 + {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|x64.Build.0 = Debug|x86 {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|x86.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.Build.0 = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.Build.0 = Debug|x86 + {7E059184-F2C5-4CC6-B86D-FA12590C3C40}.Release|x86.Build.0 = Debug|x86 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.ActiveCfg = Debug|x64 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x64.Build.0 = Debug|x64 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x86.ActiveCfg = Debug|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Debug|x86.Build.0 = Debug|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Any CPU.ActiveCfg = Debug|x86 {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Any CPU.Build.0 = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|Mixed Platforms.Build.0 = Release|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.Build.0 = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.ActiveCfg = Debug|x86 - {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.Build.0 = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Any CPU.ActiveCfg = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Any CPU.Build.0 = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|x64.ActiveCfg = Debug|x86 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.ActiveCfg = Release|x64 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x64.Build.0 = Release|x64 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.ActiveCfg = Release|x86 + {6128DEEB-D30F-4859-B60F-C36D5452F3E9}.Release|x86.Build.0 = Release|x86 + {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|x64.ActiveCfg = Debug|x64 + {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|x64.Build.0 = Debug|x64 {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|x86.ActiveCfg = Debug|x86 {AB869246-4887-4117-851D-766EB9FF1E29}.Debug|x86.Build.0 = Debug|x86 {AB869246-4887-4117-851D-766EB9FF1E29}.Release|Any CPU.ActiveCfg = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Release|Mixed Platforms.Build.0 = Release|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x64.ActiveCfg = Debug|x86 - {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x86.ActiveCfg = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Any CPU.ActiveCfg = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Any CPU.Build.0 = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|x64.ActiveCfg = Debug|x86 + {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x64.ActiveCfg = Release|x64 + {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x64.Build.0 = Release|x64 + {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x86.ActiveCfg = Release|x86 + {AB869246-4887-4117-851D-766EB9FF1E29}.Release|x86.Build.0 = Release|x86 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|x64.ActiveCfg = Debug|x64 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|x64.Build.0 = Debug|x64 {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|x86.ActiveCfg = Debug|x86 {BD054B3B-D183-4C19-BBD3-E853B736818A}.Debug|x86.Build.0 = Debug|x86 {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|Any CPU.ActiveCfg = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|Mixed Platforms.Build.0 = Release|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x64.ActiveCfg = Debug|x86 - {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x86.ActiveCfg = Debug|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Any CPU.ActiveCfg = Debug|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Any CPU.Build.0 = Debug|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|x64.ActiveCfg = Debug|x86 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x64.ActiveCfg = Release|x64 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x64.Build.0 = Release|x64 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x86.ActiveCfg = Release|x86 + {BD054B3B-D183-4C19-BBD3-E853B736818A}.Release|x86.Build.0 = Release|x86 + {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|x64.ActiveCfg = Debug|x64 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|x64.Build.0 = Debug|x64 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|x86.ActiveCfg = Debug|x86 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Debug|x86.Build.0 = Debug|x86 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|Any CPU.ActiveCfg = Debug|x86 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|Any CPU.Build.0 = Release|Any CPU - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|Mixed Platforms.Build.0 = Release|x86 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x64.ActiveCfg = Debug|x86 + {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x64.ActiveCfg = Release|x64 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x64.Build.0 = Release|x64 - {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x86.ActiveCfg = Debug|x86 + {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x86.ActiveCfg = Release|x86 {99A78D26-0277-4882-97BE-F5A0FA90CBCF}.Release|x86.Build.0 = Release|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Any CPU.ActiveCfg = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Any CPU.Build.0 = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|x64.ActiveCfg = Debug|x86 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|x64.ActiveCfg = Debug|x64 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|x64.Build.0 = Debug|x64 {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|x86.ActiveCfg = Debug|x86 {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Debug|x86.Build.0 = Debug|x86 {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|Any CPU.ActiveCfg = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|Mixed Platforms.Build.0 = Release|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x64.ActiveCfg = Debug|x86 - {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x86.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Any CPU.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Any CPU.Build.0 = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x64.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x64.Build.0 = Debug|x86 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x64.ActiveCfg = Release|x64 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x64.Build.0 = Release|x64 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x86.ActiveCfg = Release|x86 + {0D2DCE1C-2A34-4CFF-9A33-E9D9B8518D50}.Release|x86.Build.0 = Release|x86 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x64.ActiveCfg = Debug|x64 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x64.Build.0 = Debug|x64 {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x86.ActiveCfg = Debug|x86 {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Debug|x86.Build.0 = Debug|x86 {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|Any CPU.ActiveCfg = Debug|x86 {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|Any CPU.Build.0 = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|Mixed Platforms.Build.0 = Release|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x64.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x64.Build.0 = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x86.ActiveCfg = Debug|x86 - {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x86.Build.0 = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Any CPU.ActiveCfg = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Any CPU.Build.0 = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x64.ActiveCfg = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x64.Build.0 = Debug|x86 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x64.ActiveCfg = Release|x64 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x64.Build.0 = Release|x64 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x86.ActiveCfg = Release|x86 + {758FAF24-9974-4DB8-82EF-1B64DAF2F0BC}.Release|x86.Build.0 = Release|x86 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x64.ActiveCfg = Debug|x64 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x64.Build.0 = Debug|x64 {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x86.ActiveCfg = Debug|x86 {78304B1E-C323-4A78-9E7D-2578E58311B6}.Debug|x86.Build.0 = Debug|x86 {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|Any CPU.ActiveCfg = Debug|x86 {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|Any CPU.Build.0 = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|Mixed Platforms.Build.0 = Release|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x64.ActiveCfg = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x64.Build.0 = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x86.ActiveCfg = Debug|x86 - {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x86.Build.0 = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Any CPU.Build.0 = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x64.ActiveCfg = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x64.Build.0 = Debug|x86 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x64.ActiveCfg = Release|x64 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x64.Build.0 = Release|x64 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x86.ActiveCfg = Release|x86 + {78304B1E-C323-4A78-9E7D-2578E58311B6}.Release|x86.Build.0 = Release|x86 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x64.ActiveCfg = Debug|x64 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x64.Build.0 = Debug|x64 {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x86.ActiveCfg = Debug|x86 {E6D3B644-C487-472D-A978-C1A82D0C099B}.Debug|x86.Build.0 = Debug|x86 {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|Any CPU.ActiveCfg = Debug|x86 {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|Any CPU.Build.0 = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|Mixed Platforms.Build.0 = Release|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x64.ActiveCfg = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x64.Build.0 = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x86.ActiveCfg = Debug|x86 - {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x86.Build.0 = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Any CPU.ActiveCfg = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Any CPU.Build.0 = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x64.ActiveCfg = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x64.Build.0 = Debug|x86 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x64.ActiveCfg = Release|x64 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x64.Build.0 = Release|x64 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x86.ActiveCfg = Release|x86 + {E6D3B644-C487-472D-A978-C1A82D0C099B}.Release|x86.Build.0 = Release|x86 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x64.ActiveCfg = Debug|x64 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x64.Build.0 = Debug|x64 {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x86.ActiveCfg = Debug|x86 {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Debug|x86.Build.0 = Debug|x86 {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|Any CPU.ActiveCfg = Debug|x86 {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|Any CPU.Build.0 = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|Mixed Platforms.Build.0 = Release|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x64.ActiveCfg = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x64.Build.0 = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x86.ActiveCfg = Debug|x86 - {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x86.Build.0 = Debug|x86 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x64.ActiveCfg = Release|x64 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x64.Build.0 = Release|x64 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x86.ActiveCfg = Release|x86 + {839EDC9D-6D2E-4892-A7F0-17861BA9FA0C}.Release|x86.Build.0 = Release|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|Any CPU.ActiveCfg = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|Any CPU.Build.0 = Debug|x86 - {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|Mixed Platforms.Build.0 = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|x64.ActiveCfg = Debug|x86 + {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|x64.Build.0 = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|x86.ActiveCfg = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Debug|x86.Build.0 = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Release|Any CPU.ActiveCfg = Debug|x86 - {431643CB-006C-49EF-8E0F-1540F994C936}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {431643CB-006C-49EF-8E0F-1540F994C936}.Release|Mixed Platforms.Build.0 = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Release|x64.ActiveCfg = Debug|x86 + {431643CB-006C-49EF-8E0F-1540F994C936}.Release|x64.Build.0 = Debug|x86 {431643CB-006C-49EF-8E0F-1540F994C936}.Release|x86.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Any CPU.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Any CPU.Build.0 = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x64.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x64.Build.0 = Debug|x86 + {431643CB-006C-49EF-8E0F-1540F994C936}.Release|x86.Build.0 = Debug|x86 + {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x64.ActiveCfg = Debug|x64 + {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x64.Build.0 = Debug|x64 {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x86.ActiveCfg = Debug|x86 {21915A7E-CC84-4836-8B87-857B6149D496}.Debug|x86.Build.0 = Debug|x86 {21915A7E-CC84-4836-8B87-857B6149D496}.Release|Any CPU.ActiveCfg = Debug|x86 {21915A7E-CC84-4836-8B87-857B6149D496}.Release|Any CPU.Build.0 = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|Mixed Platforms.Build.0 = Release|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x64.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x64.Build.0 = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x86.ActiveCfg = Debug|x86 - {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x86.Build.0 = Debug|x86 + {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x64.ActiveCfg = Release|x64 + {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x64.Build.0 = Release|x64 + {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x86.ActiveCfg = Release|x86 + {21915A7E-CC84-4836-8B87-857B6149D496}.Release|x86.Build.0 = Release|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|Any CPU.ActiveCfg = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|Any CPU.Build.0 = Debug|x86 - {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|Mixed Platforms.Build.0 = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|x64.ActiveCfg = Debug|x86 + {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|x64.Build.0 = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|x86.ActiveCfg = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Debug|x86.Build.0 = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|Any CPU.ActiveCfg = Debug|x86 - {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|Mixed Platforms.Build.0 = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|x64.ActiveCfg = Debug|x86 + {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|x64.Build.0 = Debug|x86 {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|x86.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Any CPU.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Any CPU.Build.0 = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x64.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x64.Build.0 = Debug|x86 + {78AC2B12-8185-4033-80F0-DA5BF874BE5E}.Release|x86.Build.0 = Debug|x86 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x64.ActiveCfg = Debug|x64 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x64.Build.0 = Debug|x64 {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x86.ActiveCfg = Debug|x86 {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Debug|x86.Build.0 = Debug|x86 {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|Any CPU.ActiveCfg = Debug|x86 {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|Any CPU.Build.0 = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|Mixed Platforms.Build.0 = Release|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x64.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x64.Build.0 = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x86.ActiveCfg = Debug|x86 - {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x86.Build.0 = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Any CPU.ActiveCfg = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Any CPU.Build.0 = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x64.ActiveCfg = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x64.Build.0 = Debug|x86 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x64.ActiveCfg = Release|x64 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x64.Build.0 = Release|x64 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x86.ActiveCfg = Release|x86 + {0B20C26F-CA92-4D88-8211-EC7B0A261337}.Release|x86.Build.0 = Release|x86 + {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x64.ActiveCfg = Debug|x64 + {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x64.Build.0 = Debug|x64 {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x86.ActiveCfg = Debug|x86 {F8889473-5866-4913-86AC-8072A1A2558C}.Debug|x86.Build.0 = Debug|x86 {F8889473-5866-4913-86AC-8072A1A2558C}.Release|Any CPU.ActiveCfg = Debug|x86 {F8889473-5866-4913-86AC-8072A1A2558C}.Release|Any CPU.Build.0 = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|Mixed Platforms.Build.0 = Release|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x64.ActiveCfg = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x64.Build.0 = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x86.ActiveCfg = Debug|x86 - {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x86.Build.0 = Debug|x86 + {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x64.ActiveCfg = Release|x64 + {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x64.Build.0 = Release|x64 + {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x86.ActiveCfg = Release|x86 + {F8889473-5866-4913-86AC-8072A1A2558C}.Release|x86.Build.0 = Release|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|Any CPU.ActiveCfg = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|Any CPU.Build.0 = Debug|x86 - {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|Mixed Platforms.Build.0 = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|x64.ActiveCfg = Debug|x86 + {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|x64.Build.0 = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|x86.ActiveCfg = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Debug|x86.Build.0 = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|Any CPU.ActiveCfg = Debug|x86 - {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|Mixed Platforms.Build.0 = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|x64.ActiveCfg = Debug|x86 + {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|x64.Build.0 = Debug|x86 {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|x86.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Any CPU.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Any CPU.Build.0 = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x64.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x64.Build.0 = Debug|x86 + {444098BC-8F72-4030-A8C0-118D2DD93EB8}.Release|x86.Build.0 = Debug|x86 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x64.ActiveCfg = Debug|x64 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x64.Build.0 = Debug|x64 {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x86.ActiveCfg = Debug|x86 {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Debug|x86.Build.0 = Debug|x86 {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|Any CPU.ActiveCfg = Debug|x86 {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|Any CPU.Build.0 = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|Mixed Platforms.Build.0 = Release|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x64.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x64.Build.0 = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x86.ActiveCfg = Debug|x86 - {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x86.Build.0 = Debug|x86 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x64.ActiveCfg = Release|x64 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x64.Build.0 = Release|x64 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x86.ActiveCfg = Release|x86 + {3E28CFD9-25D4-4EBB-86E3-4A4A8A8936FE}.Release|x86.Build.0 = Release|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|Any CPU.ActiveCfg = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|Any CPU.Build.0 = Debug|x86 - {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|Mixed Platforms.Build.0 = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|x64.ActiveCfg = Debug|x86 + {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|x64.Build.0 = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|x86.ActiveCfg = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Debug|x86.Build.0 = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|Any CPU.ActiveCfg = Debug|x86 - {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|Mixed Platforms.Build.0 = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|x64.ActiveCfg = Debug|x86 + {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|x64.Build.0 = Debug|x86 {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|x86.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Any CPU.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Any CPU.Build.0 = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x64.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x64.Build.0 = Debug|x86 + {41EFAEB7-7D53-4F6B-AE63-CFDA84A22A38}.Release|x86.Build.0 = Debug|x86 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x64.ActiveCfg = Debug|x64 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x64.Build.0 = Debug|x64 {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x86.ActiveCfg = Debug|x86 {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Debug|x86.Build.0 = Debug|x86 {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|Any CPU.ActiveCfg = Debug|x86 {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|Any CPU.Build.0 = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|Mixed Platforms.Build.0 = Release|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x64.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x64.Build.0 = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x86.ActiveCfg = Debug|x86 - {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x86.Build.0 = Debug|x86 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x64.ActiveCfg = Release|x64 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x64.Build.0 = Release|x64 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x86.ActiveCfg = Release|x86 + {31E3F8E2-7CC0-426C-ACCB-77B3319AF5D3}.Release|x86.Build.0 = Release|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|Any CPU.ActiveCfg = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|Any CPU.Build.0 = Debug|x86 - {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|Mixed Platforms.Build.0 = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|x64.ActiveCfg = Debug|x86 + {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|x64.Build.0 = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|x86.ActiveCfg = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Debug|x86.Build.0 = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|Any CPU.ActiveCfg = Debug|x86 - {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|Mixed Platforms.Build.0 = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|x64.ActiveCfg = Debug|x86 + {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|x64.Build.0 = Debug|x86 {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|x86.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Any CPU.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Any CPU.Build.0 = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x64.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x64.Build.0 = Debug|x86 + {ACD31367-B823-44E2-BABB-1605F26DB107}.Release|x86.Build.0 = Debug|x86 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x64.ActiveCfg = Debug|x64 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x64.Build.0 = Debug|x64 {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x86.ActiveCfg = Debug|x86 {A0893493-D4F0-4B9F-9826-86319E143D86}.Debug|x86.Build.0 = Debug|x86 {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|Any CPU.ActiveCfg = Debug|x86 {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|Any CPU.Build.0 = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|Mixed Platforms.Build.0 = Release|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x64.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x64.Build.0 = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x86.ActiveCfg = Debug|x86 - {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x86.Build.0 = Debug|x86 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x64.ActiveCfg = Release|x64 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x64.Build.0 = Release|x64 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x86.ActiveCfg = Release|x86 + {A0893493-D4F0-4B9F-9826-86319E143D86}.Release|x86.Build.0 = Release|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|Any CPU.ActiveCfg = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|Any CPU.Build.0 = Debug|x86 - {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|Mixed Platforms.Build.0 = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|x64.ActiveCfg = Debug|x86 + {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|x64.Build.0 = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|x86.ActiveCfg = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Debug|x86.Build.0 = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|Any CPU.ActiveCfg = Debug|x86 - {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|Mixed Platforms.Build.0 = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|x64.ActiveCfg = Debug|x86 + {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|x64.Build.0 = Debug|x86 {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|x86.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Any CPU.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Any CPU.Build.0 = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x64.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x64.Build.0 = Debug|x86 + {C006CC79-7FFD-45F1-AD8C-57AC879CC29F}.Release|x86.Build.0 = Debug|x86 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x64.ActiveCfg = Debug|x64 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x64.Build.0 = Debug|x64 {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x86.ActiveCfg = Debug|x86 {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Debug|x86.Build.0 = Debug|x86 {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|Any CPU.ActiveCfg = Debug|x86 {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|Any CPU.Build.0 = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|Mixed Platforms.Build.0 = Release|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x64.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x64.Build.0 = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x86.ActiveCfg = Debug|x86 - {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x86.Build.0 = Debug|x86 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x64.ActiveCfg = Release|x64 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x64.Build.0 = Release|x64 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x86.ActiveCfg = Release|x86 + {9DF5C0A9-B91C-4647-B939-E47513743A0C}.Release|x86.Build.0 = Release|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|Any CPU.ActiveCfg = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|Any CPU.Build.0 = Debug|x86 - {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|Mixed Platforms.Build.0 = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|x64.ActiveCfg = Debug|x86 + {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|x64.Build.0 = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|x86.ActiveCfg = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Debug|x86.Build.0 = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|Any CPU.ActiveCfg = Debug|x86 - {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|Mixed Platforms.Build.0 = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|x64.ActiveCfg = Debug|x86 + {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|x64.Build.0 = Debug|x86 {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|x86.ActiveCfg = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Any CPU.ActiveCfg = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Any CPU.Build.0 = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|x64.ActiveCfg = Debug|x86 + {85E13410-C85A-4B0C-BEE5-F9A120ECC94E}.Release|x86.Build.0 = Debug|x86 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|x64.ActiveCfg = Debug|x64 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|x64.Build.0 = Debug|x64 {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|x86.ActiveCfg = Debug|x86 {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Debug|x86.Build.0 = Debug|x86 {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|Any CPU.ActiveCfg = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|Mixed Platforms.Build.0 = Release|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x64.ActiveCfg = Debug|x86 - {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x86.ActiveCfg = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Any CPU.Build.0 = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|x64.ActiveCfg = Debug|x86 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x64.ActiveCfg = Release|x64 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x64.Build.0 = Release|x64 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x86.ActiveCfg = Release|x86 + {AAA0328F-60E1-442D-B949-A13DD34BD0AD}.Release|x86.Build.0 = Release|x86 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|x64.ActiveCfg = Debug|x64 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|x64.Build.0 = Debug|x64 {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|x86.ActiveCfg = Debug|x86 {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Debug|x86.Build.0 = Debug|x86 {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|Any CPU.ActiveCfg = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|Mixed Platforms.Build.0 = Release|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x64.ActiveCfg = Debug|x86 - {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x86.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Any CPU.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Any CPU.Build.0 = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x64.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x64.Build.0 = Debug|x86 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x64.ActiveCfg = Release|x64 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x64.Build.0 = Release|x64 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x86.ActiveCfg = Release|x86 + {6BAD532A-7DD4-4BAC-834A-10BA6497E19D}.Release|x86.Build.0 = Release|x86 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x64.ActiveCfg = Debug|x64 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x64.Build.0 = Debug|x64 {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x86.ActiveCfg = Debug|x86 {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Debug|x86.Build.0 = Debug|x86 {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|Any CPU.ActiveCfg = Debug|x86 {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|Any CPU.Build.0 = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|Mixed Platforms.Build.0 = Release|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x64.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x64.Build.0 = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x86.ActiveCfg = Debug|x86 - {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x86.Build.0 = Debug|x86 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x64.ActiveCfg = Release|x64 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x64.Build.0 = Release|x64 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x86.ActiveCfg = Release|x86 + {85B11F78-39BC-4CFC-9033-FC84AB14CD03}.Release|x86.Build.0 = Release|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|Any CPU.ActiveCfg = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|Any CPU.Build.0 = Debug|x86 - {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|Mixed Platforms.Build.0 = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|x64.ActiveCfg = Debug|x86 + {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|x64.Build.0 = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|x86.ActiveCfg = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Debug|x86.Build.0 = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|Any CPU.ActiveCfg = Debug|x86 - {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|Mixed Platforms.Build.0 = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|x64.ActiveCfg = Debug|x86 + {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|x64.Build.0 = Debug|x86 {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|x86.ActiveCfg = Debug|x86 + {BA23CC1E-ACA2-4E1E-B10F-FD543393BEE6}.Release|x86.Build.0 = Debug|x86 {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|x64.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|x64.Build.0 = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|x86.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Debug|x86.Build.0 = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|Any CPU.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|Any CPU.Build.0 = Debug|Any CPU - {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU - {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|Mixed Platforms.Build.0 = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|x64.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|x64.Build.0 = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|x86.ActiveCfg = Debug|Any CPU {67E7DEF0-1CEE-4ED6-A22D-97E5EA61157A}.Release|x86.Build.0 = Debug|Any CPU - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Any CPU.Build.0 = Debug|x86 - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|x64.ActiveCfg = Debug|x64 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|x64.Build.0 = Debug|x64 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|x86.ActiveCfg = Debug|x86 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Debug|x86.Build.0 = Debug|x86 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|Any CPU.ActiveCfg = Release|x86 - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|Mixed Platforms.Build.0 = Release|x86 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|x64.ActiveCfg = Release|x64 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|x64.Build.0 = Release|x64 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|x86.ActiveCfg = Release|x86 {C1D525C4-B072-4F2F-94BF-4862E6727C4B}.Release|x86.Build.0 = Release|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Any CPU.ActiveCfg = Debug|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Any CPU.Build.0 = Debug|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|x64.ActiveCfg = Debug|x86 + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|x64.ActiveCfg = Debug|x64 + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|x64.Build.0 = Debug|x64 {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|x86.ActiveCfg = Debug|x86 {FE8B9F39-7C96-4866-9A18-386735895CEE}.Debug|x86.Build.0 = Debug|x86 {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|Any CPU.ActiveCfg = Release|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|Mixed Platforms.Build.0 = Release|x86 - {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|x64.ActiveCfg = Release|x86 + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|x64.ActiveCfg = Release|x64 + {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|x64.Build.0 = Release|x64 {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|x86.ActiveCfg = Release|x86 {FE8B9F39-7C96-4866-9A18-386735895CEE}.Release|x86.Build.0 = Release|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|Any CPU.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|Any CPU.Build.0 = Debug|x86 - {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|Mixed Platforms.Build.0 = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|x64.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|x64.Build.0 = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|x86.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Debug|x86.Build.0 = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|Any CPU.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|Any CPU.Build.0 = Debug|x86 - {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|Mixed Platforms.Build.0 = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|x64.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|x64.Build.0 = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|x86.ActiveCfg = Debug|x86 {0FEE977D-AE52-4381-B513-71C5C1982ED4}.Release|x86.Build.0 = Debug|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Any CPU.Build.0 = Debug|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x64.ActiveCfg = Debug|Any CPU - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x64.Build.0 = Debug|Any CPU + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x64.ActiveCfg = Debug|x64 + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x64.Build.0 = Debug|x64 {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x86.ActiveCfg = Debug|x86 {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Debug|x86.Build.0 = Debug|x86 {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|Any CPU.ActiveCfg = Release|Any CPU {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|Any CPU.Build.0 = Release|Any CPU - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|Mixed Platforms.Build.0 = Release|x86 - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x64.ActiveCfg = Release|Any CPU - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x64.Build.0 = Release|Any CPU - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x86.ActiveCfg = Release|Any CPU - {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x86.Build.0 = Release|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.ActiveCfg = Debug|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.Build.0 = Debug|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.ActiveCfg = Debug|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.Build.0 = Debug|Any CPU + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x64.ActiveCfg = Release|x64 + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x64.Build.0 = Release|x64 + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x86.ActiveCfg = Release|x86 + {901EA2C4-5E9C-44E8-B6D2-3B23DEE6D61B}.Release|x86.Build.0 = Release|x86 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|Any CPU.Build.0 = Debug|Any CPU + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.ActiveCfg = Debug|x64 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x64.Build.0 = Debug|x64 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.ActiveCfg = Debug|x86 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Debug|x86.Build.0 = Debug|x86 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Any CPU.ActiveCfg = Release|Any CPU {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Any CPU.Build.0 = Release|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|Mixed Platforms.Build.0 = Release|x86 - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.ActiveCfg = Release|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.Build.0 = Release|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.ActiveCfg = Release|Any CPU - {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.Build.0 = Release|Any CPU - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Any CPU.ActiveCfg = Debug|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x64.ActiveCfg = Debug|x86 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.ActiveCfg = Release|x64 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x64.Build.0 = Release|x64 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.ActiveCfg = Release|x86 + {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.Build.0 = Release|x86 + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x64.ActiveCfg = Debug|x64 + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x64.Build.0 = Debug|x64 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x86.ActiveCfg = Debug|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x86.Build.0 = Debug|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|Any CPU.ActiveCfg = Release|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|Mixed Platforms.Build.0 = Release|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x64.ActiveCfg = Release|x86 + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x64.ActiveCfg = Release|x64 + {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x64.Build.0 = Release|x64 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x86.ActiveCfg = Release|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x86.Build.0 = Release|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Any CPU.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x64.ActiveCfg = Debug|x86 + {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x64.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x86.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x86.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Any CPU.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Any CPU.Build.0 = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Mixed Platforms.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x64.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x64.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x86.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x86.Build.0 = Debug|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.ActiveCfg = Debug|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.Build.0 = Debug|Any CPU + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.ActiveCfg = Debug|x64 + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.Build.0 = Debug|x64 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x86.ActiveCfg = Debug|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x86.Build.0 = Debug|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Any CPU.ActiveCfg = Release|Any CPU {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Any CPU.Build.0 = Release|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x64.ActiveCfg = Release|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x64.Build.0 = Release|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x86.ActiveCfg = Release|Any CPU + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x64.ActiveCfg = Release|x64 + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x64.Build.0 = Release|x64 + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x86.ActiveCfg = Release|x86 + {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x86.Build.0 = Release|x86 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.ActiveCfg = Debug|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.Build.0 = Debug|Any CPU + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.ActiveCfg = Debug|x64 + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.Build.0 = Debug|x64 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x86.ActiveCfg = Debug|x86 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x86.Build.0 = Debug|x86 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Any CPU.Build.0 = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x64.ActiveCfg = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x64.Build.0 = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x86.ActiveCfg = Release|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x86.Build.0 = Release|Any CPU - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Any CPU.ActiveCfg = Debug|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Any CPU.Build.0 = Debug|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x64.ActiveCfg = Debug|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x64.Build.0 = Debug|x86 + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x64.ActiveCfg = Release|x64 + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x64.Build.0 = Release|x64 + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x86.ActiveCfg = Release|x86 + {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x86.Build.0 = Release|x86 + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x64.ActiveCfg = Debug|x64 + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x64.Build.0 = Debug|x64 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x86.ActiveCfg = Debug|x86 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Debug|x86.Build.0 = Debug|x86 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|Any CPU.ActiveCfg = Release|x86 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|Any CPU.Build.0 = Release|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|Mixed Platforms.Build.0 = Release|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x64.ActiveCfg = Release|x86 - {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x64.Build.0 = Release|x86 + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x64.ActiveCfg = Release|x64 + {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x64.Build.0 = Release|x64 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x86.ActiveCfg = Release|x86 {48EBDEB2-6A6A-4DF2-B5F1-DB6D299401F2}.Release|x86.Build.0 = Release|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|Any CPU.ActiveCfg = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|Any CPU.Build.0 = Debug|x86 - {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|Mixed Platforms.Build.0 = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|x64.ActiveCfg = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|x64.Build.0 = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|x86.ActiveCfg = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Debug|x86.Build.0 = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|Any CPU.ActiveCfg = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|Any CPU.Build.0 = Debug|x86 - {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|Mixed Platforms.ActiveCfg = Debug|x86 - {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|Mixed Platforms.Build.0 = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|x64.ActiveCfg = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|x64.Build.0 = Debug|x86 {CCF11819-C8F9-4A74-ACAE-1421B06720B6}.Release|x86.ActiveCfg = Debug|x86 diff --git a/source/VMWareLib/VMWareLib.csproj b/source/VMWareLib/VMWareLib.csproj index 2942758b5..5791ecf61 100644 --- a/source/VMWareLib/VMWareLib.csproj +++ b/source/VMWareLib/VMWareLib.csproj @@ -54,7 +54,7 @@ true GlobalSuppressions.cs prompt - AllRules.ruleset + MinimumRecommendedRules.ruleset ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets true ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules From 5ded6d3cc14e30693510e89b4a738186f97231c6 Mon Sep 17 00:00:00 2001 From: Charles Betros Date: Sun, 19 Jun 2016 10:20:43 -0500 Subject: [PATCH 2/3] Make testrunner fail if host shuts down. Also report failed if no results returned. --- Tests/Cosmos.TestRunner.Core/Engine.Bochs.cs | 5 +++-- Tests/Cosmos.TestRunner.Core/Engine.Running.cs | 11 ++++++++++- Tests/Cosmos.TestRunner.Core/Engine.VMware.cs | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Bochs.cs b/Tests/Cosmos.TestRunner.Core/Engine.Bochs.cs index a9140f8b0..b41b1799c 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.Bochs.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.Bochs.cs @@ -30,8 +30,9 @@ namespace Cosmos.TestRunner.Core var xBochs = new Bochs(xParams, RunWithGDB, new FileInfo(xBochsConfig), harddisk); xBochs.OnShutDown = (a, b) => - { - }; + { + mKernelRunning = false; + }; xBochs.RedirectOutput = false; xBochs.LogError = s => OutputHandler.LogDebugMessage(s); diff --git a/Tests/Cosmos.TestRunner.Core/Engine.Running.cs b/Tests/Cosmos.TestRunner.Core/Engine.Running.cs index 94c49814f..29c75ec82 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.Running.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.Running.cs @@ -17,6 +17,10 @@ namespace Cosmos.TestRunner.Core throw new ArgumentNullException("debugConnector"); } debugConnector.OnDebugMsg = s => OutputHandler.LogDebugMessage(s); + debugConnector.ConnectionLost = ex => + { + OutputHandler.LogError($"DC: Connection lost. {ex.Message}"); + }; debugConnector.CmdChannel = ChannelPacketReceived; debugConnector.CmdStarted = () => { @@ -98,11 +102,16 @@ namespace Cosmos.TestRunner.Core break; } } + if (mKernelResultSet) { OutputHandler.SetKernelTestResult(true, null); + OutputHandler.SetKernelSucceededAssertionsCount(mSucceededAssertions); + } + else + { + KernelTestFailed(); } - OutputHandler.SetKernelSucceededAssertionsCount(mSucceededAssertions); } finally { diff --git a/Tests/Cosmos.TestRunner.Core/Engine.VMware.cs b/Tests/Cosmos.TestRunner.Core/Engine.VMware.cs index c96ce614d..b143a73bd 100644 --- a/Tests/Cosmos.TestRunner.Core/Engine.VMware.cs +++ b/Tests/Cosmos.TestRunner.Core/Engine.VMware.cs @@ -29,6 +29,7 @@ namespace Cosmos.TestRunner.Core var xVMware = new VMware(xParams, RunWithGDB, harddisk); xVMware.OnShutDown = (a, b) => { + mKernelRunning = false; }; HandleRunning(xDebugConnector, xVMware); From a194f1dd73033021244ec0e504963b0671b031a6 Mon Sep 17 00:00:00 2001 From: Charles Betros Date: Sun, 19 Jun 2016 12:35:03 -0500 Subject: [PATCH 3/3] Disable Frotz build. --- source/Cosmos.IL2CPU/ILScanner.cs | 1904 ++++++++++++++--------------- source/Cosmos.sln | 12 - 2 files changed, 952 insertions(+), 964 deletions(-) diff --git a/source/Cosmos.IL2CPU/ILScanner.cs b/source/Cosmos.IL2CPU/ILScanner.cs index bf7ebb8f6..989c1929c 100644 --- a/source/Cosmos.IL2CPU/ILScanner.cs +++ b/source/Cosmos.IL2CPU/ILScanner.cs @@ -1,955 +1,955 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; - -using Cosmos.IL2CPU.Plugs; -using SR = System.Reflection; -using Cosmos.Assembler; - -using _MemberInfo = System.Runtime.InteropServices._MemberInfo; -using SysReflection = System.Reflection; - - -namespace Cosmos.IL2CPU -{ - public delegate void LogExceptionDelegate(Exception e); - - public class ScannerQueueItem - { - public _MemberInfo Item; - public string SourceItem; - public string QueueReason; - - public override string ToString() - { - return Item.MemberType + " " + Item.ToString(); - } - } - - public class ILScanner : IDisposable - { - public LogExceptionDelegate LogException = null; - - protected ILReader mReader; - protected AppAssembler mAsmblr; - - // List of asssemblies found during scan. We cannot use the list of loaded - // assemblies because the loaded list includes compilers, etc, and also possibly - // other unused assemblies. So instead we collect a list of assemblies as we scan. - internal List mUsedAssemblies = new List(); - - protected OurHashSet<_MemberInfo> mItems = new OurHashSet<_MemberInfo>(); - protected List mItemsList = new List(); - // Contains items to be scanned, both types and methods - protected Queue mQueue = new Queue(); - // Virtual methods are nasty and constantly need to be rescanned for - // overriding methods in new types, so we keep track of them separately. - // They are also in the main mItems and mQueue. - protected HashSet mVirtuals = new HashSet(); - - protected IDictionary mMethodUIDs = new Dictionary(); - protected IDictionary mTypeUIDs = new Dictionary(); - - protected PlugManager mPlugManager = null; - - // Logging - // Only use for debugging and profiling. - protected bool mLogEnabled = false; - protected string mMapPathname; - protected TextWriter mLogWriter; - protected struct LogItem - { - public string SrcType; - public object Item; - } - protected Dictionary> mLogMap; - - public ILScanner(AppAssembler aAsmblr) - { - mAsmblr = aAsmblr; - mReader = new ILReader(); - - mPlugManager = new PlugManager(this.LogException, this.ScanMethod, this.Queue); - } - - public bool EnableLogging(string aPathname) - { - mLogMap = new Dictionary>(); - mMapPathname = aPathname; - mLogEnabled = true; - - // be sure that file could be written, to prevent exception on Dispose call, cause we could not make Task log in it - try - { - File.CreateText(aPathname).Dispose(); - } - catch - { - return false; - } - return true; - } - - protected void Queue(_MemberInfo aItem, object aSrc, string aSrcType, string sourceItem = null) - { - var xMemInfo = aItem as MemberInfo; - //TODO: fix this, as each label/symbol should also contain an assembly specifier. - - if (xMemInfo != null && xMemInfo.DeclaringType != null - && xMemInfo.DeclaringType.FullName == "System.ThrowHelper" - && xMemInfo.DeclaringType.Assembly.GetName().Name != "mscorlib") - { - // System.ThrowHelper exists in MS .NET twice... - // Its an internal class that exists in both mscorlib and system assemblies. - // They are separate types though, so normally the scanner scans both and - // then we get conflicting labels. MS included it twice to make exception - // throwing code smaller. They are internal though, so we cannot - // reference them directly and only via finding them as they come along. - // We find it here, not via QueueType so we only check it here. Later - // we might have to checkin QueueType also. - // So now we accept both types, but emit code for only one. This works - // with the current Nasm assembler as we resolve by name in the assembler. - // However with other assemblers this approach may not work. - // If AssemblerNASM adds assembly name to the label, this will allow - // both to exist as they do in BCL. - // So in the future we might be able to remove this hack, or change - // how it works. - // - // Do nothing - // - } - else if (!mItems.Contains(aItem)) - { - if (mLogEnabled) - { - LogMapPoint(aSrc, aSrcType, aItem); - } - mItems.Add(aItem); - mItemsList.Add(aItem); - - MethodBase methodBaseSource = aSrc as MethodBase; - if (methodBaseSource != null) - { - aSrc = methodBaseSource.DeclaringType.ToString() + "::" + aSrc.ToString(); - } - - mQueue.Enqueue(new ScannerQueueItem() { Item = aItem, QueueReason = aSrcType, SourceItem = aSrc + Environment.NewLine + sourceItem }); - } - } - - public void Execute(SysReflection.MethodBase aStartMethod) - { - if (aStartMethod == null) - { - throw new ArgumentNullException("aStartMethod"); - } - // TODO: Investigate using MS CCI - // Need to check license, as well as in profiler - // http://cciast.codeplex.com/ - - #region Description - // Methodology - // - // Ok - we've done the scanner enough times to know it needs to be - // documented super well so that future changes won't inadvertently - // break undocumented and unseen requirements. - // - // We've tried many approaches including recursive and additive scanning. - // They typically end up being inefficient, overly complex, or both. - // - // -We would like to scan all types/methods so we can plug them. - // -But we can't scan them until we plug them, because we will scan things - // that plugs would remove/change the paths of. - // -Plugs may also call methods which are also plugged. - // -We cannot resolve plugs ahead of time but must do on the fly during - // scanning. - // -TODO: Because we do on the fly resolution, we need to add explicit - // checking of plug classes and err when public methods are found that - // do not resolve. Maybe we can make a list and mark, or rescan. Can be done - // later or as an optional auditing step. - // - // This why in the past we had repetitive scans. - // - // Now we focus on more passes, but simpler execution. In the end it should - // be eaiser to optmize and yield overall better performance. Most of the - // passes should be low overhead versus an integrated system which often - // would need to reiterate over items multiple times. So we do more loops on - // with less repetitive analysis, instead of fewer loops but more repetition. - // - // -Locate all plug classes - // -Scan from entry point collecting all types and methods while checking - // for and following plugs - // -For each type - // -Include all ancestors - // -Include all static constructors - // -For each virtual method - // -Scan overloads in descendants until IsFinal, IsSealed or end - // -Scan base in ancestors until top or IsAbstract - // -Go to scan types again, until no new ones found. - // -Because the virtual method scanning will add to the list as it goes, maintain - // 2 lists. - // -Known Types and Methods - // -Types and Methods in Queue - to be scanned - // -Finally, do compilation - #endregion - mPlugManager.FindPlugImpls(); - // Now that we found all plugs, scan them. - // We have to scan them after we find all plugs, because - // plugs can use other plugs - mPlugManager.ScanFoundPlugs(); - foreach (var xPlug in mPlugManager.PlugImpls) - { - CompilerHelpers.Debug($"Plug found: '{xPlug.Key.FullName}'"); - } - - ILOp.mPlugManager = mPlugManager; - - // Pull in extra implementations, GC etc. - Queue(RuntimeEngineRefs.InitializeApplicationRef, null, "Explicit Entry"); - Queue(RuntimeEngineRefs.FinalizeApplicationRef, null, "Explicit Entry"); - //Queue(typeof(CosmosAssembler).GetMethod("PrintException"), null, "Explicit Entry"); - Queue(VTablesImplRefs.SetMethodInfoRef, null, "Explicit Entry"); - Queue(VTablesImplRefs.IsInstanceRef, null, "Explicit Entry"); - Queue(VTablesImplRefs.SetTypeInfoRef, null, "Explicit Entry"); - Queue(VTablesImplRefs.GetMethodAddressForTypeRef, null, "Explicit Entry"); - Queue(GCImplementationRefs.IncRefCountRef, null, "Explicit Entry"); - Queue(GCImplementationRefs.DecRefCountRef, null, "Explicit Entry"); - Queue(GCImplementationRefs.AllocNewObjectRef, null, "Explicit Entry"); - // for now, to ease runtime exception throwing - Queue(typeof(ExceptionHelper).GetMethod("ThrowNotImplemented", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string) }, null), null, "Explicit Entry"); - Queue(typeof(ExceptionHelper).GetMethod("ThrowOverflow", BindingFlags.Static | BindingFlags.Public, null, new Type[] { }, null), null, "Explicit Entry"); - Queue(RuntimeEngineRefs.InitializeApplicationRef, null, "Explicit Entry"); - Queue(RuntimeEngineRefs.FinalizeApplicationRef, null, "Explicit Entry"); - // register system types: - Queue(typeof(Array), null, "Explicit Entry"); - Queue(typeof(Array).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null), null, "Explicit Entry"); - - var xThrowHelper = Type.GetType("System.ThrowHelper", true); - Queue(xThrowHelper.GetMethod("ThrowInvalidOperationException", BindingFlags.NonPublic | BindingFlags.Static), null, "Explicit Entry"); - - Queue(typeof(MulticastDelegate).GetMethod("GetInvocationList"), null, "Explicit Entry"); - Queue(ExceptionHelperRefs.CurrentExceptionRef, null, "Explicit Entry"); - //System_Delegate____System_MulticastDelegate_GetInvocationList__ - - // Start from entry point of this program - Queue(aStartMethod, null, "Entry Point"); - - ScanQueue(); - UpdateAssemblies(); - Assemble(); - - mAsmblr.EmitEntrypoint(aStartMethod); - } - - public void QueueMethod(MethodBase method) - { - Queue(method, null, "Explicit entry via QueueMethod"); - } - - /// This method changes the opcodes. Changes are: - /// * inserting the ValueUID for method ops. - private void ProcessInstructions(List aOpCodes) - { - foreach (var xOpCode in aOpCodes) - { - var xOpMethod = xOpCode as ILOpCodes.OpMethod; - if (xOpMethod != null) - { - xOpMethod.Value = (MethodBase)mItems.GetItemInList(xOpMethod.Value); - xOpMethod.ValueUID = (uint)GetMethodUID(xOpMethod.Value, true); - xOpMethod.BaseMethodUID = GetMethodUID(xOpMethod.Value, false); - } - } - } - - public void Dispose() - { - if (mLogEnabled) - { - // Create bookmarks, but also a dictionary that - // we can find the items in - var xBookmarks = new Dictionary(); - int xBookmark = 0; - foreach (var xList in mLogMap) - { - foreach (var xItem in xList.Value) - { - xBookmarks.Add(xItem.Item, xBookmark); - xBookmark++; - } - } - - using (mLogWriter = new StreamWriter(mMapPathname, false)) - { - mLogWriter.WriteLine(""); - foreach (var xList in mLogMap) - { - var xLogItemText = LogItemText(xList.Key); - - mLogWriter.WriteLine("
"); - - // Emit bookmarks above source, so when clicking links user doesn't need - // to constantly scroll up. - foreach (var xItem in xList.Value) - { - mLogWriter.WriteLine(""); - } - - int xHref; - if (!xBookmarks.TryGetValue(xList.Key, out xHref)) - { - xHref = -1; - } - mLogWriter.Write("

"); - if (xHref >= 0) - { - mLogWriter.WriteLine(""); - mLogWriter.WriteLine("", xHref); - } - if (xList.Key == null) - { - mLogWriter.WriteLine("Unspecified Source"); - } - else - { - mLogWriter.WriteLine(xLogItemText); - } - if (xHref >= 0) - { - mLogWriter.Write(""); - mLogWriter.Write(""); - } - mLogWriter.WriteLine("

"); - - mLogWriter.WriteLine("
    "); - foreach (var xItem in xList.Value) - { - mLogWriter.Write("
  • {0}
  • ", LogItemText(xItem.Item), xBookmarks[xItem.Item]); - - mLogWriter.WriteLine("
      "); - mLogWriter.WriteLine("
    • " + xItem.SrcType + "
    • "); - mLogWriter.WriteLine("
    "); - } - mLogWriter.WriteLine("
"); - } - mLogWriter.WriteLine(""); - } - } - } - - public int MethodCount - { - get - { - return mMethodUIDs.Count; - } - } - - protected string LogItemText(object aItem) - { - if (aItem is MethodBase) - { - var x = (MethodBase)aItem; - return "Method: " + x.DeclaringType + "." + x.Name + "
" + x.GetFullName(); - } - else if (aItem is Type) - { - var x = (Type)aItem; - return "Type: " + x.FullName; - } - else - { - return "Other: " + aItem.ToString(); - } - } - - protected void ScanMethod(MethodBase aMethod, bool aIsPlug, string sourceItem) - { - var xParams = aMethod.GetParameters(); - var xParamTypes = new Type[xParams.Length]; - // Dont use foreach, enum generaly keeps order but - // isn't guaranteed. - //string xMethodFullName = LabelName.GenerateFullName(aMethod); - - - for (int i = 0; i < xParams.Length; i++) - { - xParamTypes[i] = xParams[i].ParameterType; - Queue(xParamTypes[i], aMethod, "Parameter"); - } - var xIsDynamicMethod = aMethod.DeclaringType == null; - // Queue Types directly related to method - if (!aIsPlug) - { - // Don't queue declaring types of plugs - if (!xIsDynamicMethod) - { - // dont queue declaring types of dynamic methods either, those dont have a declaring type - Queue(aMethod.DeclaringType, aMethod, "Declaring Type"); - } - } - if (aMethod is SysReflection.MethodInfo) - { - Queue(((SysReflection.MethodInfo)aMethod).ReturnType, aMethod, "Return Type"); - } - - // Scan virtuals - #region Virtuals scan - if (!xIsDynamicMethod && aMethod.IsVirtual) - { - // For virtuals we need to climb up the type tree - // and find the top base method. We then add that top - // node to the mVirtuals list. We don't need to add the - // types becuase adding DeclaringType will already cause - // all ancestor types to be added. - - var xVirtMethod = aMethod; - var xVirtType = aMethod.DeclaringType; - MethodBase xNewVirtMethod; - while (true) - { - xVirtType = xVirtType.BaseType; - if (xVirtType == null) - { - // We've reached object, can't go farther - xNewVirtMethod = null; - } - else - { - xNewVirtMethod = xVirtType.GetMethod(aMethod.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, xParamTypes, null); - if (xNewVirtMethod != null) - { - if (!xNewVirtMethod.IsVirtual) - { - // This can happen if a virtual "replaces" a non virtual - // above it that is not virtual. - xNewVirtMethod = null; - } - } - } - // We dont bother to add these to Queue, because we have to do a - // full downlevel scan if its a new base virtual anyways. - if (xNewVirtMethod == null) - { - // If its already in the list, we mark it null - // so we dont do a full downlevel scan. - if (mVirtuals.Contains(xVirtMethod)) - { - xVirtMethod = null; - } - break; - } - xVirtMethod = xNewVirtMethod; - } - - // New virtual base found, we need to downscan it - // If it was already in mVirtuals, then ScanType will take - // care of new additions. - if (xVirtMethod != null) - { - Queue(xVirtMethod, aMethod, "Virtual Base"); - mVirtuals.Add(xVirtMethod); - - // List changes as we go, cant be foreach - for (int i = 0; i < mItemsList.Count; i++) - { - if (mItemsList[i] is Type) - { - var xType = (Type)mItemsList[i]; - if ((xType.IsSubclassOf(xVirtMethod.DeclaringType)) || ((xVirtMethod.DeclaringType.IsInterface) && (xVirtMethod.DeclaringType.IsAssignableFrom(xType)))) - { - var xNewMethod = xType.GetMethod(aMethod.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, xParamTypes, null); - if (xNewMethod != null) - { - // We need to check IsVirtual, a non virtual could - // "replace" a virtual above it? - if (xNewMethod.IsVirtual) - { - Queue(xNewMethod, aMethod, "Virtual Downscan"); - } - } - } - } - } - } - } - #endregion - - MethodBase xPlug = null; - // Plugs may use plugs, but plugs won't be plugged over themself - if (!aIsPlug && !xIsDynamicMethod) - { - // Check to see if method is plugged, if it is we don't scan body - xPlug = mPlugManager.ResolvePlug(aMethod, xParamTypes); - } - - if (xPlug == null) - { - bool xNeedsPlug = false; - if ((aMethod.Attributes & MethodAttributes.PinvokeImpl) != 0) - { - // pinvoke methods dont have an embedded implementation - xNeedsPlug = true; - } - else - { - var xImplFlags = aMethod.GetMethodImplementationFlags(); - // todo: prob even more - if ((xImplFlags & MethodImplAttributes.Native) != 0 || - (xImplFlags & MethodImplAttributes.InternalCall) != 0) - { - // native implementations cannot be compiled - xNeedsPlug = true; - } - } - if (xNeedsPlug) - { - throw new Exception("Native code encountered, plug required. Please see https://github.com/CosmosOS/Cosmos/wiki/Plugs). " + LabelName.GenerateFullName(aMethod) + "." + Environment.NewLine + " Called from :" + Environment.NewLine + sourceItem); - } - - //TODO: As we scan each method, we could update or put in a new list - // that has the resolved plug so we don't have to reresolve it again - // later for compilation. - - // Scan the method body for more type and method refs - //TODO: Dont queue new items if they are plugged - // or do we need to queue them with a resolved ref in a new list? - - InlineAttribute inl = null; - foreach (InlineAttribute inli in aMethod.GetCustomAttributes(typeof(InlineAttribute), false)) - { - inl = inli; - } - if (inl != null) - return; // cancel inline - - List xOpCodes; - xOpCodes = mReader.ProcessMethod(aMethod); - if (xOpCodes != null) - { - ProcessInstructions(xOpCodes); - foreach (var xOpCode in xOpCodes) - { - if (xOpCode is ILOpCodes.OpMethod) - { - Queue(((ILOpCodes.OpMethod)xOpCode).Value, aMethod, "Call", sourceItem); - } - else if (xOpCode is ILOpCodes.OpType) - { - Queue(((ILOpCodes.OpType)xOpCode).Value, aMethod, "OpCode Value"); - } - else if (xOpCode is ILOpCodes.OpField) - { - var xOpField = (ILOpCodes.OpField)xOpCode; - //TODO: Need to do this? Will we get a ILOpCodes.OpType as well? - Queue(xOpField.Value.DeclaringType, aMethod, "OpCode Value"); - if (xOpField.Value.IsStatic) - { - //TODO: Why do we add static fields, but not instance? - // AW: instance fields are "added" always, as part of a type, but for static fields, we need to emit a datamember - Queue(xOpField.Value, aMethod, "OpCode Value"); - } - } - else if (xOpCode is ILOpCodes.OpToken) - { - var xTokenOp = (ILOpCodes.OpToken)xOpCode; - if (xTokenOp.ValueIsType) - { - Queue(xTokenOp.ValueType, aMethod, "OpCode Value"); - } - if (xTokenOp.ValueIsField) - { - Queue(xTokenOp.ValueField.DeclaringType, aMethod, "OpCode Value"); - if (xTokenOp.ValueField.IsStatic) - { - //TODO: Why do we add static fields, but not instance? - // AW: instance fields are "added" always, as part of a type, but for static fields, we need to emit a datamember - Queue(xTokenOp.ValueField, aMethod, "OpCode Value"); - } - } - } - } - } - } - } - - protected void ScanType(Type aType) - { - // Add immediate ancestor type - // We dont need to crawl up farther, when the BaseType is scanned - // it will add its BaseType, and so on. - if (aType.BaseType != null) - { - Queue(aType.BaseType, aType, "Base Type"); - } - // Queue static ctors - // We always need static ctors, else the type cannot - // be created. - foreach (var xCctor in aType.GetConstructors(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)) - { - if (xCctor.DeclaringType == aType) - { - Queue(xCctor, aType, "Static Constructor"); - } - } - - // For each new type, we need to scan for possible new virtuals - // in our new type if its a descendant of something in - // mVirtuals. - foreach (var xVirt in mVirtuals) - { - // See if our new type is a subclass of any virt's DeclaringTypes - // If so our new type might have some virtuals - if (aType.IsSubclassOf(xVirt.DeclaringType)) - { - var xParams = xVirt.GetParameters(); - var xParamTypes = new Type[xParams.Length]; - // Dont use foreach, enum generaly keeps order but - // isn't guaranteed. - for (int i = 0; i < xParams.Length; i++) - { - xParamTypes[i] = xParams[i].ParameterType; - } - var xMethod = aType.GetMethod(xVirt.Name, xParamTypes); - if (xMethod != null) - { - // We need to check IsVirtual, a non virtual could - // "replace" a virtual above it? - if (xMethod.IsVirtual) - { - Queue(xMethod, aType, "Virtual"); - } - } - } - if (!aType.IsGenericParameter && xVirt.DeclaringType.IsInterface) - { - if ((!aType.IsInterface) && (aType.GetInterfaces().Contains(xVirt.DeclaringType))) - { - var xIntfMapping = aType.GetInterfaceMap(xVirt.DeclaringType); - if (xIntfMapping.InterfaceMethods != null && xIntfMapping.TargetMethods != null) - { - var xIdx = Array.IndexOf(xIntfMapping.InterfaceMethods, xVirt); - if (xIdx != -1) - { - Queue(xIntfMapping.TargetMethods[xIdx], aType, "Virtual"); - } - } - } - } - - } - } - - protected void ScanQueue() - { - while (mQueue.Count > 0) - { - var xItem = mQueue.Dequeue(); - // Check for MethodBase first, they are more numerous - // and will reduce compares - if (xItem.Item is MethodBase) - { - ScanMethod((MethodBase)xItem.Item, false, xItem.SourceItem); - } - else if (xItem.Item is Type) - { - var xType = (Type)xItem.Item; - ScanType(xType); - - // Methods and fields cant exist without types, so we only update - // mUsedAssemblies in type branch. - if (!mUsedAssemblies.Contains(xType.Assembly)) - { - mUsedAssemblies.Add(xType.Assembly); - } - } - else if (xItem.Item is FieldInfo) - { - // todo: static fields need more processing? - } - else - { - throw new Exception("Unknown item found in queue."); - } - } - } - - protected void LogMapPoint(object aSrc, string aSrcType, object aItem) - { - // Keys cant be null. If null, we just say ILScanner is the source - if (aSrc == null) - { - aSrc = typeof(ILScanner); - } - - var xLogItem = new LogItem() - { - SrcType = aSrcType, - Item = aItem - }; - List xList; - if (!mLogMap.TryGetValue(aSrc, out xList)) - { - xList = new List(); - mLogMap.Add(aSrc, xList); - } - xList.Add(xLogItem); - } - - private MethodBase GetUltimateBaseMethod(MethodBase aMethod, Type[] aMethodParams, Type aCurrentInspectedType) - { - MethodBase xBaseMethod = null; - //try { - while (true) - { - if (aCurrentInspectedType.BaseType == null) - { - break; - } - aCurrentInspectedType = aCurrentInspectedType.BaseType; - MethodBase xFoundMethod = aCurrentInspectedType.GetMethod(aMethod.Name, - BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, - Type.DefaultBinder, - aMethodParams, - new ParameterModifier[0]); - if (xFoundMethod == null) - { - break; - } - ParameterInfo[] xParams = xFoundMethod.GetParameters(); - bool xContinue = true; - for (int i = 0; i < xParams.Length; i++) - { - if (xParams[i].ParameterType != aMethodParams[i]) - { - xContinue = false; - continue; - } - } - if (!xContinue) - { - continue; - } - if (xFoundMethod != null) - { - xBaseMethod = xFoundMethod; - - if (xFoundMethod.IsVirtual == aMethod.IsVirtual && xFoundMethod.IsPrivate == false && xFoundMethod.IsPublic == aMethod.IsPublic && xFoundMethod.IsFamily == aMethod.IsFamily && xFoundMethod.IsFamilyAndAssembly == aMethod.IsFamilyAndAssembly && xFoundMethod.IsFamilyOrAssembly == aMethod.IsFamilyOrAssembly && xFoundMethod.IsFinal == false) - { - var xFoundMethInfo = xFoundMethod as SR.MethodInfo; - var xBaseMethInfo = xBaseMethod as SR.MethodInfo; - if (xFoundMethInfo == null && xBaseMethInfo == null) - { - xBaseMethod = xFoundMethod; - } - if (xFoundMethInfo != null && xBaseMethInfo != null) - { - if (xFoundMethInfo.ReturnType.AssemblyQualifiedName.Equals(xBaseMethInfo.ReturnType.AssemblyQualifiedName)) - { - xBaseMethod = xFoundMethod; - } - } - //xBaseMethod = xFoundMethod; - } - } - //else - //{ - // xBaseMethod = xFoundMethod; - //} - } - //} catch (Exception) { - // todo: try to get rid of the try..catch - //} - return xBaseMethod ?? aMethod; - } - - protected uint GetMethodUID(MethodBase aMethod, bool aExact) - { - if (!aExact) - { - ParameterInfo[] xParams = aMethod.GetParameters(); - Type[] xParamTypes = new Type[xParams.Length]; - for (int i = 0; i < xParams.Length; i++) - { - xParamTypes[i] = xParams[i].ParameterType; - } - var xBaseMethod = GetUltimateBaseMethod(aMethod, xParamTypes, aMethod.DeclaringType); - if (!mMethodUIDs.ContainsKey(xBaseMethod)) - { - var xId = (uint)mMethodUIDs.Count; - mMethodUIDs.Add(xBaseMethod, xId); - } - return mMethodUIDs[xBaseMethod]; - } - else - { - if (!mMethodUIDs.ContainsKey(aMethod)) - { - var xId = (uint)mMethodUIDs.Count; - mMethodUIDs.Add(aMethod, xId); - } - return mMethodUIDs[aMethod]; - } - } - - protected uint GetTypeUID(Type aType) - { - if (!mItems.Contains(aType)) - { - throw new Exception("Cannot get UID of types which are not queued!"); - } - if (!mTypeUIDs.ContainsKey(aType)) - { - var xId = (uint)mTypeUIDs.Count; - mTypeUIDs.Add(aType, xId); - return xId; - } - else - { - return mTypeUIDs[aType]; - } - } - - protected void UpdateAssemblies() - { - // It would be nice to keep DebugInfo output into assembler only but - // there is so much info that is available in scanner that is needed - // or can be used in a more efficient manner. So we output in both - // scanner and assembler as needed. - mAsmblr.DebugInfo.AddAssemblies(mUsedAssemblies); - } - - protected void Assemble() - { - foreach (var xItem in mItems) - { - if (xItem is MethodBase) - { - var xMethod = (MethodBase)xItem; - var xParams = xMethod.GetParameters(); - var xParamTypes = xParams.Select(q => q.ParameterType).ToArray(); - var xPlug = mPlugManager.ResolvePlug(xMethod, xParamTypes); - var xMethodType = MethodInfo.TypeEnum.Normal; - Type xPlugAssembler = null; - MethodInfo xPlugInfo = null; - if (xPlug != null) - { - xMethodType = MethodInfo.TypeEnum.NeedsPlug; - PlugMethodAttribute xAttrib = null; - foreach (PlugMethodAttribute attrib in xPlug.GetCustomAttributes(typeof(PlugMethodAttribute), true)) - { - xAttrib = attrib; - } - if (xAttrib != null) - { - xPlugAssembler = xAttrib.Assembler; - xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xPlug), MethodInfo.TypeEnum.Plug, null, xPlugAssembler); - - var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); - if (xAttrib != null && xAttrib.IsWildcard) - { - xPlugInfo.PluggedMethod = xMethodInfo; - var xInstructions = mReader.ProcessMethod(xPlug); - if (xInstructions != null) - { - ProcessInstructions(xInstructions); - mAsmblr.ProcessMethod(xPlugInfo, xInstructions); - } - } - mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); - } - else - { - InlineAttribute inl = null; - foreach (InlineAttribute inli in xPlug.GetCustomAttributes(typeof(InlineAttribute), false)) - { - inl = inli; - } - if (inl != null) - { - xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xItem), MethodInfo.TypeEnum.Plug, null, true); - - var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); - - xPlugInfo.PluggedMethod = xMethodInfo; - var xInstructions = mReader.ProcessMethod(xPlug); - if (xInstructions != null) - { - ProcessInstructions(xInstructions); - mAsmblr.ProcessMethod(xPlugInfo, xInstructions); - } - mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); - } - else - { - xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xPlug), MethodInfo.TypeEnum.Plug, null, xPlugAssembler); - - var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); - if (xAttrib != null && xAttrib.IsWildcard) - { - xPlugInfo.PluggedMethod = xMethodInfo; - var xInstructions = mReader.ProcessMethod(xPlug); - if (xInstructions != null) - { - ProcessInstructions(xInstructions); - mAsmblr.ProcessMethod(xPlugInfo, xInstructions); - } - } - mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); - } - } - } - else - { - PlugMethodAttribute xAttrib = null; - foreach (PlugMethodAttribute attrib in xMethod.GetCustomAttributes(typeof(PlugMethodAttribute), true)) - { - xAttrib = attrib; - } - if (xAttrib != null) - { - if (xAttrib.IsWildcard) - { - continue; - } +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; + +using Cosmos.IL2CPU.Plugs; +using SR = System.Reflection; +using Cosmos.Assembler; + +using _MemberInfo = System.Runtime.InteropServices._MemberInfo; +using SysReflection = System.Reflection; + + +namespace Cosmos.IL2CPU +{ + public delegate void LogExceptionDelegate(Exception e); + + public class ScannerQueueItem + { + public _MemberInfo Item; + public string SourceItem; + public string QueueReason; + + public override string ToString() + { + return Item.MemberType + " " + Item.ToString(); + } + } + + public class ILScanner : IDisposable + { + public LogExceptionDelegate LogException = null; + + protected ILReader mReader; + protected AppAssembler mAsmblr; + + // List of asssemblies found during scan. We cannot use the list of loaded + // assemblies because the loaded list includes compilers, etc, and also possibly + // other unused assemblies. So instead we collect a list of assemblies as we scan. + internal List mUsedAssemblies = new List(); + + protected OurHashSet<_MemberInfo> mItems = new OurHashSet<_MemberInfo>(); + protected List mItemsList = new List(); + // Contains items to be scanned, both types and methods + protected Queue mQueue = new Queue(); + // Virtual methods are nasty and constantly need to be rescanned for + // overriding methods in new types, so we keep track of them separately. + // They are also in the main mItems and mQueue. + protected HashSet mVirtuals = new HashSet(); + + protected IDictionary mMethodUIDs = new Dictionary(); + protected IDictionary mTypeUIDs = new Dictionary(); + + protected PlugManager mPlugManager = null; + + // Logging + // Only use for debugging and profiling. + protected bool mLogEnabled = false; + protected string mMapPathname; + protected TextWriter mLogWriter; + protected struct LogItem + { + public string SrcType; + public object Item; + } + protected Dictionary> mLogMap; + + public ILScanner(AppAssembler aAsmblr) + { + mAsmblr = aAsmblr; + mReader = new ILReader(); + + mPlugManager = new PlugManager(this.LogException, this.ScanMethod, this.Queue); + } + + public bool EnableLogging(string aPathname) + { + mLogMap = new Dictionary>(); + mMapPathname = aPathname; + mLogEnabled = true; + + // be sure that file could be written, to prevent exception on Dispose call, cause we could not make Task log in it + try + { + File.CreateText(aPathname).Dispose(); + } + catch + { + return false; + } + return true; + } + + protected void Queue(_MemberInfo aItem, object aSrc, string aSrcType, string sourceItem = null) + { + var xMemInfo = aItem as MemberInfo; + //TODO: fix this, as each label/symbol should also contain an assembly specifier. + + if (xMemInfo != null && xMemInfo.DeclaringType != null + && xMemInfo.DeclaringType.FullName == "System.ThrowHelper" + && xMemInfo.DeclaringType.Assembly.GetName().Name != "mscorlib") + { + // System.ThrowHelper exists in MS .NET twice... + // Its an internal class that exists in both mscorlib and system assemblies. + // They are separate types though, so normally the scanner scans both and + // then we get conflicting labels. MS included it twice to make exception + // throwing code smaller. They are internal though, so we cannot + // reference them directly and only via finding them as they come along. + // We find it here, not via QueueType so we only check it here. Later + // we might have to checkin QueueType also. + // So now we accept both types, but emit code for only one. This works + // with the current Nasm assembler as we resolve by name in the assembler. + // However with other assemblers this approach may not work. + // If AssemblerNASM adds assembly name to the label, this will allow + // both to exist as they do in BCL. + // So in the future we might be able to remove this hack, or change + // how it works. + // + // Do nothing + // + } + else if (!mItems.Contains(aItem)) + { + if (mLogEnabled) + { + LogMapPoint(aSrc, aSrcType, aItem); + } + mItems.Add(aItem); + mItemsList.Add(aItem); + + MethodBase methodBaseSource = aSrc as MethodBase; + if (methodBaseSource != null) + { + aSrc = methodBaseSource.DeclaringType.ToString() + "::" + aSrc.ToString(); + } + + mQueue.Enqueue(new ScannerQueueItem() { Item = aItem, QueueReason = aSrcType, SourceItem = aSrc + Environment.NewLine + sourceItem }); + } + } + + public void Execute(SysReflection.MethodBase aStartMethod) + { + if (aStartMethod == null) + { + throw new ArgumentNullException("aStartMethod"); + } + // TODO: Investigate using MS CCI + // Need to check license, as well as in profiler + // http://cciast.codeplex.com/ + + #region Description + // Methodology + // + // Ok - we've done the scanner enough times to know it needs to be + // documented super well so that future changes won't inadvertently + // break undocumented and unseen requirements. + // + // We've tried many approaches including recursive and additive scanning. + // They typically end up being inefficient, overly complex, or both. + // + // -We would like to scan all types/methods so we can plug them. + // -But we can't scan them until we plug them, because we will scan things + // that plugs would remove/change the paths of. + // -Plugs may also call methods which are also plugged. + // -We cannot resolve plugs ahead of time but must do on the fly during + // scanning. + // -TODO: Because we do on the fly resolution, we need to add explicit + // checking of plug classes and err when public methods are found that + // do not resolve. Maybe we can make a list and mark, or rescan. Can be done + // later or as an optional auditing step. + // + // This why in the past we had repetitive scans. + // + // Now we focus on more passes, but simpler execution. In the end it should + // be eaiser to optmize and yield overall better performance. Most of the + // passes should be low overhead versus an integrated system which often + // would need to reiterate over items multiple times. So we do more loops on + // with less repetitive analysis, instead of fewer loops but more repetition. + // + // -Locate all plug classes + // -Scan from entry point collecting all types and methods while checking + // for and following plugs + // -For each type + // -Include all ancestors + // -Include all static constructors + // -For each virtual method + // -Scan overloads in descendants until IsFinal, IsSealed or end + // -Scan base in ancestors until top or IsAbstract + // -Go to scan types again, until no new ones found. + // -Because the virtual method scanning will add to the list as it goes, maintain + // 2 lists. + // -Known Types and Methods + // -Types and Methods in Queue - to be scanned + // -Finally, do compilation + #endregion + mPlugManager.FindPlugImpls(); + // Now that we found all plugs, scan them. + // We have to scan them after we find all plugs, because + // plugs can use other plugs + mPlugManager.ScanFoundPlugs(); + foreach (var xPlug in mPlugManager.PlugImpls) + { + CompilerHelpers.Debug($"Plug found: '{xPlug.Key.FullName}'"); + } + + ILOp.mPlugManager = mPlugManager; + + // Pull in extra implementations, GC etc. + Queue(RuntimeEngineRefs.InitializeApplicationRef, null, "Explicit Entry"); + Queue(RuntimeEngineRefs.FinalizeApplicationRef, null, "Explicit Entry"); + //Queue(typeof(CosmosAssembler).GetMethod("PrintException"), null, "Explicit Entry"); + Queue(VTablesImplRefs.SetMethodInfoRef, null, "Explicit Entry"); + Queue(VTablesImplRefs.IsInstanceRef, null, "Explicit Entry"); + Queue(VTablesImplRefs.SetTypeInfoRef, null, "Explicit Entry"); + Queue(VTablesImplRefs.GetMethodAddressForTypeRef, null, "Explicit Entry"); + Queue(GCImplementationRefs.IncRefCountRef, null, "Explicit Entry"); + Queue(GCImplementationRefs.DecRefCountRef, null, "Explicit Entry"); + Queue(GCImplementationRefs.AllocNewObjectRef, null, "Explicit Entry"); + // for now, to ease runtime exception throwing + Queue(typeof(ExceptionHelper).GetMethod("ThrowNotImplemented", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string) }, null), null, "Explicit Entry"); + Queue(typeof(ExceptionHelper).GetMethod("ThrowOverflow", BindingFlags.Static | BindingFlags.Public, null, new Type[] { }, null), null, "Explicit Entry"); + Queue(RuntimeEngineRefs.InitializeApplicationRef, null, "Explicit Entry"); + Queue(RuntimeEngineRefs.FinalizeApplicationRef, null, "Explicit Entry"); + // register system types: + Queue(typeof(Array), null, "Explicit Entry"); + Queue(typeof(Array).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null), null, "Explicit Entry"); + + var xThrowHelper = Type.GetType("System.ThrowHelper", true); + Queue(xThrowHelper.GetMethod("ThrowInvalidOperationException", BindingFlags.NonPublic | BindingFlags.Static), null, "Explicit Entry"); + + Queue(typeof(MulticastDelegate).GetMethod("GetInvocationList"), null, "Explicit Entry"); + Queue(ExceptionHelperRefs.CurrentExceptionRef, null, "Explicit Entry"); + //System_Delegate____System_MulticastDelegate_GetInvocationList__ + + // Start from entry point of this program + Queue(aStartMethod, null, "Entry Point"); + + ScanQueue(); + UpdateAssemblies(); + Assemble(); + + mAsmblr.EmitEntrypoint(aStartMethod); + } + + public void QueueMethod(MethodBase method) + { + Queue(method, null, "Explicit entry via QueueMethod"); + } + + /// This method changes the opcodes. Changes are: + /// * inserting the ValueUID for method ops. + private void ProcessInstructions(List aOpCodes) + { + foreach (var xOpCode in aOpCodes) + { + var xOpMethod = xOpCode as ILOpCodes.OpMethod; + if (xOpMethod != null) + { + xOpMethod.Value = (MethodBase)mItems.GetItemInList(xOpMethod.Value); + xOpMethod.ValueUID = (uint)GetMethodUID(xOpMethod.Value, true); + xOpMethod.BaseMethodUID = GetMethodUID(xOpMethod.Value, false); + } + } + } + + public void Dispose() + { + if (mLogEnabled) + { + // Create bookmarks, but also a dictionary that + // we can find the items in + var xBookmarks = new Dictionary(); + int xBookmark = 0; + foreach (var xList in mLogMap) + { + foreach (var xItem in xList.Value) + { + xBookmarks.Add(xItem.Item, xBookmark); + xBookmark++; + } + } + + using (mLogWriter = new StreamWriter(mMapPathname, false)) + { + mLogWriter.WriteLine(""); + foreach (var xList in mLogMap) + { + var xLogItemText = LogItemText(xList.Key); + + mLogWriter.WriteLine("
"); + + // Emit bookmarks above source, so when clicking links user doesn't need + // to constantly scroll up. + foreach (var xItem in xList.Value) + { + mLogWriter.WriteLine(""); + } + + int xHref; + if (!xBookmarks.TryGetValue(xList.Key, out xHref)) + { + xHref = -1; + } + mLogWriter.Write("

"); + if (xHref >= 0) + { + mLogWriter.WriteLine(""); + mLogWriter.WriteLine("", xHref); + } + if (xList.Key == null) + { + mLogWriter.WriteLine("Unspecified Source"); + } + else + { + mLogWriter.WriteLine(xLogItemText); + } + if (xHref >= 0) + { + mLogWriter.Write(""); + mLogWriter.Write(""); + } + mLogWriter.WriteLine("

"); + + mLogWriter.WriteLine("
    "); + foreach (var xItem in xList.Value) + { + mLogWriter.Write("
  • {0}
  • ", LogItemText(xItem.Item), xBookmarks[xItem.Item]); + + mLogWriter.WriteLine("
      "); + mLogWriter.WriteLine("
    • " + xItem.SrcType + "
    • "); + mLogWriter.WriteLine("
    "); + } + mLogWriter.WriteLine("
"); + } + mLogWriter.WriteLine(""); + } + } + } + + public int MethodCount + { + get + { + return mMethodUIDs.Count; + } + } + + protected string LogItemText(object aItem) + { + if (aItem is MethodBase) + { + var x = (MethodBase)aItem; + return "Method: " + x.DeclaringType + "." + x.Name + "
" + x.GetFullName(); + } + else if (aItem is Type) + { + var x = (Type)aItem; + return "Type: " + x.FullName; + } + else + { + return "Other: " + aItem.ToString(); + } + } + + protected void ScanMethod(MethodBase aMethod, bool aIsPlug, string sourceItem) + { + var xParams = aMethod.GetParameters(); + var xParamTypes = new Type[xParams.Length]; + // Dont use foreach, enum generaly keeps order but + // isn't guaranteed. + //string xMethodFullName = LabelName.GenerateFullName(aMethod); + + + for (int i = 0; i < xParams.Length; i++) + { + xParamTypes[i] = xParams[i].ParameterType; + Queue(xParamTypes[i], aMethod, "Parameter"); + } + var xIsDynamicMethod = aMethod.DeclaringType == null; + // Queue Types directly related to method + if (!aIsPlug) + { + // Don't queue declaring types of plugs + if (!xIsDynamicMethod) + { + // dont queue declaring types of dynamic methods either, those dont have a declaring type + Queue(aMethod.DeclaringType, aMethod, "Declaring Type"); + } + } + if (aMethod is SysReflection.MethodInfo) + { + Queue(((SysReflection.MethodInfo)aMethod).ReturnType, aMethod, "Return Type"); + } + + // Scan virtuals + #region Virtuals scan + if (!xIsDynamicMethod && aMethod.IsVirtual) + { + // For virtuals we need to climb up the type tree + // and find the top base method. We then add that top + // node to the mVirtuals list. We don't need to add the + // types becuase adding DeclaringType will already cause + // all ancestor types to be added. + + var xVirtMethod = aMethod; + var xVirtType = aMethod.DeclaringType; + MethodBase xNewVirtMethod; + while (true) + { + xVirtType = xVirtType.BaseType; + if (xVirtType == null) + { + // We've reached object, can't go farther + xNewVirtMethod = null; + } + else + { + xNewVirtMethod = xVirtType.GetMethod(aMethod.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, xParamTypes, null); + if (xNewVirtMethod != null) + { + if (!xNewVirtMethod.IsVirtual) + { + // This can happen if a virtual "replaces" a non virtual + // above it that is not virtual. + xNewVirtMethod = null; + } + } + } + // We dont bother to add these to Queue, because we have to do a + // full downlevel scan if its a new base virtual anyways. + if (xNewVirtMethod == null) + { + // If its already in the list, we mark it null + // so we dont do a full downlevel scan. + if (mVirtuals.Contains(xVirtMethod)) + { + xVirtMethod = null; + } + break; + } + xVirtMethod = xNewVirtMethod; + } + + // New virtual base found, we need to downscan it + // If it was already in mVirtuals, then ScanType will take + // care of new additions. + if (xVirtMethod != null) + { + Queue(xVirtMethod, aMethod, "Virtual Base"); + mVirtuals.Add(xVirtMethod); + + // List changes as we go, cant be foreach + for (int i = 0; i < mItemsList.Count; i++) + { + if (mItemsList[i] is Type) + { + var xType = (Type)mItemsList[i]; + if ((xType.IsSubclassOf(xVirtMethod.DeclaringType)) || ((xVirtMethod.DeclaringType.IsInterface) && (xVirtMethod.DeclaringType.IsAssignableFrom(xType)))) + { + var xNewMethod = xType.GetMethod(aMethod.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, xParamTypes, null); + if (xNewMethod != null) + { + // We need to check IsVirtual, a non virtual could + // "replace" a virtual above it? + if (xNewMethod.IsVirtual) + { + Queue(xNewMethod, aMethod, "Virtual Downscan"); + } + } + } + } + } + } + } + #endregion + + MethodBase xPlug = null; + // Plugs may use plugs, but plugs won't be plugged over themself + if (!aIsPlug && !xIsDynamicMethod) + { + // Check to see if method is plugged, if it is we don't scan body + xPlug = mPlugManager.ResolvePlug(aMethod, xParamTypes); + } + + if (xPlug == null) + { + bool xNeedsPlug = false; + if ((aMethod.Attributes & MethodAttributes.PinvokeImpl) != 0) + { + // pinvoke methods dont have an embedded implementation + xNeedsPlug = true; + } + else + { + var xImplFlags = aMethod.GetMethodImplementationFlags(); + // todo: prob even more + if ((xImplFlags & MethodImplAttributes.Native) != 0 || + (xImplFlags & MethodImplAttributes.InternalCall) != 0) + { + // native implementations cannot be compiled + xNeedsPlug = true; + } + } + if (xNeedsPlug) + { + throw new Exception("Native code encountered, plug required. Please see https://github.com/CosmosOS/Cosmos/wiki/Plugs). " + LabelName.GenerateFullName(aMethod) + "." + Environment.NewLine + " Called from :" + Environment.NewLine + sourceItem); + } + + //TODO: As we scan each method, we could update or put in a new list + // that has the resolved plug so we don't have to reresolve it again + // later for compilation. + + // Scan the method body for more type and method refs + //TODO: Dont queue new items if they are plugged + // or do we need to queue them with a resolved ref in a new list? + + InlineAttribute inl = null; + foreach (InlineAttribute inli in aMethod.GetCustomAttributes(typeof(InlineAttribute), false)) + { + inl = inli; + } + if (inl != null) + return; // cancel inline + + List xOpCodes; + xOpCodes = mReader.ProcessMethod(aMethod); + if (xOpCodes != null) + { + ProcessInstructions(xOpCodes); + foreach (var xOpCode in xOpCodes) + { + if (xOpCode is ILOpCodes.OpMethod) + { + Queue(((ILOpCodes.OpMethod)xOpCode).Value, aMethod, "Call", sourceItem); + } + else if (xOpCode is ILOpCodes.OpType) + { + Queue(((ILOpCodes.OpType)xOpCode).Value, aMethod, "OpCode Value"); + } + else if (xOpCode is ILOpCodes.OpField) + { + var xOpField = (ILOpCodes.OpField)xOpCode; + //TODO: Need to do this? Will we get a ILOpCodes.OpType as well? + Queue(xOpField.Value.DeclaringType, aMethod, "OpCode Value"); + if (xOpField.Value.IsStatic) + { + //TODO: Why do we add static fields, but not instance? + // AW: instance fields are "added" always, as part of a type, but for static fields, we need to emit a datamember + Queue(xOpField.Value, aMethod, "OpCode Value"); + } + } + else if (xOpCode is ILOpCodes.OpToken) + { + var xTokenOp = (ILOpCodes.OpToken)xOpCode; + if (xTokenOp.ValueIsType) + { + Queue(xTokenOp.ValueType, aMethod, "OpCode Value"); + } + if (xTokenOp.ValueIsField) + { + Queue(xTokenOp.ValueField.DeclaringType, aMethod, "OpCode Value"); + if (xTokenOp.ValueField.IsStatic) + { + //TODO: Why do we add static fields, but not instance? + // AW: instance fields are "added" always, as part of a type, but for static fields, we need to emit a datamember + Queue(xTokenOp.ValueField, aMethod, "OpCode Value"); + } + } + } + } + } + } + } + + protected void ScanType(Type aType) + { + // Add immediate ancestor type + // We dont need to crawl up farther, when the BaseType is scanned + // it will add its BaseType, and so on. + if (aType.BaseType != null) + { + Queue(aType.BaseType, aType, "Base Type"); + } + // Queue static ctors + // We always need static ctors, else the type cannot + // be created. + foreach (var xCctor in aType.GetConstructors(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public)) + { + if (xCctor.DeclaringType == aType) + { + Queue(xCctor, aType, "Static Constructor"); + } + } + + // For each new type, we need to scan for possible new virtuals + // in our new type if its a descendant of something in + // mVirtuals. + foreach (var xVirt in mVirtuals) + { + // See if our new type is a subclass of any virt's DeclaringTypes + // If so our new type might have some virtuals + if (aType.IsSubclassOf(xVirt.DeclaringType)) + { + var xParams = xVirt.GetParameters(); + var xParamTypes = new Type[xParams.Length]; + // Dont use foreach, enum generaly keeps order but + // isn't guaranteed. + for (int i = 0; i < xParams.Length; i++) + { + xParamTypes[i] = xParams[i].ParameterType; + } + var xMethod = aType.GetMethod(xVirt.Name, xParamTypes); + if (xMethod != null) + { + // We need to check IsVirtual, a non virtual could + // "replace" a virtual above it? + if (xMethod.IsVirtual) + { + Queue(xMethod, aType, "Virtual"); + } + } + } + if (!aType.IsGenericParameter && xVirt.DeclaringType.IsInterface) + { + if ((!aType.IsInterface) && (aType.GetInterfaces().Contains(xVirt.DeclaringType))) + { + var xIntfMapping = aType.GetInterfaceMap(xVirt.DeclaringType); + if (xIntfMapping.InterfaceMethods != null && xIntfMapping.TargetMethods != null) + { + var xIdx = Array.IndexOf(xIntfMapping.InterfaceMethods, xVirt); + if (xIdx != -1) + { + Queue(xIntfMapping.TargetMethods[xIdx], aType, "Virtual"); + } + } + } + } + + } + } + + protected void ScanQueue() + { + while (mQueue.Count > 0) + { + var xItem = mQueue.Dequeue(); + // Check for MethodBase first, they are more numerous + // and will reduce compares + if (xItem.Item is MethodBase) + { + ScanMethod((MethodBase)xItem.Item, false, xItem.SourceItem); + } + else if (xItem.Item is Type) + { + var xType = (Type)xItem.Item; + ScanType(xType); + + // Methods and fields cant exist without types, so we only update + // mUsedAssemblies in type branch. + if (!mUsedAssemblies.Contains(xType.Assembly)) + { + mUsedAssemblies.Add(xType.Assembly); + } + } + else if (xItem.Item is FieldInfo) + { + // todo: static fields need more processing? + } + else + { + throw new Exception("Unknown item found in queue."); + } + } + } + + protected void LogMapPoint(object aSrc, string aSrcType, object aItem) + { + // Keys cant be null. If null, we just say ILScanner is the source + if (aSrc == null) + { + aSrc = typeof(ILScanner); + } + + var xLogItem = new LogItem() + { + SrcType = aSrcType, + Item = aItem + }; + List xList; + if (!mLogMap.TryGetValue(aSrc, out xList)) + { + xList = new List(); + mLogMap.Add(aSrc, xList); + } + xList.Add(xLogItem); + } + + private MethodBase GetUltimateBaseMethod(MethodBase aMethod, Type[] aMethodParams, Type aCurrentInspectedType) + { + MethodBase xBaseMethod = null; + //try { + while (true) + { + if (aCurrentInspectedType.BaseType == null) + { + break; + } + aCurrentInspectedType = aCurrentInspectedType.BaseType; + MethodBase xFoundMethod = aCurrentInspectedType.GetMethod(aMethod.Name, + BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, + Type.DefaultBinder, + aMethodParams, + new ParameterModifier[0]); + if (xFoundMethod == null) + { + break; + } + ParameterInfo[] xParams = xFoundMethod.GetParameters(); + bool xContinue = true; + for (int i = 0; i < xParams.Length; i++) + { + if (xParams[i].ParameterType != aMethodParams[i]) + { + xContinue = false; + continue; + } + } + if (!xContinue) + { + continue; + } + if (xFoundMethod != null) + { + xBaseMethod = xFoundMethod; + + if (xFoundMethod.IsVirtual == aMethod.IsVirtual && xFoundMethod.IsPrivate == false && xFoundMethod.IsPublic == aMethod.IsPublic && xFoundMethod.IsFamily == aMethod.IsFamily && xFoundMethod.IsFamilyAndAssembly == aMethod.IsFamilyAndAssembly && xFoundMethod.IsFamilyOrAssembly == aMethod.IsFamilyOrAssembly && xFoundMethod.IsFinal == false) + { + var xFoundMethInfo = xFoundMethod as SR.MethodInfo; + var xBaseMethInfo = xBaseMethod as SR.MethodInfo; + if (xFoundMethInfo == null && xBaseMethInfo == null) + { + xBaseMethod = xFoundMethod; + } + if (xFoundMethInfo != null && xBaseMethInfo != null) + { + if (xFoundMethInfo.ReturnType.AssemblyQualifiedName.Equals(xBaseMethInfo.ReturnType.AssemblyQualifiedName)) + { + xBaseMethod = xFoundMethod; + } + } + //xBaseMethod = xFoundMethod; + } + } + //else + //{ + // xBaseMethod = xFoundMethod; + //} + } + //} catch (Exception) { + // todo: try to get rid of the try..catch + //} + return xBaseMethod ?? aMethod; + } + + protected uint GetMethodUID(MethodBase aMethod, bool aExact) + { + if (!aExact) + { + ParameterInfo[] xParams = aMethod.GetParameters(); + Type[] xParamTypes = new Type[xParams.Length]; + for (int i = 0; i < xParams.Length; i++) + { + xParamTypes[i] = xParams[i].ParameterType; + } + var xBaseMethod = GetUltimateBaseMethod(aMethod, xParamTypes, aMethod.DeclaringType); + if (!mMethodUIDs.ContainsKey(xBaseMethod)) + { + var xId = (uint)mMethodUIDs.Count; + mMethodUIDs.Add(xBaseMethod, xId); + } + return mMethodUIDs[xBaseMethod]; + } + else + { + if (!mMethodUIDs.ContainsKey(aMethod)) + { + var xId = (uint)mMethodUIDs.Count; + mMethodUIDs.Add(aMethod, xId); + } + return mMethodUIDs[aMethod]; + } + } + + protected uint GetTypeUID(Type aType) + { + if (!mItems.Contains(aType)) + { + throw new Exception("Cannot get UID of types which are not queued!"); + } + if (!mTypeUIDs.ContainsKey(aType)) + { + var xId = (uint)mTypeUIDs.Count; + mTypeUIDs.Add(aType, xId); + return xId; + } + else + { + return mTypeUIDs[aType]; + } + } + + protected void UpdateAssemblies() + { + // It would be nice to keep DebugInfo output into assembler only but + // there is so much info that is available in scanner that is needed + // or can be used in a more efficient manner. So we output in both + // scanner and assembler as needed. + mAsmblr.DebugInfo.AddAssemblies(mUsedAssemblies); + } + + protected void Assemble() + { + foreach (var xItem in mItems) + { + if (xItem is MethodBase) + { + var xMethod = (MethodBase)xItem; + var xParams = xMethod.GetParameters(); + var xParamTypes = xParams.Select(q => q.ParameterType).ToArray(); + var xPlug = mPlugManager.ResolvePlug(xMethod, xParamTypes); + var xMethodType = MethodInfo.TypeEnum.Normal; + Type xPlugAssembler = null; + MethodInfo xPlugInfo = null; + if (xPlug != null) + { + xMethodType = MethodInfo.TypeEnum.NeedsPlug; + PlugMethodAttribute xAttrib = null; + foreach (PlugMethodAttribute attrib in xPlug.GetCustomAttributes(typeof(PlugMethodAttribute), true)) + { + xAttrib = attrib; + } + if (xAttrib != null) + { + xPlugAssembler = xAttrib.Assembler; + xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xPlug), MethodInfo.TypeEnum.Plug, null, xPlugAssembler); + + var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); + if (xAttrib != null && xAttrib.IsWildcard) + { + xPlugInfo.PluggedMethod = xMethodInfo; + var xInstructions = mReader.ProcessMethod(xPlug); + if (xInstructions != null) + { + ProcessInstructions(xInstructions); + mAsmblr.ProcessMethod(xPlugInfo, xInstructions); + } + } + mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); + } + else + { + InlineAttribute inl = null; + foreach (InlineAttribute inli in xPlug.GetCustomAttributes(typeof(InlineAttribute), false)) + { + inl = inli; + } + if (inl != null) + { + xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xItem), MethodInfo.TypeEnum.Plug, null, true); + + var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); + + xPlugInfo.PluggedMethod = xMethodInfo; + var xInstructions = mReader.ProcessMethod(xPlug); + if (xInstructions != null) + { + ProcessInstructions(xInstructions); + mAsmblr.ProcessMethod(xPlugInfo, xInstructions); + } + mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); + } + else + { + xPlugInfo = new MethodInfo(xPlug, (uint)mItemsList.IndexOf(xPlug), MethodInfo.TypeEnum.Plug, null, xPlugAssembler); + + var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo/*, xPlugAssembler*/); + if (xAttrib != null && xAttrib.IsWildcard) + { + xPlugInfo.PluggedMethod = xMethodInfo; + var xInstructions = mReader.ProcessMethod(xPlug); + if (xInstructions != null) + { + ProcessInstructions(xInstructions); + mAsmblr.ProcessMethod(xPlugInfo, xInstructions); + } + } + mAsmblr.GenerateMethodForward(xMethodInfo, xPlugInfo); + } + } + } + else + { + PlugMethodAttribute xAttrib = null; + foreach (PlugMethodAttribute attrib in xMethod.GetCustomAttributes(typeof(PlugMethodAttribute), true)) + { + xAttrib = attrib; + } + if (xAttrib != null) + { + if (xAttrib.IsWildcard) + { + continue; + } else if(xAttrib.PlugRequired) { throw new Exception(string.Format("Method {0} requires a plug, but none is implemented",xMethod.Name)); - } - xPlugAssembler = xAttrib.Assembler; - } - - var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo, xPlugAssembler); - var xInstructions = mReader.ProcessMethod(xMethod); - if (xInstructions != null) - { - ProcessInstructions(xInstructions); - mAsmblr.ProcessMethod(xMethodInfo, xInstructions); - } - } - } - else if (xItem is FieldInfo) - { - mAsmblr.ProcessField((FieldInfo)xItem); - } - } - - var xTypes = new HashSet(); - var xMethods = new HashSet(); - foreach (var xItem in mItems) - { - if (xItem is MethodBase) - { - xMethods.Add((MethodBase)xItem); - } - else if (xItem is Type) - { - xTypes.Add((Type)xItem); - } - } - mAsmblr.GenerateVMTCode(xTypes, xMethods, GetTypeUID, x => GetMethodUID(x, false)); - } - } -} + } + xPlugAssembler = xAttrib.Assembler; + } + + var xMethodInfo = new MethodInfo(xMethod, (uint)mItemsList.IndexOf(xMethod), xMethodType, xPlugInfo, xPlugAssembler); + var xInstructions = mReader.ProcessMethod(xMethod); + if (xInstructions != null) + { + ProcessInstructions(xInstructions); + mAsmblr.ProcessMethod(xMethodInfo, xInstructions); + } + } + } + else if (xItem is FieldInfo) + { + mAsmblr.ProcessField((FieldInfo)xItem); + } + } + + var xTypes = new HashSet(); + var xMethods = new HashSet(); + foreach (var xItem in mItems) + { + if (xItem is MethodBase) + { + xMethods.Add((MethodBase)xItem); + } + else if (xItem is Type) + { + xTypes.Add((Type)xItem); + } + } + mAsmblr.GenerateVMTCode(xTypes, xMethods, GetTypeUID, x => GetMethodUID(x, false)); + } + } +} diff --git a/source/Cosmos.sln b/source/Cosmos.sln index 8e0ec4285..596cfbd42 100644 --- a/source/Cosmos.sln +++ b/source/Cosmos.sln @@ -1249,22 +1249,16 @@ Global {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.ActiveCfg = Release|x86 {84BFA6F0-D518-4D22-BDCF-E07DF3C0E678}.Release|x86.Build.0 = Release|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|Any CPU.Build.0 = Debug|Any CPU {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x64.ActiveCfg = Debug|x64 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x64.Build.0 = Debug|x64 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x86.ActiveCfg = Debug|x86 - {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Debug|x86.Build.0 = Debug|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|Any CPU.ActiveCfg = Release|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x64.ActiveCfg = Release|x64 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x64.Build.0 = Release|x64 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x86.ActiveCfg = Release|x86 {C18A7CF8-3205-48A8-95C9-08C780A0D51D}.Release|x86.Build.0 = Release|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Any CPU.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|Any CPU.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x64.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x64.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x86.ActiveCfg = Debug|x86 - {511C4498-E62A-4FF2-94BA-472CF448B39B}.Debug|x86.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Any CPU.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|Any CPU.Build.0 = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x64.ActiveCfg = Debug|x86 @@ -1272,11 +1266,8 @@ Global {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x86.ActiveCfg = Debug|x86 {511C4498-E62A-4FF2-94BA-472CF448B39B}.Release|x86.Build.0 = Debug|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|Any CPU.Build.0 = Debug|Any CPU {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.ActiveCfg = Debug|x64 - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x64.Build.0 = Debug|x64 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x86.ActiveCfg = Debug|x86 - {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Debug|x86.Build.0 = Debug|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Any CPU.ActiveCfg = Release|Any CPU {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|Any CPU.Build.0 = Release|Any CPU {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x64.ActiveCfg = Release|x64 @@ -1284,11 +1275,8 @@ Global {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x86.ActiveCfg = Release|x86 {A843C6B0-CFF3-4A69-87BC-C93608235E47}.Release|x86.Build.0 = Release|x86 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|Any CPU.Build.0 = Debug|Any CPU {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.ActiveCfg = Debug|x64 - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x64.Build.0 = Debug|x64 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x86.ActiveCfg = Debug|x86 - {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Debug|x86.Build.0 = Debug|x86 {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|Any CPU.Build.0 = Release|Any CPU {3E4A8079-AAC0-429D-B042-0B5151E0E5BE}.Release|x64.ActiveCfg = Release|x64