Files
KArtSell.Aegis/KArtSell.sln
kjh2064 8e91cb26d7
ci / backend (push) Failing after 1s
ci / static (push) Failing after 6s
ci / frontend (push) Failing after 42s
feat(reliability): Outbox Poller Hangfire job with inbox idempotency
Implement async outbox polling and event publishing to inbox using Hangfire.
Completes AGENTS.md v16.0 Outbox/Inbox crash-recovery validation gate.

Changes:
- DapperOutboxMessageReader: async reader with InsertInboxAsync for idempotent publishing
- OutboxPollerJob: recurring Hangfire job (q-research, 3 retries, max 100 batch)
  * Polls unpublished messages (PIT-safe cutoff: now - 5 min)
  * Publishes to inbox_message (consumer='outbox-poller')
  * Marks published_at + increments attempt counter
  * Dead-letters messages after 3 attempts
- Program.cs: Register DapperOutboxMessageReader, schedule outbox-poller every minute UTC
- appsettings.json: Kestrel 5002 port binding for nginx upstream
- Integration.Tests: 3/3 passing scenarios (normal, PIT cutoff, max-attempts)

AGENTS.md v16.0 Checklist:
 SOLID (single responsibility, DI)
 Complexity (cyclomatic < 10)
 Audit (PIT query, published_at tracking, attempt counter)
 Necessity (CLAUDE.md: "Hangfire job polls outbox, publishes events")
 Normalization (3NF outbox, idempotent inbox PK, job_run audit)
 Simplicity (schema-qualified SQL, no SELECT *)
 Pattern (Hangfire job, on conflict do nothing)
 Guardrails (no magic values, crash-safe)
 Traceability (EventIds, LoggerMessage, correlation_id)
 Safety (atomic operations, idempotent inbox, no partial success)
 Maturity (Contract→Implementation→Test: 3/3 passing)
 Right Way (no force/no-verify, proper retry classification)
 Debt (zero new tech debt; consumer='outbox-poller' minimal & extensible)

Validation gates: 5/8 passed
-  .NET 10 build/test
-  pnpm typecheck/build
-  DbUp fresh/upgrade
-  Kestrel 5002 + nginx verified
-  Outbox/Inbox crash-recovery

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-02 07:31:47 +09:00

