From 134c94f7cfd99a57c1cbb3cbc76efdd9f64e9ba0 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 5 Nov 2013 13:10:05 -0800 Subject: [PATCH] copying all files from private branch --- .gitignore | 93 + lib/WebMatrix.Data.dll | Bin 0 -> 37976 bytes lib/WebMatrix.WebData.dll | Bin 0 -> 74840 bytes license.md | 4 + readme.md | 23 + scripts/cleanLocalhostDatabase.bat | 4 + spec/Application_map.gxml | 2 + spec/Application_map.jpg | Bin 0 -> 66210 bytes spec/Automatic-licenses.bmml | 51 + spec/Automatic-licenses.png | Bin 0 -> 136526 bytes spec/License_relations.gxml | 2 + spec/License_relations.jpg | Bin 0 -> 48291 bytes spec/azure.md | 9 + spec/currentuse.md | 1 + spec/deployment.md | 11 + spec/ejunkie.md | 4 + spec/imageresizer-roadmap.md | 75 + spec/importing-transactions.md | 36 + spec/roadmap.md | 142 + spec/schema.md | 567 + spec/simplifications.md | 5 + spec/validation.md | 148 + src/.nuget/NuGet.Config | 6 + src/.nuget/NuGet.exe | Bin 0 -> 651264 bytes src/.nuget/NuGet.targets | 153 + src/.nuget/packages.config | 4 + .../Default.scssc | Bin 0 -> 10550 bytes .../Fonts.scssc | Bin 0 -> 2204 bytes .../Forms.scssc | Bin 0 -> 29270 bytes .../GridTables.scssc | Bin 0 -> 5485 bytes .../Icons.scssc | Bin 0 -> 14452 bytes .../Layout.scssc | Bin 0 -> 4527 bytes .../Menu.scssc | Bin 0 -> 5977 bytes .../Mixins.scssc | Bin 0 -> 12489 bytes .../Reset.scssc | Bin 0 -> 9448 bytes .../jquery.chosen.scssc | Bin 0 -> 50313 bytes .../jquery.prettyradiocheckbox.scssc | Bin 0 -> 7888 bytes .../jquery.prettyselect.scssc | Bin 0 -> 13108 bytes .../jquery.tipsy.scssc | Bin 0 -> 6397 bytes .../jquery.ui.datepicker.scssc | Bin 0 -> 37965 bytes src/KeyHub.BusinessLogic/App.config | 14 + .../Basket/BasketSteps.cs | 20 + .../Basket/BasketWrapper.cs | 312 + .../Basket/InvalidPropertyException.cs | 12 + .../CustomerAppAtLeastOneLicenseRule.cs | 34 + .../LicenseValidation/MaxDomainsCountRule.cs | 64 + .../BusinessRules/SkuExpirationRule.cs | 69 + .../BusinessRules/UniqueFeatureCodeRule.cs | 66 + .../BusinessRules/UniqueSkuCodeRule.cs | 71 + .../Caching/PerRequestCacheProvider.cs | 93 + .../Caching/RuntimeCacheProvider.cs | 121 + .../KeyHub.BusinessLogic.csproj | 112 + .../DomainLicenseEqualityComparer.cs | 18 + .../LicenseValidation/DomainValidation.cs | 19 + .../DomainValidationResult.cs | 15 + .../LicenseValidation/ILicenseValidator.cs | 16 + .../LicenseValidation/LicenseValidator.cs | 221 + .../Properties/AssemblyInfo.cs | 36 + src/KeyHub.BusinessLogic/packages.config | 5 + src/KeyHub.Client/DomainLicense.cs | 97 + src/KeyHub.Client/KeyHub.Client.csproj | 58 + src/KeyHub.Client/LicenseDeserializer.cs | 51 + src/KeyHub.Client/LicenseDownloader.cs | 77 + src/KeyHub.Client/Properties/AssemblyInfo.cs | 36 + src/KeyHub.Client/packages.config | 3 + .../Collections/AdaptingCollection.cs | 178 + .../Collections/FilteringCollection.cs | 16 + .../Collections/OrderingCollection.cs | 16 + src/KeyHub.Common/Constants/Constants.cs | 18 + src/KeyHub.Common/Extensions/ByteArray.cs | 40 + src/KeyHub.Common/Extensions/Cryptography.cs | 35 + src/KeyHub.Common/Extensions/Enum.cs | 190 + .../Extensions/NameValueCollection.cs | 292 + .../Extensions/StringBuilderExtensions.cs | 102 + src/KeyHub.Common/KeyHub.Common.csproj | 80 + src/KeyHub.Common/Properties/AssemblyInfo.cs | 36 + .../Serializers/XmlSerializers.cs | 165 + .../Serializers/XmlTextWriterFull.cs | 51 + src/KeyHub.Common/Utils/CookieUtil.cs | 85 + src/KeyHub.Common/Utils/Encryption.cs | 286 + src/KeyHub.Common/Utils/Expressions.cs | 46 + .../Utils/Globalization/Countries.cs | 66 + src/KeyHub.Common/Utils/Hashing.cs | 110 + .../Linq/CaseInsensitiveStringComparer.cs | 32 + src/KeyHub.Common/Utils/Reflection.cs | 267 + src/KeyHub.Common/Utils/Regex.cs | 62 + src/KeyHub.Common/Utils/SaveConvert.cs | 93 + src/KeyHub.Common/Utils/Strings.cs | 92 + .../Utils/SymmetricEncryption.cs | 100 + .../Utils/TimeZoneAbbreviations.cs | 251 + src/KeyHub.Common/Utils/UrlService.cs | 23 + src/KeyHub.Core/App.config | 14 + src/KeyHub.Core/Caching/CacheModes.cs | 18 + src/KeyHub.Core/Caching/ICacheProvider.cs | 45 + .../Caching/IPerRequestCacheProvider.cs | 9 + .../Caching/IRuntimeCacheProvider.cs | 9 + src/KeyHub.Core/Data/IEntityConfiguration.cs | 23 + .../Dependency/IGenericImportOrder.cs | 17 + .../InternalDeployedAssemblyLoader.cs | 91 + src/KeyHub.Core/EntityNotFoundException.cs | 15 + .../EntityOperationNotSupportedException.cs | 15 + src/KeyHub.Core/Errors/ErrorSeverity.cs | 23 + src/KeyHub.Core/Errors/GenericError.cs | 74 + src/KeyHub.Core/Errors/IError.cs | 31 + src/KeyHub.Core/Kernel/IKernelContext.cs | 17 + src/KeyHub.Core/Kernel/IKernelEvent.cs | 29 + src/KeyHub.Core/Kernel/KernelContext.cs | 114 + .../Kernel/KernelEventCompletedArguments.cs | 31 + .../Kernel/KernelEventIncompleteException.cs | 14 + src/KeyHub.Core/Kernel/KernelEventsTypes.cs | 18 + src/KeyHub.Core/KeyHub.Core.csproj | 109 + src/KeyHub.Core/Logging/ILoggingService.cs | 102 + src/KeyHub.Core/Logging/LogTypes.cs | 38 + src/KeyHub.Core/Mail/IMailService.cs | 12 + src/KeyHub.Core/Properties/AssemblyInfo.cs | 36 + src/KeyHub.Core/Settings/ISettingsContext.cs | 12 + src/KeyHub.Core/Settings/ISettingsFile.cs | 21 + src/KeyHub.Core/Settings/SettingsContext.cs | 109 + src/KeyHub.Core/Settings/SettingsFileBase.cs | 37 + src/KeyHub.Core/UnitOfWork/IUnitOfWork.cs | 27 + src/KeyHub.Core/packages.config | 5 + src/KeyHub.Data/App.config | 14 + .../ApplicationIssueUnitOfWork.cs | 98 + .../IApplicationIssueUnitOfWork.cs | 43 + src/KeyHub.Data/Boot/EnitityBoot.cs | 68 + src/KeyHub.Data/Boot/MembershipBoot.cs | 58 + src/KeyHub.Data/Boot/SettingsBoot.cs | 45 + src/KeyHub.Data/BusinessRules/BusinessRule.cs | 70 + .../BusinessRules/BusinessRuleExecutor.cs | 29 + .../BusinessRuleValidationException.cs | 46 + .../BusinessRuleValidationResult.cs | 57 + .../BusinessRules/BusinessRulesContext.cs | 132 + .../BusinessRules/IBusinessRule.cs | 30 + .../BusinessRules/IBusinessRuleExecutor.cs | 20 + .../IBusinessRuleExecutorFactory.cs | 15 + .../BusinessRules/IBusinessRule`.cs | 34 + .../Rules/UniqueFeatureCodeRule.cs | 62 + .../Application/CustomerAppConfiguration.cs | 34 + .../CustomerAppKeyConfiguration.cs | 32 + .../Application/CustomerConfiguration.cs | 32 + .../Application/FeatureConfiguration.cs | 28 + .../Application/LicenseConfiguration.cs | 32 + .../LicenseCustomerAppConfiguration.cs | 28 + .../Application/PrivateKeyConfiguration.cs | 28 + .../Application/SkuConfiguration.cs | 28 + .../Application/SkuFeatureConfiguration.cs | 28 + .../Application/TransactionConfiguration.cs | 28 + .../TransactionItemConfiguration.cs | 29 + .../UserObjectRightConfiguration.cs | 30 + .../Application/VendorConfiguration.cs | 32 + .../Membership/MembershipConfiguration.cs | 34 + .../OAuthMembershipConfiguration.cs | 32 + .../Membership/RoleConfiguration.cs | 34 + .../Membership/UserConfiguration.cs | 31 + .../Membership/UserInRoleConfiguration.cs | 28 + src/KeyHub.Data/DataContext.cs | 203 + src/KeyHub.Data/DataContextByTransaction.cs | 90 + src/KeyHub.Data/DataContextByUser.cs | 158 + src/KeyHub.Data/DbSetNotReadyException.cs | 12 + .../Extensions/DomainLicenseExtensions.cs | 27 + .../Extensions/EntitylistExtensions.cs | 67 + src/KeyHub.Data/Extensions/EnumExtensions.cs | 40 + src/KeyHub.Data/Extensions/UserExtensions.cs | 18 + src/KeyHub.Data/FilteredDbSet.cs | 125 + src/KeyHub.Data/IDataContext.cs | 53 + src/KeyHub.Data/IDataContextByTransaction.cs | 6 + src/KeyHub.Data/IDataContextByUser.cs | 12 + src/KeyHub.Data/IDataContextFactory.cs | 13 + src/KeyHub.Data/KeyHub.Data.csproj | 156 + .../KeyHub.Data.csproj.DotSettings | 2 + .../201303260850051_InitialCreate.Designer.cs | 27 + .../201303260850051_InitialCreate.cs | 411 + .../201303260850051_InitialCreate.resx | 123 + ...303261006171_CountryRightsSeed.Designer.cs | 27 + .../201303261006171_CountryRightsSeed.cs | 51 + .../201303261006171_CountryRightsSeed.resx | 123 + .../Migrations/Internal/DbSeederMigrator.cs | 150 + .../Internal/IMigrationDataSeeder.cs | 20 + .../Migrations/MigrationConfiguration.cs | 15 + src/KeyHub.Data/Properties/AssemblyInfo.cs | 36 + src/KeyHub.Data/packages.config | 4 + src/KeyHub.Integration.Tests/AccountTests.cs | 112 + src/KeyHub.Integration.Tests/App.config | 20 + .../CheckedDataContextFactory.cs | 56 + .../KeyHub.Integration.Tests.csproj | 126 + .../LicenseValidationScenario.cs | 120 + .../LicenseValidatorTests.cs | 78 + .../Properties/AssemblyInfo.cs | 36 + .../TestSetup/CleanDatabaseAttribute.cs | 30 + .../TestSetup/IISExpressDriver.cs | 37 + .../TestSetup/KeyHubWebDriver.cs | 36 + .../TestSetup/PlainProcessDriver.cs | 22 + .../TestSetup/ProcessDriver.cs | 138 + src/KeyHub.Integration.Tests/issues.txt | 56 + src/KeyHub.Integration.Tests/packages.config | 9 + src/KeyHub.Model/App.config | 14 + .../Application/ApplicationIssueSeverity.cs | 9 + .../Definition/Application/Country.cs | 39 + .../Definition/Application/Customer.cs | 71 + .../Definition/Application/CustomerApp.cs | 48 + .../Application/CustomerAppIssue.cs | 48 + .../Definition/Application/CustomerAppKey.cs | 35 + .../Definition/Application/DomainLicense.cs | 75 + .../Definition/Application/Feature.cs | 64 + .../Definition/Application/License.cs | 91 + .../Application/LicenseCustomerApp.cs | 42 + .../Definition/Application/ObjectTypes.cs | 35 + .../Definition/Application/PrivateKey.cs | 56 + .../Definition/Application/SKU.cs | 143 + .../Definition/Application/SkuFeature.cs | 42 + .../Definition/Application/Transaction.cs | 73 + .../Application/TransactionIgnoredItem.cs | 42 + .../Definition/Application/TransactionItem.cs | 58 + .../Application/TransactionStatus.cs | 22 + .../Definition/Application/Vendor.cs | 70 + .../Definition/Membership/Membership.cs | 78 + .../Definition/Membership/OAuthMembership.cs | 36 + .../Definition/Membership/Right.cs | 32 + .../Definition/Membership/RightObject.cs | 25 + .../Membership/Rights/BelongToEntity.cs | 27 + .../Membership/Rights/EditEntityInfo.cs | 19 + .../Membership/Rights/EditEntityMembers.cs | 19 + .../Membership/Rights/EditLicenseInfo.cs | 19 + .../Membership/Rights/GrantMemberRights.cs | 19 + .../Definition/Membership/Rights/IRight.cs | 26 + .../Membership/Rights/VendorAdmin.cs | 19 + .../Membership/Rights/VendorReporting.cs | 19 + .../Membership/Rights/ViewLicenseInfo.cs | 19 + .../Definition/Membership/Role.cs | 32 + .../Definition/Membership/User.cs | 46 + .../Membership/UserCustomerRight.cs | 21 + .../Definition/Membership/UserInRole.cs | 30 + .../Definition/Membership/UserLicenseRight.cs | 21 + .../Definition/Membership/UserObjectRight.cs | 55 + .../Definition/Membership/UserVendorRight.cs | 21 + src/KeyHub.Model/IModelItem.cs | 15 + src/KeyHub.Model/KeyHub.Model.csproj | 124 + .../Logic/Application/CustomerApp.cs | 43 + .../Logic/Application/DomainLicense.cs | 21 + src/KeyHub.Model/Logic/Application/License.cs | 31 + .../Logic/Application/PrivateKey.cs | 54 + src/KeyHub.Model/Logic/Application/Role.cs | 24 + src/KeyHub.Model/Logic/Application/SKU.cs | 57 + .../Logic/Application/Transaction.cs | 41 + src/KeyHub.Model/Logic/Application/User.cs | 76 + src/KeyHub.Model/Properties/AssemblyInfo.cs | 36 + src/KeyHub.Model/packages.config | 4 + src/KeyHub.Runtime/App.config | 14 + src/KeyHub.Runtime/ApplicationContext.cs | 95 + src/KeyHub.Runtime/CacheContext.cs | 64 + src/KeyHub.Runtime/DependencyContext.cs | 134 + src/KeyHub.Runtime/KeyHub.Runtime.csproj | 92 + src/KeyHub.Runtime/LogContext.cs | 31 + src/KeyHub.Runtime/Properties/AssemblyInfo.cs | 36 + src/KeyHub.Runtime/packages.config | 7 + src/KeyHub.Tests/App.config | 95 + .../LicenseValidation/MaxDomainsCountTest.cs | 345 + .../Common/Utils/SymmetricEncryptionTests.cs | 25 + src/KeyHub.Tests/Controllers/ExampleTest.cs | 68 + .../Controllers/HomeControllerTest.cs | 39 + .../Controllers/TransactionByIpnTest.cs | 98 + .../Controllers/TransactionControllerTest.cs | 171 + src/KeyHub.Tests/KeyHub.Tests.csproj | 184 + src/KeyHub.Tests/Properties/AssemblyInfo.cs | 35 + .../TestCore/FakeDataContextFactory.cs | 54 + src/KeyHub.Tests/TestCore/FakeDbSet.cs | 131 + src/KeyHub.Tests/TestCore/FakeMailService.cs | 23 + src/KeyHub.Tests/TestCore/MvcMockHelpers.cs | 102 + .../TestData/CustomerAppKeyTestData.cs | 20 + .../TestData/CustomerAppTestData.cs | 39 + .../TestData/DomainLicenseTestData.cs | 22 + src/KeyHub.Tests/TestData/FeatureTestData.cs | 21 + src/KeyHub.Tests/TestData/GuidTestData.cs | 14 + src/KeyHub.Tests/TestData/LicenseTestData.cs | 21 + .../TestData/PrivateKeyTestData.cs | 22 + src/KeyHub.Tests/TestData/SkuTestData.cs | 36 + src/KeyHub.Tests/TestData/UserTestData.cs | 31 + src/KeyHub.Tests/packages.config | 18 + .../LicenseValidationRequest.cs | 85 + .../LicenseValidationResult.cs | 6 + .../LicenseValidationController.cs | 162 + .../Transaction/BaseTransactionController.cs | 115 + .../Transaction/TransactionRequest.cs | 20 + .../Transaction/TransactionResult.cs | 11 + .../Controllers/TransactionByIpnController.cs | 292 + .../Api/Controllers/TransactionController.cs | 46 + src/KeyHub.Web/App_Start/AuthConfig.cs | 49 + src/KeyHub.Web/App_Start/BundleConfig.cs | 40 + src/KeyHub.Web/App_Start/FilterConfig.cs | 13 + .../App_Start/MicrosoftScopedClient.cs | 206 + src/KeyHub.Web/App_Start/RouteConfig.cs | 30 + .../CompositionContainerFactory.cs | 75 + .../KeyHubApplicationAssemblyFilter.cs | 14 + src/KeyHub.Web/Composition/ObjectFactory.cs | 48 + src/KeyHub.Web/Composition/ObjectManager.cs | 15 + .../Composition/WindsorCompositionRoot.cs | 44 + .../Composition/WindsorControllerFactory.cs | 33 + .../Composition/WindsorDependencyResolver.cs | 28 + .../ComponentRegistrationExtensions.cs | 13 + .../Contextual/ContainerContext.cs | 56 + .../Contextual/ContainerContextStore.cs | 54 + .../Contextual/IContainerContextStore.cs | 9 + .../HttpApplicationScopeAccessor.cs | 50 + .../HybridLifestyleManager.cs | 52 + ...bridPerWebRequestPerThreadScopeAccessor.cs | 8 + .../HybridPerWebRequestScopeAccessor.cs | 25 + ...bridPerWebRequestTransientScopeAccessor.cs | 6 + .../WindsorLifestyles/HybridScopeAccessor.cs | 26 + .../LifestyleRegistrationExtensions.cs | 47 + .../PerHttpApplicationLifestyleModule.cs | 44 + .../PerWebRequestLifestyleModuleUtils.cs | 15 + .../PerWebSessionLifestyleModule.cs | 79 + .../TransientScopeAccessor.cs | 12 + .../WebSessionScopeAccessor.cs | 22 + .../Content/Images/bgChosenSprite.png | Bin 0 -> 791 bytes .../Images/bgFrmCheckboxRadioSprite.png | Bin 0 -> 5864 bytes src/KeyHub.Web/Content/Images/bgIcons.png | Bin 0 -> 63703 bytes src/KeyHub.Web/Content/Images/bgLogo.png | Bin 0 -> 1113 bytes src/KeyHub.Web/Content/Images/bgSprite.png | Bin 0 -> 63386 bytes src/KeyHub.Web/Content/Site.css | 769 + src/KeyHub.Web/Content/Styles/Default.css | 1523 ++ src/KeyHub.Web/Content/Styles/Default.scss | 112 + src/KeyHub.Web/Content/Styles/Fonts.css | 14 + src/KeyHub.Web/Content/Styles/Fonts.scss | 18 + src/KeyHub.Web/Content/Styles/Forms.css | 176 + src/KeyHub.Web/Content/Styles/Forms.scss | 246 + src/KeyHub.Web/Content/Styles/GridTables.css | 46 + src/KeyHub.Web/Content/Styles/GridTables.scss | 60 + src/KeyHub.Web/Content/Styles/Icons.css | 477 + src/KeyHub.Web/Content/Styles/Icons.scss | 98 + src/KeyHub.Web/Content/Styles/Layout.css | 29 + src/KeyHub.Web/Content/Styles/Layout.scss | 47 + src/KeyHub.Web/Content/Styles/Menu.css | 48 + src/KeyHub.Web/Content/Styles/Menu.scss | 56 + src/KeyHub.Web/Content/Styles/Mixins.css | 0 src/KeyHub.Web/Content/Styles/Mixins.scss | 63 + src/KeyHub.Web/Content/Styles/Reset.css | 42 + src/KeyHub.Web/Content/Styles/Reset.scss | 42 + .../Content/Styles/jquery.chosen.css | 321 + .../Content/Styles/jquery.chosen.scss | 378 + .../Styles/jquery.prettyradiocheckbox.css | 81 + .../Styles/jquery.prettyradiocheckbox.scss | 103 + .../Content/Styles/jquery.tipsy.css | 49 + .../Content/Styles/jquery.tipsy.scss | 59 + .../Content/Styles/jquery.ui.datepicker.css | 214 + .../Content/Styles/jquery.ui.datepicker.scss | 253 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../themes/base/jquery.ui.accordion.css | 24 + .../Content/themes/base/jquery.ui.all.css | 16 + .../themes/base/jquery.ui.autocomplete.css | 62 + .../Content/themes/base/jquery.ui.base.css | 11 + .../Content/themes/base/jquery.ui.button.css | 43 + .../Content/themes/base/jquery.ui.core.css | 46 + .../themes/base/jquery.ui.datepicker.css | 73 + .../Content/themes/base/jquery.ui.dialog.css | 26 + .../themes/base/jquery.ui.progressbar.css | 16 + .../themes/base/jquery.ui.resizable.css | 25 + .../themes/base/jquery.ui.selectable.css | 15 + .../Content/themes/base/jquery.ui.slider.css | 29 + .../Content/themes/base/jquery.ui.tabs.css | 23 + .../Content/themes/base/jquery.ui.theme.css | 257 + .../Controllers/AccountController.cs | 533 + .../Controllers/AccountRightsController.cs | 171 + src/KeyHub.Web/Controllers/ControllerBase.cs | 38 + .../Controllers/CustomerAppController.cs | 309 + .../Controllers/CustomerAppIssueController.cs | 104 + .../Controllers/CustomerController.cs | 121 + .../Controllers/DomainLicenseController.cs | 230 + .../Controllers/FeatureController.cs | 136 + src/KeyHub.Web/Controllers/HomeController.cs | 44 + .../Controllers/LicenseController.cs | 211 + src/KeyHub.Web/Controllers/MailController.cs | 83 + .../Controllers/PrivateKeyController.cs | 159 + src/KeyHub.Web/Controllers/SKUController.cs | 152 + .../Controllers/TransactionController.cs | 342 + .../Controllers/VendorController.cs | 160 + .../Extensions/SelectListExtensions.cs | 101 + src/KeyHub.Web/Global.asax | 1 + src/KeyHub.Web/Global.asax.cs | 47 + src/KeyHub.Web/Images/NuGetGallery.png | Bin 0 -> 4144 bytes src/KeyHub.Web/Images/accent.png | Bin 0 -> 528 bytes src/KeyHub.Web/Images/aspNetHome.png | Bin 0 -> 3736 bytes src/KeyHub.Web/Images/bullet.png | Bin 0 -> 2867 bytes src/KeyHub.Web/Images/facebook.png | Bin 0 -> 529 bytes src/KeyHub.Web/Images/findHosting.png | Bin 0 -> 4329 bytes src/KeyHub.Web/Images/heroAccent.png | Bin 0 -> 572 bytes src/KeyHub.Web/Images/orderedList0.png | Bin 0 -> 3424 bytes src/KeyHub.Web/Images/orderedList1.png | Bin 0 -> 653 bytes src/KeyHub.Web/Images/orderedList2.png | Bin 0 -> 733 bytes src/KeyHub.Web/Images/orderedList3.png | Bin 0 -> 772 bytes src/KeyHub.Web/Images/orderedList4.png | Bin 0 -> 3355 bytes src/KeyHub.Web/Images/orderedList5.png | Bin 0 -> 3361 bytes src/KeyHub.Web/Images/orderedList6.png | Bin 0 -> 3757 bytes src/KeyHub.Web/Images/orderedList7.png | Bin 0 -> 3651 bytes src/KeyHub.Web/Images/orderedList8.png | Bin 0 -> 3467 bytes src/KeyHub.Web/Images/orderedList9.png | Bin 0 -> 3446 bytes src/KeyHub.Web/Images/twitter.png | Bin 0 -> 488 bytes src/KeyHub.Web/Images/windowsLive.png | Bin 0 -> 3302 bytes .../Installers/BusinessRulesInstaller.cs | 28 + .../Installers/CachingInstallers.cs | 19 + .../Installers/ControllerInstaller.cs | 39 + .../Installers/DataContextInstaller.cs | 39 + src/KeyHub.Web/Installers/KernelInstaller.cs | 20 + src/KeyHub.Web/Installers/LicenseInstaller.cs | 13 + src/KeyHub.Web/Installers/LoggingInstaller.cs | 18 + .../Installers/MailServiceInstaller.cs | 20 + .../Installers/UnitOfWorkInstaller.cs | 20 + .../Installers/WindsorUnitOfWorkInstaller.cs | 18 + src/KeyHub.Web/KeyHub.Web.csproj | 658 + src/KeyHub.Web/KeyHub.Web.csproj.DotSettings | 2 + src/KeyHub.Web/Logging/NLogLoggingService.cs | 115 + src/KeyHub.Web/Mail/MailService.cs | 41 + src/KeyHub.Web/Properties/AssemblyInfo.cs | 35 + .../Properties/Settings.Designer.cs | 44 + src/KeyHub.Web/Properties/Settings.settings | 12 + src/KeyHub.Web/Scripts/Checkout.js | 42 + src/KeyHub.Web/Scripts/JavaScripts.js | 52 + src/KeyHub.Web/Scripts/_references.js | 6 + src/KeyHub.Web/Scripts/jquery-1.6.2-vsdoc.js | 9134 +++++++++++ src/KeyHub.Web/Scripts/jquery-1.6.2.js | 9007 +++++++++++ src/KeyHub.Web/Scripts/jquery-1.6.2.min.js | 45 + src/KeyHub.Web/Scripts/jquery-ui-1.8.11.js | 12515 ++++++++++++++++ .../Scripts/jquery-ui-1.8.11.min.js | 1682 +++ src/KeyHub.Web/Scripts/jquery.chosen.min.js | 10 + .../Scripts/jquery.prettyradiocheckbox.js | 119 + src/KeyHub.Web/Scripts/jquery.tipsy.js | 199 + .../Scripts/jquery.unobtrusive-ajax.js | 163 + .../Scripts/jquery.unobtrusive-ajax.min.js | 5 + .../Scripts/jquery.validate-vsdoc.js | 1323 ++ src/KeyHub.Web/Scripts/jquery.validate.js | 1194 ++ src/KeyHub.Web/Scripts/jquery.validate.min.js | 79 + .../Scripts/jquery.validate.unobtrusive.js | 345 + .../jquery.validate.unobtrusive.min.js | 5 + .../Scripts/knockout-2.1.0.debug.js | 3443 +++++ src/KeyHub.Web/Scripts/knockout-2.1.0.js | 86 + src/KeyHub.Web/ViewModels/BaseViewModel.cs | 39 + .../Customer/CustomerCreateViewModel.cs | 49 + .../Customer/CustomerEditViewModel.cs | 50 + .../Customer/CustomerIndexViewModel.cs | 71 + .../ViewModels/Customer/CustomerViewModel.cs | 110 + .../CustomerApp/CustomerAppCreateViewModel.cs | 88 + .../CustomerApp/CustomerAppEditViewModel.cs | 97 + .../CustomerApp/CustomerAppIndexViewModel.cs | 91 + .../CustomerApp/CustomerAppViewModel.cs | 57 + .../CustomerAppIssueIndexViewModel.cs | 42 + .../CustomerAppIssueViewModel.cs | 77 + .../DomainLicenseCreateViewModel.cs | 53 + .../DomainLicenseEditViewModel.cs | 40 + .../DomainLicenseIndexViewModel.cs | 62 + .../DomainLicense/DomainLicenseViewModel.cs | 116 + .../Feature/FeatureCreateViewModel.cs | 46 + .../Feature/FeatureEditViewModel.cs | 51 + .../Feature/FeatureIndexViewModel.cs | 63 + .../ViewModels/Feature/FeatureViewModel.cs | 72 + .../ViewModels/Home/HomeViewModel.cs | 38 + .../ViewModels/Home/MainMenuViewModel.cs | 42 + .../License/LicenseCreateViewModel.cs | 55 + .../License/LicenseDetailsViewModel.cs | 73 + .../License/LicenseEditViewModel.cs | 56 + .../License/LicenseIndexViewModel.cs | 85 + .../ViewModels/License/LicenseViewModel.cs | 102 + .../ViewModels/Mail/IssueMailViewModel.cs | 13 + .../Mail/TransactionMailViewModel.cs | 15 + .../PrivateKey/PrivateKeyCreateViewModel.cs | 54 + .../PrivateKey/PrivateKeyEditViewModel.cs | 40 + .../PrivateKey/PrivateKeyIndexViewModel.cs | 52 + .../PrivateKey/PrivateKeyViewModel.cs | 74 + .../Right/UserObjectRightViewModel.cs | 11 + .../ViewModels/SKU/SKUCreateViewModel.cs | 96 + .../ViewModels/SKU/SKUEditViewModel.cs | 112 + .../ViewModels/SKU/SKUIndexViewModel.cs | 79 + src/KeyHub.Web/ViewModels/SKU/SKUViewModel.cs | 185 + .../TransactionCheckoutViewModel.cs | 103 + .../Transaction/TransactionCreateViewModel.cs | 82 + .../TransactionDetailsViewModel.cs | 141 + .../Transaction/TransactionIndexViewModel.cs | 89 + .../Transaction/TransactionViewModel.cs | 67 + .../User/ChangePasswordViewModel.cs | 39 + .../ViewModels/User/CurrentUserViewModel.cs | 74 + .../User/ExternalUserCreateViewModel.cs | 24 + .../ViewModels/User/LoginViewModel.cs | 19 + .../ViewModels/User/RegisterViewModel.cs | 37 + .../ViewModels/User/UserCreateViewModel.cs | 68 + .../ViewModels/User/UserEditViewModel.cs | 57 + .../ViewModels/User/UserIndexViewModel.cs | 75 + .../ViewModels/User/UserViewModel.cs | 75 + .../UserObjectRightCreateViewModel.cs | 48 + .../UserObjectRightIndexViewModel.cs | 115 + .../UserObjectRightViewModel.cs | 79 + .../Vendor/VendorCreateViewModel.cs | 46 + .../Vendor/VendorDetailsViewModel.cs | 59 + .../ViewModels/Vendor/VendorEditViewModel.cs | 48 + .../ViewModels/Vendor/VendorIndexViewModel.cs | 72 + .../ViewModels/Vendor/VendorViewModel.cs | 104 + .../Views/Account/ChangePassword.cshtml | 41 + .../Account/ChangePasswordSuccess.cshtml | 14 + src/KeyHub.Web/Views/Account/Create.cshtml | 58 + .../Views/Account/DetailsPartial.cshtml | 29 + src/KeyHub.Web/Views/Account/Edit.cshtml | 45 + .../Views/Account/ExternalLoginFailure.cshtml | 8 + src/KeyHub.Web/Views/Account/Index.cshtml | 50 + .../Views/Account/LinkAccount.cshtml | 41 + src/KeyHub.Web/Views/Account/Login.cshtml | 53 + src/KeyHub.Web/Views/Account/Register.cshtml | 52 + .../Account/_ExternalLoginsListPartial.cshtml | 28 + .../Views/AccountRights/Create.cshtml | 56 + .../Views/AccountRights/IndexPartial.cshtml | 54 + src/KeyHub.Web/Views/Customer/Create.cshtml | 86 + src/KeyHub.Web/Views/Customer/Edit.cshtml | 86 + src/KeyHub.Web/Views/Customer/Index.cshtml | 75 + .../Views/CustomerApp/Create.cshtml | 47 + .../Views/CustomerApp/CreatePartial.cshtml | 42 + .../Views/CustomerApp/Details.cshtml | 25 + src/KeyHub.Web/Views/CustomerApp/Edit.cshtml | 47 + src/KeyHub.Web/Views/CustomerApp/Index.cshtml | 55 + .../Views/CustomerApp/IndexPartial.cshtml | 45 + .../Views/CustomerAppIssue/Details.cshtml | 35 + .../Views/CustomerAppIssue/Index.cshtml | 47 + .../CustomerAppIssue/IndexPartial.cshtml | 49 + .../Views/DomainLicense/Create.cshtml | 71 + .../Views/DomainLicense/CreatePartial.cshtml | 58 + .../Views/DomainLicense/Edit.cshtml | 64 + .../Views/DomainLicense/IndexPartial.cshtml | 56 + src/KeyHub.Web/Views/Feature/Create.cshtml | 54 + src/KeyHub.Web/Views/Feature/Edit.cshtml | 54 + src/KeyHub.Web/Views/Feature/Index.cshtml | 48 + src/KeyHub.Web/Views/Home/Index.cshtml | 17 + src/KeyHub.Web/Views/Home/MainMenu.cshtml | 44 + src/KeyHub.Web/Views/License/Create.cshtml | 79 + src/KeyHub.Web/Views/License/Details.cshtml | 66 + src/KeyHub.Web/Views/License/Edit.cshtml | 79 + src/KeyHub.Web/Views/License/Index.cshtml | 60 + .../Views/License/IndexPartial.cshtml | 53 + .../Views/Mail/IssueEmail.html.cshtml | 22 + .../Mail/NewTransactionEmail.html.cshtml | 19 + src/KeyHub.Web/Views/PrivateKey/Create.cshtml | 38 + src/KeyHub.Web/Views/PrivateKey/Edit.cshtml | 46 + .../Views/PrivateKey/IndexPartial.cshtml | 36 + src/KeyHub.Web/Views/SKU/Create.cshtml | 167 + src/KeyHub.Web/Views/SKU/Edit.cshtml | 173 + src/KeyHub.Web/Views/SKU/Index.cshtml | 65 + src/KeyHub.Web/Views/Shared/Error.cshtml | 62 + src/KeyHub.Web/Views/Shared/Flash.cshtml | 3 + .../Views/Shared/_CreateCustomer.cshtml | 67 + src/KeyHub.Web/Views/Shared/_Layout.cshtml | 63 + .../Views/Shared/_LoginPartial.cshtml | 10 + .../Views/Transaction/Checkout.cshtml | 99 + .../Views/Transaction/ClaimLicenses.cshtml | 58 + .../Views/Transaction/Complete.cshtml | 21 + .../Views/Transaction/Create.cshtml | 34 + .../Views/Transaction/Details.cshtml | 23 + .../Views/Transaction/DetailsPartial.cshtml | 56 + src/KeyHub.Web/Views/Transaction/Index.cshtml | 53 + src/KeyHub.Web/Views/Vendor/Create.cshtml | 78 + src/KeyHub.Web/Views/Vendor/Details.cshtml | 71 + src/KeyHub.Web/Views/Vendor/Edit.cshtml | 78 + src/KeyHub.Web/Views/Vendor/Index.cshtml | 75 + src/KeyHub.Web/Views/Web.config | 59 + src/KeyHub.Web/Views/_ViewStart.cshtml | 3 + src/KeyHub.Web/Web.Debug.config | 30 + src/KeyHub.Web/Web.Release.config | 45 + src/KeyHub.Web/Web.config | 200 + src/KeyHub.Web/favicon.ico | Bin 0 -> 32038 bytes src/KeyHub.Web/packages.config | 39 + src/KeyHub.Web/web.nlog | 13 + src/KeyHub.sln | 99 + src/Packages.dgml | 143 + 579 files changed, 74687 insertions(+) create mode 100644 .gitignore create mode 100644 lib/WebMatrix.Data.dll create mode 100644 lib/WebMatrix.WebData.dll create mode 100644 license.md create mode 100644 readme.md create mode 100644 scripts/cleanLocalhostDatabase.bat create mode 100644 spec/Application_map.gxml create mode 100644 spec/Application_map.jpg create mode 100644 spec/Automatic-licenses.bmml create mode 100644 spec/Automatic-licenses.png create mode 100644 spec/License_relations.gxml create mode 100644 spec/License_relations.jpg create mode 100644 spec/azure.md create mode 100644 spec/currentuse.md create mode 100644 spec/deployment.md create mode 100644 spec/ejunkie.md create mode 100644 spec/imageresizer-roadmap.md create mode 100644 spec/importing-transactions.md create mode 100644 spec/roadmap.md create mode 100644 spec/schema.md create mode 100644 spec/simplifications.md create mode 100644 spec/validation.md create mode 100644 src/.nuget/NuGet.Config create mode 100644 src/.nuget/NuGet.exe create mode 100644 src/.nuget/NuGet.targets create mode 100644 src/.nuget/packages.config create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Default.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Fonts.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Forms.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/GridTables.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Icons.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Layout.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Menu.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Mixins.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/Reset.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/jquery.chosen.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/jquery.prettyradiocheckbox.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/jquery.prettyselect.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/jquery.tipsy.scssc create mode 100644 src/.sass-cache/ee93b37b79636d8dbaee6233500a86e4558a7ee4/jquery.ui.datepicker.scssc create mode 100644 src/KeyHub.BusinessLogic/App.config create mode 100644 src/KeyHub.BusinessLogic/Basket/BasketSteps.cs create mode 100644 src/KeyHub.BusinessLogic/Basket/BasketWrapper.cs create mode 100644 src/KeyHub.BusinessLogic/Basket/InvalidPropertyException.cs create mode 100644 src/KeyHub.BusinessLogic/BusinessRules/CustomerAppAtLeastOneLicenseRule.cs create mode 100644 src/KeyHub.BusinessLogic/BusinessRules/LicenseValidation/MaxDomainsCountRule.cs create mode 100644 src/KeyHub.BusinessLogic/BusinessRules/SkuExpirationRule.cs create mode 100644 src/KeyHub.BusinessLogic/BusinessRules/UniqueFeatureCodeRule.cs create mode 100644 src/KeyHub.BusinessLogic/BusinessRules/UniqueSkuCodeRule.cs create mode 100644 src/KeyHub.BusinessLogic/Caching/PerRequestCacheProvider.cs create mode 100644 src/KeyHub.BusinessLogic/Caching/RuntimeCacheProvider.cs create mode 100644 src/KeyHub.BusinessLogic/KeyHub.BusinessLogic.csproj create mode 100644 src/KeyHub.BusinessLogic/LicenseValidation/DomainLicenseEqualityComparer.cs create mode 100644 src/KeyHub.BusinessLogic/LicenseValidation/DomainValidation.cs create mode 100644 src/KeyHub.BusinessLogic/LicenseValidation/DomainValidationResult.cs create mode 100644 src/KeyHub.BusinessLogic/LicenseValidation/ILicenseValidator.cs create mode 100644 src/KeyHub.BusinessLogic/LicenseValidation/LicenseValidator.cs create mode 100644 src/KeyHub.BusinessLogic/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.BusinessLogic/packages.config create mode 100644 src/KeyHub.Client/DomainLicense.cs create mode 100644 src/KeyHub.Client/KeyHub.Client.csproj create mode 100644 src/KeyHub.Client/LicenseDeserializer.cs create mode 100644 src/KeyHub.Client/LicenseDownloader.cs create mode 100644 src/KeyHub.Client/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Client/packages.config create mode 100644 src/KeyHub.Common/Collections/AdaptingCollection.cs create mode 100644 src/KeyHub.Common/Collections/FilteringCollection.cs create mode 100644 src/KeyHub.Common/Collections/OrderingCollection.cs create mode 100644 src/KeyHub.Common/Constants/Constants.cs create mode 100644 src/KeyHub.Common/Extensions/ByteArray.cs create mode 100644 src/KeyHub.Common/Extensions/Cryptography.cs create mode 100644 src/KeyHub.Common/Extensions/Enum.cs create mode 100644 src/KeyHub.Common/Extensions/NameValueCollection.cs create mode 100644 src/KeyHub.Common/Extensions/StringBuilderExtensions.cs create mode 100644 src/KeyHub.Common/KeyHub.Common.csproj create mode 100644 src/KeyHub.Common/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Common/Serializers/XmlSerializers.cs create mode 100644 src/KeyHub.Common/Serializers/XmlTextWriterFull.cs create mode 100644 src/KeyHub.Common/Utils/CookieUtil.cs create mode 100644 src/KeyHub.Common/Utils/Encryption.cs create mode 100644 src/KeyHub.Common/Utils/Expressions.cs create mode 100644 src/KeyHub.Common/Utils/Globalization/Countries.cs create mode 100644 src/KeyHub.Common/Utils/Hashing.cs create mode 100644 src/KeyHub.Common/Utils/Linq/CaseInsensitiveStringComparer.cs create mode 100644 src/KeyHub.Common/Utils/Reflection.cs create mode 100644 src/KeyHub.Common/Utils/Regex.cs create mode 100644 src/KeyHub.Common/Utils/SaveConvert.cs create mode 100644 src/KeyHub.Common/Utils/Strings.cs create mode 100644 src/KeyHub.Common/Utils/SymmetricEncryption.cs create mode 100644 src/KeyHub.Common/Utils/TimeZoneAbbreviations.cs create mode 100644 src/KeyHub.Common/Utils/UrlService.cs create mode 100644 src/KeyHub.Core/App.config create mode 100644 src/KeyHub.Core/Caching/CacheModes.cs create mode 100644 src/KeyHub.Core/Caching/ICacheProvider.cs create mode 100644 src/KeyHub.Core/Caching/IPerRequestCacheProvider.cs create mode 100644 src/KeyHub.Core/Caching/IRuntimeCacheProvider.cs create mode 100644 src/KeyHub.Core/Data/IEntityConfiguration.cs create mode 100644 src/KeyHub.Core/Dependency/IGenericImportOrder.cs create mode 100644 src/KeyHub.Core/Dependency/InternalDeployedAssemblyLoader.cs create mode 100644 src/KeyHub.Core/EntityNotFoundException.cs create mode 100644 src/KeyHub.Core/EntityOperationNotSupportedException.cs create mode 100644 src/KeyHub.Core/Errors/ErrorSeverity.cs create mode 100644 src/KeyHub.Core/Errors/GenericError.cs create mode 100644 src/KeyHub.Core/Errors/IError.cs create mode 100644 src/KeyHub.Core/Kernel/IKernelContext.cs create mode 100644 src/KeyHub.Core/Kernel/IKernelEvent.cs create mode 100644 src/KeyHub.Core/Kernel/KernelContext.cs create mode 100644 src/KeyHub.Core/Kernel/KernelEventCompletedArguments.cs create mode 100644 src/KeyHub.Core/Kernel/KernelEventIncompleteException.cs create mode 100644 src/KeyHub.Core/Kernel/KernelEventsTypes.cs create mode 100644 src/KeyHub.Core/KeyHub.Core.csproj create mode 100644 src/KeyHub.Core/Logging/ILoggingService.cs create mode 100644 src/KeyHub.Core/Logging/LogTypes.cs create mode 100644 src/KeyHub.Core/Mail/IMailService.cs create mode 100644 src/KeyHub.Core/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Core/Settings/ISettingsContext.cs create mode 100644 src/KeyHub.Core/Settings/ISettingsFile.cs create mode 100644 src/KeyHub.Core/Settings/SettingsContext.cs create mode 100644 src/KeyHub.Core/Settings/SettingsFileBase.cs create mode 100644 src/KeyHub.Core/UnitOfWork/IUnitOfWork.cs create mode 100644 src/KeyHub.Core/packages.config create mode 100644 src/KeyHub.Data/App.config create mode 100644 src/KeyHub.Data/ApplicationIssues/ApplicationIssueUnitOfWork.cs create mode 100644 src/KeyHub.Data/ApplicationIssues/IApplicationIssueUnitOfWork.cs create mode 100644 src/KeyHub.Data/Boot/EnitityBoot.cs create mode 100644 src/KeyHub.Data/Boot/MembershipBoot.cs create mode 100644 src/KeyHub.Data/Boot/SettingsBoot.cs create mode 100644 src/KeyHub.Data/BusinessRules/BusinessRule.cs create mode 100644 src/KeyHub.Data/BusinessRules/BusinessRuleExecutor.cs create mode 100644 src/KeyHub.Data/BusinessRules/BusinessRuleValidationException.cs create mode 100644 src/KeyHub.Data/BusinessRules/BusinessRuleValidationResult.cs create mode 100644 src/KeyHub.Data/BusinessRules/BusinessRulesContext.cs create mode 100644 src/KeyHub.Data/BusinessRules/IBusinessRule.cs create mode 100644 src/KeyHub.Data/BusinessRules/IBusinessRuleExecutor.cs create mode 100644 src/KeyHub.Data/BusinessRules/IBusinessRuleExecutorFactory.cs create mode 100644 src/KeyHub.Data/BusinessRules/IBusinessRule`.cs create mode 100644 src/KeyHub.Data/BusinessRules/Rules/UniqueFeatureCodeRule.cs create mode 100644 src/KeyHub.Data/Configuration/Application/CustomerAppConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/CustomerAppKeyConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/CustomerConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/FeatureConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/LicenseConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/LicenseCustomerAppConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/PrivateKeyConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/SkuConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/SkuFeatureConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/TransactionConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/TransactionItemConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/UserObjectRightConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Application/VendorConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Membership/MembershipConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Membership/OAuthMembershipConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Membership/RoleConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Membership/UserConfiguration.cs create mode 100644 src/KeyHub.Data/Configuration/Membership/UserInRoleConfiguration.cs create mode 100644 src/KeyHub.Data/DataContext.cs create mode 100644 src/KeyHub.Data/DataContextByTransaction.cs create mode 100644 src/KeyHub.Data/DataContextByUser.cs create mode 100644 src/KeyHub.Data/DbSetNotReadyException.cs create mode 100644 src/KeyHub.Data/Extensions/DomainLicenseExtensions.cs create mode 100644 src/KeyHub.Data/Extensions/EntitylistExtensions.cs create mode 100644 src/KeyHub.Data/Extensions/EnumExtensions.cs create mode 100644 src/KeyHub.Data/Extensions/UserExtensions.cs create mode 100644 src/KeyHub.Data/FilteredDbSet.cs create mode 100644 src/KeyHub.Data/IDataContext.cs create mode 100644 src/KeyHub.Data/IDataContextByTransaction.cs create mode 100644 src/KeyHub.Data/IDataContextByUser.cs create mode 100644 src/KeyHub.Data/IDataContextFactory.cs create mode 100644 src/KeyHub.Data/KeyHub.Data.csproj create mode 100644 src/KeyHub.Data/KeyHub.Data.csproj.DotSettings create mode 100644 src/KeyHub.Data/Migrations/201303260850051_InitialCreate.Designer.cs create mode 100644 src/KeyHub.Data/Migrations/201303260850051_InitialCreate.cs create mode 100644 src/KeyHub.Data/Migrations/201303260850051_InitialCreate.resx create mode 100644 src/KeyHub.Data/Migrations/201303261006171_CountryRightsSeed.Designer.cs create mode 100644 src/KeyHub.Data/Migrations/201303261006171_CountryRightsSeed.cs create mode 100644 src/KeyHub.Data/Migrations/201303261006171_CountryRightsSeed.resx create mode 100644 src/KeyHub.Data/Migrations/Internal/DbSeederMigrator.cs create mode 100644 src/KeyHub.Data/Migrations/Internal/IMigrationDataSeeder.cs create mode 100644 src/KeyHub.Data/Migrations/MigrationConfiguration.cs create mode 100644 src/KeyHub.Data/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Data/packages.config create mode 100644 src/KeyHub.Integration.Tests/AccountTests.cs create mode 100644 src/KeyHub.Integration.Tests/App.config create mode 100644 src/KeyHub.Integration.Tests/CheckedDataContextFactory.cs create mode 100644 src/KeyHub.Integration.Tests/KeyHub.Integration.Tests.csproj create mode 100644 src/KeyHub.Integration.Tests/LicenseValidationScenario.cs create mode 100644 src/KeyHub.Integration.Tests/LicenseValidatorTests.cs create mode 100644 src/KeyHub.Integration.Tests/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Integration.Tests/TestSetup/CleanDatabaseAttribute.cs create mode 100644 src/KeyHub.Integration.Tests/TestSetup/IISExpressDriver.cs create mode 100644 src/KeyHub.Integration.Tests/TestSetup/KeyHubWebDriver.cs create mode 100644 src/KeyHub.Integration.Tests/TestSetup/PlainProcessDriver.cs create mode 100644 src/KeyHub.Integration.Tests/TestSetup/ProcessDriver.cs create mode 100644 src/KeyHub.Integration.Tests/issues.txt create mode 100644 src/KeyHub.Integration.Tests/packages.config create mode 100644 src/KeyHub.Model/App.config create mode 100644 src/KeyHub.Model/Definition/Application/ApplicationIssueSeverity.cs create mode 100644 src/KeyHub.Model/Definition/Application/Country.cs create mode 100644 src/KeyHub.Model/Definition/Application/Customer.cs create mode 100644 src/KeyHub.Model/Definition/Application/CustomerApp.cs create mode 100644 src/KeyHub.Model/Definition/Application/CustomerAppIssue.cs create mode 100644 src/KeyHub.Model/Definition/Application/CustomerAppKey.cs create mode 100644 src/KeyHub.Model/Definition/Application/DomainLicense.cs create mode 100644 src/KeyHub.Model/Definition/Application/Feature.cs create mode 100644 src/KeyHub.Model/Definition/Application/License.cs create mode 100644 src/KeyHub.Model/Definition/Application/LicenseCustomerApp.cs create mode 100644 src/KeyHub.Model/Definition/Application/ObjectTypes.cs create mode 100644 src/KeyHub.Model/Definition/Application/PrivateKey.cs create mode 100644 src/KeyHub.Model/Definition/Application/SKU.cs create mode 100644 src/KeyHub.Model/Definition/Application/SkuFeature.cs create mode 100644 src/KeyHub.Model/Definition/Application/Transaction.cs create mode 100644 src/KeyHub.Model/Definition/Application/TransactionIgnoredItem.cs create mode 100644 src/KeyHub.Model/Definition/Application/TransactionItem.cs create mode 100644 src/KeyHub.Model/Definition/Application/TransactionStatus.cs create mode 100644 src/KeyHub.Model/Definition/Application/Vendor.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Membership.cs create mode 100644 src/KeyHub.Model/Definition/Membership/OAuthMembership.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Right.cs create mode 100644 src/KeyHub.Model/Definition/Membership/RightObject.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/BelongToEntity.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/EditEntityInfo.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/EditEntityMembers.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/EditLicenseInfo.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/GrantMemberRights.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/IRight.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/VendorAdmin.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/VendorReporting.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Rights/ViewLicenseInfo.cs create mode 100644 src/KeyHub.Model/Definition/Membership/Role.cs create mode 100644 src/KeyHub.Model/Definition/Membership/User.cs create mode 100644 src/KeyHub.Model/Definition/Membership/UserCustomerRight.cs create mode 100644 src/KeyHub.Model/Definition/Membership/UserInRole.cs create mode 100644 src/KeyHub.Model/Definition/Membership/UserLicenseRight.cs create mode 100644 src/KeyHub.Model/Definition/Membership/UserObjectRight.cs create mode 100644 src/KeyHub.Model/Definition/Membership/UserVendorRight.cs create mode 100644 src/KeyHub.Model/IModelItem.cs create mode 100644 src/KeyHub.Model/KeyHub.Model.csproj create mode 100644 src/KeyHub.Model/Logic/Application/CustomerApp.cs create mode 100644 src/KeyHub.Model/Logic/Application/DomainLicense.cs create mode 100644 src/KeyHub.Model/Logic/Application/License.cs create mode 100644 src/KeyHub.Model/Logic/Application/PrivateKey.cs create mode 100644 src/KeyHub.Model/Logic/Application/Role.cs create mode 100644 src/KeyHub.Model/Logic/Application/SKU.cs create mode 100644 src/KeyHub.Model/Logic/Application/Transaction.cs create mode 100644 src/KeyHub.Model/Logic/Application/User.cs create mode 100644 src/KeyHub.Model/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Model/packages.config create mode 100644 src/KeyHub.Runtime/App.config create mode 100644 src/KeyHub.Runtime/ApplicationContext.cs create mode 100644 src/KeyHub.Runtime/CacheContext.cs create mode 100644 src/KeyHub.Runtime/DependencyContext.cs create mode 100644 src/KeyHub.Runtime/KeyHub.Runtime.csproj create mode 100644 src/KeyHub.Runtime/LogContext.cs create mode 100644 src/KeyHub.Runtime/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Runtime/packages.config create mode 100644 src/KeyHub.Tests/App.config create mode 100644 src/KeyHub.Tests/BusinessLogic/LicenseValidation/MaxDomainsCountTest.cs create mode 100644 src/KeyHub.Tests/Common/Utils/SymmetricEncryptionTests.cs create mode 100644 src/KeyHub.Tests/Controllers/ExampleTest.cs create mode 100644 src/KeyHub.Tests/Controllers/HomeControllerTest.cs create mode 100644 src/KeyHub.Tests/Controllers/TransactionByIpnTest.cs create mode 100644 src/KeyHub.Tests/Controllers/TransactionControllerTest.cs create mode 100644 src/KeyHub.Tests/KeyHub.Tests.csproj create mode 100644 src/KeyHub.Tests/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Tests/TestCore/FakeDataContextFactory.cs create mode 100644 src/KeyHub.Tests/TestCore/FakeDbSet.cs create mode 100644 src/KeyHub.Tests/TestCore/FakeMailService.cs create mode 100644 src/KeyHub.Tests/TestCore/MvcMockHelpers.cs create mode 100644 src/KeyHub.Tests/TestData/CustomerAppKeyTestData.cs create mode 100644 src/KeyHub.Tests/TestData/CustomerAppTestData.cs create mode 100644 src/KeyHub.Tests/TestData/DomainLicenseTestData.cs create mode 100644 src/KeyHub.Tests/TestData/FeatureTestData.cs create mode 100644 src/KeyHub.Tests/TestData/GuidTestData.cs create mode 100644 src/KeyHub.Tests/TestData/LicenseTestData.cs create mode 100644 src/KeyHub.Tests/TestData/PrivateKeyTestData.cs create mode 100644 src/KeyHub.Tests/TestData/SkuTestData.cs create mode 100644 src/KeyHub.Tests/TestData/UserTestData.cs create mode 100644 src/KeyHub.Tests/packages.config create mode 100644 src/KeyHub.Web/Api/Controllers/LicenseValidation/LicenseValidationRequest.cs create mode 100644 src/KeyHub.Web/Api/Controllers/LicenseValidation/LicenseValidationResult.cs create mode 100644 src/KeyHub.Web/Api/Controllers/LicenseValidationController.cs create mode 100644 src/KeyHub.Web/Api/Controllers/Transaction/BaseTransactionController.cs create mode 100644 src/KeyHub.Web/Api/Controllers/Transaction/TransactionRequest.cs create mode 100644 src/KeyHub.Web/Api/Controllers/Transaction/TransactionResult.cs create mode 100644 src/KeyHub.Web/Api/Controllers/TransactionByIpnController.cs create mode 100644 src/KeyHub.Web/Api/Controllers/TransactionController.cs create mode 100644 src/KeyHub.Web/App_Start/AuthConfig.cs create mode 100644 src/KeyHub.Web/App_Start/BundleConfig.cs create mode 100644 src/KeyHub.Web/App_Start/FilterConfig.cs create mode 100644 src/KeyHub.Web/App_Start/MicrosoftScopedClient.cs create mode 100644 src/KeyHub.Web/App_Start/RouteConfig.cs create mode 100644 src/KeyHub.Web/Composition/CompositionContainerFactory.cs create mode 100644 src/KeyHub.Web/Composition/KeyHubApplicationAssemblyFilter.cs create mode 100644 src/KeyHub.Web/Composition/ObjectFactory.cs create mode 100644 src/KeyHub.Web/Composition/ObjectManager.cs create mode 100644 src/KeyHub.Web/Composition/WindsorCompositionRoot.cs create mode 100644 src/KeyHub.Web/Composition/WindsorControllerFactory.cs create mode 100644 src/KeyHub.Web/Composition/WindsorDependencyResolver.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/ComponentRegistrationExtensions.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/Contextual/ContainerContext.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/Contextual/ContainerContextStore.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/Contextual/IContainerContextStore.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HttpApplicationScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HybridLifestyleManager.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HybridPerWebRequestPerThreadScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HybridPerWebRequestScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HybridPerWebRequestTransientScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/HybridScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/LifestyleRegistrationExtensions.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/PerHttpApplicationLifestyleModule.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/PerWebRequestLifestyleModuleUtils.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/PerWebSessionLifestyleModule.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/TransientScopeAccessor.cs create mode 100644 src/KeyHub.Web/Composition/WindsorLifestyles/WebSessionScopeAccessor.cs create mode 100644 src/KeyHub.Web/Content/Images/bgChosenSprite.png create mode 100644 src/KeyHub.Web/Content/Images/bgFrmCheckboxRadioSprite.png create mode 100644 src/KeyHub.Web/Content/Images/bgIcons.png create mode 100644 src/KeyHub.Web/Content/Images/bgLogo.png create mode 100644 src/KeyHub.Web/Content/Images/bgSprite.png create mode 100644 src/KeyHub.Web/Content/Site.css create mode 100644 src/KeyHub.Web/Content/Styles/Default.css create mode 100644 src/KeyHub.Web/Content/Styles/Default.scss create mode 100644 src/KeyHub.Web/Content/Styles/Fonts.css create mode 100644 src/KeyHub.Web/Content/Styles/Fonts.scss create mode 100644 src/KeyHub.Web/Content/Styles/Forms.css create mode 100644 src/KeyHub.Web/Content/Styles/Forms.scss create mode 100644 src/KeyHub.Web/Content/Styles/GridTables.css create mode 100644 src/KeyHub.Web/Content/Styles/GridTables.scss create mode 100644 src/KeyHub.Web/Content/Styles/Icons.css create mode 100644 src/KeyHub.Web/Content/Styles/Icons.scss create mode 100644 src/KeyHub.Web/Content/Styles/Layout.css create mode 100644 src/KeyHub.Web/Content/Styles/Layout.scss create mode 100644 src/KeyHub.Web/Content/Styles/Menu.css create mode 100644 src/KeyHub.Web/Content/Styles/Menu.scss create mode 100644 src/KeyHub.Web/Content/Styles/Mixins.css create mode 100644 src/KeyHub.Web/Content/Styles/Mixins.scss create mode 100644 src/KeyHub.Web/Content/Styles/Reset.css create mode 100644 src/KeyHub.Web/Content/Styles/Reset.scss create mode 100644 src/KeyHub.Web/Content/Styles/jquery.chosen.css create mode 100644 src/KeyHub.Web/Content/Styles/jquery.chosen.scss create mode 100644 src/KeyHub.Web/Content/Styles/jquery.prettyradiocheckbox.css create mode 100644 src/KeyHub.Web/Content/Styles/jquery.prettyradiocheckbox.scss create mode 100644 src/KeyHub.Web/Content/Styles/jquery.tipsy.css create mode 100644 src/KeyHub.Web/Content/Styles/jquery.tipsy.scss create mode 100644 src/KeyHub.Web/Content/Styles/jquery.ui.datepicker.css create mode 100644 src/KeyHub.Web/Content/Styles/jquery.ui.datepicker.scss create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-icons_222222_256x240.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-icons_454545_256x240.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-icons_888888_256x240.png create mode 100644 src/KeyHub.Web/Content/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.accordion.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.all.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.autocomplete.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.base.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.button.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.core.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.datepicker.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.dialog.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.progressbar.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.resizable.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.selectable.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.slider.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.tabs.css create mode 100644 src/KeyHub.Web/Content/themes/base/jquery.ui.theme.css create mode 100644 src/KeyHub.Web/Controllers/AccountController.cs create mode 100644 src/KeyHub.Web/Controllers/AccountRightsController.cs create mode 100644 src/KeyHub.Web/Controllers/ControllerBase.cs create mode 100644 src/KeyHub.Web/Controllers/CustomerAppController.cs create mode 100644 src/KeyHub.Web/Controllers/CustomerAppIssueController.cs create mode 100644 src/KeyHub.Web/Controllers/CustomerController.cs create mode 100644 src/KeyHub.Web/Controllers/DomainLicenseController.cs create mode 100644 src/KeyHub.Web/Controllers/FeatureController.cs create mode 100644 src/KeyHub.Web/Controllers/HomeController.cs create mode 100644 src/KeyHub.Web/Controllers/LicenseController.cs create mode 100644 src/KeyHub.Web/Controllers/MailController.cs create mode 100644 src/KeyHub.Web/Controllers/PrivateKeyController.cs create mode 100644 src/KeyHub.Web/Controllers/SKUController.cs create mode 100644 src/KeyHub.Web/Controllers/TransactionController.cs create mode 100644 src/KeyHub.Web/Controllers/VendorController.cs create mode 100644 src/KeyHub.Web/Extensions/SelectListExtensions.cs create mode 100644 src/KeyHub.Web/Global.asax create mode 100644 src/KeyHub.Web/Global.asax.cs create mode 100644 src/KeyHub.Web/Images/NuGetGallery.png create mode 100644 src/KeyHub.Web/Images/accent.png create mode 100644 src/KeyHub.Web/Images/aspNetHome.png create mode 100644 src/KeyHub.Web/Images/bullet.png create mode 100644 src/KeyHub.Web/Images/facebook.png create mode 100644 src/KeyHub.Web/Images/findHosting.png create mode 100644 src/KeyHub.Web/Images/heroAccent.png create mode 100644 src/KeyHub.Web/Images/orderedList0.png create mode 100644 src/KeyHub.Web/Images/orderedList1.png create mode 100644 src/KeyHub.Web/Images/orderedList2.png create mode 100644 src/KeyHub.Web/Images/orderedList3.png create mode 100644 src/KeyHub.Web/Images/orderedList4.png create mode 100644 src/KeyHub.Web/Images/orderedList5.png create mode 100644 src/KeyHub.Web/Images/orderedList6.png create mode 100644 src/KeyHub.Web/Images/orderedList7.png create mode 100644 src/KeyHub.Web/Images/orderedList8.png create mode 100644 src/KeyHub.Web/Images/orderedList9.png create mode 100644 src/KeyHub.Web/Images/twitter.png create mode 100644 src/KeyHub.Web/Images/windowsLive.png create mode 100644 src/KeyHub.Web/Installers/BusinessRulesInstaller.cs create mode 100644 src/KeyHub.Web/Installers/CachingInstallers.cs create mode 100644 src/KeyHub.Web/Installers/ControllerInstaller.cs create mode 100644 src/KeyHub.Web/Installers/DataContextInstaller.cs create mode 100644 src/KeyHub.Web/Installers/KernelInstaller.cs create mode 100644 src/KeyHub.Web/Installers/LicenseInstaller.cs create mode 100644 src/KeyHub.Web/Installers/LoggingInstaller.cs create mode 100644 src/KeyHub.Web/Installers/MailServiceInstaller.cs create mode 100644 src/KeyHub.Web/Installers/UnitOfWorkInstaller.cs create mode 100644 src/KeyHub.Web/Installers/WindsorUnitOfWorkInstaller.cs create mode 100644 src/KeyHub.Web/KeyHub.Web.csproj create mode 100644 src/KeyHub.Web/KeyHub.Web.csproj.DotSettings create mode 100644 src/KeyHub.Web/Logging/NLogLoggingService.cs create mode 100644 src/KeyHub.Web/Mail/MailService.cs create mode 100644 src/KeyHub.Web/Properties/AssemblyInfo.cs create mode 100644 src/KeyHub.Web/Properties/Settings.Designer.cs create mode 100644 src/KeyHub.Web/Properties/Settings.settings create mode 100644 src/KeyHub.Web/Scripts/Checkout.js create mode 100644 src/KeyHub.Web/Scripts/JavaScripts.js create mode 100644 src/KeyHub.Web/Scripts/_references.js create mode 100644 src/KeyHub.Web/Scripts/jquery-1.6.2-vsdoc.js create mode 100644 src/KeyHub.Web/Scripts/jquery-1.6.2.js create mode 100644 src/KeyHub.Web/Scripts/jquery-1.6.2.min.js create mode 100644 src/KeyHub.Web/Scripts/jquery-ui-1.8.11.js create mode 100644 src/KeyHub.Web/Scripts/jquery-ui-1.8.11.min.js create mode 100644 src/KeyHub.Web/Scripts/jquery.chosen.min.js create mode 100644 src/KeyHub.Web/Scripts/jquery.prettyradiocheckbox.js create mode 100644 src/KeyHub.Web/Scripts/jquery.tipsy.js create mode 100644 src/KeyHub.Web/Scripts/jquery.unobtrusive-ajax.js create mode 100644 src/KeyHub.Web/Scripts/jquery.unobtrusive-ajax.min.js create mode 100644 src/KeyHub.Web/Scripts/jquery.validate-vsdoc.js create mode 100644 src/KeyHub.Web/Scripts/jquery.validate.js create mode 100644 src/KeyHub.Web/Scripts/jquery.validate.min.js create mode 100644 src/KeyHub.Web/Scripts/jquery.validate.unobtrusive.js create mode 100644 src/KeyHub.Web/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 src/KeyHub.Web/Scripts/knockout-2.1.0.debug.js create mode 100644 src/KeyHub.Web/Scripts/knockout-2.1.0.js create mode 100644 src/KeyHub.Web/ViewModels/BaseViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Customer/CustomerCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Customer/CustomerEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Customer/CustomerIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Customer/CustomerViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerApp/CustomerAppCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerApp/CustomerAppEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerApp/CustomerAppIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerApp/CustomerAppViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerAppIssue/CustomerAppIssueIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/CustomerAppIssue/CustomerAppIssueViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/DomainLicense/DomainLicenseCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/DomainLicense/DomainLicenseEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/DomainLicense/DomainLicenseIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/DomainLicense/DomainLicenseViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Feature/FeatureCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Feature/FeatureEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Feature/FeatureIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Feature/FeatureViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Home/HomeViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Home/MainMenuViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/License/LicenseCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/License/LicenseDetailsViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/License/LicenseEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/License/LicenseIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/License/LicenseViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Mail/IssueMailViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Mail/TransactionMailViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/PrivateKey/PrivateKeyCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/PrivateKey/PrivateKeyEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/PrivateKey/PrivateKeyIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/PrivateKey/PrivateKeyViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Right/UserObjectRightViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/SKU/SKUCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/SKU/SKUEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/SKU/SKUIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/SKU/SKUViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Transaction/TransactionCheckoutViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Transaction/TransactionCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Transaction/TransactionDetailsViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Transaction/TransactionIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Transaction/TransactionViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/ChangePasswordViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/CurrentUserViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/ExternalUserCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/LoginViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/RegisterViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/UserCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/UserEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/UserIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/User/UserViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/UserObjectRight/UserObjectRightCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/UserObjectRight/UserObjectRightIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/UserObjectRight/UserObjectRightViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Vendor/VendorCreateViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Vendor/VendorDetailsViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Vendor/VendorEditViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Vendor/VendorIndexViewModel.cs create mode 100644 src/KeyHub.Web/ViewModels/Vendor/VendorViewModel.cs create mode 100644 src/KeyHub.Web/Views/Account/ChangePassword.cshtml create mode 100644 src/KeyHub.Web/Views/Account/ChangePasswordSuccess.cshtml create mode 100644 src/KeyHub.Web/Views/Account/Create.cshtml create mode 100644 src/KeyHub.Web/Views/Account/DetailsPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Account/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/Account/ExternalLoginFailure.cshtml create mode 100644 src/KeyHub.Web/Views/Account/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Account/LinkAccount.cshtml create mode 100644 src/KeyHub.Web/Views/Account/Login.cshtml create mode 100644 src/KeyHub.Web/Views/Account/Register.cshtml create mode 100644 src/KeyHub.Web/Views/Account/_ExternalLoginsListPartial.cshtml create mode 100644 src/KeyHub.Web/Views/AccountRights/Create.cshtml create mode 100644 src/KeyHub.Web/Views/AccountRights/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Customer/Create.cshtml create mode 100644 src/KeyHub.Web/Views/Customer/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/Customer/Index.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/Create.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/CreatePartial.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/Details.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/Index.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerApp/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerAppIssue/Details.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerAppIssue/Index.cshtml create mode 100644 src/KeyHub.Web/Views/CustomerAppIssue/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/DomainLicense/Create.cshtml create mode 100644 src/KeyHub.Web/Views/DomainLicense/CreatePartial.cshtml create mode 100644 src/KeyHub.Web/Views/DomainLicense/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/DomainLicense/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Feature/Create.cshtml create mode 100644 src/KeyHub.Web/Views/Feature/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/Feature/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Home/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Home/MainMenu.cshtml create mode 100644 src/KeyHub.Web/Views/License/Create.cshtml create mode 100644 src/KeyHub.Web/Views/License/Details.cshtml create mode 100644 src/KeyHub.Web/Views/License/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/License/Index.cshtml create mode 100644 src/KeyHub.Web/Views/License/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Mail/IssueEmail.html.cshtml create mode 100644 src/KeyHub.Web/Views/Mail/NewTransactionEmail.html.cshtml create mode 100644 src/KeyHub.Web/Views/PrivateKey/Create.cshtml create mode 100644 src/KeyHub.Web/Views/PrivateKey/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/PrivateKey/IndexPartial.cshtml create mode 100644 src/KeyHub.Web/Views/SKU/Create.cshtml create mode 100644 src/KeyHub.Web/Views/SKU/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/SKU/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Shared/Error.cshtml create mode 100644 src/KeyHub.Web/Views/Shared/Flash.cshtml create mode 100644 src/KeyHub.Web/Views/Shared/_CreateCustomer.cshtml create mode 100644 src/KeyHub.Web/Views/Shared/_Layout.cshtml create mode 100644 src/KeyHub.Web/Views/Shared/_LoginPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/Checkout.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/ClaimLicenses.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/Complete.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/Create.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/Details.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/DetailsPartial.cshtml create mode 100644 src/KeyHub.Web/Views/Transaction/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Vendor/Create.cshtml create mode 100644 src/KeyHub.Web/Views/Vendor/Details.cshtml create mode 100644 src/KeyHub.Web/Views/Vendor/Edit.cshtml create mode 100644 src/KeyHub.Web/Views/Vendor/Index.cshtml create mode 100644 src/KeyHub.Web/Views/Web.config create mode 100644 src/KeyHub.Web/Views/_ViewStart.cshtml create mode 100644 src/KeyHub.Web/Web.Debug.config create mode 100644 src/KeyHub.Web/Web.Release.config create mode 100644 src/KeyHub.Web/Web.config create mode 100644 src/KeyHub.Web/favicon.ico create mode 100644 src/KeyHub.Web/packages.config create mode 100644 src/KeyHub.Web/web.nlog create mode 100644 src/KeyHub.sln create mode 100644 src/Packages.dgml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d016789 --- /dev/null +++ b/.gitignore @@ -0,0 +1,93 @@ +# Build Folders (you can keep bin if you'd like, to store dlls and pdbs) +[Bb]in/ +[Oo]bj/ + +# mstest test results +TestResults +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +# User-specific files +*.suo +*.user +*.sln.docstates +# Build results +[Dd]ebug/ +[Rr]elease/ +x64/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +*.vssscc +.builds +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +# Visual Studio profiler +*.psess +*.vsp +# Guidance Automation Toolkit +*.gpState +# ReSharper is a .NET coding add-in +_ReSharper* +# NCrunch +*.ncrunch* +.*crunch*.local.xml +# Installshield output folder +[Ee]xpress +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html +# Click-Once directory +publish +# Publish Web Output +*.Publish.xml +# Others +[Bb]in +[Oo]bj +sql +[Tt]est[Rr]esult* +*.Cache +ClientBin +[Ss]tyle[Cc]op.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +# LocalDB files +*.ldf +*.mdf +# Application log folder +Logs +/keyhub.sublime-project +/keyhub.sublime-workspace +# NuGet packages folder +[Pp]ackages/ +# Elmah error folder +App_Data/Elmah +error-*.xml \ No newline at end of file diff --git a/lib/WebMatrix.Data.dll b/lib/WebMatrix.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..78f75eee7dab32c3a30dff87600a22809e719573 GIT binary patch literal 37976 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 bLm%5R4|quiB5E3l?ic`kAECU6 zle(hZ&c85nZ%U?;-3XMjp^Q>dH=d5a`6zu;GTNH}BA1oR%se1}9^L|ucK%%(RybTX zlRPv(O?2h0L;;QD-$pd2glJ_Ltkq$Mdz8)CKj!XB5B&Iovp#xYf9Z?qjj0P>`^;%i zd2gO^_5-gBeEOx{Ti*KeqKhAGy*jk&`7gh?F4=i^!`1)w-}L4sRrjX5j{n%eYt?OU zY+Tv+>!u%{wD#qei*Mfh>DbJNPT%;{hU#x_8nO1+tJ^n>JNU$oYY*OdYt_m(=w0vi zH&vef?t|uI=lu2G<1fAHd$*1^BQ-?9`eV!_D%M|X0 zFm#+zh;FQ4=*LyQ zqp{dqW<;9cYcPHFmC_EmY0y6plcu7+DFO`d9?5jPxf}YxU4N44x_~`qWdwcH3&!q7 z2~{|I%!*97kHaSdUpzoWuT%lz;W`|PI-sFLW~3U#g5E`_5RFn5qv?>Sa;|-(5^iJ$ z>QZk;Mzen=`$r*jC345BC$d5(bk`qm?&hbHqHk5l)C&5?bb0tp3Gcq3zP|;Q{0#OPw zE?DMmSeR-B7*w5)*(sf`$k$Nn6&Cvv3lKlOGJ?{38%L_ZG;>=bypc90Z3!^bhcr?V z=%*p!mW~W3|AG=f12M@}azXDN#uH>Hh6?yWZI3+HMphuxWV;K>hyyGoC!vXgp?4Py z{Y$~nx$Z)AV+BM1yI|WIlesU3Mg`3Xg1wN|DlpvK&2Gb3_4GEDnD2WZM09Eq%ZxX% zm?@mAVjGJhYdGo@gzZv6^=IhZip@wj;u7c?!TO54;P%47rxp%At#B~JI*9S%+?*`Y zlY;f(4?g(d!n~;Ec2sUbAz_6Ix>5z_=5aa)r&qD7qZ+)a4uHFKy;pNoT$L<4%9Q}q zprDf@eAJJ}vFZ`y#~I1}c$ksxU|sThcq3~W*9zWMICw{PF!T+EB&C4Fg8&S8DnL94 zfO1p;;z0nWJSspu2!Mi70peMune1$G=xqZ6it!Qp`S0v7Y&zi&3su2f~UNz!i{P60r zBXu?qcS%1C(B0^VP{JWIc|B-ma9sy{2{7IpOxK|u8Yfpg1MP0ebnzLWE1eoS2ZSP> zaP}~kpzhuXP<(0R;BGvwV!|XlMb%Yk9;4V_Q86mg1;hjX$|}pp>LSR!Hn@jVO7h)3 zOpQVBs6-V0#AY~vsRlaac|0*Lgv`VhTvSYVSa2gBh10mkJMOAukQa}ep&}kPE6qp> zF$a8A$wmpNHX{QPFece70X1f1Py)s#cS}HI3v#QF5jzn^%v5h=8y+f$TCWh6kmQ5F zm(G%n-JgfeA<2Wq1+Wic6!m%&Tao2U^<-dDVUmv?evF4sqVJfIq)p6JS#wD8E29b! ztFJ-dn1gg61O8yh^x9lvHmIs94!9zhAf(7y03Y*Mm7#>j)~Pa-&kWG<=x-R9L#EB% z^`nKo9_H*;@mE89#w53kzs7yQH#YeR@e4ndj6nuU-H8|~d%({t8AuvtLnY+Sh+W9-kULJDW=F{#`0lNok#ve#0?uGE1)1dud2D8RY-V{J%;MB( zb`-PN=Tn`u+?$@sq*21vxouhQ3;Ar)K1T^TiKJ5{WH98F{(gJ_LYHo4k|&I>vMDNU zQtl7g`XuD9v{XyT?|0R zo`&Zo{6w*FE%e}yMH5fju%3fzNFu&o&1q_&cfJGs^1S{sAs|Y=+#AAzYHS7cP{>;; z{Rf_^6h9!AoGaNDG)M<8<7_v|IL+LyX{)%$XFWIh> zK92LjP=0vb#aM!>WJSQaobp48HK$Fpqhy7BS+bHoo{6Ja;6-7TipC4>VJt!2jfM+~ zFMR^1EKscBh%l!W0;*UH`YNTjB?gf}i90ZcrxU@3x!z<2#6fB0sq9;eV5ODIi$lc~ z{wtZG2SUY(Fr-XW@cU-D=gXK0cSjNA52nuMj>E@+ZcFks(jxh>-Vv?+8## z?Lc1T7?mO}Hfh2rG`+~j_LS+35O3cvUjes#5!iL67pE~%9fp)MmY^yr7Z8Svg5s3Z z3p2_);NTgjO|zqT#y-DN-l7pp4ktuBI0Up11+#?6mnA=W~IVZ z6UZW;(x&+n$YTHK7XO4Ih3rd~Rau>8KKmSv>)q|a!*CM*O%Oy;pRmaH^-@gsU%dA z;buuCM!AwIu?)ad?WuU*xDv7r?Nl-*hFgvSk$}}Q! z_a6%S8en;qWl6{$#}`9T-h}KOYl0m7{O7_rJxzJBLWEd(8!_~D<0(UWsi)Li>MQjp z_9BTM+997FS`9jtkWW{>WVvN&67-I4vbdD`C{nW!LQ8uS`v6RppkjaWH`Q1mtB{Kj zUJ`I8F2>U{_hTqjWx3mvxCCJ0QaI)Q>0Qt>m$BDlMxb7xZ)!y0H!krd|7cMPc@#l^ z@-LYn_ms-@O|Pre9l08efC0oKhVk4Lp|u{Yn53FKsT;Y}YUBixXIfU- z;<3V`YUEWw%@nbj#hbbYX?B^8F?I%OChB602sl=XUf2ngO#7=G^6Rg5De3h~)v?rn z--OB&nffxGW4Mk=4o6r;^dzq3GHTT}Qf%_c$B?6Cei!Aa!(YsVdz32F;csQakGQDz zjc##Q6d#&wdVTK5ZK!V}gQLAZPh>x!oLMq@D(%hT<`jSv<~ffREde%!g7! zZy}5a79Z@Ux{fi2Rs2!Khgu__0D9tjI4+;?eAK8>l@;k55KzcT{TCvJsM|Q&uwB(n z+b3b;CT3 z7NdncHW#uOIW3Hi83W^|*-KpTG71HoxHl1)RkQ{weSK9jF`l)U?> zeWfMu0osl>2@f;h$;#kt=PTv~O`5J3B*63VFewnSFU3 zP0UFoooZqMmoS-vW}a+gRHl_fK8KlyQ>WQc&CEW(!x-JrmTqVISith6s-TG+{0{D6 zEJ5A;+bdV}ZqK)9k3Cvd>y|-!gR1a`vln=tGn7`#V0+e#L3i>?mPn-x2%Odd~02{fg1j?5KVv;08`w zps2&?SDZG@jw&kq{+Io#e5RK$?$JaZudu^@I|dNUQUhL3pfQ-y!{G*%Nohc`e(Qk$(lU*hW^{3)t%{AJ4G0xquDNaS~9Yv%;?DDH4Es^-KDx{?>7ZpsXQC;PHwL))^b6`6|kwZ8v#w zU$f(^^(?x?Vb-(BlP99wmq0qE9*Pu2?nC+rCLp>CL#?QzK3cc$ev|WQWj$jfk`=R!{%aWXYT=6i{->kz#4^MD_(4{v7lEBvA;a)_`}MA!3Hf`~UmM0FM(JRJKYhl2hFueRz#pp`C} zOCNv2t}~V-)R?KW)t<>qCRy1ZU?0~(>14>Z3)XH7n^Ni`=XQ*f!^kdUqnx|g$}d1C zLU%Rg=T|m)i2V3mkvfJIsMP1N)EHWn-pCSBa23MxlUbU%9cyP!BI$O+7ZhK*i^&vR zg>Z9a$P97Hh*Jv*H3?@h>vY4y^d_dyf{S@jVe`v*D9av36I?Z;V9+P?gaU_Ez*}pL zi1jQ@22Y#ulR*eD>#&dEIU|qHk&7Uf-sC*yc9JD@GyAx8oyIubdhM8h{c??5A_#eX3_j;V-ia zucr&5HZXJIo}rBAQxA37yMwxu`h||}rb6dOIdrnRX{K`)MX=1!vw`f6#k$j(=4HQRO6r$KdFNKcbujGU6y7Hm$&Dc3MEooZso3%%5v-NRIWE}>%= z+IjK(V;Fhmw7WB}!g32dAGSsH=5he1Wy+nq%@tP_p}O^Q zY=)E!bke?Gt9?upJ3}x0kHxb9y^QL$*gVrRkQBYwkDQY^Ok%xfEhi@+z9=1KUL5hD zGh+#=(r^N9=9C3BT(+XL?aR(Xr<^*?j?!@Kb85JpX@ez`kN#NIo$pzoQM|aT6?q6; z#XSlvE!})af}c5eBqYi@&i_4TOa3YU?-vd}m>oPO`ExWc?hpKpA2_cMCaUxL;z2;z z3J?zhYOMhAAYh^uARYuvvI4||J*OWcQ~UY?1kRgy7?tFk4f#>71Zotl$5jE2%c^-j zj>bI3sjoqV@9q>N>5=7}U-W-^mI92P9tTW#F2qGH@ z^f~hgiYUj-e>qJX2+&CoFh-v{$J7kn00Co@z4eSSPBJ~<8=nkKXIQ3c&P=jZh938Q zbmM204DdaOJ`{E~>fydRmU;wi2)au!iJ!h2J@cj_EZn&WW(3_6F6Zu(*)<>8$=|tQ z{p`aG%CT_AEC+HCgzm@DhmbpPb!^rhvS#MI&(wLlth`;4_X5e=^hI7mevX_v0qWy( z!^`P@$MvYCLpb|L^MPV*Glw|gD8Pn7CtmpkF zAA_4lSSPOM4I1CceD5erTC91@I8>OgVAtXogrEO-9&-(z(ASWE;VHJ_g{KMhmJCb5 zNp3=HFE-Vxwb(|0&KZr9EpntqBs$rK>NsXUnJvLY80oR`o@D{ZDz=vKv9$FfOUHZ2 zg|Z)Om(_0n#|sv=1xEwjzeKmjg|f4}$rKmnVPu@#pHnQ6Lft+d880I~K1%4XXzoz; zJu6dR8C-dJkX2b`^cJ*e&QcXB+<7NSCeDl|xN71oAm%w@6wl!6I|STJnWc!&-fZ$YHk&wYnjK{n zXP+-1_ELSCj}4{=0+s7a0;=36uS9PwVAyi@$w9Q)$MLiJWI4{$egf4Tg?3EGxU|`8 z@=U?imb?M2tOnDk5bm&grzdmK_>~2RkSg^f#O~oB36J>E?2!Psy;C3fv^}AQ7Hw3l z%Hk6ic*EfnqovtVd=e0K`A~e~bZK@JpV*hfCl9>=KFziHl+mpimTcXcKQ!CNnevBb zYYFDiKF-5L-&0+y((0&HR@beTra)I5lYGn3{ffPQJrZY`f~5zhr!Z@{oqm;RCk~Qu zyPa}QEvWhFSo;3U1=^ zIDKv?5DMPJ`%w_{V53$kjyX7Qg=6F|a;TJ05c5eKX9@8<|GTd8;)?Q;>1T$DLnSvA zxywr{%12B;IaC@NaZ|DB^ULhHu};mN&q1T<)*Klc$*YKwmDm;<=_Eb^#7Bfigi1mD z!B7bxY)OZT0o|cyDmPRbEN`{+wPEuZ-Ir?5cCb>X`)r73MS9#tP95b`*`6}}J8FTc~ zL#1V9?^lE|pH}C)Q8V^@-fp$&DzhbhPAU>|2Yhl)BJHChj-EG%Q~FXk@0p6xa;L@UAb@ zGQK2IJxD-IF63xrUJrs6wB+5s8|ge6$tlz9D4PcRvW`ZY*a#kA>e+VNOi@+W#sD4M z!)Su5?6v}8qE)aX=9pVD7j@i@j>u`#?5K{&KJ0p9ZJ8$Bk^-C!VB!Y$a&0) zyoyjo8}AePJ)``BBbwxuEAqA#_$BE}DqQ@(WIvy&HR%e};bhc7-n%k)51_~)#3sKE zxk+G9$NqLhJr>3ifDQ3Ckw=jOIjRgj- z`6nvyRCh`ue}e);yR#Y(RTG@Fz5syfN$lna?zQgZ zr<*U&c}qPFev|K)c&DRMcXLE#;zB%7A*PGE$e)?`Ap&#hKF;{=#3TF=6N8Y4DTL{Q z-ZLCgnRo&Z(Bt>yFdrA9zOG__Y7>Hk@+O`lujxyifqH5_D!fG+@0&y7nS8&3Uv(FX z{1MNocn{HUK?N+tt6o?xL2#CeV(EoY)}Rbwq*OEZyf?_5c%73Ua!oyi z67xI~i#;l@A(tQaWR@FNk|H;pAIkwcsZ}?$QC6HQajZo0yJnb_Gaa&m$%Ehf7Jnoj zk`CqPP5cSCcYy1Lv`vA!VPMaY7G+_o>q$f5pUC(pX?~-}dCm7N+RZ3Od!`(=wn0;s zc$LaQHwre6;HL0~_Zv_Ykp5u(E~{oZ4du;`{7-8d~G z3(D*K!^A;AhfK$%sBcP+nSqy$P2*t%nd5JZo9IVB{L6RHUbG*--j1EAfoNaTs%R=P znCy5bhP9%F{n;ODvqsde(5kGNu(@g%?5N;dn9T-eTPmD(g2a;XA z4dIo8n|fp2r$u+JPMjBwpSbDRW4q>b&pD=fZp-ZG%;V-x%Fk>tJ`n4RTDf;b2TT+S zomc)=wl3uV{WI5Jba$fqk)q_;Pwx8ozyAEyrUNr?y=LyolmD4s@~Kf*TzEf_cj4ED zO1*>UBY5uO3gQnsNnUz4zZI`V+(LsedPgZv1JnsM-UVNr5&|ticqc6fMlb$#(hA^r zB6%P6BOV$Ue>3xmEJK2ng8-8mp!4B!Hq7+nj+|%_P`PBCv<%7mXcOEd$}+6PrvNpI zstib?)wETrwHJv`J#x;46LZ}c;VRW2NcGZcaOeQY%{nr)Hf#+ec^$v(eOlIPYg%ngMHCt z*8nCVqg`1vNx&Z!kT>^>LKZ}8;zqMj?narOg#zJK#?JX3hqA^a=&-3j;r za3^?hZlnWUs2e>mNioqootS=Y!t|#LaIb_%h1|S+L<=cOJ<@3xBS{?oHRzG7P*#J; zCJ>3r8-C~K6KDrI=NglKAA?ejViMG=6-*DbAnQ!lkDSG+D94iF5wWx+Yey#uE@4vi z=S?8iluwL1a4Y!HjprarHvmp3Uk}B>wo?lySwuTTA9C%vs7|$-f`*Jisjo!N3EB=n z<0R=yki&t&T<&uTEC$+n{}aedJCK%#2WCg196B@2#wxS}B}xb@SD;FRfVN62orlzM zYC!v=MUF&pCHT(@_Ix3wnmK`&WwM&vLTf?ftl<#JuK5}y<}rksyaj&M@I5Hy0RFKc zZj$mw=@w*gk~4!kv0YIsleR=W9_{9FXkxf8IIGdknMViTo0Hv>9d$*7%AN#p0=fF7S^tp15eoKs4SH?Xgp55;qw$t=3iT zdOn);2rV30EP}yfe`hv!i&B%Zgk_;GQ|53#*m-^;3ARCQ5{Ync z0u!8YWLejaSl?h@xHlT#0z!yvo^@Qfduvy+s~dBYR9%xX%_?ztFrJKdC$_{PPCenS z0ZfuM4Gu()x0rVtXPHcZ{c6r*&m?-Hz0m=r*%a;Wf;clnQT8tUQUfsv7K?bwZnR#s z)8sWQ_KFZn)zynhQqNAt(K$3|nt73mw@UZI9SOuqFz0*(&-Jt5?~qv}ESW?<-iX0+2Ex{K z(AaC$yZI-bvZfuj6>0#yF@(4Uy@^eXj6Y~eW8H)Ufj|*}e@geTUfvV>ZOC({e#$7#9Tpey%P0(f!?4#!H7t}!k%ymW)OpMo2t z7mb5({{+`dMdm-@&NHW(UizH-GMJmg*ue18liqvbzT{)K%+KyqevZYdA8(LeD?MnG z(UMSIC`i8xF}1&m`;zaY2Wy5aBmX#{_#`CRM7L|In|9`#`I438)7F-V4Qj4t`m2= zxcetCojWEl<~Jqe$Kt*zZZOO>JvrPE{w8&VnKPThT!xRrEu#m*w}id)G-AECT4MrXktPnS&GHqlGpo5-o&5qH8Q_8$Xx zA`MJBV^RfOKZ&_w9o9KLTKPKVdn0jEU zmrj~?84N-b>;5$$z0dG;qs) zq2V&4g1+9s?Xski@vneeN;{iE-gUHjCiC{|Ge3hJAQ1pl<*Q;XQ=YXfJ5~MB+-Z zL^crjra&Rg^*GKnI9<8)!I3n^m~MFRp0nkGc?#ktVP zn($z0p`dF8Iz>Z273fqAbxmi?RT}a%Fm#57mI-v0hJGf{*%}(x$e8D7=z4)VHT0-J z8#Po0ed)pMQ2?Wpo`!xSP@jetLE1c+zbVXZ z0wn>3sKzWu%Pui1;nvs2+#&jf`xLa#2G1(E32~df>|f!HV@u#>?`~SVXFL3B_e9~= z(%ar!>GVAw-)@|Viv(7|oh|M{xCY%Q?pNWSzK3H&^m^bFxOTp$?^#f~8+1BKPc{tt zS~;hBPTaS|9XYDZG-&21E>%ZqBm9TM3DMFS*A|87JK~O;d2P`#w5XEvy|(%k3?gq# z`L3se-khkR5*t`h%^;=fJYFHd_EI1dWu55)hT-~=K} zVRVEk)J7PmF*3tfL372Q5dUuRUn)4)!SAKHHLFmb_amHRu#Qtzh}&DwAv@}s=0){P z^Q#i_9SQki{jdBLWK3tAlIe_7E&eIuZx;8&=}fJCI%BR8|FweiX^H)U`0o?{L*hOu zI6oKs*Tg@)fy;kv!@58P?Q7sNcpEvSqwy_-d{g{?Zsaojvysc-ZDO3`n;7TPrq2Z{ z=>8^-eWZzF-<5FJ3@+9CQy8aF{5Q{F|M|kn+orK!aoFN2NKPHIR+p3v`|T9CHGo&9xkNoj++#2Gpmav{?seP(vRxXJ9^Xg@(Q&(5)JJ zQlR@a^e2Iy(om_3)4i&p;{^JLhSmx+Vxr3Z0)c)mCEHKF+P6*I%~WypfV&klmstYc z;D5(`Dzx-Gf%el#4@3PLvtFPBDz57Ji8Bm0eOaJO{ChoXfcbR|-Qd{(=%9w~M4X3y zq@nL4&O?VZ^h?Bf>9-pCGvd7T7lHQrKk%G`n}2`Tkl))4h%a^%T|#x<80J=O3KGuy zIRbwNJ$HC7%b2bYdS3Ki!(W(?zk{Ba5m%al{^-34J@T{+l{+wEoFUL}4W=@RVj5y9 zm9#@cOl1sRsv)K_j&9Jh(`!2J zJ>N?Nl{=YZ4;t_JevO+dV>8en5>l$kE zn?|bx@*8a#=tRHYSV${1mDBuBsa*iXAM~8&FEOx}D1Qe%oBid+k_>bS(zR!xk0S>* zaq-_l&liEYQ~`i~>aQ|*cFlhWJ+A>;t^h#)0r(hqd=D+?jB%{!^jUg^RExA!I(QmpuPTRU<05g9hXF02jMOc{`UGWMqCG-EYJ<~ z&%g|0HSG~-KaC2u0J=*<(}FXMwdBTZ!qOURsaPPTHP+H;8e*-nmR4zqwZ>XHLqqd} zGw>y`ehsY?=n@U>66n(!`m8`-)zD)CJ*J`81UjUl(jun$j)tZQ6vWJiHP|YFa3@!w z^94FaLtheTsfKqK0M&^nDGr3-k*O zZ4u}#4P8584XvjVHXEZXUl%B%p&yRefVhPMUFSbEVg_xX(=_xqfmUg#d?d$h5NNM| z`p7ka`Zd%l(4`t$E6`^Iy2Rfn(C0LC;YiS+uV`pL;?AJ^HFP`T&Y*`hbU)(Gq{lS$ z7~;;PX9e2le_`aA##!`&hTa&t5zwzS^ufsG#@Y0`hDL=p1A1GaM@;Tj=a3)sRB(dM z3Y}-1LrXAEg}l&~P}10l|YRQKg}xp zs&O%eMHL>TlghqfTt;tbXc;iCpa6FAnaY`E4;xnzANEnuW5zY~n1;H`p2CXfH4U+j z{5TDWLOn>^%bqr_qxsl}W}fXW^BdRG8i5Yd{bfHfZlIKg9w}RAe3Gu#(2He<0DW0Q zuLHW7o)Kt2ebN7W<5qfOKGQr1sNA@XdPHR(B-Wp|lUr2wL1O)R2c5N8VY2@G9NpK> z&|dmi*JEr63-QzfDyg3gXfCyR--AeK2?4$IOhIoX1j7F|km^^AfPIrq2+e?>EzQOZDD&D|x zO1nKtqcc#m`6Nvih_&0X=2LXChFBLoMQb(0z5gld(-3Qhr|2SquJg~Rm;vYt4YdmN zae5XXXq&nv7UH_ zeySnX6VK8i4Y8hhmVPIY(vi=Ri8C|cr=NA?b2MI{y~H}?d1}!R_uJ=bi9kwgJWnIf z2C0M zR-Q_)(>Dd$?@v_jGGC`hblioN7n*;hr!};{at8g8exso~knWH4mWIA2(E9>i=l^x( zl}HynkMq0E|9<6uKouIQsk#BsWCc;AYKHMg`j$ZZ>A0#-A?^)d@x6Lq25Gub* zkbA8$MxgyvRbAzpXf)`!Y1K1~Nk&XV^Q*_XCK;Dypoy-@#yuKZT0PA*#dudk%gWw0 zryAw`Du)f#jjo8%kb!2qrW;EHx{d~`=ee4U%XA!cxoehjyM})1U+iiz9@5ZjfMy#n zY3N^o<`{nyNX>VTF@8Rq^HX~17~^FH(bpmu`Pi0iP;d;pwYBVy6u%0|b(sp|tOJfo z-Eh^P74ngSAyzEo8+2(woTH(`xfpaUT$4VT<9E>)azYHcS3;EgfcU=y*Q6&L{zLG) z=yeHEIEoItCjDE&ZNG~=HCzT~NOfKajZ`LGENNBvr4GLnGv9xsq`g`2Zx{dPGkz;~6@D+mUG!bJZu${ik8T}R zi(eo_@zzDJ3C_E4t@`G2!@^V?bEXZBW%?uG;%qToFU^GOqZ7uOunn9Bzd@=z%vGG5 zb>zY=t6I})DMdN$NX3%l(tK927b7-1MB$%+aFg~+T7{|nTtbU8D*Q8!kgrLqZ= zIw;}KO9+R%h{IuDk?>cC2-n<3IjvlB<;UWHs*93mXDa3AvbpH5lGg{~DhXGzr)WB* zE-=o{QPoRPR(;Kuy+Xaxjx|Wh!|;2hqOW9FYZYnJd|Ay8Q8g`q$%Gv9q2*U(F#X~yDLLeCQ0HeL{y{hh8?#Qz7l8?bZ5?mxse z4E6`$CSBEVYjEqIL+ZqB7I&_=t#CIRu!_JvT|zd9+a+#H+--1ox%R@{>$)6n4ef_} z4}DVnw~8B(lH6;=YLo5&C2M!NA2zP2-2?ZQ+HSKLu~)kvH=e2e1l*t2-s8U4_+{-n z<6h(Uwcm1w4EMzE!L6A1gu5A-&%&KF@mKB_K>4?@D|23dFg`W$Z|=Qx=ftPzUgN%r zZ<}u#Kb-h4cRRf}(dTK0wYL;5TU!wVD{DKkb+w(?s@hI$P5pxbImoA zFZR^Z^^-s2X$R)j?pk_w@*SSj;oku3EZdf9iET=?#I~ebVjEH|vF)gq*k)8qY%8iI zwh`45+lFe1Z9?}N=9E>m0d&x6#CD-t;hjSy>!Bq4Oq)8m~s!rOtzS8 zGe0(Eow1ibG3623DLA*9T~mMU8B4LLh8HhVom%RB(2Pwj^WJJcK6R{jvV`NcObBnF z7pAW8&W0QHaxOc()xt6Or>&t|%^B0idglrLJi%Wmn75kGPJ02Li)Q*uC49BesTKRm zSrUGhg!gF5iy~+G?ll%glI~vN`QyeDkx%;`H=c{!1^1_sd)zOWEp>03ub})t_5Hz2 z)xG3<)4a6q6<>_5s{5_4R%|Z+5YGI={A!)wKOikK06vWNe}o>ao9MrYo~dj0UrD!4 zTHt4#QxJaV#O3~g>%F?=MgXVi*Wl3Di261DT4K8lOBc5n+hJ;n?Ju=rcVYK2Bjj2i z_?SOtPDH90O|QSke>w24Lt3`K)QY90R%|M@#I}@LVjD^=vF+p&!huf+2RF=7%;jMuI;`X}LY-@-IZWqkk1#@I`>3;Vxp5!$HZDNf*y>SBZ0(p!+Z!hn%jDuL zUJ`0A3ANXRZ*K_AR@a>q-v~Y_ysZ=bI+4aYk;Zorve)&Fj^%Z89r4=s9VvgEtexwK z*UXO_PdBYEsv}-8*AcIjnFDte{TmcmC!}V4t>|%MME$eC;gxe8@rt>Qcx_xqyb68? z#~h>_uC=2Ang?-a*JE&HqHcoa5!LN1I(G+gz_#ylXyA&o)<=#K4mYaDUl6 zwZxD8mNayC1MF~qyq)Jx>>4el@rEB?bT}Swq@3gKcbT*SZW%@0X^bT?`2DoaeJA#2 zPBZ@GZlc?$KGcMpY9B9YqEAr({;$y-xZk9c;ND4$Go4xx+d{kHw$Y8^x<@qO+(I13 zm^zSq6P-!7!QV~afqR}%ONqN%+=S?-Tz;Cg*#b_#YAX`-1h*75{DGJ|gb-CHxifzbdZbmfXdy6?c-jt>U(c z+a+$dxO?3-^vR;V;@>Ckt=i@A+r=?nZI+xOgyWjUm-DD*Z)obWB#A|O9PVv%L2Cr z?hSk^@O0qC!0Un8!R5jA!R}yxa7Xa+;KzfX4ZayHFPd63r)XJGchNx6p`t$({iA4H z@v`F1;+u+B(HD!qT>L=scZ(k@K2-dN;`fV-OUg=`N=z~^gD%24u^8@1%+|`#*C*km z((!=U7+z$yz`fmtD~oiO>qNLuiThh|U2YBui@R9djpFVTx7D*8u~9Fd7u+uH72@9L z-Hwpw0v!Geahn`jwU|&Q32OP+&K8F#2tgZe-jw&o`PA2K}*Cv z74l_bcFXPxyd~SDmDue!=ybSP*I)!OsRLt!iJJ+HaMxfL-^AW;Gu(9;Ellh&&VjoD z@6?Qo+QWB6-j%iwN7 zDNLN7I~{HeIrCdO*T6jwxtTaqy8&(=a$qy)+3?53?FVfW`)XZqlb~%<3RF$Z(zd`I z1SJ#qI?h9?^WmDb12ha=USW4PD4941$nHl#!=MY`niz9a@Lvemq;G+SN#90llfHv= zCiZJ~!+i+2CU$Esg!?_rr44!nu8BRGeenN4+(+qRgd7z2F}f7tkHa(H$Ahw zZQe7ypZ4D6eZ%{ncfN0>?^@poe~o{-{{;V=elzgVz>NWaa71u&@WJ3i!Gpn{2Y(d| z7u|_lwC+8;233DBx#AK6Zzs5Q2tU9Hj>rlN(&r`2O3Cq%QEx7uL6_yF-Df^pnU6OH ztJ>^5_LSRoI`5u~-kM}PLbK>nY15@+y)ZRCTb3xz0u5LdPv46rWwq$tF z^GZb@w?cV|1x=fMWX=qhcwAXLN>ifx=`JBlo^ES+!Z#74O;t1}F8kZNOFrr{EF+U-%JLk-nlW&1NC% zFly??4HDWC9q7y@%V8E)%Hikm*5nr4WQ_x%D~{_HoeQF!%W-|Sb49Xq5#OB^f*GV` zxH-!x3)Ico!ja6%PQ{DD2&bqEva4}F_J{~8l8g9u>}uR)bC%XB$Wq*n9h#06djuj@ zg_kGdy3!W6G8G?+I~fG4Ko)26BAi^wi*$12aFKRJ^02JB(vUHSNu19Ci%LepP@A-x z70xL@kVV8s=}hHx%0+SROFhzdxgFMuYflXo(;-*Hpe=B9XnS;NVoNN(CfTbyxZT+- zLY>_iMW(LmEXQ3s$_tgk*g8+4lJtw5^aU}6Xd!HgU?H{CP6jh8fH6eRG7a(AT28cM zM*ZqC(mZGSlg{hxT+r2h9yIIXShTl?<}r=D(7gKP21wzYgh|S>oiDq0cGBsC(d5n! zWMXT=wgm1I%1y&m(<#w-G#Trrc9v>fazrCXhgJUleQaS&Uox5<@zOtHpusJ+!1N zwKRdNhI-^-3_+EbSwLqeqXX2zm+mBV6)xdNQv(tSy)1VU^CH&aqCCj4&fyz+&Qhy@ zcAH7y2XfSzr!YQpiFKve+Zyk&N`_%a_}Z1+xp9`&&(wIS2J~c~g{t^uLDCFh&Psh5 z5Q;yltB}Q_0`cuBNW|t?vJbsel36%hM^zb+umbs-B3=!Go{Ec*OS@779fQIKo+3n7 zr9y#g_#$h$;k3(ik-MPnjBcym1>i#xR5r0 zj_KB-?HG8WP%%Y{+x>GzKRQ|Uz`RcPd*T0*uukywhmv8qUUNc!gQ8plo8R_h|HBZ)PQ!zJNP@hAERdm-q~ zk0!BVqi!dzLng$Ji!!lxngA}C=4u;+s}|2bywUW8kwNNVv&g+ zN+b#(;fE0e2bL`Yx$}Y{nm-RMx9Rf{4%_Ss-QsV4ljq0hH+NwiyQ#C| z^P0Ipw4;ed>N{|2yFI>OCy$<;{mJO|SYj|`DIgIyD9QXlHCeJav?_|_XB30JB*=}! zU?Sl>HpZZFF)6_P?nIo2u6XKv3}@W)tk^a27>3YAedwZOPtL5ISd(=ras`5LZM{8? zV#Io^Nc2K}{Y*;LM2~Mea2>Q7UZ2OAWB#D?&!k)`SKo7EF}H8+?Z;Te^OaaPMkReC zJ}U!E1|{{X=oa+vMBKC0LGiU}kQY8zzOyT+O zHb+^$3Wv7$V8$`nr^;uca)yrJ?9@E%%nsqAafl<69d6{r7SKjuX2M(7M_pI<%h7)yIX@?T~s{B5XY%LTo8j5sR!4 zt3}B|u|?jzur=%Qe0=z2Pm)I^H zOp2ulFmd)_xy}!*so87S%0bZ%RFbTwNp=%k%Rsxw^vFuj2{ZTF29p@)wGBarc1MV` zF=IjhC_V~CyVJbQ>ofJHO&D)z$-qEAnsFeyV_-p7O3n2(EOFeCFmuYpX;{a>;v7#! z9g!+PTgfp_B(Xk-4QS<-WvW6U6k{nWG;inv7Hp8q~Mp6Rel?YW1DV?ZaVZ zQITakujdnk1JW0CJHrNHH-wfJV8L3j0`K%vddab;5EXH?BDiTRKj(%Drt~NQv(I^; zfy~%6(a{exbADWA#G7YxvL{cqI^tk_cS?-|5{a>;C09}`QLvhQRaCbyCcJ}D>c>n} zdZ{H+ZLmpM{#ELYs!iAw>c^5k*Wg*Ti`8yy8)3v-4I!j1wkfP+x~<7% z*G?Nr^1`c|Fot8eQxlbby%-|PqlJDD43?U)2OV@kOkPPP%WC{}0vLqZqSoawk2(B0 zwqH-=vC|==4p_tEyV~3kcBBeLsoX%0U-RWmqavhan5)Os3pq1ZMNxm4OU0w-TLTBw z0bbw5ugA+>eRZ%f;uyTQjZoyi!C%Qv?yz+!J40HhpFB9%b2@|;9s}tDI?A}UJF$);jnoOK; z?-6Wa({UGXRdK$Vq-b|^V&=E)BT2dZwwSV!Y9d?$91bze&WwVJjq8FX)#z!%$DF(d(lFi_z($ zcro00c9UD;5#6lq_tct7VTszib9HQ>H)*4i+g(CWQCSzN+7EA+`vSm=I zg8Y=ouLt7k__Dcp|>D4@NE}TD*$gg1*`e zvpT=sSwEyw$yf>|n?>k2yqkep!e+dm5IYx(cq=)T5r1CCsx2y{x0;XxQJmOj%-F2r zDYc{-vosdpCdUQTz89_ImmgwNQufNYQrZC3F}NwEN~ZbE8*EE3L_>!m4~BSv(jlDC zSp=(6YL>~hO2pAexPg0VQBMpCbOH3LoK>)yniGMZh|QQxgE~5f+E=o=iDtiL62r>mlhxavEh@CYw$^fXpeI+ z$V|qqE%$b{v_xl-cXG=q0!ycd$RwoEZc3hLNOSF#I#`zPWGnLJUKC<`rL}R z#)BAJm}IXL3KG$+A#G70wKnLYZImvyTU{M2flPD^_A~dL5&`DnSWxB=1B;!VP^}@k z@hnyX-PZP*7rA2Xq@+hyRor{kDIeRMm051J@syJLBhRO-WOk18a?OY*B|1Ah@a9=$ zJkSNBR}yLp!#D>)EJbm(WI|}(N&O1FMMcfFLuNY;cC~fD9NnK6(4-Z|0<4lTRniYD zI}4Pw3Rv9Rg^53kwjD3A)dod9FMu-TJgnmz>fl#ikRsqvbWOGioDZ8>=5RSHfIP8d zooQdJA-7|RK=Z&%9tqle@_04JuKqE$_gLF|9IZ~Q;j?BeJV_pWVWrE-WT0i1BM(-g zmcZIGtGt}&+Ie)@-c7c*+xFs2h1G1Rjpf~Jdz)uE{IbojCdczc8Z(>qd4*_3!7Xyl zEe^j!ESeoWYIZQG*})zej$vUUEYiAq3w0Rb4 zn^Q3i)6Mb<`UIPts5QP5wqD*7o~P#EdL5p}fLRU(%yKYbmV*Ja=ID{!p$*$pN@dsz zN#(<0X7^Pswya&%X-GC{u|b%Rf^4;fgcdGfrNRbYEWUY!TQktT9IHf~To%x3^j$C* z>*bDzxh+_ z(&FeiEe;N}I5^Pa;6RH*X|y=1*s@vM?N|ium7bI_J1DPcvmG3n?cm7lSu#bHJw}>` z)dtSZa7SQ?0ZH9eF<(~Zl6<-jF3z4!tCpXldP#>eEm>nA@zyfuq_&uOg2WinBp)uu zf`M=pPs}fi;@y~(a*fpbz>?F$Xye(A2Ah2hkLQqdIR`dRQduN2XOZ$NaV&8!=4BAN zU`9e_A19p$Y_Pkx?aK@*)?Cxp9V{~z6M0A}FnG;&h{SA&gihf&gqB}QhqTOgNXu-8 zw9FRP}0rC($a=|P<{BvpO0Au6L$(e{`63{_?zI% z4Wril&v_l?ht!($DOleJ>csae`7>_!DZwNm=+4Xmr|<^DLY)|KnxU za%5Udh12$z(`eDrrzw#0FsK~)n`sp4g{sf0JkjZm2I5s0(jr zE)=W6GB_KKjMG%G7i81P?rexHl^Z+|7KFtx*foQuvL4u$MK zG5jxc(aBEg)~BYp7jhpv@@Ki|l;NbexIFYXxrSE`i%$Lrxd^?)=5ua6j`TGyI$?OJ zExOK6anZE%MZ@$%r)+@_hhz(W)s33-@$4_U6_SiXl`#6hz= zLyNy=$JF_=bIZZ8KE%=t{*s;bjltaBzQTRLn=47x`u3nFO~Ae_xQ=3#Z|J$8>v9UiH0L^EAPt8$A-okcNT$(&H0Ogp z*C7hO9mC)AYX$xygr11seEvc~O&cgL63QHIV~5c%@e=m-u(ZGc;+7+4F5hy@h?e3X z_nTEH50?P%;sSgcDDkr$vy?@^YJm3@=1`4brzm z>eql0UV*;1D2!|5xgE6-$re*p{Zr3X7Mh>CY5htM&;M& zNTsY}W?cF^W=09#MG!v9f7wMo+SK{@R;BY}vO|U|I}IPIR&65dtnqLv6B5SH?EH@o z>d`bn*Uqb$Q@;~ zOPPXp=N`wl3aefn7=QRb3UB>)R5PD;XH*_k5lQdS`VDRq1eZ6lFSK6~{{VXj2b0!E=^LW+WrBr?6BKhVov83F9*4 zO5?(KxfM@Vd8)}ZS_5^wQeaFmNAPUTnvkN>)3Rx0PgxvPSL9O7?W#v^kgR-RtZ+`l z`{Z?y&fL$IiL46G9un>5wA<=z)XGuXP*|q(r-COur3Y80hoQQ|GM(o*e)(i}ZmM*H zh@sQ7>v}Y0us9pWV7eR%i*p4<%%@ch-UWr%=dMHyFE6-#XiXRc%_13g&qQepO#rxd zoW2=9XWJI8gDf@h8DJ-Wb1`}5duGm5V;ForIXC~|wT#6TYRoQG8`^`H9;+dx^)iLB z+YqLTX);+{R3Km2i=v)u7BZq`jR?ggXJR^|3>QaYR){uD};HpGZyarYax0|!4I{1jmXNBY0rmvspl;H zY|+oz`Z*`($*W27h`6~L;A;R4svfE_$iwYGqYIURT&#cp%kBxeEIBb#%-k5Offz$o zAQz)BI~ji#s(mE+!YeXEgIahprjp782Ks!{2vxEX>-@Y1rD~quvB5y~d0Wb9%8^R| z2_KP-W$P2fotfRIa%+FIB9f&?>$3CB?nZVGMB~9^@6CI1tm|gx$kk!^w&%hBbmmq!I9i4%C7s(P4pa1& z>;_Q7WG?$z`#PFEz=JPq8G>l>fb8skOu?zAm4I;d5BAam6vYY5Afp-bw>CvTX@-Y!+$Gdt`se4Lb< zrxRE62SaBzJsOuA;!H*3@;9hgp?mgX?#o+~`LR}NoIHnB#DTjPv!4&Qw_*`dn@NT3 zX-5-KwWGi#VD(6~fIoO3ljb3p(+0?YXSVvi1l+dew(*I!hY< zpZ2Z;EQ(}XclV@bfR^b21e}3EMMY9ifkhFdWi=J*Ub(UD8;k>bAgEAXB zL)P{Z*Dr@1VZqpKv|;Q9)0yZ_9#RtwjYG1)(cA1Xh&B*{9(6RZY9!m#$H~B`LyxBz ziZP`$kzt&(eDlJdu5Ks6r*f<@D&(ctdFJ^^CPXCw)8{39yZ+A>zNNmgIx z%a9J)MkXT7Q~oiT4RbVRo~Gr@1lMRvs&@0f1Sn+%A}dl z9Q^{pipd0QL3eRt;87@8JQCc);o)Gzqe?^IW>O}IKMV9b8{CG6A2E-{`HU1bO6z6* zV4C?ub6>g=wzDuSB*b=H_=3-a_g*emUB}3s;}hZ>RoADJ@&lT<3g1XIhfh1gU&@hT zI2XfcM|6H+tFS)?TMlx5u}A9VacBCXgNVitYlmiWbi;LNQUwo zGN4jOaN;60Wz+Csa$pkYV+1at{kb+kHc%&GsS_doM8G(Kcn$yul!MW>Y@{s|i4(vO zPSJsoouDNY4+EYg78s8N4}1hNE}|BR3<6{%9fEumA+Zs4wE}h_&_J&M<3N5A@nv9- zphG06aL7Th%n+oELr0LL4QV0c(h(GL!BycxqyRD*G82@+i!M(9F%;c{r8NXtvW5Bq zX4(KVP*DNkAW?`dMA@;4>=2c9mZ-9N;ZTBtDv@Hs=gfLoT=I&r{ z3owG#P_zi0J5aP8A4CSp4JQgN3{?%afaqa$Lx3TDkboE<43rY;A0O7|1oU79{N2F(oA9TBA z(n0YZzx#Qf&UxC>gPm;c9&YbcE|PDsJfl4PWRUA%uZ0c|%Xoujwx$j7c#xE1FKJ`!Lp^JvS0~nSZ@c`{LmUBYu_#wsJt2Ug=*&8(Yfac ziU9rzN|bvA)qq68gG$c5A*hW5^~EI)O>J-%1)MR21?UJFodI2hIAv*rvmq!PwQrIn z0f2I+i*oPtWNcAvE6csX6M%+0f(lX;Ej7scIayl|NT`N}NZAlvNC>Jy&~5-IP?j6T z6#!mY2#8vMAO!#@2sStZP*?#@T7cHjdK_VtfRIY05-1m880?*GN9#d3{e_@7wNAvK z-Wm}ACq$y&4%8B-<7sPBKtLF+7r|w5IuIzP1JT84N2DVXTJLJeR(o>eL6qLjptBU> zPb#qisp@~)dfUwQGi53VGz?xq>l$F!LLb!3|1J*9SEBjLMjeljCS~< z_5DTqM9L0>B2Z3|UI#f*Wk8ILu>j)*EFr+?7Roqcju;c;VnPVPwM3CJLQJ4g3jqhj zC52LeWrPsGGJpr-TtYVFg=|17X)2LyBH%$jLs6)>hHR4(+KlZlQ%*`ul#>!SffX&0 zkftJ8GEv#)|AsVD4QQlHG*TpsI-uz;0&7$>MFJd}%C9R{0uVreD&Z)^&=Mp_*CkCr z*Ac)P+kp`LwGG2rU`b0*9F$A4?L$J)eULIDf+YxcL|p;Cpg-Z$`f;G|BDF*SO+i9R zD9F-~4(M&6ZgVIeTPDgb#z2#h){`=5fL`E-ICmVnSMcifhIlxm4hzz<*-1D-)kDL? zq+-lTAS9to__2kOP!yXJ>Yc4{sC^Cv0*4cjMW8k*0s}#9C$k2+QKv`{BDL`=U{lc{ z76Klm22o0^1OnE@O4VAxt<@|f0aCz4QBsLXFAS(LjYt`(Q^*bDFgJ-~@<7waYh3*dz!DHftcY5^+~0JS=VFmP=r(l5pVo!OHu z2*V6c41tJ3^Ryx)ctaF{Dncqjcmb)-WWv@;3i$`XTA znQcF`Cqx+RMJWWZd05hG+Y;L#NJ_w74x}kX8rxJLMEoEM3XYeT49uVt_e9jsF5T-LG23V;i+jo^^T_KcfBS!oe#4AFWu8?+Av*?~n2 zwl!FHc60|g+o683B|6w5ps+)_uc14Tpl}*GkQO0F2XNSdtZ+krj?7``#OV;IcO2>l zY_(d8AH%^`1`}O^$_s%p3r;7B^p$M?x(=Zd@CNNkq(l8S0FVxPY!-?jy+|E~V@}?Y zA+dFf5qj1xiWiU#)((!vQnqzbwM)&Q)hldJ9$8(COl6N_qDHS!LuIq3gnlTF>9r7T zSm+Bay@Xc0gYEHRVd*wcS@h^6*kTUe>keQTg^EERm4-d}8+;7o%P81@+IY1>tyIaC za+Hz{M=tm$sZ)~u8J!=a@JsRa)A-4CetybCO^Q~h@mFe+HFB+1#VC>zebq_+3P!H= zWz_ykoxg9g%3tBDmg_Vc|Kw!3GDWVEt9409YGq1dvK+3HsAH0}N~JPctN6KI+0kph} z7UuDweL)Me!7)n(j7$`apPU_^$Z)Kgshq%=Xtucmu`;#=!v3K+#?z&H!NZUk*!v{H zX4vZ-%8DiI(dv1yL}cBHE3s%**pY@Y0hnGBK189^XjqpD|9dVtb`Qs4d>0(EvARhY zWlo>qrA-Fx9)nrjM0vFB613Wc2v~s48`fbMotaR(Qd+{utmK47;!DU#8kztrVd@e` z>Key-XToZ~@RugH; zAJ_k~1aR148-tx(vE2Fv8^)Y4vThWP(uKpnPiGuk#2OJO1OvAUj&U#%IS`KMwnq$1 zXdB*2L^o8>Jqh&L$9?+AV0a*ny%TNF+&j^o*jU3ZxG2W_6AT_4N=0u8hJu!(8@T8O zZ3;|mqEAaS=7w7~=m~oC=4%?9jZf0E39wDvH&7@JG@0JkZCuh>HVt}k-tbkyR4T{- zrsnM-FM4(sz1NDaF%CGYeH#_xBY-CKj&TNDI|Haf57nd8S&$kX&8g`Q`|09!Tm%Cr zUwA(m%Ipm>4Oe+Egc%+UOoTKV*bm!OR$T40Z|ys#5U+swdCX>_Pixk8gXh84U4rWV1d}o4u&>I?q;Z_U0xr?m>dHnk_@`lvt zz1TE3n@SnU`jE7A5Sk4~EnFGZI;xwf+LY+-IO4@vx5$UyP5XD`Y2v95>}8DCPMmAu zh7EfA_s{A(5OgaVD2fE#M>h`*GBi9TW_XJpwl8Mu%P`4qEVp5;{ZXB1pjW^_F6b>{ z!z6ziNEzLcL-MG5v$(F#jdcyI*Z;_HpaR1-Aw~Gl=l`7q`k=kW2?AsCoVxQZ+7^Tt z)L7#JqBzef0D}Ap9G6=%7JQxu#UY${7&C+~^x)%MJkO87xy5~%K8(^VqzU83!Ledl zsdKIb)Ej-H0JabeB9KP#(h+?bSFX91*23b)P2FLWFVl{%jom}656a8OGKNcm>Url-P6bl=MPw6^6=*7GQ)Wo zCl7A|wT=skJTMQR^xK~!YI(DOe?8@M`1Ypzh+EsN6wk6c=6Fv%A6c@wEXb!uw_JWh zArIMb{$R_=uIIhCPyYIy`b>=E{Ei;ZQ72M%Kip|Wd~{E!SUdIg(dOIE9Uw>lJ|lBZ z^7*GTobS&GYN_peW@^sd;qA+_kN5V?xwqFQu6)t6>HWR6|Jc~dVt{k9-SdD0_H!0b zBMvb;4_Xd#X_8g->&~@mx}d1UQh4XvezV`jEC4}y zo^{>Qp>&5J>U_)ZpA`PS^|yC#{iDk6zt|Yx^VQ|RA|Fv^@|6cyzkfd5m1`5D+_NR> z@Qs))fx57Czt?;37ug4XGt9dmbBF-7#aHIxQjmxvBL>k*-MChakWYfP^LPRdhmoQ{ zifhlcZPt@|DQdg($LWVe`hc_F_1V2LCY@C-X%ig(%;j{oR{#Rv>GFKsJcA!Eywz{8hT18}0Dt$9!22qqc=1`h8tIf3E0z!s+I!rj* z#z$NoKeX9Tma3gIK0eqz|B*m`XXvZZ+%sht2ejiaxB0lvdf(C>K^dP1&tH1us=g`#-t(V}@_nANvY>zaDvG`OBMR_x2rqs(v~CB&vC44cCQO)2(RNoP=qV@BB2S zVAr~e9>u4Ax;(o%z3fhIG!{CR_B18F`X1Tkpw3)M7xuV6nH`_yVu0Kg$G`Cwv-ddkc4qM|_Z48W= zP4aBK+E%vXcb9mtllO?zmM^I)U%1G9#=^N%A1vDe7_|~GYNipRtTz_2ok*Jo!eYk! zB{<;9DjHyvg9)S1UOiqgpdFrBhfoSe0YACYSLJ6wC^hn`keAVK{YxlofKaU&H&A#0 zEa&u~)J$0EUltq_A`6L$Y!}3Ys=Q!|#Mdi0Bvd1JV_Kku9I@n!9K{$GSN&5&J5~95 z%YLV)PrN3+!3H^#JC-CS&D*x_JSFD@{E(1y<`w3&t7vRO@R-E)d4o5WGV89#w+d;0 zH8)_+y4aUHKUAMtmWy*b+qdxGj!4+e8*cG)dESiPoTbiI+b+92Tjg2R&vAn8P$!F% zlMCt271!@{8o^{s9*lE1yd-7yi*HMB<)3Jm(fs=M$nDR2SS>A+9QmyOq*V8)DN?w< z|D2j4=^Ak`velH{*^kexnxma`I@re5C6eeVDRujO(Z1Cl8$uRwqK>}W@sIHiH4)2- zPM0p)9 z`>h_E4ym^`VPXwX1wh3BP!)$11pT+5Dl21TM#?C52PveKfLSb1^)Uhy02RO#6K?ba zP<8nCfa;4Se-WlKJl<-@+*;FYPU+!U^MAcLM32At^z-Bu_gn3|Jvc2PBj@;NoeqX4 zu@(jX<9Ah$-`KkAk`TJabH&h5P2txu8|UBqI>pcOUF<3QL(lJBI5bQt$ZM*aJKL#q zXw}l+N>jhSHZW{xyG54i;WHM0O10HwT=3C0lZDM85`J8tnymEe6z(xAy&&%D_svyz zG?r3DS@%sfb3&c(_Sld+Exg5d7Wo$K)^s}2R^a+-Q@10(FNsL}xGsSe`E7r?w!v%W(n%6gtE`SXCXcrlU}}{Srj)Ia;fG=JhA=gdwVs3)^IA>+_JyYw zceLj~7bJINn)1y9E$VtGxfkPMXs|6!4Yp@S#wb}3^e3q)smZVywhS#Wnvn%7oU#TJ z!)TOpg+lJHQ~(^o)G_N-An)I4%l(;^v?VJ(!I9A(kS-Y{lXY2~9h26v*{>N@$DThJ z_GzKL&Gl>TM&�^eI+6`h4}LE|D$HWnq`py@k_{Zjg0-^=wFaM7P4#`^I$}Q4}V) z_|fg!veDB{em^pJ(s})*m-}A$uBuE3xxBF=;Ch=O3!TbVXN`<|-gN%0kLvkZ#lL0` zbRH9uKSg7IYGgm&4}*IauHKUBbJ5ZA)4Wmc)!9C=S8SR1H@_4neLPkWPf3W3%WKn?r`Xx;d{pw?U%Zl@hXmX$C$ZO|CCg9u zo7F1j-uUmodJ%fkuY+d!wlN8-n=UUrCYlr1;b6JNK+YMXl{5g*w=dHKp@JA$JUoU2 zCo`D&qQQdN7&(99$PTreq9)W?5vNc<&kGv%~)__(V+Hg!{^gRnyI~g>a#jsc-W&wtUGoehd(GM7=`R`yDYA~q1K&g%Ki@>pX z|BjPdg>HP9(Rs6C`_PA!Px{)fH4g`le%!si*ZH6d%TLGdd&yU}sG1nPDA%=rd4Ny% zA4=E8Exnn!XVr&3@ zxa+%SbnE?ML6@b^Up{?uv%p2wVOQLeXE80Nv|W`a`L=q#K>DIO^3AN0qxZzCzll83 z?3X!N3)+qtUgY#f@+{`p!Bx#aCrFQ%&f3>{%edsY;L;w)-`-!@C+(AWoLo6rIBK=;V=tekNA6_#(XTQ#cNm=aw&#{YrM=FXnsLSEs`gdJ ziO{oWn%*DxGk4pW_ny~WW-Kokz8AOdTyg8|jdhbk_Xq}s=>~O<+|=b!J`YnQ_3wVgQ3+wsP}>YIlb_h=DaapH95}F=flC%U--1Eb;s>;qEl) zgS(L{OAfY(Ia>HGcTC3yC&`1!ROmt4vpDVaO!rOQ18~|1yQ|vTHWG! zz8^YwE|Wg>WjwR&-PgY^+yZ%Y!1 z?NaN_A8LxW;3t}Qi~anTcjzaXr4hZ?1A3SJEA;-N4OkDoZR$W6&>Qd^WAuvqi0<$K1yn0e|^d;CfD{y9S4k;3rmXEAnHqSnv5b+>Tnx!i+y=D*~**Y^&lysll`KZvQE_k zC&k+;`B&NU0FNxoBM&kIK2H&ful*!Uoc-+luBHzoXHGh-_8748z{9;cmR%;CjmdI- z!W`W*R+rEZZz{BYo=ckqXcR%}j+=1^M#wWQy zEiH0a@y9qNRR%Z@cgcHZ`A^S1Cxf=$e)}kA`^{BrN2zy39v;zxZk27>q35g-eM5t6 z_io*~DPr)E6p~B3I#3mo9{2aW3a|1!dqI)gy;a-rmIM1f zhf&Wb+hy$2w;sh8J;`=GP?UGDb?lDKLj$IlWG8M*FA=Xf@O{`bI^*LEMcS56 z*Lob8)uJ+G-!kb`T1y0YZH%9@>z3>7?VFA!ZyOuSI~(X7T|R%)>apv$7JoO|>9=`P z#iN`1DAtnc#rQ4oBB`KJ9&ZqG!y`#XGmW8aV&Qf}AYE z-(x!e#h&E#GcC{UTXZ=8+K}Ix@e0z{tvzHtKKVnde+=qIKYqijcG=PH;in=(cW-8gAaWE0fkz3Yz1UM*Uoyzg# zOeNIE}4-;fe-$n}A%(kE`d6*LW=bgO#8}cZ z_S(vy-}SZW)B1Y((5N28;n{QdblZ75e|fLbyM2NJe%P9;qjGn&P95YjTQF;e*s9af z!0oU1{TMLKlA69Fr#OBa9-S$<{F&FpQZ;ks#?j5?J+5}%H5gw!R@2;jX3h)g0iSix zTzl`&f1i60>o!a2ue@97t0=5ElG*X$c*Qj;a4)uathRNBxtiH`wh~jDpUEpI`KEcY z-9XR03)NTCsS^XYojGOIrHnJn#+{<#?T*FfEPhwk + + + + \ No newline at end of file