From b75f51b7b4e8e1dce9ee7ef8dc763841da48823d Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 16 Apr 2026 10:00:29 +0000
Subject: [PATCH 1/3] feat: Add Dapr.SecretsManagement projects (Abstractions,
Runtime, Generators, Aggregator, Tests, Example)
Implements #1510 - Migrates secret management into a purpose-specific client.
Projects created:
- Dapr.SecretsManagement.Abstractions: SecretStoreAttribute, SecretAttribute
- Dapr.SecretsManagement.Runtime: gRPC client, builder, DI extensions
- Dapr.SecretsManagement.Generators: Source generator for typed secret stores
- Dapr.SecretsManagement: Aggregator meta-project (NoTargets)
- Dapr.SecretsManagement.Runtime.Test: Unit tests
- examples/SecretManagement: Demo project
Agent-Logs-Url: https://github.com/dapr/dotnet-sdk/sessions/db970aa7-6b0c-450f-93f9-878185757985
Co-authored-by: WhitWaldo <2238529+WhitWaldo@users.noreply.github.com>
---
.github/workflows/sdk_build.yml | 3 +-
all.sln | 986 +++++++++++++++++-
examples/SecretManagement/README.md | 36 +
.../SecretManagementSample/IMyVaultSecrets.cs | 40 +
.../SecretManagementSample/Program.cs | 66 ++
.../Properties/launchSettings.json | 13 +
.../SecretManagementSample.csproj | 29 +
src/Dapr.Common/AssemblyInfo.cs | 2 +
...Dapr.SecretsManagement.Abstractions.csproj | 8 +
.../SecretAttribute.cs | 56 +
.../SecretStoreAttribute.cs | 68 ++
.../WellKnownSecrets.cs | 30 +
.../Dapr.SecretsManagement.Generators.csproj | 23 +
.../KnownSymbols.cs | 23 +
.../SecretStoreSourceGenerator.cs | 289 +++++
.../AssemblyInfo.cs | 16 +
.../Dapr.SecretsManagement.Runtime.csproj | 21 +
.../DaprSecretsManagementClient.cs | 120 +++
.../DaprSecretsManagementClientBuilder.cs | 37 +
.../DaprSecretsManagementGrpcClient.cs | 137 +++
.../DaprSecretsManagementBuilder.cs | 28 +
...tsManagementServiceCollectionExtensions.cs | 39 +
.../IDaprSecretsManagementBuilder.cs | 22 +
.../Dapr.SecretsManagement.csproj | 181 ++++
...Dapr.SecretsManagement.Runtime.Test.csproj | 29 +
...DaprSecretsManagementClientBuilderTests.cs | 101 ++
.../DaprSecretsManagementGrpcClientTests.cs | 100 ++
...agementServiceCollectionExtensionsTests.cs | 54 +
28 files changed, 2516 insertions(+), 41 deletions(-)
create mode 100644 examples/SecretManagement/README.md
create mode 100644 examples/SecretManagement/SecretManagementSample/IMyVaultSecrets.cs
create mode 100644 examples/SecretManagement/SecretManagementSample/Program.cs
create mode 100644 examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
create mode 100644 examples/SecretManagement/SecretManagementSample/SecretManagementSample.csproj
create mode 100644 src/Dapr.SecretsManagement.Abstractions/Dapr.SecretsManagement.Abstractions.csproj
create mode 100644 src/Dapr.SecretsManagement.Abstractions/SecretAttribute.cs
create mode 100644 src/Dapr.SecretsManagement.Abstractions/SecretStoreAttribute.cs
create mode 100644 src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
create mode 100644 src/Dapr.SecretsManagement.Generators/Dapr.SecretsManagement.Generators.csproj
create mode 100644 src/Dapr.SecretsManagement.Generators/KnownSymbols.cs
create mode 100644 src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/AssemblyInfo.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/Dapr.SecretsManagement.Runtime.csproj
create mode 100644 src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClient.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClientBuilder.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementGrpcClient.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementBuilder.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementServiceCollectionExtensions.cs
create mode 100644 src/Dapr.SecretsManagement.Runtime/IDaprSecretsManagementBuilder.cs
create mode 100644 src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
create mode 100644 test/Dapr.SecretsManagement.Runtime.Test/Dapr.SecretsManagement.Runtime.Test.csproj
create mode 100644 test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementClientBuilderTests.cs
create mode 100644 test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementGrpcClientTests.cs
create mode 100644 test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementServiceCollectionExtensionsTests.cs
diff --git a/.github/workflows/sdk_build.yml b/.github/workflows/sdk_build.yml
index 7ae053aa1..9da2e1985 100644
--- a/.github/workflows/sdk_build.yml
+++ b/.github/workflows/sdk_build.yml
@@ -356,7 +356,8 @@ jobs:
files=$(ls packages/*.nupkg | jq -R -s -c '
split("\n")[:-1]
| map(select(
- (test("/Dapr\\.Workflow\\.Versioning\\.(Abstractions|Generators|Runtime)\\.")) | not
+ ((test("/Dapr\\.Workflow\\.Versioning\\.(Abstractions|Generators|Runtime)\\.")) | not) and
+ ((test("/Dapr\\.SecretsManagement\\.(Abstractions|Generators|Runtime)\\.")) | not)
))
')
echo "matrix=$files" >> $GITHUB_OUTPUT
diff --git a/all.sln b/all.sln
index 8c15f50b6..17ed3355f 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
@@ -253,437 +254,1344 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Crypto
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Actors", "test\Dapr.IntegrationTest.Actors\Dapr.IntegrationTest.Actors.csproj", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.SecretsManagement.Abstractions", "src\Dapr.SecretsManagement.Abstractions\Dapr.SecretsManagement.Abstractions.csproj", "{366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.SecretsManagement.Runtime", "src\Dapr.SecretsManagement.Runtime\Dapr.SecretsManagement.Runtime.csproj", "{F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.SecretsManagement.Generators", "src\Dapr.SecretsManagement.Generators\Dapr.SecretsManagement.Generators.csproj", "{B42DD6AA-255C-4606-8A1B-263B26650DED}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.SecretsManagement", "src\Dapr.SecretsManagement\Dapr.SecretsManagement.csproj", "{1BECAC48-1C83-43D2-A91F-9AFA634A68C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.SecretsManagement.Runtime.Test", "test\Dapr.SecretsManagement.Runtime.Test\Dapr.SecretsManagement.Runtime.Test.csproj", "{87842296-C78B-42B9-8E96-5054E79CD700}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SecretManagement", "SecretManagement", "{929A8AD2-DB45-B92A-7930-EBDD2DBAF802}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecretManagementSample", "examples\SecretManagement\SecretManagementSample\SecretManagementSample.csproj", "{ED74B33F-3CE7-42EB-BAA1-623F43900B15}"
+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
{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}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Debug|x64.Build.0 = Debug|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Debug|x86.Build.0 = Debug|Any CPU
{01A20A89-53A1-4D5B-B563-89E157718474}.Release|Any CPU.ActiveCfg = Release|Any CPU
{01A20A89-53A1-4D5B-B563-89E157718474}.Release|Any CPU.Build.0 = Release|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Release|x64.ActiveCfg = Release|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Release|x64.Build.0 = Release|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Release|x86.ActiveCfg = Release|Any CPU
+ {01A20A89-53A1-4D5B-B563-89E157718474}.Release|x86.Build.0 = Release|Any CPU
{7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|x64.Build.0 = Debug|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Debug|x86.Build.0 = Debug|Any CPU
{7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|x64.ActiveCfg = Release|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|x64.Build.0 = Release|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|x86.ActiveCfg = Release|Any CPU
+ {7B14879F-156B-417E-ACA3-0B5A69CC2F39}.Release|x86.Build.0 = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.Build.0 = Debug|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.Build.0 = Debug|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.ActiveCfg = Release|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.Build.0 = Release|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.ActiveCfg = Release|Any CPU
+ {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.Build.0 = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|x64.Build.0 = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Debug|x86.Build.0 = Debug|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|x64.ActiveCfg = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|x64.Build.0 = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|x86.ActiveCfg = Release|Any CPU
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E}.Release|x86.Build.0 = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|x64.Build.0 = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Debug|x86.Build.0 = Debug|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|x64.ActiveCfg = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|x64.Build.0 = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|x86.ActiveCfg = Release|Any CPU
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2}.Release|x86.Build.0 = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|x64.Build.0 = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Debug|x86.Build.0 = Debug|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|x64.ActiveCfg = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|x64.Build.0 = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|x86.ActiveCfg = Release|Any CPU
+ {B42DD6AA-255C-4606-8A1B-263B26650DED}.Release|x86.Build.0 = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|x64.Build.0 = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Debug|x86.Build.0 = Debug|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|x64.ActiveCfg = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|x64.Build.0 = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|x86.ActiveCfg = Release|Any CPU
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7}.Release|x86.Build.0 = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|x64.Build.0 = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Debug|x86.Build.0 = Debug|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|x64.ActiveCfg = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|x64.Build.0 = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|x86.ActiveCfg = Release|Any CPU
+ {87842296-C78B-42B9-8E96-5054E79CD700}.Release|x86.Build.0 = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|x64.Build.0 = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Debug|x86.Build.0 = Debug|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|x64.ActiveCfg = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|x64.Build.0 = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|x86.ActiveCfg = Release|Any CPU
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
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}
@@ -696,7 +1604,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}
@@ -709,9 +1622,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}
@@ -720,18 +1637,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}
@@ -746,40 +1671,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}
@@ -798,6 +1697,13 @@ Global
{01A20A89-53A1-4D5B-B563-89E157718474} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
{7B14879F-156B-417E-ACA3-0B5A69CC2F39} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890} = {8462B106-175A-423A-BA94-BE0D39D0BD8E}
+ {366FA402-B13D-4EE2-9BA4-A0C3134C6C6E} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {F99CE5A1-FDA1-415C-B1E6-C8787734ACD2} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {B42DD6AA-255C-4606-8A1B-263B26650DED} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {1BECAC48-1C83-43D2-A91F-9AFA634A68C7} = {27C5D71D-0721-4221-9286-B94AB07B58CF}
+ {87842296-C78B-42B9-8E96-5054E79CD700} = {DD020B34-460F-455F-8D17-CF4A949F100B}
+ {929A8AD2-DB45-B92A-7930-EBDD2DBAF802} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78}
+ {ED74B33F-3CE7-42EB-BAA1-623F43900B15} = {929A8AD2-DB45-B92A-7930-EBDD2DBAF802}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {65220BF2-EAE1-4CB2-AA58-EBE80768CB40}
diff --git a/examples/SecretManagement/README.md b/examples/SecretManagement/README.md
new file mode 100644
index 000000000..f9c09f6f9
--- /dev/null
+++ b/examples/SecretManagement/README.md
@@ -0,0 +1,36 @@
+# Dapr Secrets Management Sample
+
+This sample demonstrates how to use the Dapr Secrets Management SDK to retrieve secrets from Dapr secret store components.
+
+## Features Demonstrated
+
+1. **Direct secret retrieval** — Using `DaprSecretsManagementClient` to fetch individual or bulk secrets via gRPC.
+2. **Typed secret stores** — Using the `[SecretStore]` and `[Secret]` attributes with the source generator to create strongly-typed secret accessors.
+3. **Dependency injection** — Registering the secrets client and typed stores via `IServiceCollection` extensions.
+
+## Prerequisites
+
+- [Dapr CLI](https://docs.dapr.io/getting-started/install-dapr-cli/)
+- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
+- A configured Dapr secret store component (e.g., local file, Kubernetes secrets, Azure Key Vault)
+
+## Running the Sample
+
+```bash
+dapr run --app-id secret-sample --app-port 5234 -- dotnet run
+```
+
+## Endpoints
+
+| Method | Path | Description |
+|--------|------|-------------|
+| GET | `/secrets/{storeName}/{key}` | Retrieve a single secret by key |
+| GET | `/secrets/{storeName}` | Retrieve all secrets from a store |
+
+## NuGet Package Note
+
+When consuming from NuGet, install the single **`Dapr.SecretsManagement`** package. The sub-projects (`Abstractions`, `Runtime`, `Generators`) are bundled into this one package and are not published individually.
+
+```xml
+
+```
diff --git a/examples/SecretManagement/SecretManagementSample/IMyVaultSecrets.cs b/examples/SecretManagement/SecretManagementSample/IMyVaultSecrets.cs
new file mode 100644
index 000000000..18eca9b68
--- /dev/null
+++ b/examples/SecretManagement/SecretManagementSample/IMyVaultSecrets.cs
@@ -0,0 +1,40 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.SecretsManagement.Abstractions;
+
+namespace SecretManagementSample;
+
+///
+/// Example of a typed secret store interface. Apply the to an interface
+/// and the Dapr Secrets Management source generator will produce:
+/// 1. A concrete implementation that caches secrets loaded at startup.
+/// 2. A DI registration extension method (e.g., AddMyVaultSecrets()).
+///
+/// Properties without use the property name as the secret key.
+/// Properties with use the specified secret name.
+///
+[SecretStore("my-vault")]
+public partial interface IMyVaultSecrets
+{
+ ///
+ /// The database connection string, retrieved from the "db-connection-string" secret key.
+ ///
+ [Secret("db-connection-string")]
+ string DatabaseConnection { get; }
+
+ ///
+ /// The API key. Uses the property name "ApiKey" as the secret key.
+ ///
+ string ApiKey { get; }
+}
diff --git a/examples/SecretManagement/SecretManagementSample/Program.cs b/examples/SecretManagement/SecretManagementSample/Program.cs
new file mode 100644
index 000000000..c8e8a3d45
--- /dev/null
+++ b/examples/SecretManagement/SecretManagementSample/Program.cs
@@ -0,0 +1,66 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.SecretsManagement;
+using Dapr.SecretsManagement.Extensions;
+
+var builder = WebApplication.CreateBuilder(args);
+
+// Register the Dapr Secrets Management client with dependency injection.
+// This makes DaprSecretsManagementClient available throughout the application.
+builder.Services.AddDaprSecretsManagementClient();
+
+// If you've defined a typed secret store interface with [SecretStore] and the source generator,
+// you can register it here. For example:
+//
+// builder.Services.AddDaprSecretsManagementClient()
+// .AddMyVaultSecrets(); // Generated extension method
+//
+// See IMyVaultSecrets.cs for the typed secret store interface definition.
+
+var app = builder.Build();
+
+// --- Example 1: Direct secret retrieval ---
+app.MapGet("/secrets/{storeName}/{key}", async (
+ string storeName,
+ string key,
+ DaprSecretsManagementClient secretsClient,
+ CancellationToken cancellationToken) =>
+{
+ var secret = await secretsClient.GetSecretAsync(storeName, key, cancellationToken: cancellationToken);
+ return Results.Ok(secret);
+});
+
+// --- Example 2: Bulk secret retrieval ---
+app.MapGet("/secrets/{storeName}", async (
+ string storeName,
+ DaprSecretsManagementClient secretsClient,
+ CancellationToken cancellationToken) =>
+{
+ var secrets = await secretsClient.GetBulkSecretAsync(storeName, cancellationToken: cancellationToken);
+ return Results.Ok(secrets);
+});
+
+// --- Example 3: Using typed secret store (source-generated) ---
+// If you have registered a typed secret store (see IMyVaultSecrets.cs), you can inject it directly:
+//
+// app.MapGet("/typed-secrets", (IMyVaultSecrets secrets) =>
+// {
+// return Results.Ok(new
+// {
+// DatabaseConnection = secrets.DatabaseConnection,
+// ApiKey = secrets.ApiKey
+// });
+// });
+
+app.Run();
diff --git a/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json b/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
new file mode 100644
index 000000000..c36e6a28f
--- /dev/null
+++ b/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
@@ -0,0 +1,13 @@
+{
+ "profiles": {
+ "SecretManagementSample": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "applicationUrl": "http://localhost:5234",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ }
+ }
+}
diff --git a/examples/SecretManagement/SecretManagementSample/SecretManagementSample.csproj b/examples/SecretManagement/SecretManagementSample/SecretManagementSample.csproj
new file mode 100644
index 000000000..50dc200bd
--- /dev/null
+++ b/examples/SecretManagement/SecretManagementSample/SecretManagementSample.csproj
@@ -0,0 +1,29 @@
+
+
+
+ net10.0
+ enable
+ enable
+
+
+ true
+ $(BaseIntermediateOutputPath)Generated
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Dapr.Common/AssemblyInfo.cs b/src/Dapr.Common/AssemblyInfo.cs
index 5875274af..612d2da6a 100644
--- a/src/Dapr.Common/AssemblyInfo.cs
+++ b/src/Dapr.Common/AssemblyInfo.cs
@@ -26,6 +26,7 @@
[assembly: InternalsVisibleTo("Dapr.Extensions.Configuration, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Workflow, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Workflow.Grpc, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
+[assembly: InternalsVisibleTo("Dapr.SecretsManagement.Runtime, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Actors.AspNetCore.IntegrationTest, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Actors.AspNetCore.IntegrationTest.App, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
@@ -49,3 +50,4 @@
[assembly: InternalsVisibleTo("Dapr.Extensions.Configuration.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Jobs.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
[assembly: InternalsVisibleTo("Dapr.Messaging.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
+[assembly: InternalsVisibleTo("Dapr.SecretsManagement.Runtime.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2")]
diff --git a/src/Dapr.SecretsManagement.Abstractions/Dapr.SecretsManagement.Abstractions.csproj b/src/Dapr.SecretsManagement.Abstractions/Dapr.SecretsManagement.Abstractions.csproj
new file mode 100644
index 000000000..abba95de4
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Abstractions/Dapr.SecretsManagement.Abstractions.csproj
@@ -0,0 +1,8 @@
+
+
+
+ enable
+ enable
+
+
+
diff --git a/src/Dapr.SecretsManagement.Abstractions/SecretAttribute.cs b/src/Dapr.SecretsManagement.Abstractions/SecretAttribute.cs
new file mode 100644
index 000000000..211d9256a
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Abstractions/SecretAttribute.cs
@@ -0,0 +1,56 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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.
+// ------------------------------------------------------------------------
+
+namespace Dapr.SecretsManagement.Abstractions;
+
+///
+/// Specifies the secret key name used when retrieving the value of the annotated property from a Dapr
+/// secret store. When this attribute is omitted, the property name is used as the secret key.
+///
+///
+/// This attribute should be applied to properties on an interface that is also annotated with
+/// . The source generator uses this metadata to map each property
+/// to the correct secret key during bulk secret retrieval.
+///
+///
+///
+/// [SecretStore("my-vault")]
+/// public partial interface IMySecrets
+/// {
+/// [Secret("database-connection-string")]
+/// string DbConnection { get; }
+/// }
+///
+///
+[AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
+public sealed class SecretAttribute : Attribute
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The name of the secret key in the Dapr secret store. This value is used when calling the
+ /// Dapr Secrets API to retrieve the secret value.
+ ///
+ /// Thrown when is .
+ public SecretAttribute(string secretName)
+ {
+ ArgumentNullException.ThrowIfNull(secretName);
+ SecretName = secretName;
+ }
+
+ ///
+ /// Gets the name of the secret key in the Dapr secret store.
+ ///
+ public string SecretName { get; }
+}
diff --git a/src/Dapr.SecretsManagement.Abstractions/SecretStoreAttribute.cs b/src/Dapr.SecretsManagement.Abstractions/SecretStoreAttribute.cs
new file mode 100644
index 000000000..7e8ab73cb
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Abstractions/SecretStoreAttribute.cs
@@ -0,0 +1,68 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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.
+// ------------------------------------------------------------------------
+
+namespace Dapr.SecretsManagement.Abstractions;
+
+///
+/// Marks an interface as a typed accessor for a Dapr secret store. When applied to a partial interface,
+/// the Dapr Secrets Management source generator will produce a concrete implementation that retrieves secrets
+/// from the specified Dapr secret store component and registers it in the dependency injection container.
+///
+///
+///
+/// The interface should declare -typed read-only properties. Each property maps to a
+/// single secret key in the store. The key name defaults to the property name but can be overridden with
+/// .
+///
+///
+/// Generated implementations load all mapped secrets in bulk at startup via an IHostedService and
+/// expose them as synchronous properties. This makes secrets available immediately after host startup without
+/// requiring callers to manage async flows.
+///
+///
+///
+/// [SecretStore("my-vault")]
+/// public partial interface IMySecrets
+/// {
+/// /// <summary>The database connection string.</summary>
+/// [Secret("db-connection-string")]
+/// string DatabaseConnection { get; }
+///
+/// /// <summary>The API key (uses property name as secret key).</summary>
+/// string ApiKey { get; }
+/// }
+///
+///
+///
+[AttributeUsage(AttributeTargets.Interface, Inherited = false, AllowMultiple = false)]
+public sealed class SecretStoreAttribute : Attribute
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ ///
+ /// The name of the Dapr secret store component to retrieve secrets from. This must match the
+ /// metadata.name of a configured Dapr secret store component.
+ ///
+ /// Thrown when is .
+ public SecretStoreAttribute(string storeName)
+ {
+ ArgumentNullException.ThrowIfNull(storeName);
+ StoreName = storeName;
+ }
+
+ ///
+ /// Gets the name of the Dapr secret store component that secrets will be retrieved from.
+ ///
+ public string StoreName { get; }
+}
diff --git a/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs b/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
new file mode 100644
index 000000000..3ca22eca8
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
@@ -0,0 +1,30 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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.
+// ------------------------------------------------------------------------
+
+namespace Dapr.SecretsManagement.Abstractions;
+
+///
+/// Well-known names and constants related to Dapr Secrets Management.
+///
+public static class WellKnownSecrets
+{
+ ///
+ /// The fully qualified name of .
+ ///
+ public const string SecretStoreAttributeFullName = "Dapr.SecretsManagement.Abstractions.SecretStoreAttribute";
+
+ ///
+ /// The fully qualified name of .
+ ///
+ public const string SecretAttributeFullName = "Dapr.SecretsManagement.Abstractions.SecretAttribute";
+}
diff --git a/src/Dapr.SecretsManagement.Generators/Dapr.SecretsManagement.Generators.csproj b/src/Dapr.SecretsManagement.Generators/Dapr.SecretsManagement.Generators.csproj
new file mode 100644
index 000000000..063de25a9
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Generators/Dapr.SecretsManagement.Generators.csproj
@@ -0,0 +1,23 @@
+
+
+
+
+ netstandard2.0
+ false
+ enable
+
+ true
+ true
+
+ Dapr.SecretsManagement
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
diff --git a/src/Dapr.SecretsManagement.Generators/KnownSymbols.cs b/src/Dapr.SecretsManagement.Generators/KnownSymbols.cs
new file mode 100644
index 000000000..b869974d9
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Generators/KnownSymbols.cs
@@ -0,0 +1,23 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Microsoft.CodeAnalysis;
+
+namespace Dapr.SecretsManagement;
+
+///
+/// Caches well-known Roslyn symbols used during source generation.
+///
+internal sealed record KnownSymbols(
+ INamedTypeSymbol? SecretStoreAttribute,
+ INamedTypeSymbol? SecretAttribute);
diff --git a/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs b/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
new file mode 100644
index 000000000..ac86d5fe5
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
@@ -0,0 +1,289 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Linq;
+using System.Text;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace Dapr.SecretsManagement;
+
+///
+/// Incremental source generator that discovers interfaces annotated with [SecretStore],
+/// reads their property mappings (including optional [Secret] attributes), and emits:
+///
+/// - A concrete implementation class that stores secret values retrieved from the Dapr secret store.
+/// - A DI registration extension method on IDaprSecretsManagementBuilder.
+///
+///
+[Generator(LanguageNames.CSharp)]
+public sealed class SecretStoreSourceGenerator : IIncrementalGenerator
+{
+ private const string SecretStoreAttributeFullName = "Dapr.SecretsManagement.Abstractions.SecretStoreAttribute";
+ private const string SecretAttributeFullName = "Dapr.SecretsManagement.Abstractions.SecretAttribute";
+
+ ///
+ public void Initialize(IncrementalGeneratorInitializationContext context)
+ {
+ // Cache the attribute symbols.
+ var known = context.CompilationProvider.Select((c, _) =>
+ new KnownSymbols(
+ SecretStoreAttribute: c.GetTypeByMetadataName(SecretStoreAttributeFullName),
+ SecretAttribute: c.GetTypeByMetadataName(SecretAttributeFullName)));
+
+ // Report diagnostic if the attribute types are not found.
+ context.RegisterSourceOutput(known, (spc, ks) =>
+ {
+ if (ks.SecretStoreAttribute is null)
+ {
+ spc.ReportDiagnostic(Diagnostic.Create(
+ new DiagnosticDescriptor(
+ "DAPRSEC001",
+ "SecretStore attribute not found",
+ "The source generator could not find the type '" + SecretStoreAttributeFullName +
+ "'. Ensure that Dapr.SecretsManagement.Abstractions is properly referenced.",
+ "Dapr.SecretsManagement",
+ DiagnosticSeverity.Warning,
+ isEnabledByDefault: true),
+ Location.None));
+ }
+ });
+
+ // Discover candidate interface declarations with at least one attribute.
+ var candidates = context.SyntaxProvider.CreateSyntaxProvider(
+ predicate: static (node, _) => node is InterfaceDeclarationSyntax ids && ids.AttributeLists.Count > 0,
+ transform: static (ctx, ct) =>
+ {
+ var interfaceSyntax = (InterfaceDeclarationSyntax)ctx.Node;
+ var symbol = ctx.SemanticModel.GetDeclaredSymbol(interfaceSyntax, ct);
+ return symbol as INamedTypeSymbol;
+ })
+ .Where(static s => s is not null)!;
+
+ // Combine candidates with known symbols and generate.
+ var combined = candidates.Combine(known);
+
+ context.RegisterSourceOutput(combined, (spc, pair) =>
+ {
+ var (interfaceSymbol, ks) = pair;
+ if (ks.SecretStoreAttribute is null || interfaceSymbol is null)
+ return;
+
+ // Check if the interface has [SecretStore] attribute.
+ var storeAttrData = interfaceSymbol.GetAttributes().FirstOrDefault(a =>
+ SymbolEqualityComparer.Default.Equals(a.AttributeClass, ks.SecretStoreAttribute));
+
+ if (storeAttrData is null)
+ return;
+
+ // Extract the store name from the constructor argument.
+ if (storeAttrData.ConstructorArguments.Length < 1 ||
+ storeAttrData.ConstructorArguments[0].Value is not string storeName)
+ return;
+
+ // Collect properties and their secret key mappings.
+ var properties = new List<(string PropertyName, string SecretKey, string PropertyType)>();
+
+ foreach (var member in interfaceSymbol.GetMembers())
+ {
+ if (member is not IPropertySymbol prop)
+ continue;
+
+ if (prop.GetMethod is null)
+ continue;
+
+ var secretKey = prop.Name;
+
+ // Check for [Secret("key")] override.
+ if (ks.SecretAttribute is not null)
+ {
+ var secretAttrData = prop.GetAttributes().FirstOrDefault(a =>
+ SymbolEqualityComparer.Default.Equals(a.AttributeClass, ks.SecretAttribute));
+
+ if (secretAttrData is not null &&
+ secretAttrData.ConstructorArguments.Length > 0 &&
+ secretAttrData.ConstructorArguments[0].Value is string overrideName)
+ {
+ secretKey = overrideName;
+ }
+ }
+
+ properties.Add((prop.Name, secretKey, prop.Type.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)));
+ }
+
+ if (properties.Count == 0)
+ return;
+
+ // Resolve naming.
+ var interfaceName = interfaceSymbol.Name;
+ var namespaceName = interfaceSymbol.ContainingNamespace.IsGlobalNamespace
+ ? null
+ : interfaceSymbol.ContainingNamespace.ToDisplayString();
+
+ // Implementation class name: strip leading 'I' from interface name, append "SecretStoreClient".
+ var implName = interfaceName.StartsWith("I", StringComparison.Ordinal) && interfaceName.Length > 1 && char.IsUpper(interfaceName[1])
+ ? interfaceName.Substring(1) + "SecretStoreClient"
+ : interfaceName + "SecretStoreClient";
+
+ var source = GenerateSource(
+ namespaceName, interfaceName, implName, storeName,
+ interfaceSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat),
+ properties);
+
+ var hintName = (namespaceName is not null ? namespaceName + "." : "") + implName + ".g.cs";
+ spc.AddSource(hintName, source);
+ });
+ }
+
+ private static string GenerateSource(
+ string? namespaceName,
+ string interfaceName,
+ string implName,
+ string storeName,
+ string fullyQualifiedInterfaceName,
+ List<(string PropertyName, string SecretKey, string PropertyType)> properties)
+ {
+ var sb = new StringBuilder();
+
+ sb.AppendLine("// ");
+ sb.AppendLine("#nullable enable");
+ sb.AppendLine();
+ sb.AppendLine("using System;");
+ sb.AppendLine("using System.CodeDom.Compiler;");
+ sb.AppendLine("using System.Collections.Generic;");
+ sb.AppendLine("using System.Threading;");
+ sb.AppendLine("using System.Threading.Tasks;");
+ sb.AppendLine("using Microsoft.Extensions.DependencyInjection;");
+ sb.AppendLine("using Microsoft.Extensions.Hosting;");
+ sb.AppendLine();
+
+ if (namespaceName is not null)
+ {
+ sb.AppendLine($"namespace {namespaceName}");
+ sb.AppendLine("{");
+ }
+
+ // 1. Implementation class
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" /// Auto-generated implementation of that retrieves secrets from the");
+ sb.AppendLine($" /// Dapr secret store component named {EscapeXml(storeName)}.");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" [GeneratedCode(\"Dapr.SecretsManagement.Generators\", \"1.0.0\")]");
+ sb.AppendLine($" internal sealed class {implName} : {fullyQualifiedInterfaceName}");
+ sb.AppendLine(" {");
+ sb.AppendLine(" private readonly Dictionary _secrets;");
+ sb.AppendLine();
+ sb.AppendLine($" internal {implName}(Dictionary secrets)");
+ sb.AppendLine(" {");
+ sb.AppendLine(" _secrets = secrets ?? throw new ArgumentNullException(nameof(secrets));");
+ sb.AppendLine(" }");
+ sb.AppendLine();
+
+ foreach (var (propName, secretKey, propType) in properties)
+ {
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" public {propType} {propName} =>");
+ sb.AppendLine($" _secrets.TryGetValue(\"{EscapeCSharpString(secretKey)}\", out var __{propName}Value)");
+ sb.AppendLine($" ? __{propName}Value");
+ sb.AppendLine($" : throw new KeyNotFoundException(\"Secret '{EscapeCSharpString(secretKey)}' was not found in store '{EscapeCSharpString(storeName)}'.\");");
+ sb.AppendLine();
+ }
+
+ sb.AppendLine(" }");
+ sb.AppendLine();
+
+ // 2. Hosted service that loads secrets at startup
+ var loaderName = implName.Replace("SecretStoreClient", "SecretStoreLoader");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" /// Hosted service that pre-loads secrets from the {EscapeXml(storeName)} Dapr secret store");
+ sb.AppendLine($" /// at application startup and registers the generated in the container.");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" [GeneratedCode(\"Dapr.SecretsManagement.Generators\", \"1.0.0\")]");
+ sb.AppendLine($" internal sealed class {loaderName} : IHostedService");
+ sb.AppendLine(" {");
+ sb.AppendLine($" private readonly Dapr.SecretsManagement.DaprSecretsManagementClient _client;");
+ sb.AppendLine($" private Dictionary? _secrets;");
+ sb.AppendLine();
+ sb.AppendLine($" public {loaderName}(Dapr.SecretsManagement.DaprSecretsManagementClient client)");
+ sb.AppendLine(" {");
+ sb.AppendLine(" _client = client ?? throw new ArgumentNullException(nameof(client));");
+ sb.AppendLine(" }");
+ sb.AppendLine();
+ sb.AppendLine(" internal Dictionary Secrets =>");
+ sb.AppendLine(" _secrets ?? throw new InvalidOperationException(");
+ sb.AppendLine($" \"Secrets from store '{EscapeCSharpString(storeName)}' have not been loaded yet. Ensure the host has started.\");");
+ sb.AppendLine();
+ sb.AppendLine(" public async Task StartAsync(CancellationToken cancellationToken)");
+ sb.AppendLine(" {");
+ sb.AppendLine($" var bulk = await _client.GetBulkSecretAsync(\"{EscapeCSharpString(storeName)}\", cancellationToken: cancellationToken).ConfigureAwait(false);");
+ sb.AppendLine(" var flat = new Dictionary();");
+ sb.AppendLine(" foreach (var entry in bulk)");
+ sb.AppendLine(" {");
+ sb.AppendLine(" foreach (var kvp in entry.Value)");
+ sb.AppendLine(" {");
+ sb.AppendLine(" flat[kvp.Key] = kvp.Value;");
+ sb.AppendLine(" }");
+ sb.AppendLine(" }");
+ sb.AppendLine(" _secrets = flat;");
+ sb.AppendLine(" }");
+ sb.AppendLine();
+ sb.AppendLine(" public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;");
+ sb.AppendLine(" }");
+ sb.AppendLine();
+
+ // 3. DI registration extension
+ var methodName = "Add" + (interfaceName.StartsWith("I", StringComparison.Ordinal) && interfaceName.Length > 1 && char.IsUpper(interfaceName[1])
+ ? interfaceName.Substring(1)
+ : interfaceName);
+
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" /// Extension methods for registering the generated implementation.");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" [GeneratedCode(\"Dapr.SecretsManagement.Generators\", \"1.0.0\")]");
+ sb.AppendLine($" public static class {implName}Extensions");
+ sb.AppendLine(" {");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" /// Registers the generated typed secret store implementation for ");
+ sb.AppendLine($" /// with the dependency injection container. Secrets are loaded from the {EscapeXml(storeName)}");
+ sb.AppendLine($" /// Dapr secret store at application startup via an .");
+ sb.AppendLine($" /// ");
+ sb.AppendLine($" /// The Dapr Secrets Management builder.");
+ sb.AppendLine($" /// The builder instance for chaining.");
+ sb.AppendLine($" public static Dapr.SecretsManagement.IDaprSecretsManagementBuilder {methodName}(");
+ sb.AppendLine($" this Dapr.SecretsManagement.IDaprSecretsManagementBuilder builder)");
+ sb.AppendLine(" {");
+ sb.AppendLine($" builder.Services.AddSingleton<{loaderName}>();");
+ sb.AppendLine($" builder.Services.AddSingleton(sp => sp.GetRequiredService<{loaderName}>());");
+ sb.AppendLine($" builder.Services.AddSingleton<{fullyQualifiedInterfaceName}>(sp =>");
+ sb.AppendLine($" new {implName}(sp.GetRequiredService<{loaderName}>().Secrets));");
+ sb.AppendLine(" return builder;");
+ sb.AppendLine(" }");
+ sb.AppendLine(" }");
+
+ if (namespaceName is not null)
+ {
+ sb.AppendLine("}");
+ }
+
+ return sb.ToString();
+ }
+
+ private static string EscapeCSharpString(string value) =>
+ value.Replace("\\", "\\\\").Replace("\"", "\\\"");
+
+ private static string EscapeXml(string value) =>
+ value.Replace("&", "&").Replace("<", "<").Replace(">", ">");
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/AssemblyInfo.cs b/src/Dapr.SecretsManagement.Runtime/AssemblyInfo.cs
new file mode 100644
index 000000000..b6f1304b3
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/AssemblyInfo.cs
@@ -0,0 +1,16 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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.Runtime.CompilerServices;
+
+[assembly: InternalsVisibleTo("Dapr.SecretsManagement.Runtime.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b1f597635c44597fcecb493e2b1327033b29b1a98ac956a1a538664b68f87d45fbaada0438a15a6265e62864947cc067d8da3a7d93c5eb2fcbb850e396c8684dba74ea477d82a1bbb18932c0efb30b64ff1677f85ae833818707ac8b49ad8062ca01d2c89d8ab1843ae73e8ba9649cd28666b539444dcdee3639f95e2a099bb2" )]
diff --git a/src/Dapr.SecretsManagement.Runtime/Dapr.SecretsManagement.Runtime.csproj b/src/Dapr.SecretsManagement.Runtime/Dapr.SecretsManagement.Runtime.csproj
new file mode 100644
index 000000000..a9648a8e2
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/Dapr.SecretsManagement.Runtime.csproj
@@ -0,0 +1,21 @@
+
+
+
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClient.cs b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClient.cs
new file mode 100644
index 000000000..335d7a8e5
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClient.cs
@@ -0,0 +1,120 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.Common;
+using Autogenerated = Dapr.Client.Autogen.Grpc.v1.Dapr;
+
+namespace Dapr.SecretsManagement;
+
+///
+///
+/// Defines client operations for managing Dapr secrets. Use
+/// to create a or register for use with dependency injection via
+/// .
+///
+///
+/// Implementations of implement because the
+/// client accesses network resources. For best performance, create a single long-lived client instance and share
+/// it for the lifetime of the application. This is done for you if created via the DI extensions. Avoid creating
+/// and disposing a client instance for each operation that the application performs — this can lead to socket
+/// exhaustion and other problems.
+///
+///
+public abstract class DaprSecretsManagementClient(
+ Autogenerated.DaprClient client,
+ HttpClient httpClient,
+ string? daprApiToken = null) : IDaprClient
+{
+ private bool disposed;
+
+ ///
+ /// The HTTP client used by the client for calling the Dapr runtime.
+ ///
+ ///
+ /// Property exposed for testing purposes.
+ ///
+ internal readonly HttpClient HttpClient = httpClient;
+
+ ///
+ /// The Dapr API token value.
+ ///
+ ///
+ /// Property exposed for testing purposes.
+ ///
+ internal readonly string? DaprApiToken = daprApiToken;
+
+ ///
+ /// The autogenerated Dapr gRPC client.
+ ///
+ ///
+ /// Property exposed for testing purposes.
+ ///
+ internal Autogenerated.DaprClient Client { get; } = client;
+
+ ///
+ /// Gets the secret value for a specific key from the specified secret store.
+ ///
+ /// The name of the Dapr secret store component.
+ /// The secret key to retrieve.
+ ///
+ /// An optional collection of metadata key-value pairs that will be provided to the secret store component.
+ /// The valid metadata keys and values are determined by the type of secret store used.
+ ///
+ /// A that can be used to cancel the operation.
+ ///
+ /// A that resolves to a containing the secret
+ /// data. Some secret stores (such as Kubernetes) can store multiple values per key — each entry in the
+ /// dictionary represents one such value.
+ ///
+ public abstract Task> GetSecretAsync(
+ string storeName,
+ string key,
+ IReadOnlyDictionary? metadata = null,
+ CancellationToken cancellationToken = default);
+
+ ///
+ /// Gets all secret values that the application is allowed to access from the specified secret store.
+ ///
+ /// The name of the Dapr secret store component.
+ ///
+ /// An optional collection of metadata key-value pairs that will be provided to the secret store component.
+ /// The valid metadata keys and values are determined by the type of secret store used.
+ ///
+ /// A that can be used to cancel the operation.
+ ///
+ /// A that resolves to a nested dictionary. The outer key is the secret name; the inner
+ /// dictionary contains one or more key-value pairs representing the secret data.
+ ///
+ public abstract Task>> GetBulkSecretAsync(
+ string storeName,
+ IReadOnlyDictionary? metadata = null,
+ CancellationToken cancellationToken = default);
+
+ ///
+ public void Dispose()
+ {
+ if (!this.disposed)
+ {
+ Dispose(disposing: true);
+ this.disposed = true;
+ }
+ }
+
+ ///
+ /// Disposes the resources associated with the object.
+ ///
+ /// if called by a call to the method; otherwise .
+ protected virtual void Dispose(bool disposing)
+ {
+ }
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClientBuilder.cs b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClientBuilder.cs
new file mode 100644
index 000000000..99c8320e1
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementClientBuilder.cs
@@ -0,0 +1,37 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.Common;
+using Microsoft.Extensions.Configuration;
+using Autogenerated = Dapr.Client.Autogen.Grpc.v1;
+
+namespace Dapr.SecretsManagement;
+
+///
+/// Builds a instance with the specified configuration.
+///
+/// An optional instance used to resolve default settings.
+public sealed class DaprSecretsManagementClientBuilder(IConfiguration? configuration = null)
+ : DaprGenericClientBuilder(configuration)
+{
+ ///
+ /// Builds the instance from the properties configured on this builder.
+ ///
+ /// A new instance.
+ public override DaprSecretsManagementClient Build()
+ {
+ var daprClientDependencies = this.BuildDaprClientDependencies(typeof(DaprSecretsManagementClient).Assembly);
+ var client = new Autogenerated.Dapr.DaprClient(daprClientDependencies.channel);
+ return new DaprSecretsManagementGrpcClient(client, daprClientDependencies.httpClient, daprClientDependencies.daprApiToken);
+ }
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementGrpcClient.cs b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementGrpcClient.cs
new file mode 100644
index 000000000..ad918418f
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/DaprSecretsManagementGrpcClient.cs
@@ -0,0 +1,137 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.Common;
+using Grpc.Core;
+using Autogenerated = Dapr.Client.Autogen.Grpc.v1;
+
+namespace Dapr.SecretsManagement;
+
+///
+/// A gRPC-backed implementation of that communicates with the
+/// Dapr sidecar to retrieve secrets from configured secret store components.
+///
+internal sealed class DaprSecretsManagementGrpcClient(
+ Autogenerated.Dapr.DaprClient client,
+ HttpClient httpClient,
+ string? daprApiToken = null)
+ : DaprSecretsManagementClient(client, httpClient, daprApiToken: daprApiToken)
+{
+ ///
+ public override async Task> GetSecretAsync(
+ string storeName,
+ string key,
+ IReadOnlyDictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+ {
+ ArgumentNullException.ThrowIfNull(storeName);
+ ArgumentException.ThrowIfNullOrEmpty(key);
+
+ var envelope = new Autogenerated.GetSecretRequest
+ {
+ StoreName = storeName,
+ Key = key
+ };
+
+ if (metadata is not null)
+ {
+ foreach (var kvp in metadata)
+ {
+ envelope.Metadata.Add(kvp.Key, kvp.Value);
+ }
+ }
+
+ var callOptions = DaprClientUtilities.ConfigureGrpcCallOptions(
+ typeof(DaprSecretsManagementClient).Assembly,
+ this.DaprApiToken,
+ cancellationToken);
+
+ try
+ {
+ var response = await Client.GetSecretAsync(envelope, callOptions).ConfigureAwait(false);
+ return response.Data.ToDictionary(kv => kv.Key, kv => kv.Value);
+ }
+ catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested)
+ {
+ throw;
+ }
+ catch (RpcException ex) when (ex.StatusCode == StatusCode.Cancelled && cancellationToken.IsCancellationRequested)
+ {
+ throw new OperationCanceledException(cancellationToken);
+ }
+ catch (Exception ex)
+ {
+ throw new DaprException(
+ "Get secret operation failed: the Dapr endpoint indicated a failure. See InnerException for details.",
+ ex);
+ }
+ }
+
+ ///
+ public override async Task>> GetBulkSecretAsync(
+ string storeName,
+ IReadOnlyDictionary? metadata = null,
+ CancellationToken cancellationToken = default)
+ {
+ ArgumentNullException.ThrowIfNull(storeName);
+
+ var envelope = new Autogenerated.GetBulkSecretRequest
+ {
+ StoreName = storeName
+ };
+
+ if (metadata is not null)
+ {
+ foreach (var kvp in metadata)
+ {
+ envelope.Metadata.Add(kvp.Key, kvp.Value);
+ }
+ }
+
+ var callOptions = DaprClientUtilities.ConfigureGrpcCallOptions(
+ typeof(DaprSecretsManagementClient).Assembly,
+ this.DaprApiToken,
+ cancellationToken);
+
+ try
+ {
+ var response = await Client.GetBulkSecretAsync(envelope, callOptions).ConfigureAwait(false);
+ return response.Data.ToDictionary(
+ r => r.Key,
+ r => (IReadOnlyDictionary)r.Value.Secrets.ToDictionary(s => s.Key, s => s.Value));
+ }
+ catch (OperationCanceledException) when (cancellationToken.IsCancellationRequested)
+ {
+ throw;
+ }
+ catch (RpcException ex) when (ex.StatusCode == StatusCode.Cancelled && cancellationToken.IsCancellationRequested)
+ {
+ throw new OperationCanceledException(cancellationToken);
+ }
+ catch (Exception ex)
+ {
+ throw new DaprException(
+ "Bulk secret operation failed: the Dapr endpoint indicated a failure. See InnerException for details.",
+ ex);
+ }
+ }
+
+ ///
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ this.HttpClient.Dispose();
+ }
+ }
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementBuilder.cs b/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementBuilder.cs
new file mode 100644
index 000000000..8719856ea
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementBuilder.cs
@@ -0,0 +1,28 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Microsoft.Extensions.DependencyInjection;
+
+namespace Dapr.SecretsManagement.Extensions;
+
+///
+/// Used by the fluent registration builder to configure a Dapr Secrets Management client.
+///
+/// The service collection to register services with.
+public sealed class DaprSecretsManagementBuilder(IServiceCollection services) : IDaprSecretsManagementBuilder
+{
+ ///
+ /// Gets the registered services on the builder.
+ ///
+ public IServiceCollection Services { get; } = services;
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementServiceCollectionExtensions.cs b/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementServiceCollectionExtensions.cs
new file mode 100644
index 000000000..bc5b50258
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/Extensions/DaprSecretsManagementServiceCollectionExtensions.cs
@@ -0,0 +1,39 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.Common.Extensions;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Dapr.SecretsManagement.Extensions;
+
+///
+/// Contains extension methods for using Dapr Secrets Management with dependency injection.
+///
+public static class DaprSecretsManagementServiceCollectionExtensions
+{
+ ///
+ /// Adds Dapr Secrets Management client support to the service collection.
+ ///
+ /// The to add services to.
+ ///
+ /// An optional callback used to configure the with injected services.
+ ///
+ /// The lifetime of the registered services. Defaults to .
+ /// An that can be used for further configuration.
+ public static IDaprSecretsManagementBuilder AddDaprSecretsManagementClient(
+ this IServiceCollection services,
+ Action? configure = null,
+ ServiceLifetime lifetime = ServiceLifetime.Singleton) =>
+ services.AddDaprClient(
+ configure, lifetime);
+}
diff --git a/src/Dapr.SecretsManagement.Runtime/IDaprSecretsManagementBuilder.cs b/src/Dapr.SecretsManagement.Runtime/IDaprSecretsManagementBuilder.cs
new file mode 100644
index 000000000..e05c81eea
--- /dev/null
+++ b/src/Dapr.SecretsManagement.Runtime/IDaprSecretsManagementBuilder.cs
@@ -0,0 +1,22 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.Common;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Dapr.SecretsManagement;
+
+///
+/// Responsible for registering Dapr Secrets Management service functionality.
+///
+public interface IDaprSecretsManagementBuilder : IDaprServiceBuilder;
diff --git a/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
new file mode 100644
index 000000000..aba09f7ad
--- /dev/null
+++ b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
@@ -0,0 +1,181 @@
+
+
+
+ true
+ Dapr.SecretsManagement
+ Provides a purpose-specific client, source generator, and DI integration for working with Dapr secret stores in .NET applications
+
+
+ true
+
+
+ false
+
+
+ true
+
+
+ $(NoWarn);NU5128
+
+
+ false
+
+
+
+ $(TargetsForTfmSpecificContentInPackage);
+ _BuildChildrenForCurrentTFM;
+ _CollectChildOutputsForCurrentTFM;
+ _AddAnalyzerOnce
+
+
+
+ $(TargetsForPack);_BuildGeneratorOnce;_AddAnalyzer
+
+
+
+
+
+ <_ExpectedDirectoryBuildProps>$(MSBuildProjectDirectory)\..\Directory.Build.props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_EffectiveTfmFolder>$(NuGetTargetFrameworkFolderName)
+ <_EffectiveTfmFolder Condition="'$(_EffectiveTfmFolder)'==''">$(TargetFramework)
+
+
+
+
+
+
+
+ <_ChildDll Include="@(_BuiltChildOutputs)" Condition="'%(_BuiltChildOutputs.Extension)'=='.dll'" />
+
+
+ <_ChildXml Include="%(_ChildDll.RootDir)%(_ChildDll.Directory)%(_ChildDll.Filename).xml"
+ Condition="Exists('%(_ChildDll.RootDir)%(_ChildDll.Directory)%(_ChildDll.Filename).xml')" />
+ <_ChildPdb Include="%(_ChildDll.RootDir)%(_ChildDll.Directory)%(_ChildDll.Filename).pdb"
+ Condition="Exists('%(_ChildDll.RootDir)%(_ChildDll.Directory)%(_ChildDll.Filename).pdb')" />
+
+
+
+ $(TargetFramework)
+ lib/$(_EffectiveTfmFolder)/%(_ChildDll.Filename)%(_ChildDll.Extension)
+
+
+
+ $(TargetFramework)
+ lib/$(_EffectiveTfmFolder)/%(_ChildXml.Filename).xml
+
+
+
+ $(TargetFramework)
+ lib/$(_EffectiveTfmFolder)/%(_ChildPdb.Filename).pdb
+
+
+
+
+
+
+
+
+ <_IsFirstTfm Condition="'$(TargetFramework)' == 'net8.0'">true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_AddAnalyzer Condition="'$(TargetFramework)' == 'net8.0'">true
+
+
+
+
+ $(TargetFramework)
+ analyzers/dotnet/cs/%(_AnalyzerOut.Filename)%(_AnalyzerOut.Extension)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_IsFirstTfm Condition="'$(TargetFramework)' == 'net8.0'">true
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Dapr.SecretsManagement.Runtime.Test/Dapr.SecretsManagement.Runtime.Test.csproj b/test/Dapr.SecretsManagement.Runtime.Test/Dapr.SecretsManagement.Runtime.Test.csproj
new file mode 100644
index 000000000..4561e68b0
--- /dev/null
+++ b/test/Dapr.SecretsManagement.Runtime.Test/Dapr.SecretsManagement.Runtime.Test.csproj
@@ -0,0 +1,29 @@
+
+
+
+ enable
+ enable
+ false
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementClientBuilderTests.cs b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementClientBuilderTests.cs
new file mode 100644
index 000000000..b32e1e998
--- /dev/null
+++ b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementClientBuilderTests.cs
@@ -0,0 +1,101 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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.Text.Json;
+using Grpc.Net.Client;
+
+namespace Dapr.SecretsManagement.Test;
+
+public sealed class DaprSecretsManagementClientBuilderTests
+{
+ [Fact]
+ public void Builder_UsesPropertyNameCaseInsensitiveByDefault()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ Assert.True(builder.JsonSerializerOptions.PropertyNameCaseInsensitive);
+ }
+
+ [Fact]
+ public void Builder_UsesPropertyNameCaseHandlingAsSpecified()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseJsonSerializationOptions(new JsonSerializerOptions
+ {
+ PropertyNameCaseInsensitive = false
+ });
+ Assert.False(builder.JsonSerializerOptions.PropertyNameCaseInsensitive);
+ }
+
+ [Fact]
+ public void Builder_UsesThrowOperationCanceledOnCancellation_ByDefault()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ _ = builder.Build();
+ Assert.True(builder.GrpcChannelOptions.ThrowOperationCanceledOnCancellation);
+ }
+
+ [Fact]
+ public void Builder_DoesNotOverrideUserGrpcChannelOptions()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ _ = builder.UseGrpcChannelOptions(new GrpcChannelOptions()).Build();
+ Assert.False(builder.GrpcChannelOptions.ThrowOperationCanceledOnCancellation);
+ }
+
+ [Fact]
+ public void Builder_ValidatesGrpcEndpointScheme()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseGrpcEndpoint("ftp://example.com");
+
+ var ex = Assert.Throws(() => builder.Build());
+ Assert.Equal("The gRPC endpoint must use http or https.", ex.Message);
+ }
+
+ [Fact]
+ public void Builder_ValidatesHttpEndpointScheme()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseHttpEndpoint("ftp://example.com");
+
+ var ex = Assert.Throws(() => builder.Build());
+ Assert.Equal("The HTTP endpoint must use http or https.", ex.Message);
+ }
+
+ [Fact]
+ public void Builder_SetsApiToken()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseDaprApiToken("test_token");
+ _ = builder.Build();
+ Assert.Equal("test_token", builder.DaprApiToken);
+ }
+
+ [Fact]
+ public void Builder_SetsNullApiToken()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseDaprApiToken(null!);
+ _ = builder.Build();
+ Assert.Null(builder.DaprApiToken);
+ }
+
+ [Fact]
+ public void Builder_SetsTimeout()
+ {
+ var builder = new DaprSecretsManagementClientBuilder();
+ builder.UseTimeout(TimeSpan.FromSeconds(2));
+ _ = builder.Build();
+ Assert.Equal(2, builder.Timeout.Seconds);
+ }
+}
diff --git a/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementGrpcClientTests.cs b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementGrpcClientTests.cs
new file mode 100644
index 000000000..1856c27fc
--- /dev/null
+++ b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementGrpcClientTests.cs
@@ -0,0 +1,100 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Moq;
+
+namespace Dapr.SecretsManagement.Test;
+
+public sealed class DaprSecretsManagementGrpcClientTests
+{
+ [Fact]
+ public async Task GetSecretAsync_ThrowsOnNullStoreName()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = Mock.Of();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ await Assert.ThrowsAsync(async () =>
+ {
+ await client.GetSecretAsync(null!, "my-key", cancellationToken: TestContext.Current.CancellationToken);
+ });
+ }
+
+ [Fact]
+ public async Task GetSecretAsync_ThrowsOnNullKey()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = Mock.Of();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ await Assert.ThrowsAsync(async () =>
+ {
+ await client.GetSecretAsync("my-store", null!, cancellationToken: TestContext.Current.CancellationToken);
+ });
+ }
+
+ [Fact]
+ public async Task GetSecretAsync_ThrowsOnEmptyKey()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = Mock.Of();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ await Assert.ThrowsAsync(async () =>
+ {
+ await client.GetSecretAsync("my-store", "", cancellationToken: TestContext.Current.CancellationToken);
+ });
+ }
+
+ [Fact]
+ public async Task GetBulkSecretAsync_ThrowsOnNullStoreName()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = Mock.Of();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ await Assert.ThrowsAsync(async () =>
+ {
+ await client.GetBulkSecretAsync(null!, cancellationToken: TestContext.Current.CancellationToken);
+ });
+ }
+
+ [Fact]
+ public void Dispose_CanBeCalledWithoutException()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = new HttpClient();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ // Should not throw.
+ client.Dispose();
+ }
+
+ [Fact]
+ public void Dispose_IsIdempotent()
+ {
+ var mockClient = Mock.Of();
+ var httpClient = new HttpClient();
+
+ var client = new DaprSecretsManagementGrpcClient(mockClient, httpClient, null);
+
+ // Calling Dispose multiple times should not throw.
+ client.Dispose();
+ client.Dispose();
+ }
+}
diff --git a/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementServiceCollectionExtensionsTests.cs b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementServiceCollectionExtensionsTests.cs
new file mode 100644
index 000000000..1aff866d3
--- /dev/null
+++ b/test/Dapr.SecretsManagement.Runtime.Test/DaprSecretsManagementServiceCollectionExtensionsTests.cs
@@ -0,0 +1,54 @@
+// ------------------------------------------------------------------------
+// Copyright 2026 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 Dapr.SecretsManagement.Extensions;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Dapr.SecretsManagement.Test;
+
+public sealed class DaprSecretsManagementServiceCollectionExtensionsTests
+{
+ [Fact]
+ public void AddDaprSecretsManagementClient_RegistersClientInServiceCollection()
+ {
+ var services = new ServiceCollection();
+ var builder = services.AddDaprSecretsManagementClient();
+
+ Assert.NotNull(builder);
+ Assert.IsAssignableFrom(builder);
+
+ var descriptor = services.FirstOrDefault(sd => sd.ServiceType == typeof(DaprSecretsManagementClient));
+ Assert.NotNull(descriptor);
+ Assert.Equal(ServiceLifetime.Singleton, descriptor.Lifetime);
+ }
+
+ [Fact]
+ public void AddDaprSecretsManagementClient_RespectsCustomLifetime()
+ {
+ var services = new ServiceCollection();
+ services.AddDaprSecretsManagementClient(lifetime: ServiceLifetime.Transient);
+
+ var descriptor = services.FirstOrDefault(sd => sd.ServiceType == typeof(DaprSecretsManagementClient));
+ Assert.NotNull(descriptor);
+ Assert.Equal(ServiceLifetime.Transient, descriptor.Lifetime);
+ }
+
+ [Fact]
+ public void AddDaprSecretsManagementClient_BuilderExposesSameServices()
+ {
+ var services = new ServiceCollection();
+ var builder = services.AddDaprSecretsManagementClient();
+
+ Assert.Same(services, builder.Services);
+ }
+}
From 8514d77ab1f30bdf73bbef0eb04660ef312f5792 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 16 Apr 2026 10:05:20 +0000
Subject: [PATCH 2/3] fix: Remove duplicate _BuildGeneratorIfFirstTFM target
from aggregator csproj
Agent-Logs-Url: https://github.com/dapr/dotnet-sdk/sessions/db970aa7-6b0c-450f-93f9-878185757985
Co-authored-by: WhitWaldo <2238529+WhitWaldo@users.noreply.github.com>
---
.../Dapr.SecretsManagement.csproj | 19 -------------------
1 file changed, 19 deletions(-)
diff --git a/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
index aba09f7ad..10598951b 100644
--- a/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
+++ b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
@@ -156,25 +156,6 @@
Properties="Configuration=$(Configuration);TargetFramework=netstandard2.0" />
-
-
-
-
-
- <_IsFirstTfm Condition="'$(TargetFramework)' == 'net8.0'">true
-
-
-
-
-
-
-
-
From ff244d81975110bbc0cdef838205136b0f1ccaf8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 16 Apr 2026 21:52:21 +0000
Subject: [PATCH 3/3] Address PR review feedback: standardize port, enable
typed example, narrow public API, fix diagnostics, hash-based hint names
- Standardize example port to 6543 (launchSettings.json + README.md)
- Uncomment and wire up Example 3 (typed secret store via source generator)
- Make WellKnownSecrets internal to narrow public API surface
- Change diagnostic ID from DAPRSEC001 to DAPR1601 (consistent with DAPRxxyy convention)
- Fix diagnostic message to reference Dapr.SecretsManagement (not the internal Abstractions sub-package)
- Use FNV-1a hash of FQN for hint names to avoid collisions across namespaces
- Simplify NuGet package description
Agent-Logs-Url: https://github.com/dapr/dotnet-sdk/sessions/a7a790c9-bd31-4dd6-aad6-142a0b6d9c83
Co-authored-by: WhitWaldo <2238529+WhitWaldo@users.noreply.github.com>
---
examples/SecretManagement/README.md | 3 +-
.../SecretManagementSample/Program.cs | 36 ++++++++-----------
.../Properties/launchSettings.json | 2 +-
.../WellKnownSecrets.cs | 2 +-
.../SecretStoreSourceGenerator.cs | 27 +++++++++++---
.../Dapr.SecretsManagement.csproj | 2 +-
6 files changed, 42 insertions(+), 30 deletions(-)
diff --git a/examples/SecretManagement/README.md b/examples/SecretManagement/README.md
index f9c09f6f9..9e523c8ba 100644
--- a/examples/SecretManagement/README.md
+++ b/examples/SecretManagement/README.md
@@ -17,7 +17,7 @@ This sample demonstrates how to use the Dapr Secrets Management SDK to retrieve
## Running the Sample
```bash
-dapr run --app-id secret-sample --app-port 5234 -- dotnet run
+dapr run --app-id secret-sample --app-port 6543 -- dotnet run
```
## Endpoints
@@ -26,6 +26,7 @@ dapr run --app-id secret-sample --app-port 5234 -- dotnet run
|--------|------|-------------|
| GET | `/secrets/{storeName}/{key}` | Retrieve a single secret by key |
| GET | `/secrets/{storeName}` | Retrieve all secrets from a store |
+| GET | `/typed-secrets` | Retrieve secrets using the source-generated typed store |
## NuGet Package Note
diff --git a/examples/SecretManagement/SecretManagementSample/Program.cs b/examples/SecretManagement/SecretManagementSample/Program.cs
index c8e8a3d45..963a5be7b 100644
--- a/examples/SecretManagement/SecretManagementSample/Program.cs
+++ b/examples/SecretManagement/SecretManagementSample/Program.cs
@@ -13,20 +13,14 @@
using Dapr.SecretsManagement;
using Dapr.SecretsManagement.Extensions;
+using SecretManagementSample;
var builder = WebApplication.CreateBuilder(args);
-// Register the Dapr Secrets Management client with dependency injection.
-// This makes DaprSecretsManagementClient available throughout the application.
-builder.Services.AddDaprSecretsManagementClient();
-
-// If you've defined a typed secret store interface with [SecretStore] and the source generator,
-// you can register it here. For example:
-//
-// builder.Services.AddDaprSecretsManagementClient()
-// .AddMyVaultSecrets(); // Generated extension method
-//
-// See IMyVaultSecrets.cs for the typed secret store interface definition.
+// Register the Dapr Secrets Management client and the source-generated typed secret store.
+// AddMyVaultSecrets() is a generated extension method — see IMyVaultSecrets.cs.
+builder.Services.AddDaprSecretsManagementClient()
+ .AddMyVaultSecrets();
var app = builder.Build();
@@ -51,16 +45,14 @@
return Results.Ok(secrets);
});
-// --- Example 3: Using typed secret store (source-generated) ---
-// If you have registered a typed secret store (see IMyVaultSecrets.cs), you can inject it directly:
-//
-// app.MapGet("/typed-secrets", (IMyVaultSecrets secrets) =>
-// {
-// return Results.Ok(new
-// {
-// DatabaseConnection = secrets.DatabaseConnection,
-// ApiKey = secrets.ApiKey
-// });
-// });
+// --- Example 3: Using the source-generated typed secret store ---
+app.MapGet("/typed-secrets", (SecretManagementSample.IMyVaultSecrets secrets) =>
+{
+ return Results.Ok(new
+ {
+ DatabaseConnection = secrets.DatabaseConnection,
+ ApiKey = secrets.ApiKey
+ });
+});
app.Run();
diff --git a/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json b/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
index c36e6a28f..33cfac2df 100644
--- a/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
+++ b/examples/SecretManagement/SecretManagementSample/Properties/launchSettings.json
@@ -4,7 +4,7 @@
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
- "applicationUrl": "http://localhost:5234",
+ "applicationUrl": "http://localhost:6543",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
diff --git a/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs b/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
index 3ca22eca8..909f50303 100644
--- a/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
+++ b/src/Dapr.SecretsManagement.Abstractions/WellKnownSecrets.cs
@@ -16,7 +16,7 @@ namespace Dapr.SecretsManagement.Abstractions;
///
/// Well-known names and constants related to Dapr Secrets Management.
///
-public static class WellKnownSecrets
+internal static class WellKnownSecrets
{
///
/// The fully qualified name of .
diff --git a/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs b/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
index ac86d5fe5..89d032f02 100644
--- a/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
+++ b/src/Dapr.SecretsManagement.Generators/SecretStoreSourceGenerator.cs
@@ -51,10 +51,10 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
{
spc.ReportDiagnostic(Diagnostic.Create(
new DiagnosticDescriptor(
- "DAPRSEC001",
+ "DAPR1601",
"SecretStore attribute not found",
- "The source generator could not find the type '" + SecretStoreAttributeFullName +
- "'. Ensure that Dapr.SecretsManagement.Abstractions is properly referenced.",
+ "The source generator could not find the SecretStoreAttribute type. " +
+ "Ensure that the Dapr.SecretsManagement package is properly referenced.",
"Dapr.SecretsManagement",
DiagnosticSeverity.Warning,
isEnabledByDefault: true),
@@ -143,7 +143,8 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
interfaceSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat),
properties);
- var hintName = (namespaceName is not null ? namespaceName + "." : "") + implName + ".g.cs";
+ var fqn = interfaceSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
+ var hintName = implName + "_" + GetStableHash(fqn).ToString("X8") + ".g.cs";
spc.AddSource(hintName, source);
});
}
@@ -286,4 +287,22 @@ private static string EscapeCSharpString(string value) =>
private static string EscapeXml(string value) =>
value.Replace("&", "&").Replace("<", "<").Replace(">", ">");
+
+ ///
+ /// Produces a stable, deterministic 32-bit hash from the given string.
+ /// Used to generate unique hint names when multiple types share the same simple name
+ /// across different namespaces.
+ ///
+ private static uint GetStableHash(string text)
+ {
+ unchecked
+ {
+ uint hash = 2166136261;
+ foreach (var ch in text)
+ {
+ hash = (hash ^ ch) * 16777619;
+ }
+ return hash;
+ }
+ }
}
diff --git a/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
index 10598951b..6bfabacb1 100644
--- a/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
+++ b/src/Dapr.SecretsManagement/Dapr.SecretsManagement.csproj
@@ -3,7 +3,7 @@
true
Dapr.SecretsManagement
- Provides a purpose-specific client, source generator, and DI integration for working with Dapr secret stores in .NET applications
+ Dapr Secrets Management SDK for .NET
true