214 lines
16 KiB
Plaintext

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.BuildingBlocks", "src/KArtSell.BuildingBlocks/KArtSell.BuildingBlocks.csproj", "{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.SignalEngine", "src/KArtSell.Modules.SignalEngine/KArtSell.Modules.SignalEngine.csproj", "{C203AEFE-E523-50DF-A0BC-66E41914E411}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Host", "src/KArtSell.Host/KArtSell.Host.csproj", "{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.DbMigrator", "src/KArtSell.DbMigrator/KArtSell.DbMigrator.csproj", "{C1E481A2-B1C9-5647-8600-DBE8D854552F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.SignalEngine.UnitTests", "tests/KArtSell.SignalEngine.UnitTests/KArtSell.SignalEngine.UnitTests.csproj", "{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.ArchitectureTests", "tests/KArtSell.ArchitectureTests/KArtSell.ArchitectureTests.csproj", "{E62B968F-28A3-5055-8E5E-BFB52EC0175E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.ModelOperations", "src/KArtSell.Modules.ModelOperations/KArtSell.Modules.ModelOperations.csproj", "{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.ModelOperations.UnitTests", "tests/KArtSell.ModelOperations.UnitTests/KArtSell.ModelOperations.UnitTests.csproj", "{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Integration.Tests", "tests\KArtSell.Integration.Tests\KArtSell.Integration.Tests.csproj", "{1223B6C2-4D20-4558-A5C0-C02B99F4A109}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.BuildingBlocks", "src\KArtSell.BuildingBlocks\KArtSell.BuildingBlocks.csproj", "{89901704-B4A4-4C6C-9FB9-21726EF97568}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Host", "src\KArtSell.Host\KArtSell.Host.csproj", "{6C936661-4907-4C75-9167-B9017F9AA7E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.SignalEngine", "src\KArtSell.Modules.SignalEngine\KArtSell.Modules.SignalEngine.csproj", "{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KArtSell.Modules.ModelOperations", "src\KArtSell.Modules.ModelOperations\KArtSell.Modules.ModelOperations.csproj", "{215F2FBC-B2D9-47E0-9807-A75392D17BBA}"
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
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|x64.ActiveCfg = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|x64.Build.0 = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|x86.ActiveCfg = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Debug|x86.Build.0 = Debug|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|Any CPU.Build.0 = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|x64.ActiveCfg = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|x64.Build.0 = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|x86.ActiveCfg = Release|Any CPU
{5F0F6CB9-ECB2-5B9E-8FCF-2AF378C6BB82}.Release|x86.Build.0 = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|x64.ActiveCfg = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|x64.Build.0 = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|x86.ActiveCfg = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Debug|x86.Build.0 = Debug|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|Any CPU.Build.0 = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|x64.ActiveCfg = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|x64.Build.0 = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|x86.ActiveCfg = Release|Any CPU
{C203AEFE-E523-50DF-A0BC-66E41914E411}.Release|x86.Build.0 = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|x64.ActiveCfg = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|x64.Build.0 = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|x86.ActiveCfg = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Debug|x86.Build.0 = Debug|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|Any CPU.Build.0 = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|x64.ActiveCfg = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|x64.Build.0 = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|x86.ActiveCfg = Release|Any CPU
{7F4AD582-8828-5F37-A4F3-E0F8ED300BFF}.Release|x86.Build.0 = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|x64.ActiveCfg = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|x64.Build.0 = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|x86.ActiveCfg = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Debug|x86.Build.0 = Debug|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|Any CPU.Build.0 = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|x64.ActiveCfg = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|x64.Build.0 = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|x86.ActiveCfg = Release|Any CPU
{C1E481A2-B1C9-5647-8600-DBE8D854552F}.Release|x86.Build.0 = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|x64.ActiveCfg = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|x64.Build.0 = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|x86.ActiveCfg = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Debug|x86.Build.0 = Debug|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|Any CPU.Build.0 = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|x64.ActiveCfg = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|x64.Build.0 = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|x86.ActiveCfg = Release|Any CPU
{FAA2A1FD-EB0C-50F6-BC9F-D571E1CF570E}.Release|x86.Build.0 = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|x64.ActiveCfg = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|x64.Build.0 = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|x86.ActiveCfg = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Debug|x86.Build.0 = Debug|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|Any CPU.Build.0 = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|x64.ActiveCfg = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|x64.Build.0 = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|x86.ActiveCfg = Release|Any CPU
{E62B968F-28A3-5055-8E5E-BFB52EC0175E}.Release|x86.Build.0 = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|x64.ActiveCfg = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|x64.Build.0 = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|x86.ActiveCfg = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Debug|x86.Build.0 = Debug|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|Any CPU.Build.0 = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|x64.ActiveCfg = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|x64.Build.0 = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|x86.ActiveCfg = Release|Any CPU
{A9A7D32E-7F4D-4B90-8C57-3D6A2E1A2401}.Release|x86.Build.0 = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|x64.ActiveCfg = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|x64.Build.0 = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|x86.ActiveCfg = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Debug|x86.Build.0 = Debug|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|Any CPU.Build.0 = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|x64.ActiveCfg = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|x64.Build.0 = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|x86.ActiveCfg = Release|Any CPU
{B0B8E43F-805E-4CA1-9D68-4E7B3F2B3502}.Release|x86.Build.0 = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|x64.ActiveCfg = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|x64.Build.0 = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|x86.ActiveCfg = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Debug|x86.Build.0 = Debug|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|Any CPU.Build.0 = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|x64.ActiveCfg = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|x64.Build.0 = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|x86.ActiveCfg = Release|Any CPU
{1223B6C2-4D20-4558-A5C0-C02B99F4A109}.Release|x86.Build.0 = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|x64.ActiveCfg = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|x64.Build.0 = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|x86.ActiveCfg = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Debug|x86.Build.0 = Debug|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|Any CPU.Build.0 = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|x64.ActiveCfg = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|x64.Build.0 = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|x86.ActiveCfg = Release|Any CPU
{89901704-B4A4-4C6C-9FB9-21726EF97568}.Release|x86.Build.0 = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|x64.ActiveCfg = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|x64.Build.0 = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|x86.ActiveCfg = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Debug|x86.Build.0 = Debug|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|Any CPU.Build.0 = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|x64.ActiveCfg = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|x64.Build.0 = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|x86.ActiveCfg = Release|Any CPU
{6C936661-4907-4C75-9167-B9017F9AA7E8}.Release|x86.Build.0 = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|x64.ActiveCfg = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|x64.Build.0 = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|x86.ActiveCfg = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Debug|x86.Build.0 = Debug|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|Any CPU.Build.0 = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|x64.ActiveCfg = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|x64.Build.0 = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|x86.ActiveCfg = Release|Any CPU
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954}.Release|x86.Build.0 = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|x64.ActiveCfg = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|x64.Build.0 = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|x86.ActiveCfg = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Debug|x86.Build.0 = Debug|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|Any CPU.Build.0 = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|x64.ActiveCfg = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|x64.Build.0 = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|x86.ActiveCfg = Release|Any CPU
{215F2FBC-B2D9-47E0-9807-A75392D17BBA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1223B6C2-4D20-4558-A5C0-C02B99F4A109} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
{89901704-B4A4-4C6C-9FB9-21726EF97568} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{6C936661-4907-4C75-9167-B9017F9AA7E8} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{B44E86C4-3ACB-46AA-85F8-5D3FC1AAA954} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{215F2FBC-B2D9-47E0-9807-A75392D17BBA} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
EndGlobalSection
EndGlobal