From f653af2059ec9d436680f7a0cfcde8512d962aba Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 2 Nov 2019 21:01:25 +0000 Subject: [PATCH] Migrate to .NET Core 3.0. --- .gitignore | 1 + .../.idea/runConfigurations/Server.xml | 17 + .../.idea/runConfigurations/Server_task.xml | 20 + DiscImageChef.Server.Task/App.config | 29 - .../DiscImageChef.Server.Task.csproj | 124 +- DiscImageChef.Server.Task/Program.cs | 106 +- .../Properties/AssemblyInfo.cs | 35 - DiscImageChef.Server/App_Start/RouteConfig.cs | 50 - .../App_Start/WebApiConfig.cs | 61 - .../Controllers/HomeController.cs | 37 +- .../Controllers/ReportController.cs | 18 +- .../Controllers/StatsController.cs | 28 +- .../Controllers/UpdateController.cs | 31 +- .../Controllers/UploadReportController.cs | 52 +- .../Controllers/UploadStatsController.cs | 86 +- .../DiscImageChef.Server.csproj | 502 +--- DiscImageChef.Server/Global.asax | 1 - DiscImageChef.Server/Global.asax.cs | 47 - ...1812201613369_InitialMigration.Designer.cs | 29 - .../201812201613369_InitialMigration.cs | 584 ---- .../201812201613369_InitialMigration.resx | 126 - .../201812220029427_AddStatistics.Designer.cs | 29 - .../201812220029427_AddStatistics.cs | 75 - .../201812220029427_AddStatistics.resx | 126 - ...606592_LinkDeviceStatsToReport.Designer.cs | 29 - ...201812221606592_LinkDeviceStatsToReport.cs | 21 - ...1812221606592_LinkDeviceStatsToReport.resx | 126 - ...812231612080_FixUnsignedFields.Designer.cs | 29 - .../201812231612080_FixUnsignedFields.cs | 81 - .../201812231612080_FixUnsignedFields.resx | 126 - ...entifyInquiryAndModesInReports.Designer.cs | 29 - ...DataForIdentifyInquiryAndModesInReports.cs | 74 - ...taForIdentifyInquiryAndModesInReports.resx | 126 - ...40552109_StoreUsbIdsInDatabase.Designer.cs | 29 - .../201812240552109_StoreUsbIdsInDatabase.cs | 39 - ...201812240552109_StoreUsbIdsInDatabase.resx | 126 - ...2241719441_FixUsbIdsAndIndexes.Designer.cs | 29 - .../201812241719441_FixUsbIdsAndIndexes.cs | 25 - .../201812241719441_FixUsbIdsAndIndexes.resx | 126 - .../201812250223002_AddCdOffsets.Designer.cs | 29 - .../201812250223002_AddCdOffsets.cs | 40 - .../201812250223002_AddCdOffsets.resx | 126 - ...oreMmcGetConfigurationResponse.Designer.cs | 29 - ...556377_StoreMmcGetConfigurationResponse.cs | 17 - ...6377_StoreMmcGetConfigurationResponse.resx | 126 - ...oreReadResultsInReportDatabase.Designer.cs | 29 - ...219066_StoreReadResultsInReportDatabase.cs | 139 - ...9066_StoreReadResultsInReportDatabase.resx | 126 - ...133012_AddMultisessionLeadTest.Designer.cs | 29 - ...201901022133012_AddMultisessionLeadTest.cs | 23 - ...1901022133012_AddMultisessionLeadTest.resx | 126 - ...56_AddOptimalReadMultipleCount.Designer.cs | 29 - ...01030344456_AddOptimalReadMultipleCount.cs | 17 - ...030344456_AddOptimalReadMultipleCount.resx | 126 - ...1359499_AddChangeableScsiModes.Designer.cs | 29 - .../201901081359499_AddChangeableScsiModes.cs | 23 - ...01901081359499_AddChangeableScsiModes.resx | 126 - ...1905252122267_IdForDensityCode.Designer.cs | 29 - .../201905252122267_IdForDensityCode.cs | 34 - .../201905252122267_IdForDensityCode.resx | 126 - ...45072_MakeEntityFrameworkHappy.Designer.cs | 29 - ...01905252245072_MakeEntityFrameworkHappy.cs | 11 - ...905252245072_MakeEntityFrameworkHappy.resx | 32 - ...0191102132240_InitialMigration.Designer.cs | 2098 ++++++++++++++ .../20191102132240_InitialMigration.cs | 2529 +++++++++++++++++ .../Migrations/Configuration.cs | 53 - .../DicServerContextModelSnapshot.cs | 2096 ++++++++++++++ DiscImageChef.Server/Models/CdOffset.cs | 1 - DiscImageChef.Server/Models/Context.cs | 50 +- DiscImageChef.Server/Models/Device.cs | 1 - DiscImageChef.Server/Models/ErrorViewModel.cs | 11 + DiscImageChef.Server/Models/UsbProduct.cs | 3 - DiscImageChef.Server/Models/UsbVendor.cs | 2 - DiscImageChef.Server/Program.cs | 121 + .../Properties/AssemblyInfo.cs | 35 - .../Properties/launchSettings.json | 27 + DiscImageChef.Server/Startup.cs | 64 + .../Views/Shared/Error.cshtml | 25 + .../Views/Shared/_Layout.cshtml | 16 +- .../Shared/_ValidationScriptsPartial.cshtml | 2 + DiscImageChef.Server/Views/Stats/Index.cshtml | 3 +- DiscImageChef.Server/Views/Web.config | 43 - .../Views/_ViewImports.cshtml | 3 + DiscImageChef.Server/Views/_ViewStart.cshtml | 3 + DiscImageChef.Server/Web.Debug.config | 30 - DiscImageChef.Server/Web.Release.config | 31 - DiscImageChef.Server/Web.config | 98 - .../appsettings.Development.json | 9 + DiscImageChef.Server/appsettings.json | 13 + DiscImageChef.Server/fonts/.htaccess | 1 - DiscImageChef.Server/package-lock.json | 12 - DiscImageChef.Server/package.json | 5 - DiscImageChef.Server/packages.config | 35 - .../{styles => wwwroot/css}/_highcharts.scss | 0 .../{styles => wwwroot/css}/dos/_colors.scss | 0 .../{styles => wwwroot/css}/dos/_font.scss | 0 .../css}/dos/_fontstyles.scss | 0 .../{styles => wwwroot/css}/dos/dicserver.css | 0 .../css}/dos/dicserver.scss | 0 .../css}/dos/dicserver_highcharts.css | 0 .../css}/dos/dicserver_highcharts.scss | 0 .../{styles => wwwroot/css}/mac/_colors.scss | 0 .../{styles => wwwroot/css}/mac/_font.scss | 0 .../css}/mac/_fontstyles.scss | 0 .../{styles => wwwroot/css}/mac/dicserver.css | 0 .../css}/mac/dicserver.scss | 0 .../css}/mac/dicserver_highcharts.css | 0 .../css}/mac/dicserver_highcharts.scss | 0 DiscImageChef.Server/wwwroot/favicon.ico | Bin 0 -> 32038 bytes .../{Reports => wwwroot/fonts}/.htaccess | 0 .../{ => wwwroot}/fonts/ChicagoFLF.eot | Bin .../{ => wwwroot}/fonts/ChicagoFLF.ttf | Bin .../{ => wwwroot}/fonts/ChicagoFLF.woff | Bin .../{ => wwwroot}/fonts/ChicagoFLF.woff2 | Bin .../{ => wwwroot}/fonts/vga_squarepx.eot | Bin .../{ => wwwroot}/fonts/vga_squarepx.ttf | Bin .../{ => wwwroot}/fonts/vga_squarepx.woff | Bin .../{ => wwwroot}/fonts/vga_squarepx.woff2 | Bin 118 files changed, 7366 insertions(+), 4733 deletions(-) create mode 100644 .idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server.xml create mode 100644 .idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server_task.xml delete mode 100644 DiscImageChef.Server.Task/App.config delete mode 100644 DiscImageChef.Server.Task/Properties/AssemblyInfo.cs delete mode 100644 DiscImageChef.Server/App_Start/RouteConfig.cs delete mode 100644 DiscImageChef.Server/App_Start/WebApiConfig.cs delete mode 100644 DiscImageChef.Server/Global.asax delete mode 100644 DiscImageChef.Server/Global.asax.cs delete mode 100644 DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs delete mode 100644 DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx delete mode 100644 DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs delete mode 100644 DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx delete mode 100644 DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs delete mode 100644 DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx delete mode 100644 DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs delete mode 100644 DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx delete mode 100644 DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs delete mode 100644 DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx delete mode 100644 DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs delete mode 100644 DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx delete mode 100644 DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs delete mode 100644 DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx delete mode 100644 DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs delete mode 100644 DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx delete mode 100644 DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs delete mode 100644 DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx delete mode 100644 DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs delete mode 100644 DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx delete mode 100644 DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs delete mode 100644 DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx delete mode 100644 DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs delete mode 100644 DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx delete mode 100644 DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs delete mode 100644 DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx delete mode 100644 DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs delete mode 100644 DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx delete mode 100644 DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs delete mode 100644 DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs delete mode 100644 DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx create mode 100644 DiscImageChef.Server/Migrations/20191102132240_InitialMigration.Designer.cs create mode 100644 DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs delete mode 100644 DiscImageChef.Server/Migrations/Configuration.cs create mode 100644 DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs create mode 100644 DiscImageChef.Server/Models/ErrorViewModel.cs create mode 100644 DiscImageChef.Server/Program.cs delete mode 100644 DiscImageChef.Server/Properties/AssemblyInfo.cs create mode 100644 DiscImageChef.Server/Properties/launchSettings.json create mode 100644 DiscImageChef.Server/Startup.cs create mode 100644 DiscImageChef.Server/Views/Shared/Error.cshtml create mode 100644 DiscImageChef.Server/Views/Shared/_ValidationScriptsPartial.cshtml delete mode 100644 DiscImageChef.Server/Views/Web.config create mode 100644 DiscImageChef.Server/Views/_ViewImports.cshtml create mode 100644 DiscImageChef.Server/Views/_ViewStart.cshtml delete mode 100644 DiscImageChef.Server/Web.Debug.config delete mode 100644 DiscImageChef.Server/Web.Release.config delete mode 100644 DiscImageChef.Server/Web.config create mode 100644 DiscImageChef.Server/appsettings.Development.json create mode 100644 DiscImageChef.Server/appsettings.json delete mode 100644 DiscImageChef.Server/fonts/.htaccess delete mode 100644 DiscImageChef.Server/package-lock.json delete mode 100644 DiscImageChef.Server/package.json delete mode 100644 DiscImageChef.Server/packages.config rename DiscImageChef.Server/{styles => wwwroot/css}/_highcharts.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/_colors.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/_font.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/_fontstyles.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/dicserver.css (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/dicserver.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/dicserver_highcharts.css (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/dos/dicserver_highcharts.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/_colors.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/_font.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/_fontstyles.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/dicserver.css (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/dicserver.scss (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/dicserver_highcharts.css (100%) rename DiscImageChef.Server/{styles => wwwroot/css}/mac/dicserver_highcharts.scss (100%) create mode 100644 DiscImageChef.Server/wwwroot/favicon.ico rename DiscImageChef.Server/{Reports => wwwroot/fonts}/.htaccess (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/ChicagoFLF.eot (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/ChicagoFLF.ttf (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/ChicagoFLF.woff (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/ChicagoFLF.woff2 (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/vga_squarepx.eot (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/vga_squarepx.ttf (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/vga_squarepx.woff (100%) rename DiscImageChef.Server/{ => wwwroot}/fonts/vga_squarepx.woff2 (100%) diff --git a/.gitignore b/.gitignore index a56fb174..c38b5834 100644 --- a/.gitignore +++ b/.gitignore @@ -537,3 +537,4 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ +public.asc diff --git a/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server.xml b/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server.xml new file mode 100644 index 00000000..269c99f6 --- /dev/null +++ b/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server.xml @@ -0,0 +1,17 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server_task.xml b/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server_task.xml new file mode 100644 index 00000000..ee0801a5 --- /dev/null +++ b/.idea/.idea.DiscImageChef.Server/.idea/runConfigurations/Server_task.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/DiscImageChef.Server.Task/App.config b/DiscImageChef.Server.Task/App.config deleted file mode 100644 index 4980456b..00000000 --- a/DiscImageChef.Server.Task/App.config +++ /dev/null @@ -1,29 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj b/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj index 8821ad18..ecf4e929 100644 --- a/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj +++ b/DiscImageChef.Server.Task/DiscImageChef.Server.Task.csproj @@ -1,105 +1,37 @@ - - - + + - Debug - AnyCPU - {79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2} Exe - Properties - DiscImageChef.Server.Task - DiscImageChef.Server.Task - v4.7.1 - true - 512 + netcoreapp3.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 + + + $(Version) + true + 4.5.99.1693 + Claunia.com + Copyright © 2011-2019 Natalia Portillo + The Disc Image Chef + DiscImageChef.Server + $(Version) + linux-x64 - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 + + + $(Version)-{chash:8} built by {mname} in $(Configuration){!:, modified} + true + true + - - ..\..\..\..\..\tmp\claunia-temp-aspnet-0\e277a754\assembly\shadow\34ef13c2\840cc539_b0e3d6fb_00000001\DiscImageChef.CommonTypes.dll - - - ..\..\..\..\..\tmp\claunia-temp-aspnet-0\e277a754\assembly\shadow\3a88f867\8a6b2e9c_b0e3d6fb_00000001\DiscImageChef.Decoders.dll - - - ..\..\..\.nuget\packages\entityframework\6.2.0\lib\net45\EntityFramework.dll - - - - - + + + + - - + + - - - {f8bdf57b-1571-4cd0-84b3-b422088d359a} - DiscImageChef.Helpers - - - {911addf5-e5fa-445d-88cd-c7f8ffdbe645} - DiscImageChef.Server - - - - - - - - - - - - LICENSE.LGPL - - - - - - - - - /Library/Frameworks/Mono.framework/Versions/Current/lib/mono - /usr/lib/mono - /usr/local/lib/mono - - $(BaseFrameworkPathOverrideForMono)/4.0-api - $(BaseFrameworkPathOverrideForMono)/4.5-api - $(BaseFrameworkPathOverrideForMono)/4.5.1-api - $(BaseFrameworkPathOverrideForMono)/4.5.2-api - $(BaseFrameworkPathOverrideForMono)/4.6-api - $(BaseFrameworkPathOverrideForMono)/4.6.1-api - $(BaseFrameworkPathOverrideForMono)/4.6.2-api - $(BaseFrameworkPathOverrideForMono)/4.7-api - $(BaseFrameworkPathOverrideForMono)/4.7.1-api - true - - $(FrameworkPathOverride)/Facades;$(AssemblySearchPaths) - - \ No newline at end of file + + diff --git a/DiscImageChef.Server.Task/Program.cs b/DiscImageChef.Server.Task/Program.cs index 5041ec53..b72fd213 100644 --- a/DiscImageChef.Server.Task/Program.cs +++ b/DiscImageChef.Server.Task/Program.cs @@ -31,14 +31,13 @@ // ****************************************************************************/ using System; -using System.Data.Entity.Migrations; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; -using DiscImageChef.Server.Migrations; using DiscImageChef.Server.Models; using HtmlAgilityPack; +using Microsoft.EntityFrameworkCore; namespace DiscImageChef.Server.Task { @@ -47,30 +46,29 @@ namespace DiscImageChef.Server.Task public static void Main(string[] args) { DateTime start, end; - Console.WriteLine("{0}: Migrating database to latest version...", DateTime.UtcNow); - start = DateTime.UtcNow; - Configuration migratorConfig = new Configuration(); - DbMigrator dbMigrator = new DbMigrator(migratorConfig); - dbMigrator.Update(); - end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", DateTime.UtcNow, (end - start).TotalSeconds); start = DateTime.UtcNow; - Console.WriteLine("{0}: Connecting to database...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Connecting to database...", DateTime.UtcNow); DicServerContext ctx = new DicServerContext(); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + + System.Console.WriteLine("{0}: Migrating database to latest version...", DateTime.UtcNow); + start = DateTime.UtcNow; + ctx.Database.Migrate(); + end = DateTime.UtcNow; + System.Console.WriteLine("{0}: Took {1:F2} seconds", DateTime.UtcNow, (end - start).TotalSeconds); WebClient client; try { - Console.WriteLine("{0}: Retrieving USB IDs from Linux USB...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Retrieving USB IDs from Linux USB...", DateTime.UtcNow); start = DateTime.UtcNow; client = new WebClient(); StringReader sr = new StringReader(client.DownloadString("http://www.linux-usb.org/usb.ids")); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); UsbVendor vendor = null; int newVendors = 0; @@ -80,16 +78,16 @@ namespace DiscImageChef.Server.Task int counter = 0; start = DateTime.UtcNow; - Console.WriteLine("{0}: Adding and updating database entries...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Adding and updating database entries...", DateTime.UtcNow); do { if(counter == 1000) { DateTime start2 = DateTime.UtcNow; - Console.WriteLine("{0}: Saving changes", start2); + System.Console.WriteLine("{0}: Saving changes", start2); ctx.SaveChanges(); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start2).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start2).TotalSeconds); counter = 0; } @@ -118,7 +116,7 @@ namespace DiscImageChef.Server.Task { product = new UsbProduct(vendor, number, name); ctx.UsbProducts.Add(product); - Console.WriteLine("{0}: Will add product {1} with ID {2:X4} and vendor {3} ({4:X4})", + System.Console.WriteLine("{0}: Will add product {1} with ID {2:X4} and vendor {3} ({4:X4})", DateTime.UtcNow, product.Product, product.ProductId, product.Vendor?.Vendor ?? "null", product.Vendor?.VendorId ?? 0); newProducts++; @@ -126,7 +124,7 @@ namespace DiscImageChef.Server.Task } else if(name != product.Product) { - Console + System.Console .WriteLine("{0}: Will modify product with ID {1:X4} and vendor {2} ({3:X4}) from \"{4}\" to \"{5}\"", DateTime.UtcNow, product.ProductId, product.Vendor?.Vendor ?? "null", product.Vendor?.VendorId ?? 0, @@ -153,14 +151,14 @@ namespace DiscImageChef.Server.Task { vendor = new UsbVendor(number, name); ctx.UsbVendors.Add(vendor); - Console.WriteLine("{0}: Will add vendor {1} with ID {2:X4}", DateTime.UtcNow, vendor.Vendor, + System.Console.WriteLine("{0}: Will add vendor {1} with ID {2:X4}", DateTime.UtcNow, vendor.Vendor, vendor.VendorId); newVendors++; counter++; } else if(name != vendor.Vendor) { - Console.WriteLine("{0}: Will modify vendor with ID {1:X4} from \"{2}\" to \"{3}\"", + System.Console.WriteLine("{0}: Will modify vendor with ID {1:X4} from \"{2}\" to \"{3}\"", DateTime.UtcNow, vendor.VendorId, vendor.Vendor, name); vendor.Vendor = name; vendor.ModifiedWhen = DateTime.UtcNow; @@ -171,68 +169,68 @@ namespace DiscImageChef.Server.Task while(true); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: Saving database changes...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Saving database changes...", DateTime.UtcNow); start = DateTime.UtcNow; ctx.SaveChanges(); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: {1} vendors added.", DateTime.UtcNow, newVendors); - Console.WriteLine("{0}: {1} products added.", DateTime.UtcNow, newProducts); - Console.WriteLine("{0}: {1} vendors modified.", DateTime.UtcNow, modifiedVendors); - Console.WriteLine("{0}: {1} products modified.", DateTime.UtcNow, modifiedProducts); + System.Console.WriteLine("{0}: {1} vendors added.", DateTime.UtcNow, newVendors); + System.Console.WriteLine("{0}: {1} products added.", DateTime.UtcNow, newProducts); + System.Console.WriteLine("{0}: {1} vendors modified.", DateTime.UtcNow, modifiedVendors); + System.Console.WriteLine("{0}: {1} products modified.", DateTime.UtcNow, modifiedProducts); - Console.WriteLine("{0}: Looking up a vendor", DateTime.UtcNow); + System.Console.WriteLine("{0}: Looking up a vendor", DateTime.UtcNow); start = DateTime.UtcNow; vendor = ctx.UsbVendors.FirstOrDefault(v => v.VendorId == 0x8086); - if(vendor is null) Console.WriteLine("{0}: Error, could not find vendor.", DateTime.UtcNow); + if(vendor is null) System.Console.WriteLine("{0}: Error, could not find vendor.", DateTime.UtcNow); else - Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, + System.Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, vendor.Vendor); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: Looking up a product", DateTime.UtcNow); + System.Console.WriteLine("{0}: Looking up a product", DateTime.UtcNow); start = DateTime.UtcNow; UsbProduct prd = ctx.UsbProducts.FirstOrDefault(p => p.ProductId == 0x0001 && p.Vendor.VendorId == 0x8086); - if(prd is null) Console.WriteLine("{0}: Error, could not find product.", DateTime.UtcNow); - else Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, prd.Product); + if(prd is null) System.Console.WriteLine("{0}: Error, could not find product.", DateTime.UtcNow); + else System.Console.WriteLine("{0}: Found {1}.", DateTime.UtcNow, prd.Product); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); } catch(Exception ex) { #if DEBUG if(Debugger.IsAttached) throw; #endif - Console.WriteLine("{0}: Exception {1} filling USB IDs...", DateTime.UtcNow, ex); + System.Console.WriteLine("{0}: Exception {1} filling USB IDs...", DateTime.UtcNow, ex); } - Console.WriteLine("{0}: Fixing all devices without modification time...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Fixing all devices without modification time...", DateTime.UtcNow); start = DateTime.UtcNow; foreach(Device device in ctx.Devices.Where(d => d.ModifiedWhen == null)) device.ModifiedWhen = device.AddedWhen; end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); start = DateTime.UtcNow; ctx.SaveChanges(); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); try { - Console.WriteLine("{0}: Retrieving CompactDisc read offsets from AccurateRip...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Retrieving CompactDisc read offsets from AccurateRip...", DateTime.UtcNow); start = DateTime.UtcNow; client = new WebClient(); string html = client.DownloadString("http://www.accuraterip.com/driveoffsets.htm"); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); // The HTML is too malformed to process easily, so find start of table html = "" + @@ -247,7 +245,7 @@ namespace DiscImageChef.Server.Task int addedOffsets = 0; int modifiedOffsets = 0; - Console.WriteLine("{0}: Processing offsets...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Processing offsets...", DateTime.UtcNow); start = DateTime.UtcNow; foreach(HtmlNode row in firstTable.Descendants("tr")) { @@ -255,7 +253,7 @@ namespace DiscImageChef.Server.Task if(columns.Length != 4) { - Console.WriteLine("{0}: Row does not have correct number of columns...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Row does not have correct number of columns...", DateTime.UtcNow); continue; } @@ -268,28 +266,28 @@ namespace DiscImageChef.Server.Task { if(column0.ToLowerInvariant() != "cd drive") { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, + System.Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, columns[0].InnerText); break; } if(column1.ToLowerInvariant() != "correction offset") { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, + System.Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, columns[1].InnerText); break; } if(column2.ToLowerInvariant() != "submitted by") { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, + System.Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, columns[2].InnerText); break; } if(column3.ToLowerInvariant() != "percentage agree") { - Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, + System.Console.WriteLine("{0}: Unexpected header \"{1}\" found...", DateTime.UtcNow, columns[3].InnerText); break; } @@ -412,23 +410,23 @@ namespace DiscImageChef.Server.Task } end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); + System.Console.WriteLine("{0}: Committing changes...", DateTime.UtcNow); start = DateTime.UtcNow; ctx.SaveChanges(); end = DateTime.UtcNow; - Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); + System.Console.WriteLine("{0}: Took {1:F2} seconds", end, (end - start).TotalSeconds); - Console.WriteLine("{0}: Added {1} offsets", end, addedOffsets); - Console.WriteLine("{0}: Modified {1} offsets", end, modifiedOffsets); + System.Console.WriteLine("{0}: Added {1} offsets", end, addedOffsets); + System.Console.WriteLine("{0}: Modified {1} offsets", end, modifiedOffsets); } catch(Exception ex) { #if DEBUG if(Debugger.IsAttached) throw; #endif - Console.WriteLine("{0}: Exception {1} filling CompactDisc read offsets...", DateTime.UtcNow, ex); + System.Console.WriteLine("{0}: Exception {1} filling CompactDisc read offsets...", DateTime.UtcNow, ex); } } } diff --git a/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs b/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs deleted file mode 100644 index 0952c4ca..00000000 --- a/DiscImageChef.Server.Task/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DiscImageChef.Server.Task")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DiscImageChef.Server.Task")] -[assembly: AssemblyCopyright("Copyright © 2011-2019 Natalia Portillo")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("79D6A54E-47B6-4D0A-ABEB-4FA7B5ADF4B2")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.5.99.1693")] -[assembly: AssemblyFileVersion("4.5.99.1693")] \ No newline at end of file diff --git a/DiscImageChef.Server/App_Start/RouteConfig.cs b/DiscImageChef.Server/App_Start/RouteConfig.cs deleted file mode 100644 index 1c7e5413..00000000 --- a/DiscImageChef.Server/App_Start/RouteConfig.cs +++ /dev/null @@ -1,50 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : RouteConfig.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Sets ASP.NET routing information. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Web.Mvc; -using System.Web.Routing; - -namespace DiscImageChef.Server -{ - public class RouteConfig - { - public static void RegisterRoutes(RouteCollection routes) - { - routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); - - routes.MapMvcAttributeRoutes(); - - routes.MapRoute("Default", "{controller}/{action}/{id}", - new {controller = "Home", action = "Index", id = UrlParameter.Optional}); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/App_Start/WebApiConfig.cs b/DiscImageChef.Server/App_Start/WebApiConfig.cs deleted file mode 100644 index e0cecbf5..00000000 --- a/DiscImageChef.Server/App_Start/WebApiConfig.cs +++ /dev/null @@ -1,61 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : WebApiConfig.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Configures Web API -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -// This is verbatim from ASP.NET so left as is -// ReSharper disable All - -using System.Data.Entity.Migrations; -using System.Web.Http; -using DiscImageChef.Server.Migrations; -using DiscImageChef.Server.Models; - -namespace DiscImageChef.Server -{ - public static class WebApiConfig - { - public static void Register(HttpConfiguration config) - { - // Web API configuration and services - - // Web API routes - config.MapHttpAttributeRoutes(); - - config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}", - defaults: new {id = RouteParameter.Optional}); - - //DicServerContext ctx = new DicServerContext(); - Configuration migratorConfig = new Migrations.Configuration(); - DbMigrator dbMigrator = new DbMigrator(migratorConfig); - dbMigrator.Update(); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Controllers/HomeController.cs b/DiscImageChef.Server/Controllers/HomeController.cs index bbb25e28..edb25ba9 100644 --- a/DiscImageChef.Server/Controllers/HomeController.cs +++ b/DiscImageChef.Server/Controllers/HomeController.cs @@ -33,23 +33,27 @@ using System; using System.IO; using System.Reflection; -using System.Web.Hosting; -using System.Web.Mvc; using Markdig; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; namespace DiscImageChef.Server.Controllers { - [RoutePrefix("Home")] public class HomeController : Controller { + private IWebHostEnvironment _environment; + + public HomeController(IWebHostEnvironment environment) + { + _environment = environment; + } + [Route("")] - [Route("~/")] [Route("README")] - [Route("~/README")] public ActionResult Index() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "README.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -64,11 +68,10 @@ namespace DiscImageChef.Server.Controllers } [Route("Changelog")] - [Route("~/Changelog")] public ActionResult Changelog() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "Changelog.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -83,11 +86,10 @@ namespace DiscImageChef.Server.Controllers } [Route("CODE_OF_CONDUCT")] - [Route("~/CODE_OF_CONDUCT")] public ActionResult CODE_OF_CONDUCT() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "CODE_OF_CONDUCT.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -102,11 +104,10 @@ namespace DiscImageChef.Server.Controllers } [Route("PULL_REQUEST_TEMPLATE")] - [Route("~/PULL_REQUEST_TEMPLATE")] public ActionResult PULL_REQUEST_TEMPLATE() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "PULL_REQUEST_TEMPLATE.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -121,11 +122,10 @@ namespace DiscImageChef.Server.Controllers } [Route("ISSUE_TEMPLATE")] - [Route("~/ISSUE_TEMPLATE")] public ActionResult ISSUE_TEMPLATE() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "ISSUE_TEMPLATE.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -140,11 +140,10 @@ namespace DiscImageChef.Server.Controllers } [Route("CONTRIBUTING")] - [Route("~/CONTRIBUTING")] public ActionResult CONTRIBUTING() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "CONTRIBUTING.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -159,11 +158,10 @@ namespace DiscImageChef.Server.Controllers } [Route("DONATING")] - [Route("~/DONATING")] public ActionResult DONATING() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "DONATING.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); @@ -178,11 +176,10 @@ namespace DiscImageChef.Server.Controllers } [Route("TODO")] - [Route("~/TODO")] public ActionResult TODO() { StreamReader sr = - new StreamReader(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + new StreamReader(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "docs", "TODO.md")); string mdcontent = sr.ReadToEnd(); sr.Close(); diff --git a/DiscImageChef.Server/Controllers/ReportController.cs b/DiscImageChef.Server/Controllers/ReportController.cs index 5f599a50..e06d95b3 100644 --- a/DiscImageChef.Server/Controllers/ReportController.cs +++ b/DiscImageChef.Server/Controllers/ReportController.cs @@ -33,18 +33,25 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Web.Mvc; -using System.Web.Routing; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Decoders.PCMCIA; using DiscImageChef.Decoders.SCSI; using DiscImageChef.Server.Models; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; using Tuple = DiscImageChef.Decoders.PCMCIA.Tuple; namespace DiscImageChef.Server.Controllers { public class ReportController : Controller { + private DicServerContext _ctx; + + public ReportController(DicServerContext context) + { + _ctx = context; + } + public ActionResult Index() => RedirectToAction("View", "Report", new RouteValueDictionary {{"id", 1}}); public ActionResult View(int? id) @@ -53,8 +60,7 @@ namespace DiscImageChef.Server.Controllers try { - DicServerContext ctx = new DicServerContext(); - Device report = ctx.Devices.FirstOrDefault(d => d.Id == id); + Device report = _ctx.Devices.FirstOrDefault(d => d.Id == id); if(report is null) return Content("Cannot find requested report"); @@ -68,13 +74,13 @@ namespace DiscImageChef.Server.Controllers string usbProductDescription = null; UsbProduct dbProduct = - ctx.UsbProducts.FirstOrDefault(p => p.ProductId == report.USB.ProductID && + _ctx.UsbProducts.FirstOrDefault(p => p.ProductId == report.USB.ProductID && p.Vendor != null && p.Vendor.VendorId == report.USB.VendorID); if(dbProduct is null) { - UsbVendor dbVendor = ctx.UsbVendors.FirstOrDefault(v => v.VendorId == report.USB.VendorID); + UsbVendor dbVendor = _ctx.UsbVendors.FirstOrDefault(v => v.VendorId == report.USB.VendorID); if(!(dbVendor is null)) usbVendorDescription = dbVendor.Vendor; } diff --git a/DiscImageChef.Server/Controllers/StatsController.cs b/DiscImageChef.Server/Controllers/StatsController.cs index 44da8683..32a57530 100644 --- a/DiscImageChef.Server/Controllers/StatsController.cs +++ b/DiscImageChef.Server/Controllers/StatsController.cs @@ -36,14 +36,15 @@ using System.IO; using System.Linq; using System.Reflection; using System.Threading; -using System.Web.Hosting; -using System.Web.Mvc; using System.Xml; using System.Xml.Serialization; using DiscImageChef.CommonTypes.Interop; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Server.Models; using Highsoft.Web.Mvc.Charts; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Hosting.Internal; using Filter = DiscImageChef.Server.Models.Filter; using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; using PlatformID = DiscImageChef.CommonTypes.Interop.PlatformID; @@ -56,12 +57,19 @@ namespace DiscImageChef.Server.Controllers /// public class StatsController : Controller { - DicServerContext ctx = new DicServerContext(); + DicServerContext ctx; List devices; List operatingSystems; List realMedia; List versions; List virtualMedia; + private IWebHostEnvironment _environment; + + public StatsController(IWebHostEnvironment environment, DicServerContext context) + { + _environment = environment; + ctx = context; + } public ActionResult Index() { @@ -71,7 +79,7 @@ namespace DiscImageChef.Server.Controllers { if( System.IO.File - .Exists(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + .Exists(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"))) try { @@ -79,7 +87,7 @@ namespace DiscImageChef.Server.Controllers XmlSerializer xs = new XmlSerializer(statistics.GetType()); FileStream fs = - WaitForFile(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"), + WaitForFile(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml"), FileMode.Open, FileAccess.Read, FileShare.Read); statistics = (Stats)xs.Deserialize(fs); fs.Close(); @@ -87,7 +95,7 @@ namespace DiscImageChef.Server.Controllers StatsConverter.Convert(statistics); System.IO.File - .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + .Delete(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Statistics", "Statistics.xml")); } catch(XmlException) @@ -443,24 +451,24 @@ namespace DiscImageChef.Server.Controllers xmlFile = xmlFile.Replace('/', '_').Replace('\\', '_').Replace('?', '_'); - if(System.IO.File.Exists(Path.Combine(HostingEnvironment.MapPath("~"), "Reports", xmlFile))) + if(System.IO.File.Exists(Path.Combine(_environment.ContentRootPath, "Reports", xmlFile))) { DeviceReport deviceReport = new DeviceReport(); XmlSerializer xs = new XmlSerializer(deviceReport.GetType()); FileStream fs = - WaitForFile(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), "Reports", xmlFile), + WaitForFile(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Reports", xmlFile), FileMode.Open, FileAccess.Read, FileShare.Read); deviceReport = (DeviceReport)xs.Deserialize(fs); fs.Close(); DeviceReportV2 deviceReportV2 = new DeviceReportV2(deviceReport); - device.Report = ctx.Devices.Add(new Device(deviceReportV2)); + device.Report = ctx.Devices.Add(new Device(deviceReportV2)).Entity; ctx.SaveChanges(); System.IO.File - .Delete(Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + .Delete(Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "Reports", xmlFile)); } diff --git a/DiscImageChef.Server/Controllers/UpdateController.cs b/DiscImageChef.Server/Controllers/UpdateController.cs index 423f5502..d23bf798 100644 --- a/DiscImageChef.Server/Controllers/UpdateController.cs +++ b/DiscImageChef.Server/Controllers/UpdateController.cs @@ -37,35 +37,41 @@ using System.Linq; using System.Net; using System.Net.Http; using System.Text; -using System.Web.Http; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Dto; using DiscImageChef.Server.Models; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; namespace DiscImageChef.Server.Controllers { - public class UpdateController : ApiController + public class UpdateController : Controller { + private DicServerContext _ctx; + + public UpdateController(DicServerContext ctx) + { + _ctx = ctx; + } + /// /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server /// /// HTTP response [Route("api/update")] [HttpGet] - public HttpResponseMessage UploadReport(long timestamp) + public ActionResult Update(long timestamp) { - DicServerContext ctx = new DicServerContext(); - SyncDto sync = new SyncDto(); DateTime lastSync = DateHandlers.UnixToDateTime(timestamp); sync.UsbVendors = new List(); - foreach(UsbVendor vendor in ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync)) + foreach(UsbVendor vendor in _ctx.UsbVendors.Where(v => v.ModifiedWhen > lastSync)) sync.UsbVendors.Add(new UsbVendorDto {VendorId = (ushort)vendor.VendorId, Vendor = vendor.Vendor}); sync.UsbProducts = new List(); - foreach(UsbProduct product in ctx.UsbProducts.Where(p => p.ModifiedWhen > lastSync)) + foreach(UsbProduct product in _ctx.UsbProducts.Include(p => p.Vendor).Where(p => p.ModifiedWhen > lastSync)) sync.UsbProducts.Add(new UsbProductDto { Id = product.Id, @@ -75,11 +81,11 @@ namespace DiscImageChef.Server.Controllers }); sync.Offsets = new List(); - foreach(CompactDiscOffset offset in ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync)) + foreach(CompactDiscOffset offset in _ctx.CdOffsets.Where(o => o.ModifiedWhen > lastSync)) sync.Offsets.Add(new CdOffsetDto(offset, offset.Id)); sync.Devices = new List(); - foreach(Device device in ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList()) + foreach(Device device in _ctx.Devices.Where(d => d.ModifiedWhen > lastSync).ToList()) sync.Devices.Add(new DeviceDto(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(device, Formatting.None, new JsonSerializerSettings {ReferenceLoopHandling = ReferenceLoopHandling.Ignore})), device.Id, device.OptimalMultipleSectorsRead)); @@ -88,10 +94,11 @@ namespace DiscImageChef.Server.Controllers StringWriter sw = new StringWriter(); js.Serialize(sw, sync); - return new HttpResponseMessage + return new ContentResult { - StatusCode = HttpStatusCode.OK, - Content = new StringContent(sw.ToString(), Encoding.UTF8, "application/json") + StatusCode = (int)HttpStatusCode.OK, + Content = sw.ToString(), + ContentType = "application/json" }; } } diff --git a/DiscImageChef.Server/Controllers/UploadReportController.cs b/DiscImageChef.Server/Controllers/UploadReportController.cs index 7cbe3be7..d0a76728 100644 --- a/DiscImageChef.Server/Controllers/UploadReportController.cs +++ b/DiscImageChef.Server/Controllers/UploadReportController.cs @@ -36,22 +36,32 @@ using System.IO; using System.Net; using System.Net.Http; using System.Text; +using System.Threading.Tasks; using System.Web; -using System.Web.Hosting; -using System.Web.Http; using System.Xml.Serialization; using Cinchoo.PGP; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Server.Models; using MailKit.Net.Smtp; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Hosting.Internal; using MimeKit; using Newtonsoft.Json; namespace DiscImageChef.Server.Controllers { - public class UploadReportController : ApiController + public class UploadReportController : Controller { - DicServerContext ctx = new DicServerContext(); + private DicServerContext ctx; + private IWebHostEnvironment _environment; + + public UploadReportController(IWebHostEnvironment environment, DicServerContext _ctx) + { + _environment = environment; + ctx = _ctx; + } /// /// Receives a report from DiscImageChef.Core, verifies it's in the correct format and stores it on the server @@ -59,21 +69,21 @@ namespace DiscImageChef.Server.Controllers /// HTTP response [Route("api/uploadreport")] [HttpPost] - public HttpResponseMessage UploadReport() + public async Task UploadReport() { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; + ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; try { DeviceReport newReport = new DeviceReport(); - HttpRequest request = HttpContext.Current.Request; + HttpRequest request = HttpContext.Request; XmlSerializer xs = new XmlSerializer(newReport.GetType()); - newReport = (DeviceReport)xs.Deserialize(request.InputStream); + newReport = (DeviceReport) xs.Deserialize(new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); if(newReport == null) { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); + response.Content = "notstats"; return response; } @@ -94,7 +104,7 @@ namespace DiscImageChef.Server.Controllers MemoryStream pgpOut = new MemoryStream(); ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "public.asc"), true); pgpOut.Position = 0; reportV2String = Encoding.UTF8.GetString(pgpOut.ToArray()); @@ -114,7 +124,7 @@ namespace DiscImageChef.Server.Controllers client.Disconnect(true); } - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); + response.Content = "ok"; return response; } // ReSharper disable once RedundantCatchClause @@ -123,7 +133,7 @@ namespace DiscImageChef.Server.Controllers #if DEBUG if(Debugger.IsAttached) throw; #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); + response.Content = "error"; return response; } } @@ -134,21 +144,21 @@ namespace DiscImageChef.Server.Controllers /// HTTP response [Route("api/uploadreportv2")] [HttpPost] - public HttpResponseMessage UploadReportV2() + public async Task UploadReportV2() { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; + ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; try { - HttpRequest request = HttpContext.Current.Request; + HttpRequest request = HttpContext.Request; - StreamReader sr = new StreamReader(request.InputStream); - string reportJson = sr.ReadToEnd(); + StreamReader sr = new StreamReader(request.Body); + string reportJson = await sr.ReadToEndAsync(); DeviceReportV2 newReport = JsonConvert.DeserializeObject(reportJson); if(newReport == null) { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); + response.Content = "notstats"; return response; } @@ -159,7 +169,7 @@ namespace DiscImageChef.Server.Controllers MemoryStream pgpOut = new MemoryStream(); ChoPGPEncryptDecrypt pgp = new ChoPGPEncryptDecrypt(); pgp.Encrypt(pgpIn, pgpOut, - Path.Combine(HostingEnvironment.MapPath("~") ?? throw new InvalidOperationException(), + Path.Combine(_environment.ContentRootPath ?? throw new InvalidOperationException(), "public.asc"), true); pgpOut.Position = 0; reportJson = Encoding.UTF8.GetString(pgpOut.ToArray()); @@ -178,7 +188,7 @@ namespace DiscImageChef.Server.Controllers client.Disconnect(true); } - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); + response.Content = "ok"; return response; } // ReSharper disable once RedundantCatchClause @@ -187,7 +197,7 @@ namespace DiscImageChef.Server.Controllers #if DEBUG if(Debugger.IsAttached) throw; #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); + response.Content ="error"; return response; } } diff --git a/DiscImageChef.Server/Controllers/UploadStatsController.cs b/DiscImageChef.Server/Controllers/UploadStatsController.cs index cfadf535..5a370105 100644 --- a/DiscImageChef.Server/Controllers/UploadStatsController.cs +++ b/DiscImageChef.Server/Controllers/UploadStatsController.cs @@ -38,46 +38,57 @@ using System.Net; using System.Net.Http; using System.Text; using System.Threading; +using System.Threading.Tasks; using System.Web; -using System.Web.Http; using System.Xml.Serialization; using DiscImageChef.CommonTypes.Metadata; using DiscImageChef.Server.Models; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using OperatingSystem = DiscImageChef.Server.Models.OperatingSystem; using Version = DiscImageChef.Server.Models.Version; namespace DiscImageChef.Server.Controllers { - public class UploadStatsController : ApiController + public class UploadStatsController : Controller { + DicServerContext _ctx; + private IWebHostEnvironment _environment; + + public UploadStatsController(IWebHostEnvironment environment, DicServerContext ctx) + { + _environment = environment; + _ctx = ctx; + } /// /// Receives statistics from DiscImageChef.Core, processes them and adds them to a server-side global statistics XML /// /// HTTP response [Route("api/uploadstats")] [HttpPost] - public HttpResponseMessage UploadStats() + public async Task UploadStats() { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; + ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; try { Stats newStats = new Stats(); - HttpRequest request = HttpContext.Current.Request; + HttpRequest request = HttpContext.Request; XmlSerializer xs = new XmlSerializer(newStats.GetType()); - newStats = (Stats)xs.Deserialize(request.InputStream); + newStats = (Stats) xs.Deserialize(new StringReader(await new StreamReader(request.Body).ReadToEndAsync())); if(newStats == null) { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); + response.Content = "notstats"; return response; } StatsConverter.Convert(newStats); - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); + response.Content = "ok"; return response; } catch(Exception ex) @@ -85,7 +96,7 @@ namespace DiscImageChef.Server.Controllers #if DEBUG if(Debugger.IsAttached) throw; #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); + response.Content = "error"; return response; } } @@ -96,76 +107,75 @@ namespace DiscImageChef.Server.Controllers /// HTTP response [Route("api/uploadstatsv2")] [HttpPost] - public HttpResponseMessage UploadStatsV2() + public async Task UploadStatsV2() { - HttpResponseMessage response = new HttpResponseMessage {StatusCode = HttpStatusCode.OK}; + ContentResult response = new ContentResult {StatusCode = (int)HttpStatusCode.OK, ContentType = "text/plain"}; try { - HttpRequest request = HttpContext.Current.Request; + HttpRequest request = HttpContext.Request; - StreamReader sr = new StreamReader(request.InputStream); - StatsDto newstats = JsonConvert.DeserializeObject(sr.ReadToEnd()); + StreamReader sr = new StreamReader(request.Body); + var statsString = await sr.ReadToEndAsync(); + StatsDto newstats = JsonConvert.DeserializeObject(statsString); if(newstats == null) { - response.Content = new StringContent("notstats", Encoding.UTF8, "text/plain"); + response.Content = "notstats"; return response; } - DicServerContext ctx = new DicServerContext(); - if(newstats.Commands != null) foreach(NameValueStats nvs in newstats.Commands) { - Command existing = ctx.Commands.FirstOrDefault(c => c.Name == nvs.name); + Command existing = _ctx.Commands.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Commands.Add(new Command {Name = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.Commands.Add(new Command {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } if(newstats.Versions != null) foreach(NameValueStats nvs in newstats.Versions) { - Version existing = ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); + Version existing = _ctx.Versions.FirstOrDefault(c => c.Value == nvs.name); - if(existing == null) ctx.Versions.Add(new Version {Value = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.Versions.Add(new Version {Value = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } if(newstats.Filesystems != null) foreach(NameValueStats nvs in newstats.Filesystems) { - Filesystem existing = ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); + Filesystem existing = _ctx.Filesystems.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Filesystems.Add(new Filesystem {Name = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.Filesystems.Add(new Filesystem {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } if(newstats.Partitions != null) foreach(NameValueStats nvs in newstats.Partitions) { - Partition existing = ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); + Partition existing = _ctx.Partitions.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Partitions.Add(new Partition {Name = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.Partitions.Add(new Partition {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } if(newstats.MediaFormats != null) foreach(NameValueStats nvs in newstats.MediaFormats) { - MediaFormat existing = ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); + MediaFormat existing = _ctx.MediaFormats.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.MediaFormats.Add(new MediaFormat {Name = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.MediaFormats.Add(new MediaFormat {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } if(newstats.Filters != null) foreach(NameValueStats nvs in newstats.Filters) { - Filter existing = ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); + Filter existing = _ctx.Filters.FirstOrDefault(c => c.Name == nvs.name); - if(existing == null) ctx.Filters.Add(new Filter {Name = nvs.name, Count = nvs.Value}); + if(existing == null) _ctx.Filters.Add(new Filter {Name = nvs.name, Count = nvs.Value}); else existing.Count += nvs.Value; } @@ -173,11 +183,11 @@ namespace DiscImageChef.Server.Controllers foreach(OsStats operatingSystem in newstats.OperatingSystems) { OperatingSystem existing = - ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && + _ctx.OperatingSystems.FirstOrDefault(c => c.Name == operatingSystem.name && c.Version == operatingSystem.version); if(existing == null) - ctx.OperatingSystems.Add(new OperatingSystem + _ctx.OperatingSystems.Add(new OperatingSystem { Name = operatingSystem.name, Version = operatingSystem.version, @@ -189,10 +199,10 @@ namespace DiscImageChef.Server.Controllers if(newstats.Medias != null) foreach(MediaStats media in newstats.Medias) { - Media existing = ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); + Media existing = _ctx.Medias.FirstOrDefault(c => c.Type == media.type && c.Real == media.real); if(existing == null) - ctx.Medias.Add(new Media {Type = media.type, Real = media.real, Count = media.Value}); + _ctx.Medias.Add(new Media {Type = media.type, Real = media.real, Count = media.Value}); else existing.Count += media.Value; } @@ -200,13 +210,13 @@ namespace DiscImageChef.Server.Controllers foreach(DeviceStats device in newstats.Devices) { DeviceStat existing = - ctx.DeviceStats.FirstOrDefault(c => c.Bus == device.Bus && + _ctx.DeviceStats.FirstOrDefault(c => c.Bus == device.Bus && c.Manufacturer == device.Manufacturer && c.Model == device.Model && c.Revision == device.Revision); if(existing == null) - ctx.DeviceStats.Add(new DeviceStat + _ctx.DeviceStats.Add(new DeviceStat { Bus = device.Bus, Manufacturer = device.Manufacturer, @@ -215,9 +225,9 @@ namespace DiscImageChef.Server.Controllers }); } - ctx.SaveChanges(); + _ctx.SaveChanges(); - response.Content = new StringContent("ok", Encoding.UTF8, "text/plain"); + response.Content = "ok"; return response; } // ReSharper disable once RedundantCatchClause @@ -226,7 +236,7 @@ namespace DiscImageChef.Server.Controllers #if DEBUG if(Debugger.IsAttached) throw; #endif - response.Content = new StringContent("error", Encoding.UTF8, "text/plain"); + response.Content = "error"; return response; } } diff --git a/DiscImageChef.Server/DiscImageChef.Server.csproj b/DiscImageChef.Server/DiscImageChef.Server.csproj index 1d015547..566d638b 100644 --- a/DiscImageChef.Server/DiscImageChef.Server.csproj +++ b/DiscImageChef.Server/DiscImageChef.Server.csproj @@ -1,33 +1,10 @@ - - - - - + + + + netcoreapp3.0 + + - Debug - AnyCPU - - - 2.0 - {911ADDF5-E5FA-445D-88CD-C7F8FFDBE645} - {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} - Library - Properties - DiscImageChef.Server - DiscImageChef.Server - v4.6.1 - false - true - - - - - - - - - false - 4.5.99.1693 $(Version) true 4.5.99.1693 @@ -36,445 +13,56 @@ The Disc Image Chef DiscImageChef.Server $(Version) + linux-x64 + $(Version)-{chash:8} built by {mname} in $(Configuration){!:, modified} true true - - true - full - false - bin\ - DEBUG;TRACE - prompt - 4 - - - true - pdbonly - true - bin\ - TRACE - prompt - 4 - + - - ..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll - True - - - ..\packages\ChoPGP.1.0.1.2\lib\ChoPGP.dll - True - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll - True - - - ..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll - True - - - ..\packages\Google.Protobuf.3.7.0\lib\net45\Google.Protobuf.dll - True - - - ..\packages\Highsoft.Highcharts.7.0.3.11\lib\net40\Highcharts.Web.Mvc.dll - True - - - ..\packages\MailKit.2.1.4\lib\net45\MailKit.dll - True - - - ..\packages\Markdig.0.16.0\lib\net40\Markdig.dll - True - - - ..\packages\Microsoft.AspNet.TelemetryCorrelation.1.0.5\lib\net45\Microsoft.AspNet.TelemetryCorrelation.dll - True - - - ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.1\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll - - - - ..\packages\MimeKit.2.1.4\lib\net45\MimeKit.dll - True - - - - ..\packages\MySql.Data.8.0.15\lib\net452\MySql.Data.dll - True - - - ..\packages\MySql.Data.EntityFramework.8.0.15\lib\net452\MySql.Data.EntityFramework.dll - True - - - ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll - True - - - - - - - ..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll - True - - - - - - ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll - True - - - - - - - - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.Helpers.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll - True - - - ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.7\lib\net45\System.Web.Http.WebHost.dll - True - - - ..\packages\Microsoft.AspNet.Mvc.5.2.7\lib\net45\System.Web.Mvc.dll - True - - - ..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Deployment.dll - True - - - ..\packages\Microsoft.AspNet.WebPages.3.2.7\lib\net45\System.Web.WebPages.Razor.dll - True - - - - - - - - - - True - ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll - - - - - - - ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll - - - True - ..\packages\WebGrease.1.6.0\lib\WebGrease.dll - - - True - ..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll - + + + + + + - - - - - - - - - - - - - - - - - - - Global.asax - - - - 201812201613369_InitialMigration.cs - - - - 201812220029427_AddStatistics.cs - - - - 201812221606592_LinkDeviceStatsToReport.cs - - - - 201812231612080_FixUnsignedFields.cs - - - - 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs - - - - 201812240552109_StoreUsbIdsInDatabase.cs - - - - 201812241719441_FixUsbIdsAndIndexes.cs - - - - 201812250223002_AddCdOffsets.cs - - - - 201812251556377_StoreMmcGetConfigurationResponse.cs - - - - 201812252219066_StoreReadResultsInReportDatabase.cs - - - - 201901022133012_AddMultisessionLeadTest.cs - - - - 201901030344456_AddOptimalReadMultipleCount.cs - - - - 201901081359499_AddChangeableScsiModes.cs - - - - 201905252122267_IdForDensityCode.cs - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dicserver.scss - - - dicserver.css - - - - dicserver_highcharts.scss - - - dicserver_highcharts.css - - - - - - - - - - - - - - - - - - Web.config - - - Web.config - - - - - - - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + - + <_ContentIncludedByDefault Remove="wwwroot\js\site.js" /> - - - {f2b84194-26eb-4227-b1c5-6602517e85ae} - DiscImageChef.CommonTypes - - - {0beb3088-b634-4289-ae17-cdf2d25d00d5} - DiscImageChef.Decoders - - - {f4399ff5-9bd0-475a-9ea7-3dae45291fe2} - DiscImageChef.Dto - - - {f8bdf57b-1571-4cd0-84b3-b422088d359a} - DiscImageChef.Helpers - - - - - LICENSE.LGPL - - - 201812201613369_InitialMigration.cs - - - 201812220029427_AddStatistics.cs - - - 201812221606592_LinkDeviceStatsToReport.cs - - - 201812231612080_FixUnsignedFields.cs - - - 201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs - - - 201812240552109_StoreUsbIdsInDatabase.cs - - - 201812241719441_FixUsbIdsAndIndexes.cs - - - 201812250223002_AddCdOffsets.cs - - - 201812251556377_StoreMmcGetConfigurationResponse.cs - - - 201812252219066_StoreReadResultsInReportDatabase.cs - - - 201901022133012_AddMultisessionLeadTest.cs - - - 201901030344456_AddOptimalReadMultipleCount.cs - - - 201901081359499_AddChangeableScsiModes.cs - - - 201905252122267_IdForDensityCode.cs - - - - 10.0 - $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - - - - - - - - - - - - True - True - 22810 - / - http://localhost:22810/ - False - False - - - False - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - - - - - \ No newline at end of file + + diff --git a/DiscImageChef.Server/Global.asax b/DiscImageChef.Server/Global.asax deleted file mode 100644 index 189743a3..00000000 --- a/DiscImageChef.Server/Global.asax +++ /dev/null @@ -1 +0,0 @@ -<%@ Application Inherits="DiscImageChef.Server.Global" %> \ No newline at end of file diff --git a/DiscImageChef.Server/Global.asax.cs b/DiscImageChef.Server/Global.asax.cs deleted file mode 100644 index a13a6894..00000000 --- a/DiscImageChef.Server/Global.asax.cs +++ /dev/null @@ -1,47 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Global.asax.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// ASP.NET global definitions. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Web; -using System.Web.Http; -using System.Web.Routing; - -namespace DiscImageChef.Server -{ - public class Global : HttpApplication - { - protected void Application_Start() - { - GlobalConfiguration.Configure(WebApiConfig.Register); - RouteConfig.RegisterRoutes(RouteTable.Routes); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs b/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs deleted file mode 100644 index 129eb91c..00000000 --- a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class InitialMigration : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(InitialMigration)); - - string IMigrationMetadata.Id - { - get { return "201812201613369_InitialMigration"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs b/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs deleted file mode 100644 index ddf62c28..00000000 --- a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.cs +++ /dev/null @@ -1,584 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class InitialMigration : DbMigration - { - public override void Up() - { - CreateTable("dbo.Devices", - c => new - { - Id = c.Int(false, true), - AddedWhen = c.DateTime(false, 0), - CompactFlash = c.Boolean(false), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Type = c.Int(false), - ATA_Id = c.Int(), - ATAPI_Id = c.Int(), - FireWire_Id = c.Int(), - MultiMediaCard_Id = c.Int(), - PCMCIA_Id = c.Int(), - SCSI_Id = c.Int(), - SecureDigital_Id = c.Int(), - USB_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Atas", t => t.ATA_Id) - .ForeignKey("dbo.Atas", t => t.ATAPI_Id).ForeignKey("dbo.FireWires", t => t.FireWire_Id) - .ForeignKey("dbo.MmcSds", t => t.MultiMediaCard_Id) - .ForeignKey("dbo.Pcmcias", t => t.PCMCIA_Id).ForeignKey("dbo.Scsis", t => t.SCSI_Id) - .ForeignKey("dbo.MmcSds", t => t.SecureDigital_Id).ForeignKey("dbo.Usbs", t => t.USB_Id) - .Index(t => t.ATA_Id).Index(t => t.ATAPI_Id).Index(t => t.FireWire_Id) - .Index(t => t.MultiMediaCard_Id).Index(t => t.PCMCIA_Id).Index(t => t.SCSI_Id) - .Index(t => t.SecureDigital_Id).Index(t => t.USB_Id); - - CreateTable("dbo.Atas", - c => new {Id = c.Int(false, true), Identify = c.Binary(), ReadCapabilities_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.TestedMedias", t => t.ReadCapabilities_Id) - .Index(t => t.ReadCapabilities_Id); - - CreateTable("dbo.TestedMedias", - c => new - { - Id = c.Int(false, true), - IdentifyData = c.Binary(), - CanReadAACS = c.Boolean(), - CanReadADIP = c.Boolean(), - CanReadATIP = c.Boolean(), - CanReadBCA = c.Boolean(), - CanReadC2Pointers = c.Boolean(), - CanReadCMI = c.Boolean(), - CanReadCorrectedSubchannel = c.Boolean(), - CanReadCorrectedSubchannelWithC2 = c.Boolean(), - CanReadDCB = c.Boolean(), - CanReadDDS = c.Boolean(), - CanReadDMI = c.Boolean(), - CanReadDiscInformation = c.Boolean(), - CanReadFullTOC = c.Boolean(), - CanReadHDCMI = c.Boolean(), - CanReadLayerCapacity = c.Boolean(), - CanReadFirstTrackPreGap = c.Boolean(), - CanReadLeadIn = c.Boolean(), - CanReadLeadOut = c.Boolean(), - CanReadMediaID = c.Boolean(), - CanReadMediaSerial = c.Boolean(), - CanReadPAC = c.Boolean(), - CanReadPFI = c.Boolean(), - CanReadPMA = c.Boolean(), - CanReadPQSubchannel = c.Boolean(), - CanReadPQSubchannelWithC2 = c.Boolean(), - CanReadPRI = c.Boolean(), - CanReadRWSubchannel = c.Boolean(), - CanReadRWSubchannelWithC2 = c.Boolean(), - CanReadRecordablePFI = c.Boolean(), - CanReadSpareAreaInformation = c.Boolean(), - CanReadTOC = c.Boolean(), - Density = c.Byte(), - Manufacturer = c.String(unicode: false), - MediaIsRecognized = c.Boolean(false), - MediumType = c.Byte(), - MediumTypeName = c.String(unicode: false), - Model = c.String(unicode: false), - SupportsHLDTSTReadRawDVD = c.Boolean(), - SupportsNECReadCDDA = c.Boolean(), - SupportsPioneerReadCDDA = c.Boolean(), - SupportsPioneerReadCDDAMSF = c.Boolean(), - SupportsPlextorReadCDDA = c.Boolean(), - SupportsPlextorReadRawDVD = c.Boolean(), - SupportsRead10 = c.Boolean(), - SupportsRead12 = c.Boolean(), - SupportsRead16 = c.Boolean(), - SupportsRead6 = c.Boolean(), - SupportsReadCapacity16 = c.Boolean(), - SupportsReadCapacity = c.Boolean(), - SupportsReadCd = c.Boolean(), - SupportsReadCdMsf = c.Boolean(), - SupportsReadCdRaw = c.Boolean(), - SupportsReadCdMsfRaw = c.Boolean(), - SupportsReadLong16 = c.Boolean(), - SupportsReadLong = c.Boolean(), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - SolidStateDevice = c.Boolean(), - SupportsReadDmaLba = c.Boolean(), - SupportsReadDmaRetryLba = c.Boolean(), - SupportsReadLba = c.Boolean(), - SupportsReadRetryLba = c.Boolean(), - SupportsReadLongLba = c.Boolean(), - SupportsReadLongRetryLba = c.Boolean(), - SupportsSeekLba = c.Boolean(), - SupportsReadDmaLba48 = c.Boolean(), - SupportsReadLba48 = c.Boolean(), - SupportsReadDma = c.Boolean(), - SupportsReadDmaRetry = c.Boolean(), - SupportsReadRetry = c.Boolean(), - SupportsReadSectors = c.Boolean(), - SupportsReadLongRetry = c.Boolean(), - SupportsSeek = c.Boolean(), - CHS_Id = c.Int(), - CurrentCHS_Id = c.Int(), - Ata_Id = c.Int(), - Mmc_Id = c.Int(), - Scsi_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Chs", t => t.CHS_Id) - .ForeignKey("dbo.Chs", t => t.CurrentCHS_Id).ForeignKey("dbo.Atas", t => t.Ata_Id) - .ForeignKey("dbo.Mmcs", t => t.Mmc_Id).ForeignKey("dbo.Scsis", t => t.Scsi_Id) - .Index(t => t.CHS_Id).Index(t => t.CurrentCHS_Id).Index(t => t.Ata_Id) - .Index(t => t.Mmc_Id).Index(t => t.Scsi_Id); - - CreateTable("dbo.Chs", c => new {Id = c.Int(false, true)}).PrimaryKey(t => t.Id); - - CreateTable("dbo.FireWires", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Product = c.String(unicode: false), - RemovableMedia = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.MmcSds", - c => new - { - Id = c.Int(false, true), - CID = c.Binary(), - CSD = c.Binary(), - OCR = c.Binary(), - SCR = c.Binary(), - ExtendedCSD = c.Binary() - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Pcmcias", - c => new - { - Id = c.Int(false, true), - CIS = c.Binary(), - Compliance = c.String(unicode: false), - Manufacturer = c.String(unicode: false), - ProductName = c.String(unicode: false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Scsis", - c => new - { - Id = c.Int(false, true), - InquiryData = c.Binary(), - SupportsModeSense6 = c.Boolean(false), - SupportsModeSense10 = c.Boolean(false), - SupportsModeSubpages = c.Boolean(false), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - ModeSense_Id = c.Int(), - MultiMediaDevice_Id = c.Int(), - ReadCapabilities_Id = c.Int(), - SequentialDevice_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.ScsiModes", t => t.ModeSense_Id) - .ForeignKey("dbo.Mmcs", t => t.MultiMediaDevice_Id) - .ForeignKey("dbo.TestedMedias", t => t.ReadCapabilities_Id) - .ForeignKey("dbo.Sscs", t => t.SequentialDevice_Id).Index(t => t.ModeSense_Id) - .Index(t => t.MultiMediaDevice_Id).Index(t => t.ReadCapabilities_Id) - .Index(t => t.SequentialDevice_Id); - - CreateTable("dbo.ScsiPages", - c => new - { - Id = c.Int(false, true), - page = c.Byte(false), - subpage = c.Byte(), - value = c.Binary(), - Scsi_Id = c.Int(), - ScsiMode_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Scsis", t => t.Scsi_Id) - .ForeignKey("dbo.ScsiModes", t => t.ScsiMode_Id).Index(t => t.Scsi_Id) - .Index(t => t.ScsiMode_Id); - - CreateTable("dbo.ScsiModes", - c => new - { - Id = c.Int(false, true), - MediumType = c.Byte(), - WriteProtected = c.Boolean(false), - Speed = c.Byte(), - BufferedMode = c.Byte(), - BlankCheckEnabled = c.Boolean(false), - DPOandFUA = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.BlockDescriptors", - c => new {Id = c.Int(false, true), Density = c.Byte(false), ScsiMode_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.ScsiModes", t => t.ScsiMode_Id).Index(t => t.ScsiMode_Id); - - CreateTable("dbo.Mmcs", c => new {Id = c.Int(false, true), Features_Id = c.Int(), ModeSense2A_Id = c.Int()}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.MmcFeatures", t => t.Features_Id) - .ForeignKey("dbo.ModePage_2A", t => t.ModeSense2A_Id).Index(t => t.Features_Id) - .Index(t => t.ModeSense2A_Id); - - CreateTable("dbo.MmcFeatures", - c => new - { - Id = c.Int(false, true), - AACSVersion = c.Byte(), - AGIDs = c.Byte(), - BindingNonceBlocks = c.Byte(), - BufferUnderrunFreeInDVD = c.Boolean(false), - BufferUnderrunFreeInSAO = c.Boolean(false), - BufferUnderrunFreeInTAO = c.Boolean(false), - CanAudioScan = c.Boolean(false), - CanEject = c.Boolean(false), - CanEraseSector = c.Boolean(false), - CanExpandBDRESpareArea = c.Boolean(false), - CanFormat = c.Boolean(false), - CanFormatBDREWithoutSpare = c.Boolean(false), - CanFormatCert = c.Boolean(false), - CanFormatFRF = c.Boolean(false), - CanFormatQCert = c.Boolean(false), - CanFormatRRM = c.Boolean(false), - CanGenerateBindingNonce = c.Boolean(false), - CanLoad = c.Boolean(false), - CanMuteSeparateChannels = c.Boolean(false), - CanOverwriteSAOTrack = c.Boolean(false), - CanOverwriteTAOTrack = c.Boolean(false), - CanPlayCDAudio = c.Boolean(false), - CanPseudoOverwriteBDR = c.Boolean(false), - CanReadAllDualR = c.Boolean(false), - CanReadAllDualRW = c.Boolean(false), - CanReadBD = c.Boolean(false), - CanReadBDR = c.Boolean(false), - CanReadBDRE1 = c.Boolean(false), - CanReadBDRE2 = c.Boolean(false), - CanReadBDROM = c.Boolean(false), - CanReadBluBCA = c.Boolean(false), - CanReadCD = c.Boolean(false), - CanReadCDMRW = c.Boolean(false), - CanReadCPRM_MKB = c.Boolean(false), - CanReadDDCD = c.Boolean(false), - CanReadDVD = c.Boolean(false), - CanReadDVDPlusMRW = c.Boolean(false), - CanReadDVDPlusR = c.Boolean(false), - CanReadDVDPlusRDL = c.Boolean(false), - CanReadDVDPlusRW = c.Boolean(false), - CanReadDVDPlusRWDL = c.Boolean(false), - CanReadDriveAACSCertificate = c.Boolean(false), - CanReadHDDVD = c.Boolean(false), - CanReadHDDVDR = c.Boolean(false), - CanReadHDDVDRAM = c.Boolean(false), - CanReadLeadInCDText = c.Boolean(false), - CanReadOldBDR = c.Boolean(false), - CanReadOldBDRE = c.Boolean(false), - CanReadOldBDROM = c.Boolean(false), - CanReadSpareAreaInformation = c.Boolean(false), - CanReportDriveSerial = c.Boolean(false), - CanReportMediaSerial = c.Boolean(false), - CanTestWriteDDCDR = c.Boolean(false), - CanTestWriteDVD = c.Boolean(false), - CanTestWriteInSAO = c.Boolean(false), - CanTestWriteInTAO = c.Boolean(false), - CanUpgradeFirmware = c.Boolean(false), - CanWriteBD = c.Boolean(false), - CanWriteBDR = c.Boolean(false), - CanWriteBDRE1 = c.Boolean(false), - CanWriteBDRE2 = c.Boolean(false), - CanWriteBusEncryptedBlocks = c.Boolean(false), - CanWriteCDMRW = c.Boolean(false), - CanWriteCDRW = c.Boolean(false), - CanWriteCDRWCAV = c.Boolean(false), - CanWriteCDSAO = c.Boolean(false), - CanWriteCDTAO = c.Boolean(false), - CanWriteCSSManagedDVD = c.Boolean(false), - CanWriteDDCDR = c.Boolean(false), - CanWriteDDCDRW = c.Boolean(false), - CanWriteDVDPlusMRW = c.Boolean(false), - CanWriteDVDPlusR = c.Boolean(false), - CanWriteDVDPlusRDL = c.Boolean(false), - CanWriteDVDPlusRW = c.Boolean(false), - CanWriteDVDPlusRWDL = c.Boolean(false), - CanWriteDVDR = c.Boolean(false), - CanWriteDVDRDL = c.Boolean(false), - CanWriteDVDRW = c.Boolean(false), - CanWriteHDDVDR = c.Boolean(false), - CanWriteHDDVDRAM = c.Boolean(false), - CanWriteOldBDR = c.Boolean(false), - CanWriteOldBDRE = c.Boolean(false), - CanWritePackedSubchannelInTAO = c.Boolean(false), - CanWriteRWSubchannelInSAO = c.Boolean(false), - CanWriteRWSubchannelInTAO = c.Boolean(false), - CanWriteRaw = c.Boolean(false), - CanWriteRawMultiSession = c.Boolean(false), - CanWriteRawSubchannelInTAO = c.Boolean(false), - ChangerIsSideChangeCapable = c.Boolean(false), - ChangerSlots = c.Byte(false), - ChangerSupportsDiscPresent = c.Boolean(false), - CPRMVersion = c.Byte(), - CSSVersion = c.Byte(), - DBML = c.Boolean(false), - DVDMultiRead = c.Boolean(false), - EmbeddedChanger = c.Boolean(false), - ErrorRecoveryPage = c.Boolean(false), - FirmwareDate = c.DateTime(precision: 0), - LoadingMechanismType = c.Byte(), - Locked = c.Boolean(false), - MultiRead = c.Boolean(false), - PreventJumper = c.Boolean(false), - SupportsAACS = c.Boolean(false), - SupportsBusEncryption = c.Boolean(false), - SupportsC2 = c.Boolean(false), - SupportsCPRM = c.Boolean(false), - SupportsCSS = c.Boolean(false), - SupportsDAP = c.Boolean(false), - SupportsDeviceBusyEvent = c.Boolean(false), - SupportsHybridDiscs = c.Boolean(false), - SupportsModePage1Ch = c.Boolean(false), - SupportsOSSC = c.Boolean(false), - SupportsPWP = c.Boolean(false), - SupportsSWPP = c.Boolean(false), - SupportsSecurDisc = c.Boolean(false), - SupportsSeparateVolume = c.Boolean(false), - SupportsVCPS = c.Boolean(false), - SupportsWriteInhibitDCB = c.Boolean(false), - SupportsWriteProtectPAC = c.Boolean(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.ModePage_2A", - c => new - { - Id = c.Int(false, true), - PS = c.Boolean(false), - MultiSession = c.Boolean(false), - Mode2Form2 = c.Boolean(false), - Mode2Form1 = c.Boolean(false), - AudioPlay = c.Boolean(false), - ISRC = c.Boolean(false), - UPC = c.Boolean(false), - C2Pointer = c.Boolean(false), - DeinterlaveSubchannel = c.Boolean(false), - Subchannel = c.Boolean(false), - AccurateCDDA = c.Boolean(false), - CDDACommand = c.Boolean(false), - LoadingMechanism = c.Byte(false), - Eject = c.Boolean(false), - PreventJumper = c.Boolean(false), - LockState = c.Boolean(false), - Lock = c.Boolean(false), - SeparateChannelMute = c.Boolean(false), - SeparateChannelVolume = c.Boolean(false), - Method2 = c.Boolean(false), - ReadCDRW = c.Boolean(false), - ReadCDR = c.Boolean(false), - WriteCDRW = c.Boolean(false), - WriteCDR = c.Boolean(false), - DigitalPort2 = c.Boolean(false), - DigitalPort1 = c.Boolean(false), - Composite = c.Boolean(false), - SSS = c.Boolean(false), - SDP = c.Boolean(false), - Length = c.Byte(false), - LSBF = c.Boolean(false), - RCK = c.Boolean(false), - BCK = c.Boolean(false), - TestWrite = c.Boolean(false), - ReadBarcode = c.Boolean(false), - ReadDVDRAM = c.Boolean(false), - ReadDVDR = c.Boolean(false), - ReadDVDROM = c.Boolean(false), - WriteDVDRAM = c.Boolean(false), - WriteDVDR = c.Boolean(false), - LeadInPW = c.Boolean(false), - SCC = c.Boolean(false), - BUF = c.Boolean(false), - RotationControlSelected = c.Byte(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Sscs", c => new {Id = c.Int(false, true), BlockSizeGranularity = c.Byte()}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.SupportedDensities", - c => new - { - Id = c.Int(false, true), - PrimaryCode = c.Byte(false), - SecondaryCode = c.Byte(false), - Writable = c.Boolean(false), - Duplicate = c.Boolean(false), - DefaultDensity = c.Boolean(false), - Organization = c.String(unicode: false), - Name = c.String(unicode: false), - Description = c.String(unicode: false), - Ssc_Id = c.Int(), - TestedSequentialMedia_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id) - .ForeignKey("dbo.TestedSequentialMedias", t => t.TestedSequentialMedia_Id) - .Index(t => t.Ssc_Id).Index(t => t.TestedSequentialMedia_Id); - - CreateTable("dbo.SscSupportedMedias", - c => new - { - Id = c.Int(false, true), - MediumType = c.Byte(false), - Organization = c.String(unicode: false), - Name = c.String(unicode: false), - Description = c.String(unicode: false), - Ssc_Id = c.Int(), - TestedSequentialMedia_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id) - .ForeignKey("dbo.TestedSequentialMedias", t => t.TestedSequentialMedia_Id) - .Index(t => t.Ssc_Id).Index(t => t.TestedSequentialMedia_Id); - - CreateTable("dbo.DensityCodes", c => new {Code = c.Int(false, true), SscSupportedMedia_Id = c.Int()}) - .PrimaryKey(t => t.Code).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - CreateTable("dbo.TestedSequentialMedias", - c => new - { - Id = c.Int(false, true), - CanReadMediaSerial = c.Boolean(), - Density = c.Byte(), - Manufacturer = c.String(unicode: false), - MediaIsRecognized = c.Boolean(false), - MediumType = c.Byte(), - MediumTypeName = c.String(unicode: false), - Model = c.String(unicode: false), - ModeSense6Data = c.Binary(), - ModeSense10Data = c.Binary(), - Ssc_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Sscs", t => t.Ssc_Id).Index(t => t.Ssc_Id); - - CreateTable("dbo.Usbs", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Product = c.String(unicode: false), - RemovableMedia = c.Boolean(false), - Descriptors = c.Binary() - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.UploadedReports", - c => new - { - Id = c.Int(false, true), - UploadedWhen = c.DateTime(false, 0), - CompactFlash = c.Boolean(false), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Type = c.Int(false), - ATA_Id = c.Int(), - ATAPI_Id = c.Int(), - FireWire_Id = c.Int(), - MultiMediaCard_Id = c.Int(), - PCMCIA_Id = c.Int(), - SCSI_Id = c.Int(), - SecureDigital_Id = c.Int(), - USB_Id = c.Int() - }).PrimaryKey(t => t.Id).ForeignKey("dbo.Atas", t => t.ATA_Id) - .ForeignKey("dbo.Atas", t => t.ATAPI_Id).ForeignKey("dbo.FireWires", t => t.FireWire_Id) - .ForeignKey("dbo.MmcSds", t => t.MultiMediaCard_Id) - .ForeignKey("dbo.Pcmcias", t => t.PCMCIA_Id).ForeignKey("dbo.Scsis", t => t.SCSI_Id) - .ForeignKey("dbo.MmcSds", t => t.SecureDigital_Id).ForeignKey("dbo.Usbs", t => t.USB_Id) - .Index(t => t.ATA_Id).Index(t => t.ATAPI_Id).Index(t => t.FireWire_Id) - .Index(t => t.MultiMediaCard_Id).Index(t => t.PCMCIA_Id).Index(t => t.SCSI_Id) - .Index(t => t.SecureDigital_Id).Index(t => t.USB_Id); - } - - public override void Down() - { - DropForeignKey("dbo.UploadedReports", "USB_Id", "dbo.Usbs"); - DropForeignKey("dbo.UploadedReports", "SecureDigital_Id", "dbo.MmcSds"); - DropForeignKey("dbo.UploadedReports", "SCSI_Id", "dbo.Scsis"); - DropForeignKey("dbo.UploadedReports", "PCMCIA_Id", "dbo.Pcmcias"); - DropForeignKey("dbo.UploadedReports", "MultiMediaCard_Id", "dbo.MmcSds"); - DropForeignKey("dbo.UploadedReports", "FireWire_Id", "dbo.FireWires"); - DropForeignKey("dbo.UploadedReports", "ATAPI_Id", "dbo.Atas"); - DropForeignKey("dbo.UploadedReports", "ATA_Id", "dbo.Atas"); - DropForeignKey("dbo.Devices", "USB_Id", "dbo.Usbs"); - DropForeignKey("dbo.Devices", "SecureDigital_Id", "dbo.MmcSds"); - DropForeignKey("dbo.Devices", "SCSI_Id", "dbo.Scsis"); - DropForeignKey("dbo.Scsis", "SequentialDevice_Id", "dbo.Sscs"); - DropForeignKey("dbo.TestedSequentialMedias", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.SscSupportedMedias", "TestedSequentialMedia_Id", "dbo.TestedSequentialMedias"); - DropForeignKey("dbo.SupportedDensities", "TestedSequentialMedia_Id", "dbo.TestedSequentialMedias"); - DropForeignKey("dbo.SscSupportedMedias", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.DensityCodes", "SscSupportedMedia_Id", "dbo.SscSupportedMedias"); - DropForeignKey("dbo.SupportedDensities", "Ssc_Id", "dbo.Sscs"); - DropForeignKey("dbo.TestedMedias", "Scsi_Id", "dbo.Scsis"); - DropForeignKey("dbo.Scsis", "ReadCapabilities_Id", "dbo.TestedMedias"); - DropForeignKey("dbo.Scsis", "MultiMediaDevice_Id", "dbo.Mmcs"); - DropForeignKey("dbo.TestedMedias", "Mmc_Id", "dbo.Mmcs"); - DropForeignKey("dbo.Mmcs", "ModeSense2A_Id", "dbo.ModePage_2A"); - DropForeignKey("dbo.Mmcs", "Features_Id", "dbo.MmcFeatures"); - DropForeignKey("dbo.Scsis", "ModeSense_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.ScsiPages", "ScsiMode_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.BlockDescriptors", "ScsiMode_Id", "dbo.ScsiModes"); - DropForeignKey("dbo.ScsiPages", "Scsi_Id", "dbo.Scsis"); - DropForeignKey("dbo.Devices", "PCMCIA_Id", "dbo.Pcmcias"); - DropForeignKey("dbo.Devices", "MultiMediaCard_Id", "dbo.MmcSds"); - DropForeignKey("dbo.Devices", "FireWire_Id", "dbo.FireWires"); - DropForeignKey("dbo.Devices", "ATAPI_Id", "dbo.Atas"); - DropForeignKey("dbo.Devices", "ATA_Id", "dbo.Atas"); - DropForeignKey("dbo.TestedMedias", "Ata_Id", "dbo.Atas"); - DropForeignKey("dbo.Atas", "ReadCapabilities_Id", "dbo.TestedMedias"); - DropForeignKey("dbo.TestedMedias", "CurrentCHS_Id", "dbo.Chs"); - DropForeignKey("dbo.TestedMedias", "CHS_Id", "dbo.Chs"); - DropIndex("dbo.UploadedReports", new[] {"USB_Id"}); - DropIndex("dbo.UploadedReports", new[] {"SecureDigital_Id"}); - DropIndex("dbo.UploadedReports", new[] {"SCSI_Id"}); - DropIndex("dbo.UploadedReports", new[] {"PCMCIA_Id"}); - DropIndex("dbo.UploadedReports", new[] {"MultiMediaCard_Id"}); - DropIndex("dbo.UploadedReports", new[] {"FireWire_Id"}); - DropIndex("dbo.UploadedReports", new[] {"ATAPI_Id"}); - DropIndex("dbo.UploadedReports", new[] {"ATA_Id"}); - DropIndex("dbo.TestedSequentialMedias", new[] {"Ssc_Id"}); - DropIndex("dbo.DensityCodes", new[] {"SscSupportedMedia_Id"}); - DropIndex("dbo.SscSupportedMedias", new[] {"TestedSequentialMedia_Id"}); - DropIndex("dbo.SscSupportedMedias", new[] {"Ssc_Id"}); - DropIndex("dbo.SupportedDensities", new[] {"TestedSequentialMedia_Id"}); - DropIndex("dbo.SupportedDensities", new[] {"Ssc_Id"}); - DropIndex("dbo.Mmcs", new[] {"ModeSense2A_Id"}); - DropIndex("dbo.Mmcs", new[] {"Features_Id"}); - DropIndex("dbo.BlockDescriptors", new[] {"ScsiMode_Id"}); - DropIndex("dbo.ScsiPages", new[] {"ScsiMode_Id"}); - DropIndex("dbo.ScsiPages", new[] {"Scsi_Id"}); - DropIndex("dbo.Scsis", new[] {"SequentialDevice_Id"}); - DropIndex("dbo.Scsis", new[] {"ReadCapabilities_Id"}); - DropIndex("dbo.Scsis", new[] {"MultiMediaDevice_Id"}); - DropIndex("dbo.Scsis", new[] {"ModeSense_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Scsi_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Mmc_Id"}); - DropIndex("dbo.TestedMedias", new[] {"Ata_Id"}); - DropIndex("dbo.TestedMedias", new[] {"CurrentCHS_Id"}); - DropIndex("dbo.TestedMedias", new[] {"CHS_Id"}); - DropIndex("dbo.Atas", new[] {"ReadCapabilities_Id"}); - DropIndex("dbo.Devices", new[] {"USB_Id"}); - DropIndex("dbo.Devices", new[] {"SecureDigital_Id"}); - DropIndex("dbo.Devices", new[] {"SCSI_Id"}); - DropIndex("dbo.Devices", new[] {"PCMCIA_Id"}); - DropIndex("dbo.Devices", new[] {"MultiMediaCard_Id"}); - DropIndex("dbo.Devices", new[] {"FireWire_Id"}); - DropIndex("dbo.Devices", new[] {"ATAPI_Id"}); - DropIndex("dbo.Devices", new[] {"ATA_Id"}); - DropTable("dbo.UploadedReports"); - DropTable("dbo.Usbs"); - DropTable("dbo.TestedSequentialMedias"); - DropTable("dbo.DensityCodes"); - DropTable("dbo.SscSupportedMedias"); - DropTable("dbo.SupportedDensities"); - DropTable("dbo.Sscs"); - DropTable("dbo.ModePage_2A"); - DropTable("dbo.MmcFeatures"); - DropTable("dbo.Mmcs"); - DropTable("dbo.BlockDescriptors"); - DropTable("dbo.ScsiModes"); - DropTable("dbo.ScsiPages"); - DropTable("dbo.Scsis"); - DropTable("dbo.Pcmcias"); - DropTable("dbo.MmcSds"); - DropTable("dbo.FireWires"); - DropTable("dbo.Chs"); - DropTable("dbo.TestedMedias"); - DropTable("dbo.Atas"); - DropTable("dbo.Devices"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx b/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx deleted file mode 100644 index d6aece3f..00000000 --- a/DiscImageChef.Server/Migrations/201812201613369_InitialMigration.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs b/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs deleted file mode 100644 index 0005e624..00000000 --- a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddStatistics : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddStatistics)); - - string IMigrationMetadata.Id - { - get { return "201812220029427_AddStatistics"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs b/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs deleted file mode 100644 index 05a482fe..00000000 --- a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddStatistics : DbMigration - { - public override void Up() - { - CreateTable("dbo.Commands", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.DeviceStats", - c => new - { - Id = c.Int(false, true), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Revision = c.String(unicode: false), - Bus = c.String(unicode: false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Filesystems", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Filters", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.MediaFormats", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Media", - c => new - { - Id = c.Int(false, true), - Type = c.String(unicode: false), - Real = c.Boolean(false), - Count = c.Long(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.OperatingSystems", - c => new - { - Id = c.Int(false, true), - Name = c.String(unicode: false), - Version = c.String(unicode: false), - Count = c.Long(false) - }).PrimaryKey(t => t.Id); - - CreateTable("dbo.Partitions", - c => new {Id = c.Int(false, true), Name = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - - CreateTable("dbo.Versions", - c => new {Id = c.Int(false, true), Value = c.String(unicode: false), Count = c.Long(false)}) - .PrimaryKey(t => t.Id); - } - - public override void Down() - { - DropTable("dbo.Versions"); - DropTable("dbo.Partitions"); - DropTable("dbo.OperatingSystems"); - DropTable("dbo.Media"); - DropTable("dbo.MediaFormats"); - DropTable("dbo.Filters"); - DropTable("dbo.Filesystems"); - DropTable("dbo.DeviceStats"); - DropTable("dbo.Commands"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx b/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx deleted file mode 100644 index 94fe9d0f..00000000 --- a/DiscImageChef.Server/Migrations/201812220029427_AddStatistics.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs b/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs deleted file mode 100644 index 903de801..00000000 --- a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class LinkDeviceStatsToReport : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(LinkDeviceStatsToReport)); - - string IMigrationMetadata.Id - { - get { return "201812221606592_LinkDeviceStatsToReport"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs b/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs deleted file mode 100644 index 256d53bb..00000000 --- a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class LinkDeviceStatsToReport : DbMigration - { - public override void Up() - { - AddColumn("dbo.DeviceStats", "Report_Id", c => c.Int()); - CreateIndex("dbo.DeviceStats", "Report_Id"); - AddForeignKey("dbo.DeviceStats", "Report_Id", "dbo.Devices", "Id"); - } - - public override void Down() - { - DropForeignKey("dbo.DeviceStats", "Report_Id", "dbo.Devices"); - DropIndex("dbo.DeviceStats", new[] {"Report_Id"}); - DropColumn("dbo.DeviceStats", "Report_Id"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx b/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx deleted file mode 100644 index 18422e8e..00000000 --- a/DiscImageChef.Server/Migrations/201812221606592_LinkDeviceStatsToReport.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs deleted file mode 100644 index 7d34e147..00000000 --- a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class FixUnsignedFields : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FixUnsignedFields)); - - string IMigrationMetadata.Id - { - get { return "201812231612080_FixUnsignedFields"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs deleted file mode 100644 index 1133b9de..00000000 --- a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class FixUnsignedFields : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "BlocksSql", c => c.Long()); - AddColumn("dbo.TestedMedias", "BlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LongBlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LBASectorsSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "LBA48SectorsSql", c => c.Long()); - AddColumn("dbo.TestedMedias", "LogicalAlignmentSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "NominalRotationRateSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "PhysicalBlockSizeSql", c => c.Int()); - AddColumn("dbo.TestedMedias", "UnformattedBPTSql", c => c.Short()); - AddColumn("dbo.TestedMedias", "UnformattedBPSSql", c => c.Short()); - AddColumn("dbo.Chs", "CylindersSql", c => c.Short(false)); - AddColumn("dbo.Chs", "HeadsSql", c => c.Short(false)); - AddColumn("dbo.Chs", "SectorsSql", c => c.Short(false)); - AddColumn("dbo.FireWires", "VendorIDSql", c => c.Int(false)); - AddColumn("dbo.FireWires", "ProductIDSql", c => c.Int(false)); - AddColumn("dbo.Pcmcias", "ManufacturerCodeSql", c => c.Short()); - AddColumn("dbo.Pcmcias", "CardCodeSql", c => c.Short()); - AddColumn("dbo.BlockDescriptors", "BlocksSql", c => c.Long()); - AddColumn("dbo.BlockDescriptors", "BlockLengthSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql", c => c.Short()); - AddColumn("dbo.MmcFeatures", "LogicalBlockSizeSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql", c => c.Int()); - AddColumn("dbo.MmcFeatures", "VolumeLevelsSql", c => c.Short()); - AddColumn("dbo.Sscs", "MaxBlockLengthSql", c => c.Int()); - AddColumn("dbo.Sscs", "MinBlockLengthSql", c => c.Int()); - AddColumn("dbo.SupportedDensities", "BitsPerMmSql", c => c.Int(false)); - AddColumn("dbo.SupportedDensities", "WidthSql", c => c.Short(false)); - AddColumn("dbo.SupportedDensities", "TracksSql", c => c.Short(false)); - AddColumn("dbo.SupportedDensities", "CapacitySql", c => c.Int(false)); - AddColumn("dbo.SscSupportedMedias", "WidthSql", c => c.Short(false)); - AddColumn("dbo.SscSupportedMedias", "LengthSql", c => c.Short(false)); - AddColumn("dbo.Usbs", "VendorIDSql", c => c.Short(false)); - AddColumn("dbo.Usbs", "ProductIDSql", c => c.Short(false)); - } - - public override void Down() - { - DropColumn("dbo.Usbs", "ProductIDSql"); - DropColumn("dbo.Usbs", "VendorIDSql"); - DropColumn("dbo.SscSupportedMedias", "LengthSql"); - DropColumn("dbo.SscSupportedMedias", "WidthSql"); - DropColumn("dbo.SupportedDensities", "CapacitySql"); - DropColumn("dbo.SupportedDensities", "TracksSql"); - DropColumn("dbo.SupportedDensities", "WidthSql"); - DropColumn("dbo.SupportedDensities", "BitsPerMmSql"); - DropColumn("dbo.Sscs", "MinBlockLengthSql"); - DropColumn("dbo.Sscs", "MaxBlockLengthSql"); - DropColumn("dbo.MmcFeatures", "VolumeLevelsSql"); - DropColumn("dbo.MmcFeatures", "PhysicalInterfaceStandardNumberSql"); - DropColumn("dbo.MmcFeatures", "LogicalBlockSizeSql"); - DropColumn("dbo.MmcFeatures", "BlocksPerReadableUnitSql"); - DropColumn("dbo.BlockDescriptors", "BlockLengthSql"); - DropColumn("dbo.BlockDescriptors", "BlocksSql"); - DropColumn("dbo.Pcmcias", "CardCodeSql"); - DropColumn("dbo.Pcmcias", "ManufacturerCodeSql"); - DropColumn("dbo.FireWires", "ProductIDSql"); - DropColumn("dbo.FireWires", "VendorIDSql"); - DropColumn("dbo.Chs", "SectorsSql"); - DropColumn("dbo.Chs", "HeadsSql"); - DropColumn("dbo.Chs", "CylindersSql"); - DropColumn("dbo.TestedMedias", "UnformattedBPSSql"); - DropColumn("dbo.TestedMedias", "UnformattedBPTSql"); - DropColumn("dbo.TestedMedias", "PhysicalBlockSizeSql"); - DropColumn("dbo.TestedMedias", "NominalRotationRateSql"); - DropColumn("dbo.TestedMedias", "LogicalAlignmentSql"); - DropColumn("dbo.TestedMedias", "LBA48SectorsSql"); - DropColumn("dbo.TestedMedias", "LBASectorsSql"); - DropColumn("dbo.TestedMedias", "LongBlockSizeSql"); - DropColumn("dbo.TestedMedias", "BlockSizeSql"); - DropColumn("dbo.TestedMedias", "BlocksSql"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx b/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx deleted file mode 100644 index 30fac7b7..00000000 --- a/DiscImageChef.Server/Migrations/201812231612080_FixUnsignedFields.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs deleted file mode 100644 index 0232012c..00000000 --- a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class UseBinaryDataForIdentifyInquiryAndModesInReports : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(UseBinaryDataForIdentifyInquiryAndModesInReports)); - - string IMigrationMetadata.Id - { - get { return "201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs deleted file mode 100644 index 7477669a..00000000 --- a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class UseBinaryDataForIdentifyInquiryAndModesInReports : DbMigration - { - public override void Up() - { - DropForeignKey("Mmcs", "ModeSense2A_Id", "ModePage_2A"); - DropIndex("dbo.Mmcs", new[] {"ModeSense2A_Id"}); - AddColumn("dbo.Mmcs", "ModeSense2AData", c => c.Binary()); - DropColumn("dbo.Mmcs", "ModeSense2A_Id"); - DropTable("dbo.ModePage_2A"); - } - - public override void Down() - { - CreateTable("dbo.ModePage_2A", - c => new - { - Id = c.Int(false, true), - PS = c.Boolean(false), - MultiSession = c.Boolean(false), - Mode2Form2 = c.Boolean(false), - Mode2Form1 = c.Boolean(false), - AudioPlay = c.Boolean(false), - ISRC = c.Boolean(false), - UPC = c.Boolean(false), - C2Pointer = c.Boolean(false), - DeinterlaveSubchannel = c.Boolean(false), - Subchannel = c.Boolean(false), - AccurateCDDA = c.Boolean(false), - CDDACommand = c.Boolean(false), - LoadingMechanism = c.Byte(false), - Eject = c.Boolean(false), - PreventJumper = c.Boolean(false), - LockState = c.Boolean(false), - Lock = c.Boolean(false), - SeparateChannelMute = c.Boolean(false), - SeparateChannelVolume = c.Boolean(false), - Method2 = c.Boolean(false), - ReadCDRW = c.Boolean(false), - ReadCDR = c.Boolean(false), - WriteCDRW = c.Boolean(false), - WriteCDR = c.Boolean(false), - DigitalPort2 = c.Boolean(false), - DigitalPort1 = c.Boolean(false), - Composite = c.Boolean(false), - SSS = c.Boolean(false), - SDP = c.Boolean(false), - Length = c.Byte(false), - LSBF = c.Boolean(false), - RCK = c.Boolean(false), - BCK = c.Boolean(false), - TestWrite = c.Boolean(false), - ReadBarcode = c.Boolean(false), - ReadDVDRAM = c.Boolean(false), - ReadDVDR = c.Boolean(false), - ReadDVDROM = c.Boolean(false), - WriteDVDRAM = c.Boolean(false), - WriteDVDR = c.Boolean(false), - LeadInPW = c.Boolean(false), - SCC = c.Boolean(false), - BUF = c.Boolean(false), - RotationControlSelected = c.Byte(false) - }).PrimaryKey(t => t.Id); - - AddColumn("dbo.Mmcs", "ModeSense2A_Id", c => c.Int()); - DropColumn("dbo.Mmcs", "ModeSense2AData"); - CreateIndex("dbo.Mmcs", "ModeSense2A_Id"); - AddForeignKey("dbo.Mmcs", "ModeSense2A_Id", "dbo.ModePage_2A", "Id"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx b/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx deleted file mode 100644 index 9952f177..00000000 --- a/DiscImageChef.Server/Migrations/201812232250198_UseBinaryDataForIdentifyInquiryAndModesInReports.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs b/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs deleted file mode 100644 index d65fe029..00000000 --- a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreUsbIdsInDatabase : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreUsbIdsInDatabase)); - - string IMigrationMetadata.Id - { - get { return "201812240552109_StoreUsbIdsInDatabase"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs b/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs deleted file mode 100644 index 79303481..00000000 --- a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreUsbIdsInDatabase : DbMigration - { - public override void Up() - { - CreateTable("dbo.UsbProducts", - c => new - { - Id = c.Int(false, true), - ProductId = c.Int(false), - Product = c.String(unicode: false), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0), - VendorId = c.Int(false) - }).PrimaryKey(t => t.Id).ForeignKey("dbo.UsbVendors", t => t.VendorId, true) - .Index(t => t.VendorId); - - CreateTable("dbo.UsbVendors", - c => new - { - Id = c.Int(false, true), - Vendor = c.String(unicode: false), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0) - }).PrimaryKey(t => t.Id); - } - - public override void Down() - { - DropForeignKey("dbo.UsbProducts", "VendorId", "dbo.UsbVendors"); - DropIndex("dbo.UsbProducts", new[] {"VendorId"}); - DropTable("dbo.UsbVendors"); - DropTable("dbo.UsbProducts"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx b/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx deleted file mode 100644 index 8bf29e47..00000000 --- a/DiscImageChef.Server/Migrations/201812240552109_StoreUsbIdsInDatabase.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3PcOLLm+0bsf1Do8cSsZHl6Ono67HOiRErtOqOyOEXJ2jcFVYQkHrPIapLltmZjf9k+7E/av7AAeMOVxI1VJbeiw24XAXxIJBKJW2bi//2f//vhP76v06NvoCiTPPt4fHby7vgIZKs8TrKnj8fb6vF//HL8H//+3//bh4t4/f3oS5vvrygfLJmVH4+fq2rz6+lpuXoG66g8WSerIi/zx+pkla9Pozg/ff/u3d9Pz85OAYQ4hlhHRx+W26xK1gD/gD+9PFuBTbWN0kUeg7RsvsOUEKMefY7WoNxEK/Dx2E/K1XwdPQHvGTyehKCAxJ/UxY6PZmkSQZJCkD4eH0VZlldRBQn+9bYEYVXk2VO4gR+i9OZlA2C+xygtQdOQX/vsqm169x616bQv2EKttmWVrzUBz/7aMOmULW7E6uOOiZCNF5Dd1QtqNWblx2MvX8MK4uMjtq5fvbRA+QYZfdIU/8uRKNNfOjl5d4L/+8uRt02rbQE+ZmBbFVH6l6Ng+5Amq3+Al5v8K8g+Zts0JQmGJMM06gP8FBT5BhTVyxI8Ns2Ywxac0uVO2YJdMaJM3cJ5Vv31/fHRZ1h59JCCTh4IboRVXoDfQAaKqAJxEFUVKDKEATBHudqZutDfbW1QAOGgOj5aRN+vQPZUPX88hv88PrpMvoO4/dJQcJslcAzCQlWxBWOVeDkcTUSbfv5J0CYS4sNpLw+DUuKDb8kKmApJXfpNRka6bxbHIL57BllbpQ9hbhIkOIO9KBKENdSR1WUalc8t2HmepyDKtLEWUbZ9hGCwR4rJJRgLzOS1LKE8llidTlwRgu8qgVNRMxLqz2P98Dn6ljxhwWLl5GZ2fLQEKU4rn5MNBX6Pky+LfL3M027ooq/3Yb4t0Ci+ybmkm6h4ApUWDcF8hAqUQURHMB+gBCbq0nKZFOAO/hkip8/DUdQmyYjq0nXpWkA9lixAnEReVMRD1LE5ORrpDDJKmVy69AbewpsPilabg6OvTpDR1aTq0hN64aCI1ekcLeizjBKcpk0HWEHl5ydPSRWlgwTRGXnKyHQpiVQmXVpvw/MhCnEyRxf8KqMGJYloUF45zKpIfdmAVpN5htfkJwtQRXFURScQgV06EPn69cNPJ387+fvfT85+/vtf/7xriDrf40s36ydZVLyoTW2qMrYEUexFm+ghSZMqAaVQ4GCv3fMZe9ETpXNCKMykOySWYJ1/Q+zGmnGIWiYfSyyVLKGVzmM1cm5ACSUAI1mOIALpbSTpjiS4CI8cjCZ2hR5lSLBnMy/kFuhqJf15YFjyxrTkuTczK+i9D/Ikg/wvDcsv5oYF86IAK9j94fZh9QyFo99dWAPdJdWz994MzvfODQv6hvLim7IQ64vsMS/WzRGUCcglHKc3155Z4U++cf9fRS+gQLPHCo94I9KToqxuimj1NYDqJNoYEgL/zA2Zh8pebyuzwljrz32LwiEokshw2AQzwz4PLg17PFgY6qjgn7Y6gkSwUQ7B0rDtyzvbJpAINk1YglVexGhmNu7IcBMVYFaAyFr56CseH2QlqTBeqgM7JsODukRcfsqSf4GYa5/uIR8E3K7J4yqlNneldnK8vZvDwXC72eRFVX668m/CGyzM0R/+F10N2sJ8vvDw+sH3dfVSixBAwQegcIuyCC9NgVLwHa6sbcnpUazYiwDO3tkU1tVwVOGfLQrblG2XNFYEGK6LKAhe8+gUXpSPVuWh6NjWbwdxlWdPVn2AADSLIzUYwgkK/DzN1rTDP3s3TQVhniZxCHfpoL1WNGafv46uHiI7gCWoihc7FLvSLgiAYmSPYElICMBX696AAD/9YtcVVuUhCQ7EyVYaLMqHYAUnVt2DFqEoWMiBZtHzNF99LcPfu+VdY72gUCqE61+6IDoYHC6IWmhe+HzW8Nig5E+/CMuOt/Uqf0pWUTpLk6dsDbKKLo/moBEDlHwNFXi6bE5Hl1D76kIEzy8losGYc7fNTq4C8Xlwo1s9VTocLS29D/A+hcI7AOKU/B7n6c//mSTu7J9N172i8LZFAftUiTIiq4TALscwnX02q2sK77m0vJ6ACG/XEqrXEt5LmmQxYBUIGgCae/5PUNXbowjV2SiOsnT1dhtWItbCvMmZqpzt9DwL/oy3q2ryeuj7WdtDsy8gi/Ni7vPToCZQ03xtJOVRtFivQg0TX+EQwhhv40dZTxN3Lu5ujcMJQK+95QR7/ClAL75XcMiB2AEblIdOsFqvrA0wapC3waM+eMIJBk++3qRJlK12cFOxh8lzN1cwRMM8dE6ouYdDdqnj5ZQHZ7gqE8uhiSDeBqayUVT2+zYpJrKJas+P+gNu2xUahyi4KrKB3D5soMzwZ226t6+v7kRfepJx8SXwg5ongoMMNNjuiSz9AQadwh1cMMnalvgtA+RUEVkYqroUMVV9srl/QHsPIiWOy8nSyGSQkMrm0jelVbD8xVUNmf4KM4gp3onxb1OT1PpXlC4jd9z+d4jaEPy+RYo4Ssckgs/J0MtmEBPM5bI6CkSQaIA6mJIRzNu0rDotbzDTScMdzRmorGcyHeOfb1G6BTvbhiGZQJrWgWghmDfRUj4HNLIMuyuSCsBvFbaZtl5zbQABolD9+fbxERQgriVGo1waZV+hQKy+XmSIPmvK/eA6yuLLW95Mytj7E9+++aBcFcmmvuiVzBGo8fd8bnqeEGYSzhXinCYrseH1Ia6HyCagt0uVE9pnsZrRmPZaah8G7U0JqSohoT2u5lC0MDGoJ7Dh226ds3j7k/g30VGev9rt2fvZ1HvfSxAhFotVG+y0+z5Dr9TI75w6oxJ1VS3lPyihiMpDE0XaCojoItOtdCwE6xljOzBapLcBohx1ZOaFDUN0lkqz3+Z+qbW2SjIUS+ozivBU62L9Fd0tsnwottllAcA8E1mN604KAthwdj0F7I09rBdls22c5OEq4l1h9LEu/guseK8yA5wiKkFtB+IC7fsGLpnP/eVF5wHkAPUSm445A0LkIf+ofFthKp0Be/CjM7DLJe/kYYr1T6eULZcLB1it0iNViwPYqzyy3vhBmMW2gqMCSgek0Ktd6qxvCiDs9TdQ/IG211BPYbdUl5g37jCDNHrxfKyvXKCVYBvnHZ1w/DkAxd7waepvo9Q13J0jvHPrKa4DctVEpPvOHGLxDljGWNcutArGSreiYAdmYJ6rPvT8hTPB8oLl4n7xDz4MgRmc7ztrpYNlXY8UpNvSHdMaQFcjqYXzrxwDum7vnTsKi+QbQFsOtJxIHpNVVLmYsuswEe4kB2O56uYabOZKN9WhJDz/Bnx3sSBDkNepw/mhBrtwiuZMsStFFTCBRkYhWLgl4TJMMYdCcOhjokMbfDeD9LWLDu8BnYy9Ds7JNpwGdLMBv908FVEMLpNi/Yebjd9dvaB1h+SiX1soJyu9DszFUq8G25YX2ap42SBnMPowyRLZ1RqrAXOL5c2+uINzM8AaMDeDqwYLw0WURU/A0UrQqb7rwZx1rNNVKonorr0u16kUovMmu1mptpAuOeiWe+4452ypS6A5WetiPGcrUwLNxdK0NnCJVl/JiICu1hgYnAzF5Wo1JAB2SbEglIo5FDZWDUFZulmht7Cu2w6xnkAxL8MkBvUPbK+a2q8Ma+QwzSvmpswQqDFcR/eiQQFKkNnvHoPlwuDqEE7wBqX884W1AoW6CYsV2gnaYl2sHwB6sKFhrzVcUaBwWKv8GyheAtIW0xCw3aH4xAlL/6DEcFl0A5JkTwuAhkpSapv/XeVIMdq2wFlXQXH/BsX9P7frjX1HteNIGLrXEKvfzjhQdi2oIHajKVJgf13XYYXOuObP+DjGplDY+h12w8vFNweKsYsh+PJQJDiCrvX+lPQ7QurhzLN+2aWFvA5DPkCmIVZw56xPwrvAHRZ6VAH1gzvA+mL3S55u19a6ukX94gXORkdz6vWcPCSVKNy0DWxQW3aLovsaWWUGdWBKVO42S7RjGzWxkYzjErWBjeYoRPljtAJhFWVxVMSft3CSL3Thapm4gnNOKoiLYmQjF5a2RqMQ4c0mTtUmrpOk34oItjEqtIMBf1c2HBaUTjKd0nJvsnrIgrg2n5b665Wre1FWwvBemIM3vhdn03aCayHw1QcWz3G6ybwSwvssw5QT+Vyb3KJ6JCa3TJKQRGcmt0wvvdjqFgbuTdGoKpqgSNZR8eJxfkq6szPcOKIZyx4Jze8uji/87SZ1crvvg8cISgfrAmKIdl08wR3tv6h738miZaC/J6+k9SfaRYPOkwqt1RZr65BXd0nMTm0GweewraJ9DLs2EPZU4beg7qZnF/u1HI33pnBt3Vnf1MgO1YibwS9aHqvASFdvzRSDplDpipMed/d0EWo1N5BTtLgbym611iOQLNUOgXQ4Cqdul67KIZdJrpWO5gN/fQgOd0/9MZiH01uHPj1Yv3v19nLQn/floB8ojJfi0ZFQ24wcJqmWkQQvVyg41YHTCAHiIyjlQrrtHTmmUp6FbssHyzkHIrzNMG9xtRHDnMTVpsLVuFai4qDdBtuPQBy0213o+/pOGr2TpD4+4ZrlGyhO8HxXnvQI7Pis8/VD890J/u9tWO5mEbaT5cgS9n65k1PBbem+joGIjmj+E07Qvbzft7n6iZhL5CZcPofVxHqZpKB8gXP42nT89ghv4/cQzsi8fNvbBjXho9zoetjTFdAIL8bJSQW4cGJvMvJjyQheW7VxTMwEhYB4k5Y/gbRYycmbhIzdPhKHXhOu4hw4/k4mZdcbxDvY8tBqocPAvEneIegmxkfjFerAICrgF9wGM7nsAN4k8hAkcjpJud2keRSDuN02mokLjfImMyPd2bLr7hl0Wqb3UNKe49abaFVdplFp7RjxdhhkXhG1KOoPZerPxqYZs5uZ8MSHHnH3OFt/5MOncmc+giy610ewTDBXpA5lHKIvmCtQCDPp0tg/ozpOZp9XSmmbZYzYLp/50zjoxTAVqtkSUtrpjGMtYHLrtiPwFt5cSXTbnFK66wxj9Da5tK9AvVBJhOt8UhpR8hiFOI/+wzgrqIz95Cmp0HZIgVC6gJxiMt8o6VRm3TbchucqlONsUnph6hiVKIvtjXB3cWi4EOoQ3hZBiteIo1Uexk3vLHa1YIOikjwmjsCaW11dJkrHao0nHq7lQ5163/CcMvfgU7ux2A1XPks7ok2Ha0uu8WitAd4Gq5KY/WkGmXxZ00m+iwHCzWfyMWQ0QLqDLLPh0RR/Gxxjg4N8EO41nAHVBqiUtU29TZ2Xl2n0VHZwJtZxCL4kNr8TWcgd4Ucm0hfIbLKfaRYuAHJjb6eL7GuW/wFHA+6vj8fvOI5T2fGWusl6NpoV7W+bzLyjMpW53kk0ef86kpdezDeF+LebqEKLhddl/dtw1s9fFqDLK3DRrwWF/Dgry3yVYGGgjPlrG03vU8j0wEUWH5FWnV2+Xvn1JyaUhzDegCJXSijCH4//jWuIHLlbd/TI3nPJIr47OTljW0y0TqPR26KAikK57V32qVjQV7ADTsyqiH/zVkamKLOIC7NKq/VCWEHbB5jrgAf0M7rDtEqe1B3kAE/iKLAeD/7NmAHNG7pIZcrI67OImtu+5ave5wSeoJVK7DNqIFT04ySRp5luGkkcfU7fzO4gdIQu/jTUQWO5o1MCtD+hdd9o5hx1hErZYaoDBkhOXgnoxXoVxlPwoDmLHSGQPZB10Gbm9JaADFbrlWN1jR8Av/gS+PVDqzLS6Gyi5qIcmlqaARU0uH9L3JV2lr+JO0TlyAO5NMH1e8PanBh+Wpeog3uO1jlv+od3RwkWvMLrjhv8+72Ty8Z95183PBa6bKpjYWjgM4iSxqpxUqO91GukMtrET5NS+lenqcLHTGm4/h1Qx20ll3tD9AkjMA22eESgZS+lTr0UreWqm0KbGWlYCpnc7sSbBRZ3vvvJTXlDJsztrP373JM1BKhtykSZXU74+9qXSSLcSWkdCXdHMKLU1QcjMfJIbC5Gm0N2DIUxGSBdKaYJxR427pEus1TColArbyLYySTiQ3h5K/WxyMHbmQAJfMB12G/OEmXH/+GTOp0oAKyO4OKmaLFRO5jATkameoQBw3YNS+MOGLs3iWVDbw6Nr5FVoNmgVVoFjvDecj3Yo6usB9ncztZDHLBYEqY42cG3TiOHMLQRm4NTHcriTXsZZdBI6rpsjDixAZyLZgut5XZxfodM6EaIo+zoHDSWNLoj8HBwFecNJD3ch+kSuruzza1DTOg2WeQnP8pJq8YLjL1lJA5ZfhO9w3h9qLNgwGx8wnsJoT25Ooni6xiXTNjN9YzMXl2RzqHrGmfM2Pn1zbA5vCLV49c5zhi0j+sdscm9IsHy6x5nPNnp9Y/Isl+RTtkKyRkjdrZiGvQaUCV2bAXlji27X1EJnBMUiZWssJwxY0crLoE1q5TAAdNWisDWjJgm84wGhtDXmQ9SUIGj2QpRhMKTlqtIFO8WEqFBlZhtnQvBWJcswSMo6g2cl2dlVURJVrG0B0WSrZJNlI4yhyl5pGb7ilrd1cGm+GAD64IkjvJApfLeuYAnoauJ6ZAxHkklsDZWhWUqWKKzUPSTVW1vjBLAd5Fjzm0JGrPUsrGkZSUCAYeg6h1mYfG4PD7q7WNb47g6STAWaYh6jS9CaFf/IwBwZSgqjReMI0WJ4xQRBHWPMAKFbQF5JqCvIyXblZyofL/KGwHBSluE0GjzkeL10kBUvl00jACgSVVUvJ5sFQrX9gJigPqaXgFkUYdQF4IsRDG+WRDOqoPH4swnxntG0i8qRfvLbBFCnzrGnFJIBD4gGysqCMTLA3Gn2eME0Ye0EvLYk9xRZUKG0hdoFOJmR0k3MGepci3BHbqOwMPZRASGVx5KGhMdnci1Zn0cM6p52tCAYt3Thx4cB6qAcLS0MenGJL2PKSYUdTJqmQqUFGS0OBNFSATExSsaU65tABihfu3Dy4zA1EtWodAwy+Fx0eudqkQS2C3ixoHqZY0Ep12ijsA0jisikM7rioEg1j3C2Rx7TxwRufgZnXewEFxB8S4WHfHs6oFb1o07VRBYooXCKd1KXQ70rhRjjJA4XcjbwLtdWLOFd7Rwzh2he4WAN+NuGFQzBh0xiEbU69QBfgy6Xigy2JgttHGPlCsDNkCCtoiNgPR5Irb4mY4lhA+GgBMyDw3RlQ55aUDQ2216Bpou8MoY4ZxVS5HX3VBb2VsCCa3E/YBxe4kbgMla3O+spI0W3wmIaOZuA8yazp33EzDELtEVC9hoN1JGDN0DiNohuQEwY4rkjJ8Aa/e+rvjSRtGR8kN05i8inTntN2s/c55PgHSbduuGM14cgpYP+XlQVEs8PQiym6OCgZZLHDsYjIZWJ40Xu3RI+KDg/8E1Z9gDhGlZc4wxwqFhhw8Ckm+XO571rh5DzJI4hIibxLuEmLOH9wCZUIgI3w/ZCJJ4h/DSz/uH6I8g3iNEhZEGjaccQQRNlzuKUEQLXUVoPT/caqFzCA0gPTEzazV1QixuuNRekCNdZDGo23yRgeB062Sxg4hU+Ac9SQTyK/MlMRgKMu+REf6a8kRlm6ngXcI3RGWjqciTPWw1hY4kctaobjYHXU5MGLPr/abEt0TEGQUvFLpFw34oJHfKEf0y4nZCQgna4oJJgw/nCpml7KPCtlTFS4VmHnefMcxKFacUasdAttWtxJGPDo6InMx7QC4oAm8BY6ETGP5r9YHxkarK65SyQ1ZdBxfBGamGiwunpPgbrNEjWQ2PlqkHvcZzmdr8V5JlfV+YSXtgDyOAdXqRqAi1da7MM0ZXJSitc8cYb7qC4VxgZEuYYV8ZfuUh9ZbRX8RI/WNGOG1+bFYHY5MemvG2oaLTLsoq1OzAjLL7HGOcRXPpeHLydsvNQYXUCw1BDTkhNPWc8OQUh52WcoKz+xTRTFp8mrWatOkkEGqDC0ctpZ6HlDVY6mEjoFrkY8M1vzH5GGWByKtmnJcGzBC9nMBzY8zlhmrBgNMN0YTOFmKAFwPuNe5vlcSvNKjwYvBebdD/xpofk96zSR+EGGWKwr3bmDeOHWt2dQ838vrEKKOU7+XUPHTsmLbDezrJqxej/Bq9txv21rHjzy7u8YQPbYyyZWRlNuS3Y8eSqVdqw895jPNFceWm5MpjyamdreRED4mMcmp4ZTfg02PHlWlXeqIQ9AJOjLj20PTLnXto+juzyiFmyH1yaLCefGWetPHOOxeSLu3Dabh6Buuo+fDhFGZZgU21hZtsHOq+TVhEm02SPZV9yebLUbiJVpB+73+Ex0ff12lWfjx+rqrNr6enJYYuT9bJqsjL/LE6WeXr0yjOT9+/e/f307Oz03WNcbqi2Mw6vHQ1VXkRPQEmFbmtxABO5GXlR1X0EKELWy9ec9k4hxmafR2X2+oYnxi+61rr1rYA+nfrmyN/O6D1pGHweo5ewkau4WYftxeQdpOykrBsuIrSqBCE+vfydLvO5C5T8tLob7p8/UUdoQnMT0I0n3iMD6dM81l+n3IMZ8Sf7UCl7m13T656V3wypNC5soLT9C3xnAgJQnzW6WXymUW6s8kUdUT6sUUSkU7RQKxfVKSg6k/qGP17iSRM/1UdCYkSjVJ/OZhRgTeNroYEct3THw/CUtMMhvo1k8cXFqP9ejDdQt1Tu+qegZN+hW4aLD1td6HZXtxldYqGBosyZD4xm3kho8DIBH08fx6I8XCCPt6NDO/GCO/cmwnh8HdtNO99kCdZ7TgmACWT9bEXczEo+q6PlhcFWKEbpe3D6jnKMnZqGMrnora7pHr23qvW2ebWrtn3zoV14O/6aL54cODv+miSHvWNehTrt+wRuxRyM7Qsj3Ytl9s0vbn2hOhdmjbqJ18m3U2KNuJV9AI3ORFceiXVixCZyaHPCbTbuimi1degAL9FGzFLuEz6LYF/5uLubJOMMK+37LaESdNGxTPg3BeidmlmqHC6TiKxhqLStdGDmViW8Xd9tEuxFOPv+mgL8dyEv+uj/XNE1dMZrPAHlLsom35dSwmflyZ8Xt6NcIbOYIU/wBlRNv26wCovYmTqKZNFJod2DeEmKsCsANHYZCPOqF2fbLbRnGm6MA4klCS2wxDOBPtyrBpL1C9PWfIvwGwMBMl62PUzfTxo+90EjT8XY9N2ey7R2IiVn678m/AGi3n0h/+FmYvkufRr+nzh4bWq78/ElVAZ9PEDOFoAKIbr4DJZ17MIL5WqwvkMakvBd7h7HmkVm8mqniFBEGTTrwuVPnsnrqBNM0R9P4CqNTtQJX8eQP3ZFHUA1BizXZ0PUUzmsatlvA7jGuIBbC19TpdclI9DwDjZFBuOhyFsnGxB9wh8m8Oshqs8exqSmTbdHH0YW3f2wy6NP/NneWyaAerZuwHYNlGDD3maxMgYD7R2whQfuFQzDvvr6OohkvO4TTdGX4KqeBmros9kKCdD+Ba448RbUw5leJj6NoM5/ngr6Fz6NYUAfJVW0CXaSOhPv4zJKMphLD1D8FbYkLZBwm1H1viwspL9EcE3xQ7Bqo4lIEPvMlhKvYLIm8q7XNh1EHF4hTL8ndmVEZ81sUK4bxXDdSnqiIhJclQ+VQP5fNb0MQ9LJ2lh/vTLACqdqMOFpwR+n6XJU4ZuJQWMEGTQsHzJ10kWpcsmju4STupcFbI86rUEzy8lolLen+Ic6jXcNodPFYjPgxsOXpBsiB0OY4cS7D1do6P4c86suXgsFUsuUalpbsu9lzTJYiAYgHSKOuInqKx5tP6rhvaWqIZhrbAnqeldBVzJjswzQkGA5EWnkSL3J79dVFJK4YlDlQ7h0OEdWNssOk0dtYnv7nOiSSVot1YASKccjLQ3FuiuRL2OW64v55JyE6lK7v5W89I2ZMuHWuWvvSVdHn/QUKds+VCv/MX3Cj1cEHPtoBIORkRbRxtXMtrExtcXUlnBqaSUtcOZ6xng5OtNmkQZe4BFfj+AiQH9EGrKOsGMQuQpwGlgYQadq9oiFuJSCQczampvLFdjBj8IoT9ixMWmGS/z7PdtUoisRckE/SOH/oBafPBAplugy27XqAyG+NuHTR0wUVpBl+O1H+rvcbTJQmWajzj8gorZqBMXnWbkbfBDL2T5jeDplyGEspY/GqT7qI7zLUq3DErz6aAkZSEJZGYuKfiZHDNJERedaHvp1FTnrkgqAL9V2JCaRmTTNDTnBrBgzSeNA+HtI3oDLK5fL6IOhKkUnSPmKPsKO3/19SJDO12GQkGyhtlYcB1l8eUtY6pCfD6Y0aMQv9lsELHvQ+mPpVGEaYaUK5s/5/chVyB7qp7FgETawYgWDiTr8BzE7BRkZ5q4XUq9nw2ss9rEQ+qkgZDUxn0lw1TrM3npafoOual1TyyRMFSCBt5vc5/ZHDSfNIZ8ksWQTZ9RWIFaZzDDXpCuO5/eoluMYptdFgDMM87gUZrJrp5wdj1eD85kV8+NSj03evV4UTbbxkkOE3n7dSJFC/HivwB7nt9/1UMqohLUl0A8Hpmmh/p9A9ct5/7yorPO59FFebRqad+1Y4DFz90pYSFqkE9Evq0wURJsPptBXR4oZLTXSQaYl8tLCSROMUD85wCZ/zSmc7lcSDBxihbibyBDrwoCUr1x4OJMWvVc5VHM4dYftXAW2woOKig2kByvdsPh3XjFmbTquYbz6x9oCwYVI3YN5CoR5DCr4Wa0hhuzGoI0evF8rCU5bCpND7UE2zjvaIOjmQcXZNF2KZqlqb+NUh6dTjTGvRsEvjNAPhd7VZ6bOFSK2Np9N0G7OJPhXZwZIoo95JoUE8RrXq8RKfqI6VYaOaBJ0sb0xH3smfSx5y8kUtik6CMGy8X94h9ib/o+URvX9yXtrhP08dilL/ndBC1It6WMmWSyKbZ4MPaJxrj+1SAySjbGHmSHFTfuRsi+M6O7SL4BtAVEK6PkMVnB6VtcjTCjdn2ffJkcNilmiGJZaZMMMWdi1dgnauPWcQk8/wZFmBNh0xm08a9T6STWJhliXgyAXhijSiafPlEbd7dO2OguFA8MaRgGLodBDcOBHrgcWjWgEE342gPNKrzksMmG2IIhTyea4QrOWQTJptjc2YogWQv7dvNURDga5foP0VadS9dCv6uX/Rxq990EjZeIO7PdRVtMsCQmk8ww+UUxmWSAuS0vslXxskEG6oJzyaF8+rWJl6RkkgmmHNIc0Zt9kYPiRBNc0Rgmk0wwRWOXTDLADMNFlEVPQLiQFmXRr0Osg431b19QIgttmgGqfPnPpRujy1hhtgOgygrW0ly6OfowU+x4ItoG8BmM8OX8NuX1EJ/NeTzAXzPeSrYQVJopqmATwaTqI0uW+VSaKSq/0KcT9XGDaPWVDFkoXlkNZdWvkwwZJV4lyrLZ1iVtmyCbQV1sdAgqwQgPP+YRgpK/GZZmMqpHjUmCfBq1wXJPoJiXYRKD+gd+9TZl19oD+bRrC9O8YteHVIo+YmNki+wPggKUgIuTPpBPo7ZguRBaBFAJOh4uYgMD8ruGidL5gpk76i8aCF98LLZot88gUSkaPjDrB4CCoDf8Z/xg2EQN3KJAsZZW+TdQvAScTasgWR273U363MEenaKOiG4Qk+xpAdAwTUqBZaY4h04NaBpgMetvGtZK4s436nk4vL7B4fWf2/WG7XcmSd/ano8sTafoI/b7Um4wSrLo18HGaiS/G6AF7P06nWKAGEqYihP08fxZIMbDCQZ4OBAQ7IaXi2+cgpdm0q/n08tDkeD4xhJXDiqDPj6yh0M66cx7FuNTGfTxr8PQEwPXKfqIwZ2kJ3GCPl54F0gA6xQDRPQEFOoRCWyfbIJd22h8QcBsmCpJHv1avniBZPjVKfqIzanrc/KQVFzscmkmw3qC2geAi4EszaRrMh3UASPRkvM2S/gYJfJcOrPo03AEEWEGjTmxCUAyR4H7HyP8FmkWR0X8eQuXQoU0YMlQfvXaa9m8gnNvyhugc4kHY4uM32FmqzJ24ilNDMaFpWRstjM67kTrtyLKtjCdczoQ59BY5EXfhxwHBMka2Ek2iM0nH46YtU/D104diUvPMRr6xUQCRyGmEcegSNZR8eJxDlZUgsacAfdkSIMJEJkkdUw0tfAnFv1Xjf3vdpMK7DmIzxpY4DGC+yaJ3xCdpo56XTzB/eG/BJf0dIo6IvqbRqq/6LS0dsbiSKISNFRgUqF5fLHm53gqRUNCkligjfqv6kjYwJWfPYnPOid9dShgQaQDIuFwFGS56rSQ4zezOGizOXoMYxoV6dbZ9s8wwN0NR8k64xDXF42y95z6pBOgRm9kDpSWai1u4pbN13t91S8Ev2/R63VROsn7fgy88Ut/ozjT6Cxv0veQ3t5HsZ8HDvd9lLeANISywa+pu1ItEMxAkQhLTbTU+ZOFrSQjYAgXPpohvP/0YTDr2xn0rIPrJ8IRpvEz4eLCr2UMHdZj3OdbNiTBVjhG9hZ2OAXlC1x6rV0GHm4xjUIPywtPI4H2G0Iv33IGNvWnQ+pn/Diywz6GeGb9Kyz41rfGfYvn8TqUgMPwND2oSXiaodJvXW3X1Y472bR7d9Wx/BZSd/MI9+4pO5Nr+rkdvmhcb1C0D/g7dDydM8AG4jKKcKgaQWiNamLYevjiE0QF/A7b5TDieQtpEvRcXvZQheUVdHLt6+vwhGaT5lEM4hrX5LBmBGCavm5rvXsGzNimU3T6fr2BW9XLNCqfWREgU972xfqz+v6OMptTI6cnmu1hntHBprTwNOOkPTVjQIjPuz/ZnMXCgUt81hoRyWMigqNTtE80Y3bF0H49JOmuqXIq3DWkmWzLyk4j2k1tgm56fcK4JxFq1sHuBKhdWOuLj7TkRMLDx/v/Iov3/xpWi7OyzFcJtqSRmA/gDf+99yk81jILIIqJ7/uFBwlQgGJ2tUDD3d9ExRMQTaJKvY0QRD2O+NTVrE9UmG+LlcjwxFgEBwny8izGW6Sjefl5m6Yfjx+jtGSNUYRN/XAq7HJDqdgWBZRJU+EgSjuUkQ7VVlR6INcS0yMfpOAMNdxafmZVdI+jGyKn6SSt7csVpUdclpUdmEtBZkRYlhLDwTmQGyGZhyg1Co13JDukDYOm6DBF7bSOANKyZxCiM5mhCbOT7GlERtxcaympLRnuZzczVeEgS4jtIhTEoQexZDZCcCAFBD2HqC/ErXTY+cFcv/tRGQcCEMztRQBiOBUCiHegYiBsqStB6N6z1pOFvpitOLRIlhLRwbgTig7yEOVioL2uRAMH88DTI3pQVVNA2MK2YkLjWQoLA+ZOZBjgQxSc0ba7Ep/AW3hz3SVGW8hWXGocSzFpQNyJRwN4iGIhbau1OKAnLe8vvgR+/RyrxhuaZCnVJ1UFzKehLLmPwRxIBEPUIW4/JE11IhCol++5tyM131cVAGi+ASnpGCG4A8HBuI6ER0zjocqRpOXuZKmNhKQvRERJSyVDwx2ivPTE/RkF5b7zDtOahYhSIgFRnYE6GNvFa4fjahrqEQ9xZTLUXmuxWKxX991roerPkxJlFJ6MFfCdxLDd+bYwDsSBIusQhWGgsU5kgTzh1hAHqpjdqTkDZ9kLCM2RXJBEHeLsIW6qo4mj2zQ3G1Gt+YMrbDWNMGjOjkIaOGeTCgt8iOpEofVuBMj0RldS2EaAXsGlrpjOQxSgXdzqNtwwutYVl7WboUSYh3Sq8hqudic7WylX94L4hOrRtYSldWMMinpGCG0rNqWT1Y2EtoOUG2GLXYgNHRLtngpCZRqcjUHRiCol7qUBdHtJYsDdyNUQxXrypRpNy4mMjfLCraLCtSAZM9NUZHHtYH9j+qAHP0BlRRD3J9JWwoBoFtOeOp6DiVC1MktpE1fjzFBXgf5DFEhVrkwtovoKTwPQhQpUru6ViumBK86dySnS0AZnnlwxo5iVktnN3emnwyn30E8/p9oYoH1q340Gp598YZvDKxbNsi84OFdnEBzwIR5eKbTelTFY6IW65sZ1EVtDMIRiKyQIwp0RGIY7SHEQt9OZCKCXlYCfPCUVijCkJwt0WWuhIOGsVQiJ5VBMKNyDlJeRlrsSnNvwXFNccAlbIYEglqKBENwJBEI7RDEQt9JR56N4q/dNCBztKK9dQfVYrlL2E3jWF2YYxJlgkJQdonxI22stInSIJB2HNlFJvQBMgu7gQQ/D0U1A1yHKyUQOb3zr1R3fxGUnEJTDcYgT0nag4jKNYxzDAV0HOWlx12JzgI5zMgoPUX6mdKBj+GDmSDcC4lqcDtzBbpjaQxSw6R3tGJ7oOdxJCrsWqwNzxBNTd4jiM51DHsMDnaM5YVHXInNAR3Yiyg5RWKY6umPbb3KEN4zhXHgO+WhvkNaDlKupj/gYjmgc9YlKuhamgzkCFNB1iOJiehTYRmGElVRRkoGCzdKFeWy+dL/L9gPqeigotXD05cLVM1hHmAnlJlqB2moOrv3LCr0P9xCVoM5yfARb/i2JQQFXbug93ROUfoL/6aUJQOEn2xyLKEseQVnd5F9B9vH4byd/Oz6apUlUogGTPh4ffV+nWfnraltW+TrKsrzCTf94/FxVm19PT0tcY3myTlZFXuaP1ckqX59GcX76/t3ZX0/Pzk5BvD5lizewSijv/t6ilGWckkJChCDtDAvXsJaYlqQP/wCcCLSisQSPRzIp+nDKFvwgkERU+8fjJGuPZn8DGXoGAcRBVFWgyFAugOk8PkLChoy5O4E7HYRHf7cVpHn2VIHvFQlSFXwwUhajiTZagzxA5ZdVI3SQYUYHmS26hHi1vCaC+da1xBC3SlAHBAVY4cDnH4/faePSgeGbbsjzVBuIjgdvJxRNQHg7kD4cvB1OHRCe6FrdnmvOWgkEVt38Os9i8P3j8f/CRX49mv/P+7rUX46uC6gEfz16d/S/denuD+20a8blbOqmDnz0qieK2lAgOBHQo4MDsKGG2GDqUdEVtKm927Ho1d0Us6qZW9NqksCUt6GlXTDpUVCXUq9XeXbiIsO+2qmpLvj4QirahzR/0FfYAv8+vd4SQEzQdVIXvlffhfU7znbd2LxSPpt5oWxBoQPjzwMXMDdOYM69mQMU732Qw24EbRQmO7DF3AVKXsBVJDIj3j6snuEY69dfblHvkurZe+8A2/fOXaD4LoTUd9IH+AQme8TPVRLrVgvES1jo5tpzgPTJdyNnV9ELKJCGXmE1Zd9CdLpwU0Srr3AX9Fu0cUEi/DN3wX0EdL2tHCDhqWbuu0IKQZFELsZ3MHMhW8GlC8kKFi5Uc/BPpwqQhHOm+YKlC34t75y2lIRz1tIlWOVFjIq5kZFwExVgVoDIrZq1VLGtP2MDsa2S7IU5aFDa8bo8gMEKp0T8f8qSf4FY1j61oyGItl2T5yjGbeyQXJw9Ojlmatzcyk9X/k14g6U2+sP/YqWsW8zPFx5eRvm+lW5r4QIo7gAUE0IuwksnqCnsiNwtoT2ku/5BaGfvnCFZqUwK6WdXSM6A2jWfO9JcrCIpPKmS00dalI/uwKC8OqXMId4VVJruehSh2WB10St/dnGO0aGdvXMBF+ZpEiP/AUA6dtozzV9HVw+RQ7QlqIoXh5AOoZyTBvvSMZxLEkMAvrrtW4j20y8OO9YdmL92LsNOpc4VWAhWffh1hyLnSt5scHCE9DL8vd9Pcvf5yjAh3HUQSAYwiDWuoM5nTb9Z4/z0C49kxqar/ClZReksTZ4y9BorAViuozQ1gPycr5MsSpfNBcsSTlYOUIPnlxJR6qgzbpu9ewXi8+DGAX0UYOgAsH2tUu/uqi5lc8PJPJapWT1Z2MruoHlJT9PqAJeyuvFvYhJrXvPjUlZ33G14Sc2r7brYBNeT3nP5g1xLei9w+EHulCODUgnsE5wunQDxClwRSrkHO0e2H6MbXZ5Mwp/xdlXZwtBxa61ON7+ALM6LuS+f1ZRgmoZp4iiLFNRz4Y9id+r1V2HGRgqhNcS1t7Q+E7CHuPheQfkDsXaDlCUnWK1XP4yhizcPrUUnX2/SJMr6Ixzj+wf3etHJtQhBFrLgd7EijorYCEpZSvnAZq9WRufZ79ukcGKL1e7s+5NRq6mOg5NffujjbR82/ZtipjeNh3wCTD+upLlNIcq6MYsmwtBpksJD2FC0b6tP0fpeEKpPc3PHQ0yw0RM/mfdq9R4a/kMGAkogZa1GbA0NvkXpFlhr3x2dDIhr7l7306+9KTqRyC64Nwherci6s2y5K5IKwG8Vtpe1m1U3oEcwped8+/gIChDjzrLFSqPsq/cMVl8vMlTKrnl+cB1l8eWt1CzEZps8+IbtqxVTBQszJRyXFzxXAO5Onu2uAg5WzXEPU75a0ekWnu9nLtbA1JuSej1GFJ2mx7p3Rn+MnkMOOF9AQbrAmirw2W9zv7SeBZIsTrKnz3m2ArUicTNH3aIbgmKbXRYAzLMByz41FSfADGfXzjFvLDG9KJtt4yQPV5HUhFkV6OK/QH+ibgxSoPgO+GrEGur7Bs7w5/7yojPYtoW8xDe8blAQYcjEPd9WmD43qB4oHNF3uZQa4eoB/dMdTcvlwhaoVY2kHrHFvMoju8UoxFhsKyj3UBAgbV7tAGF3iAUxr7+B4g+0I4CqB3s3OQO8cQQYpNGL52MVZA1Vgm2cdxTC4WWLiD0+09TfRqlTrDsXYOd2E1SH4qRlSJeduQKS2q9rAl1b6woMlG4H3HV1kDwnPeb5CzcC5AXLxf3iH1L3Vx0s33fTONtlVw8TpNvSEaMaNCcDpcXyr1yiOW3mnSPaiuQbQJsHNPsnj8kKzmsucD/5joQEAznp1Bpp5kTd1G7Dnn+Db1zt8a5TVzq+RrpwB+VGP+s4Y6rjovtELMHDTs56gApe06qAKHYIPutFmte6e3s0+6HVYdlveGk0B1vd281TEeFYgus/HOy47up1piMY615scexXYh2S9VKsRtqWF9mqeNkg02jqyMYK1slKqEFyCOTNvjjCcjB+GiQHY6dGCsNFlEVPwMVKzZ3+6pHcdKO79SMJ56iZzlaQFJzbljpYQ7Z4zrjmkGOOuOVmBUpA2S9BMZibNSMBZb1orK+1o9VXMgaUkyUBRiajjjhZtghQndEqd7vWxcEmWCEoSwdL5hbTaZMh0BMo5mWYxKD+ge2zUsuVWw0bpnk1eHekBdaYIKLgW0EBSpBZ7t6C5cLRrRucsx0h+ecLOxUKdRSWObRvswK6WD8AFMm44b4dVlGggB6r/BsoXgLC6MsIrd1b+MRxx3iMZTVHzQhdWCwAGl9J6cRc6CpHKtXOVtZJh0LGfINj5j+3641ld7YjcShwpBZQv3uxVZMtojyolR5MYHkb1gGFbjjlz6TBMfVwsLEr5PvLxTdbRdrFVXp5KBIcG9Fu80namiNlcebZxTtv8a7DUBr9SwsouHPTCeFd4AgIBV9GjHeEVl+RfkFvWNip6hbyixe4kf/moOo5eUiqgbii+phBbdA5ECdRw+4uqONsoXK3WeLC378JIeDIMb/185+j0LaPEX4tN4ujIv68hbN+YQdei80VnGzSMc9bG/Pk8kex2+v69LciyrZpVDiJMPjdmenmIskMsdQ7sx6JIG7NX3+Mng2KZB0VL96IYbaasoKrZzRE3aAhlWe9yfO3m9T+ztEHjxFc3zKGz0ZQ18UTXLb/i7qfMnWtRH/bYrTW6Q7IOU8qNKss1pa+63dJTI1h49AK2DTJSZCGNjqgZcvghGBiXF7aBhWpnxjo3cjwDaQBJTKcKVx7ylWncX+ktxHUfHz+7KrEmQrgFgTmcVrexq76U2l4nvQMPfPq1YPuuCXXHJOMXE4jmYkDhzHZkzJMX/8gCtTt0wNv0dK16DqwaOkHHaBhNxOGsk64LR9+EA3wYwcA692FS1sJFMQSM17+BIKAYq4D1dUH/iiq9ZukTqMwXb1ier4t7UnBD2KbxGdpCk6gJC+TFJQvcPG0/kEk0MVUPeGjypDfsIFvvN4Fr/HU1HiuvjF8Vwz/QVhNbiDMNb6tw8N0fXW9QZxKsqfwTfuzi8jCxYphwr4LogJ+QTS+9doO2H27SfMoBnG9DvtBeN426u4ZdKI+bq+nqLXWG7gHuEyj0s5G6IfdTZCTi8nedHYzM3kjAJeyepvgZhbMzWrG5WzqboO6m4Q+6ou6Cf6J4vFahf5sAGyoCbyFNzcRg66gVYRELzQRhKaYXXjRFdQHPtTwVZQaxRaly9vQchueG1BQl5rmxLM93vsxJqn2DC62UZaOTjxn8TSzJZyYksdkEujmOFRbQNtyMhG1WkyVDzX8DyKiTWN+dOFS7t929/SD9C4bx3i/W5NZWearBA9b6uK7vln3PoUM2y+y+GiZo0rQo0YNBSFIH0/wb7weQeaCsCooAicnZ1xTegSiJgqJ+k4j/hsHBzsbFPUVvZdnZVVEkBm8ZCTZKtlEKUE7k0dRfhAnOzQ2xQcb9PRHVgkaqFJd+04YX2WHzAjzWOs/nBIdrNHv3dNjb92/w+6nX4vbixSgV9/Y6P1SGTDowRGZmFU0Ev49iQzodo6lLKCGqFQjfHxhj5JA3snLBUGh2w5WGaj2zI6VQfto4176vnkjY3Yzm7DL6Ve3MUj76TV3dNMGpT5uDt323MfB/K2Xp+3l5ohzn/0secGy76guA9lV/ceD7nRx4/be89QB8z47nz4mlopA/SQl2WvNl4PufMFDmnvvecHB/j77vz6gl/Z786Ak2WPtp4PuedFDmHvveuIWZS9djh+ruvgS+AF+vE/WV/h5RrKn6g9a/d09d8bi1B8n6XP+Wclpelz8lJukru5dsb31OH45h3krabjzyXekuo6rP2oJAftAEwnJpU0mEvwTZtOIxeBzVAPS0T2KtF8JaWOt7EY09qUfdiUM2jpi/1LQv1u6MwkYnWVeac+rLQSpJ2b30u1wfXwveUmLWvp3eZgNQP9dq+vRi2sM0nQbAHH7pul77ik5STXUy2p763npuaNeVx3s8a1qb+z4+Baxfs+KnnkVesLe36WW31F/qyt40fvd++v1Pd7d7VIKdnx7pywNh3N910iD2v2di8OA/U0BuzoS0BW6PZ8KlKt7JuDakD4IS3oWwL/1xj8b3Y2C4xKnEQU2XOA0kjAcyE4mDuU+lwRc1BQiwsygVDAhpBgZYVM1z4v7IDf0oTHxfSo5GQqNNY3USGP6yAVGEC1n/8oE04K6a1JtYid5r0yfGInjXhWKOBaWxoQjDrDErxy4HK9uUlIIJTWRWJlMU/JgaYcoZwq6aEeCdhD6an+iZqTBDkzWkEJVOS+zn90cyeTrmuXMhXO/S2e0jeupHjlNc7Dy2eWdyY7WN6o7dJbNe7ecQe6lkx6b7NpmZleHJRoWM53n7147mnTifbOQm77TOafrffb+bXgu7XMU9ZHsKvz7oPubi1O5995u3dr32McoJuK9MOCKQUcpdTiOwshj1Z8n6XiNHnHS93ycSUltRKTCvYgAHXBnYscWJroPpTuYpNfsAjEUxEhS414dXngZmNTx5U0KBqRgnw4xjBzs1DFm30KxS0cZA8nYv8MMIxw7dZzZt3DsbJtgIBmH4lDDyMeOHGv2LRm7c7QxEI19O9wwIjH5idG+hWFXJ0gGorDfkyRWEHZ4orRvmTjkqeNATpoY6Zj2xGnf8rCjEygDadjrSVQXqu6+CSEov7Xuo9oxktB+pfvtjG38h+vMBymowNFsVeGAbF5UriLRs2Cw0gEqmGCHLRnd56nkRxTTbyIpkgS5lNTWx0DcgQxd4KhtsEwFS4Cii/8WA7hXKiv0yNJDJHDmQqVCUHX51+sogxRfdEHgmp7sUsLVM1hHH4/jhxx2dR1HrkksBYqGxm8PSTn4NkGEXqeNg+OjFw4ZfxXBwoRxTMoomcOmUkV1EBnG68KR0XjGo69Cpj+PQ/anDxxunyQCb1PHq2hWIRx+810EjpPGkdsdEAfdJoiw67Rx8Ho9zUHXn0XAKEUNtnZaFULXSTL42uFWpYraw1JYRZ0kq2KBrXjHquDcsbmauByiCjk3cwVZEkuSVI6UMHvHRBF2nyqpo88w1jOliHz8VdgfpQL5vOkhXwGXRVgbb3Gp0B7WGE3UOjaPpK10NpW5gjDuFkwYRKp41iDM1tXUPGdEJVH4XD656meyjlOCl/BcvfirqBaYoDrr1teJkpm3TpTPvihdZbrpnvQSTTh9onjKadOVKkJvWQkrwQmSCmCagsYgHm8SaAwyVagx+gyKdclqGcAfBWYf2eGr4HKIKmMyKUza3QMxgnm7TxNO3W2ywihh9qb8gGEyCMcOlUdpaHabGdEI7RIlA7XbyilU1G7eRPW0aZJq6uTxWrrHhrg6uhRRDU0ij09sTITrZxwk+ojIxS+i+TjS1CaTWCDDGoQrYCq/YPGOy1Hf2U0u3QzdJvbxkMdaKomc/AoaLAz9K2jueIhgW+Kp8sT2D5fDvx01lvaOlbZ1wIlWl9Q99CsRzFXQQlmoV6uG0ecBuEj7yWFzgvlwg1jzjkNvUr91l7ZKdn8vNFcgSO0/7reJzH26vKFDF++i+xOC5ubLfhvaXAzLGyi6ORbeHRNEtp/21DQmsqCgbUOxBwX3oASR9YeBhrEnMF2p+qOTxomD6EnaqRBxj2sAeb7TNaD+ONB0ybENBuDS3DGijxU3xAFJRDlHTd9FrxMh0WQiLQma5rCRo4PBoHFU4C9B0+SBwVgNy560tXpWdoTGlmfLOWoctU4St28gZoceiXtYuInDOElldDDek1VzpxJQccQiWQN3uOeYuMGj247x4D2Ws+mOBFgcgkbUYIVgNXSTS1qE8e+hHpWct9eFuUQXTR+KtyJmgXKEFpYV4uP8ljFs6uDykTucb9aQxHe3ckF48I8JhszZ304y7NhnfLKkEDpDetakG3ZDMPYllyKEFuByHNDwUo8Koc9DJSmbhIk7l0Q24IFkAKotonQHniMWmk7DnEe/bB4edv230z0TrTNI53X5EQRvqWy5qtjBuQptVDvQNrnx7Ws4PkLWofLGcbajFHnEVTOmDf/ea3NI11tpq6T+uWbECkqRN+VEyfqzdVMFLqaCto45olqdUYuvT2shYJImaK74OH7c6/K1NnnouF7Jx9DRsf0eWTB+nK/hT2etl/fICPlxv4LDmINj/z02XbbIGHWLslxs7LPJY4sQdU+g1yz0kkXKmKOL1WJlp83lvTVEzR3x6WCbS5sAtY1uvw41nbNTagt3n5Wb3D4H3zkWdGkfTmvroOYD/FnlRfQE0C1GWuKvH06XW1h6XT8k/8EHZfLUQ3yAmBlYUY4MXZ559pi3HhUMRW0W5qn7BaiiOKqiWVElj9GqgskrUJZJ9nR89CVKtzDLxfoBxPPselttthVsMlg/pNQhA/LLGKr/wylH84frDTZZc9EESGYCmwCus/NtksYd3ZdRWjJTuwwCHbz9BjJstAf7soL/B08vHdLnPFMEatjX+ancgPUmhWDldRZG34AJbbcluAJP0eoFfv+WxMhMUwYy3hE02z/4SfRUROuywejLw59QhuP193///9YoAF8yBAMA - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs b/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs deleted file mode 100644 index 57d3375c..00000000 --- a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class FixUsbIdsAndIndexes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(FixUsbIdsAndIndexes)); - - string IMigrationMetadata.Id - { - get { return "201812241719441_FixUsbIdsAndIndexes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs b/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs deleted file mode 100644 index b90c1908..00000000 --- a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class FixUsbIdsAndIndexes : DbMigration - { - public override void Up() - { - AddColumn("dbo.UsbVendors", "VendorId", c => c.Int(false)); - CreateIndex("dbo.UsbProducts", "ProductId"); - CreateIndex("dbo.UsbProducts", "ModifiedWhen"); - CreateIndex("dbo.UsbVendors", "VendorId", true); - CreateIndex("dbo.UsbVendors", "ModifiedWhen"); - } - - public override void Down() - { - DropIndex("dbo.UsbVendors", new[] {"ModifiedWhen"}); - DropIndex("dbo.UsbVendors", new[] {"VendorId"}); - DropIndex("dbo.UsbProducts", new[] {"ModifiedWhen"}); - DropIndex("dbo.UsbProducts", new[] {"ProductId"}); - DropColumn("dbo.UsbVendors", "VendorId"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx b/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx deleted file mode 100644 index 18616cd2..00000000 --- a/DiscImageChef.Server/Migrations/201812241719441_FixUsbIdsAndIndexes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs b/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs deleted file mode 100644 index 5505506e..00000000 --- a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddCdOffsets : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddCdOffsets)); - - string IMigrationMetadata.Id - { - get { return "201812250223002_AddCdOffsets"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs b/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs deleted file mode 100644 index 3a0a7e13..00000000 --- a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddCdOffsets : DbMigration - { - public override void Up() - { - CreateTable("dbo.CompactDiscOffsets", - c => new - { - Id = c.Int(false, true), - AddedWhen = c.DateTime(false, 0), - ModifiedWhen = c.DateTime(false, 0), - Manufacturer = c.String(unicode: false), - Model = c.String(unicode: false), - Offset = c.Short(false), - Submissions = c.Int(false), - Agreement = c.Single(false) - }).PrimaryKey(t => t.Id).Index(t => t.ModifiedWhen); - - AddColumn("dbo.Devices", "ModifiedWhen", c => c.DateTime(precision: 0)); - AddColumn("dbo.Devices", "CdOffset_Id", c => c.Int()); - CreateIndex("dbo.Devices", "ModifiedWhen"); - CreateIndex("dbo.Devices", "CdOffset_Id"); - AddForeignKey("dbo.Devices", "CdOffset_Id", "dbo.CompactDiscOffsets", "Id"); - } - - public override void Down() - { - DropForeignKey("dbo.Devices", "CdOffset_Id", "dbo.CompactDiscOffsets"); - DropIndex("dbo.Devices", new[] {"CdOffset_Id"}); - DropIndex("dbo.Devices", new[] {"ModifiedWhen"}); - DropIndex("dbo.CompactDiscOffsets", new[] {"ModifiedWhen"}); - DropColumn("dbo.Devices", "CdOffset_Id"); - DropColumn("dbo.Devices", "ModifiedWhen"); - DropTable("dbo.CompactDiscOffsets"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx b/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx deleted file mode 100644 index 84ac80a6..00000000 --- a/DiscImageChef.Server/Migrations/201812250223002_AddCdOffsets.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs b/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs deleted file mode 100644 index 26501faf..00000000 --- a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreMmcGetConfigurationResponse : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreMmcGetConfigurationResponse)); - - string IMigrationMetadata.Id - { - get { return "201812251556377_StoreMmcGetConfigurationResponse"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs b/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs deleted file mode 100644 index 682c8c7f..00000000 --- a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreMmcGetConfigurationResponse : DbMigration - { - public override void Up() - { - AddColumn("dbo.MmcFeatures", "BinaryData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.MmcFeatures", "BinaryData"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx b/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx deleted file mode 100644 index 18531502..00000000 --- a/DiscImageChef.Server/Migrations/201812251556377_StoreMmcGetConfigurationResponse.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs deleted file mode 100644 index c732f1da..00000000 --- a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class StoreReadResultsInReportDatabase : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(StoreReadResultsInReportDatabase)); - - string IMigrationMetadata.Id - { - get { return "201812252219066_StoreReadResultsInReportDatabase"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs deleted file mode 100644 index 90e4c360..00000000 --- a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class StoreReadResultsInReportDatabase : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "Read6Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read10Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read12Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Read16Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLong10Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLong16Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadSectorsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadSectorsRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLba48Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadDmaLba48Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongRetryData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadLongRetryLbaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "TocData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "FullTocData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "AtipData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PmaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdMsfData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdFullData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "ReadCdMsfFullData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "Track1PregapData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "LeadInData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "LeadOutData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "C2PointersData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PQSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "RWSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CorrectedSubchannelData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PQSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "RWSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PfiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "CmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdBcaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdAacsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdDdsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdSaiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PriData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "EmbossedPfiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "AdipData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DcbData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "HdCmiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "DvdLayerData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluBcaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluDdsData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluSaiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluDiData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "BluPacData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PlextorReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PioneerReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PioneerReadCddaMsfData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "NecReadCddaData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "PlextorReadRawDVDData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "HLDTSTReadRawDVDData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.TestedMedias", "HLDTSTReadRawDVDData"); - DropColumn("dbo.TestedMedias", "PlextorReadRawDVDData"); - DropColumn("dbo.TestedMedias", "NecReadCddaData"); - DropColumn("dbo.TestedMedias", "PioneerReadCddaMsfData"); - DropColumn("dbo.TestedMedias", "PioneerReadCddaData"); - DropColumn("dbo.TestedMedias", "PlextorReadCddaData"); - DropColumn("dbo.TestedMedias", "BluPacData"); - DropColumn("dbo.TestedMedias", "BluDiData"); - DropColumn("dbo.TestedMedias", "BluSaiData"); - DropColumn("dbo.TestedMedias", "BluDdsData"); - DropColumn("dbo.TestedMedias", "BluBcaData"); - DropColumn("dbo.TestedMedias", "DvdLayerData"); - DropColumn("dbo.TestedMedias", "HdCmiData"); - DropColumn("dbo.TestedMedias", "DcbData"); - DropColumn("dbo.TestedMedias", "AdipData"); - DropColumn("dbo.TestedMedias", "EmbossedPfiData"); - DropColumn("dbo.TestedMedias", "PriData"); - DropColumn("dbo.TestedMedias", "DvdSaiData"); - DropColumn("dbo.TestedMedias", "DvdDdsData"); - DropColumn("dbo.TestedMedias", "DvdAacsData"); - DropColumn("dbo.TestedMedias", "DvdBcaData"); - DropColumn("dbo.TestedMedias", "CmiData"); - DropColumn("dbo.TestedMedias", "DmiData"); - DropColumn("dbo.TestedMedias", "PfiData"); - DropColumn("dbo.TestedMedias", "CorrectedSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "RWSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "PQSubchannelWithC2Data"); - DropColumn("dbo.TestedMedias", "CorrectedSubchannelData"); - DropColumn("dbo.TestedMedias", "RWSubchannelData"); - DropColumn("dbo.TestedMedias", "PQSubchannelData"); - DropColumn("dbo.TestedMedias", "C2PointersData"); - DropColumn("dbo.TestedMedias", "LeadOutData"); - DropColumn("dbo.TestedMedias", "LeadInData"); - DropColumn("dbo.TestedMedias", "Track1PregapData"); - DropColumn("dbo.TestedMedias", "ReadCdMsfFullData"); - DropColumn("dbo.TestedMedias", "ReadCdFullData"); - DropColumn("dbo.TestedMedias", "ReadCdMsfData"); - DropColumn("dbo.TestedMedias", "ReadCdData"); - DropColumn("dbo.TestedMedias", "PmaData"); - DropColumn("dbo.TestedMedias", "AtipData"); - DropColumn("dbo.TestedMedias", "FullTocData"); - DropColumn("dbo.TestedMedias", "TocData"); - DropColumn("dbo.TestedMedias", "ReadLongRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadLongLbaData"); - DropColumn("dbo.TestedMedias", "ReadLongRetryData"); - DropColumn("dbo.TestedMedias", "ReadLongData"); - DropColumn("dbo.TestedMedias", "ReadDmaLba48Data"); - DropColumn("dbo.TestedMedias", "ReadLba48Data"); - DropColumn("dbo.TestedMedias", "ReadDmaRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadDmaLbaData"); - DropColumn("dbo.TestedMedias", "ReadRetryLbaData"); - DropColumn("dbo.TestedMedias", "ReadLbaData"); - DropColumn("dbo.TestedMedias", "ReadDmaRetryData"); - DropColumn("dbo.TestedMedias", "ReadDmaData"); - DropColumn("dbo.TestedMedias", "ReadSectorsRetryData"); - DropColumn("dbo.TestedMedias", "ReadSectorsData"); - DropColumn("dbo.TestedMedias", "ReadLong16Data"); - DropColumn("dbo.TestedMedias", "ReadLong10Data"); - DropColumn("dbo.TestedMedias", "Read16Data"); - DropColumn("dbo.TestedMedias", "Read12Data"); - DropColumn("dbo.TestedMedias", "Read10Data"); - DropColumn("dbo.TestedMedias", "Read6Data"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx b/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx deleted file mode 100644 index 7e119a0e..00000000 --- a/DiscImageChef.Server/Migrations/201812252219066_StoreReadResultsInReportDatabase.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs b/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs deleted file mode 100644 index c9a83ba8..00000000 --- a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddMultisessionLeadTest : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddMultisessionLeadTest)); - - string IMigrationMetadata.Id - { - get { return "201901022133012_AddMultisessionLeadTest"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs b/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs deleted file mode 100644 index 7052bdf3..00000000 --- a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddMultisessionLeadTest : DbMigration - { - public override void Up() - { - AddColumn("dbo.TestedMedias", "CanReadingIntersessionLeadIn", c => c.Boolean()); - AddColumn("dbo.TestedMedias", "CanReadingIntersessionLeadOut", c => c.Boolean()); - AddColumn("dbo.TestedMedias", "IntersessionLeadInData", c => c.Binary()); - AddColumn("dbo.TestedMedias", "IntersessionLeadOutData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.TestedMedias", "IntersessionLeadOutData"); - DropColumn("dbo.TestedMedias", "IntersessionLeadInData"); - DropColumn("dbo.TestedMedias", "CanReadingIntersessionLeadOut"); - DropColumn("dbo.TestedMedias", "CanReadingIntersessionLeadIn"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx b/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx deleted file mode 100644 index cffbecc1..00000000 --- a/DiscImageChef.Server/Migrations/201901022133012_AddMultisessionLeadTest.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs b/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs deleted file mode 100644 index 24c06798..00000000 --- a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddOptimalReadMultipleCount : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddOptimalReadMultipleCount)); - - string IMigrationMetadata.Id - { - get { return "201901030344456_AddOptimalReadMultipleCount"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs b/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs deleted file mode 100644 index 006d3676..00000000 --- a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddOptimalReadMultipleCount : DbMigration - { - public override void Up() - { - AddColumn("dbo.Devices", "OptimalMultipleSectorsRead", c => c.Int(false, defaultValue: 0)); - } - - public override void Down() - { - DropColumn("dbo.Devices", "OptimalMultipleSectorsRead"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx b/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx deleted file mode 100644 index c9bff226..00000000 --- a/DiscImageChef.Server/Migrations/201901030344456_AddOptimalReadMultipleCount.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - H4sIAAAAAAAEAO19W3PcOLLm+0bsf1Do8cQcy/L0dMx02OdEiSW1NaOyOKJk7ZuCIlElHrPIapKltmbj/LJ92J+0f2EB8AYSAIlLsqqs1oMvRQAfEolE4paZ+H//5/9+/M/v6/joGWV5lCafjk/fvT8+QkmQhlGy+nS8LZb//tfj//yP//k/Pp6H6+9HX+t8fyb5cMkk/3T8VBSbX05O8uAJrf383ToKsjRPl8W7IF2f+GF68uH9+7+dnJ6eIAxxjLGOjj7ebJMiWiP6A/900iRAm2Lrx4s0RHFefccpHkU9+uKvUb7xA/TpeB7lweXaXyHnCS3feSjDxL8rix0fzeLIxyR5KF4eH/lJkhZ+gQn+5S5HXpGlycrb4A9+fPuyQTjf0o9zVDXklza7apvefyBtOmkL1lDBNi/StSbg6Z8rJp30ixux+rhhImbjOWZ38UJaTVn56dhJ15idBWHm9XKZo+L4qF/rL06ckRKDLH/HAf3pSJT9T43s/PTuL+/+9rd3pz//7c9/OnK2cbHN0KcEbYvMj/905G4f4yj4B3q5Tb+h5FOyjWO2IbgpOK3zAX9ys3SDsuLlBi2r5l2Gx0cn3XIn/YJNMaZM2d7LpPjzh+OjL7hy/zFGjZwwvPGKNEO/ogRlfoFC1y8KlCUEA1FOc7X36pqFIQrvn1BSVznHMLd4RAhqHUbC3RAtIygwP9kucW/iLslqMDxusC44Plr4369QsiqeSLbvx0cX0XcU1l8q9LskwqoDFyqyrQrlKJ68llq6m549/VmbLd72cR3lRHrzMREZ6fZVhtAai0jTbNzoWKGfvvjP0YpKXg9xjp6jAGGyblBM0/OnaFMqwHdl2oMT1jy4yNL1TRo3xZqkh1s/W1EupeJ0L91mQY+sjyetVhnUNSWYqYIpS79plQPSKiMjboOndjyT406INjHyUIBbld8gf5QTw7jVTHMR+/lTjXSWYnH1kzdF9+n4Bo+TnC4WJq6IwDeVtHqm/GysyGa3syElRpM5/YW/Nqqpp7pIUq3VNGhwL0eoIBlEdLiXA5TgRF1aWq1tp9klRHGaX5WuiyhD9/jPEF1tHo6uOklGV5OuSxdVNwsURr7jZ+EQdf2cHI3dDDJKe7l06XWdhXM5KPJ1Do6+MkFGV5WqS4/neIOiX6ZztJDPMkpomjYdKMBKeR6tosKPBwnqZuQpY9OlJHYy6dJ6550NUUiTObrwVxk1JElEg/JKa1b46sssPJ+u04TuhN8tUOGHfuG/wwj9pRaT72291auL5Fu+NKuRKPGzF7UpV1XGyLrJ8Tf+YxRHRSRZ6eNee+AztqInSueEUJhJd0jcoHX6TNhNNeMQtb18fWI7yRJau3msRs4tyrEEUCTLEcQgvY0k3ZGE9xg+wGjqr6X8hAj2bOZ43MZBreT80jUseWta8syZmRV0PrhplGD+54blF5eGBdMsw5s9FHrbx+AJC0e767EGuo+KJ+eDGdzcOTMsODeUl7kpC6m+SJZptq4Ofk1ALvA4vb12zAp/nhv3/5X/gjIyewR0xBuRHmV5cZv5wTcXqxN/Y0gI/nNpyDxS9npbmBWmWv9yblHYQ1nkGw4bd2bY5+6FYY+7C0Md5f7TVkewCDbKwb0xbPvNvW0TWASbJtygIM1CMjMbd6S38TM0y5BvrXz0Fc8cJTmrMF6KAzu+o4M6J1xeJdG/UMi1T/fwEQNu1+wxmlKbm1Lk9ys5tPS2m02aFfnnq/mtd0uF2f99/lVXg9YwX84dun6Yz3X1Uo3gYsFHKINFWXgXpkAx+o5X1rbktChW7CUAp+9tCutquE7hny0K25StlzRWBBiuizoQvObRKbzIl1blsejY1m8HcZUmK6s+IACaxYka9PAEhX6eZmva4J++n6YCL42j0MO7dFRfwxqzb772rx59O4AbVGQvdih2pSEIwGJkj2BJiIfQN+vewAA//dWuK6zKYxIAxMlWGizKV5fbEKJgIQdmK3W8orukx0SImrbYbJoFUPp7aJ6YaTSigNJpKjqL0+Bb7v3WLKNxzT//pFTKw/uMbkFyADtckEiSeeGzWSXLBiV/+quw7Hhbr9JVFPjxLI5WCTGL6pYnc/1w+S/pGvdWfFOdQt/gWU4Xwn16yQkNxpy7q3bMBQrP3Fvd6julPd3SdGU7jfCWa/0JsT9MiD0hT+gidEK+lIvc6fCrkTp5BXROm64WPPdPCj4x+XjhNB14vbKclEFT40/fCLp4nZpHU9ZAVMW06FOPgnIjtYM2TFbLbRpMA0wv8aYCnxXRZhpkd0q97IRTYi/y5ZTwpEMnJn+6KuiV7KmboZU/keBMueObdJfXmltMNKKYi86J5Od+6hoEBh3TM6u8Up2eZVPWI7WEmYh9y2ga4Pl6ImBnKuD5c3gWTDSXYeyZH0ykLzD4PJwO2/MnYribTQR8vn5M8xyFkwn3LJxqNTUPHqcB/hxOOXCoIdhUZ6rbyYYlxp5s5GDsyUYOoXs6aNefaBPC2jaE4UR9ylpi7KqSyTYSX1AwcUP6hiITaZ+etQ9QLXJfus+e0BGBMdV/oHlaJ4ReEueA0E/Xdu/b4oVdUihRxmSVENjkGKazzWblK+E85ZY+EhjhzTdC1TfCeYmjJET92zWDOAaf8YizRxHe9Y3iKEtX6zxqJWI1zJucqcrZTo1q8c9wGxST19N1ErO13P2KkjDNLuf8HbEmUNV8bSTlUbRYB15oOYQoxtv4UdbTjOMH3PmGNwHotXMzgaHhFKDn3ws85FAIwAbloeMG68DaC7QEeRs86oPHm2DwpOtNHPlJa/U6nbvEHiZP8mOnDXOIsbKmiRIJjjFeTnlwekEeWQ5NAvE2MJU9s5PfttFURgC1EWtrZW+7QuMQBf4qNpDbxw2WGd7gVz++1g/mViA9yTj/6s7dkieCgwwy2B6YLO0BRjeFO7joJWuHA6oZIKeKydKjqkkRU9Ummwcpqp0xpMRxOfs09jJISO3n0o/noRB+hFY1FH9EmEFM8U4ikFQ1SUOQiNJl5I4HIRmi1kO/bYki9uMxieBz9ujtZxATzOWyOgokkGSAAkzJBOZtWladljeU6ZVWp97DmjNQXs5kXYzhIs9+vEU724YRmSCaFkC0CMybaCmfAxq5p99nUYHwt4Kaq1ivuTaIAVGo/my7XKIMhaXEaJSL/eQbFojg23lC6LOmfO5e+0l4ccf7ahuHxqSuKXOUB1m0Kb3NJHMEafwDn7s7TwgzCecKcU6Tldjw+pDWw2QT0Nukyglts1jNaL32WmqfHtqbElJVQsKgIJpD0cL/rpzAhl3BdM7i7U/i30RHef6qt2cfZlPvfS+QT1gsVm240x7aDK1SY79z6qyTqKtqO0EMJRR18nSJYm0FRHSx6VY6FoO1jLEdGDXS2wBRDhM/c7yKITpLpdmvl/Nca20VJcQz/At53KXUxforujti+ZBtk4sMoctEFLpGd1IQwHqz6ylgb+1hHT+ZbcMo9QKfd83Xxzr/LxTwbvkGOJmfV4H9IdC+b/CS+Wx+c96EIQNAvaB+1WBAhDxiep9uC0olGLCDP4KBXdzwkaZMsf4JStnNzQIAq1Z6rGoBgL1KfeuNH4ZZbAs8KrB0YAqd0lvD+qYAw14/o+x3sr3Geoo6YkFi3sJhurH/4sypvoJAy9E2TBs68fgDAKUheeN4vvVjaLh7ILwz6ymuAYJqItF9p4BYfBQ4Y6xrCK1CseKtKOKyGZgD1YfOfAEmWI57s3hY/IOPhWwGN5+DtRJgWdciufE2h2NaBQg1kmq4+RUwIHR77+EozKJnRLYcZDkRLaPALyCm7DJWNZzkUCyobi7BZlC6qfSNdua36DvEgoxAXseA80MJdg6KBqbYlUIbm0AToxAq3JKY3aaYQ3HA9THJoQ29myH6GqLDW0CQsdfAgWzDu4AwG/C7zSrzQ3QRZevfYTZ+9+WCFg4Jol9rKJCVXgMGsdQrwbb5eRJkLxsSKa17mGSJDLXGqsBgsZzZVzg4mAFWgcEMrhLM8xZ+4q8Q0EoQVN+1YGAdC7pKZRHh2gu5Tu0ggjcZZqVaQ0JyEJZ7cJwDW+oyaCBrXYoHtjJl0CCWpqWBix98Y4OxQK0xKDgbVAZqNSQAhqRYEM/dHIoaq3plYF5AWOi2Y6wVyi5zLwpR+YPaq8b2K8MS2YvTondTZghUGa6Te1E3Qznz7rgxie7NwuDqEE/wBqXmZwtrBYp1ExUrshO0xTpfPyLywnbFXmu4LCOhFoL0GWUvLmuLaQhY71DmzAmL6qPd5AYkSlYLRIZKlGub/12lRDHatgCsq7C4P2Nx//t2vbHvqHocCd8PNMRqtzMAyq4GFTwgZYrk2l/XNVgeGNfmM/4xRVMoav2Ou+Hl/BlAMTYPGb08ZhF9xs96f8r6HRH1cOpYP3tfQ157Hv9KlyGWew/WJ969C4dFXnYm/QAHWF7sfk3j7dpaV9eoXx0XbHRUp15P0WNUiN68tIF1S8tu0RODupYy1A5vyhcX3DIUE6HpLom0HxWoHiUwfhCgflGAvjOx9APkFX4S+ln4ZYsXEJkuXClvV3g+iwUxV4zs77zc1iAVI7zZ26na2zWS9Gvm4zb6mfZrh9+VjZIFpaNEp7TcU61UBygsTbOlvoB58CDKyhj1C3Pwhv3ibNoOdjUEvVah4jlON5tXQnibZZhyJh+0OS+pR2LO20sSkghmztvrpRdb3dKDe1M0qorGzaI1nkkdzgdKd+bHm1IyY9kjkbUDxNHIfLuJQSwH5mjpY+nou5cYol1nK7xb/lfnTnmySBzk78krqX2VdtGgs6gga7XF2jqc1n0U9qc2g8B21A7SPj5e/dLnVKG9sO7uzi72a7ku3pvCtXWVfVMjO1QjMINftDxWgZGu3qophkyh0hVnd9w9dIt0VnMDOUWLu6HsVms9BslS7TBIh6Nwynbpqhx2mQStdJR7plzOt+E9IKYGIebh9NahTw+VBeKQQd+YGhV4QY8dFuwwEB1t2WVOLrFWeAIDuAAyij3RltrJ5EYO5OOd1PJKQoQpHh0Jtc3IYZJqGUlgdIWCUx04jRAgPoJSLqTb3pFjKuVZ6C5/tJxzMMLbDPMWs5swDCRmdycUDrQSFQcEN9h+uOKA4HBh9ckY8hONkOB4wfKMsnd0ssvfVcX7I7PM9DYod7/DdtJta7VQBbaBkZTSMsIriPO8mbC0CG/ycmhKfDeL1xssAflOzpC3OXwdA7FFyWpJuJxrZf6hztUu27hEbnnG57Bahl1EMcpf8IpvbTqGW4S3Mfz6dT7u7QJpBLvjZKVAXHC7Nzl5fXJCV+R1ZB0zYWEg3iTmDyIxVrLyJiUKUsIemU64qgNwSZ9M0q43hHe45Z7VwqcH8yZ9h6Kjeh5EP6AudP0Mf6FtMJPNBuBNKg9FKqeTlrtNnPohCuvtpJnIdFHe5EZBbmqW3T+hRtu0fnTa89164wfFRezn1u47bwdF5hV1FkjtgU352djIZ3Y7E54GdUfdA83WHgfxqdx5kCCL7kUkLuNeKlJHMg7R514qUIgz6dLYPvY7TmabV0ppnWWM2Caf+QNO5F07Far7JaS0dzOOtaCXW7cdrrNwLpVEt84ppbvMMEZvlUv7Mt3xlES4zCelkSSPUUjz6D/fFGBlPI9WUUG2RgqEdgvIKWbzjZLeyazbhjvvTIVymk1KL04do5JksbUtaK6gDRdDDcLbQkjJn6S8lB6t8jDsBmYh1KINi0u0jIDAKhsBXSZKx2uJJx6y+WOZ+lDxvGM8xKc247EZsnyWelSbDtmaXOMRWwK8DViFAWsoahIB+4MMV/kiqRlDEEONmx3lo9FoqDXHY2YDrSr+NsxUhhn7EOKPcLJUGkd37HvKje9lfhH7q7yBM7HcJPA5s52eyHrziD6uEr9gZrP93GXhApEQC/Xkk3xL0t/xiKD99en4PcfxTna6Sa+yno5mJTvmKjPvRN/JXO5Nqrx/Hsnb3R5Uhfg3yzqFFgunyfqX4axfvi5Qk1cQPqIUFPbjLM/TIKLC0HE0Ke2Hnc9erwfOk/CItThu8rUKsD2D6Xiv0y0tcfPFIvzp+N+4hsiRm1VMi+w85X3E9+/enfZbzLROo9HbLMOKQrntTfapWNBWsANOzAqff+tZRqYos4gLs0Kr9UJYQdsHmAvAg+7z0cO0Sp6SHuQAT+IosB4P/s2YAdXb0URlyshrs4iaW79hrd7nDJ6glUrsM2ogVvTjJLHnozCNZA5Tp2+mE14vlzmua4SuOh9oYxtQkfIqb0/IgqKicILWNwfLI4Typ8sAreeOohnQ9sQbvtG9c+kRKmWH0wAMkJxkM9CLdeCFU/CgOtseIbB/wA3Q5t5pOAPpBusAeLIiLyQ/nH915+XzyjLSutlEzSU5NOeoHqigwSRHGfwUam6Sv4Q9ROXIs9hdgstXxrU5MfygNlMH9wg1OG/a57ZHCRa8vQ3HDf7V7sll46HxfB0eC0021bEwNPB7iJLGqnFSo72dN4hltIkfJO7oX52mCp8w7sK1r/8Ct5Vd7A7RJ4yNNtjiEYGWvY889UK8lKtmCq1mpGEp7OWGE+8+sLjz4Sc35e2oMDdY+/e5I60IUNuSijJDTvj72pVKYk9KaR0JRMkwItfVByPRK1lsLnoiIDuGAgwNkK4UbajDnn5EMl1mqQQs6qy8mTBEk4gPE39BqY9FoRfABEgQnUGH/eYsUQ7JMXxOqROfo68juIhGWmzUDvOxk5GpHvvDsF3D0rgDxu5NYvtBcYfG18gq0GzQKq0CR3hvuR5s0VXWg/3cYOshDlgsCVOc7NA7t5FDmK5RIMCpTseCUHsZZdDIzmXhGHFig0KIZgutD3dxfkdMEkeI69glAjSWNWJk8GjYI/AGstEEhukShhboN7cM6aHbZFFMglFOWjVeYDwvI3HIkp7pnZ4njToLBszwJ7yVEdrnq5MovoyCZMJuLqdk9v+KdA5d14AxY+fXN8PuBYpUj1/ngDFoH9c7YhcGRYLl1z1gPNnp9Y/IU0KRTtkKCYwRO1sxDXphqBI7toKCY8vuV1QCZw9FYiUrLDBm7GjFJbDnlRI4YNzbIbA2pO6SedoFxtDXyRzFqEBHs4BQRAIH54EvikSNidCgSsy2xh1jrEtu0BJl5QbOSZO8yPwoKfq0u1mUBNHGj0eZ0yt5pGb5S1rd1NFPmaMNrguTOMoDlcpb63mehKamXoeM8UgqgaWpLi5T4BKNfeY8CkqLa5KAvoscne5yVBnl5pUdcV8iCLCHitqMuDKvyY+PWvNguXkNNyy7aOVyX4RVbwRGAPAiUVSarh1HijInKyKIzpXCCBQ1iuTZQb6OlKwXdaLy7YJvBITqbxFCpdhHiperBFH5ev0wAkDmV1Hxct5VKFyaDogByht7BZBF+c6BEGQhCsTfB+EMPHgszpJivGck/aJStL3XFiG0qWPMyYVE0LOysaKCaNk8EHewPU5Q97xWQl7/UHdUmbDvXQg0CnPJo6Qbeseqci3Bnb+OwOOJRQRGFyFjqqaMnCtRv2VMXiWlSw5i5Iq3PNwZVV51UEex+mqDRo4DFUg44OpIgmODpY0CJxwtbJw5FSgpyGjxXrwnERAXWWpMP9dheoQqug0CNAJTLoCFctdbXI9Lb+ukJhLiZkk4DlQukiQ49YJ3BKZyAhKBNF5sPQhmFSVcEFBPlCMmF78o4J1VBBdavLtKQ3x/AcItEscdVBgs0VrjpNtKXQ60biljjJA4sMjbwLuwWLOFd1oB547QVUXAm3GXlk4zBp1amEaUS90Bfgy6sSgy2JgtXVMhKVcGLIoEbRGbFOnzRGw/NB1LGH8WASdk3i6iCyL2CoKht9k3DTRd4OEywjmrlhIPxqG29u8cJLQytw3G7WXuEyZrcePjIm+02A1GRDPnCGPWdM71hVWB7b4digXt/lTKAvEli4h27nrFjAXcBQoDw+y1oVjQD8ckZcTQxYqoHZIrFTOmSC5NGLD6BAGKL3WYJyk/RJcoItJ71ydm7e9dkDAgzdGHdcN7bjGClg85znSolrjOMGRXBy4DLZd4yvQwKlpBGi/2kZHwQcGhhmvOsEtNr2XVYdAIh4Y9aBhIvl1wPGt9Z4aYJfGwETeJ97ExZw/vUjOhEDHONLIRJHG34aWfd7jRH0G8i40KIw0a3/GsETRd7nnTIVroe9PV88OtFnrbdAGk545mre6cs4sbLjXA5EgXmWDqNl9kcTndVkHscSMV/kHXHIH8ypxzDIaCzB1nhL+mPFHZaSu46/ANUdlrK/JkD7ttoWeOnDWq++1BHx4Txux6yy1x1hFxRsGtp9uiYcceljv5iH4Z8eNhoQRtgWDS4BvhQmYpO/30W6ri9tNlHncrNMxKFS+fzo6BbSusxLHvq46InMwdQy4oAvcLY6ETeFJo9YHxqbLKQ7yyc2ZdjyHBMbGGzxCnpPh7wNFTaQ0XoakHvcbLwNr8V5JlfeeiSXtgDyOg70UkURFq61yZq5GuSlBa544x3nQFw/kUyZYww85H/MpD6n6kv4iROhyNcNr82KyM7Sc9NOONbUWnXR0zW7MDs44h7RjjLJrbDU8ob7fcvlZIvdCy1pATQtvZCU9OaVx0KSc4Q1oRzawJrVmrWSNZBqE0WwFqaedtU1mDpS5LAqpFTktc8yurl1EWiNyUxnlpwAzR0x48N8Z8mDotGPBiYprQmIMM8GLAXwn+Yk38jIgKLwavFgcdmqz5MelVo/TFklGmKNy7jbk32bFmV/dwI8+jjDJK+V5OzeXJjmk7vKeTPMsyyq/Re7th9yc7/uziHk/4EswoW0ZWZkOOUHYsmXqlNvzezDhfFFduSr5Rlpza2UpO9NLNKKeGV3YDTlJ2XJl2pSd61UDAiRFfqS79cm+pLv2NZekQM+ROTl2wlnxlntTh8xufnCbt44kXPKG1X334eIKzBGhTbPEmm76eUCcs/M0mSlZ5W7L6cuRt/ADT7/y7d3z0fR0n+afjp6LY/HJyklPo/N06CrI0T5fFuyBdn/hhevLh/fu/nZyenqxLjJOgw+a+B1FTU5Fm/gr1UokdeojwRJ4Xc7/wH31yYeuEay4b54HUZV/D5bq6vpMR33e1hW9dgvy/9naSv0fBuyb1kFvmXuD2rvG+nzYdsSZU4xgYxQv82M8Ez0k4abxdJ3LHNHlp5mkTFoT5rI7VfdyEheumaCB2npHsIHZStGgkb0X2iCOf1DFq6zwWROyUNoTibR/XUV5Zl7NQnQSNnlxlCBHh6vVk+5nH+njSE8z+mDjhBkVPR/VHmdIYrLe4UCNQfHynMOxkBf+IY+16U0RrPE2UrrYIr2mINRK5hu5J+kA+9dq6j82y+N2UH11XtK/GsjDtV3UkMhS6KOWXgxnV9GQCakgTL1v98SwsNc1gLl9gWr70MeqvB9MtHWMIqO4ZuE5S6KbB0tN2F1lSirusTNHQYH5ClN5s5ng9BcYm6OPNL10xHk3Qx7uV4d0a4Z05MyEc/a6N5nxw0ygpHTQFoGyyPvbiUgxKvuujpVmGpzoU4uVZ8OQnSX9qGMoHUdt9VDw5H1TrrHNr1zx3zoR10O/6aHPx4KDf9dEkPTo36lGq35Ildd3lZmhZHu1aLrZxfHvtCNGbNG3Uz3OZdFcp2ohX/gveSft46RUVL0LkXg59TpAt/W3mB9/cDP3qb8Qs4TLptwT/uRR3Z51khHm9LaSgNE0blc6Al3MhapNmhoqn68gXa6hOuja6OxPLMv2uj3YhlmL6XR9tIZ6b6Hd9tH+OqPpuBiv8AeUuyqZf142EzzcmfL65H+FMN4MV/gBnRNn060JBmoXEnlgmi70c2jV4Gz9Dswz5Y5ONOKN2fbLZRnOmaSKusFCSMCxDOBPsy6lqzEm/rJLoX6i3MRAk62GXT4vyoPV3EzTyW4ZYpu32XKIyRMw/X81vvVsq5v7v86+9uUieS7+mL+cOXavO5zNxJZ0M+vguHi0IZcN1cJms61l4F0pV0XwGtcXoO949j7Sqn8mqniFBEGTTr4uUPn0vrqBOM0T9MICqNTt0Sv48gPqzKeoAqDFmvTofopjNY1fLeB3GNYQD2Fr6vFtykS+HgGmyKTYeD0PYNNmC7hH4OodZDVdpshqSmTrdHH0YW3f2o36zP/Nnef00A9TT9wOwdaIGH9I4ConFJ6qN0Tt84FLNODxf+1ePvpzHdbox+g0qspexKtpMhnIyhG+BO068NeVYhoeprzOY44+3optLvyYPoW/SCppEGwn96a9jMkpyGEvPELwVNqZtkHDbkTU+rKxkf0TwTbGrq185epPBUuoVRN5U3uXCbrDzjpLVJb2tQNR8Y+AgUpITokbZMaUsq8YdGkex4DZNkse8FkzkeDVNJvV6aNyV3Putt5NmPmtiedG/kBiuSVFHJIItR+VTNZDPZtW45GG7SVqYP/11ALWbqMOFVYS/z+JolZCbZAEjBBnU8b+k6yjx45sqYvkNXohxVcjyqNfiPr3khEp5f4pzqNdwVx0YFig8c285eEGyIbY3jO1pYtPNLj+6mc96WKLFO/tdE+2DBO2DEZqkoadGLaU7Mklr2TQDVAmdbJoeajX2xbCdRCNcOv8PgjM59GrAqy8xcJOgjTdAbTdVs+ceJZQ2CXp49T5CDNpN1eaBFJdNM+PsELQN1XT7IOVwnWTCCRlsN1V/HMtHsSnigOj2kvWx5fLLJhrSPAhuKhW3acCDNh/VcagRiAirk6BhZVxEGx6s/aqxbhFpP9dM8zmhuAfq77poi3wpA2ySdDEJw2WgbZoBpUPAnWQN6SMmMqduhla+oLf5VI01t2RnZ7abk+7gDHdtrUUgD9lP05B0xsZCIPJcqoYM3A8h86kanOCN/gQskWUy401pZTHMITaPGZ9ktcjyWPFMVtlIVg3+LSMBw+qPGvYYawFO81GDByIcRx9n/hyeBYIJgv2uhTbzA8Gg7iRo4c1DMVzzXQvN80XsZ75rSEQmkohMG+d8/ZjmOQqFEsYlaqwgQuEKItRfQcyDRwHT6o/qOJ9DodQyn7X6klqyCnuTSdE5/dsKRwL7XQtNKLnsdy00oeSy3/VoE4PNTbBcX7DsZb9rjCnGBCYMRetWUQYNfMaaR4wvymCML1zeyvJonHeiQN4CLtGI+6VZ0CD/2SwaOqBngyZQB8IcfA17csQiLwX1azL2OeexjhS8zEWlpPcwVv5WzkscJSESXAd0UzT6H/crj9Z+1bj/k1xUDN9R7Elq2ohGULIjC+CkIEDyotNIEbztsFu/H9ddewkflRvC6Uah7m/su2nqqNW7vnNONDsJ2q0VAHZTDkbaq0A5UKJePlKrL+eSchOpSs4DSNPtx+uX97TKXzs33fL0g4Y67Zf39Mqffy/Ig9Uh145OwsGIaB0PDEpGq4eQ9YVUVnAqKe17cl7quXCm600c+UnfBJL9fgATA/kh1JRlghmFJKARp4GFGXQMgLJQiNtJOJhRUwaNgxoz9PVv/REjLjbNeLlMfttGouuyToK+0Vpr4iw2XWPTLdBl/hmdDIb428dN+a6TtIImx49uFr7H0SZ70ct8xBFEw1EnLjrNyCOi0y1fflFHyEv564I0H9Vxnv1420OpPh2UpCwk762YSwr5r6GkiItOtL0Edfa8z6IC4W8FvTbqIvbTNDTnBvXBqk8aR63b5RJlKKS87R62dlJ0Dm/95Bvu/ODbeUJ2uj0KBckaB/TutZ+EF3ez3ul8+/lgRo/CM5Nmg6gHbDCWRhGmGVJQXuPg1tlXKFkVT2JAJu1gRIu+dwd4DmJ2CrIzTVwvpT7MBtZZdeIhddLAy5nGfSXDVOszeelp+o4EOvuKMj7KYSdBA+/Xy3lvc1B90hjyUUIcXr6Q6MelzugNe0G67nx6R24xsm1ykSF0mXAu89JMdvV4s+vxemgmu3puVeq51avH8ZPZNoxSnMi7RTEpWojn/4X65/ntVz2kzM+reKY8Hpumh/p9g9ctZ/Ob8ya+C48uyqNVywV1wuCA688GWIQaYvGUbgtKlASbz2ZQl4MyGe1lkgHmxc2FBJKmGCD+c4DMfxrTeXOzkGDSFC3EX1GCMr9ArHrjwMWZtOq5SvtRgZuPWjiLbYEHFRYbTI5TGtnxgSDFmbTqucbz6+9kC4YVI7WN5SoR5DCr4Xa0hluzGtzYf3HmVEty2J00PdQcbcO0oQ2PZh5ckEWrDmKRMYvj+daPefRuojHu/SDwvQHymTgu35lJSD4RW5vvJmjnpzI8kmKEKI6xVqWYIF7zeo1J0UeMt9LYs1WSNqYj7mPHpI+d+UIihVWKPqJ7s3hY/EMcj7VN1MadzyXtLhP08fpLX/a7CZobb3MZM9lkU2zxYGwTjXHnV4PIJNkYe5AdVty4HyH73ozuLHpGZAtIVkbRMgrw9C2uRphRu77Pc5kcVilmiGJZqZMMMWdi1dgmauOW3jnO/JY8hCPC7mbQxr+OpZNYnWSIeT4Aem6MKpl82kRt3N2G8SR3oXRgSAP5cjkMahgOFczl0KqBBPmn1x5kVuElp59siC0Y8t1EM1zBOYsg2RSbO1sRJGth321WmU8fzVr/Ltqqc+la6Pflsp9Dbb6boPEScW+2u6iLCZbEbJIZJr8oZpMMMLf5eRJkLxsSLkNwLjmUT7828ZKUTTLBlEOaIzqzr3JQmmiCKxrDbJIJpmjsskkGmJ638BN/hYQLaVEW/TrEOthY/7YFJbJQpxmgypf/XLoxuowVZjuATlnBWppLN0cfZoodT0TbAD6DEb6c36a8HuKzOY8H+GvGW8kWopNmiirYRPRS9ZEly/xOmikqv9DvJurjun7wjXXQFq+shrLq18k6oYtXibJstnVJ2ybIZlBXP75wJ8EIjz4R6JVB+qTY3UxG9agxSZBPozZcboWyy9yLQlT+IDGuH+P+Wnsgn3ZtXpwW/fVhJ0UfsTKyJfYHboZy7rXQoXwatbk3C6FFQCdBx8NFbGDAftcwUTpb9OaO8osGwtc5FVuy2+8hdVI0fGDWj4g8A1rxv+cH00/UwM0y4nMbpM8oe3E5m1ZBsjp2vZuccwd73RR1RHKDGCWrBSLDNMoFlpniHDo1kGmgj1l+07BWEne+Uc/j4fWMh9fft+tNv997SfrW9vzbhN0UfcR2X8oNRkkW/Tr6r/2w3w3Q3P79ejfFANGTMJUm6OPNZ64YjyYY4NFQ8rgbXs6fOQUvzaRfz+eXxyyiL+RJXDk6GfTxiT0c0UmnzpMYv5NBH//a8xwxcJmij+jeS3qSJujjefeuBLBMMUBEwTYjPSKBbZNNsEsbja8EuP/QgSSPfi1fHVcy/MoUfcTq1PUpeowK7vVLaSbDetzSB4B7RU+aScvm0Rc5nLHfdQ2w3TLcCFnA3iURH39ZnktnTl4NR0cWZtCYYavgyjRm+NIPkFf4Sehn4ZctXlhl0mDMQ/nVay8l/QrP5DFvzs4lHoxls5cDmp9jMBNvIFEpGZvtTJgb0fo185MtTudcGMQ5NJaM/vchNwRBsgZ2lAxi88mHI2al2kNh6SISQfqhdaFfTCRwFGIacXSzaI1VtsO5a3USNGYgvMMjGkyA2EtSxyQTFX/+0X7V2E1vN7HAOoT5rIGFlj7ehUm8kLpp6qjX2QrvNv8luPLvpqgjkr+7SOUXnZaWrl0cSZ0EndVDQebxxZqf4zspGhIShQJt1H5VR6LmsvzsyXzWOTcsn6YTxE1gEg5HQeZBo4WoLQborNyFNpujxzCmUZGwrrt/hAEONxwl64xDXF9Uyt4B9XBnQA2GzGBpqdbiJm7ZfL0nRhPzJRR66LctrjLyY2BdJYQ3YL4izjQ6q7IPHDa666Xr6Iu397pt54HDfa/7LbwNo2zu8kc41YLBDBSJsNRES50/WBBMNp6GcOGj+aTkHz6oppOu134CGFazAjSJQCwrOc3QsV+FO+mWs5EoPx1M95ZXeeQVacglbo1ptMKVF/5RVCTEnH2D+cAbrbRfNQ5ntv34FVuhCtxbjOoY5S94Zb2GjFJdYxrFqZYXftM0Nv1MXleC7GOMZ9a/woJvfWvct3SZVsadAIxl1IKaxDIaKv3W1XZdDdzJpt27q47lTwh0zwZuUP+8pvzyqkTjekNCw+DfHvB03gM2EJdRhEPVCELTZRMr6MMXH9fP8HfcLsDw+DWkSYR8edlDFZYfoJNLx3DAA7hNnPohCktck7O4EYBp+rqu9f4J9cZ2N0Wn79cbvFW9iP38qS8CbMrbvlh/Vt/fSXV1KAh6YF2f1RqdW0sLTzNO6kPRHgjzefcH17NQOHCZz1ojIlpGIrhuivaBddhfMdRfD0m6S6pAhbuENJNtWdlpRFu/o4aRRDg/nljvSRirFTWcKNZLdH1BlJacSAz5Zya+yp6Z+BHWnbM8T4OImlxJ7Ezo0cGD89k71rIfYYqJDUOERxJYgML+uqML93DrZyskmo6VepsgiHqc8KmpWZ8oL91mgchCyVgEBwly0iSkm62jy/zLNo4/HS/9OO9bLQmb+vFE2OWGUrHNMiyTpsLBlAaUkQbVVlRaIGiJaZEPUnCGGm4tP7PCf6BBNYmvfhSXjgiK0iMu25cdnEtBZkRYlhLDwQHIjZDMQ5QahcYDyQ5r7KIpOr2idlpHAGnZMwQRTGa6hNlJ9jQiI26utZSUNhEPs9uZqnCwJcQWFgri0IJYMpsgAEgBQ88h6gtxKwE7373U735SBkAA3Et7EcAYoEKA8Q5UDIQthRIEJ7xeLnPcE3qy0BazFYcayXY1WsPACUUDeYhyMdBeKNG4iDJ0H5EQrVqi0RazFY0ayVI0Ghg40WggD1E0BtoLJRo0vBBdOZEnnjUFpF/YVky6eJbC0gODE5ke8CEKzmjbocTHdRbOpe7qsy5kKy4ljqWYVCBw4lEBHqJYSNtqLQ7kkd2H86/uvHwgWuNVX7aU6iPPAuZ3oSy5T8EAJKJH1CHuTCVNBREI0ssP3Gu2mi8+CwA0X6WVdIwQHEBwKC6Q8IhpPFQ5krQcTpbq2Gz6QsSUtFQyXbhDlJeWuD+ioDw0HqZasxBTSiQgqjNQA2O7eG1woKahFvEQVyZD7bUWi8U6eGjeL1Z/MJkpo/CItYDvLIbtzreGARCHDlmHKAwDjQWRBfbyQ0McOsXsLlR6cJa9QNCA5IIl6hBnD3FTgSaOZtNcbUS15g+usNU00kMDOwqp4MAmlT7wIaoThdbDCJDpZb+ksI0A/QD3/WI6D1GAdnHhX3HD6MZfXNZuhhJhHtKpyo9w6z/Z2UoePAhinKpH6BOW1o1TKuoZIbSt2OQgqxsJbQcpN8IWQ4hNN6ziQyeQnWmAxx6KRmQ6cS8NoNtLUg8cRq6GKNaTL9WIfCAyNsoLWEVFayEyZqap2OLaAUPH9EELfoDKiiHuD6SthEEVLaY9dTyAiVC1MktpE1cDZsOtQP8hCqQqV6YWUX2FpwEIoQKVq/tBxfTAFefO5JRoaIMzT66YUdxbyewGd/oJOOUe+unnVBsDsk9tu9Hg9JMvbHN41Uez7AsODuoMggM+xMMrhdZDGYN5jqdriV4WsTUEIyi2QkIg4IzAKNxBioO4nWAiQN56Q/NoFRUkjJWeLHTLWgsFC2etQlgsQDHp4B6kvIy0HEpw7rwzTXGhJWyFBINYigZBgBMIgnaIYiBuJVDnk6C+D1WcJe1Qwk1B9YDBUvYzeNYXZhQETDBYyg5RPqTttRaRbhwuHV9HUUm9KF+C7uBBD8MHUkDXIcrJRL6QfOvVfSLFZScQlMPxlRTSdqDiMo3PZI8Dug5y0uLQYnOAjnMyCg9RfqZ0oOvxwcyRbgQEWpwO3MFumNpDFLDpHe16PNFzuJMUhharA3PEE1N3iOIznUNejwc6R3PCotAic0BHdiLKDlFYpjq667ff5AhvGANceA75aG+Q1oOUq6mP+Hoc0TjqE5WEFqaDOQIU0HWI4mJ6FFgH6MSVFH6UoKyfpYkAWn1pfuf1B9L1WFBK4WjLecETWvuUCfnGD1BpNYfX/nlB3ph89HNUZjk+wi1/jkKU4ZUbeZP7HUl/R//rxBEikUnrHAs/iZYoL27Tbyj5dPyXd385PprFkZ+TARMvj4++r+Mk/yXY5kW69pMkLWjTPx0/FcXml5OTnNaYv1tHQZbm6bJ4F6TrEz9MTz68P/3zyenpCQrXJ/3iFawSyvu/1Sh5HsaskDDRaRvDQhrrnYy1KtxPt/f+gThhqIXkBi2PZPL08aRf8KNAJgkdn46jpD6k/RUl5NUNFLp+UaAsIbkQpfj4iIgdMetuRO9kEJ6JQlzWEmLcIiLPI7gZCmjs90/H77Vxu+GI+9D9XvvlMgnR90/H//vov23r7UTQL+uN02RVoO8FC1ZkfCReQRtQbAvCxpT6dJyv/TimHanZLm/7uI7yMpQyKw+63b3KEFrTcVqCLLHKHINhIwcPDhLR5dHbyJh+ZCjJ4QZX4Md0v72JEV6zkFAIxDPHRp66T2CUOI9pGv/447Z9+MIOp3z6wmLEVgf+DIJcRkiRX44u/9dDWepPR9cZnol/OXpPpEeP7vbkWLtmWs6m7k5EN73qmaI2FHTOPfUoYIraUCA4GNOjgwOwoYY5Z9GjoiloU3uzcderuypmVTO3tdMkoVfehpZ636BHQVlKvV7lyZ6Lnf3DzvRlweULq+of4/RRf8oQuLnq9ZYAYoKuk3qy/vBdSLajtt3o+AnphtnM8WRLGh2Y+aULAXMLAnPmzABQnA9uirsRZTkE2OISAiXN8OKYWNNvH4MnPMbaFSAs6n1UPDkfALDnzhkEyhxCSOcgfUAPIpMlfRqYWTlbIF7gQrfXDgDS5zmMnF35LygjGjqgasq+heSQ7Tbzg294c/erv4EgEf+5hOA+AbreFgBIdKq5nEMheSiLfIjx7c4gZMu9gJAsdwGhmt1/gipAFg5M87k3EPy6uQdtKQsH1tIbFKRZSIrByIi38TM0y5APq2YtVWzt1ltBbIsoeekddSjteCGPgKjCyQn/V0n0LxTK2qd2OIXRtmv2JMe4jQ0S+X0QB12Vt2f++Wp+691SqfV/n3+1UtY15pdzhy6j5nMr3VbDuVjcEcomhFx4FyCoMe6IFJbQFhKufwja6XswJCuV2UH6GQoJDKhe88GRBrGK7OBJlZw+0iJfwoFheQWlDBDvCitNuB4laDZYTRDXnyHOMRq00/cQcF4aRyFxo0Gsf7M90+Zr/+rRB0S7QUX2AggJCAVOGu5LYDhIEj2EvsH2LUb76a+AHQsHNl+DyzCo1EGBVRfH4CIHJW8A26EoWV3S001EDS7AzlMEuJbHKzyZEJpeQCQELH2GIfd+a3fr0cpgC0VhPLynY5AMYIjgQUGdzapRYY3z0195JDM2XaWrKPDjWRytEmLwwwCKjJBUIL+k6yjx45vq+uoGLwUAUN2nl5xQCtQZd9XJSIHCM/cWgL4OoAcASLclEAOq3L2BIX0AQwJrHV2eg7WwXOxDoVUDFRiOzoVQmHghAQgFShpee0FB1StWwKbCokETSNetsK2FwyODDBILVurK/RI4fUCYt2kAAUNvTWGgZkW0gcBx4TSRE8IhLfIlHBhhOyhpUID0evnUzdDKB+lMuJ0G4O6itUkBkVfm3hOkT+9h8QSGKdDNLi9BoRsPhyq1zQFhxDKCgJmvQWAcGJj5c3gWgOhhjDTzA5CRhqHmIRSS54Mwys1AYM7Xj2meoxBImGYhzFw8Dx4hYD6HcGJJrapgzpi2QCKOkYDkEiMBySWhCQrI9UEWiOxNdxiCcJ69kp8GEmjZ9wUFoET2b/hBRmnPqgNkOvrsmXjm0FJWbkFbPOMnhWH1bGErx6jCN3GLoqWsHIKql/v06i1LWbnA1I8w6VVcFZvAe8F5yl+J14LzEkeYcZ3TfmMP4c94jIMA8TcQilDKPdiEe3sd3QhpuIh/htugsIXpvu5mZfz4FSVhml3O5dcySjBVwzRxlEUK6zkvfCXy5LSW8sZTtGcNce3cWJsM2UOcfy+w/KFQu0HKkuMG6+DV+ME5l5616KTrTRz5SWvhZWyeDK8XyQ9IskicG4ArXeJhbQSlLKX88x8/rIxeJr9tI5g7ndrwpzWctJrqODi5bbQ+3vZx46+Q1HBKNXbI4RqINnAm2xSmLEzUBOaxFk1SeAgbivbtFC5a3wsetNHc3PEQE2z0iM5z8Zh5JXqPDP+6ApH/kBJIXqqRIRwVGXj24y2y1r47OhkQ10xUhmHtVdGJRHbBvdT7w4osnOPbfRYVCH8r6JWd3ay6QS2CKT1n2+USZSiknWWLFfvJN+cJBd/OE1LKrnlz99pPwos7qdeYzTb5jBhZzlEeZNEGy8orEVMFB1QlnDNAC+UrhHcnT3a2rAer5hbr4JWITrPw/DADMb1CPtlXmqzymKLT9FhdwSvpORKf5yvK2Bh9pgp89uvlPLeeBaKEeHh8SZMAlYoEZo66IzcE2Ta5yBC6TAYcf9VUnADTm12DY95aYjp+MtuGUeoFvtT1RhXo/L9Qe6JuDJKRKMj0asQa6vsGz/Bn85vzJp6DLeQFdVGAQSGEEUuqdFtQ+mBQHZQB0XdxI/XR1wP6JxxNNzcLW6BaNbJ6xBbzKvXtFqMYY7EtsNxjQcC0OaWdnd0hFsa8fkbZ72RHgFUPtU4FA7wFAnRj/8WZUxVkDZWjbZg2FOLhZYtIA8LF8Xzrx6BY9xBgZ3YTVIMC0jKiy06hgKThLTSBrq11BQWKtwPR/HSQHJAec+YLGAFy3JvFw+If0uh4OljzOUzjbJddLYwbb3MgRlVoIAOlxppfQaKBNvMeiLYsekZk80Bm/2gZBXheg8D9PAcSEgoE0qkl0gxE3ZROH878lt642uNdx1A6vkQ6h4OC0c86sdrUccl9IpXg4RiIeoAKQRVVAUloYXrWSzSvdfe2aPZDq8Gy3/B20QC2unebVebTF3fWvwPsuO7LdSYQjHUv1jj2K7EGyXopViJt8/MkyF42xLe/c2RjBQuyEqqQAIGc2VcgLIDxUyEBjJ0SyfMWfuKvEMRKDU5/tUgw3Qi3fmThgJoJtoLswMG2FGANWeOBcQ2QY0DcglmBMlD2S1AKBrNmZKCsF43ltbYffGPdUEGWBBSZ9ZwFWbYIUMFolUdl1MWhJlheGYAKChO0yRhohbLL3ItCVP6g9lmx5cqthPXitBi8O9ICq0wQSWx+N0M58/SbGY3uzQLo1g3P2UBI87OFnQrFOorKHNm3WQGdrx8ReTeu4r4dVpYRb8AgfUbZi8sYfRmh1XuLOXPcMf6inVqkMRraboHI+IpyEHOhq5SoVDtbWZAOxYx5xmPm79v1xrI765E49K6MFlC7e7FVkzWiPOa9HoxreRvWAHkwnJrPpG/n6OFQY1fM95fzZ1tF2oRdf3nMIvp0it3mk7U1J8ri1LF7kLHGu/Y86eMAWkDuPUwnePcuEBB5m40wHgitvCL9Sl56tlPVNeRXx4WR/+qg6il6jIqBZ4f0Md3SoHPgGRU1A5Io8WEcQspTHLd09SfF7pIIIvRlFU3zDCZGZR3ykgZaXfoB8go/Cf0s/LLF64fMDrwUwCs8bcVjPrw2hs75a7EAbPr018xPtrGfgTxl8h3MCHQRJYZY6p1ZjmkU1oa0r6Nn3SxaY73ijJh4q6k9vA4nQxQGjShP6+3ifLuJ7W8v52jp45Vyz4TaCOo6W+ENwL86N12mTprkb1uM2s4dgJyzqCCzymJt6QV/H4WdMWwcpIEaOYGEe6ifIbFsGZ4QTMzUc9vwJOVbpq1DGr3LNKBEhjOFk1AeNBr3NT3CquYt9EdXJWAqgFsQmEd8eRu7qmO3micdQx+/cvWgO27ZNcckI5fTSGbiwGFM9nZ1r69fiQKFfeP07VlGLboO7FnGgw71sJsJQ1kn3OWPr0QDvO5QYq3jcW4rgYKoZMbLH1cQmgw65J2TrvHgeC0RyiC0pJNumSsUztHahtnlPQ15q/CV8Bt0DoaYnW4wh3OIc5Vtbk8KWXMahdWpCk4wI11EMcpf8Ep1/Uok8MBHPOY3buAbr3fBa7oOqByO3xi+K4a/ElazuzVzjW/rpzJdX11vCKeiZOW9af/+ij2DWDFM2Heun+EvhMa3XtsBu+82ceqHKCzXYa+E53Wj7p9QI+rjZpaKWmu9wXuAi9jP7Uy7Xu1ugp1cTA4CZrczk6cdaCmrJyVuZ+6lWc20nE3ddSx+k4hVbVGYmK0kjLJVxNYKwIYa11k4lyZi0BS0CmzpeCaCUBWziwobYH0wxxq+8GOjkLDd8ja03HlnBhSUpaY5Xq7PUl/HJFUfeKqy+L9Na7BV6LNwmqkUz1rRMpJBDzLCqt7q1BqK7zoSXFb9SgRYk4+X+V0S/bbFauIWC52BOFfM+0NLs7Kw1Ru9VyJq/UjZ+91FzfI8DSLakR2DiNLiwvns9dh+noRHNymphDybVVHgoXj5jv6mSydiRoqrwiLw7t0p15QWgampg9T53kX8Nw4OdzbKStMNJ03yIvMxM3jJiJIg2vgxQ3svj6L8EE42aP2UOdqQx2WSQtBAlerql+j4KhvknjCPtf7jCdPBGv3ePG731v077P7ue4R7kQLyrmD/fQipDBj04IhMzIouEv09iQzodo6lLJCGqFQjfN5jj5LA2mrIBUGh2w5WGaj2zI6VQf0s6F76vnqFZXY7m7DLy0o6IPWnH7mjqzYo9XF1PrjnPnYv33p52l6uTmP32c9OeL1c5qh/5MQs6MrrAOLAXOXsLO/41IMWA57ewxKKujv2LheSt3PbnmsysH3XfjxoKRA3bu+d37kj2Wfnd286pCJQPobL9lr15aA7X/CE7957XnA3tc/+L++YpP1ePWXL9lj96aB7XvQE7967nrkI3EuX02fyzr+6c5c+GyrrK/owLNtT5Qet/m4eWuzjlB8n6XP+Qdtpelz8iKSkruZFw731OH2zq/dK23Dnsy/YNR1XftQSgv7TcCwklzaZSPCPJ04jFoMP4Q1IR/Mc234lpI7ytBvR2Jd+2JUwaOuI/UtB+2LyziRgdJb5QXtebSHYedx6L92O18cPkjf8Okv/Jk9vA9B+1+p68tZjD2m6DYC4fdP0PfeIpaSazpuOe+t56Xm0Xlcd7LG+am/s+FifsH7Pir73Hv2Evb9LLb+j/lZX8D0277nX93inu0sp2PGtrrI0HM61biUNave6EIcB+5sCdnUkoCt0ez4VyIOHXoDGIX3g5d1ZgP7WG//9aJAdOC5xGlHohxedRhKGA1/KxCHf55KAi7LERKQalIpeyLmejPRTNc+L26BY3UNj5vtUcjIUSm8aqZHGAJMLjCC61v6VCaWFdNek2sRO8n4wfWIkjntVKOLYeRoTjjggG79y4HL8cJOSQui5icTKZJqSB1c8RDlT0EU7ErSD0Ff7EzUjDXZgskYUqsp5mf3sBiSTP9YsZy6c+106k21cS/XIaRrAymeXdyY7Wt+o7tD7bN675QzxkJ702GTXNjO7OizRsJhpnNf32tGsH/qbhdz0nc7FDdhn7995Z9I+J1Fi2a6ivw+6v7m4tnvv7Toywx77mIT1fBDGDDLoKKUOp4FEeazy8yQdr9EjIH3Ph0qV1MYE29yLCHRjRk3s8NQLUNXRHb2kH9k1ZigOl6TGvTpC8TIwqUPUmxQMSME+HaV6crBTx5h9C8UuHWUMJGP/DjM94dip48y+hWNn2wQDyTgUh5qefOzIsWbfkrE7RxsD0di3w01PJCY/Mdq3MOzqBMlAFPZ7ktQXhB2eKO1bJg556jiQk6aedEx74rRvedjRCZSBNOz1JKqJp/hQBbqU31q3oRd7klB/7fbbab/xH6+TOYpRgY5mQUED9Tl+HviiZwRxpQNU9EJy1mQ0n6eSH1HgyYmkSBKnVVJbG0RyBzJ0TqP54TIFLoGyJi5giPBeKS/Io2yPvsCZi5TyUNHk56J6nDdhAj9JI394wRNa+5+Ow8cUd38Zc5DLlgvUULf2+giVq7JOENVTpo2D04MZDpl+FcHihHHMjskyh91JFdXBZBivi8bT4zuDfBWy/2kcsj2b4HDbJBF4nTpeRbVG4fCr7yJwmjSOXO+POOg6QYRdpo2Dl6ttDrr8LAImKWqwpUurELpMksGX7rgqVZT+l8IqyiRZFQtq4ztWBeeszdXE5RBVyDmhK8iSWJKkcqSE2botirDbVEkdbYaxnslF5NOvwv7IFcjnDRP5Crgswtp4e0yF9vRN1USt6+eRtLWbTWWuYEy/BRMGkyqeNRijdjU1z5lYSRQ+l0+u+ntZxymhC3yuXvpVVAtOUJhYqpcjhTN9mSKZ30mi6qxeXmZKZvYyUT67k3SV6ax5E080obWJ4imtTleqiDwGJ6yEJkgqwGkKGol5/UygkdhUoUZqMyjWJatlAH8UuP9KFV8Fl0NUWS+TwqKgeWFJsC5o04RLgzpZYRT2dsb8gOxlEI7NTh6lod9spUQaoEmUKIJmI6lQUb11FNVTp0mqKZPHa2le6+LqaFJENVSJPD6zLRKuz2no8iMmF79I56Obd7a4zAIc1yBcYXfyCzYHtFzne3+L3W2GbhPbKN1jLZXE8/4BGiwMSC1o7njgalviO+WZ7SUtR38DNbbrmytt64ALry6pe+hXJsSwoIWyAMRWDeueN9Ai9SfA5riXww3qG5ccepOawLHyVoljy3aVi+ykqVQ1fOp+G92eh0gbLTOZEFqIMKS2H/fbxJ4Jg7yhQ7YOoisrhubqy34bWt3FyxsouqzvENk9e6JE1p/21LReMEdB24bCPQqunhkiyw8DDesfazWlyo8gjRPHLZS0UyHIIdcA9tCsaUD5caDpkrMwCsClwTGiDc83xAFJED+gpu+i15kodDKRlsSpA2zk6GAwaFwn1pqgafJYbH0N2z++rPWs7FyyX75fDqhxncWhuH0DYVL0SNzDalUcOUsqo4MhtqyaO5WAioNEyRq4w43WxA0e3WuNx0uynE13JMDiqD+iBivEB+o2Oe+KMP091KOSS4yyMJcI0fShEDdiFigHxemzQnxHUjOmnzq4fORuPKo1JPMdVi6YoAljgiGLr2AnGXbsMz5OU4hWIj1g0410Ihj7kpsmRgtwOQ5oeKkH4tDnoZKUTcLEnUtiP8aEZACqLaJ0Bx4QC02nYS6IgmweHo62YKd7JlpnsPEC5EcQvHG45apiB+cqXTvmgbbJ7Z1/hOMjYpArbxxnrtshj7m/p7TR33ttDuvtLG2V1CXajFhBKdY8gClZfrZuqsCrV9DWMd9fq4N58Z1xKQS9pAmaK76DGHd0/VGbPHRcr+TWCXRsv0cWjB/na7gwWuvlPTJCftyv4KMHcOy/x6bLFhmjnmiWi419NnlsEaLufPUjC71kkTLmW2S1WNlpc3kHGVFzR9xo+s3t2j3Vja6/DjWdM86qCzeflZtM/GyKiPHlaNI+npQmUdUH/LNIM3+FyC1GnNOvH09utrj0GpW/5iiPVi3ER4yZoKDjO9LkuUyWae3E0qOozlInN+aDhR/6hT/LimjpBwVODlCeR8nq+OirH29xlvP1Iwovk+ttsdkWuMlo/Rh3DhmIK8xQ/R9POJo/Xm+onR5EEzCZEW4Cuk7OtlEcNnRf+HHem9plEOTg7VeUUEtF3JcF/hetXhqkL2miCFSxr3ENukXrTYzB8uvE85+RCW13ObpCKz94wd+fo5DYpspAxjuiy/aP88hfZf46rzDa8vgnluFw/f0//j+EnG02wF8DAA== - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs b/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs deleted file mode 100644 index 6a8bc447..00000000 --- a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class AddChangeableScsiModes : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(AddChangeableScsiModes)); - - string IMigrationMetadata.Id - { - get { return "201901081359499_AddChangeableScsiModes"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs b/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs deleted file mode 100644 index b1900d28..00000000 --- a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class AddChangeableScsiModes : DbMigration - { - public override void Up() - { - AddColumn("dbo.Scsis", "ModeSense6CurrentData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense10CurrentData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense6ChangeableData", c => c.Binary()); - AddColumn("dbo.Scsis", "ModeSense10ChangeableData", c => c.Binary()); - } - - public override void Down() - { - DropColumn("dbo.Scsis", "ModeSense10ChangeableData"); - DropColumn("dbo.Scsis", "ModeSense6ChangeableData"); - DropColumn("dbo.Scsis", "ModeSense10CurrentData"); - DropColumn("dbo.Scsis", "ModeSense6CurrentData"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx b/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx deleted file mode 100644 index 992a39a7..00000000 --- a/DiscImageChef.Server/Migrations/201901081359499_AddChangeableScsiModes.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs b/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs deleted file mode 100644 index 34fb94d1..00000000 --- a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class IdForDensityCode : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(IdForDensityCode)); - - string IMigrationMetadata.Id - { - get { return "201905252122267_IdForDensityCode"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs b/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs deleted file mode 100644 index 91b8896f..00000000 --- a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class IdForDensityCode : DbMigration - { - public override void Up() - { - RenameTable("DensityCodes", "DensityCodes_old"); - - CreateTable("dbo.DensityCodes", - c => new {Code = c.Int(false), SscSupportedMedia_Id = c.Int(), Id = c.Int(false, true)}) - .PrimaryKey(t => t.Id).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - Sql("INSERT INTO DensityCodes (Code, SscSupportedMedia_Id) SELECT Code, SscSupportedMedia_Id FROM DensityCodes_old"); - - DropTable("DensityCodes_old"); - } - - public override void Down() - { - RenameTable("DensityCodes", "DensityCodes_old"); - - CreateTable("dbo.DensityCodes", c => new {Code = c.Int(false, true), SscSupportedMedia_Id = c.Int()}) - .PrimaryKey(t => t.Code).ForeignKey("dbo.SscSupportedMedias", t => t.SscSupportedMedia_Id) - .Index(t => t.SscSupportedMedia_Id); - - Sql("INSERT INTO DensityCodes (Code, SscSupportedMedia_Id) SELECT Code, SscSupportedMedia_Id FROM DensityCodes_old"); - - DropTable("DensityCodes_old"); - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx b/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx deleted file mode 100644 index 42e2995b..00000000 --- a/DiscImageChef.Server/Migrations/201905252122267_IdForDensityCode.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 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 - - - dbo - - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs b/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs deleted file mode 100644 index af276328..00000000 --- a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -namespace DiscImageChef.Server.Migrations -{ - using System.CodeDom.Compiler; - using System.Data.Entity.Migrations; - using System.Data.Entity.Migrations.Infrastructure; - using System.Resources; - - [GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")] - public sealed partial class MakeEntityFrameworkHappy : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(MakeEntityFrameworkHappy)); - - string IMigrationMetadata.Id - { - get { return "201905252245072_MakeEntityFrameworkHappy"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs b/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs deleted file mode 100644 index 597b4f77..00000000 --- a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Data.Entity.Migrations; - -namespace DiscImageChef.Server.Migrations -{ - public partial class MakeEntityFrameworkHappy : DbMigration - { - public override void Up() { } - - public override void Down() { } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx b/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx deleted file mode 100644 index 3974ce03..00000000 --- a/DiscImageChef.Server/Migrations/201905252245072_MakeEntityFrameworkHappy.resx +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -text/microsoft-resx1.3System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=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 - dbo - \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.Designer.cs b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.Designer.cs new file mode 100644 index 00000000..ce57d727 --- /dev/null +++ b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.Designer.cs @@ -0,0 +1,2098 @@ +// +using System; +using DiscImageChef.Server.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace DiscImageChef.Server.Migrations +{ + [DbContext(typeof(DicServerContext))] + [Migration("20191102132240_InitialMigration")] + partial class InitialMigration + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Identify") + .HasColumnType("longblob"); + + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ReadCapabilitiesId"); + + b.ToTable("Ata"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlockLength") + .HasColumnType("int unsigned"); + + b.Property("BlockLengthSql") + .HasColumnType("int"); + + b.Property("Blocks") + .HasColumnType("bigint unsigned"); + + b.Property("BlocksSql") + .HasColumnType("bigint"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("ScsiModeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("BlockDescriptor"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Cylinders") + .HasColumnType("smallint unsigned"); + + b.Property("CylindersSql") + .HasColumnType("smallint"); + + b.Property("Heads") + .HasColumnType("smallint unsigned"); + + b.Property("HeadsSql") + .HasColumnType("smallint"); + + b.Property("Sectors") + .HasColumnType("smallint unsigned"); + + b.Property("SectorsSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Chs"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Code") + .HasColumnType("int"); + + b.Property("SscSupportedMediaId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("SscSupportedMediaId"); + + b.ToTable("DensityCode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductID") + .HasColumnType("int unsigned"); + + b.Property("ProductIDSql") + .HasColumnType("int"); + + b.Property("RemovableMedia") + .HasColumnType("bit"); + + b.Property("VendorID") + .HasColumnType("int unsigned"); + + b.Property("VendorIDSql") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("FireWire"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("FeaturesId") + .HasColumnType("int"); + + b.Property("ModeSense2AData") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.HasIndex("FeaturesId"); + + b.ToTable("Mmc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AACSVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("AGIDs") + .HasColumnType("tinyint unsigned"); + + b.Property("BinaryData") + .HasColumnType("longblob"); + + b.Property("BindingNonceBlocks") + .HasColumnType("tinyint unsigned"); + + b.Property("BlocksPerReadableUnit") + .HasColumnType("smallint unsigned"); + + b.Property("BlocksPerReadableUnitSql") + .HasColumnType("smallint"); + + b.Property("BufferUnderrunFreeInDVD") + .HasColumnType("bit"); + + b.Property("BufferUnderrunFreeInSAO") + .HasColumnType("bit"); + + b.Property("BufferUnderrunFreeInTAO") + .HasColumnType("bit"); + + b.Property("CPRMVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("CSSVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("CanAudioScan") + .HasColumnType("bit"); + + b.Property("CanEject") + .HasColumnType("bit"); + + b.Property("CanEraseSector") + .HasColumnType("bit"); + + b.Property("CanExpandBDRESpareArea") + .HasColumnType("bit"); + + b.Property("CanFormat") + .HasColumnType("bit"); + + b.Property("CanFormatBDREWithoutSpare") + .HasColumnType("bit"); + + b.Property("CanFormatCert") + .HasColumnType("bit"); + + b.Property("CanFormatFRF") + .HasColumnType("bit"); + + b.Property("CanFormatQCert") + .HasColumnType("bit"); + + b.Property("CanFormatRRM") + .HasColumnType("bit"); + + b.Property("CanGenerateBindingNonce") + .HasColumnType("bit"); + + b.Property("CanLoad") + .HasColumnType("bit"); + + b.Property("CanMuteSeparateChannels") + .HasColumnType("bit"); + + b.Property("CanOverwriteSAOTrack") + .HasColumnType("bit"); + + b.Property("CanOverwriteTAOTrack") + .HasColumnType("bit"); + + b.Property("CanPlayCDAudio") + .HasColumnType("bit"); + + b.Property("CanPseudoOverwriteBDR") + .HasColumnType("bit"); + + b.Property("CanReadAllDualR") + .HasColumnType("bit"); + + b.Property("CanReadAllDualRW") + .HasColumnType("bit"); + + b.Property("CanReadBD") + .HasColumnType("bit"); + + b.Property("CanReadBDR") + .HasColumnType("bit"); + + b.Property("CanReadBDRE1") + .HasColumnType("bit"); + + b.Property("CanReadBDRE2") + .HasColumnType("bit"); + + b.Property("CanReadBDROM") + .HasColumnType("bit"); + + b.Property("CanReadBluBCA") + .HasColumnType("bit"); + + b.Property("CanReadCD") + .HasColumnType("bit"); + + b.Property("CanReadCDMRW") + .HasColumnType("bit"); + + b.Property("CanReadCPRM_MKB") + .HasColumnType("bit"); + + b.Property("CanReadDDCD") + .HasColumnType("bit"); + + b.Property("CanReadDVD") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusMRW") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusR") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRDL") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRW") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRWDL") + .HasColumnType("bit"); + + b.Property("CanReadDriveAACSCertificate") + .HasColumnType("bit"); + + b.Property("CanReadHDDVD") + .HasColumnType("bit"); + + b.Property("CanReadHDDVDR") + .HasColumnType("bit"); + + b.Property("CanReadHDDVDRAM") + .HasColumnType("bit"); + + b.Property("CanReadLeadInCDText") + .HasColumnType("bit"); + + b.Property("CanReadOldBDR") + .HasColumnType("bit"); + + b.Property("CanReadOldBDRE") + .HasColumnType("bit"); + + b.Property("CanReadOldBDROM") + .HasColumnType("bit"); + + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); + + b.Property("CanReportDriveSerial") + .HasColumnType("bit"); + + b.Property("CanReportMediaSerial") + .HasColumnType("bit"); + + b.Property("CanTestWriteDDCDR") + .HasColumnType("bit"); + + b.Property("CanTestWriteDVD") + .HasColumnType("bit"); + + b.Property("CanTestWriteInSAO") + .HasColumnType("bit"); + + b.Property("CanTestWriteInTAO") + .HasColumnType("bit"); + + b.Property("CanUpgradeFirmware") + .HasColumnType("bit"); + + b.Property("CanWriteBD") + .HasColumnType("bit"); + + b.Property("CanWriteBDR") + .HasColumnType("bit"); + + b.Property("CanWriteBDRE1") + .HasColumnType("bit"); + + b.Property("CanWriteBDRE2") + .HasColumnType("bit"); + + b.Property("CanWriteBusEncryptedBlocks") + .HasColumnType("bit"); + + b.Property("CanWriteCDMRW") + .HasColumnType("bit"); + + b.Property("CanWriteCDRW") + .HasColumnType("bit"); + + b.Property("CanWriteCDRWCAV") + .HasColumnType("bit"); + + b.Property("CanWriteCDSAO") + .HasColumnType("bit"); + + b.Property("CanWriteCDTAO") + .HasColumnType("bit"); + + b.Property("CanWriteCSSManagedDVD") + .HasColumnType("bit"); + + b.Property("CanWriteDDCDR") + .HasColumnType("bit"); + + b.Property("CanWriteDDCDRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusMRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusR") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRWDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDR") + .HasColumnType("bit"); + + b.Property("CanWriteDVDRDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDRW") + .HasColumnType("bit"); + + b.Property("CanWriteHDDVDR") + .HasColumnType("bit"); + + b.Property("CanWriteHDDVDRAM") + .HasColumnType("bit"); + + b.Property("CanWriteOldBDR") + .HasColumnType("bit"); + + b.Property("CanWriteOldBDRE") + .HasColumnType("bit"); + + b.Property("CanWritePackedSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("CanWriteRWSubchannelInSAO") + .HasColumnType("bit"); + + b.Property("CanWriteRWSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("CanWriteRaw") + .HasColumnType("bit"); + + b.Property("CanWriteRawMultiSession") + .HasColumnType("bit"); + + b.Property("CanWriteRawSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("ChangerIsSideChangeCapable") + .HasColumnType("bit"); + + b.Property("ChangerSlots") + .HasColumnType("tinyint unsigned"); + + b.Property("ChangerSupportsDiscPresent") + .HasColumnType("bit"); + + b.Property("DBML") + .HasColumnType("bit"); + + b.Property("DVDMultiRead") + .HasColumnType("bit"); + + b.Property("EmbeddedChanger") + .HasColumnType("bit"); + + b.Property("ErrorRecoveryPage") + .HasColumnType("bit"); + + b.Property("FirmwareDate") + .HasColumnType("datetime(6)"); + + b.Property("LoadingMechanismType") + .HasColumnType("tinyint unsigned"); + + b.Property("Locked") + .HasColumnType("bit"); + + b.Property("LogicalBlockSize") + .HasColumnType("int unsigned"); + + b.Property("LogicalBlockSizeSql") + .HasColumnType("int"); + + b.Property("MultiRead") + .HasColumnType("bit"); + + b.Property("PhysicalInterfaceStandardNumber") + .HasColumnType("int unsigned"); + + b.Property("PhysicalInterfaceStandardNumberSql") + .HasColumnType("int"); + + b.Property("PreventJumper") + .HasColumnType("bit"); + + b.Property("SupportsAACS") + .HasColumnType("bit"); + + b.Property("SupportsBusEncryption") + .HasColumnType("bit"); + + b.Property("SupportsC2") + .HasColumnType("bit"); + + b.Property("SupportsCPRM") + .HasColumnType("bit"); + + b.Property("SupportsCSS") + .HasColumnType("bit"); + + b.Property("SupportsDAP") + .HasColumnType("bit"); + + b.Property("SupportsDeviceBusyEvent") + .HasColumnType("bit"); + + b.Property("SupportsHybridDiscs") + .HasColumnType("bit"); + + b.Property("SupportsModePage1Ch") + .HasColumnType("bit"); + + b.Property("SupportsOSSC") + .HasColumnType("bit"); + + b.Property("SupportsPWP") + .HasColumnType("bit"); + + b.Property("SupportsSWPP") + .HasColumnType("bit"); + + b.Property("SupportsSecurDisc") + .HasColumnType("bit"); + + b.Property("SupportsSeparateVolume") + .HasColumnType("bit"); + + b.Property("SupportsVCPS") + .HasColumnType("bit"); + + b.Property("SupportsWriteInhibitDCB") + .HasColumnType("bit"); + + b.Property("SupportsWriteProtectPAC") + .HasColumnType("bit"); + + b.Property("VolumeLevels") + .HasColumnType("smallint unsigned"); + + b.Property("VolumeLevelsSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("MmcFeatures"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CID") + .HasColumnType("longblob"); + + b.Property("CSD") + .HasColumnType("longblob"); + + b.Property("ExtendedCSD") + .HasColumnType("longblob"); + + b.Property("OCR") + .HasColumnType("longblob"); + + b.Property("SCR") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.ToTable("MmcSd"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CIS") + .HasColumnType("longblob"); + + b.Property("CardCode") + .HasColumnType("smallint unsigned"); + + b.Property("CardCodeSql") + .HasColumnType("smallint"); + + b.Property("Compliance") + .HasColumnType("longtext"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("ManufacturerCode") + .HasColumnType("smallint unsigned"); + + b.Property("ManufacturerCodeSql") + .HasColumnType("smallint"); + + b.Property("ProductName") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Pcmcia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("InquiryData") + .HasColumnType("longblob"); + + b.Property("ModeSense10ChangeableData") + .HasColumnType("longblob"); + + b.Property("ModeSense10CurrentData") + .HasColumnType("longblob"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6ChangeableData") + .HasColumnType("longblob"); + + b.Property("ModeSense6CurrentData") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("ModeSenseId") + .HasColumnType("int"); + + b.Property("MultiMediaDeviceId") + .HasColumnType("int"); + + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); + + b.Property("SequentialDeviceId") + .HasColumnType("int"); + + b.Property("SupportsModeSense10") + .HasColumnType("bit"); + + b.Property("SupportsModeSense6") + .HasColumnType("bit"); + + b.Property("SupportsModeSubpages") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("ModeSenseId"); + + b.HasIndex("MultiMediaDeviceId"); + + b.HasIndex("ReadCapabilitiesId"); + + b.HasIndex("SequentialDeviceId"); + + b.ToTable("Scsi"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlankCheckEnabled") + .HasColumnType("bit"); + + b.Property("BufferedMode") + .HasColumnType("tinyint unsigned"); + + b.Property("DPOandFUA") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("Speed") + .HasColumnType("tinyint unsigned"); + + b.Property("WriteProtected") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.ToTable("ScsiMode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ScsiId") + .HasColumnType("int"); + + b.Property("ScsiModeId") + .HasColumnType("int"); + + b.Property("page") + .HasColumnType("tinyint unsigned"); + + b.Property("subpage") + .HasColumnType("tinyint unsigned"); + + b.Property("value") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.HasIndex("ScsiId"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("ScsiPage"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlockSizeGranularity") + .HasColumnType("tinyint unsigned"); + + b.Property("MaxBlockLength") + .HasColumnType("int unsigned"); + + b.Property("MaxBlockLengthSql") + .HasColumnType("int"); + + b.Property("MinBlockLength") + .HasColumnType("int unsigned"); + + b.Property("MinBlockLengthSql") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Ssc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Length") + .HasColumnType("smallint unsigned"); + + b.Property("LengthSql") + .HasColumnType("smallint"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Organization") + .HasColumnType("longtext"); + + b.Property("SscId") + .HasColumnType("int"); + + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); + + b.Property("Width") + .HasColumnType("smallint unsigned"); + + b.Property("WidthSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SscSupportedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BitsPerMm") + .HasColumnType("int unsigned"); + + b.Property("BitsPerMmSql") + .HasColumnType("int"); + + b.Property("Capacity") + .HasColumnType("int unsigned"); + + b.Property("CapacitySql") + .HasColumnType("int"); + + b.Property("DefaultDensity") + .HasColumnType("bit"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Duplicate") + .HasColumnType("bit"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Organization") + .HasColumnType("longtext"); + + b.Property("PrimaryCode") + .HasColumnType("tinyint unsigned"); + + b.Property("SecondaryCode") + .HasColumnType("tinyint unsigned"); + + b.Property("SscId") + .HasColumnType("int"); + + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); + + b.Property("Tracks") + .HasColumnType("smallint unsigned"); + + b.Property("TracksSql") + .HasColumnType("smallint"); + + b.Property("Width") + .HasColumnType("smallint unsigned"); + + b.Property("WidthSql") + .HasColumnType("smallint"); + + b.Property("Writable") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SupportedDensity"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AdipData") + .HasColumnType("longblob"); + + b.Property("AtaId") + .HasColumnType("int"); + + b.Property("AtipData") + .HasColumnType("longblob"); + + b.Property("BlockSize") + .HasColumnType("int unsigned"); + + b.Property("BlockSizeSql") + .HasColumnType("int"); + + b.Property("Blocks") + .HasColumnType("bigint unsigned"); + + b.Property("BlocksSql") + .HasColumnType("bigint"); + + b.Property("BluBcaData") + .HasColumnType("longblob"); + + b.Property("BluDdsData") + .HasColumnType("longblob"); + + b.Property("BluDiData") + .HasColumnType("longblob"); + + b.Property("BluPacData") + .HasColumnType("longblob"); + + b.Property("BluSaiData") + .HasColumnType("longblob"); + + b.Property("C2PointersData") + .HasColumnType("longblob"); + + b.Property("CHSId") + .HasColumnType("int"); + + b.Property("CanReadAACS") + .HasColumnType("bit"); + + b.Property("CanReadADIP") + .HasColumnType("bit"); + + b.Property("CanReadATIP") + .HasColumnType("bit"); + + b.Property("CanReadBCA") + .HasColumnType("bit"); + + b.Property("CanReadC2Pointers") + .HasColumnType("bit"); + + b.Property("CanReadCMI") + .HasColumnType("bit"); + + b.Property("CanReadCorrectedSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadCorrectedSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadDCB") + .HasColumnType("bit"); + + b.Property("CanReadDDS") + .HasColumnType("bit"); + + b.Property("CanReadDMI") + .HasColumnType("bit"); + + b.Property("CanReadDiscInformation") + .HasColumnType("bit"); + + b.Property("CanReadFirstTrackPreGap") + .HasColumnType("bit"); + + b.Property("CanReadFullTOC") + .HasColumnType("bit"); + + b.Property("CanReadHDCMI") + .HasColumnType("bit"); + + b.Property("CanReadLayerCapacity") + .HasColumnType("bit"); + + b.Property("CanReadLeadIn") + .HasColumnType("bit"); + + b.Property("CanReadLeadOut") + .HasColumnType("bit"); + + b.Property("CanReadMediaID") + .HasColumnType("bit"); + + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); + + b.Property("CanReadPAC") + .HasColumnType("bit"); + + b.Property("CanReadPFI") + .HasColumnType("bit"); + + b.Property("CanReadPMA") + .HasColumnType("bit"); + + b.Property("CanReadPQSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadPQSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadPRI") + .HasColumnType("bit"); + + b.Property("CanReadRWSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadRWSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadRecordablePFI") + .HasColumnType("bit"); + + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); + + b.Property("CanReadTOC") + .HasColumnType("bit"); + + b.Property("CanReadingIntersessionLeadIn") + .HasColumnType("bit"); + + b.Property("CanReadingIntersessionLeadOut") + .HasColumnType("bit"); + + b.Property("CmiData") + .HasColumnType("longblob"); + + b.Property("CorrectedSubchannelData") + .HasColumnType("longblob"); + + b.Property("CorrectedSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("CurrentCHSId") + .HasColumnType("int"); + + b.Property("DcbData") + .HasColumnType("longblob"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("DmiData") + .HasColumnType("longblob"); + + b.Property("DvdAacsData") + .HasColumnType("longblob"); + + b.Property("DvdBcaData") + .HasColumnType("longblob"); + + b.Property("DvdDdsData") + .HasColumnType("longblob"); + + b.Property("DvdLayerData") + .HasColumnType("longblob"); + + b.Property("DvdSaiData") + .HasColumnType("longblob"); + + b.Property("EmbossedPfiData") + .HasColumnType("longblob"); + + b.Property("FullTocData") + .HasColumnType("longblob"); + + b.Property("HLDTSTReadRawDVDData") + .HasColumnType("longblob"); + + b.Property("HdCmiData") + .HasColumnType("longblob"); + + b.Property("IdentifyData") + .HasColumnType("longblob"); + + b.Property("IntersessionLeadInData") + .HasColumnType("longblob"); + + b.Property("IntersessionLeadOutData") + .HasColumnType("longblob"); + + b.Property("LBA48Sectors") + .HasColumnType("bigint unsigned"); + + b.Property("LBA48SectorsSql") + .HasColumnType("bigint"); + + b.Property("LBASectors") + .HasColumnType("int unsigned"); + + b.Property("LBASectorsSql") + .HasColumnType("int"); + + b.Property("LeadInData") + .HasColumnType("longblob"); + + b.Property("LeadOutData") + .HasColumnType("longblob"); + + b.Property("LogicalAlignment") + .HasColumnType("smallint unsigned"); + + b.Property("LogicalAlignmentSql") + .HasColumnType("smallint"); + + b.Property("LongBlockSize") + .HasColumnType("int unsigned"); + + b.Property("LongBlockSizeSql") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("MediaIsRecognized") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("MediumTypeName") + .HasColumnType("longtext"); + + b.Property("MmcId") + .HasColumnType("int"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("NecReadCddaData") + .HasColumnType("longblob"); + + b.Property("NominalRotationRate") + .HasColumnType("smallint unsigned"); + + b.Property("NominalRotationRateSql") + .HasColumnType("smallint"); + + b.Property("PQSubchannelData") + .HasColumnType("longblob"); + + b.Property("PQSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("PfiData") + .HasColumnType("longblob"); + + b.Property("PhysicalBlockSize") + .HasColumnType("int unsigned"); + + b.Property("PhysicalBlockSizeSql") + .HasColumnType("int"); + + b.Property("PioneerReadCddaData") + .HasColumnType("longblob"); + + b.Property("PioneerReadCddaMsfData") + .HasColumnType("longblob"); + + b.Property("PlextorReadCddaData") + .HasColumnType("longblob"); + + b.Property("PlextorReadRawDVDData") + .HasColumnType("longblob"); + + b.Property("PmaData") + .HasColumnType("longblob"); + + b.Property("PriData") + .HasColumnType("longblob"); + + b.Property("RWSubchannelData") + .HasColumnType("longblob"); + + b.Property("RWSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("Read10Data") + .HasColumnType("longblob"); + + b.Property("Read12Data") + .HasColumnType("longblob"); + + b.Property("Read16Data") + .HasColumnType("longblob"); + + b.Property("Read6Data") + .HasColumnType("longblob"); + + b.Property("ReadCdData") + .HasColumnType("longblob"); + + b.Property("ReadCdFullData") + .HasColumnType("longblob"); + + b.Property("ReadCdMsfData") + .HasColumnType("longblob"); + + b.Property("ReadCdMsfFullData") + .HasColumnType("longblob"); + + b.Property("ReadDmaData") + .HasColumnType("longblob"); + + b.Property("ReadDmaLba48Data") + .HasColumnType("longblob"); + + b.Property("ReadDmaLbaData") + .HasColumnType("longblob"); + + b.Property("ReadDmaRetryData") + .HasColumnType("longblob"); + + b.Property("ReadDmaRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLba48Data") + .HasColumnType("longblob"); + + b.Property("ReadLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLong10Data") + .HasColumnType("longblob"); + + b.Property("ReadLong16Data") + .HasColumnType("longblob"); + + b.Property("ReadLongData") + .HasColumnType("longblob"); + + b.Property("ReadLongLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLongRetryData") + .HasColumnType("longblob"); + + b.Property("ReadLongRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadSectorsData") + .HasColumnType("longblob"); + + b.Property("ReadSectorsRetryData") + .HasColumnType("longblob"); + + b.Property("ScsiId") + .HasColumnType("int"); + + b.Property("SolidStateDevice") + .HasColumnType("bit"); + + b.Property("SupportsHLDTSTReadRawDVD") + .HasColumnType("bit"); + + b.Property("SupportsNECReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPioneerReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPioneerReadCDDAMSF") + .HasColumnType("bit"); + + b.Property("SupportsPlextorReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPlextorReadRawDVD") + .HasColumnType("bit"); + + b.Property("SupportsRead10") + .HasColumnType("bit"); + + b.Property("SupportsRead12") + .HasColumnType("bit"); + + b.Property("SupportsRead16") + .HasColumnType("bit"); + + b.Property("SupportsRead6") + .HasColumnType("bit"); + + b.Property("SupportsReadCapacity") + .HasColumnType("bit"); + + b.Property("SupportsReadCapacity16") + .HasColumnType("bit"); + + b.Property("SupportsReadCd") + .HasColumnType("bit"); + + b.Property("SupportsReadCdMsf") + .HasColumnType("bit"); + + b.Property("SupportsReadCdMsfRaw") + .HasColumnType("bit"); + + b.Property("SupportsReadCdRaw") + .HasColumnType("bit"); + + b.Property("SupportsReadDma") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaLba") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaLba48") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLba48") + .HasColumnType("bit"); + + b.Property("SupportsReadLong") + .HasColumnType("bit"); + + b.Property("SupportsReadLong16") + .HasColumnType("bit"); + + b.Property("SupportsReadLongLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLongRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadLongRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadSectors") + .HasColumnType("bit"); + + b.Property("SupportsSeek") + .HasColumnType("bit"); + + b.Property("SupportsSeekLba") + .HasColumnType("bit"); + + b.Property("TocData") + .HasColumnType("longblob"); + + b.Property("Track1PregapData") + .HasColumnType("longblob"); + + b.Property("UnformattedBPS") + .HasColumnType("smallint unsigned"); + + b.Property("UnformattedBPSSql") + .HasColumnType("smallint"); + + b.Property("UnformattedBPT") + .HasColumnType("smallint unsigned"); + + b.Property("UnformattedBPTSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.HasIndex("AtaId"); + + b.HasIndex("CHSId"); + + b.HasIndex("CurrentCHSId"); + + b.HasIndex("MmcId"); + + b.HasIndex("ScsiId"); + + b.ToTable("TestedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("MediaIsRecognized") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("MediumTypeName") + .HasColumnType("longtext"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("SscId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.ToTable("TestedSequentialMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Descriptors") + .HasColumnType("longblob"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductID") + .HasColumnType("smallint unsigned"); + + b.Property("ProductIDSql") + .HasColumnType("smallint"); + + b.Property("RemovableMedia") + .HasColumnType("bit"); + + b.Property("VendorID") + .HasColumnType("smallint unsigned"); + + b.Property("VendorIDSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Usb"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Commands"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.CompactDiscOffset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Agreement") + .HasColumnType("float"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Offset") + .HasColumnType("smallint"); + + b.Property("Submissions") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.ToTable("CdOffsets"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ATAId") + .HasColumnType("int"); + + b.Property("ATAPIId") + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("CdOffsetId") + .HasColumnType("int"); + + b.Property("CompactFlash") + .HasColumnType("bit"); + + b.Property("FireWireId") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("MultiMediaCardId") + .HasColumnType("int"); + + b.Property("OptimalMultipleSectorsRead") + .HasColumnType("int"); + + b.Property("PCMCIAId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.Property("SCSIId") + .HasColumnType("int"); + + b.Property("SecureDigitalId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("USBId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("CdOffsetId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Bus") + .HasColumnType("longtext"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ReportId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ReportId"); + + b.ToTable("DeviceStats"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Filesystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Filesystems"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Filters"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Media", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Real") + .HasColumnType("bit"); + + b.Property("Type") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Medias"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.MediaFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("MediaFormats"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.OperatingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Version") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("OperatingSystems"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Partition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Partitions"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ATAId") + .HasColumnType("int"); + + b.Property("ATAPIId") + .HasColumnType("int"); + + b.Property("CompactFlash") + .HasColumnType("bit"); + + b.Property("FireWireId") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("MultiMediaCardId") + .HasColumnType("int"); + + b.Property("PCMCIAId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.Property("SCSIId") + .HasColumnType("int"); + + b.Property("SecureDigitalId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("USBId") + .HasColumnType("int"); + + b.Property("UploadedWhen") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Reports"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("VendorId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("ProductId"); + + b.HasIndex("VendorId"); + + b.ToTable("UsbProducts"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbVendor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Vendor") + .HasColumnType("longtext"); + + b.Property("VendorId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("VendorId") + .IsUnique(); + + b.ToTable("UsbVendors"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Version", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Versions"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", null) + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") + .WithMany() + .HasForeignKey("FeaturesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") + .WithMany() + .HasForeignKey("MultiMediaDeviceId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", null) + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") + .WithMany() + .HasForeignKey("CHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", null) + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.Server.Models.CompactDiscOffset", "CdOffset") + .WithMany("Devices") + .HasForeignKey("CdOffsetId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => + { + b.HasOne("DiscImageChef.Server.Models.Device", "Report") + .WithMany() + .HasForeignKey("ReportId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => + { + b.HasOne("DiscImageChef.Server.Models.UsbVendor", "Vendor") + .WithMany("Products") + .HasForeignKey("VendorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs new file mode 100644 index 00000000..ba536db9 --- /dev/null +++ b/DiscImageChef.Server/Migrations/20191102132240_InitialMigration.cs @@ -0,0 +1,2529 @@ +using System; +using DiscImageChef.Server.Models; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace DiscImageChef.Server.Migrations +{ + public partial class InitialMigration : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + #region Check for old tables + var AtasExists = DicServerContext.TableExists("Atas"); + var BlockDescriptorsExists = DicServerContext.TableExists("BlockDescriptors"); + var ChsExists = DicServerContext.TableExists("Chs"); + var CommandsExists = DicServerContext.TableExists("Commands"); + var CompactDiscOffsetsExists = DicServerContext.TableExists("CompactDiscOffsets"); + var DensityCodesExists = DicServerContext.TableExists("DensityCodes"); + var DevicesExists = DicServerContext.TableExists("Devices"); + var DeviceStatsExists = DicServerContext.TableExists("DeviceStats"); + var FilesystemsExists = DicServerContext.TableExists("Filesystems"); + var FiltersExists = DicServerContext.TableExists("Filters"); + var FireWiresExists = DicServerContext.TableExists("FireWires"); + var MediaExists = DicServerContext.TableExists("Media"); + var MediaFormatsExists = DicServerContext.TableExists("MediaFormats"); + var MmcFeaturesExists = DicServerContext.TableExists("MmcFeatures"); + var MmcsExists = DicServerContext.TableExists("Mmcs"); + var MmcSdsExists = DicServerContext.TableExists("MmcSds"); + var OperatingSystemsExists = DicServerContext.TableExists("OperatingSystems"); + var PartitionsExists = DicServerContext.TableExists("Partitions"); + var PcmciasExists = DicServerContext.TableExists("Pcmcias"); + var ScsiModesExists = DicServerContext.TableExists("ScsiModes"); + var ScsiPagesExists = DicServerContext.TableExists("ScsiPages"); + var ScsisExists = DicServerContext.TableExists("Scsis"); + var SscsExists = DicServerContext.TableExists("Sscs"); + var SscSupportedMediasExists = DicServerContext.TableExists("SscSupportedMedias"); + var SupportedDensitiesExists = DicServerContext.TableExists("SupportedDensities"); + var TestedMediasExists = DicServerContext.TableExists("TestedMedias"); + var TestedSequentialMediasExists = DicServerContext.TableExists("TestedSequentialMedias"); + var UploadedReportsExists = DicServerContext.TableExists("UploadedReports"); + var UsbProductsExists = DicServerContext.TableExists("UsbProducts"); + var UsbsExists = DicServerContext.TableExists("Usbs"); + var UsbVendorsExists = DicServerContext.TableExists("UsbVendors"); + var VersionsExists = DicServerContext.TableExists("Versions"); + var EFExists = DicServerContext.TableExists("__MigrationHistory"); + #endregion + + #region Drop old restrictions + if(AtasExists) + migrationBuilder.DropForeignKey("FK_Atas_TestedMedias_ReadCapabilities_Id", "Atas"); + if (BlockDescriptorsExists) + migrationBuilder.DropForeignKey("FK_BlockDescriptors_ScsiModes_ScsiMode_Id", "BlockDescriptors"); + if (DensityCodesExists) + migrationBuilder.DropForeignKey( + "FK_DensityCodes_SscSupportedMedias_SscSupportedMedia_Id", "DensityCodes"); + if (DevicesExists) + { + migrationBuilder.DropForeignKey( + "FK_Devices_Atas_ATA_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_Atas_ATAPI_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_CompactDiscOffsets_CdOffset_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_FireWires_FireWire_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_MmcSds_MultiMediaCard_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_MmcSds_SecureDigital_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_Pcmcias_PCMCIA_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_Scsis_SCSI_Id", "Devices"); + migrationBuilder.DropForeignKey( + "FK_Devices_Usbs_USB_Id", "Devices"); + } + if (DeviceStatsExists) + migrationBuilder.DropForeignKey( + "FK_DeviceStats_Devices_Report_Id", "DeviceStats"); + if (MmcsExists) + migrationBuilder.DropForeignKey( + "FK_Mmcs_MmcFeatures_Features_Id", "Mmcs"); + if (ScsiPagesExists) + { + migrationBuilder.DropForeignKey( + "FK_ScsiPages_ScsiModes_ScsiMode_Id","ScsiPages"); + migrationBuilder.DropForeignKey( + "FK_ScsiPages_Scsis_Scsi_Id","ScsiPages"); + } + if (ScsisExists) + { + migrationBuilder.DropForeignKey( + "FK_Scsis_Mmcs_MultiMediaDevice_Id","Scsis"); + migrationBuilder.DropForeignKey( + "FK_Scsis_ScsiModes_ModeSense_Id","Scsis"); + migrationBuilder.DropForeignKey( + "FK_Scsis_Sscs_SequentialDevice_Id","Scsis"); + migrationBuilder.DropForeignKey( + "FK_Scsis_TestedMedias_ReadCapabilities_Id","Scsis"); + } + if (SscSupportedMediasExists) + { + migrationBuilder.DropForeignKey( + "FK_a812ec60296b45bcb3d245a5c6d01d73","SscSupportedMedias"); + migrationBuilder.DropForeignKey( + "FK_SscSupportedMedias_Sscs_Ssc_Id","SscSupportedMedias"); + } + if (SupportedDensitiesExists) + { + migrationBuilder.DropForeignKey( + "FK_783f1b3552774280af1caf44fb27e285","SupportedDensities"); + migrationBuilder.DropForeignKey( + "FK_SupportedDensities_Sscs_Ssc_Id","SupportedDensities"); + } + if (TestedMediasExists) + { + migrationBuilder.DropForeignKey( + "FK_TestedMedias_Atas_Ata_Id","TestedMedias"); + migrationBuilder.DropForeignKey( + "FK_TestedMedias_Chs_CHS_Id","TestedMedias"); + migrationBuilder.DropForeignKey( + "FK_TestedMedias_Chs_CurrentCHS_Id","TestedMedias"); + migrationBuilder.DropForeignKey( + "FK_TestedMedias_Mmcs_Mmc_Id","TestedMedias"); + migrationBuilder.DropForeignKey( + "FK_TestedMedias_Scsis_Scsi_Id","TestedMedias"); + } + if (TestedSequentialMediasExists) + migrationBuilder.DropForeignKey( + "FK_TestedSequentialMedias_Sscs_Ssc_Id","TestedSequentialMedias"); + if (UploadedReportsExists) + { + migrationBuilder.DropForeignKey( + "FK_UploadedReports_Atas_ATA_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_Atas_ATAPI_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_FireWires_FireWire_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_MmcSds_MultiMediaCard_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_MmcSds_SecureDigital_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_Pcmcias_PCMCIA_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_Scsis_SCSI_Id","UploadedReports"); + migrationBuilder.DropForeignKey( + "FK_UploadedReports_Usbs_USB_Id","UploadedReports"); + } + if (UsbProductsExists) + migrationBuilder.DropForeignKey( + "FK_UsbProducts_UsbVendors_VendorId","UsbProducts"); + #endregion + + #region TABLE: CdOffsets + migrationBuilder.CreateTable( + name: "CdOffsets", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Manufacturer = table.Column(nullable: true), + Model = table.Column(nullable: true), + Offset = table.Column(nullable: false), + Submissions = table.Column(nullable: false), + Agreement = table.Column(nullable: false), + AddedWhen = table.Column(nullable: false), + ModifiedWhen = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CdOffsets", x => x.Id); + }); + + if (CompactDiscOffsetsExists) + { + migrationBuilder.Sql("INSERT INTO CdOffsets (Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen) SELECT Id, Manufacturer, Model, Offset, Submissions, Agreement, AddedWhen, ModifiedWhen FROM CompactDiscOffsets"); + migrationBuilder.DropTable("CompactDiscOffsets"); + } + #endregion + + #region TABLE: Chs + if (ChsExists) + migrationBuilder.RenameTable(name: "Chs", newName: "Chs_old"); + + migrationBuilder.CreateTable( + name: "Chs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Cylinders = table.Column(nullable: false), + Heads = table.Column(nullable: false), + Sectors = table.Column(nullable: false), + CylindersSql = table.Column(nullable: false), + HeadsSql = table.Column(nullable: false), + SectorsSql = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Chs", x => x.Id); + }); + + if (ChsExists) + { + migrationBuilder.Sql( + "INSERT INTO Chs (Id, Cylinders, Heads, Sectors, CylindersSql, HeadsSql, SectorsSql) SELECT Id, CylindersSql AS Cylinders, HeadsSql AS Heads, SectorsSql AS Sectors, CylindersSql, HeadsSql, SectorsSql FROM Chs_old"); + migrationBuilder.DropTable("Chs_old"); + } + #endregion + + #region TABLE: Commands + if (CommandsExists) + migrationBuilder.RenameTable(name: "Commands", newName: "Commands_old"); + + migrationBuilder.CreateTable( + name: "Commands", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Commands", x => x.Id); + }); + + if (CommandsExists) + { + migrationBuilder.Sql( + "INSERT INTO Commands (Id, Name, Count) SELECT Id, Name, Count FROM Commands_old"); + migrationBuilder.DropTable("Commands_old"); + } + #endregion + + #region TABLE: Filesystems + if (FilesystemsExists) + migrationBuilder.RenameTable(name: "Filesystems", newName: "Filesystems_old"); + + migrationBuilder.CreateTable( + name: "Filesystems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Filesystems", x => x.Id); + }); + + if (FilesystemsExists) + { + migrationBuilder.Sql( + "INSERT INTO Filesystems (Id, Name, Count) SELECT Id, Name, Count FROM Filesystems_old"); + migrationBuilder.DropTable("Filesystems_old"); + } + #endregion + + #region TABLE: Filters + if (FiltersExists) + migrationBuilder.RenameTable(name: "Filters", newName: "Filters_old"); + + migrationBuilder.CreateTable( + name: "Filters", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Filters", x => x.Id); + }); + + if (FiltersExists) + { + migrationBuilder.Sql( + "INSERT INTO Filters (Id, Name, Count) SELECT Id, Name, Count FROM Filters_old"); + migrationBuilder.DropTable("Filters_old"); + } + #endregion + + #region TABLE: FireWire + migrationBuilder.CreateTable( + name: "FireWire", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VendorID = table.Column(nullable: false), + ProductID = table.Column(nullable: false), + Manufacturer = table.Column(nullable: true), + Product = table.Column(nullable: true), + RemovableMedia = table.Column(nullable: false), + VendorIDSql = table.Column(nullable: false), + ProductIDSql = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FireWire", x => x.Id); + }); + + if (FireWiresExists) + { + migrationBuilder.Sql( + "INSERT INTO FireWire (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, VendorIDSql, ProductIDSql FROM FireWires"); + migrationBuilder.DropTable("FireWires"); + } + #endregion + + #region TABLE: MediaFormats + if (MediaFormatsExists) + migrationBuilder.RenameTable(name: "MediaFormats", newName: "MediaFormats_old"); + + migrationBuilder.CreateTable( + name: "MediaFormats", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_MediaFormats", x => x.Id); + }); + + if (MediaFormatsExists) + { + migrationBuilder.Sql( + "INSERT INTO MediaFormats (Id, Name, Count) SELECT Id, Name, Count FROM MediaFormats_old"); + migrationBuilder.DropTable("MediaFormats_old"); + } + #endregion + + #region TABLE: Medias + migrationBuilder.CreateTable( + name: "Medias", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: true), + Real = table.Column(nullable: false), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Medias", x => x.Id); + }); + + if (MediaExists) + { + migrationBuilder.Sql( + "INSERT INTO Medias (`Id`, `Type`, `Real`, `Count`) SELECT `Id`, `Type`, `Real`, `Count` FROM Media"); + migrationBuilder.DropTable("Media"); + } + #endregion + + #region TABLE: MmcFeatures + if (MmcFeaturesExists) + migrationBuilder.RenameTable(name: "MmcFeatures", newName: "MmcFeatures_old"); + + migrationBuilder.CreateTable( + name: "MmcFeatures", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + AACSVersion = table.Column(nullable: true), + AGIDs = table.Column(nullable: true), + BindingNonceBlocks = table.Column(nullable: true), + BlocksPerReadableUnit = table.Column(nullable: true), + BufferUnderrunFreeInDVD = table.Column(nullable: false), + BufferUnderrunFreeInSAO = table.Column(nullable: false), + BufferUnderrunFreeInTAO = table.Column(nullable: false), + CanAudioScan = table.Column(nullable: false), + CanEject = table.Column(nullable: false), + CanEraseSector = table.Column(nullable: false), + CanExpandBDRESpareArea = table.Column(nullable: false), + CanFormat = table.Column(nullable: false), + CanFormatBDREWithoutSpare = table.Column(nullable: false), + CanFormatCert = table.Column(nullable: false), + CanFormatFRF = table.Column(nullable: false), + CanFormatQCert = table.Column(nullable: false), + CanFormatRRM = table.Column(nullable: false), + CanGenerateBindingNonce = table.Column(nullable: false), + CanLoad = table.Column(nullable: false), + CanMuteSeparateChannels = table.Column(nullable: false), + CanOverwriteSAOTrack = table.Column(nullable: false), + CanOverwriteTAOTrack = table.Column(nullable: false), + CanPlayCDAudio = table.Column(nullable: false), + CanPseudoOverwriteBDR = table.Column(nullable: false), + CanReadAllDualR = table.Column(nullable: false), + CanReadAllDualRW = table.Column(nullable: false), + CanReadBD = table.Column(nullable: false), + CanReadBDR = table.Column(nullable: false), + CanReadBDRE1 = table.Column(nullable: false), + CanReadBDRE2 = table.Column(nullable: false), + CanReadBDROM = table.Column(nullable: false), + CanReadBluBCA = table.Column(nullable: false), + CanReadCD = table.Column(nullable: false), + CanReadCDMRW = table.Column(nullable: false), + CanReadCPRM_MKB = table.Column(nullable: false), + CanReadDDCD = table.Column(nullable: false), + CanReadDVD = table.Column(nullable: false), + CanReadDVDPlusMRW = table.Column(nullable: false), + CanReadDVDPlusR = table.Column(nullable: false), + CanReadDVDPlusRDL = table.Column(nullable: false), + CanReadDVDPlusRW = table.Column(nullable: false), + CanReadDVDPlusRWDL = table.Column(nullable: false), + CanReadDriveAACSCertificate = table.Column(nullable: false), + CanReadHDDVD = table.Column(nullable: false), + CanReadHDDVDR = table.Column(nullable: false), + CanReadHDDVDRAM = table.Column(nullable: false), + CanReadLeadInCDText = table.Column(nullable: false), + CanReadOldBDR = table.Column(nullable: false), + CanReadOldBDRE = table.Column(nullable: false), + CanReadOldBDROM = table.Column(nullable: false), + CanReadSpareAreaInformation = table.Column(nullable: false), + CanReportDriveSerial = table.Column(nullable: false), + CanReportMediaSerial = table.Column(nullable: false), + CanTestWriteDDCDR = table.Column(nullable: false), + CanTestWriteDVD = table.Column(nullable: false), + CanTestWriteInSAO = table.Column(nullable: false), + CanTestWriteInTAO = table.Column(nullable: false), + CanUpgradeFirmware = table.Column(nullable: false), + CanWriteBD = table.Column(nullable: false), + CanWriteBDR = table.Column(nullable: false), + CanWriteBDRE1 = table.Column(nullable: false), + CanWriteBDRE2 = table.Column(nullable: false), + CanWriteBusEncryptedBlocks = table.Column(nullable: false), + CanWriteCDMRW = table.Column(nullable: false), + CanWriteCDRW = table.Column(nullable: false), + CanWriteCDRWCAV = table.Column(nullable: false), + CanWriteCDSAO = table.Column(nullable: false), + CanWriteCDTAO = table.Column(nullable: false), + CanWriteCSSManagedDVD = table.Column(nullable: false), + CanWriteDDCDR = table.Column(nullable: false), + CanWriteDDCDRW = table.Column(nullable: false), + CanWriteDVDPlusMRW = table.Column(nullable: false), + CanWriteDVDPlusR = table.Column(nullable: false), + CanWriteDVDPlusRDL = table.Column(nullable: false), + CanWriteDVDPlusRW = table.Column(nullable: false), + CanWriteDVDPlusRWDL = table.Column(nullable: false), + CanWriteDVDR = table.Column(nullable: false), + CanWriteDVDRDL = table.Column(nullable: false), + CanWriteDVDRW = table.Column(nullable: false), + CanWriteHDDVDR = table.Column(nullable: false), + CanWriteHDDVDRAM = table.Column(nullable: false), + CanWriteOldBDR = table.Column(nullable: false), + CanWriteOldBDRE = table.Column(nullable: false), + CanWritePackedSubchannelInTAO = table.Column(nullable: false), + CanWriteRWSubchannelInSAO = table.Column(nullable: false), + CanWriteRWSubchannelInTAO = table.Column(nullable: false), + CanWriteRaw = table.Column(nullable: false), + CanWriteRawMultiSession = table.Column(nullable: false), + CanWriteRawSubchannelInTAO = table.Column(nullable: false), + ChangerIsSideChangeCapable = table.Column(nullable: false), + ChangerSlots = table.Column(nullable: false), + ChangerSupportsDiscPresent = table.Column(nullable: false), + CPRMVersion = table.Column(nullable: true), + CSSVersion = table.Column(nullable: true), + DBML = table.Column(nullable: false), + DVDMultiRead = table.Column(nullable: false), + EmbeddedChanger = table.Column(nullable: false), + ErrorRecoveryPage = table.Column(nullable: false), + FirmwareDate = table.Column(nullable: true), + LoadingMechanismType = table.Column(nullable: true), + Locked = table.Column(nullable: false), + LogicalBlockSize = table.Column(nullable: true), + MultiRead = table.Column(nullable: false), + PhysicalInterfaceStandardNumber = table.Column(nullable: true), + PreventJumper = table.Column(nullable: false), + SupportsAACS = table.Column(nullable: false), + SupportsBusEncryption = table.Column(nullable: false), + SupportsC2 = table.Column(nullable: false), + SupportsCPRM = table.Column(nullable: false), + SupportsCSS = table.Column(nullable: false), + SupportsDAP = table.Column(nullable: false), + SupportsDeviceBusyEvent = table.Column(nullable: false), + SupportsHybridDiscs = table.Column(nullable: false), + SupportsModePage1Ch = table.Column(nullable: false), + SupportsOSSC = table.Column(nullable: false), + SupportsPWP = table.Column(nullable: false), + SupportsSWPP = table.Column(nullable: false), + SupportsSecurDisc = table.Column(nullable: false), + SupportsSeparateVolume = table.Column(nullable: false), + SupportsVCPS = table.Column(nullable: false), + SupportsWriteInhibitDCB = table.Column(nullable: false), + SupportsWriteProtectPAC = table.Column(nullable: false), + VolumeLevels = table.Column(nullable: true), + BinaryData = table.Column(nullable: true), + BlocksPerReadableUnitSql = table.Column(nullable: true), + LogicalBlockSizeSql = table.Column(nullable: true), + PhysicalInterfaceStandardNumberSql = table.Column(nullable: true), + VolumeLevelsSql = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MmcFeatures", x => x.Id); + }); + + if (MmcFeaturesExists) + { + migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, +AGIDs, +BindingNonceBlocks, +BlocksPerReadableUnit, +BufferUnderrunFreeInDVD, +BufferUnderrunFreeInSAO, +BufferUnderrunFreeInTAO, +CanAudioScan, +CanEject, +CanEraseSector, +CanExpandBDRESpareArea, +CanFormat, +CanFormatBDREWithoutSpare, +CanFormatCert, +CanFormatFRF, +CanFormatQCert, +CanFormatRRM, +CanGenerateBindingNonce, +CanLoad, +CanMuteSeparateChannels, +CanOverwriteSAOTrack, +CanOverwriteTAOTrack, +CanPlayCDAudio, +CanPseudoOverwriteBDR, +CanReadAllDualR, +CanReadAllDualRW, +CanReadBD, +CanReadBDR, +CanReadBDRE1, +CanReadBDRE2, +CanReadBDROM, +CanReadBluBCA, +CanReadCD, +CanReadCDMRW, +CanReadCPRM_MKB, +CanReadDDCD, +CanReadDVD, +CanReadDVDPlusMRW, +CanReadDVDPlusR, +CanReadDVDPlusRDL, +CanReadDVDPlusRW, +CanReadDVDPlusRWDL, +CanReadDriveAACSCertificate, +CanReadHDDVD, +CanReadHDDVDR, +CanReadHDDVDRAM, +CanReadLeadInCDText, +CanReadOldBDR, +CanReadOldBDRE, +CanReadOldBDROM, +CanReadSpareAreaInformation, +CanReportDriveSerial, +CanReportMediaSerial, +CanTestWriteDDCDR, +CanTestWriteDVD, +CanTestWriteInSAO, +CanTestWriteInTAO, +CanUpgradeFirmware, +CanWriteBD, +CanWriteBDR, +CanWriteBDRE1, +CanWriteBDRE2, +CanWriteBusEncryptedBlocks, +CanWriteCDMRW, +CanWriteCDRW, +CanWriteCDRWCAV, +CanWriteCDSAO, +CanWriteCDTAO, +CanWriteCSSManagedDVD, +CanWriteDDCDR, +CanWriteDDCDRW, +CanWriteDVDPlusMRW, +CanWriteDVDPlusR, +CanWriteDVDPlusRDL, +CanWriteDVDPlusRW, +CanWriteDVDPlusRWDL, +CanWriteDVDR, +CanWriteDVDRDL, +CanWriteDVDRW, +CanWriteHDDVDR, +CanWriteHDDVDRAM, +CanWriteOldBDR, +CanWriteOldBDRE, +CanWritePackedSubchannelInTAO, +CanWriteRWSubchannelInSAO, +CanWriteRWSubchannelInTAO, +CanWriteRaw, +CanWriteRawMultiSession, +CanWriteRawSubchannelInTAO, +ChangerIsSideChangeCapable, +ChangerSlots, +ChangerSupportsDiscPresent, +CPRMVersion, +CSSVersion, +DBML, +DVDMultiRead, +EmbeddedChanger, +ErrorRecoveryPage, +FirmwareDate, +LoadingMechanismType, +Locked, +LogicalBlockSize, +MultiRead, +PhysicalInterfaceStandardNumber, +PreventJumper, +SupportsAACS, +SupportsBusEncryption, +SupportsC2, +SupportsCPRM, +SupportsCSS, +SupportsDAP, +SupportsDeviceBusyEvent, +SupportsHybridDiscs, +SupportsModePage1Ch, +SupportsOSSC, +SupportsPWP, +SupportsSWPP, +SupportsSecurDisc, +SupportsSeparateVolume, +SupportsVCPS, +SupportsWriteInhibitDCB, +SupportsWriteProtectPAC, +VolumeLevels, +BinaryData, +BlocksPerReadableUnitSql, +LogicalBlockSizeSql, +PhysicalInterfaceStandardNumberSql, +VolumeLevelsSql) SELECT AACSVersion, +AGIDs, +BindingNonceBlocks, +BlocksPerReadableUnitSql AS BlocksPerReadableUnit, +BufferUnderrunFreeInDVD, +BufferUnderrunFreeInSAO, +BufferUnderrunFreeInTAO, +CanAudioScan, +CanEject, +CanEraseSector, +CanExpandBDRESpareArea, +CanFormat, +CanFormatBDREWithoutSpare, +CanFormatCert, +CanFormatFRF, +CanFormatQCert, +CanFormatRRM, +CanGenerateBindingNonce, +CanLoad, +CanMuteSeparateChannels, +CanOverwriteSAOTrack, +CanOverwriteTAOTrack, +CanPlayCDAudio, +CanPseudoOverwriteBDR, +CanReadAllDualR, +CanReadAllDualRW, +CanReadBD, +CanReadBDR, +CanReadBDRE1, +CanReadBDRE2, +CanReadBDROM, +CanReadBluBCA, +CanReadCD, +CanReadCDMRW, +CanReadCPRM_MKB, +CanReadDDCD, +CanReadDVD, +CanReadDVDPlusMRW, +CanReadDVDPlusR, +CanReadDVDPlusRDL, +CanReadDVDPlusRW, +CanReadDVDPlusRWDL, +CanReadDriveAACSCertificate, +CanReadHDDVD, +CanReadHDDVDR, +CanReadHDDVDRAM, +CanReadLeadInCDText, +CanReadOldBDR, +CanReadOldBDRE, +CanReadOldBDROM, +CanReadSpareAreaInformation, +CanReportDriveSerial, +CanReportMediaSerial, +CanTestWriteDDCDR, +CanTestWriteDVD, +CanTestWriteInSAO, +CanTestWriteInTAO, +CanUpgradeFirmware, +CanWriteBD, +CanWriteBDR, +CanWriteBDRE1, +CanWriteBDRE2, +CanWriteBusEncryptedBlocks, +CanWriteCDMRW, +CanWriteCDRW, +CanWriteCDRWCAV, +CanWriteCDSAO, +CanWriteCDTAO, +CanWriteCSSManagedDVD, +CanWriteDDCDR, +CanWriteDDCDRW, +CanWriteDVDPlusMRW, +CanWriteDVDPlusR, +CanWriteDVDPlusRDL, +CanWriteDVDPlusRW, +CanWriteDVDPlusRWDL, +CanWriteDVDR, +CanWriteDVDRDL, +CanWriteDVDRW, +CanWriteHDDVDR, +CanWriteHDDVDRAM, +CanWriteOldBDR, +CanWriteOldBDRE, +CanWritePackedSubchannelInTAO, +CanWriteRWSubchannelInSAO, +CanWriteRWSubchannelInTAO, +CanWriteRaw, +CanWriteRawMultiSession, +CanWriteRawSubchannelInTAO, +ChangerIsSideChangeCapable, +ChangerSlots, +ChangerSupportsDiscPresent, +CPRMVersion, +CSSVersion, +DBML, +DVDMultiRead, +EmbeddedChanger, +ErrorRecoveryPage, +FirmwareDate, +LoadingMechanismType, +Locked, +LogicalBlockSizeSql AS LogicalBlockSize, +MultiRead, +PhysicalInterfaceStandardNumberSql AS PhysicalInterfaceStandardNumber, +PreventJumper, +SupportsAACS, +SupportsBusEncryption, +SupportsC2, +SupportsCPRM, +SupportsCSS, +SupportsDAP, +SupportsDeviceBusyEvent, +SupportsHybridDiscs, +SupportsModePage1Ch, +SupportsOSSC, +SupportsPWP, +SupportsSWPP, +SupportsSecurDisc, +SupportsSeparateVolume, +SupportsVCPS, +SupportsWriteInhibitDCB, +SupportsWriteProtectPAC, +VolumeLevelsSql AS VolumeLevels, +BinaryData, +BlocksPerReadableUnitSql, +LogicalBlockSizeSql, +PhysicalInterfaceStandardNumberSql, +VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql >= 0 OR VolumeLevelsSql IS NULL"); +migrationBuilder.Sql(@"INSERT INTO MmcFeatures (AACSVersion, +AGIDs, +BindingNonceBlocks, +BlocksPerReadableUnit, +BufferUnderrunFreeInDVD, +BufferUnderrunFreeInSAO, +BufferUnderrunFreeInTAO, +CanAudioScan, +CanEject, +CanEraseSector, +CanExpandBDRESpareArea, +CanFormat, +CanFormatBDREWithoutSpare, +CanFormatCert, +CanFormatFRF, +CanFormatQCert, +CanFormatRRM, +CanGenerateBindingNonce, +CanLoad, +CanMuteSeparateChannels, +CanOverwriteSAOTrack, +CanOverwriteTAOTrack, +CanPlayCDAudio, +CanPseudoOverwriteBDR, +CanReadAllDualR, +CanReadAllDualRW, +CanReadBD, +CanReadBDR, +CanReadBDRE1, +CanReadBDRE2, +CanReadBDROM, +CanReadBluBCA, +CanReadCD, +CanReadCDMRW, +CanReadCPRM_MKB, +CanReadDDCD, +CanReadDVD, +CanReadDVDPlusMRW, +CanReadDVDPlusR, +CanReadDVDPlusRDL, +CanReadDVDPlusRW, +CanReadDVDPlusRWDL, +CanReadDriveAACSCertificate, +CanReadHDDVD, +CanReadHDDVDR, +CanReadHDDVDRAM, +CanReadLeadInCDText, +CanReadOldBDR, +CanReadOldBDRE, +CanReadOldBDROM, +CanReadSpareAreaInformation, +CanReportDriveSerial, +CanReportMediaSerial, +CanTestWriteDDCDR, +CanTestWriteDVD, +CanTestWriteInSAO, +CanTestWriteInTAO, +CanUpgradeFirmware, +CanWriteBD, +CanWriteBDR, +CanWriteBDRE1, +CanWriteBDRE2, +CanWriteBusEncryptedBlocks, +CanWriteCDMRW, +CanWriteCDRW, +CanWriteCDRWCAV, +CanWriteCDSAO, +CanWriteCDTAO, +CanWriteCSSManagedDVD, +CanWriteDDCDR, +CanWriteDDCDRW, +CanWriteDVDPlusMRW, +CanWriteDVDPlusR, +CanWriteDVDPlusRDL, +CanWriteDVDPlusRW, +CanWriteDVDPlusRWDL, +CanWriteDVDR, +CanWriteDVDRDL, +CanWriteDVDRW, +CanWriteHDDVDR, +CanWriteHDDVDRAM, +CanWriteOldBDR, +CanWriteOldBDRE, +CanWritePackedSubchannelInTAO, +CanWriteRWSubchannelInSAO, +CanWriteRWSubchannelInTAO, +CanWriteRaw, +CanWriteRawMultiSession, +CanWriteRawSubchannelInTAO, +ChangerIsSideChangeCapable, +ChangerSlots, +ChangerSupportsDiscPresent, +CPRMVersion, +CSSVersion, +DBML, +DVDMultiRead, +EmbeddedChanger, +ErrorRecoveryPage, +FirmwareDate, +LoadingMechanismType, +Locked, +LogicalBlockSize, +MultiRead, +PhysicalInterfaceStandardNumber, +PreventJumper, +SupportsAACS, +SupportsBusEncryption, +SupportsC2, +SupportsCPRM, +SupportsCSS, +SupportsDAP, +SupportsDeviceBusyEvent, +SupportsHybridDiscs, +SupportsModePage1Ch, +SupportsOSSC, +SupportsPWP, +SupportsSWPP, +SupportsSecurDisc, +SupportsSeparateVolume, +SupportsVCPS, +SupportsWriteInhibitDCB, +SupportsWriteProtectPAC, +VolumeLevels, +BinaryData, +BlocksPerReadableUnitSql, +LogicalBlockSizeSql, +PhysicalInterfaceStandardNumberSql, +VolumeLevelsSql) SELECT AACSVersion, +AGIDs, +BindingNonceBlocks, +BlocksPerReadableUnitSql AS BlocksPerReadableUnit, +BufferUnderrunFreeInDVD, +BufferUnderrunFreeInSAO, +BufferUnderrunFreeInTAO, +CanAudioScan, +CanEject, +CanEraseSector, +CanExpandBDRESpareArea, +CanFormat, +CanFormatBDREWithoutSpare, +CanFormatCert, +CanFormatFRF, +CanFormatQCert, +CanFormatRRM, +CanGenerateBindingNonce, +CanLoad, +CanMuteSeparateChannels, +CanOverwriteSAOTrack, +CanOverwriteTAOTrack, +CanPlayCDAudio, +CanPseudoOverwriteBDR, +CanReadAllDualR, +CanReadAllDualRW, +CanReadBD, +CanReadBDR, +CanReadBDRE1, +CanReadBDRE2, +CanReadBDROM, +CanReadBluBCA, +CanReadCD, +CanReadCDMRW, +CanReadCPRM_MKB, +CanReadDDCD, +CanReadDVD, +CanReadDVDPlusMRW, +CanReadDVDPlusR, +CanReadDVDPlusRDL, +CanReadDVDPlusRW, +CanReadDVDPlusRWDL, +CanReadDriveAACSCertificate, +CanReadHDDVD, +CanReadHDDVDR, +CanReadHDDVDRAM, +CanReadLeadInCDText, +CanReadOldBDR, +CanReadOldBDRE, +CanReadOldBDROM, +CanReadSpareAreaInformation, +CanReportDriveSerial, +CanReportMediaSerial, +CanTestWriteDDCDR, +CanTestWriteDVD, +CanTestWriteInSAO, +CanTestWriteInTAO, +CanUpgradeFirmware, +CanWriteBD, +CanWriteBDR, +CanWriteBDRE1, +CanWriteBDRE2, +CanWriteBusEncryptedBlocks, +CanWriteCDMRW, +CanWriteCDRW, +CanWriteCDRWCAV, +CanWriteCDSAO, +CanWriteCDTAO, +CanWriteCSSManagedDVD, +CanWriteDDCDR, +CanWriteDDCDRW, +CanWriteDVDPlusMRW, +CanWriteDVDPlusR, +CanWriteDVDPlusRDL, +CanWriteDVDPlusRW, +CanWriteDVDPlusRWDL, +CanWriteDVDR, +CanWriteDVDRDL, +CanWriteDVDRW, +CanWriteHDDVDR, +CanWriteHDDVDRAM, +CanWriteOldBDR, +CanWriteOldBDRE, +CanWritePackedSubchannelInTAO, +CanWriteRWSubchannelInSAO, +CanWriteRWSubchannelInTAO, +CanWriteRaw, +CanWriteRawMultiSession, +CanWriteRawSubchannelInTAO, +ChangerIsSideChangeCapable, +ChangerSlots, +ChangerSupportsDiscPresent, +CPRMVersion, +CSSVersion, +DBML, +DVDMultiRead, +EmbeddedChanger, +ErrorRecoveryPage, +FirmwareDate, +LoadingMechanismType, +Locked, +LogicalBlockSizeSql AS LogicalBlockSize, +MultiRead, +PhysicalInterfaceStandardNumberSql AS PhysicalInterfaceStandardNumber, +PreventJumper, +SupportsAACS, +SupportsBusEncryption, +SupportsC2, +SupportsCPRM, +SupportsCSS, +SupportsDAP, +SupportsDeviceBusyEvent, +SupportsHybridDiscs, +SupportsModePage1Ch, +SupportsOSSC, +SupportsPWP, +SupportsSWPP, +SupportsSecurDisc, +SupportsSeparateVolume, +SupportsVCPS, +SupportsWriteInhibitDCB, +SupportsWriteProtectPAC, +(65536+VolumeLevelsSql) AS VolumeLevels, +BinaryData, +BlocksPerReadableUnitSql, +LogicalBlockSizeSql, +PhysicalInterfaceStandardNumberSql, +VolumeLevelsSql FROM MmcFeatures_old WHERE VolumeLevelsSql < 0"); +migrationBuilder.DropTable("MmcFeatures_old"); + } + #endregion + + #region TABLE: MmcSd + migrationBuilder.CreateTable( + name: "MmcSd", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + CID = table.Column(nullable: true), + CSD = table.Column(nullable: true), + OCR = table.Column(nullable: true), + SCR = table.Column(nullable: true), + ExtendedCSD = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_MmcSd", x => x.Id); + }); + + if (MmcSdsExists) + { + migrationBuilder.Sql( + "INSERT INTO MmcSd (Id, CID, CSD, OCR, SCR, ExtendedCSD) SELECT Id, CID, CSD, OCR, SCR, ExtendedCSD FROM MmcSds"); + migrationBuilder.DropTable("MmcSds"); + } + #endregion + + #region TABLE: OperatingSystems + if (OperatingSystemsExists) + migrationBuilder.RenameTable(name: "OperatingSystems", newName: "OperatingSystems_old"); + + migrationBuilder.CreateTable( + name: "OperatingSystems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Version = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OperatingSystems", x => x.Id); + }); + + if (OperatingSystemsExists) + { + migrationBuilder.Sql( + "INSERT INTO OperatingSystems (Id, Name, Version, Count) SELECT Id, Name, Version, Count FROM OperatingSystems_old"); + migrationBuilder.DropTable("OperatingSystems_old"); + } + #endregion + + #region TABLE: Partitions + if (PartitionsExists) + migrationBuilder.RenameTable(name: "Partitions", newName: "Partitions_old"); + + migrationBuilder.CreateTable( + name: "Partitions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Partitions", x => x.Id); + }); + + if (PartitionsExists) + { + migrationBuilder.Sql( + "INSERT INTO Partitions (Id, Name, Count) SELECT Id, Name, Count FROM Partitions_old"); + migrationBuilder.DropTable("Partitions_old"); + } + #endregion + + #region TABLE: Pcmcia + migrationBuilder.CreateTable( + name: "Pcmcia", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + CIS = table.Column(nullable: true), + Compliance = table.Column(nullable: true), + ManufacturerCode = table.Column(nullable: true), + CardCode = table.Column(nullable: true), + Manufacturer = table.Column(nullable: true), + ProductName = table.Column(nullable: true), + ManufacturerCodeSql = table.Column(nullable: true), + CardCodeSql = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Pcmcia", x => x.Id); + }); + + if (PcmciasExists) + { + migrationBuilder.Sql( + "INSERT INTO Pcmcia (Id, CIS, Compliance, ManufacturerCode, CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql) SELECT Id, CIS, Compliance, ManufacturerCodeSql AS ManufacturerCode, CardCodeSql AS CardCode, Manufacturer, ProductName, ManufacturerCodeSql, CardCodeSql FROM Pcmcias"); + migrationBuilder.DropTable("Pcmcias"); + } + #endregion + + #region TABLE: ScsiMode + migrationBuilder.CreateTable( + name: "ScsiMode", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + MediumType = table.Column(nullable: true), + WriteProtected = table.Column(nullable: false), + Speed = table.Column(nullable: true), + BufferedMode = table.Column(nullable: true), + BlankCheckEnabled = table.Column(nullable: false), + DPOandFUA = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ScsiMode", x => x.Id); + }); + + if (ScsiModesExists) + { + migrationBuilder.Sql( + "INSERT INTO ScsiMode (Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA) SELECT Id, MediumType, WriteProtected, Speed, BufferedMode, BlankCheckEnabled, DPOandFUA FROM ScsiModes"); + migrationBuilder.DropTable("ScsiModes"); + } + #endregion + + #region TABLE: Ssc + migrationBuilder.CreateTable( + name: "Ssc", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + BlockSizeGranularity = table.Column(nullable: true), + MaxBlockLength = table.Column(nullable: true), + MinBlockLength = table.Column(nullable: true), + MaxBlockLengthSql = table.Column(nullable: true), + MinBlockLengthSql = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Ssc", x => x.Id); + }); + + if (SscsExists) + { + migrationBuilder.Sql( + "INSERT INTO Ssc (Id, BlockSizeGranularity, MaxBlockLength, MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql) SELECT Id, BlockSizeGranularity, MaxBlockLengthSql AS MaxBlockLength, MinBlockLengthSql AS MinBlockLength, MaxBlockLengthSql, MinBlockLengthSql FROM Sscs"); + migrationBuilder.DropTable("Sscs"); + } + #endregion + + #region TABLE: Usb + migrationBuilder.CreateTable( + name: "Usb", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VendorID = table.Column(nullable: false), + ProductID = table.Column(nullable: false), + Manufacturer = table.Column(nullable: true), + Product = table.Column(nullable: true), + RemovableMedia = table.Column(nullable: false), + Descriptors = table.Column(nullable: true), + VendorIDSql = table.Column(nullable: false), + ProductIDSql = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Usb", x => x.Id); + }); + + if (UsbsExists) + { + migrationBuilder.Sql( + "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql >= 0 AND ProductIDSql >= 0"); + migrationBuilder.Sql( + "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, (65536+VendorIDSql) AS VendorID, ProductIDSql AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql < 0 AND ProductIDSql >= 0"); + migrationBuilder.Sql( + "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, VendorIDSql AS VendorID, (65536+ProductIDSql) AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql >= 0 AND ProductIDSql < 0"); + migrationBuilder.Sql( + "INSERT INTO Usb (Id, VendorID, ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql) SELECT Id, (65536+VendorIDSql) AS VendorID, (65536+ProductIDSql) AS ProductID, Manufacturer, Product, RemovableMedia, Descriptors, VendorIDSql, ProductIDSql FROM Usbs WHERE VendorIDSql < 0 AND ProductIDSql < 0"); + migrationBuilder.DropTable("Usbs"); + } + #endregion + + #region TABLE: UsbVendors + + if (UsbVendorsExists) + migrationBuilder.RenameTable(name: "UsbVendors", newName: "UsbVendors_old"); + + migrationBuilder.CreateTable( + name: "UsbVendors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VendorId = table.Column(nullable: false), + Vendor = table.Column(nullable: true), + AddedWhen = table.Column(nullable: false), + ModifiedWhen = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UsbVendors", x => x.Id); + }); + + if (UsbVendorsExists) + { + migrationBuilder.Sql( + "INSERT INTO UsbVendors (Id, VendorId, Vendor, AddedWhen, ModifiedWhen) SELECT Id, VendorId, Vendor, AddedWhen, ModifiedWhen FROM UsbVendors_old"); + migrationBuilder.DropTable("UsbVendors_old"); + } + #endregion + + #region TABLE: Versions + + if (VersionsExists) + migrationBuilder.RenameTable(name: "Versions", newName: "Versions_old"); + + migrationBuilder.CreateTable( + name: "Versions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Value = table.Column(nullable: true), + Count = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Versions", x => x.Id); + }); + + if (VersionsExists) + { + migrationBuilder.Sql( + "INSERT INTO Versions (`Id`, `Value`, `Count`) SELECT `Id`, `Value`, `Count` FROM Versions_old"); + migrationBuilder.DropTable("Versions_old"); + } + #endregion + + #region TABLE: Mmc + migrationBuilder.CreateTable( + name: "Mmc", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FeaturesId = table.Column(nullable: true), + ModeSense2AData = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Mmc", x => x.Id); + table.ForeignKey( + name: "FK_Mmc_MmcFeatures_FeaturesId", + column: x => x.FeaturesId, + principalTable: "MmcFeatures", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (MmcsExists) + { + migrationBuilder.Sql( + "INSERT INTO Mmc (Id, FeaturesId, ModeSense2AData) SELECT Id, Features_Id, ModeSense2AData FROM Mmcs WHERE EXISTS(SELECT 1 FROM MmcFeatures WHERE MmcFeatures.Id = Features_Id) OR Features_Id IS NULL"); + migrationBuilder.DropTable("Mmcs"); + } + #endregion + + #region TABLE: BlockDescriptor + migrationBuilder.CreateTable( + name: "BlockDescriptor", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Density = table.Column(nullable: false), + Blocks = table.Column(nullable: true), + BlockLength = table.Column(nullable: true), + BlocksSql = table.Column(nullable: true), + BlockLengthSql = table.Column(nullable: true), + ScsiModeId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BlockDescriptor", x => x.Id); + table.ForeignKey( + name: "FK_BlockDescriptor_ScsiMode_ScsiModeId", + column: x => x.ScsiModeId, + principalTable: "ScsiMode", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (BlockDescriptorsExists) + { + migrationBuilder.Sql( + "INSERT INTO BlockDescriptor (Id, Density, Blocks, BlocksSql, BlockLength, BlockLengthSql, ScsiModeId) SELECT Id, Density, BlocksSql AS Blocks, BlocksSql, BlockLengthSql AS BlockLength, BlockLengthSql, ScsiMode_Id FROM BlockDescriptors"); + migrationBuilder.DropTable("BlockDescriptors"); + } + #endregion + + #region TABLE: TestedSequentialMedia + migrationBuilder.CreateTable( + name: "TestedSequentialMedia", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + CanReadMediaSerial = table.Column(nullable: true), + Density = table.Column(nullable: true), + Manufacturer = table.Column(nullable: true), + MediaIsRecognized = table.Column(nullable: false), + MediumType = table.Column(nullable: true), + MediumTypeName = table.Column(nullable: true), + Model = table.Column(nullable: true), + ModeSense6Data = table.Column(nullable: true), + ModeSense10Data = table.Column(nullable: true), + SscId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_TestedSequentialMedia", x => x.Id); + table.ForeignKey( + name: "FK_TestedSequentialMedia_Ssc_SscId", + column: x => x.SscId, + principalTable: "Ssc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (TestedSequentialMediasExists) + { + migrationBuilder.Sql( + "INSERT INTO TestedSequentialMedia (Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, SscId) SELECT Id, CanReadMediaSerial, Density, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, ModeSense6Data, ModeSense10Data, Ssc_Id FROM TestedSequentialMedias"); + migrationBuilder.DropTable("TestedSequentialMedias"); + } + #endregion + + #region TABLE: UsbProducts + + if (UsbProductsExists) + { + migrationBuilder.RenameTable(name: "UsbProducts", newName: "UsbProducts_old"); + } + + migrationBuilder.CreateTable( + name: "UsbProducts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ProductId = table.Column(nullable: false), + Product = table.Column(nullable: true), + AddedWhen = table.Column(nullable: false), + ModifiedWhen = table.Column(nullable: false), + VendorId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UsbProducts", x => x.Id); + table.ForeignKey( + name: "FK_UsbProducts_UsbVendors_VendorId", + column: x => x.VendorId, + principalTable: "UsbVendors", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + if (UsbProductsExists) + { + migrationBuilder.Sql( + "INSERT INTO UsbProducts (Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId) SELECT Id, ProductId, Product, AddedWhen, ModifiedWhen, VendorId FROM UsbProducts_old"); + migrationBuilder.DropTable("UsbProducts_old"); + } + #endregion + +#region TABLE: SscSupportedMedia + migrationBuilder.CreateTable( + name: "SscSupportedMedia", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + MediumType = table.Column(nullable: false), + Width = table.Column(nullable: false), + Length = table.Column(nullable: false), + Organization = table.Column(nullable: true), + Name = table.Column(nullable: true), + Description = table.Column(nullable: true), + WidthSql = table.Column(nullable: false), + LengthSql = table.Column(nullable: false), + SscId = table.Column(nullable: true), + TestedSequentialMediaId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_SscSupportedMedia", x => x.Id); + table.ForeignKey( + name: "FK_SscSupportedMedia_Ssc_SscId", + column: x => x.SscId, + principalTable: "Ssc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_SscSupportedMedia_TestedSequentialMedia_TestedSequentialMedi~", + column: x => x.TestedSequentialMediaId, + principalTable: "TestedSequentialMedia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (SscSupportedMediasExists) + { + migrationBuilder.Sql( + "INSERT INTO SscSupportedMedia (Id, MediumType, Width, Length, Organization, Name, Description, WidthSql, LengthSql, SscId, TestedSequentialMediaId) SELECT Id, MediumType, WidthSql AS Width, LengthSql AS Length, Organization, Name, Description, WidthSql, LengthSql, Ssc_Id, TestedSequentialMedia_Id FROM SscSupportedMedias"); + migrationBuilder.DropTable("SscSupportedMedias"); + } + #endregion + + #region TABLE: SupportedDensity + migrationBuilder.CreateTable( + name: "SupportedDensity", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + PrimaryCode = table.Column(nullable: false), + SecondaryCode = table.Column(nullable: false), + Writable = table.Column(nullable: false), + Duplicate = table.Column(nullable: false), + DefaultDensity = table.Column(nullable: false), + BitsPerMm = table.Column(nullable: false), + Width = table.Column(nullable: false), + Tracks = table.Column(nullable: false), + Capacity = table.Column(nullable: false), + Organization = table.Column(nullable: true), + Name = table.Column(nullable: true), + Description = table.Column(nullable: true), + BitsPerMmSql = table.Column(nullable: false), + WidthSql = table.Column(nullable: false), + TracksSql = table.Column(nullable: false), + CapacitySql = table.Column(nullable: false), + SscId = table.Column(nullable: true), + TestedSequentialMediaId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_SupportedDensity", x => x.Id); + table.ForeignKey( + name: "FK_SupportedDensity_Ssc_SscId", + column: x => x.SscId, + principalTable: "Ssc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_SupportedDensity_TestedSequentialMedia_TestedSequentialMedia~", + column: x => x.TestedSequentialMediaId, + principalTable: "TestedSequentialMedia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (SupportedDensitiesExists) + { + migrationBuilder.Sql( + "INSERT INTO SupportedDensity (PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMm, Width, Tracks, Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, SscId, TestedSequentialMediaId) SELECT PrimaryCode, SecondaryCode, Writable, Duplicate, DefaultDensity, BitsPerMmSql AS BitsPerMm, WidthSql AS Width, TracksSql AS Tracks, CapacitySql AS Capacity, Organization, Name, Description, BitsPerMmSql, WidthSql, TracksSql, CapacitySql, Ssc_Id, TestedSequentialMedia_Id FROM SupportedDensities"); + migrationBuilder.DropTable("SupportedDensities"); + } +#endregion + +#region TABLE: DensityCode + migrationBuilder.CreateTable( + name: "DensityCode", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Code = table.Column(nullable: false), + SscSupportedMediaId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_DensityCode", x => x.Id); + table.ForeignKey( + name: "FK_DensityCode_SscSupportedMedia_SscSupportedMediaId", + column: x => x.SscSupportedMediaId, + principalTable: "SscSupportedMedia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (DensityCodesExists) + { + migrationBuilder.Sql( + "INSERT INTO DensityCode (Id, Code, SscSupportedMediaId) SELECT Id, Code, SscSupportedMedia_Id FROM DensityCodes"); + migrationBuilder.DropTable("DensityCodes"); + } + #endregion + + #region TABLE: Devices + + if (DevicesExists) + migrationBuilder.RenameTable(name: "Devices", newName: "Devices_old"); + + migrationBuilder.CreateTable( + name: "Devices", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + USBId = table.Column(nullable: true), + FireWireId = table.Column(nullable: true), + PCMCIAId = table.Column(nullable: true), + CompactFlash = table.Column(nullable: false), + ATAId = table.Column(nullable: true), + ATAPIId = table.Column(nullable: true), + SCSIId = table.Column(nullable: true), + MultiMediaCardId = table.Column(nullable: true), + SecureDigitalId = table.Column(nullable: true), + Manufacturer = table.Column(nullable: true), + Model = table.Column(nullable: true), + Revision = table.Column(nullable: true), + Type = table.Column(nullable: false), + AddedWhen = table.Column(nullable: false), + ModifiedWhen = table.Column(nullable: true), + CdOffsetId = table.Column(nullable: true), + OptimalMultipleSectorsRead = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Devices", x => x.Id); + table.ForeignKey( + name: "FK_Devices_CdOffsets_CdOffsetId", + column: x => x.CdOffsetId, + principalTable: "CdOffsets", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Devices_FireWire_FireWireId", + column: x => x.FireWireId, + principalTable: "FireWire", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Devices_MmcSd_MultiMediaCardId", + column: x => x.MultiMediaCardId, + principalTable: "MmcSd", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Devices_Pcmcia_PCMCIAId", + column: x => x.PCMCIAId, + principalTable: "Pcmcia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Devices_MmcSd_SecureDigitalId", + column: x => x.SecureDigitalId, + principalTable: "MmcSd", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Devices_Usb_USBId", + column: x => x.USBId, + principalTable: "Usb", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (DevicesExists) + { + migrationBuilder.Sql( + "INSERT INTO Devices (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffsetId, OptimalMultipleSectorsRead) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, AddedWhen, ModifiedWhen, CdOffset_Id, OptimalMultipleSectorsRead FROM Devices_old"); + migrationBuilder.DropTable("Devices_old"); + } + #endregion + + #region TABLE: DeviceStats + + if (DeviceStatsExists) + migrationBuilder.RenameTable(name: "DeviceStats", newName: "DeviceStats_old"); + + migrationBuilder.CreateTable( + name: "DeviceStats", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Manufacturer = table.Column(nullable: true), + Model = table.Column(nullable: true), + Revision = table.Column(nullable: true), + Bus = table.Column(nullable: true), + ReportId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_DeviceStats", x => x.Id); + table.ForeignKey( + name: "FK_DeviceStats_Devices_ReportId", + column: x => x.ReportId, + principalTable: "Devices", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (DeviceStatsExists) + { + migrationBuilder.Sql( + "INSERT INTO DeviceStats (Id, Manufacturer, Model, Revision, Bus, ReportId) SELECT Id, Manufacturer, Model, Revision, Bus, Report_Id FROM DeviceStats_old"); + migrationBuilder.DropTable("DeviceStats_old"); + } + #endregion + + #region TABLE: Reports + migrationBuilder.CreateTable( + name: "Reports", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + USBId = table.Column(nullable: true), + FireWireId = table.Column(nullable: true), + PCMCIAId = table.Column(nullable: true), + CompactFlash = table.Column(nullable: false), + ATAId = table.Column(nullable: true), + ATAPIId = table.Column(nullable: true), + SCSIId = table.Column(nullable: true), + MultiMediaCardId = table.Column(nullable: true), + SecureDigitalId = table.Column(nullable: true), + Manufacturer = table.Column(nullable: true), + Model = table.Column(nullable: true), + Revision = table.Column(nullable: true), + Type = table.Column(nullable: false), + UploadedWhen = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Reports", x => x.Id); + table.ForeignKey( + name: "FK_Reports_FireWire_FireWireId", + column: x => x.FireWireId, + principalTable: "FireWire", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Reports_MmcSd_MultiMediaCardId", + column: x => x.MultiMediaCardId, + principalTable: "MmcSd", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Reports_Pcmcia_PCMCIAId", + column: x => x.PCMCIAId, + principalTable: "Pcmcia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Reports_MmcSd_SecureDigitalId", + column: x => x.SecureDigitalId, + principalTable: "MmcSd", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Reports_Usb_USBId", + column: x => x.USBId, + principalTable: "Usb", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (UploadedReportsExists) + { + migrationBuilder.Sql( + "INSERT INTO Reports (Id, USBId, FireWireId, PCMCIAId, CompactFlash, ATAId, ATAPIId, SCSIId, MultiMediaCardId, SecureDigitalId, Manufacturer, Model, Revision, Type, UploadedWhen) SELECT Id, USB_Id, FireWire_Id, PCMCIA_Id, CompactFlash, ATA_Id, ATAPI_Id, SCSI_Id, MultiMediaCard_Id, SecureDigital_Id, Manufacturer, Model, Revision, Type, UploadedWhen FROM UploadedReports"); + migrationBuilder.DropTable("UploadedReports"); + } + #endregion + + #region TABLE: TestedMedia + migrationBuilder.CreateTable( + name: "TestedMedia", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + IdentifyData = table.Column(nullable: true), + Blocks = table.Column(nullable: true), + BlockSize = table.Column(nullable: true), + CanReadAACS = table.Column(nullable: true), + CanReadADIP = table.Column(nullable: true), + CanReadATIP = table.Column(nullable: true), + CanReadBCA = table.Column(nullable: true), + CanReadC2Pointers = table.Column(nullable: true), + CanReadCMI = table.Column(nullable: true), + CanReadCorrectedSubchannel = table.Column(nullable: true), + CanReadCorrectedSubchannelWithC2 = table.Column(nullable: true), + CanReadDCB = table.Column(nullable: true), + CanReadDDS = table.Column(nullable: true), + CanReadDMI = table.Column(nullable: true), + CanReadDiscInformation = table.Column(nullable: true), + CanReadFullTOC = table.Column(nullable: true), + CanReadHDCMI = table.Column(nullable: true), + CanReadLayerCapacity = table.Column(nullable: true), + CanReadFirstTrackPreGap = table.Column(nullable: true), + CanReadLeadIn = table.Column(nullable: true), + CanReadLeadOut = table.Column(nullable: true), + CanReadMediaID = table.Column(nullable: true), + CanReadMediaSerial = table.Column(nullable: true), + CanReadPAC = table.Column(nullable: true), + CanReadPFI = table.Column(nullable: true), + CanReadPMA = table.Column(nullable: true), + CanReadPQSubchannel = table.Column(nullable: true), + CanReadPQSubchannelWithC2 = table.Column(nullable: true), + CanReadPRI = table.Column(nullable: true), + CanReadRWSubchannel = table.Column(nullable: true), + CanReadRWSubchannelWithC2 = table.Column(nullable: true), + CanReadRecordablePFI = table.Column(nullable: true), + CanReadSpareAreaInformation = table.Column(nullable: true), + CanReadTOC = table.Column(nullable: true), + Density = table.Column(nullable: true), + LongBlockSize = table.Column(nullable: true), + Manufacturer = table.Column(nullable: true), + MediaIsRecognized = table.Column(nullable: false), + MediumType = table.Column(nullable: true), + MediumTypeName = table.Column(nullable: true), + Model = table.Column(nullable: true), + SupportsHLDTSTReadRawDVD = table.Column(nullable: true), + SupportsNECReadCDDA = table.Column(nullable: true), + SupportsPioneerReadCDDA = table.Column(nullable: true), + SupportsPioneerReadCDDAMSF = table.Column(nullable: true), + SupportsPlextorReadCDDA = table.Column(nullable: true), + SupportsPlextorReadRawDVD = table.Column(nullable: true), + SupportsRead10 = table.Column(nullable: true), + SupportsRead12 = table.Column(nullable: true), + SupportsRead16 = table.Column(nullable: true), + SupportsRead6 = table.Column(nullable: true), + SupportsReadCapacity16 = table.Column(nullable: true), + SupportsReadCapacity = table.Column(nullable: true), + SupportsReadCd = table.Column(nullable: true), + SupportsReadCdMsf = table.Column(nullable: true), + SupportsReadCdRaw = table.Column(nullable: true), + SupportsReadCdMsfRaw = table.Column(nullable: true), + SupportsReadLong16 = table.Column(nullable: true), + SupportsReadLong = table.Column(nullable: true), + ModeSense6Data = table.Column(nullable: true), + ModeSense10Data = table.Column(nullable: true), + CHSId = table.Column(nullable: true), + CurrentCHSId = table.Column(nullable: true), + LBASectors = table.Column(nullable: true), + LBA48Sectors = table.Column(nullable: true), + LogicalAlignment = table.Column(nullable: true), + NominalRotationRate = table.Column(nullable: true), + PhysicalBlockSize = table.Column(nullable: true), + SolidStateDevice = table.Column(nullable: true), + UnformattedBPT = table.Column(nullable: true), + UnformattedBPS = table.Column(nullable: true), + SupportsReadDmaLba = table.Column(nullable: true), + SupportsReadDmaRetryLba = table.Column(nullable: true), + SupportsReadLba = table.Column(nullable: true), + SupportsReadRetryLba = table.Column(nullable: true), + SupportsReadLongLba = table.Column(nullable: true), + SupportsReadLongRetryLba = table.Column(nullable: true), + SupportsSeekLba = table.Column(nullable: true), + SupportsReadDmaLba48 = table.Column(nullable: true), + SupportsReadLba48 = table.Column(nullable: true), + SupportsReadDma = table.Column(nullable: true), + SupportsReadDmaRetry = table.Column(nullable: true), + SupportsReadRetry = table.Column(nullable: true), + SupportsReadSectors = table.Column(nullable: true), + SupportsReadLongRetry = table.Column(nullable: true), + SupportsSeek = table.Column(nullable: true), + CanReadingIntersessionLeadIn = table.Column(nullable: true), + CanReadingIntersessionLeadOut = table.Column(nullable: true), + IntersessionLeadInData = table.Column(nullable: true), + IntersessionLeadOutData = table.Column(nullable: true), + BlocksSql = table.Column(nullable: true), + BlockSizeSql = table.Column(nullable: true), + LongBlockSizeSql = table.Column(nullable: true), + LBASectorsSql = table.Column(nullable: true), + LBA48SectorsSql = table.Column(nullable: true), + LogicalAlignmentSql = table.Column(nullable: true), + NominalRotationRateSql = table.Column(nullable: true), + PhysicalBlockSizeSql = table.Column(nullable: true), + UnformattedBPTSql = table.Column(nullable: true), + UnformattedBPSSql = table.Column(nullable: true), + Read6Data = table.Column(nullable: true), + Read10Data = table.Column(nullable: true), + Read12Data = table.Column(nullable: true), + Read16Data = table.Column(nullable: true), + ReadLong10Data = table.Column(nullable: true), + ReadLong16Data = table.Column(nullable: true), + ReadSectorsData = table.Column(nullable: true), + ReadSectorsRetryData = table.Column(nullable: true), + ReadDmaData = table.Column(nullable: true), + ReadDmaRetryData = table.Column(nullable: true), + ReadLbaData = table.Column(nullable: true), + ReadRetryLbaData = table.Column(nullable: true), + ReadDmaLbaData = table.Column(nullable: true), + ReadDmaRetryLbaData = table.Column(nullable: true), + ReadLba48Data = table.Column(nullable: true), + ReadDmaLba48Data = table.Column(nullable: true), + ReadLongData = table.Column(nullable: true), + ReadLongRetryData = table.Column(nullable: true), + ReadLongLbaData = table.Column(nullable: true), + ReadLongRetryLbaData = table.Column(nullable: true), + TocData = table.Column(nullable: true), + FullTocData = table.Column(nullable: true), + AtipData = table.Column(nullable: true), + PmaData = table.Column(nullable: true), + ReadCdData = table.Column(nullable: true), + ReadCdMsfData = table.Column(nullable: true), + ReadCdFullData = table.Column(nullable: true), + ReadCdMsfFullData = table.Column(nullable: true), + Track1PregapData = table.Column(nullable: true), + LeadInData = table.Column(nullable: true), + LeadOutData = table.Column(nullable: true), + C2PointersData = table.Column(nullable: true), + PQSubchannelData = table.Column(nullable: true), + RWSubchannelData = table.Column(nullable: true), + CorrectedSubchannelData = table.Column(nullable: true), + PQSubchannelWithC2Data = table.Column(nullable: true), + RWSubchannelWithC2Data = table.Column(nullable: true), + CorrectedSubchannelWithC2Data = table.Column(nullable: true), + PfiData = table.Column(nullable: true), + DmiData = table.Column(nullable: true), + CmiData = table.Column(nullable: true), + DvdBcaData = table.Column(nullable: true), + DvdAacsData = table.Column(nullable: true), + DvdDdsData = table.Column(nullable: true), + DvdSaiData = table.Column(nullable: true), + PriData = table.Column(nullable: true), + EmbossedPfiData = table.Column(nullable: true), + AdipData = table.Column(nullable: true), + DcbData = table.Column(nullable: true), + HdCmiData = table.Column(nullable: true), + DvdLayerData = table.Column(nullable: true), + BluBcaData = table.Column(nullable: true), + BluDdsData = table.Column(nullable: true), + BluSaiData = table.Column(nullable: true), + BluDiData = table.Column(nullable: true), + BluPacData = table.Column(nullable: true), + PlextorReadCddaData = table.Column(nullable: true), + PioneerReadCddaData = table.Column(nullable: true), + PioneerReadCddaMsfData = table.Column(nullable: true), + NecReadCddaData = table.Column(nullable: true), + PlextorReadRawDVDData = table.Column(nullable: true), + HLDTSTReadRawDVDData = table.Column(nullable: true), + AtaId = table.Column(nullable: true), + MmcId = table.Column(nullable: true), + ScsiId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_TestedMedia", x => x.Id); + table.ForeignKey( + name: "FK_TestedMedia_Chs_CHSId", + column: x => x.CHSId, + principalTable: "Chs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_TestedMedia_Chs_CurrentCHSId", + column: x => x.CurrentCHSId, + principalTable: "Chs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_TestedMedia_Mmc_MmcId", + column: x => x.MmcId, + principalTable: "Mmc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (TestedMediasExists) + { + string preFormat = + @"INSERT INTO TestedMedia (Id, IdentifyData, Blocks, BlockSize, CanReadAACS, CanReadADIP, + CanReadATIP, CanReadBCA, CanReadC2Pointers, CanReadCMI, CanReadCorrectedSubchannel, + CanReadCorrectedSubchannelWithC2, CanReadDCB, CanReadDDS, CanReadDMI, CanReadDiscInformation, + CanReadFullTOC, CanReadHDCMI, CanReadLayerCapacity, CanReadFirstTrackPreGap, CanReadLeadIn, + CanReadLeadOut, CanReadMediaID, CanReadMediaSerial, CanReadPAC, CanReadPFI, CanReadPMA, + CanReadPQSubchannel, CanReadPQSubchannelWithC2, CanReadPRI, CanReadRWSubchannel, + CanReadRWSubchannelWithC2, CanReadRecordablePFI, CanReadSpareAreaInformation, CanReadTOC, Density, + LongBlockSize, Manufacturer, MediaIsRecognized, MediumType, MediumTypeName, Model, + SupportsHLDTSTReadRawDVD, SupportsNECReadCDDA, SupportsPioneerReadCDDA, SupportsPioneerReadCDDAMSF, + SupportsPlextorReadCDDA, SupportsPlextorReadRawDVD, SupportsRead10, SupportsRead12, SupportsRead16, + SupportsRead6, SupportsReadCapacity16, SupportsReadCapacity, SupportsReadCd, SupportsReadCdMsf, + SupportsReadCdRaw, SupportsReadCdMsfRaw, SupportsReadLong16, SupportsReadLong, ModeSense6Data, + ModeSense10Data, CHSId, CurrentCHSId, LBASectors, LBA48Sectors, LogicalAlignment, NominalRotationRate, + PhysicalBlockSize, SolidStateDevice, UnformattedBPT, UnformattedBPS, SupportsReadDmaLba, SupportsReadDmaRetryLba, + SupportsReadLba, SupportsReadRetryLba, SupportsReadLongLba, SupportsReadLongRetryLba, SupportsSeekLba, + SupportsReadDmaLba48, SupportsReadLba48, SupportsReadDma, SupportsReadDmaRetry, SupportsReadRetry, + SupportsReadSectors, SupportsReadLongRetry, SupportsSeek, CanReadingIntersessionLeadIn, + CanReadingIntersessionLeadOut, IntersessionLeadInData, IntersessionLeadOutData, BlocksSql, + BlockSizeSql, LongBlockSizeSql, LBASectorsSql, LBA48SectorsSql, LogicalAlignmentSql, + NominalRotationRateSql, PhysicalBlockSizeSql, UnformattedBPTSql, UnformattedBPSSql, Read6Data, + Read10Data, Read12Data, Read16Data, ReadLong10Data, ReadLong16Data, ReadSectorsData, + ReadSectorsRetryData, ReadDmaData, ReadDmaRetryData, ReadLbaData, ReadRetryLbaData, ReadDmaLbaData, + ReadDmaRetryLbaData, ReadLba48Data, ReadDmaLba48Data, ReadLongData, ReadLongRetryData, + ReadLongLbaData, ReadLongRetryLbaData, TocData, FullTocData, AtipData, PmaData, ReadCdData, + ReadCdMsfData, ReadCdFullData, ReadCdMsfFullData, Track1PregapData, LeadInData, LeadOutData, + C2PointersData, PQSubchannelData, RWSubchannelData, CorrectedSubchannelData, PQSubchannelWithC2Data, + RWSubchannelWithC2Data, CorrectedSubchannelWithC2Data, PfiData, DmiData, CmiData, DvdBcaData, + DvdAacsData, DvdDdsData, DvdSaiData, PriData, EmbossedPfiData, AdipData, DcbData, HdCmiData, + DvdLayerData, BluBcaData, BluDdsData, BluSaiData, BluDiData, BluPacData, PlextorReadCddaData, + PioneerReadCddaData, PioneerReadCddaMsfData, NecReadCddaData, PlextorReadRawDVDData, HLDTSTReadRawDVDData, + AtaId, MmcId, ScsiId) + SELECT Id, IdentifyData, BlocksSql AS Blocks, BlockSizeSql AS BlockSize, CanReadAACS, CanReadADIP, + CanReadATIP, CanReadBCA, CanReadC2Pointers, CanReadCMI, CanReadCorrectedSubchannel, + CanReadCorrectedSubchannelWithC2, CanReadDCB, CanReadDDS, CanReadDMI, CanReadDiscInformation, + CanReadFullTOC, CanReadHDCMI, CanReadLayerCapacity, CanReadFirstTrackPreGap, CanReadLeadIn, + CanReadLeadOut, CanReadMediaID, CanReadMediaSerial, CanReadPAC, CanReadPFI, CanReadPMA, + CanReadPQSubchannel, CanReadPQSubchannelWithC2, CanReadPRI, CanReadRWSubchannel, + CanReadRWSubchannelWithC2, CanReadRecordablePFI, CanReadSpareAreaInformation, CanReadTOC, + Density, LongBlockSizeSql AS LongBlockSize, Manufacturer, MediaIsRecognized, MediumType, + MediumTypeName, Model, SupportsHLDTSTReadRawDVD, SupportsNECReadCDDA, SupportsPioneerReadCDDA, + SupportsPioneerReadCDDAMSF, SupportsPlextorReadCDDA, SupportsPlextorReadRawDVD, SupportsRead10, + SupportsRead12, SupportsRead16, SupportsRead6, SupportsReadCapacity16, SupportsReadCapacity, + SupportsReadCd, SupportsReadCdMsf, SupportsReadCdRaw, SupportsReadCdMsfRaw, + SupportsReadLong16, SupportsReadLong, ModeSense6Data, ModeSense10Data, CHS_Id, CurrentCHS_Id, + LBASectorsSql AS LBASectors, LBA48SectorsSql AS LBA48Sectors, + LogicalAlignmentSql AS LogicalAlignment,NominalRotationRateSql AS NominalRotationRate, + PhysicalBlockSizeSql AS PhysicalBlockSize, SolidStateDevice, {0} AS UnformattedBPT, + UnformattedBPSSql AS UnformattedBPS, SupportsReadDmaLba, SupportsReadDmaRetryLba, SupportsReadLba, + SupportsReadRetryLba, SupportsReadLongLba, SupportsReadLongRetryLba, SupportsSeekLba, + SupportsReadDmaLba48, SupportsReadLba48, SupportsReadDma, SupportsReadDmaRetry, SupportsReadRetry, + SupportsReadSectors, SupportsReadLongRetry, SupportsSeek, CanReadingIntersessionLeadIn, + CanReadingIntersessionLeadOut, IntersessionLeadInData, IntersessionLeadOutData, BlocksSql, + BlockSizeSql, LongBlockSizeSql, LBASectorsSql, LBA48SectorsSql, LogicalAlignmentSql, + NominalRotationRateSql, PhysicalBlockSizeSql, UnformattedBPTSql, UnformattedBPSSql, + Read6Data, Read10Data, Read12Data, Read16Data, ReadLong10Data, ReadLong16Data, + ReadSectorsData, ReadSectorsRetryData, ReadDmaData, ReadDmaRetryData, ReadLbaData, + ReadRetryLbaData, ReadDmaLbaData, ReadDmaRetryLbaData, ReadLba48Data, ReadDmaLba48Data, + ReadLongData, ReadLongRetryData, ReadLongLbaData, ReadLongRetryLbaData, TocData, FullTocData, + AtipData, PmaData, ReadCdData, ReadCdMsfData, ReadCdFullData, ReadCdMsfFullData, Track1PregapData, + LeadInData, LeadOutData, C2PointersData, PQSubchannelData, RWSubchannelData, CorrectedSubchannelData, + PQSubchannelWithC2Data, RWSubchannelWithC2Data, CorrectedSubchannelWithC2Data, PfiData, DmiData, + CmiData, DvdBcaData, DvdAacsData, DvdDdsData, DvdSaiData, PriData, EmbossedPfiData, + AdipData, DcbData, HdCmiData, DvdLayerData, BluBcaData, BluDdsData, BluSaiData, BluDiData, + BluPacData, PlextorReadCddaData, PioneerReadCddaData, PioneerReadCddaMsfData, NecReadCddaData, + PlextorReadRawDVDData, HLDTSTReadRawDVDData, Ata_Id, Mmc_Id, Scsi_Id + FROM TestedMedias WHERE + (EXISTS(SELECT 1 FROM Atas WHERE Atas.Id = Ata_Id) OR Ata_Id IS NULL) AND + (EXISTS(SELECT 1 FROM Scsis WHERE Scsis.Id = SCSI_Id) OR SCSI_Id IS NULL) AND + (EXISTS(SELECT 1 FROM Chs WHERE Chs.Id = CHS_Id) OR CHS_Id IS NULL) AND + (EXISTS(SELECT 1 FROM Chs WHERE Chs.Id = CurrentCHS_Id) OR CurrentCHS_Id IS NULL) AND + (EXISTS(SELECT 1 FROM Mmc WHERE Mmc.Id = Mmc_Id) OR Mmc_Id IS NULL) AND + UnformattedBPTSql {1}"; + + migrationBuilder.Sql(string.Format(preFormat, "UnformattedBPTSql", "IS NULL")); + migrationBuilder.Sql(string.Format(preFormat, "UnformattedBPTSql", ">= 0")); + migrationBuilder.Sql(string.Format(preFormat, "(65536+UnformattedBPTSql)", "< 0")); + + migrationBuilder.DropTable("TestedMedias"); + } + #endregion + + #region TABLE: Ata + migrationBuilder.CreateTable( + name: "Ata", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Identify = table.Column(nullable: true), + ReadCapabilitiesId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Ata", x => x.Id); + table.ForeignKey( + name: "FK_Ata_TestedMedia_ReadCapabilitiesId", + column: x => x.ReadCapabilitiesId, + principalTable: "TestedMedia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (AtasExists) + { + migrationBuilder.Sql( + "INSERT INTO Ata (Id, Identify, ReadCapabilitiesId) SELECT Id, Identify, ReadCapabilities_Id FROM Atas"); + migrationBuilder.DropTable("Atas"); + } + #endregion + + #region TABLE: Scsi + migrationBuilder.CreateTable( + name: "Scsi", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + InquiryData = table.Column(nullable: true), + SupportsModeSense6 = table.Column(nullable: false), + SupportsModeSense10 = table.Column(nullable: false), + SupportsModeSubpages = table.Column(nullable: false), + ModeSenseId = table.Column(nullable: true), + MultiMediaDeviceId = table.Column(nullable: true), + ReadCapabilitiesId = table.Column(nullable: true), + SequentialDeviceId = table.Column(nullable: true), + ModeSense6Data = table.Column(nullable: true), + ModeSense10Data = table.Column(nullable: true), + ModeSense6CurrentData = table.Column(nullable: true), + ModeSense10CurrentData = table.Column(nullable: true), + ModeSense6ChangeableData = table.Column(nullable: true), + ModeSense10ChangeableData = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Scsi", x => x.Id); + table.ForeignKey( + name: "FK_Scsi_ScsiMode_ModeSenseId", + column: x => x.ModeSenseId, + principalTable: "ScsiMode", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Scsi_Mmc_MultiMediaDeviceId", + column: x => x.MultiMediaDeviceId, + principalTable: "Mmc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Scsi_TestedMedia_ReadCapabilitiesId", + column: x => x.ReadCapabilitiesId, + principalTable: "TestedMedia", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Scsi_Ssc_SequentialDeviceId", + column: x => x.SequentialDeviceId, + principalTable: "Ssc", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (ScsisExists) + { + migrationBuilder.Sql( + "INSERT INTO Scsi (Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSenseId, MultiMediaDeviceId, ReadCapabilitiesId, SequentialDeviceId, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData) SELECT Id, InquiryData, SupportsModeSense6, SupportsModeSense10, SupportsModeSubpages, ModeSense_Id, MultiMediaDevice_Id, ReadCapabilities_Id, SequentialDevice_Id, ModeSense6Data, ModeSense10Data, ModeSense6CurrentData, ModeSense10CurrentData, ModeSense6ChangeableData, ModeSense10ChangeableData FROM Scsis WHERE EXISTS(SELECT 1 from Mmc WHERE Mmc.Id = Scsis.MultiMediaDevice_Id) OR MultiMediaDevice_Id IS NULL"); + migrationBuilder.DropTable("Scsis"); + } + #endregion + + #region TABLE: ScsiPage + migrationBuilder.CreateTable( + name: "ScsiPage", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + page = table.Column(nullable: false), + subpage = table.Column(nullable: true), + value = table.Column(nullable: true), + ScsiId = table.Column(nullable: true), + ScsiModeId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ScsiPage", x => x.Id); + table.ForeignKey( + name: "FK_ScsiPage_Scsi_ScsiId", + column: x => x.ScsiId, + principalTable: "Scsi", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ScsiPage_ScsiMode_ScsiModeId", + column: x => x.ScsiModeId, + principalTable: "ScsiMode", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + if (ScsiPagesExists) + { + migrationBuilder.Sql( + "INSERT INTO ScsiPage (Id, page, subpage, value, ScsiId, ScsiModeId) SELECT Id, page, subpage, value, Scsi_Id, ScsiMode_Id FROM ScsiPages"); + migrationBuilder.DropTable("ScsiPages"); + } + #endregion + + migrationBuilder.CreateIndex( + name: "IX_Ata_ReadCapabilitiesId", + table: "Ata", + column: "ReadCapabilitiesId"); + + migrationBuilder.CreateIndex( + name: "IX_BlockDescriptor_ScsiModeId", + table: "BlockDescriptor", + column: "ScsiModeId"); + + migrationBuilder.CreateIndex( + name: "IX_CdOffsets_ModifiedWhen", + table: "CdOffsets", + column: "ModifiedWhen"); + + migrationBuilder.CreateIndex( + name: "IX_DensityCode_SscSupportedMediaId", + table: "DensityCode", + column: "SscSupportedMediaId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_ATAId", + table: "Devices", + column: "ATAId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_ATAPIId", + table: "Devices", + column: "ATAPIId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_CdOffsetId", + table: "Devices", + column: "CdOffsetId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_FireWireId", + table: "Devices", + column: "FireWireId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_ModifiedWhen", + table: "Devices", + column: "ModifiedWhen"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_MultiMediaCardId", + table: "Devices", + column: "MultiMediaCardId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_PCMCIAId", + table: "Devices", + column: "PCMCIAId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_SCSIId", + table: "Devices", + column: "SCSIId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_SecureDigitalId", + table: "Devices", + column: "SecureDigitalId"); + + migrationBuilder.CreateIndex( + name: "IX_Devices_USBId", + table: "Devices", + column: "USBId"); + + migrationBuilder.CreateIndex( + name: "IX_DeviceStats_ReportId", + table: "DeviceStats", + column: "ReportId"); + + migrationBuilder.CreateIndex( + name: "IX_Mmc_FeaturesId", + table: "Mmc", + column: "FeaturesId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_ATAId", + table: "Reports", + column: "ATAId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_ATAPIId", + table: "Reports", + column: "ATAPIId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_FireWireId", + table: "Reports", + column: "FireWireId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_MultiMediaCardId", + table: "Reports", + column: "MultiMediaCardId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_PCMCIAId", + table: "Reports", + column: "PCMCIAId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_SCSIId", + table: "Reports", + column: "SCSIId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_SecureDigitalId", + table: "Reports", + column: "SecureDigitalId"); + + migrationBuilder.CreateIndex( + name: "IX_Reports_USBId", + table: "Reports", + column: "USBId"); + + migrationBuilder.CreateIndex( + name: "IX_Scsi_ModeSenseId", + table: "Scsi", + column: "ModeSenseId"); + + migrationBuilder.CreateIndex( + name: "IX_Scsi_MultiMediaDeviceId", + table: "Scsi", + column: "MultiMediaDeviceId"); + + migrationBuilder.CreateIndex( + name: "IX_Scsi_ReadCapabilitiesId", + table: "Scsi", + column: "ReadCapabilitiesId"); + + migrationBuilder.CreateIndex( + name: "IX_Scsi_SequentialDeviceId", + table: "Scsi", + column: "SequentialDeviceId"); + + migrationBuilder.CreateIndex( + name: "IX_ScsiPage_ScsiId", + table: "ScsiPage", + column: "ScsiId"); + + migrationBuilder.CreateIndex( + name: "IX_ScsiPage_ScsiModeId", + table: "ScsiPage", + column: "ScsiModeId"); + + migrationBuilder.CreateIndex( + name: "IX_SscSupportedMedia_SscId", + table: "SscSupportedMedia", + column: "SscId"); + + migrationBuilder.CreateIndex( + name: "IX_SscSupportedMedia_TestedSequentialMediaId", + table: "SscSupportedMedia", + column: "TestedSequentialMediaId"); + + migrationBuilder.CreateIndex( + name: "IX_SupportedDensity_SscId", + table: "SupportedDensity", + column: "SscId"); + + migrationBuilder.CreateIndex( + name: "IX_SupportedDensity_TestedSequentialMediaId", + table: "SupportedDensity", + column: "TestedSequentialMediaId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedMedia_AtaId", + table: "TestedMedia", + column: "AtaId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedMedia_CHSId", + table: "TestedMedia", + column: "CHSId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedMedia_CurrentCHSId", + table: "TestedMedia", + column: "CurrentCHSId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedMedia_MmcId", + table: "TestedMedia", + column: "MmcId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedMedia_ScsiId", + table: "TestedMedia", + column: "ScsiId"); + + migrationBuilder.CreateIndex( + name: "IX_TestedSequentialMedia_SscId", + table: "TestedSequentialMedia", + column: "SscId"); + + migrationBuilder.CreateIndex( + name: "IX_UsbProducts_ModifiedWhen", + table: "UsbProducts", + column: "ModifiedWhen"); + + migrationBuilder.CreateIndex( + name: "IX_UsbProducts_ProductId", + table: "UsbProducts", + column: "ProductId"); + + migrationBuilder.CreateIndex( + name: "IX_UsbProducts_VendorId", + table: "UsbProducts", + column: "VendorId"); + + migrationBuilder.CreateIndex( + name: "IX_UsbVendors_ModifiedWhen", + table: "UsbVendors", + column: "ModifiedWhen"); + + migrationBuilder.CreateIndex( + name: "IX_UsbVendors_VendorId", + table: "UsbVendors", + column: "VendorId", + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Devices_Ata_ATAId", + table: "Devices", + column: "ATAId", + principalTable: "Ata", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Devices_Ata_ATAPIId", + table: "Devices", + column: "ATAPIId", + principalTable: "Ata", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Devices_Scsi_SCSIId", + table: "Devices", + column: "SCSIId", + principalTable: "Scsi", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Reports_Ata_ATAId", + table: "Reports", + column: "ATAId", + principalTable: "Ata", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Reports_Ata_ATAPIId", + table: "Reports", + column: "ATAPIId", + principalTable: "Ata", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.Sql( + "DELETE FROM Reports WHERE NOT EXISTS(SELECT 1 from Scsi WHERE Scsi.Id = SCSIId) AND SCSIId IS NOT NULL"); + + migrationBuilder.AddForeignKey( + name: "FK_Reports_Scsi_SCSIId", + table: "Reports", + column: "SCSIId", + principalTable: "Scsi", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TestedMedia_Ata_AtaId", + table: "TestedMedia", + column: "AtaId", + principalTable: "Ata", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TestedMedia_Scsi_ScsiId", + table: "TestedMedia", + column: "ScsiId", + principalTable: "Scsi", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + if(EFExists) + migrationBuilder.DropTable("__MigrationHistory"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Ata_TestedMedia_ReadCapabilitiesId", + table: "Ata"); + + migrationBuilder.DropForeignKey( + name: "FK_Scsi_TestedMedia_ReadCapabilitiesId", + table: "Scsi"); + + migrationBuilder.DropTable( + name: "BlockDescriptor"); + + migrationBuilder.DropTable( + name: "Commands"); + + migrationBuilder.DropTable( + name: "DensityCode"); + + migrationBuilder.DropTable( + name: "DeviceStats"); + + migrationBuilder.DropTable( + name: "Filesystems"); + + migrationBuilder.DropTable( + name: "Filters"); + + migrationBuilder.DropTable( + name: "MediaFormats"); + + migrationBuilder.DropTable( + name: "Medias"); + + migrationBuilder.DropTable( + name: "OperatingSystems"); + + migrationBuilder.DropTable( + name: "Partitions"); + + migrationBuilder.DropTable( + name: "Reports"); + + migrationBuilder.DropTable( + name: "ScsiPage"); + + migrationBuilder.DropTable( + name: "SupportedDensity"); + + migrationBuilder.DropTable( + name: "UsbProducts"); + + migrationBuilder.DropTable( + name: "Versions"); + + migrationBuilder.DropTable( + name: "SscSupportedMedia"); + + migrationBuilder.DropTable( + name: "Devices"); + + migrationBuilder.DropTable( + name: "UsbVendors"); + + migrationBuilder.DropTable( + name: "TestedSequentialMedia"); + + migrationBuilder.DropTable( + name: "CdOffsets"); + + migrationBuilder.DropTable( + name: "FireWire"); + + migrationBuilder.DropTable( + name: "MmcSd"); + + migrationBuilder.DropTable( + name: "Pcmcia"); + + migrationBuilder.DropTable( + name: "Usb"); + + migrationBuilder.DropTable( + name: "TestedMedia"); + + migrationBuilder.DropTable( + name: "Ata"); + + migrationBuilder.DropTable( + name: "Chs"); + + migrationBuilder.DropTable( + name: "Scsi"); + + migrationBuilder.DropTable( + name: "ScsiMode"); + + migrationBuilder.DropTable( + name: "Mmc"); + + migrationBuilder.DropTable( + name: "Ssc"); + + migrationBuilder.DropTable( + name: "MmcFeatures"); + } + } +} diff --git a/DiscImageChef.Server/Migrations/Configuration.cs b/DiscImageChef.Server/Migrations/Configuration.cs deleted file mode 100644 index db98de2a..00000000 --- a/DiscImageChef.Server/Migrations/Configuration.cs +++ /dev/null @@ -1,53 +0,0 @@ -// /*************************************************************************** -// The Disc Image Chef -// ---------------------------------------------------------------------------- -// -// Filename : Configuration.cs -// Author(s) : Natalia Portillo -// -// Component : DiscImageChef Server. -// -// --[ Description ] ---------------------------------------------------------- -// -// Provides database context configuration. -// -// --[ License ] -------------------------------------------------------------- -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 2.1 of the -// License, or (at your option) any later version. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2019 Natalia Portillo -// ****************************************************************************/ - -using System.Data.Entity.Migrations; -using DiscImageChef.Server.Models; - -namespace DiscImageChef.Server.Migrations -{ - public sealed class Configuration : DbMigrationsConfiguration - { - public Configuration() - { - AutomaticMigrationsEnabled = false; - } - - protected override void Seed(DicServerContext context) - { - // This method will be called after migrating to the latest version. - - // You can use the DbSet.AddOrUpdate() helper extension method - // to avoid creating duplicate seed data. - } - } -} \ No newline at end of file diff --git a/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs b/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs new file mode 100644 index 00000000..9b0fca7f --- /dev/null +++ b/DiscImageChef.Server/Migrations/DicServerContextModelSnapshot.cs @@ -0,0 +1,2096 @@ +// +using System; +using DiscImageChef.Server.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace DiscImageChef.Server.Migrations +{ + [DbContext(typeof(DicServerContext))] + partial class DicServerContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "3.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 64); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Identify") + .HasColumnType("longblob"); + + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ReadCapabilitiesId"); + + b.ToTable("Ata"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlockLength") + .HasColumnType("int unsigned"); + + b.Property("BlockLengthSql") + .HasColumnType("int"); + + b.Property("Blocks") + .HasColumnType("bigint unsigned"); + + b.Property("BlocksSql") + .HasColumnType("bigint"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("ScsiModeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("BlockDescriptor"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Chs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Cylinders") + .HasColumnType("smallint unsigned"); + + b.Property("CylindersSql") + .HasColumnType("smallint"); + + b.Property("Heads") + .HasColumnType("smallint unsigned"); + + b.Property("HeadsSql") + .HasColumnType("smallint"); + + b.Property("Sectors") + .HasColumnType("smallint unsigned"); + + b.Property("SectorsSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Chs"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Code") + .HasColumnType("int"); + + b.Property("SscSupportedMediaId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("SscSupportedMediaId"); + + b.ToTable("DensityCode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.FireWire", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductID") + .HasColumnType("int unsigned"); + + b.Property("ProductIDSql") + .HasColumnType("int"); + + b.Property("RemovableMedia") + .HasColumnType("bit"); + + b.Property("VendorID") + .HasColumnType("int unsigned"); + + b.Property("VendorIDSql") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("FireWire"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("FeaturesId") + .HasColumnType("int"); + + b.Property("ModeSense2AData") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.HasIndex("FeaturesId"); + + b.ToTable("Mmc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcFeatures", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AACSVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("AGIDs") + .HasColumnType("tinyint unsigned"); + + b.Property("BinaryData") + .HasColumnType("longblob"); + + b.Property("BindingNonceBlocks") + .HasColumnType("tinyint unsigned"); + + b.Property("BlocksPerReadableUnit") + .HasColumnType("smallint unsigned"); + + b.Property("BlocksPerReadableUnitSql") + .HasColumnType("smallint"); + + b.Property("BufferUnderrunFreeInDVD") + .HasColumnType("bit"); + + b.Property("BufferUnderrunFreeInSAO") + .HasColumnType("bit"); + + b.Property("BufferUnderrunFreeInTAO") + .HasColumnType("bit"); + + b.Property("CPRMVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("CSSVersion") + .HasColumnType("tinyint unsigned"); + + b.Property("CanAudioScan") + .HasColumnType("bit"); + + b.Property("CanEject") + .HasColumnType("bit"); + + b.Property("CanEraseSector") + .HasColumnType("bit"); + + b.Property("CanExpandBDRESpareArea") + .HasColumnType("bit"); + + b.Property("CanFormat") + .HasColumnType("bit"); + + b.Property("CanFormatBDREWithoutSpare") + .HasColumnType("bit"); + + b.Property("CanFormatCert") + .HasColumnType("bit"); + + b.Property("CanFormatFRF") + .HasColumnType("bit"); + + b.Property("CanFormatQCert") + .HasColumnType("bit"); + + b.Property("CanFormatRRM") + .HasColumnType("bit"); + + b.Property("CanGenerateBindingNonce") + .HasColumnType("bit"); + + b.Property("CanLoad") + .HasColumnType("bit"); + + b.Property("CanMuteSeparateChannels") + .HasColumnType("bit"); + + b.Property("CanOverwriteSAOTrack") + .HasColumnType("bit"); + + b.Property("CanOverwriteTAOTrack") + .HasColumnType("bit"); + + b.Property("CanPlayCDAudio") + .HasColumnType("bit"); + + b.Property("CanPseudoOverwriteBDR") + .HasColumnType("bit"); + + b.Property("CanReadAllDualR") + .HasColumnType("bit"); + + b.Property("CanReadAllDualRW") + .HasColumnType("bit"); + + b.Property("CanReadBD") + .HasColumnType("bit"); + + b.Property("CanReadBDR") + .HasColumnType("bit"); + + b.Property("CanReadBDRE1") + .HasColumnType("bit"); + + b.Property("CanReadBDRE2") + .HasColumnType("bit"); + + b.Property("CanReadBDROM") + .HasColumnType("bit"); + + b.Property("CanReadBluBCA") + .HasColumnType("bit"); + + b.Property("CanReadCD") + .HasColumnType("bit"); + + b.Property("CanReadCDMRW") + .HasColumnType("bit"); + + b.Property("CanReadCPRM_MKB") + .HasColumnType("bit"); + + b.Property("CanReadDDCD") + .HasColumnType("bit"); + + b.Property("CanReadDVD") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusMRW") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusR") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRDL") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRW") + .HasColumnType("bit"); + + b.Property("CanReadDVDPlusRWDL") + .HasColumnType("bit"); + + b.Property("CanReadDriveAACSCertificate") + .HasColumnType("bit"); + + b.Property("CanReadHDDVD") + .HasColumnType("bit"); + + b.Property("CanReadHDDVDR") + .HasColumnType("bit"); + + b.Property("CanReadHDDVDRAM") + .HasColumnType("bit"); + + b.Property("CanReadLeadInCDText") + .HasColumnType("bit"); + + b.Property("CanReadOldBDR") + .HasColumnType("bit"); + + b.Property("CanReadOldBDRE") + .HasColumnType("bit"); + + b.Property("CanReadOldBDROM") + .HasColumnType("bit"); + + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); + + b.Property("CanReportDriveSerial") + .HasColumnType("bit"); + + b.Property("CanReportMediaSerial") + .HasColumnType("bit"); + + b.Property("CanTestWriteDDCDR") + .HasColumnType("bit"); + + b.Property("CanTestWriteDVD") + .HasColumnType("bit"); + + b.Property("CanTestWriteInSAO") + .HasColumnType("bit"); + + b.Property("CanTestWriteInTAO") + .HasColumnType("bit"); + + b.Property("CanUpgradeFirmware") + .HasColumnType("bit"); + + b.Property("CanWriteBD") + .HasColumnType("bit"); + + b.Property("CanWriteBDR") + .HasColumnType("bit"); + + b.Property("CanWriteBDRE1") + .HasColumnType("bit"); + + b.Property("CanWriteBDRE2") + .HasColumnType("bit"); + + b.Property("CanWriteBusEncryptedBlocks") + .HasColumnType("bit"); + + b.Property("CanWriteCDMRW") + .HasColumnType("bit"); + + b.Property("CanWriteCDRW") + .HasColumnType("bit"); + + b.Property("CanWriteCDRWCAV") + .HasColumnType("bit"); + + b.Property("CanWriteCDSAO") + .HasColumnType("bit"); + + b.Property("CanWriteCDTAO") + .HasColumnType("bit"); + + b.Property("CanWriteCSSManagedDVD") + .HasColumnType("bit"); + + b.Property("CanWriteDDCDR") + .HasColumnType("bit"); + + b.Property("CanWriteDDCDRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusMRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusR") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRW") + .HasColumnType("bit"); + + b.Property("CanWriteDVDPlusRWDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDR") + .HasColumnType("bit"); + + b.Property("CanWriteDVDRDL") + .HasColumnType("bit"); + + b.Property("CanWriteDVDRW") + .HasColumnType("bit"); + + b.Property("CanWriteHDDVDR") + .HasColumnType("bit"); + + b.Property("CanWriteHDDVDRAM") + .HasColumnType("bit"); + + b.Property("CanWriteOldBDR") + .HasColumnType("bit"); + + b.Property("CanWriteOldBDRE") + .HasColumnType("bit"); + + b.Property("CanWritePackedSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("CanWriteRWSubchannelInSAO") + .HasColumnType("bit"); + + b.Property("CanWriteRWSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("CanWriteRaw") + .HasColumnType("bit"); + + b.Property("CanWriteRawMultiSession") + .HasColumnType("bit"); + + b.Property("CanWriteRawSubchannelInTAO") + .HasColumnType("bit"); + + b.Property("ChangerIsSideChangeCapable") + .HasColumnType("bit"); + + b.Property("ChangerSlots") + .HasColumnType("tinyint unsigned"); + + b.Property("ChangerSupportsDiscPresent") + .HasColumnType("bit"); + + b.Property("DBML") + .HasColumnType("bit"); + + b.Property("DVDMultiRead") + .HasColumnType("bit"); + + b.Property("EmbeddedChanger") + .HasColumnType("bit"); + + b.Property("ErrorRecoveryPage") + .HasColumnType("bit"); + + b.Property("FirmwareDate") + .HasColumnType("datetime(6)"); + + b.Property("LoadingMechanismType") + .HasColumnType("tinyint unsigned"); + + b.Property("Locked") + .HasColumnType("bit"); + + b.Property("LogicalBlockSize") + .HasColumnType("int unsigned"); + + b.Property("LogicalBlockSizeSql") + .HasColumnType("int"); + + b.Property("MultiRead") + .HasColumnType("bit"); + + b.Property("PhysicalInterfaceStandardNumber") + .HasColumnType("int unsigned"); + + b.Property("PhysicalInterfaceStandardNumberSql") + .HasColumnType("int"); + + b.Property("PreventJumper") + .HasColumnType("bit"); + + b.Property("SupportsAACS") + .HasColumnType("bit"); + + b.Property("SupportsBusEncryption") + .HasColumnType("bit"); + + b.Property("SupportsC2") + .HasColumnType("bit"); + + b.Property("SupportsCPRM") + .HasColumnType("bit"); + + b.Property("SupportsCSS") + .HasColumnType("bit"); + + b.Property("SupportsDAP") + .HasColumnType("bit"); + + b.Property("SupportsDeviceBusyEvent") + .HasColumnType("bit"); + + b.Property("SupportsHybridDiscs") + .HasColumnType("bit"); + + b.Property("SupportsModePage1Ch") + .HasColumnType("bit"); + + b.Property("SupportsOSSC") + .HasColumnType("bit"); + + b.Property("SupportsPWP") + .HasColumnType("bit"); + + b.Property("SupportsSWPP") + .HasColumnType("bit"); + + b.Property("SupportsSecurDisc") + .HasColumnType("bit"); + + b.Property("SupportsSeparateVolume") + .HasColumnType("bit"); + + b.Property("SupportsVCPS") + .HasColumnType("bit"); + + b.Property("SupportsWriteInhibitDCB") + .HasColumnType("bit"); + + b.Property("SupportsWriteProtectPAC") + .HasColumnType("bit"); + + b.Property("VolumeLevels") + .HasColumnType("smallint unsigned"); + + b.Property("VolumeLevelsSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("MmcFeatures"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.MmcSd", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CID") + .HasColumnType("longblob"); + + b.Property("CSD") + .HasColumnType("longblob"); + + b.Property("ExtendedCSD") + .HasColumnType("longblob"); + + b.Property("OCR") + .HasColumnType("longblob"); + + b.Property("SCR") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.ToTable("MmcSd"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Pcmcia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CIS") + .HasColumnType("longblob"); + + b.Property("CardCode") + .HasColumnType("smallint unsigned"); + + b.Property("CardCodeSql") + .HasColumnType("smallint"); + + b.Property("Compliance") + .HasColumnType("longtext"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("ManufacturerCode") + .HasColumnType("smallint unsigned"); + + b.Property("ManufacturerCodeSql") + .HasColumnType("smallint"); + + b.Property("ProductName") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Pcmcia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("InquiryData") + .HasColumnType("longblob"); + + b.Property("ModeSense10ChangeableData") + .HasColumnType("longblob"); + + b.Property("ModeSense10CurrentData") + .HasColumnType("longblob"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6ChangeableData") + .HasColumnType("longblob"); + + b.Property("ModeSense6CurrentData") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("ModeSenseId") + .HasColumnType("int"); + + b.Property("MultiMediaDeviceId") + .HasColumnType("int"); + + b.Property("ReadCapabilitiesId") + .HasColumnType("int"); + + b.Property("SequentialDeviceId") + .HasColumnType("int"); + + b.Property("SupportsModeSense10") + .HasColumnType("bit"); + + b.Property("SupportsModeSense6") + .HasColumnType("bit"); + + b.Property("SupportsModeSubpages") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("ModeSenseId"); + + b.HasIndex("MultiMediaDeviceId"); + + b.HasIndex("ReadCapabilitiesId"); + + b.HasIndex("SequentialDeviceId"); + + b.ToTable("Scsi"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiMode", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlankCheckEnabled") + .HasColumnType("bit"); + + b.Property("BufferedMode") + .HasColumnType("tinyint unsigned"); + + b.Property("DPOandFUA") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("Speed") + .HasColumnType("tinyint unsigned"); + + b.Property("WriteProtected") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.ToTable("ScsiMode"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ScsiId") + .HasColumnType("int"); + + b.Property("ScsiModeId") + .HasColumnType("int"); + + b.Property("page") + .HasColumnType("tinyint unsigned"); + + b.Property("subpage") + .HasColumnType("tinyint unsigned"); + + b.Property("value") + .HasColumnType("longblob"); + + b.HasKey("Id"); + + b.HasIndex("ScsiId"); + + b.HasIndex("ScsiModeId"); + + b.ToTable("ScsiPage"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ssc", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BlockSizeGranularity") + .HasColumnType("tinyint unsigned"); + + b.Property("MaxBlockLength") + .HasColumnType("int unsigned"); + + b.Property("MaxBlockLengthSql") + .HasColumnType("int"); + + b.Property("MinBlockLength") + .HasColumnType("int unsigned"); + + b.Property("MinBlockLengthSql") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Ssc"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Length") + .HasColumnType("smallint unsigned"); + + b.Property("LengthSql") + .HasColumnType("smallint"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Organization") + .HasColumnType("longtext"); + + b.Property("SscId") + .HasColumnType("int"); + + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); + + b.Property("Width") + .HasColumnType("smallint unsigned"); + + b.Property("WidthSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SscSupportedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("BitsPerMm") + .HasColumnType("int unsigned"); + + b.Property("BitsPerMmSql") + .HasColumnType("int"); + + b.Property("Capacity") + .HasColumnType("int unsigned"); + + b.Property("CapacitySql") + .HasColumnType("int"); + + b.Property("DefaultDensity") + .HasColumnType("bit"); + + b.Property("Description") + .HasColumnType("longtext"); + + b.Property("Duplicate") + .HasColumnType("bit"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Organization") + .HasColumnType("longtext"); + + b.Property("PrimaryCode") + .HasColumnType("tinyint unsigned"); + + b.Property("SecondaryCode") + .HasColumnType("tinyint unsigned"); + + b.Property("SscId") + .HasColumnType("int"); + + b.Property("TestedSequentialMediaId") + .HasColumnType("int"); + + b.Property("Tracks") + .HasColumnType("smallint unsigned"); + + b.Property("TracksSql") + .HasColumnType("smallint"); + + b.Property("Width") + .HasColumnType("smallint unsigned"); + + b.Property("WidthSql") + .HasColumnType("smallint"); + + b.Property("Writable") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.HasIndex("TestedSequentialMediaId"); + + b.ToTable("SupportedDensity"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AdipData") + .HasColumnType("longblob"); + + b.Property("AtaId") + .HasColumnType("int"); + + b.Property("AtipData") + .HasColumnType("longblob"); + + b.Property("BlockSize") + .HasColumnType("int unsigned"); + + b.Property("BlockSizeSql") + .HasColumnType("int"); + + b.Property("Blocks") + .HasColumnType("bigint unsigned"); + + b.Property("BlocksSql") + .HasColumnType("bigint"); + + b.Property("BluBcaData") + .HasColumnType("longblob"); + + b.Property("BluDdsData") + .HasColumnType("longblob"); + + b.Property("BluDiData") + .HasColumnType("longblob"); + + b.Property("BluPacData") + .HasColumnType("longblob"); + + b.Property("BluSaiData") + .HasColumnType("longblob"); + + b.Property("C2PointersData") + .HasColumnType("longblob"); + + b.Property("CHSId") + .HasColumnType("int"); + + b.Property("CanReadAACS") + .HasColumnType("bit"); + + b.Property("CanReadADIP") + .HasColumnType("bit"); + + b.Property("CanReadATIP") + .HasColumnType("bit"); + + b.Property("CanReadBCA") + .HasColumnType("bit"); + + b.Property("CanReadC2Pointers") + .HasColumnType("bit"); + + b.Property("CanReadCMI") + .HasColumnType("bit"); + + b.Property("CanReadCorrectedSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadCorrectedSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadDCB") + .HasColumnType("bit"); + + b.Property("CanReadDDS") + .HasColumnType("bit"); + + b.Property("CanReadDMI") + .HasColumnType("bit"); + + b.Property("CanReadDiscInformation") + .HasColumnType("bit"); + + b.Property("CanReadFirstTrackPreGap") + .HasColumnType("bit"); + + b.Property("CanReadFullTOC") + .HasColumnType("bit"); + + b.Property("CanReadHDCMI") + .HasColumnType("bit"); + + b.Property("CanReadLayerCapacity") + .HasColumnType("bit"); + + b.Property("CanReadLeadIn") + .HasColumnType("bit"); + + b.Property("CanReadLeadOut") + .HasColumnType("bit"); + + b.Property("CanReadMediaID") + .HasColumnType("bit"); + + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); + + b.Property("CanReadPAC") + .HasColumnType("bit"); + + b.Property("CanReadPFI") + .HasColumnType("bit"); + + b.Property("CanReadPMA") + .HasColumnType("bit"); + + b.Property("CanReadPQSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadPQSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadPRI") + .HasColumnType("bit"); + + b.Property("CanReadRWSubchannel") + .HasColumnType("bit"); + + b.Property("CanReadRWSubchannelWithC2") + .HasColumnType("bit"); + + b.Property("CanReadRecordablePFI") + .HasColumnType("bit"); + + b.Property("CanReadSpareAreaInformation") + .HasColumnType("bit"); + + b.Property("CanReadTOC") + .HasColumnType("bit"); + + b.Property("CanReadingIntersessionLeadIn") + .HasColumnType("bit"); + + b.Property("CanReadingIntersessionLeadOut") + .HasColumnType("bit"); + + b.Property("CmiData") + .HasColumnType("longblob"); + + b.Property("CorrectedSubchannelData") + .HasColumnType("longblob"); + + b.Property("CorrectedSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("CurrentCHSId") + .HasColumnType("int"); + + b.Property("DcbData") + .HasColumnType("longblob"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("DmiData") + .HasColumnType("longblob"); + + b.Property("DvdAacsData") + .HasColumnType("longblob"); + + b.Property("DvdBcaData") + .HasColumnType("longblob"); + + b.Property("DvdDdsData") + .HasColumnType("longblob"); + + b.Property("DvdLayerData") + .HasColumnType("longblob"); + + b.Property("DvdSaiData") + .HasColumnType("longblob"); + + b.Property("EmbossedPfiData") + .HasColumnType("longblob"); + + b.Property("FullTocData") + .HasColumnType("longblob"); + + b.Property("HLDTSTReadRawDVDData") + .HasColumnType("longblob"); + + b.Property("HdCmiData") + .HasColumnType("longblob"); + + b.Property("IdentifyData") + .HasColumnType("longblob"); + + b.Property("IntersessionLeadInData") + .HasColumnType("longblob"); + + b.Property("IntersessionLeadOutData") + .HasColumnType("longblob"); + + b.Property("LBA48Sectors") + .HasColumnType("bigint unsigned"); + + b.Property("LBA48SectorsSql") + .HasColumnType("bigint"); + + b.Property("LBASectors") + .HasColumnType("int unsigned"); + + b.Property("LBASectorsSql") + .HasColumnType("int"); + + b.Property("LeadInData") + .HasColumnType("longblob"); + + b.Property("LeadOutData") + .HasColumnType("longblob"); + + b.Property("LogicalAlignment") + .HasColumnType("smallint unsigned"); + + b.Property("LogicalAlignmentSql") + .HasColumnType("smallint"); + + b.Property("LongBlockSize") + .HasColumnType("int unsigned"); + + b.Property("LongBlockSizeSql") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("MediaIsRecognized") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("MediumTypeName") + .HasColumnType("longtext"); + + b.Property("MmcId") + .HasColumnType("int"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("NecReadCddaData") + .HasColumnType("longblob"); + + b.Property("NominalRotationRate") + .HasColumnType("smallint unsigned"); + + b.Property("NominalRotationRateSql") + .HasColumnType("smallint"); + + b.Property("PQSubchannelData") + .HasColumnType("longblob"); + + b.Property("PQSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("PfiData") + .HasColumnType("longblob"); + + b.Property("PhysicalBlockSize") + .HasColumnType("int unsigned"); + + b.Property("PhysicalBlockSizeSql") + .HasColumnType("int"); + + b.Property("PioneerReadCddaData") + .HasColumnType("longblob"); + + b.Property("PioneerReadCddaMsfData") + .HasColumnType("longblob"); + + b.Property("PlextorReadCddaData") + .HasColumnType("longblob"); + + b.Property("PlextorReadRawDVDData") + .HasColumnType("longblob"); + + b.Property("PmaData") + .HasColumnType("longblob"); + + b.Property("PriData") + .HasColumnType("longblob"); + + b.Property("RWSubchannelData") + .HasColumnType("longblob"); + + b.Property("RWSubchannelWithC2Data") + .HasColumnType("longblob"); + + b.Property("Read10Data") + .HasColumnType("longblob"); + + b.Property("Read12Data") + .HasColumnType("longblob"); + + b.Property("Read16Data") + .HasColumnType("longblob"); + + b.Property("Read6Data") + .HasColumnType("longblob"); + + b.Property("ReadCdData") + .HasColumnType("longblob"); + + b.Property("ReadCdFullData") + .HasColumnType("longblob"); + + b.Property("ReadCdMsfData") + .HasColumnType("longblob"); + + b.Property("ReadCdMsfFullData") + .HasColumnType("longblob"); + + b.Property("ReadDmaData") + .HasColumnType("longblob"); + + b.Property("ReadDmaLba48Data") + .HasColumnType("longblob"); + + b.Property("ReadDmaLbaData") + .HasColumnType("longblob"); + + b.Property("ReadDmaRetryData") + .HasColumnType("longblob"); + + b.Property("ReadDmaRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLba48Data") + .HasColumnType("longblob"); + + b.Property("ReadLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLong10Data") + .HasColumnType("longblob"); + + b.Property("ReadLong16Data") + .HasColumnType("longblob"); + + b.Property("ReadLongData") + .HasColumnType("longblob"); + + b.Property("ReadLongLbaData") + .HasColumnType("longblob"); + + b.Property("ReadLongRetryData") + .HasColumnType("longblob"); + + b.Property("ReadLongRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadRetryLbaData") + .HasColumnType("longblob"); + + b.Property("ReadSectorsData") + .HasColumnType("longblob"); + + b.Property("ReadSectorsRetryData") + .HasColumnType("longblob"); + + b.Property("ScsiId") + .HasColumnType("int"); + + b.Property("SolidStateDevice") + .HasColumnType("bit"); + + b.Property("SupportsHLDTSTReadRawDVD") + .HasColumnType("bit"); + + b.Property("SupportsNECReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPioneerReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPioneerReadCDDAMSF") + .HasColumnType("bit"); + + b.Property("SupportsPlextorReadCDDA") + .HasColumnType("bit"); + + b.Property("SupportsPlextorReadRawDVD") + .HasColumnType("bit"); + + b.Property("SupportsRead10") + .HasColumnType("bit"); + + b.Property("SupportsRead12") + .HasColumnType("bit"); + + b.Property("SupportsRead16") + .HasColumnType("bit"); + + b.Property("SupportsRead6") + .HasColumnType("bit"); + + b.Property("SupportsReadCapacity") + .HasColumnType("bit"); + + b.Property("SupportsReadCapacity16") + .HasColumnType("bit"); + + b.Property("SupportsReadCd") + .HasColumnType("bit"); + + b.Property("SupportsReadCdMsf") + .HasColumnType("bit"); + + b.Property("SupportsReadCdMsfRaw") + .HasColumnType("bit"); + + b.Property("SupportsReadCdRaw") + .HasColumnType("bit"); + + b.Property("SupportsReadDma") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaLba") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaLba48") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadDmaRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLba48") + .HasColumnType("bit"); + + b.Property("SupportsReadLong") + .HasColumnType("bit"); + + b.Property("SupportsReadLong16") + .HasColumnType("bit"); + + b.Property("SupportsReadLongLba") + .HasColumnType("bit"); + + b.Property("SupportsReadLongRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadLongRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadRetry") + .HasColumnType("bit"); + + b.Property("SupportsReadRetryLba") + .HasColumnType("bit"); + + b.Property("SupportsReadSectors") + .HasColumnType("bit"); + + b.Property("SupportsSeek") + .HasColumnType("bit"); + + b.Property("SupportsSeekLba") + .HasColumnType("bit"); + + b.Property("TocData") + .HasColumnType("longblob"); + + b.Property("Track1PregapData") + .HasColumnType("longblob"); + + b.Property("UnformattedBPS") + .HasColumnType("smallint unsigned"); + + b.Property("UnformattedBPSSql") + .HasColumnType("smallint"); + + b.Property("UnformattedBPT") + .HasColumnType("smallint unsigned"); + + b.Property("UnformattedBPTSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.HasIndex("AtaId"); + + b.HasIndex("CHSId"); + + b.HasIndex("CurrentCHSId"); + + b.HasIndex("MmcId"); + + b.HasIndex("ScsiId"); + + b.ToTable("TestedMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("CanReadMediaSerial") + .HasColumnType("bit"); + + b.Property("Density") + .HasColumnType("tinyint unsigned"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("MediaIsRecognized") + .HasColumnType("bit"); + + b.Property("MediumType") + .HasColumnType("tinyint unsigned"); + + b.Property("MediumTypeName") + .HasColumnType("longtext"); + + b.Property("ModeSense10Data") + .HasColumnType("longblob"); + + b.Property("ModeSense6Data") + .HasColumnType("longblob"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("SscId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("SscId"); + + b.ToTable("TestedSequentialMedia"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Usb", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Descriptors") + .HasColumnType("longblob"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductID") + .HasColumnType("smallint unsigned"); + + b.Property("ProductIDSql") + .HasColumnType("smallint"); + + b.Property("RemovableMedia") + .HasColumnType("bit"); + + b.Property("VendorID") + .HasColumnType("smallint unsigned"); + + b.Property("VendorIDSql") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Usb"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Command", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Commands"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.CompactDiscOffset", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Agreement") + .HasColumnType("float"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Offset") + .HasColumnType("smallint"); + + b.Property("Submissions") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.ToTable("CdOffsets"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ATAId") + .HasColumnType("int"); + + b.Property("ATAPIId") + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("CdOffsetId") + .HasColumnType("int"); + + b.Property("CompactFlash") + .HasColumnType("bit"); + + b.Property("FireWireId") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("MultiMediaCardId") + .HasColumnType("int"); + + b.Property("OptimalMultipleSectorsRead") + .HasColumnType("int"); + + b.Property("PCMCIAId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.Property("SCSIId") + .HasColumnType("int"); + + b.Property("SecureDigitalId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("USBId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("CdOffsetId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Devices"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Bus") + .HasColumnType("longtext"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("ReportId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.HasIndex("ReportId"); + + b.ToTable("DeviceStats"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Filesystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Filesystems"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Filter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Filters"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Media", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Real") + .HasColumnType("bit"); + + b.Property("Type") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Medias"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.MediaFormat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("MediaFormats"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.OperatingSystem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.Property("Version") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("OperatingSystems"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Partition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Name") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Partitions"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("ATAId") + .HasColumnType("int"); + + b.Property("ATAPIId") + .HasColumnType("int"); + + b.Property("CompactFlash") + .HasColumnType("bit"); + + b.Property("FireWireId") + .HasColumnType("int"); + + b.Property("Manufacturer") + .HasColumnType("longtext"); + + b.Property("Model") + .HasColumnType("longtext"); + + b.Property("MultiMediaCardId") + .HasColumnType("int"); + + b.Property("PCMCIAId") + .HasColumnType("int"); + + b.Property("Revision") + .HasColumnType("longtext"); + + b.Property("SCSIId") + .HasColumnType("int"); + + b.Property("SecureDigitalId") + .HasColumnType("int"); + + b.Property("Type") + .HasColumnType("int"); + + b.Property("USBId") + .HasColumnType("int"); + + b.Property("UploadedWhen") + .HasColumnType("datetime(6)"); + + b.HasKey("Id"); + + b.HasIndex("ATAId"); + + b.HasIndex("ATAPIId"); + + b.HasIndex("FireWireId"); + + b.HasIndex("MultiMediaCardId"); + + b.HasIndex("PCMCIAId"); + + b.HasIndex("SCSIId"); + + b.HasIndex("SecureDigitalId"); + + b.HasIndex("USBId"); + + b.ToTable("Reports"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Product") + .HasColumnType("longtext"); + + b.Property("ProductId") + .HasColumnType("int"); + + b.Property("VendorId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("ProductId"); + + b.HasIndex("VendorId"); + + b.ToTable("UsbProducts"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbVendor", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("AddedWhen") + .HasColumnType("datetime(6)"); + + b.Property("ModifiedWhen") + .HasColumnType("datetime(6)"); + + b.Property("Vendor") + .HasColumnType("longtext"); + + b.Property("VendorId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ModifiedWhen"); + + b.HasIndex("VendorId") + .IsUnique(); + + b.ToTable("UsbVendors"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Version", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("bigint"); + + b.Property("Value") + .HasColumnType("longtext"); + + b.HasKey("Id"); + + b.ToTable("Versions"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Ata", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.BlockDescriptor", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("BlockDescriptors") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.DensityCode", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", null) + .WithMany("DensityCodes") + .HasForeignKey("SscSupportedMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Mmc", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcFeatures", "Features") + .WithMany() + .HasForeignKey("FeaturesId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.Scsi", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", "ModeSense") + .WithMany() + .HasForeignKey("ModeSenseId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", "MultiMediaDevice") + .WithMany() + .HasForeignKey("MultiMediaDeviceId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedMedia", "ReadCapabilities") + .WithMany() + .HasForeignKey("ReadCapabilitiesId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", "SequentialDevice") + .WithMany() + .HasForeignKey("SequentialDeviceId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.ScsiPage", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("EVPDPages") + .HasForeignKey("ScsiId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.ScsiMode", null) + .WithMany("ModePages") + .HasForeignKey("ScsiModeId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SscSupportedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedMediaTypes") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.SupportedDensity", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("SupportedDensities") + .HasForeignKey("SscId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", null) + .WithMany("SupportedDensities") + .HasForeignKey("TestedSequentialMediaId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", null) + .WithMany("RemovableMedias") + .HasForeignKey("AtaId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CHS") + .WithMany() + .HasForeignKey("CHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Chs", "CurrentCHS") + .WithMany() + .HasForeignKey("CurrentCHSId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Mmc", null) + .WithMany("TestedMedia") + .HasForeignKey("MmcId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", null) + .WithMany("RemovableMedias") + .HasForeignKey("ScsiId"); + }); + + modelBuilder.Entity("DiscImageChef.CommonTypes.Metadata.TestedSequentialMedia", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ssc", null) + .WithMany("TestedMedia") + .HasForeignKey("SscId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.Device", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.Server.Models.CompactDiscOffset", "CdOffset") + .WithMany("Devices") + .HasForeignKey("CdOffsetId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.DeviceStat", b => + { + b.HasOne("DiscImageChef.Server.Models.Device", "Report") + .WithMany() + .HasForeignKey("ReportId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UploadedReport", b => + { + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATA") + .WithMany() + .HasForeignKey("ATAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Ata", "ATAPI") + .WithMany() + .HasForeignKey("ATAPIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.FireWire", "FireWire") + .WithMany() + .HasForeignKey("FireWireId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "MultiMediaCard") + .WithMany() + .HasForeignKey("MultiMediaCardId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Pcmcia", "PCMCIA") + .WithMany() + .HasForeignKey("PCMCIAId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Scsi", "SCSI") + .WithMany() + .HasForeignKey("SCSIId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.MmcSd", "SecureDigital") + .WithMany() + .HasForeignKey("SecureDigitalId"); + + b.HasOne("DiscImageChef.CommonTypes.Metadata.Usb", "USB") + .WithMany() + .HasForeignKey("USBId"); + }); + + modelBuilder.Entity("DiscImageChef.Server.Models.UsbProduct", b => + { + b.HasOne("DiscImageChef.Server.Models.UsbVendor", "Vendor") + .WithMany("Products") + .HasForeignKey("VendorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/DiscImageChef.Server/Models/CdOffset.cs b/DiscImageChef.Server/Models/CdOffset.cs index b17c858a..7871623c 100644 --- a/DiscImageChef.Server/Models/CdOffset.cs +++ b/DiscImageChef.Server/Models/CdOffset.cs @@ -63,7 +63,6 @@ namespace DiscImageChef.Server.Models public int Id { get; set; } public DateTime AddedWhen { get; set; } - [Index] public DateTime ModifiedWhen { get; set; } public virtual ICollection Devices { get; set; } } diff --git a/DiscImageChef.Server/Models/Context.cs b/DiscImageChef.Server/Models/Context.cs index d174b09b..efd4327c 100644 --- a/DiscImageChef.Server/Models/Context.cs +++ b/DiscImageChef.Server/Models/Context.cs @@ -30,12 +30,11 @@ // Copyright © 2011-2019 Natalia Portillo // ****************************************************************************/ -using System.Data.Entity; -using MySql.Data.EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; namespace DiscImageChef.Server.Models { - [DbConfigurationType(typeof(MySqlEFConfiguration))] public sealed class DicServerContext : DbContext { public DbSet Devices { get; set; } @@ -52,5 +51,50 @@ namespace DiscImageChef.Server.Models public DbSet UsbVendors { get; set; } public DbSet UsbProducts { get; set; } public DbSet CdOffsets { get; set; } + + public DicServerContext() { } + + public DicServerContext(DbContextOptions options) : base(options) { } + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if(optionsBuilder.IsConfigured) return; + + + var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); + var configuration = builder.Build(); + optionsBuilder.UseMySql(configuration.GetConnectionString("DefaultConnection")); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().HasIndex(b => b.ModifiedWhen); + + modelBuilder.Entity().HasIndex(b => b.ModifiedWhen); + + modelBuilder.Entity().HasIndex(b => b.ModifiedWhen); + modelBuilder.Entity().HasIndex(b => b.ProductId); + modelBuilder.Entity().HasIndex(b => b.VendorId); + + modelBuilder.Entity().HasIndex(b => b.ModifiedWhen); + modelBuilder.Entity().HasIndex(b => b.VendorId).IsUnique(); + } + + internal static bool TableExists(string tableName) + { + using(var db = new DicServerContext()) + { + var connection = db.Database.GetDbConnection(); + connection.Open(); + + var command = connection.CreateCommand(); + command.CommandText = + $"SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=\"{tableName}\""; + + var result = (long)command.ExecuteScalar(); + + return result != 0; + } + } } } \ No newline at end of file diff --git a/DiscImageChef.Server/Models/Device.cs b/DiscImageChef.Server/Models/Device.cs index 68fcf333..ac02b5b3 100644 --- a/DiscImageChef.Server/Models/Device.cs +++ b/DiscImageChef.Server/Models/Device.cs @@ -64,7 +64,6 @@ namespace DiscImageChef.Server.Models } public DateTime AddedWhen { get; set; } - [Index] public DateTime? ModifiedWhen { get; set; } public virtual CompactDiscOffset CdOffset { get; set; } [DefaultValue(0)] diff --git a/DiscImageChef.Server/Models/ErrorViewModel.cs b/DiscImageChef.Server/Models/ErrorViewModel.cs new file mode 100644 index 00000000..3e47becd --- /dev/null +++ b/DiscImageChef.Server/Models/ErrorViewModel.cs @@ -0,0 +1,11 @@ +using System; + +namespace DiscImageChef.Server.Models +{ + public class ErrorViewModel + { + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Models/UsbProduct.cs b/DiscImageChef.Server/Models/UsbProduct.cs index 5ac8948d..1ad0006e 100644 --- a/DiscImageChef.Server/Models/UsbProduct.cs +++ b/DiscImageChef.Server/Models/UsbProduct.cs @@ -51,13 +51,10 @@ namespace DiscImageChef.Server.Models [Key] public int Id { get; set; } - [Index] public int ProductId { get; set; } public string Product { get; set; } public DateTime AddedWhen { get; set; } - [Index] public DateTime ModifiedWhen { get; set; } - [Index] public int VendorId { get; set; } [JsonIgnore] public virtual UsbVendor Vendor { get; set; } diff --git a/DiscImageChef.Server/Models/UsbVendor.cs b/DiscImageChef.Server/Models/UsbVendor.cs index 3ad9766c..f01f8989 100644 --- a/DiscImageChef.Server/Models/UsbVendor.cs +++ b/DiscImageChef.Server/Models/UsbVendor.cs @@ -51,11 +51,9 @@ namespace DiscImageChef.Server.Models [Key] public int Id { get; set; } - [Index(IsUnique = true)] public int VendorId { get; set; } public string Vendor { get; set; } public DateTime AddedWhen { get; set; } - [Index] public DateTime ModifiedWhen { get; set; } [JsonIgnore] diff --git a/DiscImageChef.Server/Program.cs b/DiscImageChef.Server/Program.cs new file mode 100644 index 00000000..115003db --- /dev/null +++ b/DiscImageChef.Server/Program.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using DiscImageChef.Server.Models; +using Microsoft.AspNetCore.Hosting; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace DiscImageChef.Server +{ + public class Program + { + public static void Main(string[] args) + { + DateTime start; + DateTime end; + + System.Console.Clear(); + + System.Console.Write( + "\u001b[32m . ,,\n" + + "\u001b[32m ;,. '0d.\n" + + "\u001b[32m oc oWd \u001b[31m" + + @"________/\\\\\\\\\___/\\\\\\\\\\\_________/\\\\\\\\\___/\\\\____________/\\\\_" + + "\n\u001b[0m" + + "\u001b[32m ;X. 'WN' \u001b[31m" + + @" _____/\\\////////___\/////\\\///_______/\\\////////___\/\\\\\\________/\\\\\\_" + + "\n\u001b[0m" + + "\u001b[32m oMo cMM: \u001b[31m" + + @" ___/\\\/________________\/\\\________/\\\/____________\/\\\//\\\____/\\\//\\\_" + + "\n\u001b[0m" + + "\u001b[32m ;MM. .MMM; \u001b[31m" + + @" __/\\\__________________\/\\\_______/\\\______________\/\\\\///\\\/\\\/_\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m NMM WMMW \u001b[31m" + + @" _\/\\\__________________\/\\\______\/\\\______________\/\\\__\///\\\/___\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m 'MMM MMMM; \u001b[31m" + + @" _\//\\\_________________\/\\\______\//\\\_____________\/\\\____\///_____\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m ,MMM: dMMMM: \u001b[31m" + + @" __\///\\\_______________\/\\\_______\///\\\___________\/\\\_____________\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m .MMMW. :MMMMM. \u001b[31m" + + @" ____\////\\\\\\\\\___/\\\\\\\\\\\_____\////\\\\\\\\\__\/\\\_____________\/\\\_" + + "\n\u001b[0m" + + "\u001b[32m XMMMW: .:xKNMMMMMMN0d, lMMMMMd \u001b[31m" + + @" _______\/////////___\///////////_________\/////////___\///______________\///__" + + "\n\u001b[0m" + + "\u001b[32m :MMMMMK; cWMNkl:;;;:lxKMXc .0MMMMMO\u001b[0m\n" + + "\u001b[32m ..KMMMMMMNo,. ,OMMMMMMW:,. \u001b[37;1m DiscImageChef Website\u001b[0m\n" + + "\u001b[32m .;d0NMMMMMMMMMMMMMMW0d:' .;lOWMMMMMMMMMMMMMXkl. \u001b[37;1m Version \u001b[0m\u001b[33m{0}\u001b[37;1m-\u001b[0m\u001b[31m{1}\u001b[0m\n" + + "\u001b[32m :KMMMMMMMMMMMMMMMMMMMMMMMMc WMMMMMMMMMMMMMMMMMMMMMMWk'\u001b[0m\n" + + "\u001b[32m ;NMMMMWX0kkkkO0XMMMMMMMMMMM0' dNMMMMMMMMMMW0xl:;,;:oOWMMX; \u001b[37;1m Running under \u001b[35;1m{2}\u001b[37;1m, \u001b[35m{3}-bit\u001b[37;1m in \u001b[35m{4}-bit\u001b[37;1m mode.\u001b[0m\n" + + "\u001b[32m xMMWk:. .c0MMMMMW' OMMMMMM0c'.. .oNMO \u001b[37;1m Using \u001b[33;1m{5}\u001b[37;1m version \u001b[31;1m{6}\u001b[0m\n" + + "\u001b[32m OMNc .MNc oWMMk 'WMMNl. .MMK ;KX.\u001b[0m\n" + + "\u001b[32m xMO WMN ; ., , ': ,MMx lK\u001b[0m\n" + + "\u001b[32m ,Md cMMl .XMMMWWMMMO XMW. :\u001b[0m\n" + + "\u001b[32m Ok xMMl XMMMMMMMMc 0MW,\u001b[0m\n" + + "\u001b[32m 0 oMM0' lMMMMMMMM. :NMN'\u001b[0m\n" + + "\u001b[32m . .0MMKl ;MMMMMMMM oNMWd\u001b[0m\n" + + "\u001b[32m .dNW cMMMMMMMM, XKl\u001b[0m\n" + + "\u001b[32m 0MMMMMMMMK\u001b[0m\n" + + "\u001b[32m ;MMMMMMMMMMO \u001b[37;1m Proudly presented to you by:\u001b[0m\n" + + "\u001b[32m 'WMMMMKxMMMMM0 \u001b[34;1m Natalia Portillo\u001b[0m\n" + + "\u001b[32m oMMMMNc :WMMMMN:\u001b[0m\n" + + "\u001b[32m .dWMMM0; dWMMMMXl. \u001b[37;1m Thanks to all contributors, collaborators, translators, donators and friends.\u001b[0m\n" + + "\u001b[32m .......,cd0WMMNk: c0MMMMMWKkolc:clodc'\u001b[0m\n" + + "\u001b[32m .';loddol:'. ':oxkkOkkxoc,.\u001b[0m\n" + + "\u001b[0m\n", DiscImageChef.CommonTypes.Interop.Version.GetVersion(), + #if DEBUG + "DEBUG" + #else + "RELEASE" + #endif + , DiscImageChef.CommonTypes.Interop.DetectOS.GetPlatformName(DiscImageChef.CommonTypes.Interop.DetectOS.GetRealPlatformID()), + Environment.Is64BitOperatingSystem ? 64 : 32, Environment.Is64BitProcess ? 64 : 32, + DiscImageChef.CommonTypes.Interop.DetectOS.IsMono ? "Mono" : ".NET Core", + DiscImageChef.CommonTypes.Interop.DetectOS.IsMono ? DiscImageChef.CommonTypes.Interop.Version.GetMonoVersion() : DiscImageChef.CommonTypes.Interop.Version.GetNetCoreVersion()); + + var host = CreateHostBuilder(args).Build(); + + + using (var scope = host.Services.CreateScope()) + { + var services = scope.ServiceProvider; + + try + { + start = DateTime.Now; + System.Console.WriteLine("\u001b[31;1mUpdating database with Entity Framework...\u001b[0m"); + var context = services.GetRequiredService(); + context.Database.Migrate(); + end = DateTime.Now; + System.Console.WriteLine("\u001b[31;1mTook \u001b[32;1m{0} seconds\u001b[31;1m...\u001b[0m", + (end - start).TotalSeconds); + + } + catch(Exception ex) + { + System.Console.WriteLine("\u001b[31;1mCould not open database...\u001b[0m"); + #if DEBUG + System.Console.WriteLine("\u001b[31;1mException: {0}\u001b[0m", ex.Message); + #endif + return; + } + } + + System.Console.WriteLine("\u001b[31;1mStarting web server...\u001b[0m"); + host.Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Properties/AssemblyInfo.cs b/DiscImageChef.Server/Properties/AssemblyInfo.cs deleted file mode 100644 index 2eaab14a..00000000 --- a/DiscImageChef.Server/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DiscImageChef.Server")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("DiscImageChef.Server")] -[assembly: AssemblyCopyright("Copyright © 2011-2019 Natalia Portillo")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("A893FA0E-6952-4517-B4AA-658E421737C1")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("4.5.99.1693")] -[assembly: AssemblyFileVersion("4.5.99.1693")] \ No newline at end of file diff --git a/DiscImageChef.Server/Properties/launchSettings.json b/DiscImageChef.Server/Properties/launchSettings.json new file mode 100644 index 00000000..918f69b4 --- /dev/null +++ b/DiscImageChef.Server/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:62005", + "sslPort": 44393 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "DiscImageChef.Server": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/DiscImageChef.Server/Startup.cs b/DiscImageChef.Server/Startup.cs new file mode 100644 index 00000000..6c277d76 --- /dev/null +++ b/DiscImageChef.Server/Startup.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using DiscImageChef.Server.Models; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpsPolicy; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace DiscImageChef.Server +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddDbContext(options => + options.UseMySql(Configuration.GetConnectionString("DefaultConnection"))); + + services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + } + + //app.UseHttpsRedirection(); + app.UseStaticFiles(); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Shared/Error.cshtml b/DiscImageChef.Server/Views/Shared/Error.cshtml new file mode 100644 index 00000000..a1e04783 --- /dev/null +++ b/DiscImageChef.Server/Views/Shared/Error.cshtml @@ -0,0 +1,25 @@ +@model ErrorViewModel +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

diff --git a/DiscImageChef.Server/Views/Shared/_Layout.cshtml b/DiscImageChef.Server/Views/Shared/_Layout.cshtml index 37f16ec9..364e9c28 100644 --- a/DiscImageChef.Server/Views/Shared/_Layout.cshtml +++ b/DiscImageChef.Server/Views/Shared/_Layout.cshtml @@ -39,16 +39,16 @@ { // 24th January, Macintosh launch case 24: - - + + break; default: - - + + break; } diff --git a/DiscImageChef.Server/Views/Shared/_ValidationScriptsPartial.cshtml b/DiscImageChef.Server/Views/Shared/_ValidationScriptsPartial.cshtml new file mode 100644 index 00000000..5a16d80a --- /dev/null +++ b/DiscImageChef.Server/Views/Shared/_ValidationScriptsPartial.cshtml @@ -0,0 +1,2 @@ + + diff --git a/DiscImageChef.Server/Views/Stats/Index.cshtml b/DiscImageChef.Server/Views/Stats/Index.cshtml index 201becc7..9573c575 100644 --- a/DiscImageChef.Server/Views/Stats/Index.cshtml +++ b/DiscImageChef.Server/Views/Stats/Index.cshtml @@ -657,7 +657,7 @@ @{ - string highChartsTitleColor; +/* string highChartsTitleColor; string highChartsDataLabelColor; switch(DateTime.UtcNow.DayOfYear) @@ -703,4 +703,5 @@ @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Devices found by bus", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["devicesBusPieData"] as List}}}, "devicesBusChart", false)) @(Html.Highsoft().GetHighcharts(new Highcharts {Chart = new Chart {PlotBackgroundColor = null, PlotBorderWidth = null, PlotShadow = new Shadow {Enabled = true}}, Title = new Title {Text = "Devices found by manufacturer", Style = highChartsTitleStyle}, Tooltip = new Tooltip {PointFormat = "{series.name}: {point.percentage:.1f}%"}, PlotOptions = new PlotOptions {Pie = new PlotOptionsPie {AllowPointSelect = true, Cursor = PlotOptionsPieCursor.Pointer, DataLabels = new PlotOptionsPieDataLabels {Style = highChartsDataLabelStyle, Enabled = true, Format = "{point.name}: {point.percentage:.1f} %"}}}, Series = new List {new PieSeries {Name = "Percentage:", Data = ViewData["devicesManufacturerPieData"] as List}}}, "devicesManufacturerChart", false)) +*/ } \ No newline at end of file diff --git a/DiscImageChef.Server/Views/Web.config b/DiscImageChef.Server/Views/Web.config deleted file mode 100644 index 15e5a56e..00000000 --- a/DiscImageChef.Server/Views/Web.config +++ /dev/null @@ -1,43 +0,0 @@ - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DiscImageChef.Server/Views/_ViewImports.cshtml b/DiscImageChef.Server/Views/_ViewImports.cshtml new file mode 100644 index 00000000..773d1403 --- /dev/null +++ b/DiscImageChef.Server/Views/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using DiscImageChef.Server +@using DiscImageChef.Server.Models +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/DiscImageChef.Server/Views/_ViewStart.cshtml b/DiscImageChef.Server/Views/_ViewStart.cshtml new file mode 100644 index 00000000..a5f10045 --- /dev/null +++ b/DiscImageChef.Server/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/DiscImageChef.Server/Web.Debug.config b/DiscImageChef.Server/Web.Debug.config deleted file mode 100644 index d7712aaf..00000000 --- a/DiscImageChef.Server/Web.Debug.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - diff --git a/DiscImageChef.Server/Web.Release.config b/DiscImageChef.Server/Web.Release.config deleted file mode 100644 index 28a4d5fc..00000000 --- a/DiscImageChef.Server/Web.Release.config +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - diff --git a/DiscImageChef.Server/Web.config b/DiscImageChef.Server/Web.config deleted file mode 100644 index 7af7836a..00000000 --- a/DiscImageChef.Server/Web.config +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DiscImageChef.Server/appsettings.Development.json b/DiscImageChef.Server/appsettings.Development.json new file mode 100644 index 00000000..e203e940 --- /dev/null +++ b/DiscImageChef.Server/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/DiscImageChef.Server/appsettings.json b/DiscImageChef.Server/appsettings.json new file mode 100644 index 00000000..c20a8d9d --- /dev/null +++ b/DiscImageChef.Server/appsettings.json @@ -0,0 +1,13 @@ +{ + "ConnectionStrings": { + "DefaultConnection": "server=localhost;port=3306;database=discimagechef;uid=dic;password=dicpass" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} diff --git a/DiscImageChef.Server/fonts/.htaccess b/DiscImageChef.Server/fonts/.htaccess deleted file mode 100644 index 4114709c..00000000 --- a/DiscImageChef.Server/fonts/.htaccess +++ /dev/null @@ -1 +0,0 @@ -IndexIgnore * \ No newline at end of file diff --git a/DiscImageChef.Server/package-lock.json b/DiscImageChef.Server/package-lock.json deleted file mode 100644 index 7699daa2..00000000 --- a/DiscImageChef.Server/package-lock.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "bootstrap": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.2.1.tgz", - "integrity": "sha512-tt/7vIv3Gm2mnd/WeDx36nfGGHleil0Wg8IeB7eMrVkY0fZ5iTaBisSh8oNANc2IBsCc6vCgCNTIM/IEN0+50Q==", - "dev": true - } - } -} diff --git a/DiscImageChef.Server/package.json b/DiscImageChef.Server/package.json deleted file mode 100644 index efc3d42f..00000000 --- a/DiscImageChef.Server/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "devDependencies": { - "bootstrap": "4.2.1" - } -} diff --git a/DiscImageChef.Server/packages.config b/DiscImageChef.Server/packages.config deleted file mode 100644 index e678a976..00000000 --- a/DiscImageChef.Server/packages.config +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/DiscImageChef.Server/styles/_highcharts.scss b/DiscImageChef.Server/wwwroot/css/_highcharts.scss similarity index 100% rename from DiscImageChef.Server/styles/_highcharts.scss rename to DiscImageChef.Server/wwwroot/css/_highcharts.scss diff --git a/DiscImageChef.Server/styles/dos/_colors.scss b/DiscImageChef.Server/wwwroot/css/dos/_colors.scss similarity index 100% rename from DiscImageChef.Server/styles/dos/_colors.scss rename to DiscImageChef.Server/wwwroot/css/dos/_colors.scss diff --git a/DiscImageChef.Server/styles/dos/_font.scss b/DiscImageChef.Server/wwwroot/css/dos/_font.scss similarity index 100% rename from DiscImageChef.Server/styles/dos/_font.scss rename to DiscImageChef.Server/wwwroot/css/dos/_font.scss diff --git a/DiscImageChef.Server/styles/dos/_fontstyles.scss b/DiscImageChef.Server/wwwroot/css/dos/_fontstyles.scss similarity index 100% rename from DiscImageChef.Server/styles/dos/_fontstyles.scss rename to DiscImageChef.Server/wwwroot/css/dos/_fontstyles.scss diff --git a/DiscImageChef.Server/styles/dos/dicserver.css b/DiscImageChef.Server/wwwroot/css/dos/dicserver.css similarity index 100% rename from DiscImageChef.Server/styles/dos/dicserver.css rename to DiscImageChef.Server/wwwroot/css/dos/dicserver.css diff --git a/DiscImageChef.Server/styles/dos/dicserver.scss b/DiscImageChef.Server/wwwroot/css/dos/dicserver.scss similarity index 100% rename from DiscImageChef.Server/styles/dos/dicserver.scss rename to DiscImageChef.Server/wwwroot/css/dos/dicserver.scss diff --git a/DiscImageChef.Server/styles/dos/dicserver_highcharts.css b/DiscImageChef.Server/wwwroot/css/dos/dicserver_highcharts.css similarity index 100% rename from DiscImageChef.Server/styles/dos/dicserver_highcharts.css rename to DiscImageChef.Server/wwwroot/css/dos/dicserver_highcharts.css diff --git a/DiscImageChef.Server/styles/dos/dicserver_highcharts.scss b/DiscImageChef.Server/wwwroot/css/dos/dicserver_highcharts.scss similarity index 100% rename from DiscImageChef.Server/styles/dos/dicserver_highcharts.scss rename to DiscImageChef.Server/wwwroot/css/dos/dicserver_highcharts.scss diff --git a/DiscImageChef.Server/styles/mac/_colors.scss b/DiscImageChef.Server/wwwroot/css/mac/_colors.scss similarity index 100% rename from DiscImageChef.Server/styles/mac/_colors.scss rename to DiscImageChef.Server/wwwroot/css/mac/_colors.scss diff --git a/DiscImageChef.Server/styles/mac/_font.scss b/DiscImageChef.Server/wwwroot/css/mac/_font.scss similarity index 100% rename from DiscImageChef.Server/styles/mac/_font.scss rename to DiscImageChef.Server/wwwroot/css/mac/_font.scss diff --git a/DiscImageChef.Server/styles/mac/_fontstyles.scss b/DiscImageChef.Server/wwwroot/css/mac/_fontstyles.scss similarity index 100% rename from DiscImageChef.Server/styles/mac/_fontstyles.scss rename to DiscImageChef.Server/wwwroot/css/mac/_fontstyles.scss diff --git a/DiscImageChef.Server/styles/mac/dicserver.css b/DiscImageChef.Server/wwwroot/css/mac/dicserver.css similarity index 100% rename from DiscImageChef.Server/styles/mac/dicserver.css rename to DiscImageChef.Server/wwwroot/css/mac/dicserver.css diff --git a/DiscImageChef.Server/styles/mac/dicserver.scss b/DiscImageChef.Server/wwwroot/css/mac/dicserver.scss similarity index 100% rename from DiscImageChef.Server/styles/mac/dicserver.scss rename to DiscImageChef.Server/wwwroot/css/mac/dicserver.scss diff --git a/DiscImageChef.Server/styles/mac/dicserver_highcharts.css b/DiscImageChef.Server/wwwroot/css/mac/dicserver_highcharts.css similarity index 100% rename from DiscImageChef.Server/styles/mac/dicserver_highcharts.css rename to DiscImageChef.Server/wwwroot/css/mac/dicserver_highcharts.css diff --git a/DiscImageChef.Server/styles/mac/dicserver_highcharts.scss b/DiscImageChef.Server/wwwroot/css/mac/dicserver_highcharts.scss similarity index 100% rename from DiscImageChef.Server/styles/mac/dicserver_highcharts.scss rename to DiscImageChef.Server/wwwroot/css/mac/dicserver_highcharts.scss diff --git a/DiscImageChef.Server/wwwroot/favicon.ico b/DiscImageChef.Server/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a3a799985c43bc7309d701b2cad129023377dc71 GIT binary patch literal 32038 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 ZpmP~O