diff --git a/all.sln b/all.sln
index d81fcf391..0637c250f 100644
--- a/all.sln
+++ b/all.sln
@@ -1,4 +1,5 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
+
+Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
@@ -247,6 +248,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowVersioning", "examp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows", "test\Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows\Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows.csproj", "{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Configuration", "test\Dapr.IntegrationTest.Configuration\Dapr.IntegrationTest.Configuration.csproj", "{193BBE09-E261-4D65-B4CC-18B88DB049D7}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Messaging", "test\Dapr.IntegrationTest.Messaging\Dapr.IntegrationTest.Messaging.csproj", "{01A20A89-53A1-4D5B-B563-89E157718474}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Cryptography", "test\Dapr.IntegrationTest.Cryptography\Dapr.IntegrationTest.Cryptography.csproj", "{7B14879F-156B-417E-ACA3-0B5A69CC2F39}"
@@ -254,413 +257,1213 @@ 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
{C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x64.Build.0 = Debug|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x86.Build.0 = Debug|Any CPU
{C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x64.ActiveCfg = Release|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x64.Build.0 = Release|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x86.ActiveCfg = Release|Any CPU
+ {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x86.Build.0 = Release|Any CPU
{41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x64.Build.0 = Debug|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x86.Build.0 = Debug|Any CPU
{41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x64.ActiveCfg = Release|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x64.Build.0 = Release|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x86.ActiveCfg = Release|Any CPU
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x86.Build.0 = Release|Any CPU
{B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x64.Build.0 = Debug|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x86.Build.0 = Debug|Any CPU
{B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x64.ActiveCfg = Release|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x64.Build.0 = Release|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x86.ActiveCfg = Release|Any CPU
+ {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x86.Build.0 = Release|Any CPU
{62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x64.Build.0 = Debug|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x86.Build.0 = Debug|Any CPU
{62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x64.ActiveCfg = Release|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x64.Build.0 = Release|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x86.ActiveCfg = Release|Any CPU
+ {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x86.Build.0 = Release|Any CPU
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x64.Build.0 = Debug|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x86.Build.0 = Debug|Any CPU
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x64.ActiveCfg = Release|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x64.Build.0 = Release|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x86.ActiveCfg = Release|Any CPU
+ {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x86.Build.0 = Release|Any CPU
{383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x64.Build.0 = Debug|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x86.Build.0 = Debug|Any CPU
{383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|Any CPU.ActiveCfg = Release|Any CPU
{383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|Any CPU.Build.0 = Release|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x64.ActiveCfg = Release|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x64.Build.0 = Release|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x86.ActiveCfg = Release|Any CPU
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x86.Build.0 = Release|Any CPU
{B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x64.Build.0 = Debug|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x86.Build.0 = Debug|Any CPU
{B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x64.ActiveCfg = Release|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x64.Build.0 = Release|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x86.ActiveCfg = Release|Any CPU
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x86.Build.0 = Release|Any CPU
{0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x64.Build.0 = Debug|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x86.Build.0 = Debug|Any CPU
{0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x64.ActiveCfg = Release|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x64.Build.0 = Release|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x86.ActiveCfg = Release|Any CPU
+ {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x86.Build.0 = Release|Any CPU
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x64.Build.0 = Debug|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x86.Build.0 = Debug|Any CPU
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.ActiveCfg = Release|Any CPU
{342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.Build.0 = Release|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x64.ActiveCfg = Release|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x64.Build.0 = Release|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x86.ActiveCfg = Release|Any CPU
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x86.Build.0 = Release|Any CPU
{9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x64.Build.0 = Debug|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x86.Build.0 = Debug|Any CPU
{9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x64.ActiveCfg = Release|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x64.Build.0 = Release|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x86.ActiveCfg = Release|Any CPU
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x86.Build.0 = Release|Any CPU
{95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x64.Build.0 = Debug|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x86.Build.0 = Debug|Any CPU
{95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x64.ActiveCfg = Release|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x64.Build.0 = Release|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x86.ActiveCfg = Release|Any CPU
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x86.Build.0 = Release|Any CPU
{1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x64.Build.0 = Debug|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x86.Build.0 = Debug|Any CPU
{1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x64.ActiveCfg = Release|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x64.Build.0 = Release|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x86.ActiveCfg = Release|Any CPU
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x86.Build.0 = Release|Any CPU
{78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x64.Build.0 = Debug|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x86.Build.0 = Debug|Any CPU
{78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|Any CPU.Build.0 = Release|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x64.ActiveCfg = Release|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x64.Build.0 = Release|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x86.ActiveCfg = Release|Any CPU
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x86.Build.0 = Release|Any CPU
{B615B353-476C-43B9-A776-B193B0DBD256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B615B353-476C-43B9-A776-B193B0DBD256}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x64.Build.0 = Debug|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x86.Build.0 = Debug|Any CPU
{B615B353-476C-43B9-A776-B193B0DBD256}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B615B353-476C-43B9-A776-B193B0DBD256}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x64.ActiveCfg = Release|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x64.Build.0 = Release|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x86.ActiveCfg = Release|Any CPU
+ {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x86.Build.0 = Release|Any CPU
{2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x64.Build.0 = Debug|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x86.Build.0 = Debug|Any CPU
{2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x64.ActiveCfg = Release|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x64.Build.0 = Release|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x86.ActiveCfg = Release|Any CPU
+ {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x86.Build.0 = Release|Any CPU
{15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x64.Build.0 = Debug|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x86.Build.0 = Debug|Any CPU
{15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x64.ActiveCfg = Release|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x64.Build.0 = Release|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x86.ActiveCfg = Release|Any CPU
+ {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x86.Build.0 = Release|Any CPU
{5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x64.Build.0 = Debug|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x86.Build.0 = Debug|Any CPU
{5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x64.ActiveCfg = Release|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x64.Build.0 = Release|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x86.ActiveCfg = Release|Any CPU
+ {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x86.Build.0 = Release|Any CPU
{3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x64.Build.0 = Debug|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x86.Build.0 = Debug|Any CPU
{3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x64.ActiveCfg = Release|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x64.Build.0 = Release|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x86.ActiveCfg = Release|Any CPU
+ {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x86.Build.0 = Release|Any CPU
{7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x64.Build.0 = Debug|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x86.Build.0 = Debug|Any CPU
{7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x64.ActiveCfg = Release|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x64.Build.0 = Release|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x86.ActiveCfg = Release|Any CPU
+ {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x86.Build.0 = Release|Any CPU
{626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x64.Build.0 = Debug|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x86.Build.0 = Debug|Any CPU
{626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x64.ActiveCfg = Release|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x64.Build.0 = Release|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x86.ActiveCfg = Release|Any CPU
+ {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x86.Build.0 = Release|Any CPU
{CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x64.Build.0 = Debug|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x86.Build.0 = Debug|Any CPU
{CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x64.ActiveCfg = Release|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x64.Build.0 = Release|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x86.ActiveCfg = Release|Any CPU
+ {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x86.Build.0 = Release|Any CPU
{F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x64.Build.0 = Debug|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x86.Build.0 = Debug|Any CPU
{F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x64.ActiveCfg = Release|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x64.Build.0 = Release|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x86.ActiveCfg = Release|Any CPU
+ {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x86.Build.0 = Release|Any CPU
{4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x64.Build.0 = Debug|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x86.Build.0 = Debug|Any CPU
{4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x64.ActiveCfg = Release|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x64.Build.0 = Release|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x86.ActiveCfg = Release|Any CPU
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x86.Build.0 = Release|Any CPU
{345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x64.Build.0 = Debug|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x86.Build.0 = Debug|Any CPU
{345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x64.ActiveCfg = Release|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x64.Build.0 = Release|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x86.ActiveCfg = Release|Any CPU
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x86.Build.0 = Release|Any CPU
{2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x64.Build.0 = Debug|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x86.Build.0 = Debug|Any CPU
{2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x64.ActiveCfg = Release|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x64.Build.0 = Release|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x86.ActiveCfg = Release|Any CPU
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x86.Build.0 = Release|Any CPU
{E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x64.Build.0 = Debug|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x86.Build.0 = Debug|Any CPU
{E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x64.ActiveCfg = Release|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x64.Build.0 = Release|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x86.ActiveCfg = Release|Any CPU
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x86.Build.0 = Release|Any CPU
{F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x64.Build.0 = Debug|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x86.Build.0 = Debug|Any CPU
{F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x64.ActiveCfg = Release|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x64.Build.0 = Release|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x86.ActiveCfg = Release|Any CPU
+ {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x86.Build.0 = Release|Any CPU
{5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x64.Build.0 = Debug|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x86.Build.0 = Debug|Any CPU
{5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x64.ActiveCfg = Release|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x64.Build.0 = Release|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x86.ActiveCfg = Release|Any CPU
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x86.Build.0 = Release|Any CPU
{35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x64.Build.0 = Debug|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x86.Build.0 = Debug|Any CPU
{35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x64.ActiveCfg = Release|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x64.Build.0 = Release|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x86.ActiveCfg = Release|Any CPU
+ {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x86.Build.0 = Release|Any CPU
{07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x64.Build.0 = Debug|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x86.Build.0 = Debug|Any CPU
{07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x64.ActiveCfg = Release|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x64.Build.0 = Release|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x86.ActiveCfg = Release|Any CPU
+ {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x86.Build.0 = Release|Any CPU
{5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x64.Build.0 = Debug|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x86.Build.0 = Debug|Any CPU
{5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x64.ActiveCfg = Release|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x64.Build.0 = Release|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x86.ActiveCfg = Release|Any CPU
+ {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x86.Build.0 = Release|Any CPU
{4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x64.Build.0 = Debug|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x86.Build.0 = Debug|Any CPU
{4A175C27-EAFE-47E7-90F6-873B37863656}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A175C27-EAFE-47E7-90F6-873B37863656}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x64.ActiveCfg = Release|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x64.Build.0 = Release|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x86.ActiveCfg = Release|Any CPU
+ {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x86.Build.0 = Release|Any CPU
{DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x64.Build.0 = Debug|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x86.Build.0 = Debug|Any CPU
{DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x64.ActiveCfg = Release|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x64.Build.0 = Release|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x86.ActiveCfg = Release|Any CPU
+ {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x86.Build.0 = Release|Any CPU
{61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x64.Build.0 = Debug|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x86.Build.0 = Debug|Any CPU
{61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|Any CPU.ActiveCfg = Release|Any CPU
{61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|Any CPU.Build.0 = Release|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x64.ActiveCfg = Release|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x64.Build.0 = Release|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x86.ActiveCfg = Release|Any CPU
+ {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x86.Build.0 = Release|Any CPU
{CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x64.Build.0 = Debug|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x86.Build.0 = Debug|Any CPU
{CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x64.ActiveCfg = Release|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x64.Build.0 = Release|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x86.ActiveCfg = Release|Any CPU
+ {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x86.Build.0 = Release|Any CPU
{980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x64.Build.0 = Debug|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x86.Build.0 = Debug|Any CPU
{980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|Any CPU.ActiveCfg = Release|Any CPU
{980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|Any CPU.Build.0 = Release|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x64.ActiveCfg = Release|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x64.Build.0 = Release|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x86.ActiveCfg = Release|Any CPU
+ {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x86.Build.0 = Release|Any CPU
{7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x64.Build.0 = Debug|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x86.Build.0 = Debug|Any CPU
{7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x64.ActiveCfg = Release|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x64.Build.0 = Release|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x86.ActiveCfg = Release|Any CPU
+ {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x86.Build.0 = Release|Any CPU
{AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x64.Build.0 = Debug|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x86.Build.0 = Debug|Any CPU
{AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x64.ActiveCfg = Release|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x64.Build.0 = Release|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x86.ActiveCfg = Release|Any CPU
+ {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x86.Build.0 = Release|Any CPU
{B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x64.Build.0 = Debug|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x86.Build.0 = Debug|Any CPU
{B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|Any CPU.Build.0 = Release|Any CPU
- {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x64.ActiveCfg = Release|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x64.Build.0 = Release|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x86.ActiveCfg = Release|Any CPU
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x86.Build.0 = Release|Any CPU
{DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x64.Build.0 = Debug|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x86.Build.0 = Debug|Any CPU
{DFBABB04-50E9-42F6-B470-310E1B545638}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFBABB04-50E9-42F6-B470-310E1B545638}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x64.ActiveCfg = Release|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x64.Build.0 = Release|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x86.ActiveCfg = Release|Any CPU
+ {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x86.Build.0 = Release|Any CPU
{B445B19C-A925-4873-8CB7-8317898B6970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B445B19C-A925-4873-8CB7-8317898B6970}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x64.Build.0 = Debug|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x86.Build.0 = Debug|Any CPU
{B445B19C-A925-4873-8CB7-8317898B6970}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B445B19C-A925-4873-8CB7-8317898B6970}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x64.ActiveCfg = Release|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x64.Build.0 = Release|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x86.ActiveCfg = Release|Any CPU
+ {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x86.Build.0 = Release|Any CPU
{CDB47863-BEBD-4841-A807-46D868962521}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CDB47863-BEBD-4841-A807-46D868962521}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x64.Build.0 = Debug|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x86.Build.0 = Debug|Any CPU
{CDB47863-BEBD-4841-A807-46D868962521}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CDB47863-BEBD-4841-A807-46D868962521}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Release|x64.ActiveCfg = Release|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Release|x64.Build.0 = Release|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Release|x86.ActiveCfg = Release|Any CPU
+ {CDB47863-BEBD-4841-A807-46D868962521}.Release|x86.Build.0 = Release|Any CPU
{273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x64.Build.0 = Debug|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x86.Build.0 = Debug|Any CPU
{273F2527-1658-4CCF-8DC6-600E921188C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{273F2527-1658-4CCF-8DC6-600E921188C5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x64.ActiveCfg = Release|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x64.Build.0 = Release|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x86.ActiveCfg = Release|Any CPU
+ {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x86.Build.0 = Release|Any CPU
{2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x64.Build.0 = Debug|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x86.Build.0 = Debug|Any CPU
{2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x64.ActiveCfg = Release|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x64.Build.0 = Release|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x86.ActiveCfg = Release|Any CPU
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x86.Build.0 = Release|Any CPU
{11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x64.Build.0 = Debug|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x86.Build.0 = Debug|Any CPU
{11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x64.ActiveCfg = Release|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x64.Build.0 = Release|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x86.ActiveCfg = Release|Any CPU
+ {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x86.Build.0 = Release|Any CPU
{43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x64.Build.0 = Debug|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x86.Build.0 = Debug|Any CPU
{43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x64.ActiveCfg = Release|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x64.Build.0 = Release|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x86.ActiveCfg = Release|Any CPU
+ {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x86.Build.0 = Release|Any CPU
{7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x64.Build.0 = Debug|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x86.Build.0 = Debug|Any CPU
{7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x64.ActiveCfg = Release|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x64.Build.0 = Release|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x86.ActiveCfg = Release|Any CPU
+ {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x86.Build.0 = Release|Any CPU
{945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x64.Build.0 = Debug|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x86.Build.0 = Debug|Any CPU
{945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x64.ActiveCfg = Release|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x64.Build.0 = Release|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x86.ActiveCfg = Release|Any CPU
+ {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x86.Build.0 = Release|Any CPU
{FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x64.Build.0 = Debug|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x86.Build.0 = Debug|Any CPU
{FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x64.ActiveCfg = Release|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x64.Build.0 = Release|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x86.ActiveCfg = Release|Any CPU
+ {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x86.Build.0 = Release|Any CPU
{D83B27F3-4401-42F5-843E-147566B4999A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D83B27F3-4401-42F5-843E-147566B4999A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x64.Build.0 = Debug|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x86.Build.0 = Debug|Any CPU
{D83B27F3-4401-42F5-843E-147566B4999A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D83B27F3-4401-42F5-843E-147566B4999A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x64.ActiveCfg = Release|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x64.Build.0 = Release|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x86.ActiveCfg = Release|Any CPU
+ {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x86.Build.0 = Release|Any CPU
{00359961-0C50-4BB1-A794-8B06DE991639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00359961-0C50-4BB1-A794-8B06DE991639}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x64.Build.0 = Debug|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x86.Build.0 = Debug|Any CPU
{00359961-0C50-4BB1-A794-8B06DE991639}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00359961-0C50-4BB1-A794-8B06DE991639}.Release|Any CPU.Build.0 = Release|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x64.ActiveCfg = Release|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x64.Build.0 = Release|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x86.ActiveCfg = Release|Any CPU
+ {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x86.Build.0 = Release|Any CPU
{4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x64.Build.0 = Debug|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x86.Build.0 = Debug|Any CPU
{4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x64.ActiveCfg = Release|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x64.Build.0 = Release|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x86.ActiveCfg = Release|Any CPU
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x86.Build.0 = Release|Any CPU
{0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x64.Build.0 = Debug|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x86.Build.0 = Debug|Any CPU
{0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|Any CPU.Build.0 = Release|Any CPU
- {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x64.ActiveCfg = Release|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x64.Build.0 = Release|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x86.ActiveCfg = Release|Any CPU
+ {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x86.Build.0 = Release|Any CPU
{C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x64.Build.0 = Debug|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x86.Build.0 = Debug|Any CPU
{C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x64.ActiveCfg = Release|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x64.Build.0 = Release|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x86.ActiveCfg = Release|Any CPU
+ {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x86.Build.0 = Release|Any CPU
{BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x64.Build.0 = Debug|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x86.Build.0 = Debug|Any CPU
{BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x64.ActiveCfg = Release|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x64.Build.0 = Release|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x86.ActiveCfg = Release|Any CPU
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x86.Build.0 = Release|Any CPU
{9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x64.Build.0 = Debug|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x86.Build.0 = Debug|Any CPU
{9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x64.ActiveCfg = Release|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x64.Build.0 = Release|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x86.ActiveCfg = Release|Any CPU
+ {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x86.Build.0 = Release|Any CPU
{E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x64.Build.0 = Debug|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x86.Build.0 = Debug|Any CPU
{E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|Any CPU.Build.0 = Release|Any CPU
- {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x64.ActiveCfg = Release|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x64.Build.0 = Release|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x86.ActiveCfg = Release|Any CPU
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x86.Build.0 = Release|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x64.Build.0 = Debug|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x86.Build.0 = Debug|Any CPU
{55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x64.ActiveCfg = Release|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x64.Build.0 = Release|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x86.ActiveCfg = Release|Any CPU
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x86.Build.0 = Release|Any CPU
{CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x64.Build.0 = Debug|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x86.Build.0 = Debug|Any CPU
{CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x64.ActiveCfg = Release|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x64.Build.0 = Release|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x86.ActiveCfg = Release|Any CPU
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x86.Build.0 = Release|Any CPU
{28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x64.Build.0 = Debug|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x86.Build.0 = Debug|Any CPU
{28B87C37-4B52-400F-B84D-64F134931BDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28B87C37-4B52-400F-B84D-64F134931BDC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x64.ActiveCfg = Release|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x64.Build.0 = Release|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x86.ActiveCfg = Release|Any CPU
+ {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x86.Build.0 = Release|Any CPU
{CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x64.Build.0 = Debug|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x86.Build.0 = Debug|Any CPU
{CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x64.ActiveCfg = Release|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x64.Build.0 = Release|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x86.ActiveCfg = Release|Any CPU
+ {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x86.Build.0 = Release|Any CPU
{E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x64.Build.0 = Debug|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x86.Build.0 = Debug|Any CPU
{E49C822C-E921-48DF-897B-3E603CA596D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E49C822C-E921-48DF-897B-3E603CA596D2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x64.ActiveCfg = Release|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x64.Build.0 = Release|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x86.ActiveCfg = Release|Any CPU
+ {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x86.Build.0 = Release|Any CPU
{A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x64.Build.0 = Debug|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x86.Build.0 = Debug|Any CPU
{A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x64.ActiveCfg = Release|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x64.Build.0 = Release|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x86.ActiveCfg = Release|Any CPU
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x86.Build.0 = Release|Any CPU
{7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x64.Build.0 = Debug|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x86.Build.0 = Debug|Any CPU
{7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x64.ActiveCfg = Release|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x64.Build.0 = Release|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x86.ActiveCfg = Release|Any CPU
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x86.Build.0 = Release|Any CPU
{160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x64.Build.0 = Debug|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x86.Build.0 = Debug|Any CPU
{160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|Any CPU.ActiveCfg = Release|Any CPU
{160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|Any CPU.Build.0 = Release|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x64.ActiveCfg = Release|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x64.Build.0 = Release|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x86.ActiveCfg = Release|Any CPU
+ {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x86.Build.0 = Release|Any CPU
{B508EBD6-0F14-480C-A446-45A09052733B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B508EBD6-0F14-480C-A446-45A09052733B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x64.Build.0 = Debug|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x86.Build.0 = Debug|Any CPU
{B508EBD6-0F14-480C-A446-45A09052733B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B508EBD6-0F14-480C-A446-45A09052733B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x64.ActiveCfg = Release|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x64.Build.0 = Release|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x86.ActiveCfg = Release|Any CPU
+ {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x86.Build.0 = Release|Any CPU
{E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x64.Build.0 = Debug|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x86.Build.0 = Debug|Any CPU
{E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x64.ActiveCfg = Release|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x64.Build.0 = Release|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x86.ActiveCfg = Release|Any CPU
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x86.Build.0 = Release|Any CPU
{097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x64.Build.0 = Debug|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x86.Build.0 = Debug|Any CPU
{097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|Any CPU.ActiveCfg = Release|Any CPU
{097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|Any CPU.Build.0 = Release|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x64.ActiveCfg = Release|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x64.Build.0 = Release|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x86.ActiveCfg = Release|Any CPU
+ {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x86.Build.0 = Release|Any CPU
{5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x64.Build.0 = Debug|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x86.Build.0 = Debug|Any CPU
{5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x64.ActiveCfg = Release|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x64.Build.0 = Release|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x86.ActiveCfg = Release|Any CPU
+ {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x86.Build.0 = Release|Any CPU
{3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x64.Build.0 = Debug|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x86.Build.0 = Debug|Any CPU
{3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x64.ActiveCfg = Release|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x64.Build.0 = Release|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x86.ActiveCfg = Release|Any CPU
+ {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x86.Build.0 = Release|Any CPU
{A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x64.Build.0 = Debug|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x86.Build.0 = Debug|Any CPU
{A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x64.ActiveCfg = Release|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x64.Build.0 = Release|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x86.ActiveCfg = Release|Any CPU
+ {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x86.Build.0 = Release|Any CPU
{97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x64.Build.0 = Debug|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x86.Build.0 = Debug|Any CPU
{97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|Any CPU.Build.0 = Release|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x64.ActiveCfg = Release|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x64.Build.0 = Release|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x86.ActiveCfg = Release|Any CPU
+ {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x86.Build.0 = Release|Any CPU
{5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x64.Build.0 = Debug|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x86.Build.0 = Debug|Any CPU
{5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x64.ActiveCfg = Release|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x64.Build.0 = Release|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x86.ActiveCfg = Release|Any CPU
+ {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x86.Build.0 = Release|Any CPU
{6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x64.Build.0 = Debug|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x86.Build.0 = Debug|Any CPU
{6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x64.ActiveCfg = Release|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x64.Build.0 = Release|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x86.ActiveCfg = Release|Any CPU
+ {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x86.Build.0 = Release|Any CPU
{AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x64.Build.0 = Debug|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x86.Build.0 = Debug|Any CPU
{AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x64.ActiveCfg = Release|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x64.Build.0 = Release|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x86.ActiveCfg = Release|Any CPU
+ {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x86.Build.0 = Release|Any CPU
{CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x64.Build.0 = Debug|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x86.Build.0 = Debug|Any CPU
{CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x64.ActiveCfg = Release|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x64.Build.0 = Release|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x86.ActiveCfg = Release|Any CPU
+ {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x86.Build.0 = Release|Any CPU
{EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x64.Build.0 = Debug|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x86.Build.0 = Debug|Any CPU
{EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x64.ActiveCfg = Release|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x64.Build.0 = Release|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x86.ActiveCfg = Release|Any CPU
+ {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x86.Build.0 = Release|Any CPU
{9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x64.Build.0 = Debug|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x86.Build.0 = Debug|Any CPU
{9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x64.ActiveCfg = Release|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x64.Build.0 = Release|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x86.ActiveCfg = Release|Any CPU
+ {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x86.Build.0 = Release|Any CPU
{F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x64.Build.0 = Debug|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x86.Build.0 = Debug|Any CPU
{F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x64.ActiveCfg = Release|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x64.Build.0 = Release|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x86.ActiveCfg = Release|Any CPU
+ {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x86.Build.0 = Release|Any CPU
{FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x64.Build.0 = Debug|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x86.Build.0 = Debug|Any CPU
{FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x64.ActiveCfg = Release|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x64.Build.0 = Release|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x86.ActiveCfg = Release|Any CPU
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x86.Build.0 = Release|Any CPU
{667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x64.Build.0 = Debug|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x86.Build.0 = Debug|Any CPU
{667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x64.ActiveCfg = Release|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x64.Build.0 = Release|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x86.ActiveCfg = Release|Any CPU
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x86.Build.0 = Release|Any CPU
{77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x64.Build.0 = Debug|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x86.Build.0 = Debug|Any CPU
{77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x64.ActiveCfg = Release|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x64.Build.0 = Release|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x86.ActiveCfg = Release|Any CPU
+ {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x86.Build.0 = Release|Any CPU
{030CB614-6148-4863-A39A-1251728DE51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{030CB614-6148-4863-A39A-1251728DE51D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x64.Build.0 = Debug|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x86.Build.0 = Debug|Any CPU
{030CB614-6148-4863-A39A-1251728DE51D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{030CB614-6148-4863-A39A-1251728DE51D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Release|x64.ActiveCfg = Release|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Release|x64.Build.0 = Release|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Release|x86.ActiveCfg = Release|Any CPU
+ {030CB614-6148-4863-A39A-1251728DE51D}.Release|x86.Build.0 = Release|Any CPU
{5AECC3FC-7374-4534-A305-397E3290E573}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5AECC3FC-7374-4534-A305-397E3290E573}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x64.Build.0 = Debug|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x86.Build.0 = Debug|Any CPU
{5AECC3FC-7374-4534-A305-397E3290E573}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5AECC3FC-7374-4534-A305-397E3290E573}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x64.ActiveCfg = Release|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x64.Build.0 = Release|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x86.ActiveCfg = Release|Any CPU
+ {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x86.Build.0 = Release|Any CPU
{CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x64.Build.0 = Debug|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x86.Build.0 = Debug|Any CPU
{CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x64.ActiveCfg = Release|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x64.Build.0 = Release|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x86.ActiveCfg = Release|Any CPU
+ {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x86.Build.0 = Release|Any CPU
{A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x64.Build.0 = Debug|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x86.Build.0 = Debug|Any CPU
{A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x64.ActiveCfg = Release|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x64.Build.0 = Release|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x86.ActiveCfg = Release|Any CPU
+ {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x86.Build.0 = Release|Any CPU
{5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x64.Build.0 = Debug|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x86.Build.0 = Debug|Any CPU
{5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x64.ActiveCfg = Release|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x64.Build.0 = Release|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x86.ActiveCfg = Release|Any CPU
+ {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x86.Build.0 = Release|Any CPU
{E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x64.Build.0 = Debug|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x86.Build.0 = Debug|Any CPU
{E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x64.ActiveCfg = Release|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x64.Build.0 = Release|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x86.ActiveCfg = Release|Any CPU
+ {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x86.Build.0 = Release|Any CPU
{38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x64.Build.0 = Debug|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x86.Build.0 = Debug|Any CPU
{38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x64.ActiveCfg = Release|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x64.Build.0 = Release|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x86.ActiveCfg = Release|Any CPU
+ {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x86.Build.0 = Release|Any CPU
{2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x86.Build.0 = Debug|Any CPU
{2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x64.Build.0 = Release|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x86.Build.0 = Release|Any CPU
{AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x64.Build.0 = Debug|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x86.Build.0 = Debug|Any CPU
{AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x64.ActiveCfg = Release|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x64.Build.0 = Release|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x86.ActiveCfg = Release|Any CPU
+ {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x86.Build.0 = Release|Any CPU
{FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x64.Build.0 = Debug|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x86.Build.0 = Debug|Any CPU
{FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x64.ActiveCfg = Release|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x64.Build.0 = Release|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x86.ActiveCfg = Release|Any CPU
+ {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x86.Build.0 = Release|Any CPU
{B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x64.Build.0 = Debug|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x86.Build.0 = Debug|Any CPU
{B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x64.ActiveCfg = Release|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x64.Build.0 = Release|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x86.ActiveCfg = Release|Any CPU
+ {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x86.Build.0 = Release|Any CPU
{BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x64.Build.0 = Debug|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x86.Build.0 = Debug|Any CPU
{BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x64.ActiveCfg = Release|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x64.Build.0 = Release|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x86.ActiveCfg = Release|Any CPU
+ {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x86.Build.0 = Release|Any CPU
{CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x64.Build.0 = Debug|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x86.Build.0 = Debug|Any CPU
{CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x64.ActiveCfg = Release|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x64.Build.0 = Release|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x86.ActiveCfg = Release|Any CPU
+ {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x86.Build.0 = Release|Any CPU
{1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x64.Build.0 = Debug|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x86.Build.0 = Debug|Any CPU
{1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x64.ActiveCfg = Release|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x64.Build.0 = Release|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x86.ActiveCfg = Release|Any CPU
+ {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x86.Build.0 = Release|Any CPU
{4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x64.Build.0 = Debug|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x86.Build.0 = Debug|Any CPU
{4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x64.ActiveCfg = Release|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x64.Build.0 = Release|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x86.ActiveCfg = Release|Any CPU
+ {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x86.Build.0 = Release|Any CPU
{837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x64.Build.0 = Debug|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x86.Build.0 = Debug|Any CPU
{837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x64.ActiveCfg = Release|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x64.Build.0 = Release|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x86.ActiveCfg = Release|Any CPU
+ {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x86.Build.0 = Release|Any CPU
{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x64.Build.0 = Debug|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x86.Build.0 = Debug|Any CPU
{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x64.ActiveCfg = Release|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x64.Build.0 = Release|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x86.ActiveCfg = Release|Any CPU
+ {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x86.Build.0 = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x64.Build.0 = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x86.Build.0 = Debug|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x64.ActiveCfg = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x64.Build.0 = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x86.ActiveCfg = Release|Any CPU
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x86.Build.0 = Release|Any CPU
{01A20A89-53A1-4D5B-B563-89E157718474}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{01A20A89-53A1-4D5B-B563-89E157718474}.Debug|Any CPU.Build.0 = Debug|Any CPU
{01A20A89-53A1-4D5B-B563-89E157718474}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -675,9 +1478,18 @@ Global
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{C2DB4B64-B7C3-4FED-8753-C040F677C69A} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{B9C12532-0969-4DAC-A2F8-CA9208D7A901} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{62E41317-ED5D-4AA4-B129-C9E56C27354C} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{08D602F6-7C11-4653-B70B-B56333BF6FD2} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {383609C1-F43F-49EB-85E4-1964EE7F0F14} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {B314AD5E-10AC-418A-B021-D4206BF37ACF} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {0CD1912D-5E27-4A2A-A998-164792E0D006} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {342783B5-F75B-4752-A3E2-B8CB7D09C080} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {95BAF30B-8089-42CE-8530-6DFBCE1F6A07} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {1BA7E772-8AA7-4D5A-800D-66B17F62421C} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {78FC19B2-396C-4ED2-BFD9-6C5667C61666} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{B615B353-476C-43B9-A776-B193B0DBD256} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{A11DC259-D1DB-4686-AD28-A427D0BABA83} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{2EC50C79-782D-4985-ABB1-AD07F35D1621} = {A11DC259-D1DB-4686-AD28-A427D0BABA83}
@@ -690,7 +1502,12 @@ Global
{CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C} = {02374BD0-BF0B-40F8-A04A-C4C4D61D4992}
{A7F41094-8648-446B-AECD-DCC2CC871F73} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{F70AC78E-8925-4770-832A-2FC67A620EB2} = {A7F41094-8648-446B-AECD-DCC2CC871F73}
+ {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
+ {E8212911-344B-4638-ADC3-B215BCDCAFD1} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
{F80F837E-D2FC-4FFC-B68F-3CF0EC015F66} = {A7F41094-8648-446B-AECD-DCC2CC871F73}
+ {5BE7F505-7D77-4C3A-ABFD-54088774DAA7} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
{35031EDB-C0DE-453A-8335-D2EBEA2FC640} = {A7F41094-8648-446B-AECD-DCC2CC871F73}
{07578B6C-9B96-4B3D-BA2E-7800EFCA7F99} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
@@ -703,9 +1520,13 @@ Global
{CB903D21-4869-42EF-BDD6-5B1CFF674337} = {7592AFA4-426B-42F3-AE82-957C86814482}
{980B5FD8-0107-41F7-8FAD-E4E8BAE8A625} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{7C06FE2D-6C62-48F5-A505-F0D715C554DE} = {7592AFA4-426B-42F3-AE82-957C86814482}
+ {AF89083D-4715-42E6-93E9-38497D12A8A6} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {B5CDB0DC-B26D-48F1-B934-FE5C1C991940} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
{DFBABB04-50E9-42F6-B470-310E1B545638} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{B445B19C-A925-4873-8CB7-8317898B6970} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {CDB47863-BEBD-4841-A807-46D868962521} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{273F2527-1658-4CCF-8DC6-600E921188C5} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {2F3700EF-1CDA-4C15-AC88-360230000ECD} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{3046DBF4-C2FF-4F3A-9176-E1C01E0A90E5} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{11011FF8-77EA-4B25-96C0-29D4D486EF1C} = {3046DBF4-C2FF-4F3A-9176-E1C01E0A90E5}
{43CB06A9-7E88-4C5F-BFB8-947E072CBC9F} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
@@ -714,18 +1535,26 @@ Global
{FD3E9371-3134-4235-8E80-32226DFB4B1F} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{D83B27F3-4401-42F5-843E-147566B4999A} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{00359961-0C50-4BB1-A794-8B06DE991639} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
+ {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{0EAE36A1-B578-4F13-A113-7A477ECA1BDA} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{C8BB6A85-A7EA-40C0-893D-F36F317829B3} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {BF9828E9-5597-4D42-AA6E-6E6C12214204} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{D9697361-232F-465D-A136-4561E0E88488} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{9CAF360E-5AD3-4C4F-89A0-327EEB70D673} = {D9697361-232F-465D-A136-4561E0E88488}
- {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {E90114C6-86FC-43B8-AE5C-D9273CF21FE4} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{28B87C37-4B52-400F-B84D-64F134931BDC} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {CADEAE45-8981-4723-B641-9C28251C7D3B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{E49C822C-E921-48DF-897B-3E603CA596D2} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {A2C0F203-11FF-4B7F-A94F-B9FD873573FE} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {7E23E229-6823-4D84-AF3A-AE14CEAEF52A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{160EFFA0-F6B9-49E4-B62B-68C0D53DB425} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {B508EBD6-0F14-480C-A446-45A09052733B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
+ {E070F694-335D-4D96-8951-F41D0A5F2A8B} = {442E80E5-8040-4123-B88A-26FD36BA95D9}
{6843B5B3-9E95-4022-B792-8A1DE6BFEFEC} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{097D5F6F-D26F-4BFB-9074-FA52577EB442} = {6843B5B3-9E95-4022-B792-8A1DE6BFEFEC}
{442E80E5-8040-4123-B88A-26FD36BA95D9} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
- {E070F694-335D-4D96-8951-F41D0A5F2A8B} = {442E80E5-8040-4123-B88A-26FD36BA95D9}
{5764B1AA-66B8-43AE-9E0D-0B3B71714B92} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{953D770B-2DE8-4D1B-B1D4-ED46F4F5F31A} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{55E08C7F-81C8-4D0B-AB18-87C89B261477} = {953D770B-2DE8-4D1B-B1D4-ED46F4F5F31A}
@@ -740,40 +1569,14 @@ Global
{9BD12D26-AD9B-4C76-A97F-7A89B7276ABE} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{11D2CA0F-6D38-4DC7-AE06-C1DAE7FC1C20} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
{F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93} = {11D2CA0F-6D38-4DC7-AE06-C1DAE7FC1C20}
+ {FB21FAC7-09F7-4F68-910C-224EE7150B35} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
+ {667E2F91-3004-4409-B6B8-9216EAFC44CF} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
{77176EC6-C586-47B1-BB72-533327F9E7BE} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{030CB614-6148-4863-A39A-1251728DE51D} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{5AECC3FC-7374-4534-A305-397E3290E573} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{047680F1-C0FE-4DE9-A257-62FA8599C834} = {DD020B34-460F-455F-8D17-CF4A949F100B}
- {B5CDB0DC-B26D-48F1-B934-FE5C1C991940} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {342783B5-F75B-4752-A3E2-B8CB7D09C080} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {1BA7E772-8AA7-4D5A-800D-66B17F62421C} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {95BAF30B-8089-42CE-8530-6DFBCE1F6A07} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {5BE7F505-7D77-4C3A-ABFD-54088774DAA7} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {0CD1912D-5E27-4A2A-A998-164792E0D006} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {E8212911-344B-4638-ADC3-B215BCDCAFD1} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
{0AF0FE8D-C234-4F04-8514-32206ACE01BD} = {DD020B34-460F-455F-8D17-CF4A949F100B}
- {A2C0F203-11FF-4B7F-A94F-B9FD873573FE} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {AF89083D-4715-42E6-93E9-38497D12A8A6} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {2F3700EF-1CDA-4C15-AC88-360230000ECD} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {7E23E229-6823-4D84-AF3A-AE14CEAEF52A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {B314AD5E-10AC-418A-B021-D4206BF37ACF} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {383609C1-F43F-49EB-85E4-1964EE7F0F14} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {CDB47863-BEBD-4841-A807-46D868962521} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {B508EBD6-0F14-480C-A446-45A09052733B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {78FC19B2-396C-4ED2-BFD9-6C5667C61666} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {CADEAE45-8981-4723-B641-9C28251C7D3B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {BF9828E9-5597-4D42-AA6E-6E6C12214204} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
- {E90114C6-86FC-43B8-AE5C-D9273CF21FE4} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{8462B106-175A-423A-BA94-BE0D39D0BD8E} = {047680F1-C0FE-4DE9-A257-62FA8599C834}
- {667E2F91-3004-4409-B6B8-9216EAFC44CF} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
- {FB21FAC7-09F7-4F68-910C-224EE7150B35} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
{CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{A05D1519-6A82-498F-B7C9-3D14E08D35CA} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
{5A93F96B-4D0E-479D-B540-29678A0998FA} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
@@ -789,6 +1592,7 @@ Global
{4FF7F075-2818-41E4-A88F-743417EA0A99} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD}
{837E02A5-D1C0-4F60-AF93-71117BF3B6DC} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9}
{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
+ {193BBE09-E261-4D65-B4CC-18B88DB049D7} = {DD020B34-460F-455F-8D17-CF4A949F100B}
{01A20A89-53A1-4D5B-B563-89E157718474} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
{7B14879F-156B-417E-ACA3-0B5A69CC2F39} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
EndGlobalSection
diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs
index f0910ad0b..428419710 100644
--- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs
+++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs
@@ -34,6 +34,7 @@ public static class DaprConfigurationStoreExtension
/// The used for the request.
/// The used to configure the timeout waiting for Dapr.
/// Optional metadata sent to the configuration store.
+ /// When true, does not block startup waiting for the sidecar. Configuration is loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprConfigurationStore(
this IConfigurationBuilder configurationBuilder,
@@ -41,7 +42,8 @@ public static IConfigurationBuilder AddDaprConfigurationStore(
IReadOnlyList keys,
DaprClient client,
TimeSpan sidecarWaitTimeout,
- IReadOnlyDictionary? metadata = default)
+ IReadOnlyDictionary? metadata = default,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(keys, nameof(keys));
@@ -54,7 +56,8 @@ public static IConfigurationBuilder AddDaprConfigurationStore(
Client = client,
SidecarWaitTimeout = sidecarWaitTimeout,
IsStreaming = false,
- Metadata = metadata
+ Metadata = metadata,
+ IsOptional = optional
});
return configurationBuilder;
@@ -71,6 +74,7 @@ public static IConfigurationBuilder AddDaprConfigurationStore(
/// The used for the request.
/// The used to configure the timeout waiting for Dapr.
/// Optional metadata sent to the configuration store.
+ /// When true, does not block startup waiting for the sidecar. Configuration is loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddStreamingDaprConfigurationStore(
this IConfigurationBuilder configurationBuilder,
@@ -78,7 +82,8 @@ public static IConfigurationBuilder AddStreamingDaprConfigurationStore(
IReadOnlyList keys,
DaprClient client,
TimeSpan sidecarWaitTimeout,
- IReadOnlyDictionary? metadata = default)
+ IReadOnlyDictionary? metadata = default,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(keys, nameof(keys));
@@ -91,7 +96,8 @@ public static IConfigurationBuilder AddStreamingDaprConfigurationStore(
Client = client,
SidecarWaitTimeout = sidecarWaitTimeout,
IsStreaming = true,
- Metadata = metadata
+ Metadata = metadata,
+ IsOptional = optional
});
return configurationBuilder;
diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs
index 3e859b8d0..d32afd84b 100644
--- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs
+++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs
@@ -26,13 +26,14 @@ namespace Dapr.Extensions.Configuration;
///
internal class DaprConfigurationStoreProvider : ConfigurationProvider, IDisposable
{
- private string store;
- private IReadOnlyList keys;
- private DaprClient daprClient;
- private TimeSpan sidecarWaitTimeout;
- private bool isStreaming;
- private IReadOnlyDictionary? metadata;
- private CancellationTokenSource cts;
+ private readonly string store;
+ private readonly IReadOnlyList keys;
+ private readonly DaprClient daprClient;
+ private readonly TimeSpan sidecarWaitTimeout;
+ private readonly bool isStreaming;
+ private readonly bool isOptional;
+ private readonly IReadOnlyDictionary? metadata;
+ private readonly CancellationTokenSource cts;
private Task subscribeTask = Task.CompletedTask;
///
@@ -44,19 +45,22 @@ internal class DaprConfigurationStoreProvider : ConfigurationProvider, IDisposab
/// The used to configure the timeout waiting for Dapr.
/// Determines if the source is streaming or not.
/// Optional metadata sent to the configuration store.
+ /// When true, does not block startup waiting for the sidecar.
public DaprConfigurationStoreProvider(
string store,
IReadOnlyList keys,
DaprClient daprClient,
TimeSpan sidecarWaitTimeout,
bool isStreaming = false,
- IReadOnlyDictionary? metadata = default)
+ IReadOnlyDictionary? metadata = default,
+ bool isOptional = false)
{
this.store = store;
this.keys = keys;
this.daprClient = daprClient;
this.sidecarWaitTimeout = sidecarWaitTimeout;
this.isStreaming = isStreaming;
+ this.isOptional = isOptional;
this.metadata = metadata ?? new Dictionary();
this.cts = new CancellationTokenSource();
}
@@ -64,10 +68,60 @@ public DaprConfigurationStoreProvider(
public void Dispose()
{
cts.Cancel();
+ cts.Dispose();
}
///
- public override void Load() => LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult();
+ public override void Load()
+ {
+ if (isOptional)
+ {
+ Data = new Dictionary(StringComparer.OrdinalIgnoreCase);
+ _ = Task.Run(() => LoadInBackgroundAsync());
+ }
+ else
+ {
+ LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult();
+ }
+ }
+
+ private async Task LoadInBackgroundAsync()
+ {
+ while (!cts.Token.IsCancellationRequested)
+ {
+ try
+ {
+ using var tokenSource = new CancellationTokenSource(sidecarWaitTimeout);
+ using var linked = CancellationTokenSource.CreateLinkedTokenSource(tokenSource.Token, cts.Token);
+ await daprClient.WaitForSidecarAsync(linked.Token);
+
+ await FetchDataAsync();
+ OnReload();
+ return;
+ }
+ catch (OperationCanceledException) when (cts.Token.IsCancellationRequested)
+ {
+ return;
+ }
+ catch (OperationCanceledException)
+ {
+ // Sidecar wait timed out — retry after delay.
+ }
+ catch (DaprException)
+ {
+ // Transient Dapr error — retry after delay.
+ }
+
+ try
+ {
+ await Task.Delay(sidecarWaitTimeout, cts.Token);
+ }
+ catch (OperationCanceledException)
+ {
+ return;
+ }
+ }
+ }
private async Task LoadAsync()
{
@@ -77,6 +131,11 @@ private async Task LoadAsync()
await daprClient.WaitForSidecarAsync(tokenSource.Token);
}
+ await FetchDataAsync();
+ }
+
+ private async Task FetchDataAsync()
+ {
if (isStreaming)
{
subscribeTask = Task.Run(async () =>
diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs
index 513e156b0..86012af5e 100644
--- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs
+++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs
@@ -53,9 +53,16 @@ public class DaprConfigurationStoreSource : IConfigurationSource
///
public IReadOnlyDictionary? Metadata { get; set; } = default;
+ ///
+ /// Gets or sets a value indicating whether this configuration source is optional.
+ /// When true, the provider will not block startup waiting for the Dapr sidecar and will
+ /// instead load configuration in the background once the sidecar becomes available.
+ ///
+ public bool IsOptional { get; set; }
+
///
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
- return new DaprConfigurationStoreProvider(Store, Keys, Client, SidecarWaitTimeout, IsStreaming, Metadata);
+ return new DaprConfigurationStoreProvider(Store, Keys, Client, SidecarWaitTimeout, IsStreaming, Metadata, IsOptional);
}
-}
\ No newline at end of file
+}
diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs
index 7df531e3e..0662ebe3e 100644
--- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs
+++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs
@@ -32,12 +32,14 @@ public static class DaprSecretStoreConfigurationExtensions
/// Dapr secret store name.
/// The secrets to retrieve.
/// The Dapr client
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
IEnumerable secretDescriptors,
- DaprClient client)
+ DaprClient client,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors));
@@ -47,7 +49,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
{
Store = store,
SecretDescriptors = secretDescriptors,
- Client = client
+ Client = client,
+ IsOptional = optional
});
return configurationBuilder;
@@ -61,13 +64,15 @@ public static IConfigurationBuilder AddDaprSecretStore(
/// The secrets to retrieve.
/// The Dapr client.
/// The used to configure the timeout waiting for Dapr.
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
IEnumerable secretDescriptors,
DaprClient client,
- TimeSpan sidecarWaitTimeout)
+ TimeSpan sidecarWaitTimeout,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors));
@@ -78,7 +83,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
Store = store,
SecretDescriptors = secretDescriptors,
Client = client,
- SidecarWaitTimeout = sidecarWaitTimeout
+ SidecarWaitTimeout = sidecarWaitTimeout,
+ IsOptional = optional
});
return configurationBuilder;
@@ -89,14 +95,16 @@ public static IConfigurationBuilder AddDaprSecretStore(
///
/// The to add to.
/// Dapr secret store name.
- /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used.
/// The Dapr client
+ /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used.
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
DaprClient client,
- IReadOnlyDictionary? metadata = null)
+ IReadOnlyDictionary? metadata = null,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(client, nameof(client));
@@ -105,7 +113,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
{
Store = store,
Metadata = metadata,
- Client = client
+ Client = client,
+ IsOptional = optional
});
return configurationBuilder;
@@ -116,16 +125,18 @@ public static IConfigurationBuilder AddDaprSecretStore(
///
/// The to add to.
/// Dapr secret store name.
- /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used.
/// The Dapr client
/// The used to configure the timeout waiting for Dapr.
+ /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used.
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
DaprClient client,
TimeSpan sidecarWaitTimeout,
- IReadOnlyDictionary? metadata = null)
+ IReadOnlyDictionary? metadata = null,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(client, nameof(client));
@@ -135,7 +146,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
Store = store,
Metadata = metadata,
Client = client,
- SidecarWaitTimeout = sidecarWaitTimeout
+ SidecarWaitTimeout = sidecarWaitTimeout,
+ IsOptional = optional
});
return configurationBuilder;
@@ -146,14 +158,16 @@ public static IConfigurationBuilder AddDaprSecretStore(
///
/// The to add to.
/// Dapr secret store name.
- /// A collection of delimiters that will be replaced by ':' in the key of every secret.
/// The Dapr client
+ /// A collection of delimiters that will be replaced by ':' in the key of every secret.
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
DaprClient client,
- IEnumerable? keyDelimiters)
+ IEnumerable? keyDelimiters,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(client, nameof(client));
@@ -161,7 +175,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
var source = new DaprSecretStoreConfigurationSource
{
Store = store,
- Client = client
+ Client = client,
+ IsOptional = optional
};
if (keyDelimiters != null)
@@ -179,16 +194,18 @@ public static IConfigurationBuilder AddDaprSecretStore(
///
/// The to add to.
/// Dapr secret store name.
- /// A collection of delimiters that will be replaced by ':' in the key of every secret.
/// The Dapr client
+ /// A collection of delimiters that will be replaced by ':' in the key of every secret.
/// The used to configure the timeout waiting for Dapr.
+ /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available.
/// The .
public static IConfigurationBuilder AddDaprSecretStore(
this IConfigurationBuilder configurationBuilder,
string store,
DaprClient client,
IEnumerable? keyDelimiters,
- TimeSpan sidecarWaitTimeout)
+ TimeSpan sidecarWaitTimeout,
+ bool optional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(client, nameof(client));
@@ -197,7 +214,8 @@ public static IConfigurationBuilder AddDaprSecretStore(
{
Store = store,
Client = client,
- SidecarWaitTimeout = sidecarWaitTimeout
+ SidecarWaitTimeout = sidecarWaitTimeout,
+ IsOptional = optional
};
if (keyDelimiters != null)
@@ -218,4 +236,4 @@ public static IConfigurationBuilder AddDaprSecretStore(
/// The .
public static IConfigurationBuilder AddDaprSecretStore(this IConfigurationBuilder configurationBuilder, Action configureSource)
=> configurationBuilder.Add(configureSource);
-}
\ No newline at end of file
+}
diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs
index 31aa5b1fc..85ab2c489 100644
--- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs
+++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs
@@ -24,7 +24,7 @@ namespace Dapr.Extensions.Configuration.DaprSecretStore;
///
/// A Dapr Secret Store based .
///
-internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider
+internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider, IDisposable
{
internal static readonly TimeSpan DefaultSidecarWaitTimeout = TimeSpan.FromSeconds(5);
@@ -42,6 +42,10 @@ internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider
private readonly TimeSpan sidecarWaitTimeout;
+ private readonly bool isOptional;
+
+ private readonly CancellationTokenSource cts = new();
+
///
/// Creates a new instance of .
///
@@ -83,13 +87,15 @@ public DaprSecretStoreConfigurationProvider(
/// The secrets to retrieve.
/// Dapr client used to retrieve Secrets
/// The used to configure the timeout waiting for Dapr.
+ /// When true, does not block startup waiting for the sidecar.
public DaprSecretStoreConfigurationProvider(
string store,
bool normalizeKey,
IList? keyDelimiters,
IEnumerable secretDescriptors,
DaprClient client,
- TimeSpan sidecarWaitTimeout)
+ TimeSpan sidecarWaitTimeout,
+ bool isOptional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors));
@@ -106,6 +112,7 @@ public DaprSecretStoreConfigurationProvider(
this.secretDescriptors = secretDescriptors;
this.client = client;
this.sidecarWaitTimeout = sidecarWaitTimeout;
+ this.isOptional = isOptional;
}
///
@@ -149,13 +156,15 @@ public DaprSecretStoreConfigurationProvider(
/// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used.
/// Dapr client used to retrieve Secrets
/// The used to configure the timeout waiting for Dapr.
+ /// When true, does not block startup waiting for the sidecar.
public DaprSecretStoreConfigurationProvider(
string store,
bool normalizeKey,
IList? keyDelimiters,
IReadOnlyDictionary? metadata,
DaprClient client,
- TimeSpan sidecarWaitTimeout)
+ TimeSpan sidecarWaitTimeout,
+ bool isOptional = false)
{
ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store));
ArgumentVerifier.ThrowIfNull(client, nameof(client));
@@ -166,6 +175,14 @@ public DaprSecretStoreConfigurationProvider(
this.metadata = metadata;
this.client = client;
this.sidecarWaitTimeout = sidecarWaitTimeout;
+ this.isOptional = isOptional;
+ }
+
+ ///
+ public void Dispose()
+ {
+ cts.Cancel();
+ cts.Dispose();
}
private string NormalizeKey(string key)
@@ -185,18 +202,72 @@ private string NormalizeKey(string key)
/// Loads the configuration by calling the asynchronous LoadAsync method and blocking the calling
/// thread until the operation is completed.
///
- public override void Load() => LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult();
+ public override void Load()
+ {
+ if (isOptional)
+ {
+ Data = new Dictionary(StringComparer.OrdinalIgnoreCase);
+ _ = Task.Run(() => LoadInBackgroundAsync());
+ }
+ else
+ {
+ LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult();
+ }
+ }
- private async Task LoadAsync()
+ private async Task LoadInBackgroundAsync()
{
- var data = new Dictionary(StringComparer.InvariantCultureIgnoreCase);
+ while (!cts.Token.IsCancellationRequested)
+ {
+ try
+ {
+ using var tokenSource = new CancellationTokenSource(sidecarWaitTimeout);
+ using var linked = CancellationTokenSource.CreateLinkedTokenSource(tokenSource.Token, cts.Token);
+ await client.WaitForSidecarAsync(linked.Token);
+
+ await FetchSecretsAsync();
+ OnReload();
+ return;
+ }
+ catch (OperationCanceledException) when (cts.Token.IsCancellationRequested)
+ {
+ return;
+ }
+ catch (OperationCanceledException)
+ {
+ // Sidecar wait timed out — retry after delay.
+ }
+ catch (DaprException)
+ {
+ // Transient Dapr error — retry after delay.
+ }
+
+ try
+ {
+ await Task.Delay(sidecarWaitTimeout, cts.Token);
+ }
+ catch (OperationCanceledException)
+ {
+ return;
+ }
+ }
+ }
+ private async Task LoadAsync()
+ {
// Wait for the Dapr Sidecar to report healthy before attempting to fetch secrets.
using (var tokenSource = new CancellationTokenSource(sidecarWaitTimeout))
{
await client.WaitForSidecarAsync(tokenSource.Token);
}
+ await FetchSecretsAsync();
+ }
+
+ private async Task FetchSecretsAsync()
+ {
+ var data = new Dictionary(StringComparer.OrdinalIgnoreCase);
+
if (secretDescriptors != null)
{
foreach (var secretDescriptor in secretDescriptors)
diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs
index de73c8518..d21dd4158 100644
--- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs
+++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs
@@ -59,6 +59,13 @@ public class DaprSecretStoreConfigurationSource : IConfigurationSource
///
public TimeSpan? SidecarWaitTimeout { get; set; }
+ ///
+ /// Gets or sets a value indicating whether this configuration source is optional.
+ /// When true, the provider will not block startup waiting for the Dapr sidecar and will
+ /// instead load secrets in the background once the sidecar becomes available.
+ ///
+ public bool IsOptional { get; set; }
+
///
public IConfigurationProvider Build(IConfigurationBuilder builder)
{
@@ -69,11 +76,11 @@ public IConfigurationProvider Build(IConfigurationBuilder builder)
throw new ArgumentException($"{nameof(Metadata)} must be null when {nameof(SecretDescriptors)} is set", nameof(Metadata));
}
- return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, SecretDescriptors, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout);
+ return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, SecretDescriptors, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout, IsOptional);
}
else
{
- return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, Metadata, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout);
+ return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, Metadata, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout, IsOptional);
}
}
}
\ No newline at end of file
diff --git a/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs b/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs
index 3488da86c..061371aef 100644
--- a/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs
+++ b/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs
@@ -92,7 +92,11 @@ public DaprHarnessBuilder WithEnvironment(DaprTestEnvironment environment)
/// Builds a distributed lock harness.
///
public DistributedLockHarness BuildDistributedLock() => new(_componentsDirectory, _startApp, _options, _environment);
-
+
+ ///
+ /// Builds a secret store harness.
+ ///
+ public SecretStoreHarness BuildSecretStore() => new(_componentsDirectory, _startApp, _options, _environment);
///
/// Builds a conversation harness.
///
diff --git a/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs b/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs
new file mode 100644
index 000000000..9afd20d48
--- /dev/null
+++ b/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs
@@ -0,0 +1,88 @@
+// ------------------------------------------------------------------------
+// Copyright 2025 The Dapr Authors
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ------------------------------------------------------------------------
+
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using Dapr.Testcontainers.Common.Options;
+
+namespace Dapr.Testcontainers.Harnesses;
+
+///
+/// Provides an implementation harness for Dapr's secret store building block using a local file-based secret store.
+///
+public sealed class SecretStoreHarness : BaseHarness
+{
+ private readonly string componentsDir;
+
+ ///
+ /// The name of the secret store component.
+ ///
+ public const string SecretStoreComponentName = "localsecretstore";
+
+ ///
+ /// Provides an implementation harness for Dapr's secret store building block.
+ ///
+ /// The directory to Dapr components.
+ /// The test app to validate in the harness.
+ /// The Dapr runtime options.
+ /// The isolated environment instance.
+ public SecretStoreHarness(string componentsDir, System.Func? startApp, DaprRuntimeOptions options, DaprTestEnvironment? environment = null) : base(componentsDir, startApp, options, environment)
+ {
+ this.componentsDir = componentsDir;
+ }
+
+ ///
+ protected override Task OnInitializeAsync(CancellationToken cancellationToken)
+ {
+ WriteSecretsFile(componentsDir);
+ WriteComponentYaml(componentsDir);
+ return Task.CompletedTask;
+ }
+
+ ///
+ /// Writes the secrets JSON file to the specified directory.
+ ///
+ public static void WriteSecretsFile(string folderPath, string fileName = "secrets.json")
+ {
+ Directory.CreateDirectory(folderPath);
+ var fullPath = Path.Combine(folderPath, fileName);
+ File.WriteAllText(fullPath, @"{
+ ""secret1"": ""value1"",
+ ""secret2"": ""value2""
+}");
+ }
+
+ ///
+ /// Writes the component YAML file to the specified directory.
+ ///
+ public static void WriteComponentYaml(string folderPath, string fileName = "secretstore.yaml")
+ {
+ Directory.CreateDirectory(folderPath);
+ var fullPath = Path.Combine(folderPath, fileName);
+ File.WriteAllText(fullPath, $@"apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: {SecretStoreComponentName}
+ namespace: default
+spec:
+ type: secretstores.local.file
+ version: v1
+ metadata:
+ - name: secretsFile
+ value: /components/secrets.json
+ - name: nestedSeparator
+ value: "":""
+");
+ }
+}
diff --git a/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs b/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs
index 3042323e6..2c1d1dfd8 100644
--- a/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs
+++ b/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs
@@ -1,10 +1,13 @@
using System;
using System.Collections.Generic;
using System.Net;
+using System.Threading;
using System.Threading.Tasks;
using Dapr.Client;
using Grpc.Net.Client;
using Microsoft.Extensions.Configuration;
+using Moq;
+using Shouldly;
using Xunit;
using Autogenerated = Dapr.Client.Autogen.Grpc.v1;
@@ -187,6 +190,162 @@ private async Task SendResponseWithConfiguration(Dictionary();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ Task.Delay(Timeout.Infinite, ct));
+
+ var config = new ConfigurationBuilder()
+ .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true)
+ .Build();
+
+ // Build() should succeed immediately with no values
+ config["anyKey"].ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task TestConfigurationStore_OptionalAndSidecarBecomesAvailable_PopulatesConfig()
+ {
+ var callCount = 0;
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ {
+ var current = Interlocked.Increment(ref callCount);
+ if (current <= 1)
+ {
+ return Task.Delay(Timeout.Infinite, ct);
+ }
+ return Task.CompletedTask;
+ });
+
+ var configResponse = new GetConfigurationResponse(
+ new Dictionary
+ {
+ ["testKey"] = new ConfigurationItem("testValue", "v1", null)
+ });
+
+ daprClient
+ .Setup(c => c.GetConfiguration(
+ "store",
+ It.IsAny>(),
+ It.IsAny>(),
+ It.IsAny()))
+ .ReturnsAsync(configResponse);
+
+ var config = new ConfigurationBuilder()
+ .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true)
+ .Build();
+
+ // Initially empty
+ config["testKey"].ShouldBeNull();
+
+ // Wait for the reload token to fire, indicating background load completed
+ var reloaded = new TaskCompletionSource();
+ config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null);
+ await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ config["testKey"].ShouldBe("testValue");
+ }
+
+ [Fact]
+ public async Task TestConfigurationStore_OptionalAndFetchThrowsTransientError_RetriesAndSucceeds()
+ {
+ var callCount = 0;
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(Task.CompletedTask);
+
+ var configResponse = new GetConfigurationResponse(
+ new Dictionary
+ {
+ ["testKey"] = new ConfigurationItem("testValue", "v1", null)
+ });
+
+ daprClient
+ .Setup(c => c.GetConfiguration(
+ "store",
+ It.IsAny>(),
+ It.IsAny>(),
+ It.IsAny()))
+ .Returns(() =>
+ {
+ var current = Interlocked.Increment(ref callCount);
+ if (current <= 1)
+ {
+ throw new DaprException("transient error");
+ }
+ return Task.FromResult(configResponse);
+ });
+
+ var config = new ConfigurationBuilder()
+ .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true)
+ .Build();
+
+ // Initially empty
+ config["testKey"].ShouldBeNull();
+
+ // Wait for the reload token to fire after retry succeeds
+ var reloaded = new TaskCompletionSource();
+ config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null);
+ await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ config["testKey"].ShouldBe("testValue");
+ }
+
+ [Fact]
+ public async Task TestConfigurationStore_OptionalAndDisposed_ExitsCleanly()
+ {
+ var waitCalled = new TaskCompletionSource();
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ {
+ waitCalled.TrySetResult(true);
+ return Task.Delay(Timeout.Infinite, ct);
+ });
+
+ var config = new ConfigurationBuilder()
+ .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true)
+ .Build();
+
+ // Ensure background task has started
+ await waitCalled.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ // Dispose the provider to cancel the background task
+ (config as IDisposable)?.Dispose();
+
+ // Verify the mock was called with a token that is now cancelled
+ daprClient.Verify(c => c.WaitForSidecarAsync(It.IsAny()), Times.AtLeastOnce());
+ config["anyKey"].ShouldBeNull();
+ }
+
+ [Fact]
+ public void TestStreamingConfigurationStore_OptionalAndSidecarUnavailable_ReturnsEmptyConfig()
+ {
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ Task.Delay(Timeout.Infinite, ct));
+
+ var config = new ConfigurationBuilder()
+ .AddStreamingDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true)
+ .Build();
+
+ config["anyKey"].ShouldBeNull();
+ }
+
private async Task SendStreamingResponseWithConfiguration(Dictionary items, TestHttpClient.Entry entry)
{
var streamResponse = new Autogenerated.SubscribeConfigurationResponse();
diff --git a/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs b/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs
index 53cb4fc6c..c6453ef08 100644
--- a/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs
+++ b/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs
@@ -14,6 +14,7 @@
using System;
using System.Collections.Generic;
using System.Net;
+using System.Threading;
using System.Threading.Tasks;
using Dapr.Client;
using Grpc.Net.Client;
@@ -897,6 +898,166 @@ public void LoadSecrets_FailsIfSidecarNotAvailable()
.Build());
}
+ [Fact]
+ public void LoadSecrets_OptionalAndSidecarUnavailable_ReturnsEmptyConfig()
+ {
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ Task.Delay(Timeout.Infinite, ct));
+
+ var config = CreateBuilder()
+ .AddDaprSecretStore("store", daprClient.Object, optional: true)
+ .Build();
+
+ // Build() should succeed immediately with no values
+ config["anyKey"].ShouldBeNull();
+ }
+
+ [Fact]
+ public async Task LoadSecrets_OptionalAndSidecarBecomesAvailable_PopulatesConfig()
+ {
+ var callCount = 0;
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ {
+ var current = Interlocked.Increment(ref callCount);
+ if (current <= 1)
+ {
+ // First call: simulate sidecar not ready by waiting until timeout cancels
+ return Task.Delay(Timeout.Infinite, ct);
+ }
+ // Subsequent calls: sidecar is ready
+ return Task.CompletedTask;
+ });
+
+ daprClient
+ .Setup(c => c.GetBulkSecretAsync("store", null, default))
+ .ReturnsAsync(new Dictionary>
+ {
+ ["secret1"] = new Dictionary { ["secret1"] = "value1" }
+ });
+
+ var config = CreateBuilder()
+ .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true)
+ .Build();
+
+ // Initially empty
+ config["secret1"].ShouldBeNull();
+
+ // Wait for the reload token to fire, indicating background load completed
+ var reloaded = new TaskCompletionSource();
+ config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null);
+ await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ config["secret1"].ShouldBe("value1");
+ }
+
+ [Fact]
+ public async Task LoadSecrets_OptionalWithDescriptors_PopulatesConfig()
+ {
+ var storeName = "store";
+ var secretKey = "mySecret";
+ var secretValue = "myValue";
+
+ var daprClient = new Mock();
+ // Sidecar ready immediately
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(Task.CompletedTask);
+
+ daprClient
+ .Setup(c => c.GetSecretAsync(storeName, secretKey, It.IsAny>(), default))
+ .ReturnsAsync(new Dictionary { { secretKey, secretValue } });
+
+ var secretDescriptors = new[] { new DaprSecretDescriptor(secretKey) };
+
+ var config = CreateBuilder()
+ .AddDaprSecretStore(storeName, secretDescriptors, daprClient.Object, TimeSpan.FromSeconds(1), optional: true)
+ .Build();
+
+ // Wait for the reload token to fire, indicating background load completed
+ var reloaded = new TaskCompletionSource();
+ config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null);
+ await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ config[secretKey].ShouldBe(secretValue);
+ }
+
+ [Fact]
+ public async Task LoadSecrets_OptionalAndFetchThrowsTransientError_RetriesAndSucceeds()
+ {
+ var callCount = 0;
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(Task.CompletedTask);
+
+ daprClient
+ .Setup(c => c.GetBulkSecretAsync("store", null, default))
+ .Returns(() =>
+ {
+ var current = Interlocked.Increment(ref callCount);
+ if (current <= 1)
+ {
+ throw new DaprException("transient error");
+ }
+ return Task.FromResult>>(
+ new Dictionary>
+ {
+ ["secret1"] = new Dictionary { ["secret1"] = "value1" }
+ });
+ });
+
+ var config = CreateBuilder()
+ .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true)
+ .Build();
+
+ // Initially empty
+ config["secret1"].ShouldBeNull();
+
+ // Wait for the reload token to fire after retry succeeds
+ var reloaded = new TaskCompletionSource();
+ config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null);
+ await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ config["secret1"].ShouldBe("value1");
+ }
+
+ [Fact]
+ public async Task LoadSecrets_OptionalAndDisposed_ExitsCleanly()
+ {
+ var waitCalled = new TaskCompletionSource();
+
+ var daprClient = new Mock();
+ daprClient
+ .Setup(c => c.WaitForSidecarAsync(It.IsAny()))
+ .Returns(ct =>
+ {
+ waitCalled.TrySetResult(true);
+ return Task.Delay(Timeout.Infinite, ct);
+ });
+
+ var config = CreateBuilder()
+ .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromSeconds(1), optional: true)
+ .Build();
+
+ // Ensure background task has started
+ await waitCalled.Task.WaitAsync(TimeSpan.FromSeconds(5));
+
+ // Dispose the provider to cancel the background task
+ (config as IDisposable)?.Dispose();
+
+ // Verify the mock was called with a token that is now cancelled
+ daprClient.Verify(c => c.WaitForSidecarAsync(It.IsAny()), Times.AtLeastOnce());
+ config["anyKey"].ShouldBeNull();
+ }
+
private IConfigurationBuilder CreateBuilder()
{
return new ConfigurationBuilder();
diff --git a/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj b/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj
new file mode 100644
index 000000000..d48bd6fef
--- /dev/null
+++ b/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj
@@ -0,0 +1,29 @@
+
+
+
+ enable
+ enable
+ false
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs b/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs
new file mode 100644
index 000000000..4afa58879
--- /dev/null
+++ b/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs
@@ -0,0 +1,129 @@
+using Dapr.Client;
+using Dapr.Extensions.Configuration;
+using Dapr.Testcontainers.Common;
+using Dapr.Testcontainers.Harnesses;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Primitives;
+
+namespace Dapr.IntegrationTest.Configuration;
+
+public sealed class SecretStoreOptionalTests
+{
+ [Fact]
+ public async Task ShouldPopulateSecretsWhenSidecarStartsLate()
+ {
+ var componentsDir = TestDirectoryManager.CreateTestDirectory("secretstore-components");
+
+ await using var environment = await DaprTestEnvironment.CreateWithPooledNetworkAsync(cancellationToken: TestContext.Current.CancellationToken);
+ await environment.StartAsync(TestContext.Current.CancellationToken);
+
+ var harness = new DaprHarnessBuilder(componentsDir)
+ .WithEnvironment(environment)
+ .BuildSecretStore();
+
+ var httpPort = PortUtilities.GetAvailablePort();
+ var grpcPort = PortUtilities.GetAvailablePort();
+ harness.SetPorts(httpPort, grpcPort);
+
+ // Write component files before harness init (harness also writes them, but we need them for the client)
+ SecretStoreHarness.WriteSecretsFile(componentsDir);
+ SecretStoreHarness.WriteComponentYaml(componentsDir);
+
+ using var client = new DaprClientBuilder()
+ .UseHttpEndpoint($"http://localhost:{httpPort}")
+ .UseGrpcEndpoint($"http://localhost:{grpcPort}")
+ .Build();
+
+ var config = new ConfigurationBuilder()
+ .AddDaprSecretStore(
+ SecretStoreHarness.SecretStoreComponentName,
+ client,
+ TimeSpan.FromSeconds(2),
+ optional: true)
+ .Build();
+
+ // Sidecar not running yet — config should be empty.
+ Assert.Null(config["secret1"]);
+
+ // Register reload callback before starting the sidecar.
+ var reloaded = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
+ ChangeToken.OnChange(config.GetReloadToken, () => reloaded.TrySetResult());
+
+ // Start the sidecar on the pre-assigned ports.
+ await harness.InitializeAsync(TestContext.Current.CancellationToken);
+
+ // Wait for the background loader to populate config.
+ using var timeoutCts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
+ await reloaded.Task.WaitAsync(timeoutCts.Token).WaitAsync(TestContext.Current.CancellationToken);
+
+ Assert.Equal("value1", config["secret1"]);
+ Assert.Equal("value2", config["secret2"]);
+
+ await harness.DisposeAsync();
+ }
+
+ [Fact]
+ public async Task ShouldBlockAndPopulateSecretsWhenNotOptional()
+ {
+ var componentsDir = TestDirectoryManager.CreateTestDirectory("secretstore-components");
+
+ await using var environment = await DaprTestEnvironment.CreateWithPooledNetworkAsync(cancellationToken: TestContext.Current.CancellationToken);
+ await environment.StartAsync(TestContext.Current.CancellationToken);
+
+ var harness = new DaprHarnessBuilder(componentsDir)
+ .WithEnvironment(environment)
+ .BuildSecretStore();
+
+ await harness.InitializeAsync(TestContext.Current.CancellationToken);
+
+ using var client = new DaprClientBuilder()
+ .UseHttpEndpoint($"http://localhost:{harness.DaprHttpPort}")
+ .UseGrpcEndpoint($"http://localhost:{harness.DaprGrpcPort}")
+ .Build();
+
+ // optional defaults to false, so Build() blocks until sidecar responds.
+ var config = new ConfigurationBuilder()
+ .AddDaprSecretStore(
+ SecretStoreHarness.SecretStoreComponentName,
+ client,
+ TimeSpan.FromSeconds(30))
+ .Build();
+
+ Assert.Equal("value1", config["secret1"]);
+ Assert.Equal("value2", config["secret2"]);
+
+ await harness.DisposeAsync();
+ }
+
+ [Fact]
+ public async Task ShouldExitCleanlyWhenDisposedDuringBackgroundLoad()
+ {
+ // Pick free ports — no sidecar will run on them.
+ var httpPort = PortUtilities.GetAvailablePort();
+ var grpcPort = PortUtilities.GetAvailablePort();
+
+ using var client = new DaprClientBuilder()
+ .UseHttpEndpoint($"http://localhost:{httpPort}")
+ .UseGrpcEndpoint($"http://localhost:{grpcPort}")
+ .Build();
+
+ var config = new ConfigurationBuilder()
+ .AddDaprSecretStore(
+ SecretStoreHarness.SecretStoreComponentName,
+ client,
+ TimeSpan.FromMilliseconds(500),
+ optional: true)
+ .Build();
+
+ // Config should be empty since there's no sidecar.
+ Assert.Null(config["secret1"]);
+
+ // Dispose immediately to trigger cancellation of the background task.
+ (config as IDisposable)?.Dispose();
+
+ // Allow background task to process cancellation.
+ await Task.Delay(200, TestContext.Current.CancellationToken);
+
+ // Test completes within xunit default timeout — no hang.
+ }
+}