├── .gitignore ├── LICENSE ├── Pacco.sln ├── README.md ├── assets ├── clean_architecture.png ├── infrastructure.png ├── pacco_logo.png └── pacco_overview.png ├── compose ├── consul-fabio-vault.yml ├── grafana-seq-jaeger-prometheus.yml ├── host-infrastructure.yml ├── host-prometheus │ ├── Dockerfile │ └── prometheus.yml ├── infrastructure.yml ├── mongo-rabbit-redis.yml ├── prometheus │ ├── Dockerfile │ └── prometheus.yml ├── rabbitmq │ ├── Dockerfile │ └── plugins ├── services-local.yml └── services.yml ├── docker-images.txt ├── prod-services.yml ├── scripts ├── git-clone-fast.sh ├── git-clone.ps1 ├── git-clone.sh ├── git-pull-fast.sh └── git-pull.sh └── services.yml /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015/2017 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # Visual Studio 2017 auto generated files 33 | Generated\ Files/ 34 | 35 | # MSTest test Results 36 | [Tt]est[Rr]esult*/ 37 | [Bb]uild[Ll]og.* 38 | 39 | # NUNIT 40 | *.VisualState.xml 41 | TestResult.xml 42 | 43 | # Build Results of an ATL Project 44 | [Dd]ebugPS/ 45 | [Rr]eleasePS/ 46 | dlldata.c 47 | 48 | # Benchmark Results 49 | BenchmarkDotNet.Artifacts/ 50 | 51 | # .NET Core 52 | project.lock.json 53 | project.fragment.lock.json 54 | artifacts/ 55 | **/Properties/launchSettings.json 56 | 57 | # StyleCop 58 | StyleCopReport.xml 59 | 60 | # Files built by Visual Studio 61 | *_i.c 62 | *_p.c 63 | *_i.h 64 | *.ilk 65 | *.meta 66 | *.obj 67 | *.iobj 68 | *.pch 69 | *.pdb 70 | *.ipdb 71 | *.pgc 72 | *.pgd 73 | *.rsp 74 | *.sbr 75 | *.tlb 76 | *.tli 77 | *.tlh 78 | *.tmp 79 | *.tmp_proj 80 | *.log 81 | *.vspscc 82 | *.vssscc 83 | .builds 84 | *.pidb 85 | *.svclog 86 | *.scc 87 | 88 | # Chutzpah Test files 89 | _Chutzpah* 90 | 91 | # Visual C++ cache files 92 | ipch/ 93 | *.aps 94 | *.ncb 95 | *.opendb 96 | *.opensdf 97 | *.sdf 98 | *.cachefile 99 | *.VC.db 100 | *.VC.VC.opendb 101 | 102 | # Visual Studio profiler 103 | *.psess 104 | *.vsp 105 | *.vspx 106 | *.sap 107 | 108 | # Visual Studio Trace Files 109 | *.e2e 110 | 111 | # TFS 2012 Local Workspace 112 | $tf/ 113 | 114 | # Guidance Automation Toolkit 115 | *.gpState 116 | 117 | # ReSharper is a .NET coding add-in 118 | _ReSharper*/ 119 | *.[Rr]e[Ss]harper 120 | *.DotSettings.user 121 | 122 | # JustCode is a .NET coding add-in 123 | .JustCode 124 | 125 | # TeamCity is a build add-in 126 | _TeamCity* 127 | 128 | # DotCover is a Code Coverage Tool 129 | *.dotCover 130 | 131 | # AxoCover is a Code Coverage Tool 132 | .axoCover/* 133 | !.axoCover/settings.json 134 | 135 | # Visual Studio code coverage results 136 | *.coverage 137 | *.coveragexml 138 | 139 | # NCrunch 140 | _NCrunch_* 141 | .*crunch*.local.xml 142 | nCrunchTemp_* 143 | 144 | # MightyMoose 145 | *.mm.* 146 | AutoTest.Net/ 147 | 148 | # Web workbench (sass) 149 | .sass-cache/ 150 | 151 | # Installshield output folder 152 | [Ee]xpress/ 153 | 154 | # DocProject is a documentation generator add-in 155 | DocProject/buildhelp/ 156 | DocProject/Help/*.HxT 157 | DocProject/Help/*.HxC 158 | DocProject/Help/*.hhc 159 | DocProject/Help/*.hhk 160 | DocProject/Help/*.hhp 161 | DocProject/Help/Html2 162 | DocProject/Help/html 163 | 164 | # Click-Once directory 165 | publish/ 166 | 167 | # Publish Web Output 168 | *.[Pp]ublish.xml 169 | *.azurePubxml 170 | # Note: Comment the next line if you want to checkin your web deploy settings, 171 | # but database connection strings (with potential passwords) will be unencrypted 172 | *.pubxml 173 | *.publishproj 174 | 175 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 176 | # checkin your Azure Web App publish settings, but sensitive information contained 177 | # in these scripts will be unencrypted 178 | PublishScripts/ 179 | 180 | # NuGet Packages 181 | *.nupkg 182 | # The packages folder can be ignored because of Package Restore 183 | **/[Pp]ackages/* 184 | # except build/, which is used as an MSBuild target. 185 | !**/[Pp]ackages/build/ 186 | # Uncomment if necessary however generally it will be regenerated when needed 187 | #!**/[Pp]ackages/repositories.config 188 | # NuGet v3's project.json files produces more ignorable files 189 | *.nuget.props 190 | *.nuget.targets 191 | 192 | # Microsoft Azure Build Output 193 | csx/ 194 | *.build.csdef 195 | 196 | # Microsoft Azure Emulator 197 | ecf/ 198 | rcf/ 199 | 200 | # Windows Store app package directories and files 201 | AppPackages/ 202 | BundleArtifacts/ 203 | Package.StoreAssociation.xml 204 | _pkginfo.txt 205 | *.appx 206 | 207 | # Visual Studio cache files 208 | # files ending in .cache can be ignored 209 | *.[Cc]ache 210 | # but keep track of directories ending in .cache 211 | !*.[Cc]ache/ 212 | 213 | # Others 214 | ClientBin/ 215 | ~$* 216 | *~ 217 | *.dbmdl 218 | *.dbproj.schemaview 219 | *.jfm 220 | *.pfx 221 | *.publishsettings 222 | orleans.codegen.cs 223 | 224 | # Including strong name files can present a security risk 225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 226 | #*.snk 227 | 228 | # Since there are multiple workflows, uncomment next line to ignore bower_components 229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 230 | #bower_components/ 231 | 232 | # RIA/Silverlight projects 233 | Generated_Code/ 234 | 235 | # Backup & report files from converting an old project file 236 | # to a newer Visual Studio version. Backup files are not needed, 237 | # because we have git ;-) 238 | _UpgradeReport_Files/ 239 | Backup*/ 240 | UpgradeLog*.XML 241 | UpgradeLog*.htm 242 | ServiceFabricBackup/ 243 | *.rptproj.bak 244 | 245 | # SQL Server files 246 | *.mdf 247 | *.ldf 248 | *.ndf 249 | 250 | # Business Intelligence projects 251 | *.rdl.data 252 | *.bim.layout 253 | *.bim_*.settings 254 | *.rptproj.rsuser 255 | 256 | # Microsoft Fakes 257 | FakesAssemblies/ 258 | 259 | # GhostDoc plugin setting file 260 | *.GhostDoc.xml 261 | 262 | # Node.js Tools for Visual Studio 263 | .ntvs_analysis.dat 264 | node_modules/ 265 | 266 | # Visual Studio 6 build log 267 | *.plg 268 | 269 | # Visual Studio 6 workspace options file 270 | *.opt 271 | 272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 273 | *.vbw 274 | 275 | # Visual Studio LightSwitch build output 276 | **/*.HTMLClient/GeneratedArtifacts 277 | **/*.DesktopClient/GeneratedArtifacts 278 | **/*.DesktopClient/ModelManifest.xml 279 | **/*.Server/GeneratedArtifacts 280 | **/*.Server/ModelManifest.xml 281 | _Pvt_Extensions 282 | 283 | # Paket dependency manager 284 | .paket/paket.exe 285 | paket-files/ 286 | 287 | # FAKE - F# Make 288 | .fake/ 289 | 290 | # JetBrains Rider 291 | .idea/ 292 | *.sln.iml 293 | 294 | # CodeRush 295 | .cr/ 296 | 297 | # Python Tools for Visual Studio (PTVS) 298 | __pycache__/ 299 | *.pyc 300 | 301 | # Cake - Uncomment if you are using it 302 | # tools/** 303 | # !tools/packages.config 304 | 305 | # Tabs Studio 306 | *.tss 307 | 308 | # Telerik's JustMock configuration file 309 | *.jmconfig 310 | 311 | # BizTalk build output 312 | *.btp.cs 313 | *.btm.cs 314 | *.odx.cs 315 | *.xsd.cs 316 | 317 | # OpenCover UI analysis results 318 | OpenCover/ 319 | 320 | # Azure Stream Analytics local run output 321 | ASALocalRun/ 322 | 323 | # MSBuild Binary and Structured Log 324 | *.binlog 325 | 326 | # NVidia Nsight GPU debugger configuration file 327 | *.nvuser 328 | 329 | # MFractors (Xamarin productivity tool) working folder 330 | .mfractor/ 331 | 332 | logs/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 DevMentors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Pacco.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26124.0 5 | MinimumVisualStudioVersion = 15.0.26124.0 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.APIGateway", "..\Pacco.APIGateway\src\Pacco.APIGateway\Pacco.APIGateway.csproj", "{D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Customers.Api", "..\Pacco.Services.Customers\src\Pacco.Services.Customers.Api\Pacco.Services.Customers.Api.csproj", "{B1407433-CFE6-45B2-8D12-2270653514C6}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Customers.Application", "..\Pacco.Services.Customers\src\Pacco.Services.Customers.Application\Pacco.Services.Customers.Application.csproj", "{F418C916-92CB-4760-AEB7-C513A081FFA8}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Customers.Core", "..\Pacco.Services.Customers\src\Pacco.Services.Customers.Core\Pacco.Services.Customers.Core.csproj", "{AE6E3714-3E0F-4995-99D6-B52B7873430F}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Customers.Infrastructure", "..\Pacco.Services.Customers\src\Pacco.Services.Customers.Infrastructure\Pacco.Services.Customers.Infrastructure.csproj", "{9439DFCF-27C1-4CA3-9A72-40C110047B9D}" 15 | EndProject 16 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Deliveries.Application", "..\Pacco.Services.Deliveries\src\Pacco.Services.Deliveries.Application\Pacco.Services.Deliveries.Application.csproj", "{B4DE899F-879C-4871-849C-8AE87E8760B0}" 17 | EndProject 18 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Deliveries.Core", "..\Pacco.Services.Deliveries\src\Pacco.Services.Deliveries.Core\Pacco.Services.Deliveries.Core.csproj", "{C139C132-0036-4D91-92E9-3665282A7F0C}" 19 | EndProject 20 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Deliveries.Infrastructure", "..\Pacco.Services.Deliveries\src\Pacco.Services.Deliveries.Infrastructure\Pacco.Services.Deliveries.Infrastructure.csproj", "{15724989-96EF-4974-B80D-62AC27C70579}" 21 | EndProject 22 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Deliveries.Api", "..\Pacco.Services.Deliveries\src\Pacco.Services.Deliveries.Api\Pacco.Services.Deliveries.Api.csproj", "{E74C4038-B1D0-4A80-89D0-9A7ED82C6396}" 23 | EndProject 24 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Identity.Api", "..\Pacco.Services.Identity\src\Pacco.Services.Identity.Api\Pacco.Services.Identity.Api.csproj", "{EC224C7F-7849-4F91-B121-B5FB6E6E0E65}" 25 | EndProject 26 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Identity.Application", "..\Pacco.Services.Identity\src\Pacco.Services.Identity.Application\Pacco.Services.Identity.Application.csproj", "{133FD659-6B11-4D47-AD5E-99780EC0B9CB}" 27 | EndProject 28 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Identity.Core", "..\Pacco.Services.Identity\src\Pacco.Services.Identity.Core\Pacco.Services.Identity.Core.csproj", "{FB3AD879-3087-4418-955B-AE3C1E3CE07A}" 29 | EndProject 30 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Identity.Infrastructure", "..\Pacco.Services.Identity\src\Pacco.Services.Identity.Infrastructure\Pacco.Services.Identity.Infrastructure.csproj", "{1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}" 31 | EndProject 32 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Operations.Api", "..\Pacco.Services.Operations\src\Pacco.Services.Operations.Api\Pacco.Services.Operations.Api.csproj", "{1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}" 33 | EndProject 34 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Orders.Api", "..\Pacco.Services.Orders\src\Pacco.Services.Orders.Api\Pacco.Services.Orders.Api.csproj", "{179691D1-05B6-49F1-BBC4-AD4133B7A7B9}" 35 | EndProject 36 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Orders.Application", "..\Pacco.Services.Orders\src\Pacco.Services.Orders.Application\Pacco.Services.Orders.Application.csproj", "{014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}" 37 | EndProject 38 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Orders.Core", "..\Pacco.Services.Orders\src\Pacco.Services.Orders.Core\Pacco.Services.Orders.Core.csproj", "{E1647639-F020-456F-AE67-3346C1774ED6}" 39 | EndProject 40 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Orders.Infrastructure", "..\Pacco.Services.Orders\src\Pacco.Services.Orders.Infrastructure\Pacco.Services.Orders.Infrastructure.csproj", "{2BB95459-3484-4607-87A2-5812E87D21CB}" 41 | EndProject 42 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Parcels.Api", "..\Pacco.Services.Parcels\src\Pacco.Services.Parcels.Api\Pacco.Services.Parcels.Api.csproj", "{BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}" 43 | EndProject 44 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Parcels.Application", "..\Pacco.Services.Parcels\src\Pacco.Services.Parcels.Application\Pacco.Services.Parcels.Application.csproj", "{B00E40C7-D6AC-4063-BB4F-8EAECD00012E}" 45 | EndProject 46 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Parcels.Core", "..\Pacco.Services.Parcels\src\Pacco.Services.Parcels.Core\Pacco.Services.Parcels.Core.csproj", "{C907610F-EB5F-4939-8A3E-4A25326E59DC}" 47 | EndProject 48 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Parcels.Infrastructure", "..\Pacco.Services.Parcels\src\Pacco.Services.Parcels.Infrastructure\Pacco.Services.Parcels.Infrastructure.csproj", "{C67699A6-5094-45C1-82BA-B6EC891F5A6C}" 49 | EndProject 50 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Pricing.Api", "..\Pacco.Services.Pricing\src\Pacco.Services.Pricing.Api\Pacco.Services.Pricing.Api.csproj", "{72EBB611-F6B4-436E-8D2F-72B259F418D5}" 51 | EndProject 52 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Vehicles.Application", "..\Pacco.Services.Vehicles\src\Pacco.Services.Vehicles.Application\Pacco.Services.Vehicles.Application.csproj", "{9D680611-CF14-472F-B525-E9310173B333}" 53 | EndProject 54 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Vehicles.Core", "..\Pacco.Services.Vehicles\src\Pacco.Services.Vehicles.Core\Pacco.Services.Vehicles.Core.csproj", "{423A6CA2-10E6-438A-9598-6D814D95CFC6}" 55 | EndProject 56 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Vehicles.Infrastructure", "..\Pacco.Services.Vehicles\src\Pacco.Services.Vehicles.Infrastructure\Pacco.Services.Vehicles.Infrastructure.csproj", "{7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}" 57 | EndProject 58 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.APIGateway", "Pacco.APIGateway", "{448D723B-5318-4EBF-8050-96FAEF05FB65}" 59 | EndProject 60 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Customers", "Pacco.Services.Customers", "{E15D31BF-0EDA-4CC4-9A60-593120E68308}" 61 | EndProject 62 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Deliveries", "Pacco.Services.Deliveries", "{114D012F-D88C-4AF8-A6EB-E888F746A994}" 63 | EndProject 64 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Identity", "Pacco.Services.Identity", "{BD70E4D1-1DDE-4AD4-9A8E-9B80157AF7A4}" 65 | EndProject 66 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Operations", "Pacco.Services.Operations", "{5B0AC0C4-336E-4052-9A64-5C62802BD02C}" 67 | EndProject 68 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Orders", "Pacco.Services.Orders", "{D42B6768-4B44-466D-8BE5-AC7C6B3D1AA6}" 69 | EndProject 70 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Parcels", "Pacco.Services.Parcels", "{4A395D87-B108-42C9-9B30-4212AB85C567}" 71 | EndProject 72 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Pricing", "Pacco.Services.Pricing", "{6BB2245D-82C5-47FF-ABD1-C99C32976B3D}" 73 | EndProject 74 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Vehicles", "Pacco.Services.Vehicles", "{EAB2B57F-7E18-4E4D-AD10-19BDBC3232F1}" 75 | EndProject 76 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.Availability", "Pacco.Services.Availability", "{175382DE-404D-4400-AEC7-F7F8A15C7766}" 77 | EndProject 78 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Vehicles.Api", "..\Pacco.Services.Vehicles\src\Pacco.Services.Vehicles.Api\Pacco.Services.Vehicles.Api.csproj", "{66B293E2-AD53-4B0C-BBD8-F66AA0742F69}" 79 | EndProject 80 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Api", "..\Pacco.Services.Availability\src\Pacco.Services.Availability.Api\Pacco.Services.Availability.Api.csproj", "{F7356583-875C-4C7E-899F-783E62663A2C}" 81 | EndProject 82 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Application", "..\Pacco.Services.Availability\src\Pacco.Services.Availability.Application\Pacco.Services.Availability.Application.csproj", "{04265E6E-E40C-4BD9-B57C-F2A8674E63CC}" 83 | EndProject 84 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Core", "..\Pacco.Services.Availability\src\Pacco.Services.Availability.Core\Pacco.Services.Availability.Core.csproj", "{466833DC-3CE1-44F2-AC94-D755FC6E0E50}" 85 | EndProject 86 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Infrastructure", "..\Pacco.Services.Availability\src\Pacco.Services.Availability.Infrastructure\Pacco.Services.Availability.Infrastructure.csproj", "{5C4BC235-1E90-4198-B375-609D253EBAF7}" 87 | EndProject 88 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Tests.Integration", "..\Pacco.Services.Availability\tests\Pacco.Services.Availability.Tests.Integration\Pacco.Services.Availability.Tests.Integration.csproj", "{387A2156-11B0-44AC-9392-2826E42ED3D8}" 89 | EndProject 90 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Orders.PactConsumerTests", "..\Pacco.Services.Orders\tests\Pacco.Services.Orders.PactConsumerTests\Pacco.Services.Orders.PactConsumerTests.csproj", "{5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}" 91 | EndProject 92 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Parcels.PactProviderTests", "..\Pacco.Services.Parcels\tests\Pacco.Services.Parcels.PactProviderTests\Pacco.Services.Parcels.PactProviderTests.csproj", "{50138598-6C4C-42D8-9AA6-9630018C48F9}" 93 | EndProject 94 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.OrderMaker", "..\Pacco.Services.OrderMaker\src\Pacco.Services.OrderMaker\Pacco.Services.OrderMaker.csproj", "{E80FC2F4-2AA5-4CA2-9498-B318890EEC18}" 95 | EndProject 96 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.Services.OrderMaker", "Pacco.Services.OrderMaker", "{C41A357F-1EA2-4A4E-83D3-A709284336BF}" 97 | EndProject 98 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{3516DE00-9F06-4659-BC78-D9DA768CB114}" 99 | EndProject 100 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{08F55CC2-C026-491D-8B5D-D2CEBA5D230C}" 101 | EndProject 102 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5E029021-C02D-49B9-8494-097D66F2138A}" 103 | EndProject 104 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{E515F17D-7698-4580-A640-F40A6A013C4A}" 105 | EndProject 106 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{2CAA2CC9-5FFF-408B-BA69-1F7F3D99B82F}" 107 | EndProject 108 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{FEB67D19-10CD-43D4-B32F-7E55E420BE63}" 109 | EndProject 110 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{34D0B3FC-448B-48A7-B0B6-D91C905AAE69}" 111 | EndProject 112 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B439DE41-DFA6-40BD-9ECF-6F35E6B61B69}" 113 | EndProject 114 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FFFC59D7-8AC3-4B28-974B-805800B92BB9}" 115 | EndProject 116 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{852AF9B9-8A1A-4DA5-8BF6-C8CA35B8C0A7}" 117 | EndProject 118 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{1272BA84-8DA8-44AA-BC0D-319FE50123D3}" 119 | EndProject 120 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{6623D877-9A94-465A-AFAA-87000270314C}" 121 | EndProject 122 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DD599C53-6B5E-401A-88B9-5A45E83642A5}" 123 | EndProject 124 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{9EE40194-722A-434F-AEFE-1640DB751A5D}" 125 | EndProject 126 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{92E57DAE-160E-4F69-9F60-6686249C53D7}" 127 | EndProject 128 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FF262068-EF08-4BDD-8780-4FBD7DF610CC}" 129 | EndProject 130 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{3BF18715-04E4-4794-8677-324412A216E3}" 131 | EndProject 132 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{BC9AFF6C-92D4-4444-ADF1-EA35ECAD76FD}" 133 | EndProject 134 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0B42876C-C306-4781-9DA8-4A6E902CF2A7}" 135 | EndProject 136 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{EDE47083-A1D4-4994-95C7-4CEA1CD4E27B}" 137 | EndProject 138 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A34B93A5-1843-4366-9DEE-EEC0D7C85C12}" 139 | EndProject 140 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0C74F8AE-DCF3-4AC4-B352-17EB0AF00C6B}" 141 | EndProject 142 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Operations.GrpcClient", "..\Pacco.Services.Operations\src\Pacco.Services.Operations.GrpcClient\Pacco.Services.Operations.GrpcClient.csproj", "{41EA283C-F724-4BF8-BAD2-B81D29CFAC62}" 143 | EndProject 144 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Tests.EndToEnd", "..\Pacco.Services.Availability\tests\Pacco.Services.Availability.Tests.EndToEnd\Pacco.Services.Availability.Tests.EndToEnd.csproj", "{54AE8CA7-715F-4E19-83F1-986F463BEC8E}" 145 | EndProject 146 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Tests.Unit", "..\Pacco.Services.Availability\tests\Pacco.Services.Availability.Tests.Unit\Pacco.Services.Availability.Tests.Unit.csproj", "{E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}" 147 | EndProject 148 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Tests.Performance", "..\Pacco.Services.Availability\tests\Pacco.Services.Availability.Tests.Performance\Pacco.Services.Availability.Tests.Performance.csproj", "{9F5C2BB1-A199-45B2-97E6-72137684236B}" 149 | EndProject 150 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.Services.Availability.Tests.Shared", "..\Pacco.Services.Availability\tests\Pacco.Services.Availability.Tests.Shared\Pacco.Services.Availability.Tests.Shared.csproj", "{D20C1733-D340-40C5-AD59-320BE8E13685}" 151 | EndProject 152 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacco.APIGateway.Ocelot", "..\Pacco.APIGateway.Ocelot\src\Pacco.APIGateway.Ocelot\Pacco.APIGateway.Ocelot.csproj", "{1E0A4526-817A-4E3F-A531-BB98E3BE7F82}" 153 | EndProject 154 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pacco.APIGateway.Ocelot", "Pacco.APIGateway.Ocelot", "{658CE4A5-17B5-4E0C-A49B-21CC3D086A78}" 155 | EndProject 156 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{343032EA-9EC5-445C-8E12-D282A9E34219}" 157 | EndProject 158 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{1B2CD62A-9D61-4BB5-890A-70F5C6462DEE}" 159 | EndProject 160 | Global 161 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 162 | Debug|Any CPU = Debug|Any CPU 163 | Debug|x64 = Debug|x64 164 | Debug|x86 = Debug|x86 165 | Release|Any CPU = Release|Any CPU 166 | Release|x64 = Release|x64 167 | Release|x86 = Release|x86 168 | EndGlobalSection 169 | GlobalSection(SolutionProperties) = preSolution 170 | HideSolutionNode = FALSE 171 | EndGlobalSection 172 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 173 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 174 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|Any CPU.Build.0 = Debug|Any CPU 175 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|x64.ActiveCfg = Debug|Any CPU 176 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|x64.Build.0 = Debug|Any CPU 177 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|x86.ActiveCfg = Debug|Any CPU 178 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Debug|x86.Build.0 = Debug|Any CPU 179 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|Any CPU.ActiveCfg = Release|Any CPU 180 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|Any CPU.Build.0 = Release|Any CPU 181 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|x64.ActiveCfg = Release|Any CPU 182 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|x64.Build.0 = Release|Any CPU 183 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|x86.ActiveCfg = Release|Any CPU 184 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4}.Release|x86.Build.0 = Release|Any CPU 185 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 186 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|Any CPU.Build.0 = Debug|Any CPU 187 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|x64.ActiveCfg = Debug|Any CPU 188 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|x64.Build.0 = Debug|Any CPU 189 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|x86.ActiveCfg = Debug|Any CPU 190 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Debug|x86.Build.0 = Debug|Any CPU 191 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|Any CPU.ActiveCfg = Release|Any CPU 192 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|Any CPU.Build.0 = Release|Any CPU 193 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|x64.ActiveCfg = Release|Any CPU 194 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|x64.Build.0 = Release|Any CPU 195 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|x86.ActiveCfg = Release|Any CPU 196 | {B1407433-CFE6-45B2-8D12-2270653514C6}.Release|x86.Build.0 = Release|Any CPU 197 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 198 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|Any CPU.Build.0 = Debug|Any CPU 199 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|x64.ActiveCfg = Debug|Any CPU 200 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|x64.Build.0 = Debug|Any CPU 201 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|x86.ActiveCfg = Debug|Any CPU 202 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Debug|x86.Build.0 = Debug|Any CPU 203 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|Any CPU.ActiveCfg = Release|Any CPU 204 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|Any CPU.Build.0 = Release|Any CPU 205 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|x64.ActiveCfg = Release|Any CPU 206 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|x64.Build.0 = Release|Any CPU 207 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|x86.ActiveCfg = Release|Any CPU 208 | {F418C916-92CB-4760-AEB7-C513A081FFA8}.Release|x86.Build.0 = Release|Any CPU 209 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 210 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|Any CPU.Build.0 = Debug|Any CPU 211 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|x64.ActiveCfg = Debug|Any CPU 212 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|x64.Build.0 = Debug|Any CPU 213 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|x86.ActiveCfg = Debug|Any CPU 214 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Debug|x86.Build.0 = Debug|Any CPU 215 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|Any CPU.ActiveCfg = Release|Any CPU 216 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|Any CPU.Build.0 = Release|Any CPU 217 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|x64.ActiveCfg = Release|Any CPU 218 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|x64.Build.0 = Release|Any CPU 219 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|x86.ActiveCfg = Release|Any CPU 220 | {AE6E3714-3E0F-4995-99D6-B52B7873430F}.Release|x86.Build.0 = Release|Any CPU 221 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 222 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|Any CPU.Build.0 = Debug|Any CPU 223 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|x64.ActiveCfg = Debug|Any CPU 224 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|x64.Build.0 = Debug|Any CPU 225 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|x86.ActiveCfg = Debug|Any CPU 226 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Debug|x86.Build.0 = Debug|Any CPU 227 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|Any CPU.ActiveCfg = Release|Any CPU 228 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|Any CPU.Build.0 = Release|Any CPU 229 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|x64.ActiveCfg = Release|Any CPU 230 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|x64.Build.0 = Release|Any CPU 231 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|x86.ActiveCfg = Release|Any CPU 232 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D}.Release|x86.Build.0 = Release|Any CPU 233 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 234 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|Any CPU.Build.0 = Debug|Any CPU 235 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|x64.ActiveCfg = Debug|Any CPU 236 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|x64.Build.0 = Debug|Any CPU 237 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|x86.ActiveCfg = Debug|Any CPU 238 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Debug|x86.Build.0 = Debug|Any CPU 239 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|Any CPU.ActiveCfg = Release|Any CPU 240 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|Any CPU.Build.0 = Release|Any CPU 241 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|x64.ActiveCfg = Release|Any CPU 242 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|x64.Build.0 = Release|Any CPU 243 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|x86.ActiveCfg = Release|Any CPU 244 | {B4DE899F-879C-4871-849C-8AE87E8760B0}.Release|x86.Build.0 = Release|Any CPU 245 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 246 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|Any CPU.Build.0 = Debug|Any CPU 247 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|x64.ActiveCfg = Debug|Any CPU 248 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|x64.Build.0 = Debug|Any CPU 249 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|x86.ActiveCfg = Debug|Any CPU 250 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Debug|x86.Build.0 = Debug|Any CPU 251 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|Any CPU.ActiveCfg = Release|Any CPU 252 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|Any CPU.Build.0 = Release|Any CPU 253 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|x64.ActiveCfg = Release|Any CPU 254 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|x64.Build.0 = Release|Any CPU 255 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|x86.ActiveCfg = Release|Any CPU 256 | {C139C132-0036-4D91-92E9-3665282A7F0C}.Release|x86.Build.0 = Release|Any CPU 257 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 258 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|Any CPU.Build.0 = Debug|Any CPU 259 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|x64.ActiveCfg = Debug|Any CPU 260 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|x64.Build.0 = Debug|Any CPU 261 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|x86.ActiveCfg = Debug|Any CPU 262 | {15724989-96EF-4974-B80D-62AC27C70579}.Debug|x86.Build.0 = Debug|Any CPU 263 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|Any CPU.ActiveCfg = Release|Any CPU 264 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|Any CPU.Build.0 = Release|Any CPU 265 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|x64.ActiveCfg = Release|Any CPU 266 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|x64.Build.0 = Release|Any CPU 267 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|x86.ActiveCfg = Release|Any CPU 268 | {15724989-96EF-4974-B80D-62AC27C70579}.Release|x86.Build.0 = Release|Any CPU 269 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 270 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|Any CPU.Build.0 = Debug|Any CPU 271 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|x64.ActiveCfg = Debug|Any CPU 272 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|x64.Build.0 = Debug|Any CPU 273 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|x86.ActiveCfg = Debug|Any CPU 274 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Debug|x86.Build.0 = Debug|Any CPU 275 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|Any CPU.ActiveCfg = Release|Any CPU 276 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|Any CPU.Build.0 = Release|Any CPU 277 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|x64.ActiveCfg = Release|Any CPU 278 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|x64.Build.0 = Release|Any CPU 279 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|x86.ActiveCfg = Release|Any CPU 280 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396}.Release|x86.Build.0 = Release|Any CPU 281 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 282 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|Any CPU.Build.0 = Debug|Any CPU 283 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|x64.ActiveCfg = Debug|Any CPU 284 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|x64.Build.0 = Debug|Any CPU 285 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|x86.ActiveCfg = Debug|Any CPU 286 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Debug|x86.Build.0 = Debug|Any CPU 287 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|Any CPU.ActiveCfg = Release|Any CPU 288 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|Any CPU.Build.0 = Release|Any CPU 289 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|x64.ActiveCfg = Release|Any CPU 290 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|x64.Build.0 = Release|Any CPU 291 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|x86.ActiveCfg = Release|Any CPU 292 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65}.Release|x86.Build.0 = Release|Any CPU 293 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 294 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|Any CPU.Build.0 = Debug|Any CPU 295 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|x64.ActiveCfg = Debug|Any CPU 296 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|x64.Build.0 = Debug|Any CPU 297 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|x86.ActiveCfg = Debug|Any CPU 298 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Debug|x86.Build.0 = Debug|Any CPU 299 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|Any CPU.ActiveCfg = Release|Any CPU 300 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|Any CPU.Build.0 = Release|Any CPU 301 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|x64.ActiveCfg = Release|Any CPU 302 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|x64.Build.0 = Release|Any CPU 303 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|x86.ActiveCfg = Release|Any CPU 304 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB}.Release|x86.Build.0 = Release|Any CPU 305 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 306 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|Any CPU.Build.0 = Debug|Any CPU 307 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|x64.ActiveCfg = Debug|Any CPU 308 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|x64.Build.0 = Debug|Any CPU 309 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|x86.ActiveCfg = Debug|Any CPU 310 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Debug|x86.Build.0 = Debug|Any CPU 311 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|Any CPU.ActiveCfg = Release|Any CPU 312 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|Any CPU.Build.0 = Release|Any CPU 313 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|x64.ActiveCfg = Release|Any CPU 314 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|x64.Build.0 = Release|Any CPU 315 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|x86.ActiveCfg = Release|Any CPU 316 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A}.Release|x86.Build.0 = Release|Any CPU 317 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 318 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|Any CPU.Build.0 = Debug|Any CPU 319 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|x64.ActiveCfg = Debug|Any CPU 320 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|x64.Build.0 = Debug|Any CPU 321 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|x86.ActiveCfg = Debug|Any CPU 322 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Debug|x86.Build.0 = Debug|Any CPU 323 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|Any CPU.ActiveCfg = Release|Any CPU 324 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|Any CPU.Build.0 = Release|Any CPU 325 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|x64.ActiveCfg = Release|Any CPU 326 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|x64.Build.0 = Release|Any CPU 327 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|x86.ActiveCfg = Release|Any CPU 328 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F}.Release|x86.Build.0 = Release|Any CPU 329 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 330 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|Any CPU.Build.0 = Debug|Any CPU 331 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|x64.ActiveCfg = Debug|Any CPU 332 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|x64.Build.0 = Debug|Any CPU 333 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|x86.ActiveCfg = Debug|Any CPU 334 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Debug|x86.Build.0 = Debug|Any CPU 335 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|Any CPU.ActiveCfg = Release|Any CPU 336 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|Any CPU.Build.0 = Release|Any CPU 337 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|x64.ActiveCfg = Release|Any CPU 338 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|x64.Build.0 = Release|Any CPU 339 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|x86.ActiveCfg = Release|Any CPU 340 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D}.Release|x86.Build.0 = Release|Any CPU 341 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 342 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|Any CPU.Build.0 = Debug|Any CPU 343 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|x64.ActiveCfg = Debug|Any CPU 344 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|x64.Build.0 = Debug|Any CPU 345 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|x86.ActiveCfg = Debug|Any CPU 346 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Debug|x86.Build.0 = Debug|Any CPU 347 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|Any CPU.ActiveCfg = Release|Any CPU 348 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|Any CPU.Build.0 = Release|Any CPU 349 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|x64.ActiveCfg = Release|Any CPU 350 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|x64.Build.0 = Release|Any CPU 351 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|x86.ActiveCfg = Release|Any CPU 352 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9}.Release|x86.Build.0 = Release|Any CPU 353 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 354 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|Any CPU.Build.0 = Debug|Any CPU 355 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|x64.ActiveCfg = Debug|Any CPU 356 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|x64.Build.0 = Debug|Any CPU 357 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|x86.ActiveCfg = Debug|Any CPU 358 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Debug|x86.Build.0 = Debug|Any CPU 359 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|Any CPU.ActiveCfg = Release|Any CPU 360 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|Any CPU.Build.0 = Release|Any CPU 361 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|x64.ActiveCfg = Release|Any CPU 362 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|x64.Build.0 = Release|Any CPU 363 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|x86.ActiveCfg = Release|Any CPU 364 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D}.Release|x86.Build.0 = Release|Any CPU 365 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 366 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|Any CPU.Build.0 = Debug|Any CPU 367 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|x64.ActiveCfg = Debug|Any CPU 368 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|x64.Build.0 = Debug|Any CPU 369 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|x86.ActiveCfg = Debug|Any CPU 370 | {E1647639-F020-456F-AE67-3346C1774ED6}.Debug|x86.Build.0 = Debug|Any CPU 371 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|Any CPU.ActiveCfg = Release|Any CPU 372 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|Any CPU.Build.0 = Release|Any CPU 373 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|x64.ActiveCfg = Release|Any CPU 374 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|x64.Build.0 = Release|Any CPU 375 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|x86.ActiveCfg = Release|Any CPU 376 | {E1647639-F020-456F-AE67-3346C1774ED6}.Release|x86.Build.0 = Release|Any CPU 377 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 378 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|Any CPU.Build.0 = Debug|Any CPU 379 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|x64.ActiveCfg = Debug|Any CPU 380 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|x64.Build.0 = Debug|Any CPU 381 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|x86.ActiveCfg = Debug|Any CPU 382 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Debug|x86.Build.0 = Debug|Any CPU 383 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|Any CPU.ActiveCfg = Release|Any CPU 384 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|Any CPU.Build.0 = Release|Any CPU 385 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|x64.ActiveCfg = Release|Any CPU 386 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|x64.Build.0 = Release|Any CPU 387 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|x86.ActiveCfg = Release|Any CPU 388 | {2BB95459-3484-4607-87A2-5812E87D21CB}.Release|x86.Build.0 = Release|Any CPU 389 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 390 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|Any CPU.Build.0 = Debug|Any CPU 391 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|x64.ActiveCfg = Debug|Any CPU 392 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|x64.Build.0 = Debug|Any CPU 393 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|x86.ActiveCfg = Debug|Any CPU 394 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Debug|x86.Build.0 = Debug|Any CPU 395 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|Any CPU.ActiveCfg = Release|Any CPU 396 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|Any CPU.Build.0 = Release|Any CPU 397 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|x64.ActiveCfg = Release|Any CPU 398 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|x64.Build.0 = Release|Any CPU 399 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|x86.ActiveCfg = Release|Any CPU 400 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF}.Release|x86.Build.0 = Release|Any CPU 401 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 402 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|Any CPU.Build.0 = Debug|Any CPU 403 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|x64.ActiveCfg = Debug|Any CPU 404 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|x64.Build.0 = Debug|Any CPU 405 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|x86.ActiveCfg = Debug|Any CPU 406 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Debug|x86.Build.0 = Debug|Any CPU 407 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|Any CPU.ActiveCfg = Release|Any CPU 408 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|Any CPU.Build.0 = Release|Any CPU 409 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|x64.ActiveCfg = Release|Any CPU 410 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|x64.Build.0 = Release|Any CPU 411 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|x86.ActiveCfg = Release|Any CPU 412 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E}.Release|x86.Build.0 = Release|Any CPU 413 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 414 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|Any CPU.Build.0 = Debug|Any CPU 415 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|x64.ActiveCfg = Debug|Any CPU 416 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|x64.Build.0 = Debug|Any CPU 417 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|x86.ActiveCfg = Debug|Any CPU 418 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Debug|x86.Build.0 = Debug|Any CPU 419 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|Any CPU.ActiveCfg = Release|Any CPU 420 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|Any CPU.Build.0 = Release|Any CPU 421 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|x64.ActiveCfg = Release|Any CPU 422 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|x64.Build.0 = Release|Any CPU 423 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|x86.ActiveCfg = Release|Any CPU 424 | {C907610F-EB5F-4939-8A3E-4A25326E59DC}.Release|x86.Build.0 = Release|Any CPU 425 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 426 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|Any CPU.Build.0 = Debug|Any CPU 427 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|x64.ActiveCfg = Debug|Any CPU 428 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|x64.Build.0 = Debug|Any CPU 429 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|x86.ActiveCfg = Debug|Any CPU 430 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Debug|x86.Build.0 = Debug|Any CPU 431 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|Any CPU.ActiveCfg = Release|Any CPU 432 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|Any CPU.Build.0 = Release|Any CPU 433 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|x64.ActiveCfg = Release|Any CPU 434 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|x64.Build.0 = Release|Any CPU 435 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|x86.ActiveCfg = Release|Any CPU 436 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C}.Release|x86.Build.0 = Release|Any CPU 437 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 438 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|Any CPU.Build.0 = Debug|Any CPU 439 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|x64.ActiveCfg = Debug|Any CPU 440 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|x64.Build.0 = Debug|Any CPU 441 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|x86.ActiveCfg = Debug|Any CPU 442 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Debug|x86.Build.0 = Debug|Any CPU 443 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|Any CPU.ActiveCfg = Release|Any CPU 444 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|Any CPU.Build.0 = Release|Any CPU 445 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|x64.ActiveCfg = Release|Any CPU 446 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|x64.Build.0 = Release|Any CPU 447 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|x86.ActiveCfg = Release|Any CPU 448 | {72EBB611-F6B4-436E-8D2F-72B259F418D5}.Release|x86.Build.0 = Release|Any CPU 449 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 450 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|Any CPU.Build.0 = Debug|Any CPU 451 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|x64.ActiveCfg = Debug|Any CPU 452 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|x64.Build.0 = Debug|Any CPU 453 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|x86.ActiveCfg = Debug|Any CPU 454 | {9D680611-CF14-472F-B525-E9310173B333}.Debug|x86.Build.0 = Debug|Any CPU 455 | {9D680611-CF14-472F-B525-E9310173B333}.Release|Any CPU.ActiveCfg = Release|Any CPU 456 | {9D680611-CF14-472F-B525-E9310173B333}.Release|Any CPU.Build.0 = Release|Any CPU 457 | {9D680611-CF14-472F-B525-E9310173B333}.Release|x64.ActiveCfg = Release|Any CPU 458 | {9D680611-CF14-472F-B525-E9310173B333}.Release|x64.Build.0 = Release|Any CPU 459 | {9D680611-CF14-472F-B525-E9310173B333}.Release|x86.ActiveCfg = Release|Any CPU 460 | {9D680611-CF14-472F-B525-E9310173B333}.Release|x86.Build.0 = Release|Any CPU 461 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 462 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|Any CPU.Build.0 = Debug|Any CPU 463 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|x64.ActiveCfg = Debug|Any CPU 464 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|x64.Build.0 = Debug|Any CPU 465 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|x86.ActiveCfg = Debug|Any CPU 466 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Debug|x86.Build.0 = Debug|Any CPU 467 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|Any CPU.ActiveCfg = Release|Any CPU 468 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|Any CPU.Build.0 = Release|Any CPU 469 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|x64.ActiveCfg = Release|Any CPU 470 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|x64.Build.0 = Release|Any CPU 471 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|x86.ActiveCfg = Release|Any CPU 472 | {423A6CA2-10E6-438A-9598-6D814D95CFC6}.Release|x86.Build.0 = Release|Any CPU 473 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 474 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|Any CPU.Build.0 = Debug|Any CPU 475 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|x64.ActiveCfg = Debug|Any CPU 476 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|x64.Build.0 = Debug|Any CPU 477 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|x86.ActiveCfg = Debug|Any CPU 478 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Debug|x86.Build.0 = Debug|Any CPU 479 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|Any CPU.ActiveCfg = Release|Any CPU 480 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|Any CPU.Build.0 = Release|Any CPU 481 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|x64.ActiveCfg = Release|Any CPU 482 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|x64.Build.0 = Release|Any CPU 483 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|x86.ActiveCfg = Release|Any CPU 484 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999}.Release|x86.Build.0 = Release|Any CPU 485 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 486 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|Any CPU.Build.0 = Debug|Any CPU 487 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|x64.ActiveCfg = Debug|Any CPU 488 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|x64.Build.0 = Debug|Any CPU 489 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|x86.ActiveCfg = Debug|Any CPU 490 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Debug|x86.Build.0 = Debug|Any CPU 491 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|Any CPU.ActiveCfg = Release|Any CPU 492 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|Any CPU.Build.0 = Release|Any CPU 493 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|x64.ActiveCfg = Release|Any CPU 494 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|x64.Build.0 = Release|Any CPU 495 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|x86.ActiveCfg = Release|Any CPU 496 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69}.Release|x86.Build.0 = Release|Any CPU 497 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 498 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|Any CPU.Build.0 = Debug|Any CPU 499 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|x64.ActiveCfg = Debug|Any CPU 500 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|x64.Build.0 = Debug|Any CPU 501 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|x86.ActiveCfg = Debug|Any CPU 502 | {F7356583-875C-4C7E-899F-783E62663A2C}.Debug|x86.Build.0 = Debug|Any CPU 503 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|Any CPU.ActiveCfg = Release|Any CPU 504 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|Any CPU.Build.0 = Release|Any CPU 505 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|x64.ActiveCfg = Release|Any CPU 506 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|x64.Build.0 = Release|Any CPU 507 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|x86.ActiveCfg = Release|Any CPU 508 | {F7356583-875C-4C7E-899F-783E62663A2C}.Release|x86.Build.0 = Release|Any CPU 509 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 510 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|Any CPU.Build.0 = Debug|Any CPU 511 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|x64.ActiveCfg = Debug|Any CPU 512 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|x64.Build.0 = Debug|Any CPU 513 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|x86.ActiveCfg = Debug|Any CPU 514 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Debug|x86.Build.0 = Debug|Any CPU 515 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|Any CPU.ActiveCfg = Release|Any CPU 516 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|Any CPU.Build.0 = Release|Any CPU 517 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|x64.ActiveCfg = Release|Any CPU 518 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|x64.Build.0 = Release|Any CPU 519 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|x86.ActiveCfg = Release|Any CPU 520 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC}.Release|x86.Build.0 = Release|Any CPU 521 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 522 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|Any CPU.Build.0 = Debug|Any CPU 523 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|x64.ActiveCfg = Debug|Any CPU 524 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|x64.Build.0 = Debug|Any CPU 525 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|x86.ActiveCfg = Debug|Any CPU 526 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Debug|x86.Build.0 = Debug|Any CPU 527 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|Any CPU.ActiveCfg = Release|Any CPU 528 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|Any CPU.Build.0 = Release|Any CPU 529 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|x64.ActiveCfg = Release|Any CPU 530 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|x64.Build.0 = Release|Any CPU 531 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|x86.ActiveCfg = Release|Any CPU 532 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50}.Release|x86.Build.0 = Release|Any CPU 533 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 534 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|Any CPU.Build.0 = Debug|Any CPU 535 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|x64.ActiveCfg = Debug|Any CPU 536 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|x64.Build.0 = Debug|Any CPU 537 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|x86.ActiveCfg = Debug|Any CPU 538 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Debug|x86.Build.0 = Debug|Any CPU 539 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|Any CPU.ActiveCfg = Release|Any CPU 540 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|Any CPU.Build.0 = Release|Any CPU 541 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|x64.ActiveCfg = Release|Any CPU 542 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|x64.Build.0 = Release|Any CPU 543 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|x86.ActiveCfg = Release|Any CPU 544 | {5C4BC235-1E90-4198-B375-609D253EBAF7}.Release|x86.Build.0 = Release|Any CPU 545 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 546 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|Any CPU.Build.0 = Debug|Any CPU 547 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|x64.ActiveCfg = Debug|Any CPU 548 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|x64.Build.0 = Debug|Any CPU 549 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|x86.ActiveCfg = Debug|Any CPU 550 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Debug|x86.Build.0 = Debug|Any CPU 551 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|Any CPU.ActiveCfg = Release|Any CPU 552 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|Any CPU.Build.0 = Release|Any CPU 553 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|x64.ActiveCfg = Release|Any CPU 554 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|x64.Build.0 = Release|Any CPU 555 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|x86.ActiveCfg = Release|Any CPU 556 | {387A2156-11B0-44AC-9392-2826E42ED3D8}.Release|x86.Build.0 = Release|Any CPU 557 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 558 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|Any CPU.Build.0 = Debug|Any CPU 559 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|x64.ActiveCfg = Debug|Any CPU 560 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|x64.Build.0 = Debug|Any CPU 561 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|x86.ActiveCfg = Debug|Any CPU 562 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Debug|x86.Build.0 = Debug|Any CPU 563 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|Any CPU.ActiveCfg = Release|Any CPU 564 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|Any CPU.Build.0 = Release|Any CPU 565 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|x64.ActiveCfg = Release|Any CPU 566 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|x64.Build.0 = Release|Any CPU 567 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|x86.ActiveCfg = Release|Any CPU 568 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094}.Release|x86.Build.0 = Release|Any CPU 569 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 570 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|Any CPU.Build.0 = Debug|Any CPU 571 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|x64.ActiveCfg = Debug|Any CPU 572 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|x64.Build.0 = Debug|Any CPU 573 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|x86.ActiveCfg = Debug|Any CPU 574 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Debug|x86.Build.0 = Debug|Any CPU 575 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|Any CPU.ActiveCfg = Release|Any CPU 576 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|Any CPU.Build.0 = Release|Any CPU 577 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|x64.ActiveCfg = Release|Any CPU 578 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|x64.Build.0 = Release|Any CPU 579 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|x86.ActiveCfg = Release|Any CPU 580 | {50138598-6C4C-42D8-9AA6-9630018C48F9}.Release|x86.Build.0 = Release|Any CPU 581 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 582 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|Any CPU.Build.0 = Debug|Any CPU 583 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|x64.ActiveCfg = Debug|Any CPU 584 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|x64.Build.0 = Debug|Any CPU 585 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|x86.ActiveCfg = Debug|Any CPU 586 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Debug|x86.Build.0 = Debug|Any CPU 587 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|Any CPU.ActiveCfg = Release|Any CPU 588 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|Any CPU.Build.0 = Release|Any CPU 589 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|x64.ActiveCfg = Release|Any CPU 590 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|x64.Build.0 = Release|Any CPU 591 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|x86.ActiveCfg = Release|Any CPU 592 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18}.Release|x86.Build.0 = Release|Any CPU 593 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 594 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|Any CPU.Build.0 = Debug|Any CPU 595 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|x64.ActiveCfg = Debug|Any CPU 596 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|x64.Build.0 = Debug|Any CPU 597 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|x86.ActiveCfg = Debug|Any CPU 598 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Debug|x86.Build.0 = Debug|Any CPU 599 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|Any CPU.ActiveCfg = Release|Any CPU 600 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|Any CPU.Build.0 = Release|Any CPU 601 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|x64.ActiveCfg = Release|Any CPU 602 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|x64.Build.0 = Release|Any CPU 603 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|x86.ActiveCfg = Release|Any CPU 604 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62}.Release|x86.Build.0 = Release|Any CPU 605 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 606 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|Any CPU.Build.0 = Debug|Any CPU 607 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|x64.ActiveCfg = Debug|Any CPU 608 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|x64.Build.0 = Debug|Any CPU 609 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|x86.ActiveCfg = Debug|Any CPU 610 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Debug|x86.Build.0 = Debug|Any CPU 611 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|Any CPU.ActiveCfg = Release|Any CPU 612 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|Any CPU.Build.0 = Release|Any CPU 613 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|x64.ActiveCfg = Release|Any CPU 614 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|x64.Build.0 = Release|Any CPU 615 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|x86.ActiveCfg = Release|Any CPU 616 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E}.Release|x86.Build.0 = Release|Any CPU 617 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 618 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|Any CPU.Build.0 = Debug|Any CPU 619 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|x64.ActiveCfg = Debug|Any CPU 620 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|x64.Build.0 = Debug|Any CPU 621 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|x86.ActiveCfg = Debug|Any CPU 622 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Debug|x86.Build.0 = Debug|Any CPU 623 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|Any CPU.ActiveCfg = Release|Any CPU 624 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|Any CPU.Build.0 = Release|Any CPU 625 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|x64.ActiveCfg = Release|Any CPU 626 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|x64.Build.0 = Release|Any CPU 627 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|x86.ActiveCfg = Release|Any CPU 628 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A}.Release|x86.Build.0 = Release|Any CPU 629 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 630 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|Any CPU.Build.0 = Debug|Any CPU 631 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|x64.ActiveCfg = Debug|Any CPU 632 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|x64.Build.0 = Debug|Any CPU 633 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|x86.ActiveCfg = Debug|Any CPU 634 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Debug|x86.Build.0 = Debug|Any CPU 635 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|Any CPU.ActiveCfg = Release|Any CPU 636 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|Any CPU.Build.0 = Release|Any CPU 637 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|x64.ActiveCfg = Release|Any CPU 638 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|x64.Build.0 = Release|Any CPU 639 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|x86.ActiveCfg = Release|Any CPU 640 | {9F5C2BB1-A199-45B2-97E6-72137684236B}.Release|x86.Build.0 = Release|Any CPU 641 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 642 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|Any CPU.Build.0 = Debug|Any CPU 643 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|x64.ActiveCfg = Debug|Any CPU 644 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|x64.Build.0 = Debug|Any CPU 645 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|x86.ActiveCfg = Debug|Any CPU 646 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Debug|x86.Build.0 = Debug|Any CPU 647 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|Any CPU.ActiveCfg = Release|Any CPU 648 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|Any CPU.Build.0 = Release|Any CPU 649 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|x64.ActiveCfg = Release|Any CPU 650 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|x64.Build.0 = Release|Any CPU 651 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|x86.ActiveCfg = Release|Any CPU 652 | {D20C1733-D340-40C5-AD59-320BE8E13685}.Release|x86.Build.0 = Release|Any CPU 653 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 654 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|Any CPU.Build.0 = Debug|Any CPU 655 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|x64.ActiveCfg = Debug|Any CPU 656 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|x64.Build.0 = Debug|Any CPU 657 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|x86.ActiveCfg = Debug|Any CPU 658 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Debug|x86.Build.0 = Debug|Any CPU 659 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|Any CPU.ActiveCfg = Release|Any CPU 660 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|Any CPU.Build.0 = Release|Any CPU 661 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|x64.ActiveCfg = Release|Any CPU 662 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|x64.Build.0 = Release|Any CPU 663 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|x86.ActiveCfg = Release|Any CPU 664 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82}.Release|x86.Build.0 = Release|Any CPU 665 | EndGlobalSection 666 | GlobalSection(NestedProjects) = preSolution 667 | {3516DE00-9F06-4659-BC78-D9DA768CB114} = {175382DE-404D-4400-AEC7-F7F8A15C7766} 668 | {F7356583-875C-4C7E-899F-783E62663A2C} = {3516DE00-9F06-4659-BC78-D9DA768CB114} 669 | {04265E6E-E40C-4BD9-B57C-F2A8674E63CC} = {3516DE00-9F06-4659-BC78-D9DA768CB114} 670 | {466833DC-3CE1-44F2-AC94-D755FC6E0E50} = {3516DE00-9F06-4659-BC78-D9DA768CB114} 671 | {5C4BC235-1E90-4198-B375-609D253EBAF7} = {3516DE00-9F06-4659-BC78-D9DA768CB114} 672 | {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} = {175382DE-404D-4400-AEC7-F7F8A15C7766} 673 | {5E029021-C02D-49B9-8494-097D66F2138A} = {448D723B-5318-4EBF-8050-96FAEF05FB65} 674 | {387A2156-11B0-44AC-9392-2826E42ED3D8} = {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} 675 | {D60E3F0B-0091-442B-8B4D-CBD65E25F1C4} = {5E029021-C02D-49B9-8494-097D66F2138A} 676 | {E515F17D-7698-4580-A640-F40A6A013C4A} = {E15D31BF-0EDA-4CC4-9A60-593120E68308} 677 | {B1407433-CFE6-45B2-8D12-2270653514C6} = {E515F17D-7698-4580-A640-F40A6A013C4A} 678 | {F418C916-92CB-4760-AEB7-C513A081FFA8} = {E515F17D-7698-4580-A640-F40A6A013C4A} 679 | {AE6E3714-3E0F-4995-99D6-B52B7873430F} = {E515F17D-7698-4580-A640-F40A6A013C4A} 680 | {9439DFCF-27C1-4CA3-9A72-40C110047B9D} = {E515F17D-7698-4580-A640-F40A6A013C4A} 681 | {2CAA2CC9-5FFF-408B-BA69-1F7F3D99B82F} = {E15D31BF-0EDA-4CC4-9A60-593120E68308} 682 | {FEB67D19-10CD-43D4-B32F-7E55E420BE63} = {114D012F-D88C-4AF8-A6EB-E888F746A994} 683 | {34D0B3FC-448B-48A7-B0B6-D91C905AAE69} = {114D012F-D88C-4AF8-A6EB-E888F746A994} 684 | {B4DE899F-879C-4871-849C-8AE87E8760B0} = {34D0B3FC-448B-48A7-B0B6-D91C905AAE69} 685 | {E74C4038-B1D0-4A80-89D0-9A7ED82C6396} = {34D0B3FC-448B-48A7-B0B6-D91C905AAE69} 686 | {C139C132-0036-4D91-92E9-3665282A7F0C} = {34D0B3FC-448B-48A7-B0B6-D91C905AAE69} 687 | {15724989-96EF-4974-B80D-62AC27C70579} = {34D0B3FC-448B-48A7-B0B6-D91C905AAE69} 688 | {B439DE41-DFA6-40BD-9ECF-6F35E6B61B69} = {BD70E4D1-1DDE-4AD4-9A8E-9B80157AF7A4} 689 | {133FD659-6B11-4D47-AD5E-99780EC0B9CB} = {B439DE41-DFA6-40BD-9ECF-6F35E6B61B69} 690 | {EC224C7F-7849-4F91-B121-B5FB6E6E0E65} = {B439DE41-DFA6-40BD-9ECF-6F35E6B61B69} 691 | {FB3AD879-3087-4418-955B-AE3C1E3CE07A} = {B439DE41-DFA6-40BD-9ECF-6F35E6B61B69} 692 | {1F4D2D05-A491-49FF-95BB-5BC6AB42E60F} = {B439DE41-DFA6-40BD-9ECF-6F35E6B61B69} 693 | {FFFC59D7-8AC3-4B28-974B-805800B92BB9} = {5B0AC0C4-336E-4052-9A64-5C62802BD02C} 694 | {1BCB68C2-7052-4C38-9F79-D4DD8D59A02D} = {FFFC59D7-8AC3-4B28-974B-805800B92BB9} 695 | {852AF9B9-8A1A-4DA5-8BF6-C8CA35B8C0A7} = {C41A357F-1EA2-4A4E-83D3-A709284336BF} 696 | {E80FC2F4-2AA5-4CA2-9498-B318890EEC18} = {852AF9B9-8A1A-4DA5-8BF6-C8CA35B8C0A7} 697 | {1272BA84-8DA8-44AA-BC0D-319FE50123D3} = {D42B6768-4B44-466D-8BE5-AC7C6B3D1AA6} 698 | {179691D1-05B6-49F1-BBC4-AD4133B7A7B9} = {1272BA84-8DA8-44AA-BC0D-319FE50123D3} 699 | {014D3DF4-36A9-4C5B-9FC2-BB52B60CF06D} = {1272BA84-8DA8-44AA-BC0D-319FE50123D3} 700 | {E1647639-F020-456F-AE67-3346C1774ED6} = {1272BA84-8DA8-44AA-BC0D-319FE50123D3} 701 | {2BB95459-3484-4607-87A2-5812E87D21CB} = {1272BA84-8DA8-44AA-BC0D-319FE50123D3} 702 | {6623D877-9A94-465A-AFAA-87000270314C} = {D42B6768-4B44-466D-8BE5-AC7C6B3D1AA6} 703 | {5C5E2C0B-87C9-495E-AEA3-3ACBAD314094} = {6623D877-9A94-465A-AFAA-87000270314C} 704 | {DD599C53-6B5E-401A-88B9-5A45E83642A5} = {4A395D87-B108-42C9-9B30-4212AB85C567} 705 | {C907610F-EB5F-4939-8A3E-4A25326E59DC} = {DD599C53-6B5E-401A-88B9-5A45E83642A5} 706 | {B00E40C7-D6AC-4063-BB4F-8EAECD00012E} = {DD599C53-6B5E-401A-88B9-5A45E83642A5} 707 | {BDCC24F0-1FC8-4295-8DB9-F7364FC44BFF} = {DD599C53-6B5E-401A-88B9-5A45E83642A5} 708 | {C67699A6-5094-45C1-82BA-B6EC891F5A6C} = {DD599C53-6B5E-401A-88B9-5A45E83642A5} 709 | {9EE40194-722A-434F-AEFE-1640DB751A5D} = {4A395D87-B108-42C9-9B30-4212AB85C567} 710 | {50138598-6C4C-42D8-9AA6-9630018C48F9} = {9EE40194-722A-434F-AEFE-1640DB751A5D} 711 | {92E57DAE-160E-4F69-9F60-6686249C53D7} = {6BB2245D-82C5-47FF-ABD1-C99C32976B3D} 712 | {72EBB611-F6B4-436E-8D2F-72B259F418D5} = {92E57DAE-160E-4F69-9F60-6686249C53D7} 713 | {FF262068-EF08-4BDD-8780-4FBD7DF610CC} = {EAB2B57F-7E18-4E4D-AD10-19BDBC3232F1} 714 | {9D680611-CF14-472F-B525-E9310173B333} = {FF262068-EF08-4BDD-8780-4FBD7DF610CC} 715 | {66B293E2-AD53-4B0C-BBD8-F66AA0742F69} = {FF262068-EF08-4BDD-8780-4FBD7DF610CC} 716 | {423A6CA2-10E6-438A-9598-6D814D95CFC6} = {FF262068-EF08-4BDD-8780-4FBD7DF610CC} 717 | {7DE3A9F9-D7FF-4ABC-A02C-B66422E3A999} = {FF262068-EF08-4BDD-8780-4FBD7DF610CC} 718 | {3BF18715-04E4-4794-8677-324412A216E3} = {BD70E4D1-1DDE-4AD4-9A8E-9B80157AF7A4} 719 | {BC9AFF6C-92D4-4444-ADF1-EA35ECAD76FD} = {5B0AC0C4-336E-4052-9A64-5C62802BD02C} 720 | {0B42876C-C306-4781-9DA8-4A6E902CF2A7} = {C41A357F-1EA2-4A4E-83D3-A709284336BF} 721 | {EDE47083-A1D4-4994-95C7-4CEA1CD4E27B} = {6BB2245D-82C5-47FF-ABD1-C99C32976B3D} 722 | {A34B93A5-1843-4366-9DEE-EEC0D7C85C12} = {EAB2B57F-7E18-4E4D-AD10-19BDBC3232F1} 723 | {0C74F8AE-DCF3-4AC4-B352-17EB0AF00C6B} = {448D723B-5318-4EBF-8050-96FAEF05FB65} 724 | {41EA283C-F724-4BF8-BAD2-B81D29CFAC62} = {FFFC59D7-8AC3-4B28-974B-805800B92BB9} 725 | {E50EC731-1ED4-4DC6-8C24-F1C1A4B47E0A} = {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} 726 | {54AE8CA7-715F-4E19-83F1-986F463BEC8E} = {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} 727 | {9F5C2BB1-A199-45B2-97E6-72137684236B} = {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} 728 | {D20C1733-D340-40C5-AD59-320BE8E13685} = {08F55CC2-C026-491D-8B5D-D2CEBA5D230C} 729 | {343032EA-9EC5-445C-8E12-D282A9E34219} = {658CE4A5-17B5-4E0C-A49B-21CC3D086A78} 730 | {1E0A4526-817A-4E3F-A531-BB98E3BE7F82} = {343032EA-9EC5-445C-8E12-D282A9E34219} 731 | {1B2CD62A-9D61-4BB5-890A-70F5C6462DEE} = {658CE4A5-17B5-4E0C-A49B-21CC3D086A78} 732 | EndGlobalSection 733 | EndGlobal 734 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Pacco](https://raw.githubusercontent.com/devmentors/Pacco/master/assets/pacco_logo.png) 2 | 3 | **What is Pacco?** 4 | ---------------- 5 | 6 | Pacco is an open source project using **microservices architecture** written in .NET Core 3.1. The domain tackles an exclusive parcels delivery which revolves around the general concept of limited resources availability. Pacco does use an **event-driven** approach in order to asynchronously integrate between the microservices. 7 | 8 | ![Pacco overview](https://raw.githubusercontent.com/devmentors/Pacco/master/assets/pacco_overview.png) 9 | 10 | Find out more about distributed systems patterns and practices in **[Microservices .NET online course](https://devmentors.io/courses/microservices-net)** and check out our **[article](https://devmentors.io/blog/hello-world-microservices-pacco)** about starting Pacco microservices and infrastructure. The solution is maintained by **[devmentors.io](https://devmentors.io)**. 11 | 12 | [![Microservices .NET](https://cdn.devmentors.io/blog/hello-world-microservices-pacco/microservices_net_pacco_trailer.png)](https://www.youtube.com/watch?v=5SLyrETnJoE) 13 | 14 | 15 | ---------------- 16 | 17 | The overall solution makes use of the **cloud agnostic** tools and most of them can be found under [cncf.io](https://cncf.io). To easily plug into the complex infrastructure, [Convey](https://convey-stack.github.io) is being used. 18 | 19 | ![Infrastructure](https://raw.githubusercontent.com/devmentors/Pacco/master/assets/infrastructure.png) 20 | 21 | ---------------- 22 | 23 | Depending on the particular microservice complexity, either the clean architecture + DDD approach (as presented below) is used or another style that is the best fit. 24 | 25 | ![Clean architecture](https://raw.githubusercontent.com/devmentors/Pacco/master/assets/clean_architecture.png) 26 | 27 | 28 | **Which repositories should I clone?** 29 | ---------------- 30 | 31 | Please clone the following repositories and put them into the same working directory: 32 | 33 | - [Pacco](https://github.com/devmentors/Pacco) 34 | - [Pacco.APIGateway](https://github.com/devmentors/Pacco.APIGateway) 35 | - [Pacco.Services.Availability](https://github.com/devmentors/Pacco.Services.Availability) 36 | - [Pacco.Services.Customers](https://github.com/devmentors/Pacco.Services.Customers) 37 | - [Pacco.Services.Deliveries](https://github.com/devmentors/Pacco.Services.Deliveries) 38 | - [Pacco.Services.Identity](https://github.com/devmentors/Pacco.Services.Identity) 39 | - [Pacco.Services.Operations](https://github.com/devmentors/Pacco.Services.Operations) 40 | - [Pacco.Services.OrderMaker](https://github.com/devmentors/Pacco.Services.OrderMaker) 41 | - [Pacco.Services.Orders](https://github.com/devmentors/Pacco.Services.Orders) 42 | - [Pacco.Services.Parcels](https://github.com/devmentors/Pacco.Services.Parcels) 43 | - [Pacco.Services.Pricing](https://github.com/devmentors/Pacco.Services.Pricing) 44 | - [Pacco.Services.Vehicles](https://github.com/devmentors/Pacco.Services.Vehicles) 45 | 46 | The above repositories can be also cloned via [git-clone.sh](https://github.com/devmentors/Pacco/blob/master/scripts/git-clone.sh) script and updated via [git-pull.sh](https://github.com/devmentors/Pacco/blob/master/scripts/git-pull.sh) script. Simply, copy the scripts to the directory next to the `Pacco` on your local drive, and execute them using shell. Inside `Pacco`, you will also find [Pacco.sln](https://github.com/devmentors/Pacco/blob/master/Pacco.sln) that aggregates all the microservices under a single solution, in order to make it easier to work with during the local development. 47 | 48 | **How to start the solution?** 49 | ---------------- 50 | 51 | Open `Pacco/compose` directory and execute: 52 | 53 | ``` 54 | docker-compose -f infrastructure.yml up -d 55 | ``` 56 | 57 | It will start the required infrastructure in the background. Then, you can start the services independently of each other via `dotnet run` or `./scripts/start.sh` command in each microservice repository or run them all at once using Docker: 58 | 59 | ``` 60 | docker-compose -f services-local.yml up 61 | ``` 62 | 63 | **What HTTP requests can be sent to the API?** 64 | ---------------- 65 | 66 | You can find the list of all HTTP requests in [Pacco-sample-scenario.rest](https://github.com/devmentors/Pacco.APIGateway/blob/master/Pacco-sample-scenario.rest) file placed in the root folder of [Pacco.APIGateway](https://github.com/devmentors/Pacco.APIGateway) repository. 67 | This file is compatible with [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) plugin for [Visual Studio Code](https://code.visualstudio.com). 68 | -------------------------------------------------------------------------------- /assets/clean_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devmentors/Pacco/182c05463b81dceec8063a07aea787cdc2bafce8/assets/clean_architecture.png -------------------------------------------------------------------------------- /assets/infrastructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devmentors/Pacco/182c05463b81dceec8063a07aea787cdc2bafce8/assets/infrastructure.png -------------------------------------------------------------------------------- /assets/pacco_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devmentors/Pacco/182c05463b81dceec8063a07aea787cdc2bafce8/assets/pacco_logo.png -------------------------------------------------------------------------------- /assets/pacco_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devmentors/Pacco/182c05463b81dceec8063a07aea787cdc2bafce8/assets/pacco_overview.png -------------------------------------------------------------------------------- /compose/consul-fabio-vault.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | consul: 5 | image: consul 6 | container_name: consul 7 | restart: unless-stopped 8 | ports: 9 | - 8500:8500 10 | networks: 11 | - pacco 12 | # volumes: 13 | # - consul:/consul/data 14 | 15 | fabio: 16 | image: fabiolb/fabio 17 | container_name: fabio 18 | restart: unless-stopped 19 | environment: 20 | - FABIO_REGISTRY_CONSUL_ADDR=consul:8500 21 | networks: 22 | - pacco 23 | ports: 24 | - 9998:9998 25 | - 9999:9999 26 | 27 | vault: 28 | image: vault 29 | container_name: vault 30 | restart: unless-stopped 31 | ports: 32 | - 8200:8200 33 | networks: 34 | - pacco 35 | environment: 36 | - VAULT_ADDR=http://127.0.0.1:8200 37 | - VAULT_DEV_ROOT_TOKEN_ID=secret 38 | cap_add: 39 | - IPC_LOCK 40 | 41 | networks: 42 | pacco: 43 | name: pacco-network 44 | external: true 45 | 46 | # volumes: 47 | # consul: 48 | # driver: local -------------------------------------------------------------------------------- /compose/grafana-seq-jaeger-prometheus.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | grafana: 5 | image: grafana/grafana 6 | container_name: grafana 7 | restart: unless-stopped 8 | ports: 9 | - 3000:3000 10 | networks: 11 | - pacco 12 | # volumes: 13 | # - grafana:/var/lib/grafana 14 | 15 | prometheus: 16 | build: ./prometheus 17 | container_name: prometheus 18 | restart: unless-stopped 19 | ports: 20 | - '9090:9090' 21 | networks: 22 | - pacco 23 | # volumes: 24 | # - prometheus:/prometheus 25 | 26 | jaeger: 27 | image: jaegertracing/all-in-one 28 | container_name: jaeger 29 | restart: unless-stopped 30 | ports: 31 | - 5775:5775/udp 32 | - 5778:5778 33 | - 6831:6831/udp 34 | - 6832:6832/udp 35 | - 9411:9411 36 | - 14268:14268 37 | - 16686:16686 38 | networks: 39 | - pacco 40 | 41 | seq: 42 | image: datalust/seq 43 | container_name: seq 44 | restart: unless-stopped 45 | environment: 46 | - ACCEPT_EULA=Y 47 | ports: 48 | - 5341:80 49 | networks: 50 | - pacco 51 | # volumes: 52 | # - seq:/data 53 | 54 | networks: 55 | pacco: 56 | name: pacco-network 57 | external: true 58 | 59 | # volumes: 60 | # grafana: 61 | # driver: local 62 | # prometheus: 63 | # driver: local 64 | # seq: 65 | # driver: local -------------------------------------------------------------------------------- /compose/host-infrastructure.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | consul: 5 | image: consul 6 | container_name: consul 7 | restart: unless-stopped 8 | network_mode: host 9 | # volumes: 10 | # - consul:/consul/data 11 | 12 | fabio: 13 | image: fabiolb/fabio 14 | container_name: fabio 15 | restart: unless-stopped 16 | environment: 17 | - FABIO_REGISTRY_CONSUL_ADDR=localhost:8500 18 | network_mode: host 19 | 20 | grafana: 21 | image: grafana/grafana 22 | container_name: grafana 23 | restart: unless-stopped 24 | network_mode: host 25 | # volumes: 26 | # - grafana:/var/lib/grafana 27 | 28 | jaeger: 29 | image: jaegertracing/all-in-one 30 | container_name: jaeger 31 | restart: unless-stopped 32 | network_mode: host 33 | 34 | mongo: 35 | image: mongo 36 | container_name: mongo 37 | restart: unless-stopped 38 | # environment: 39 | # - MONGO_INITDB_ROOT_USERNAME=root 40 | # - MONGO_INITDB_ROOT_PASSWORD=secret 41 | network_mode: host 42 | volumes: 43 | - mongo:/data/db 44 | 45 | prometheus: 46 | build: ./host-prometheus 47 | container_name: prometheus 48 | restart: unless-stopped 49 | network_mode: host 50 | # volumes: 51 | # - prometheus:/prometheus 52 | 53 | rabbitmq: 54 | build: ./rabbitmq 55 | container_name: rabbitmq 56 | restart: unless-stopped 57 | network_mode: host 58 | # volumes: 59 | # - rabbitmq:/var/lib/rabbitmq 60 | 61 | redis: 62 | image: redis 63 | container_name: redis 64 | restart: unless-stopped 65 | network_mode: host 66 | volumes: 67 | - redis:/data 68 | 69 | seq: 70 | image: datalust/seq 71 | container_name: seq 72 | restart: unless-stopped 73 | environment: 74 | - ACCEPT_EULA=Y 75 | network_mode: host 76 | # volumes: 77 | # - seq:/data 78 | 79 | vault: 80 | image: vault 81 | container_name: vault 82 | restart: unless-stopped 83 | environment: 84 | - VAULT_ADDR=http://127.0.0.1:8200 85 | - VAULT_DEV_ROOT_TOKEN_ID=secret 86 | cap_add: 87 | - IPC_LOCK 88 | network_mode: host 89 | 90 | volumes: 91 | # consul: 92 | # driver: local 93 | # grafana: 94 | # driver: local 95 | mongo: 96 | driver: local 97 | # prometheus: 98 | # driver: local 99 | # rabbitmq: 100 | # driver: local 101 | redis: 102 | driver: local 103 | # seq: 104 | # driver: local 105 | -------------------------------------------------------------------------------- /compose/host-prometheus/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prom/prometheus 2 | WORKDIR /app 3 | COPY ./prometheus.yml /etc/prometheus/prometheus.yml -------------------------------------------------------------------------------- /compose/host-prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 3 | evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. 4 | 5 | scrape_configs: 6 | - job_name: 'prometheus' 7 | static_configs: 8 | - targets: ['localhost:9090'] 9 | 10 | - job_name: 'api' 11 | static_configs: 12 | - targets: ['localhost:5000'] 13 | 14 | - job_name: 'availability-service' 15 | static_configs: 16 | - targets: ['localhost:5001'] 17 | 18 | - job_name: 'customers-service' 19 | static_configs: 20 | - targets: ['localhost:5002'] 21 | 22 | - job_name: 'deliveries-service' 23 | static_configs: 24 | - targets: ['localhost:5003'] 25 | 26 | - job_name: 'identity-service' 27 | static_configs: 28 | - targets: ['localhost:5004'] 29 | 30 | - job_name: 'operations-service' 31 | static_configs: 32 | - targets: ['localhost:5005'] 33 | 34 | - job_name: 'orders-service' 35 | static_configs: 36 | - targets: ['localhost:5006'] 37 | 38 | - job_name: 'ordermaker-service' 39 | static_configs: 40 | - targets: ['localhost:5015'] 41 | 42 | - job_name: 'parcels-service' 43 | static_configs: 44 | - targets: ['localhost:5007'] 45 | 46 | - job_name: 'pricing-service' 47 | static_configs: 48 | - targets: ['localhost:5008'] 49 | 50 | - job_name: 'vehicles-service' 51 | static_configs: 52 | - targets: ['localhost:5009'] 53 | 54 | - job_name: 'rabbitmq' 55 | static_configs: 56 | - targets: ['localhost:15692'] -------------------------------------------------------------------------------- /compose/infrastructure.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | consul: 5 | image: consul 6 | container_name: consul 7 | restart: unless-stopped 8 | networks: 9 | - pacco 10 | ports: 11 | - 8500:8500 12 | # volumes: 13 | # - consul:/consul/data 14 | 15 | fabio: 16 | image: fabiolb/fabio 17 | container_name: fabio 18 | restart: unless-stopped 19 | environment: 20 | - FABIO_REGISTRY_CONSUL_ADDR=consul:8500 21 | networks: 22 | - pacco 23 | ports: 24 | - 9998:9998 25 | - 9999:9999 26 | 27 | grafana: 28 | image: grafana/grafana 29 | container_name: grafana 30 | restart: unless-stopped 31 | networks: 32 | - pacco 33 | ports: 34 | - 3000:3000 35 | # volumes: 36 | # - grafana:/var/lib/grafana 37 | 38 | jaeger: 39 | image: jaegertracing/all-in-one 40 | container_name: jaeger 41 | restart: unless-stopped 42 | networks: 43 | - pacco 44 | ports: 45 | - 5775:5775/udp 46 | - 5778:5778 47 | - 6831:6831/udp 48 | - 6832:6832/udp 49 | - 9411:9411 50 | - 14268:14268 51 | - 16686:16686 52 | 53 | mongo: 54 | image: mongo 55 | container_name: mongo 56 | restart: unless-stopped 57 | # environment: 58 | # - MONGO_INITDB_ROOT_USERNAME=root 59 | # - MONGO_INITDB_ROOT_PASSWORD=secret 60 | networks: 61 | - pacco 62 | ports: 63 | - 27017:27017 64 | volumes: 65 | - mongo:/data/db 66 | 67 | prometheus: 68 | build: ./prometheus 69 | container_name: prometheus 70 | restart: unless-stopped 71 | networks: 72 | - pacco 73 | ports: 74 | - 9090:9090 75 | # volumes: 76 | # - prometheus:/prometheus 77 | 78 | rabbitmq: 79 | build: ./rabbitmq 80 | container_name: rabbitmq 81 | restart: unless-stopped 82 | networks: 83 | - pacco 84 | ports: 85 | - 5672:5672 86 | - 15672:15672 87 | - 15692:15692 88 | # volumes: 89 | # - rabbitmq:/var/lib/rabbitmq 90 | 91 | redis: 92 | image: redis 93 | container_name: redis 94 | restart: unless-stopped 95 | networks: 96 | - pacco 97 | ports: 98 | - 6379:6379 99 | volumes: 100 | - redis:/data 101 | 102 | seq: 103 | image: datalust/seq 104 | container_name: seq 105 | restart: unless-stopped 106 | environment: 107 | - ACCEPT_EULA=Y 108 | networks: 109 | - pacco 110 | ports: 111 | - 5341:80 112 | # volumes: 113 | # - seq:/data 114 | 115 | vault: 116 | image: vault 117 | container_name: vault 118 | restart: unless-stopped 119 | environment: 120 | - VAULT_ADDR=http://127.0.0.1:8200 121 | - VAULT_DEV_ROOT_TOKEN_ID=secret 122 | cap_add: 123 | - IPC_LOCK 124 | networks: 125 | - pacco 126 | ports: 127 | - 8200:8200 128 | 129 | networks: 130 | pacco: 131 | name: pacco-network 132 | 133 | volumes: 134 | # consul: 135 | # driver: local 136 | # grafana: 137 | # driver: local 138 | mongo: 139 | driver: local 140 | # prometheus: 141 | # driver: local 142 | # rabbitmq: 143 | # driver: local 144 | redis: 145 | driver: local 146 | # seq: 147 | # driver: local 148 | -------------------------------------------------------------------------------- /compose/mongo-rabbit-redis.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | mongo: 5 | image: mongo 6 | container_name: mongo 7 | restart: unless-stopped 8 | ports: 9 | - 27017:27017 10 | networks: 11 | - pacco 12 | volumes: 13 | - mongo:/data/db 14 | 15 | rabbitmq: 16 | image: rabbitmq:3-management 17 | container_name: rabbitmq 18 | restart: unless-stopped 19 | ports: 20 | - 5672:5672 21 | - 15672:15672 22 | networks: 23 | - pacco 24 | # volumes: 25 | # - rabbitmq:/var/lib/rabbitmq 26 | 27 | redis: 28 | image: redis 29 | container_name: redis 30 | restart: unless-stopped 31 | ports: 32 | - 6379:6379 33 | networks: 34 | - pacco 35 | volumes: 36 | - redis:/data 37 | 38 | networks: 39 | pacco: 40 | name: pacco-network 41 | 42 | volumes: 43 | mongo: 44 | driver: local 45 | # rabbitmq: 46 | # driver: local 47 | redis: 48 | driver: local -------------------------------------------------------------------------------- /compose/prometheus/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM prom/prometheus 2 | WORKDIR /app 3 | COPY ./prometheus.yml /etc/prometheus/prometheus.yml -------------------------------------------------------------------------------- /compose/prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 3 | evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. 4 | 5 | scrape_configs: 6 | - job_name: 'prometheus' 7 | static_configs: 8 | - targets: ['prometheus:9090'] 9 | 10 | - job_name: 'api-gateway' 11 | static_configs: 12 | - targets: ['api-gateway'] 13 | 14 | - job_name: 'availability-service' 15 | static_configs: 16 | - targets: ['availability-service'] 17 | 18 | - job_name: 'customers-service' 19 | static_configs: 20 | - targets: ['customers-service'] 21 | 22 | - job_name: 'deliveries-service' 23 | static_configs: 24 | - targets: ['deliveries-service'] 25 | 26 | - job_name: 'identity-service' 27 | static_configs: 28 | - targets: ['identity-service'] 29 | 30 | - job_name: 'operations-service' 31 | static_configs: 32 | - targets: ['operations-service'] 33 | 34 | - job_name: 'orders-service' 35 | static_configs: 36 | - targets: ['orders-service'] 37 | 38 | - job_name: 'ordermaker-service' 39 | static_configs: 40 | - targets: ['ordermaker-service'] 41 | 42 | - job_name: 'parcels-service' 43 | static_configs: 44 | - targets: ['parcels-service'] 45 | 46 | - job_name: 'pricing-service' 47 | static_configs: 48 | - targets: ['pricing-service'] 49 | 50 | - job_name: 'vehicles-service' 51 | static_configs: 52 | - targets: ['vehicles-service'] 53 | 54 | - job_name: 'rabbitmq' 55 | static_configs: 56 | - targets: ['rabbitmq:15692'] -------------------------------------------------------------------------------- /compose/rabbitmq/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rabbitmq:management 2 | COPY ./plugins /etc/rabbitmq/enabled_plugins -------------------------------------------------------------------------------- /compose/rabbitmq/plugins: -------------------------------------------------------------------------------- 1 | [rabbitmq_management,rabbitmq_prometheus]. -------------------------------------------------------------------------------- /compose/services-local.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | api-gateway: 5 | build: ../../Pacco.APIGateway 6 | container_name: api-gateway 7 | restart: unless-stopped 8 | environment: 9 | - NTRADA_CONFIG=ntrada.docker 10 | ports: 11 | - 5000:80 12 | networks: 13 | - pacco 14 | 15 | availability-service: 16 | build: ../../Pacco.Services.Availability 17 | container_name: availability-service 18 | restart: unless-stopped 19 | ports: 20 | - 5001:80 21 | networks: 22 | - pacco 23 | 24 | customers-service: 25 | build: ../../Pacco.Services.Customers 26 | container_name: customers-service 27 | restart: unless-stopped 28 | ports: 29 | - 5002:80 30 | networks: 31 | - pacco 32 | 33 | deliveries-service: 34 | build: ../../Pacco.Services.Deliveries 35 | container_name: deliveries-service 36 | restart: unless-stopped 37 | ports: 38 | - 5003:80 39 | networks: 40 | - pacco 41 | 42 | identity-service: 43 | build: ../../Pacco.Services.Identity 44 | container_name: identity-service 45 | restart: unless-stopped 46 | ports: 47 | - 5004:80 48 | networks: 49 | - pacco 50 | 51 | operations-service: 52 | build: ../../Pacco.Services.Operations 53 | container_name: operations-service 54 | restart: unless-stopped 55 | ports: 56 | - 5005:80 57 | networks: 58 | - pacco 59 | depends_on: 60 | - availability-service 61 | - customers-service 62 | - deliveries-service 63 | - identity-service 64 | - orders-service 65 | - ordermaker-service 66 | - parcels-service 67 | - vehicles-service 68 | 69 | orders-service: 70 | build: ../../Pacco.Services.Orders 71 | container_name: orders-service 72 | restart: unless-stopped 73 | ports: 74 | - 5006:80 75 | networks: 76 | - pacco 77 | 78 | ordermaker-service: 79 | build: ../../Pacco.Services.OrderMaker 80 | container_name: ordermaker-service 81 | restart: unless-stopped 82 | ports: 83 | - 5015:80 84 | networks: 85 | - pacco 86 | 87 | parcels-service: 88 | build: ../../Pacco.Services.Parcels 89 | container_name: parcels-service 90 | restart: unless-stopped 91 | ports: 92 | - 5007:80 93 | networks: 94 | - pacco 95 | 96 | pricing-service: 97 | build: ../../Pacco.Services.Pricing 98 | container_name: pricing-service 99 | restart: unless-stopped 100 | ports: 101 | - 5008:80 102 | networks: 103 | - pacco 104 | 105 | vehicles-service: 106 | build: ../../Pacco.Services.Vehicles 107 | container_name: vehicles-service 108 | restart: unless-stopped 109 | ports: 110 | - 5009:80 111 | networks: 112 | - pacco 113 | 114 | networks: 115 | pacco: 116 | name: pacco-network 117 | external: true -------------------------------------------------------------------------------- /compose/services.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | 3 | services: 4 | api-gateway: 5 | image: devmentors/pacco.apigateway 6 | container_name: api-gateway 7 | restart: unless-stopped 8 | environment: 9 | - NTRADA_CONFIG=ntrada-async.docker.yml 10 | ports: 11 | - 5000:80 12 | networks: 13 | - pacco 14 | 15 | availability-service: 16 | image: devmentors/pacco.services.availability 17 | container_name: availability-service 18 | restart: unless-stopped 19 | ports: 20 | - 5001:80 21 | networks: 22 | - pacco 23 | 24 | customers-service: 25 | image: devmentors/pacco.services.customers 26 | container_name: customers-service 27 | restart: unless-stopped 28 | ports: 29 | - 5002:80 30 | networks: 31 | - pacco 32 | 33 | deliveries-service: 34 | image: devmentors/pacco.services.deliveries 35 | container_name: deliveries-service 36 | restart: unless-stopped 37 | ports: 38 | - 5003:80 39 | networks: 40 | - pacco 41 | 42 | identity-service: 43 | image: devmentors/pacco.services.identity 44 | container_name: identity-service 45 | restart: unless-stopped 46 | ports: 47 | - 5004:80 48 | networks: 49 | - pacco 50 | 51 | operations-service: 52 | image: devmentors/pacco.services.operations 53 | container_name: operations-service 54 | restart: unless-stopped 55 | ports: 56 | - 5005:80 57 | networks: 58 | - pacco 59 | depends_on: 60 | - availability-service 61 | - customers-service 62 | - deliveries-service 63 | - identity-service 64 | - orders-service 65 | - ordermaker-service 66 | - parcels-service 67 | - vehicles-service 68 | 69 | orders-service: 70 | image: devmentors/pacco.services.orders 71 | container_name: orders-service 72 | restart: unless-stopped 73 | ports: 74 | - 5006:80 75 | networks: 76 | - pacco 77 | 78 | ordermaker-service: 79 | image: devmentors/pacco.services.ordermaker 80 | container_name: ordermaker-service 81 | restart: unless-stopped 82 | ports: 83 | - 5015:80 84 | networks: 85 | - pacco 86 | 87 | parcels-service: 88 | image: devmentors/pacco.services.parcels 89 | container_name: parcels-service 90 | restart: unless-stopped 91 | ports: 92 | - 5007:80 93 | networks: 94 | - pacco 95 | 96 | pricing-service: 97 | image: devmentors/pacco.services.pricing 98 | container_name: pricing-service 99 | restart: unless-stopped 100 | ports: 101 | - 5008:80 102 | networks: 103 | - pacco 104 | 105 | vehicles-service: 106 | image: devmentors/pacco.services.vehicles 107 | container_name: vehicles-service 108 | restart: unless-stopped 109 | ports: 110 | - 5009:80 111 | networks: 112 | - pacco 113 | 114 | networks: 115 | pacco: 116 | name: pacco-network 117 | external: true -------------------------------------------------------------------------------- /docker-images.txt: -------------------------------------------------------------------------------- 1 | Docker images and configurations for running the following services: 2 | 3 | *** Message queue *** 4 | -RabbitMQ 5 | 6 | *** Database *** 7 | -MongoDB 8 | -SQL Server 2017 9 | -PostgreSQL 10 | -InfluxDB 11 | 12 | *** Cache *** 13 | -Redis 14 | 15 | *** Service discovery *** 16 | -Consul 17 | 18 | *** Secret storage *** 19 | -Vault 20 | 21 | *** Monitoring *** 22 | -Grafana 23 | -Prometheus 24 | 25 | *** Logging *** 26 | -Seq 27 | -Elasticsearch 28 | -Kibana 29 | -Logstash 30 | -Jaeger 31 | 32 | =========================================================================================================================== 33 | *** MESSAGE QUEUE *** 34 | =========================================================================================================================== 35 | 36 | =========================================================================================================================== 37 | RABBITMQ 38 | =========================================================================================================================== 39 | 40 | --- Docker --- 41 | 42 | docker run --name rabbitmq -d -p 5672:5672 -p 15672:15672 --hostname rabbitmq rabbitmq:3-management 43 | 44 | --- Optional --- 45 | 46 | -v /tmp/rabbitmq:/var/lib/rabbitmq 47 | 48 | -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=secret 49 | 50 | 51 | =========================================================================================================================== 52 | *** DATABASE *** 53 | =========================================================================================================================== 54 | 55 | =========================================================================================================================== 56 | MONGODB 57 | =========================================================================================================================== 58 | 59 | --- Docker --- 60 | 61 | docker run --name mongo -d -p 27017:27017 mongo 62 | 63 | --- Optional --- 64 | 65 | -v mongo:/data/db 66 | 67 | 68 | =========================================================================================================================== 69 | MONGO EXPRESS 70 | =========================================================================================================================== 71 | 72 | --- Docker --- 73 | 74 | docker run --name mongo-express -d -p 8081:8081 mongo-express 75 | 76 | --- Optional --- 77 | 78 | -e ME_CONFIG_MONGODB_ADMINUSERNAME=user -e ME_CONFIG_MONGODB_ADMINPASSWORD=secret 79 | 80 | --network pacco-network 81 | 82 | 83 | =========================================================================================================================== 84 | SQL SERVER 2018 85 | =========================================================================================================================== 86 | 87 | --- Docker --- 88 | 89 | docker run --name mssql -d -p 1433:1433 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Abcd1234!' microsoft/mssql-server-linux:2017-latest 90 | 91 | --- Optional --- 92 | 93 | -v /tmp/mssql:/var/opt/mssql 94 | 95 | 96 | =========================================================================================================================== 97 | POSTGRESQL 98 | =========================================================================================================================== 99 | 100 | --- Docker --- 101 | 102 | docker run --name postgres -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=secret postgres 103 | 104 | --- Optional --- 105 | 106 | -v /tmp/postgresql:/var/lib/postgresql/data 107 | 108 | 109 | =========================================================================================================================== 110 | INFLUXDB 111 | =========================================================================================================================== 112 | 113 | --- Docker --- 114 | 115 | docker run --name influxdb -d -p 8086:8086 influxdb 116 | 117 | --- Optional --- 118 | 119 | -v /tmp/influxdb:/var/lib/influxdb 120 | 121 | =========================================================================================================================== 122 | *** CACHE *** 123 | =========================================================================================================================== 124 | 125 | =========================================================================================================================== 126 | REDIS 127 | =========================================================================================================================== 128 | 129 | --- Docker --- 130 | 131 | docker run --name redis -d -p 6379:6379 redis 132 | 133 | --- Optional --- 134 | 135 | -v /tmp/redis/:/data 136 | 137 | 138 | =========================================================================================================================== 139 | REDIS CLI 140 | =========================================================================================================================== 141 | 142 | --- Docker --- 143 | 144 | docker run -it --rm redis redis-cli -h redis -p 6379 145 | 146 | --- Optional --- 147 | 148 | --network pacco-network 149 | 150 | =========================================================================================================================== 151 | *** SERVICE DISCOVERY *** 152 | =========================================================================================================================== 153 | 154 | =========================================================================================================================== 155 | CONSUL 156 | =========================================================================================================================== 157 | 158 | --- Docker --- 159 | 160 | docker run --name consul -d -p 8500:8500 consul 161 | 162 | --- Optional --- 163 | 164 | -v /tmp/consul/data:/consul/data 165 | 166 | -v /tmp/consul/config:/consul/config 167 | 168 | config.json: 169 | 170 | { 171 | "datacenter": "dc1", 172 | "log_level": "DEBUG", 173 | "server": true, 174 | "ui" : true, 175 | "ports": { 176 | "dns": 9600, 177 | "http": 9500, 178 | "https": -1, 179 | "serf_lan": 9301, 180 | "serf_wan": 9302, 181 | "server": 9300 182 | } 183 | } 184 | 185 | 186 | 187 | =========================================================================================================================== 188 | *** SECRET STORAGE *** 189 | =========================================================================================================================== 190 | 191 | =========================================================================================================================== 192 | VAULT 193 | =========================================================================================================================== 194 | 195 | --- Docker --- 196 | 197 | docker run --name vault -d -p 8200:8200 --cap-add=IPC_LOCK -e VAULT_ADDR='http://127.0.0.1:8200' -e 'VAULT_DEV_ROOT_TOKEN_ID=secret' vault 198 | 199 | 200 | =========================================================================================================================== 201 | VAULT SERVER 202 | =========================================================================================================================== 203 | 204 | # This is a production ready Vault Server using Consul as its backend storage for HA purposes 205 | # Set 'address' and 'advertise_addr' fields for proper IP addresses or domains. 206 | 207 | --- Docker --- 208 | 209 | docker run --name vault-server -d -p 8200:8200 --cap-add=IPC_LOCK -e VAULT_ADDR='http://127.0.0.1:8200' -e 'VAULT_LOCAL_CONFIG={"backend":{"consul":{"address":"docker.for.mac.localhost:8500","advertise_addr":"http://docker.for.mac.localhost", "path":"vault/"}},"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}}, "ui":true}' vault server 210 | 211 | # Run shell on vault-server container 212 | 213 | docker exec -it vault-server sh 214 | 215 | # Init Vault 216 | 217 | vault operator init 218 | 219 | # You will see the similar output - unseal keys + root token 220 | 221 | Unseal Key 1: O+lfzkAlw2SrlAthjROuQHOcvJroGIBo+0f4lrQ15T4K 222 | Unseal Key 2: y33W78RBDgPekmoBJS8DecAYvS73q0hp8BoiNLVcljB9 223 | Unseal Key 3: 4yGX8sLtLA8/MAdsXOWDLqHY4i0aejzhTtJsarF33WIg 224 | Unseal Key 4: 7ZXUJJ3MuQ8ac++RFX+KuLv2jXXWfYJgLd8ZXuJeN5j4 225 | Unseal Key 5: D+lvvqfcPnZ7Zlr05D8B7C9hwNGpueE/vUFw36s6alTC 226 | 227 | Initial Root Token: 79b39c49-fd07-112d-7a50-ea205e7696cb 228 | 229 | # Unseal the Vault - once completed, the Consul backend should display a "green" vault service 230 | # Execute unseal 3 times - you will be asked for 3 different keys (1-5). 231 | 232 | vault operator unseal 233 | 234 | # Login using the root token 235 | 236 | vault login 237 | 238 | # Enable userpass authentication method (can be done also via web UI) 239 | 240 | vault auth enable userpass 241 | 242 | # Open Vault UI at: http://localhost:8200 and login using root token 243 | # Go to Policies -> default and copy all of its content 244 | # Create a new Policy e.g. "services" and paste the "default" policy content + the following settings below: 245 | 246 | path "secret/*" { 247 | capabilities = ["read"] 248 | } 249 | 250 | # It will allow to create a new user (instead of using root token) and assign the "services" policy being able to read "secret" storage 251 | # Possible values: ["create", "read", "update", "delete", "list"] 252 | 253 | # Create a new account where "user" (last part of auth/ path) represents the username 254 | 255 | vault write auth/userpass/users/user password=secret policies=services 256 | 257 | # Since Vault Server uses V1 Storage by default (while dev server works with V2) we need to upgrade the storage to V2 from V1 258 | 259 | vault kv enable-versioning secret 260 | 261 | # Eventually, login again to the web UI and the Secrets -> "secret" engine should be running as "version 2". 262 | 263 | # Create a new secret by clicking "Create secret" as JSON and override there any appsettings for your application under specified path e.g. api/options 264 | 265 | # Update the "vault" section in appsettings.json file to make use of "userpass" instead of "token" or override VAULT_AUTH_TYPE, VAULT_USERNAME and VAULT_PASSWORD env variables. 266 | 267 | # Restart the app - now it will load the settings from secret Vault storage. 268 | 269 | 270 | =========================================================================================================================== 271 | VAULT SECRETS 272 | =========================================================================================================================== 273 | 274 | # DATABASE https://www.vaultproject.io/docs/secrets/databases 275 | 276 | vault secrets enable database 277 | 278 | vault write database/config/mongodb \ 279 | plugin_name=mongodb-database-plugin \ 280 | allowed_roles="availability-service" \g 281 | connection_url="mongodb://{{username}}:{{password}}@mongo:27017" \ 282 | username="root" \ 283 | password="secret" 284 | 285 | vault write database/roles/availability-service \ 286 | db_name=mongodb \ 287 | creation_statements='{ "db": "admin", "roles": [{"role": "readWrite", "db": "availability-service"}] }' \ 288 | default_ttl="1h" \ 289 | max_ttl="24h" 290 | 291 | # PKI https://www.vaultproject.io/docs/secrets/pki 292 | 293 | vault secrets enable pki 294 | 295 | vault write pki/root/generate/internal \ 296 | common_name=pacco.io \ 297 | ttl=87600h > CA_cert.crt 298 | 299 | vault delete pki/root 300 | 301 | vault write pki/config/urls \ 302 | issuing_certificates="http://localhost:8200/v1/pki/ca" \ 303 | crl_distribution_points="http://localhost:8200/v1/pki/crl" 304 | 305 | vault write pki/roles/availability-service \ 306 | allowed_domains=pacco.io \ 307 | allow_localhost=true \ 308 | allow_subdomains=true \ 309 | max_ttl=72h 310 | 311 | vault write pki/issue/availability-service \ 312 | common_name=availability-service.pacco.io 313 | 314 | vault write pki/roles/customers-service \ 315 | allowed_domains=pacco.io \ 316 | allow_localhost=true \ 317 | allow_subdomains=true \ 318 | max_ttl=72h 319 | 320 | vault write pki/issue/customers-service \ 321 | common_name=customers-service.pacco.io 322 | 323 | =========================================================================================================================== 324 | *** MONITORING *** 325 | =========================================================================================================================== 326 | 327 | =========================================================================================================================== 328 | GRAFANA 329 | =========================================================================================================================== 330 | 331 | --- Docker --- 332 | 333 | docker run --name grafana -d -p 3000:3000 grafana/grafana 334 | 335 | --- Optional --- 336 | 337 | -v /tmp/grafana:/var/lib/grafana 338 | 339 | 340 | =========================================================================================================================== 341 | PROMETHEUS 342 | =========================================================================================================================== 343 | 344 | --- Docker --- 345 | 346 | docker run --name prometheus -d -p 9090:9090 -v /tmp/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus 347 | 348 | prometheus.yml: 349 | 350 | # my global config 351 | global: 352 | scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 353 | evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. 354 | # scrape_timeout is set to the global default (10s). 355 | 356 | # Attach these labels to any time series or alerts when communicating with 357 | # external systems (federation, remote storage, Alertmanager). 358 | external_labels: 359 | monitor: 'codelab-monitor' 360 | 361 | # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. 362 | rule_files: 363 | # - "first.rules" 364 | # - "second.rules" 365 | 366 | # A scrape configuration containing exactly one endpoint to scrape: 367 | # Here it's Prometheus itself. 368 | scrape_configs: 369 | # The job name is added as a label `job=` to any timeseries scraped from this config. 370 | - job_name: 'prometheus' 371 | static_configs: 372 | - targets: ['docker.for.mac.localhost:9090'] 373 | 374 | - job_name: 'api' 375 | metrics_path: '/metrics-text' 376 | static_configs: 377 | - targets: ['docker.for.mac.localhost:5000'] 378 | 379 | 380 | 381 | =========================================================================================================================== 382 | *** LOGGING *** 383 | =========================================================================================================================== 384 | 385 | =========================================================================================================================== 386 | SEQ 387 | =========================================================================================================================== 388 | 389 | --- Docker --- 390 | 391 | docker run --name seq -d -p 5341:80 -e ACCEPT_EULA=Y datalust/seq 392 | 393 | --- Optional --- 394 | 395 | -v /tmp/seq:/data 396 | 397 | 398 | =========================================================================================================================== 399 | ELASTICSEARCH 400 | =========================================================================================================================== 401 | 402 | # The vm.max_map_count kernel has to be set to at least 262144 for production use. 403 | 404 | # Linux: 405 | grep vm.max_map_count /etc/sysctl.conf 406 | vm.max_map_count=262144 407 | 408 | # macOS: 409 | screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 410 | sysctl -w vm.max_map_count=262144 411 | 412 | # Windows 413 | docker-machine ssh 414 | sudo sysctl -w vm.max_map_count=262144 415 | 416 | --- Docker --- 417 | 418 | docker run --name elasticsearch -p 9200:9200 -p 9300:9300 docker.elastic.co/elasticsearch/elasticsearch:6.4.0 419 | 420 | --- Optional --- 421 | 422 | -e "discovery.type=single-node" 423 | 424 | -v /tmp/elasticsearch:/usr/share/elasticsearch/data 425 | 426 | 427 | =========================================================================================================================== 428 | KIBANA 429 | =========================================================================================================================== 430 | 431 | --- Docker --- 432 | 433 | docker run --name kibana -d -p 5601:5601 docker.elastic.co/kibana/kibana:6.4.0 434 | 435 | --- Optional --- 436 | 437 | -v /tmp/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml 438 | 439 | kibana.yml: 440 | 441 | server.name: kibana 442 | server.host: "0" 443 | elasticsearch.url: http://elasticsearch:9200 444 | 445 | 446 | =========================================================================================================================== 447 | LOGSTASH 448 | =========================================================================================================================== 449 | 450 | --- Docker --- 451 | 452 | docker run --name logstash -d -p 5044:5044 docker.elastic.co/logstash/logstash:6.4.0 453 | 454 | 455 | =========================================================================================================================== 456 | JAEGER 457 | =========================================================================================================================== 458 | 459 | --- Docker --- 460 | 461 | docker run --name jaeger -d -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 jaegertracing/all-in-one -------------------------------------------------------------------------------- /prod-services.yml: -------------------------------------------------------------------------------- 1 | apps: 2 | - name: api 3 | script: dotnet Pacco.APIGateway.dll 4 | cwd: ../Pacco.APIGateway/src/Pacco.APIGateway/bin/release/netcoreapp3.1/publish 5 | max_restarts: 3 6 | env: 7 | ASPNETCORE_URLS: http://*:5000 8 | - name: availability 9 | script: dotnet Pacco.Services.Availability.Api.dll 10 | cwd: ../Pacco.Services.Availability/src/Pacco.Services.Availability.Api/bin/release/netcoreapp3.1/publish 11 | max_restarts: 3 12 | env: 13 | ASPNETCORE_URLS: http://*:5001 14 | - name: customers 15 | script: dotnet Pacco.Services.Customers.Api.dll 16 | cwd: ../Pacco.Services.Customers/src/Pacco.Services.Customers.Api/bin/release/netcoreapp3.1/publish 17 | max_restarts: 3 18 | env: 19 | ASPNETCORE_URLS: http://*:5002 20 | - name: deliveries 21 | script: dotnet Pacco.Services.Deliveries.Api.dll 22 | cwd: ../Pacco.Services.Deliveries/src/Pacco.Services.Deliveries.Api/bin/release/netcoreapp3.1/publish 23 | max_restarts: 3 24 | env: 25 | ASPNETCORE_URLS: http://*:5003 26 | - name: identity 27 | script: dotnet Pacco.Services.Identity.Api.dll 28 | cwd: ../Pacco.Services.Identity/src/Pacco.Services.Identity.Api/bin/release/netcoreapp3.1/publish 29 | max_restarts: 3 30 | env: 31 | ASPNETCORE_URLS: http://*:5004 32 | - name: operations 33 | script: dotnet Pacco.Services.Operations.Api.dll 34 | cwd: ../Pacco.Services.Operations/src/Pacco.Services.Operations.Api/bin/release/netcoreapp3.1/publish 35 | max_restarts: 3 36 | env: 37 | ASPNETCORE_URLS: http://*:5005 38 | - name: orders 39 | script: dotnet Pacco.Services.Orders.Api.dll 40 | cwd: ../Pacco.Services.Orders/src/Pacco.Services.Orders.Api/bin/release/netcoreapp3.1/publish 41 | max_restarts: 3 42 | env: 43 | ASPNETCORE_URLS: http://*:5006 44 | - name: parcels 45 | script: dotnet Pacco.Services.Parcels.Api.dll 46 | cwd: ../Pacco.Services.Parcels/src/Pacco.Services.Parcels.Api/bin/release/netcoreapp3.1/publish 47 | max_restarts: 3 48 | env: 49 | ASPNETCORE_URLS: http://*:5007 50 | - name: pricing 51 | script: dotnet Pacco.Services.Pricing.Api.dll 52 | cwd: ../Pacco.Services.Pricing/src/Pacco.Services.Pricing.Api/bin/release/netcoreapp3.1/publish 53 | max_restarts: 3 54 | env: 55 | ASPNETCORE_URLS: http://*:5008 56 | - name: vehicles 57 | script: dotnet Pacco.Services.Vehicles.Api.dll 58 | cwd: ../Pacco.Services.Vehicles/src/Pacco.Services.Vehicles.Api/bin/release/netcoreapp3.1/publish 59 | max_restarts: 3 60 | env: 61 | ASPNETCORE_URLS: http://*:5009 62 | -------------------------------------------------------------------------------- /scripts/git-clone-fast.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | REPOSITORIES=(Pacco.APIGateway Pacco.APIGateway.Ocelot Pacco.Services.Availability Pacco.Services.Customers Pacco.Services.Deliveries Pacco.Services.Identity Pacco.Services.Operations Pacco.Services.Orders Pacco.Services.OrderMaker Pacco.Services.Parcels Pacco.Services.Pricing Pacco.Services.Vehicles) 3 | 4 | echo ${REPOSITORIES[@]} | sed -E -e 's/[[:blank:]]+/\n/g' | xargs -I {} -n 1 -P 0 sh -c 'printf "========================================================\nCloning repository: {}\n========================================================\n"; git clone https://github.com/devmentors/{}.git' -------------------------------------------------------------------------------- /scripts/git-clone.ps1: -------------------------------------------------------------------------------- 1 | 2 | $repos = ("Pacco.APIGateway", "Pacco.APIGateway.Ocelot", "Pacco.Services.Availability", "Pacco.Services.Customers", "Pacco.Services.Deliveries", "Pacco.Services.Identity", "Pacco.Services.Operations", "Pacco.Services.Orders", "Pacco.Services.OrderMaker", "Pacco.Services.Parcels", "Pacco.Services.Pricing", "Pacco.Services.Vehicles") 3 | 4 | foreach($repo in $repos) { 5 | Write-Host "==========================================" 6 | Write-Host "Cloning the Repository: "$repo 7 | Write-Host "==========================================" 8 | $repo_url = "https://github.com/devmentors/"+$repo+".git" 9 | git clone $repo_url 10 | } 11 | -------------------------------------------------------------------------------- /scripts/git-clone.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | REPOSITORIES=(Pacco.APIGateway Pacco.APIGateway.Ocelot Pacco.Services.Availability Pacco.Services.Customers Pacco.Services.Deliveries Pacco.Services.Identity Pacco.Services.Operations Pacco.Services.Orders Pacco.Services.OrderMaker Pacco.Services.Parcels Pacco.Services.Pricing Pacco.Services.Vehicles) 3 | 4 | for REPOSITORY in ${REPOSITORIES[*]} 5 | do 6 | echo ======================================================== 7 | echo Cloning the repository: $REPOSITORY 8 | echo ======================================================== 9 | REPO_URL=https://github.com/devmentors/$REPOSITORY.git 10 | git clone $REPO_URL 11 | cd $REPOSITORY && cd .. 12 | done -------------------------------------------------------------------------------- /scripts/git-pull-fast.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | REPOSITORIES=(Pacco.APIGateway Pacco.APIGateway.Ocelot Pacco.Services.Availability Pacco.Services.Customers Pacco.Services.Deliveries Pacco.Services.Identity Pacco.Services.Operations Pacco.Services.Orders Pacco.Services.OrderMaker Pacco.Services.Parcels Pacco.Services.Pricing Pacco.Services.Vehicles) 3 | 4 | echo ${REPOSITORIES[@]} | sed -E -e 's/[[:blank:]]+/\n/g' | xargs -I {} -n 1 -P 0 sh -c 'printf "========================================================\nUpdating the repository: {}\n========================================================\n"; git -C {} checkout develop; git -C {} pull; git -C {} checkout master; git -C {} pull;git -C {} checkout develop;' 5 | -------------------------------------------------------------------------------- /scripts/git-pull.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | REPOSITORIES=(Pacco.APIGateway Pacco.APIGateway.Ocelot Pacco.Services.Availability Pacco.Services.Customers Pacco.Services.Deliveries Pacco.Services.Identity Pacco.Services.Operations Pacco.Services.Orders Pacco.Services.OrderMaker Pacco.Services.Parcels Pacco.Services.Pricing Pacco.Services.Vehicles) 3 | 4 | for REPOSITORY in ${REPOSITORIES[*]} 5 | do 6 | echo ======================================================== 7 | echo Updating the repository: $REPOSITORY 8 | echo ======================================================== 9 | cd $REPOSITORY && git checkout develop && git pull && git checkout master && git pull && cd .. 10 | done -------------------------------------------------------------------------------- /services.yml: -------------------------------------------------------------------------------- 1 | apps: 2 | - name: api 3 | script: dotnet run 4 | cwd: ../Pacco.APIGateway/src/Pacco.APIGateway 5 | max_restarts: 3 6 | - name: availability 7 | script: dotnet run 8 | cwd: ../Pacco.Services.Availability/src/Pacco.Services.Availability.Api 9 | max_restarts: 3 10 | - name: customers 11 | script: dotnet run 12 | cwd: ../Pacco.Services.Customers/src/Pacco.Services.Customers.Api 13 | max_restarts: 3 14 | - name: deliveries 15 | script: dotnet run 16 | cwd: ../Pacco.Services.Deliveries/src/Pacco.Services.Deliveries.Api 17 | max_restarts: 3 18 | - name: identity 19 | script: dotnet run 20 | cwd: ../Pacco.Services.Identity/src/Pacco.Services.Identity.Api 21 | max_restarts: 3 22 | - name: operations 23 | script: dotnet run 24 | cwd: ../Pacco.Services.Operations/src/Pacco.Services.Operations.Api 25 | max_restarts: 3 26 | - name: orders 27 | script: dotnet run 28 | cwd: ../Pacco.Services.Orders/src/Pacco.Services.Orders.Api 29 | max_restarts: 3 30 | - name: parcels 31 | script: dotnet run 32 | cwd: ../Pacco.Services.Parcels/src/Pacco.Services.Parcels.Api 33 | max_restarts: 3 34 | - name: pricing 35 | script: dotnet run 36 | cwd: ../Pacco.Services.Pricing/src/Pacco.Services.Pricing.Api 37 | max_restarts: 3 38 | - name: vehicles 39 | script: dotnet run 40 | cwd: ../Pacco.Services.Vehicles/src/Pacco.Services.Vehicles.Api 41 | max_restarts: 3 --------------------------------------------------------------------------------