From e9042f7666a3cdc8a0372eb734c9be9acc91d00b Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Sun, 25 May 2014 16:34:06 +1000 Subject: [PATCH] Feature #33: Enhanced Device Importing Dynamic device importing. better input parsing and 5 additional import fields. --- Disco.BI/BI/DeviceBI/Importing/Import.cs | 272 --- .../BI/DeviceBI/Importing/ImportParseTask.cs | 91 - .../DeviceBI/Importing/ImportProcessTask.cs | 70 - Disco.BI/BI/Wireless/BaseWirelessProvider.cs | 83 - .../BI/Wireless/WirelessCertificatesLog.cs | 304 ---- .../eduSTAR/eduSTARWirelessProvider.cs | 283 ---- Disco.BI/Disco.BI.csproj | 9 +- Disco.Models/Disco.Models.csproj | 9 +- .../Devices/Exporting/DeviceExportOptions.cs | 12 +- .../Importing/DeviceImportFieldTypes.cs | 45 + .../Devices/Importing/IDeviceImportContext.cs | 20 + .../Devices/Importing/IDeviceImportField.cs | 21 + .../Devices/Importing/IDeviceImportRecord.cs | 20 + .../UI/Device/DeviceImportHeadersModel.cs | 9 + .../UI/Device/DeviceImportReviewModel.cs | 19 +- .../Devices/Importing/DeviceImport.cs | 199 +++ .../Importing/DeviceImportApplyTask.cs | 41 + .../Devices/Importing/DeviceImportContext.cs | 35 + .../Importing/DeviceImportDatabaseCache.cs | 42 + .../Importing/DeviceImportFieldBase.cs | 44 + .../Importing/DeviceImportInMemoryCache.cs | 53 + .../Importing/DeviceImportParseTask.cs | 39 + .../Devices/Importing/DeviceImportRecord.cs | 85 + .../Fields/AssignedUserIdImportField.cs | 144 ++ .../Importing/Fields/BatchIdImportField.cs | 106 ++ .../Fields/DetailACAdapterImportField.cs | 99 ++ .../Fields/DetailLanMacAddressImportField.cs | 106 ++ .../Fields/DetailWLanMacAddressImportField.cs | 108 ++ .../Fields/DeviceAssetNumberImportField.cs | 68 + .../DeviceDecommissionedDateImportField.cs | 130 ++ .../DeviceDecommissionedReasonImportField.cs | 116 ++ .../Fields/DeviceLocationImportField.cs | 68 + .../Fields/DeviceSerialNumberImportField.cs | 98 ++ .../Importing/Fields/ModelIdImportField.cs | 98 ++ .../Importing/Fields/ProfileIdImportField.cs | 94 ++ .../Devices/Importing/IDeviceImportCache.cs | 15 + Disco.Services/Disco.Services.csproj | 28 +- Disco.Services/packages.config | 1 + .../Areas/API/Controllers/DeviceController.cs | 76 +- Disco.Web/ClientSource/Style/BundleSite.css | 275 ++- .../ClientSource/Style/BundleSite.min.css | 2 +- Disco.Web/ClientSource/Style/Device.css | 197 ++- Disco.Web/ClientSource/Style/Device.less | 246 ++- Disco.Web/ClientSource/Style/Device.min.css | 2 +- .../ClientSource/Style/jQueryUI/jquery-ui.css | 1499 +++++++++++++++++ .../Style/jQueryUI/jquery-ui.min.css | 1 + .../ClientSource/Style/jQueryUIExtensions.css | 5 + .../Style/jQueryUIExtensions.less | 93 +- .../Style/jQueryUIExtensions.min.css | 2 +- Disco.Web/Controllers/DeviceController.cs | 65 +- Disco.Web/Disco.Web.csproj | 38 +- Disco.Web/Models/Device/ImportHeadersModel.cs | 25 + Disco.Web/Models/Device/ImportModel.cs | 21 +- Disco.Web/Models/Device/ImportReviewModel.cs | 33 +- Disco.Web/T4MVC.cs | 150 +- Disco.Web/Views/Device/Export.cshtml | 2 +- Disco.Web/Views/Device/Export.generated.cs | 2 +- Disco.Web/Views/Device/Import.cshtml | 232 +++ Disco.Web/Views/Device/Import.generated.cs | 698 ++++++++ Disco.Web/Views/Device/ImportExport.cshtml | 192 --- .../Views/Device/ImportExport.generated.cs | 553 ------ Disco.Web/Views/Device/ImportHeaders.cshtml | 183 ++ .../Views/Device/ImportHeaders.generated.cs | 557 ++++++ Disco.Web/Views/Device/ImportReview.cshtml | 172 +- .../Views/Device/ImportReview.generated.cs | 1398 ++++++--------- Disco.Web/Views/Device/Index.cshtml | 2 +- Disco.Web/Views/Device/Index.generated.cs | 4 +- Disco.Web/Views/Web.config | 5 + 68 files changed, 6775 insertions(+), 3039 deletions(-) delete mode 100644 Disco.BI/BI/DeviceBI/Importing/Import.cs delete mode 100644 Disco.BI/BI/DeviceBI/Importing/ImportParseTask.cs delete mode 100644 Disco.BI/BI/DeviceBI/Importing/ImportProcessTask.cs delete mode 100644 Disco.BI/BI/Wireless/BaseWirelessProvider.cs delete mode 100644 Disco.BI/BI/Wireless/WirelessCertificatesLog.cs delete mode 100644 Disco.BI/BI/Wireless/eduSTAR/eduSTARWirelessProvider.cs create mode 100644 Disco.Models/Services/Devices/Importing/DeviceImportFieldTypes.cs create mode 100644 Disco.Models/Services/Devices/Importing/IDeviceImportContext.cs create mode 100644 Disco.Models/Services/Devices/Importing/IDeviceImportField.cs create mode 100644 Disco.Models/Services/Devices/Importing/IDeviceImportRecord.cs create mode 100644 Disco.Models/UI/Device/DeviceImportHeadersModel.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImport.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportApplyTask.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportContext.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportDatabaseCache.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportFieldBase.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportInMemoryCache.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportParseTask.cs create mode 100644 Disco.Services/Devices/Importing/DeviceImportRecord.cs create mode 100644 Disco.Services/Devices/Importing/Fields/AssignedUserIdImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/BatchIdImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DetailACAdapterImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DetailLanMacAddressImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DetailWLanMacAddressImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DeviceAssetNumberImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DeviceDecommissionedDateImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DeviceDecommissionedReasonImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DeviceLocationImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/DeviceSerialNumberImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/ModelIdImportField.cs create mode 100644 Disco.Services/Devices/Importing/Fields/ProfileIdImportField.cs create mode 100644 Disco.Services/Devices/Importing/IDeviceImportCache.cs create mode 100644 Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.css create mode 100644 Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.min.css create mode 100644 Disco.Web/Models/Device/ImportHeadersModel.cs create mode 100644 Disco.Web/Views/Device/Import.cshtml create mode 100644 Disco.Web/Views/Device/Import.generated.cs delete mode 100644 Disco.Web/Views/Device/ImportExport.cshtml delete mode 100644 Disco.Web/Views/Device/ImportExport.generated.cs create mode 100644 Disco.Web/Views/Device/ImportHeaders.cshtml create mode 100644 Disco.Web/Views/Device/ImportHeaders.generated.cs diff --git a/Disco.BI/BI/DeviceBI/Importing/Import.cs b/Disco.BI/BI/DeviceBI/Importing/Import.cs deleted file mode 100644 index 7b4b129c..00000000 --- a/Disco.BI/BI/DeviceBI/Importing/Import.cs +++ /dev/null @@ -1,272 +0,0 @@ -using Disco.BI.Extensions; -using Disco.Data.Repository; -using Disco.Models.BI.Device; -using Disco.Models.Repository; -using Disco.Services.Interop.ActiveDirectory; -using Disco.Services.Users; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Web; -using PopulateRecordReferences = System.Tuple, System.Collections.Generic.Dictionary, System.Collections.Generic.Dictionary>; - -namespace Disco.BI.DeviceBI.Importing -{ - public static class Import - { - internal const string ImportParseCacheKey = "ImportParseResults_{0}"; - - public static ImportDeviceSession GetSession(string ImportParseTaskId) - { - string parseKey = string.Format(ImportParseCacheKey, ImportParseTaskId); - - return (ImportDeviceSession)HttpRuntime.Cache.Get(parseKey); - } - - internal static bool ImportRecord(this ImportDevice device, DiscoDataContext Database, PopulateRecordReferences references) - { - // Skips If Errors - if (device.Errors == null || device.Errors.Count == 0) - { - // Re-Populate & Skip If Errors - device.PopulateRecord(Database, references); - if (device.Errors == null || device.Errors.Count == 0) - { - Device discoDevice = device.Device; - - if (discoDevice == null) - { - // New Device - discoDevice = new Device() - { - SerialNumber = device.SerialNumber.ToUpper(), - CreatedDate = DateTime.Now, - AllowUnauthenticatedEnrol = true, - }; - Database.Devices.Add(discoDevice); - } - - if (discoDevice.DeviceModelId != device.DeviceModelId) - discoDevice.DeviceModelId = device.DeviceModelId; - if (discoDevice.DeviceProfileId != device.DeviceProfileId) - discoDevice.DeviceProfileId = device.DeviceProfileId; - if (discoDevice.DeviceBatchId != device.DeviceBatchId) - discoDevice.DeviceBatchId = device.DeviceBatchId; - if (discoDevice.Location != device.Location) - discoDevice.Location = device.Location; - if (discoDevice.AssetNumber != device.AssetNumber) - discoDevice.AssetNumber = device.AssetNumber; - - if (discoDevice.AssignedUserId != device.AssignedUserId) - { - discoDevice.AssignDevice(Database, device.AssignedUser); - } - - Database.SaveChanges(); - - return true; - } - } - return false; - } - - internal static PopulateRecordReferences GetPopulateRecordReferences(DiscoDataContext Database) - { - return new PopulateRecordReferences( - Database.DeviceModels.ToDictionary(dm => dm.Id), - Database.DeviceProfiles.ToDictionary(dp => dp.Id), - Database.DeviceBatches.ToDictionary(db => db.Id) - ); - } - - internal static void PopulateRecord(this ImportDevice device, DiscoDataContext Database, PopulateRecordReferences references) - { - - var deviceModels = references.Item1; - var deviceProfiles = references.Item2; - var deviceBatches = references.Item3; - - // SERIAL NUMBER - Existing Device - if (!device.Errors.ContainsKey("SerialNumber")) - { - device.Device = Database.Devices.Find(device.SerialNumber); - if (device.Device != null && device.Device.DecommissionedDate.HasValue) - device.Errors.Add("SerialNumber", "The device is decommissioned"); - } - - - // DEVICE MODEL - if (!device.Errors.ContainsKey("DeviceModelId")) - { - DeviceModel deviceModel; - - if (!device.DeviceModelId.HasValue) - device.DeviceModelId = 1; // Default 'Unknown Device Model' - - if (!deviceModels.TryGetValue(device.DeviceModelId.Value, out deviceModel)) - device.Errors.Add("DeviceModelId", string.Format("Unknown device model id: {0}", device.DeviceModelId)); - else - device.DeviceModel = deviceModel; - } - - // DEVICE PROFILE - if (!device.Errors.ContainsKey("DeviceProfileId")) - { - DeviceProfile deviceProfile; - if (!deviceProfiles.TryGetValue(device.DeviceProfileId, out deviceProfile)) - device.Errors.Add("DeviceProfileId", string.Format("Unknown device profile id: {0}", device.DeviceProfileId)); - else - device.DeviceProfile = deviceProfile; - } - - // DEVICE BATCH - if (!device.Errors.ContainsKey("DeviceBatchId") && device.DeviceBatchId.HasValue) - { - DeviceBatch deviceBatch; - if (!deviceBatches.TryGetValue(device.DeviceBatchId.Value, out deviceBatch)) - device.Errors.Add("DeviceBatchId", string.Format("Unknown device Batch id: {0}", device.DeviceBatchId)); - else - device.DeviceBatch = deviceBatch; - } - - // ASSIGNED USER - if (!device.Errors.ContainsKey("AssignedUserId") && device.AssignedUserId != null) - { - try - { - device.AssignedUser = UserService.GetUser(device.AssignedUserId, Database, true); - } - catch (ArgumentException) - { - device.Errors.Add("AssignedUserId", string.Format("Unknown user id: {0}", device.AssignedUserId)); - } - } - - } - - internal static ImportDevice ParseRecord(this string[] record) - { - int csvFieldCount = record.Length; - if (csvFieldCount < 1) - throw new ArgumentException("At least one CSV field is required (Serial Number)"); - - string csvSerialNumber; - string csvDeviceModelId; - int deviceModelId = 1; // Default 'Unknown Device Model' - string csvDeviceProfileId; - int deviceProfileId = 1; // 'Default' Profile - string csvDeviceBatchId; - int deviceBatchId = 0; // No Batch - string csvAssignedUserId = null; - string csvLocation = null; - string csvAssetNumber = null; - Dictionary errors = new Dictionary(); - - // SERIAL NUMBER - csvSerialNumber = record[0]; - if (string.IsNullOrWhiteSpace(csvSerialNumber)) - errors.Add("SerialNumber", "The serial number is required"); - else if (csvSerialNumber.Trim().Length > 60) - errors.Add("SerialNumber", "The serial number must be less than or equal to 60 characters"); - - if (csvFieldCount > 1) - { - // DEVICE MODEL - csvDeviceModelId = record[1]; - if (!string.IsNullOrWhiteSpace(csvDeviceModelId)) - if (!int.TryParse(csvDeviceModelId, out deviceModelId)) - errors.Add("DeviceModelId", "The device model is optional, but when supplied must be a number"); - else if (deviceModelId < 1) - errors.Add("DeviceModelId", "The device model is optional, but when supplied must be greater than 0"); - - if (csvFieldCount > 2) - { - // DEVICE PROFILE - csvDeviceProfileId = record[2]; - if (!string.IsNullOrWhiteSpace(csvDeviceProfileId)) - if (!int.TryParse(csvDeviceProfileId, out deviceProfileId)) - errors.Add("DeviceProfileId", "The device profile is optional, but when supplied must be a number"); - else if (deviceProfileId < 1) - errors.Add("DeviceProfileId", "The device profile is optional, but when supplied must be greater than 0"); - - if (csvFieldCount > 3) - { - // DEVICE BATCH - csvDeviceBatchId = record[3]; - if (!string.IsNullOrWhiteSpace(csvDeviceBatchId)) - if (!int.TryParse(csvDeviceBatchId, out deviceBatchId)) - errors.Add("DeviceBatchId", "The device batch is optional, but when supplied must be a number"); - else if (deviceBatchId < 1) - errors.Add("DeviceBatchId", "The device batch is optional, but when supplied must be greater than 0"); - - if (csvFieldCount > 4) - { - // ASSIGNED USER - csvAssignedUserId = record[4]; - if (string.IsNullOrWhiteSpace(csvAssignedUserId)) - csvAssignedUserId = null; // Not Assigned - else - { - if (csvAssignedUserId.Length > 50) - errors.Add("AssignedUserId", "The assigned user must be less than or equal to 50 characters"); - else if (!csvAssignedUserId.Contains('\\')) // Assume Primary Domain - csvAssignedUserId = string.Format(@"{0}\{1}", ActiveDirectory.Context.PrimaryDomain.NetBiosName, csvAssignedUserId); - } - - if (csvFieldCount > 5) - { - // LOCATION - csvLocation = record[5]; - if (string.IsNullOrWhiteSpace(csvLocation)) - csvLocation = null; // No Location Specified - else if (csvLocation.Length > 250) - errors.Add("Location", "The location must be less than or equal to 250 characters"); - - if (csvFieldCount > 6) - { - // ASSET NUMBER - csvAssetNumber = record[6]; - if (string.IsNullOrWhiteSpace(csvAssetNumber)) - csvAssetNumber = null; // No Location Specified - else if (csvAssetNumber.Length > 40) - errors.Add("AssetNumber", "The asset number must be less than or equal to 40 characters"); - } - } - } - } - } - } - - return new ImportDevice() - { - SerialNumber = csvSerialNumber.Trim(), - DeviceModelId = deviceModelId, - DeviceProfileId = deviceProfileId, - DeviceBatchId = deviceBatchId == 0 ? (int?)null : deviceBatchId, - AssignedUserId = csvAssignedUserId, - Location = csvLocation, - AssetNumber = csvAssetNumber, - Errors = errors - }; - } - - #region ImportDevice Extensions - - public static string ImportStatus(this ImportDevice device) - { - if (device.Errors.Count > 0) - return "Error"; - - if (device.Device != null) - return "Update"; - - return "New"; - } - - #endregion - - } -} diff --git a/Disco.BI/BI/DeviceBI/Importing/ImportParseTask.cs b/Disco.BI/BI/DeviceBI/Importing/ImportParseTask.cs deleted file mode 100644 index ff8a0af4..00000000 --- a/Disco.BI/BI/DeviceBI/Importing/ImportParseTask.cs +++ /dev/null @@ -1,91 +0,0 @@ -using Disco.Data.Repository; -using Disco.Models.BI.Device; -using Disco.Models.Repository; -using Disco.Services.Tasks; -using LumenWorks.Framework.IO.Csv; -using Quartz; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Web; -using System.Web.Caching; - -namespace Disco.BI.DeviceBI.Importing -{ - public class ImportParseTask : ScheduledTask - { - public override string TaskName { get { return "Import Devices - Parsing"; } } - - public override bool SingleInstanceTask { get { return false; } } - public override bool CancelInitiallySupported { get { return false; } } - - protected override void ExecuteTask() - { - string csvFilename = (string)this.ExecutionContext.JobDetail.JobDataMap["CsvFilename"]; - MemoryStream csvStream = (MemoryStream)this.ExecutionContext.JobDetail.JobDataMap["CsvImport"]; - - this.Status.UpdateStatus(0, "Parsing CSV File", "Loading Records"); - - List records; - - using (TextReader csvTextReader = new StreamReader(csvStream)) - { - using (CsvReader csvReader = new CsvReader(csvTextReader, true)) - { - csvReader.DefaultParseErrorAction = ParseErrorAction.ThrowException; - csvReader.MissingFieldAction = MissingFieldAction.ReplaceByNull; - - records = csvReader.Select(record => record.ParseRecord()).ToList(); - } - } - csvStream.Dispose(); - - this.Status.UpdateStatus(20, "Parsing CSV File", string.Format("Linking {0} Records", records.Count)); - - using (DiscoDataContext database = new DiscoDataContext()) - { - var populateReferences = Import.GetPopulateRecordReferences(database); - - DateTime lastUpdate = DateTime.Now; - foreach (var record in records) - { - record.PopulateRecord(database, populateReferences); - - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > 1) - { - // Update every second - this.Status.UpdateStatus((int)Math.Floor((((double)(records.IndexOf(record) + 1) / records.Count) * 80))); - lastUpdate = DateTime.Now; - } - } - } - - // Create Session Result - ImportDeviceSession session = new ImportDeviceSession() - { - ImportParseTaskId = this.Status.SessionId, - ImportFilename = csvFilename, - ImportDevices = records - }; - - // Set Results to Cache - string key = string.Format(Import.ImportParseCacheKey, this.Status.SessionId); - HttpRuntime.Cache.Insert(key, session, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(60), CacheItemPriority.NotRemovable, null); - } - - public static ScheduledTaskStatus Run(Stream CsvImport, String CsvFilename) - { - - MemoryStream csvStream = new MemoryStream(); - CsvImport.CopyTo(csvStream); - csvStream.Position = 0; - - var task = new ImportParseTask(); - JobDataMap taskData = new JobDataMap() { { "CsvImport", csvStream }, { "CsvFilename", CsvFilename } }; - return task.ScheduleTask(taskData); - } - } -} diff --git a/Disco.BI/BI/DeviceBI/Importing/ImportProcessTask.cs b/Disco.BI/BI/DeviceBI/Importing/ImportProcessTask.cs deleted file mode 100644 index c0d416e5..00000000 --- a/Disco.BI/BI/DeviceBI/Importing/ImportProcessTask.cs +++ /dev/null @@ -1,70 +0,0 @@ -using Disco.Data.Repository; -using Disco.Models.BI.Device; -using Disco.Services.Tasks; -using Quartz; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Web; - -namespace Disco.BI.DeviceBI.Importing -{ - public class ImportProcessTask : ScheduledTask - { - public override string TaskName { get { return "Import Devices - Processing Changes"; } } - - public override bool SingleInstanceTask { get { return false; } } - public override bool CancelInitiallySupported { get { return false; } } - - protected override void ExecuteTask() - { - string importParseTaskId = (string)this.ExecutionContext.JobDetail.JobDataMap["ImportParseTaskId"]; - - if (string.IsNullOrWhiteSpace(importParseTaskId)) - throw new ArgumentNullException("ImportParseTaskId"); - - ImportDeviceSession session = Import.GetSession(importParseTaskId); - - if (session == null) - throw new InvalidOperationException("The session timed out (60 minutes), try importing again"); - - List records = session.ImportDevices; - int recordsImported = 0; - - this.Status.UpdateStatus(0, "Processing Device Import", "Importing Devices"); - - using (DiscoDataContext database = new DiscoDataContext()) - { - var populateReferences = Import.GetPopulateRecordReferences(database); - - DateTime lastUpdate = DateTime.Now; - foreach (var record in records) - { - if (record.ImportRecord(database, populateReferences)) - recordsImported++; - - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > 1) - { - // Update every second - this.Status.UpdateStatus((int)Math.Floor((((double)(records.IndexOf(record) + 1) / records.Count) * 100)), string.Format("Importing: {0} ({1} of {2})", record.SerialNumber, records.IndexOf(record) + 1, records.Count)); - lastUpdate = DateTime.Now; - } - } - } - - this.Status.SetFinishedMessage(string.Format("Imported {0} of {1} Devices", recordsImported, records.Count)); - } - - public static ScheduledTaskStatus Run(string ImportParseTaskId) - { - if (string.IsNullOrWhiteSpace(ImportParseTaskId)) - throw new ArgumentNullException("ImportParseTaskId"); - - var task = new ImportProcessTask(); - JobDataMap taskData = new JobDataMap() { { "ImportParseTaskId", ImportParseTaskId } }; - return task.ScheduleTask(taskData); - } - } -} diff --git a/Disco.BI/BI/Wireless/BaseWirelessProvider.cs b/Disco.BI/BI/Wireless/BaseWirelessProvider.cs deleted file mode 100644 index 8c7ff795..00000000 --- a/Disco.BI/BI/Wireless/BaseWirelessProvider.cs +++ /dev/null @@ -1,83 +0,0 @@ -using Disco.BI.Wireless.eduSTAR; -using Disco.Data.Configuration; -using Disco.Data.Repository; -using Disco.BI.Extensions; -using Disco.Models.Repository; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Threading; -namespace Disco.BI.Wireless -{ - public abstract class BaseWirelessProvider - { - protected DiscoDataContext dbContext; - private static object _CertificateAllocateLock = System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(new object()); - public static BaseWirelessProvider GetProvider(DiscoDataContext dbContext) - { - string provider = dbContext.DiscoConfiguration.Wireless.Provider; - if (provider == "eduSTAR") - { - return new eduSTARWirelessProvider(dbContext); - } - throw new System.NotSupportedException(string.Format("Wireless Provider Not Supported: '{0}'", dbContext.DiscoConfiguration.Wireless.Provider)); - } - protected BaseWirelessProvider(DiscoDataContext dbContext) - { - this.dbContext = dbContext; - } - private DeviceCertificate CertificateAllocate(ref Device repoDevice) - { - lock (BaseWirelessProvider._CertificateAllocateLock) - { - this.FillCertificateAutoBuffer(); - int timeout = 60; - int freeCertCount = this.dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == null && c.Enabled).Count(); - while (!(freeCertCount > 0 | timeout <= 0)) - { - System.Threading.Thread.Sleep(500); - freeCertCount = this.dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == null && c.Enabled).Count(); - timeout--; - } - DeviceCertificate cert = this.dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == null && c.Enabled).FirstOrDefault(); - if (cert == null) - { - WirelessCertificatesLog.LogAllocationFailed(repoDevice.SerialNumber); - throw new System.InvalidOperationException("Unable to Allocate a Wireless Certificate"); - } - WirelessCertificatesLog.LogAllocated(cert.Name, repoDevice.SerialNumber); - cert.DeviceSerialNumber = repoDevice.SerialNumber; - cert.AllocatedDate = System.DateTime.Now; - this.dbContext.SaveChanges(); - return cert; - } - } - public DeviceCertificate Enrol(Device repoDevice) - { - DeviceCertificate allocatedCert = this.dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == repoDevice.SerialNumber && c.Enabled).FirstOrDefault(); - if (allocatedCert != null) - { - return allocatedCert; - } - - // Removed 2012-06-14 G# - Properties moved to DeviceProfile model & DB Migrated in DBv3. - //if (repoDevice.DeviceProfile.Configuration(this.dbContext).AllocateWirelessCertificate) - if (repoDevice.DeviceProfile.AllocateCertificate) - { - allocatedCert = this.CertificateAllocate(ref repoDevice); - return allocatedCert; - } - else - { - return null; - } - } - protected abstract void FillCertificateAutoBuffer(); - public abstract void FillCertificateBuffer(int Amount); - public abstract System.Collections.Generic.List RemoveExistingCertificateNames(); - } -} diff --git a/Disco.BI/BI/Wireless/WirelessCertificatesLog.cs b/Disco.BI/BI/Wireless/WirelessCertificatesLog.cs deleted file mode 100644 index f39bcb99..00000000 --- a/Disco.BI/BI/Wireless/WirelessCertificatesLog.cs +++ /dev/null @@ -1,304 +0,0 @@ -using Disco.Logging; -using Disco.Logging.Models; -using System; -using System.Collections.Generic; -using System.Diagnostics; -namespace Disco.BI.Wireless -{ - public class WirelessCertificatesLog : LogBase - { - public enum EventTypeIds - { - RetrievalStarting = 10, - RetrievalProgress, - RetrievalFinished, - RetrievalWarning = 15, - RetrievalError, - RetrievalCertificateStarting = 20, - RetrievalCertificateFinished = 22, - RetrievalCertificateWarning = 25, - RetrievalCertificateError, - Allocated = 40, - AllocationFailed = 50 - } - private const int _ModuleId = 60; - private static bool _IsCertificateRetrievalProcessing; - private static string _CertificateRetrievalStatus; - private static int _CertificateRetrievalProgress; - public static WirelessCertificatesLog Current - { - get - { - return (WirelessCertificatesLog)LogContext.LogModules[60]; - } - } - public static bool IsCertificateRetrievalProcessing - { - get - { - return WirelessCertificatesLog._IsCertificateRetrievalProcessing; - } - } - public override string ModuleDescription - { - get - { - return "Wireless Certificates"; - } - } - public override int ModuleId - { - get - { - return 60; - } - } - public override string ModuleName - { - get - { - return "WirelessCertificates"; - } - } - [System.Diagnostics.DebuggerNonUserCode] - public WirelessCertificatesLog() - { - } - private static void Log(WirelessCertificatesLog.EventTypeIds EventTypeId, params object[] Args) - { - WirelessCertificatesLog.Current.Log((int)EventTypeId, Args); - } - public static void LogRetrievalStarting(int CertificateCount, int CertificateIdFrom, int CertificateIdTo) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalStarting, new object[] - { - CertificateCount, - CertificateIdFrom, - CertificateIdTo - }); - } - public static void LogRetrievalFinished() - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalFinished, new object[0]); - } - public static void LogRetrievalWarning(string Message) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalWarning, new object[] - { - Message - }); - } - public static void LogRetrievalError(string Message) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalError, new object[] - { - Message - }); - } - public static void LogRetrievalCertificateStarting(string CertificateId) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalCertificateStarting, new object[] - { - CertificateId - }); - } - public static void LogRetrievalCertificateFinished(string CertificateId) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalCertificateFinished, new object[] - { - CertificateId - }); - } - public static void LogRetrievalCertificateWarning(string CertificateId, string Message) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalCertificateWarning, new object[] - { - CertificateId, - Message - }); - } - public static void LogRetrievalCertificateError(string CertificateId, string Message) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalCertificateError, new object[] - { - CertificateId, - Message - }); - } - public static void LogAllocated(string CertificateId, string DeviceSerialNumber) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.Allocated, new object[] - { - CertificateId, - DeviceSerialNumber - }); - } - public static void LogAllocationFailed(string DeviceSerialNumber) - { - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.AllocationFailed, new object[] - { - DeviceSerialNumber - }); - } - public static void LogCertificateRetrievalProgress(bool? IsProcessing, int? Progress, string Status) - { - bool flag = IsProcessing.HasValue; - if (flag) - { - WirelessCertificatesLog._IsCertificateRetrievalProcessing = IsProcessing.Value; - } - flag = WirelessCertificatesLog._IsCertificateRetrievalProcessing; - if (flag) - { - bool flag2 = Status != null; - if (flag2) - { - WirelessCertificatesLog._CertificateRetrievalStatus = Status; - } - flag2 = Progress.HasValue; - if (flag2) - { - WirelessCertificatesLog._CertificateRetrievalProgress = Progress.Value; - } - } - else - { - WirelessCertificatesLog._CertificateRetrievalStatus = null; - WirelessCertificatesLog._CertificateRetrievalProgress = 0; - } - WirelessCertificatesLog.Log(WirelessCertificatesLog.EventTypeIds.RetrievalProgress, new object[] - { - WirelessCertificatesLog._IsCertificateRetrievalProcessing, - WirelessCertificatesLog._CertificateRetrievalProgress, - WirelessCertificatesLog._CertificateRetrievalStatus - }); - } - protected override System.Collections.Generic.List LoadEventTypes() - { - return new System.Collections.Generic.List - { - new LogEventType - { - Id = 10, - ModuleId = 60, - Name = "Retrieval Starting", - Format = "Starting retrieval of {0} certificate/s ({1} to {2})", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 11, - ModuleId = 60, - Name = "Retrieval Progress", - Format = "Processing: {0}; {1}% Complete; Status: {2}", - Severity = 0, - UseLive = true, - UsePersist = false, - UseDisplay = false - }, - new LogEventType - { - Id = 12, - ModuleId = 60, - Name = "Retrieval Finished", - Format = "Retrieval of Certificates Complete", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 15, - ModuleId = 60, - Name = "Retrieval Warning", - Format = "Retrieval Warning: {0}", - Severity = 1, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 16, - ModuleId = 60, - Name = "Retrieval Error", - Format = "Retrieval Error: {0}", - Severity = 2, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 20, - ModuleId = 60, - Name = "Retrieval Certificate Starting", - Format = "Retrieving Certificate: {0}", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 22, - ModuleId = 60, - Name = "Retrieval Certificate Finished", - Format = "Certificate Retrieved: {0}", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 25, - ModuleId = 60, - Name = "Retrieval Certificate Warning", - Format = "{0} Certificate Warning: {1}", - Severity = 1, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 26, - ModuleId = 60, - Name = "Retrieval Certificate Error", - Format = "{0} Certificate Error: {1}", - Severity = 2, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 40, - ModuleId = 60, - Name = "Allocated", - Format = "Certificate {0} allocated to {1}", - Severity = 0, - UseLive = true, - UsePersist = true, - UseDisplay = true - }, - new LogEventType - { - Id = 50, - ModuleId = 60, - Name = "Allocation Failed", - Format = "No certificates available for Device: {0}", - Severity = 2, - UseLive = true, - UsePersist = true, - UseDisplay = true - } - }; - } - } -} diff --git a/Disco.BI/BI/Wireless/eduSTAR/eduSTARWirelessProvider.cs b/Disco.BI/BI/Wireless/eduSTAR/eduSTARWirelessProvider.cs deleted file mode 100644 index e5ccea4a..00000000 --- a/Disco.BI/BI/Wireless/eduSTAR/eduSTARWirelessProvider.cs +++ /dev/null @@ -1,283 +0,0 @@ -using Disco.BI.Wireless.eduSTAR.eduSTARWirelessCertService; -using Disco.Data.Repository; -using Disco.Models.Repository; -using Ionic.Zip; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Security.Cryptography.X509Certificates; -using System.ServiceModel; -using System.ServiceModel.Channels; -using System.Threading; - -namespace Disco.BI.Wireless.eduSTAR -{ - public class eduSTARWirelessProvider : BaseWirelessProvider - { - private class BulkLoadCertificatesContract - { - public int Start { get; set; } - public int Count { get; set; } - } - private static object _BulkLoadThreadLock = new object(); - private static System.Threading.Thread _BulkLoadThread; - public eduSTARWirelessProvider(DiscoDataContext dbContext) - : base(dbContext) - { - } - protected override void FillCertificateAutoBuffer() - { - int freeCertCount = this.dbContext.DeviceCertificates.Where(c => c.DeviceSerialNumber == null && c.Enabled).Count(); - if (freeCertCount <= this.dbContext.DiscoConfiguration.Wireless.CertificateAutoBufferLow) - { - this.BulkLoadCertificates(0); - } - } - public override void FillCertificateBuffer(int Amount) - { - this.BulkLoadCertificates(Amount); - } - public override System.Collections.Generic.List RemoveExistingCertificateNames() - { - return new System.Collections.Generic.List - { - "(eduPaSS)", - "(CN=Computers, ?DC=services, ?DC=education, ?DC=vic, ?DC=gov, ?DC=au)" - }; - } - private void BulkLoadCertificates(int Amount = 0) - { - if (eduSTARWirelessProvider._BulkLoadThread == null) - { - lock (eduSTARWirelessProvider._BulkLoadThreadLock) - { - if (eduSTARWirelessProvider._BulkLoadThread == null) - { - int start = 0; - if (this.dbContext.DeviceCertificates.Count() > 0) - { - start = this.dbContext.DeviceCertificates.Max(c => c.ProviderIndex) + 1; - } - int buffer = this.dbContext.DeviceCertificates.Count(c => c.DeviceSerialNumber == null && c.Enabled); - int count = this.dbContext.DiscoConfiguration.Wireless.CertificateAutoBufferMax - buffer; - if (Amount > 0) - { - count = Amount; - } - if (count > 0) - { - eduSTARWirelessProvider.BulkLoadCertificatesContract contract = new eduSTARWirelessProvider.BulkLoadCertificatesContract - { - Start = start, - Count = count - }; - System.Threading.ParameterizedThreadStart threadStart = delegate(object a0) - { - this.BulkLoadCertificatesStart((eduSTARWirelessProvider.BulkLoadCertificatesContract)a0); - } - ; - eduSTARWirelessProvider._BulkLoadThread = new System.Threading.Thread(threadStart); - eduSTARWirelessProvider._BulkLoadThread.Start(contract); - } - } - } - } - } - private void BulkLoadCertificatesStart(eduSTARWirelessProvider.BulkLoadCertificatesContract contract) - { - try - { - WirelessCertificatesLog.LogRetrievalStarting(contract.Count, contract.Start, contract.Start + contract.Count - 1); - WirelessCertificatesLog.LogCertificateRetrievalProgress(true, 0, string.Format("Starting Bulk Retrieval (Loading {0} Certificate/s)", contract.Count)); - DiscoDataContext dbLocalContext = new DiscoDataContext(); - try - { - WirelessCertServiceSoapClient proxy = this.GetProxy(); - try - { - int num = contract.Start + contract.Count - 1; - int index = contract.Start; - while (true) - { - int num2 = num; - if (index > num2) - { - break; - } - WirelessCertificatesLog.LogCertificateRetrievalProgress(true, (int)System.Math.Round(unchecked(((double)checked(index - contract.Start) + 0.5) / (double)contract.Count * 100.0)), string.Format("Retrieving Certificate {0} of {1}", index - contract.Start + 1, contract.Count)); - DeviceCertificate cert = this.LoadCertificate(index, proxy, dbLocalContext); - dbLocalContext.DeviceCertificates.Add(cert); - dbLocalContext.SaveChanges(); - WirelessCertificatesLog.LogRetrievalCertificateFinished(cert.Name); - index++; - } - } - finally - { - bool flag = proxy != null; - if (flag) - { - ((System.IDisposable)proxy).Dispose(); - } - } - } - finally - { - bool flag = dbLocalContext != null; - if (flag) - { - ((System.IDisposable)dbLocalContext).Dispose(); - } - } - } - catch (System.Exception ex) - { - WirelessCertificatesLog.LogRetrievalError(string.Format("[{0}] {1}", ex.GetType().Name, ex.Message)); - throw ex; - } - finally - { - lock (eduSTARWirelessProvider._BulkLoadThreadLock) - { - eduSTARWirelessProvider._BulkLoadThread = null; - } - WirelessCertificatesLog.LogRetrievalFinished(); - WirelessCertificatesLog.LogCertificateRetrievalProgress(false, null, null); - } - } - private DeviceCertificate LoadCertificate(int Index, DiscoDataContext dbContext) - { - DeviceCertificate LoadCertificate; - try - { - WirelessCertServiceSoapClient proxy = this.GetProxy(); - try - { - LoadCertificate = this.LoadCertificate(Index, proxy, dbContext); - } - finally - { - bool flag = proxy != null; - if (flag) - { - ((System.IDisposable)proxy).Dispose(); - } - } - } - catch (System.Exception ex) - { - WirelessCertificatesLog.LogRetrievalCertificateError(Index.ToString(), string.Format("[{0}] {1}", ex.GetType().Name, ex.Message)); - throw ex; - } - return LoadCertificate; - } - private DeviceCertificate LoadCertificate(int Index, WirelessCertServiceSoapClient Proxy, DiscoDataContext dbContext) - { - bool flag = string.IsNullOrWhiteSpace(dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountSchoolId); - if (flag) - { - throw new System.ArgumentException("Wireless Certificates: Invalid ServiceAccount SchoolId"); - } - flag = string.IsNullOrWhiteSpace(dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountUsername); - if (flag) - { - throw new System.ArgumentException("Wireless Certificates: Invalid ServiceAccount Username"); - } - flag = string.IsNullOrWhiteSpace(dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountPassword); - if (flag) - { - throw new System.ArgumentException("Wireless Certificates: Invalid ServiceAccount Password"); - } - DeviceCertificate cert = new DeviceCertificate - { - ProviderIndex = Index, - Name = string.Format("{0}-{1}", dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountSchoolId, Index.ToString("00000")), - Enabled = true - }; - WirelessCertificatesLog.LogRetrievalCertificateStarting(cert.Name); - string response; - try - { - response = Proxy.GetWirelessCert(dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountSchoolId, cert.Name, "password", dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountUsername, dbContext.DiscoConfiguration.Wireless.eduSTAR_ServiceAccountPassword); - } - catch (System.Exception ex) - { - WirelessCertificatesLog.LogRetrievalCertificateError(cert.Name, ex.Message); - throw ex; - } - try - { - byte[] responseBytes = System.Convert.FromBase64String(response); - System.IO.MemoryStream responseByteStream = new System.IO.MemoryStream(responseBytes); - try - { - ZipFile responseZip = ZipFile.Read(responseByteStream); - ZipEntry certFile = responseZip.FirstOrDefault((ZipEntry ze) => ze.FileName.EndsWith(".pfx", System.StringComparison.InvariantCultureIgnoreCase)); - System.IO.MemoryStream certByteStream = new System.IO.MemoryStream(); - try - { - certFile.Extract(certByteStream); - cert.Content = certByteStream.ToArray(); - } - finally - { - flag = (certByteStream != null); - if (flag) - { - ((System.IDisposable)certByteStream).Dispose(); - } - } - } - finally - { - flag = (responseByteStream != null); - if (flag) - { - ((System.IDisposable)responseByteStream).Dispose(); - } - } - } - catch (System.Exception ex2) - { - if (response.Contains("Computer with this name already exists")) - { - WirelessCertificatesLog.LogRetrievalCertificateWarning(cert.Name, "Already exists on eduSTAR server, disabling and skipping."); - cert.ExpirationDate = System.DateTime.Now; - cert.Enabled = false; - cert.Content = null; - return cert; - } - throw new System.InvalidOperationException(string.Format("Unable to Uncompress (Server returned: {0})", response), ex2); - } - try - { - X509Certificate2 x509Cert = new X509Certificate2(cert.Content, "password"); - cert.ExpirationDate = x509Cert.NotAfter; - } - catch (System.Exception ex3) - { - throw new System.InvalidOperationException("Invalid Certificate returned by Server", ex3); - } - return cert; - } - private WirelessCertServiceSoapClient GetProxy() - { - BasicHttpBinding binding = new BasicHttpBinding(); - - // Don't Use Proxy - binding.UseDefaultWebProxy = false; - binding.ProxyAddress = null; - - binding.Security.Mode = BasicHttpSecurityMode.Transport; - binding.MaxReceivedMessageSize = 524288L; - binding.ReaderQuotas.MaxStringContentLength = 524288; - EndpointAddress endpointAddress = new EndpointAddress(new Uri("https://www.eduweb.vic.gov.au/edustar/WirelessCertWS/wirelesscertws.asmx"), new AddressHeader[0]); - return new WirelessCertServiceSoapClient(binding, endpointAddress); - } - } -} diff --git a/Disco.BI/Disco.BI.csproj b/Disco.BI/Disco.BI.csproj index 58bb275c..5ab598f9 100644 --- a/Disco.BI/Disco.BI.csproj +++ b/Disco.BI/Disco.BI.csproj @@ -46,10 +46,6 @@ ..\Resources\Libraries\iTextSharp\itextsharp.dll - - False - ..\Resources\Libraries\LumenWorks.Framework.IO\LumenWorks.Framework.IO.dll - False ..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll @@ -124,9 +120,6 @@ - - - @@ -242,7 +235,7 @@ - + diff --git a/Disco.Models/Disco.Models.csproj b/Disco.Models/Disco.Models.csproj index 5cde0471..ac48ac8e 100644 --- a/Disco.Models/Disco.Models.csproj +++ b/Disco.Models/Disco.Models.csproj @@ -105,6 +105,10 @@ + + + + @@ -151,6 +155,7 @@ + @@ -166,9 +171,7 @@ - - - + diff --git a/Disco.Models/Services/Devices/Exporting/DeviceExportOptions.cs b/Disco.Models/Services/Devices/Exporting/DeviceExportOptions.cs index d5fae85c..db701596 100644 --- a/Disco.Models/Services/Devices/Exporting/DeviceExportOptions.cs +++ b/Disco.Models/Services/Devices/Exporting/DeviceExportOptions.cs @@ -83,19 +83,19 @@ namespace Disco.Models.Services.Devices.Exporting public bool ProfileShortName { get; set; } // User - [Display(ShortName = "Assigned User", Name = "Identifier", Description = "The identifier of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Identifier", Description = "The identifier of the user assigned to the device")] public bool AssignedUserId { get; set; } [Display(ShortName = "Assigned User", Name = "Assigned Date", Description = "The date the device was assigned to the user")] public bool AssignedUserDate { get; set; } - [Display(ShortName = "Assigned User", Name = "Display Name", Description = "The display name of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Display Name", Description = "The display name of the user assigned to the device")] public bool AssignedUserDisplayName { get; set; } - [Display(ShortName = "Assigned User", Name = "Surname", Description = "The surname of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Surname", Description = "The surname of the user assigned to the device")] public bool AssignedUserSurname { get; set; } - [Display(ShortName = "Assigned User", Name = "Given Name", Description = "The given name of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Given Name", Description = "The given name of the user assigned to the device")] public bool AssignedUserGivenName { get; set; } - [Display(ShortName = "Assigned User", Name = "Phone Number", Description = "The phone number of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Phone Number", Description = "The phone number of the user assigned to the device")] public bool AssignedUserPhoneNumber { get; set; } - [Display(ShortName = "Assigned User", Name = "Email Address", Description = "The email address of the user assigned with the device")] + [Display(ShortName = "Assigned User", Name = "Email Address", Description = "The email address of the user assigned to the device")] public bool AssignedUserEmailAddress { get; set; } // Jobs diff --git a/Disco.Models/Services/Devices/Importing/DeviceImportFieldTypes.cs b/Disco.Models/Services/Devices/Importing/DeviceImportFieldTypes.cs new file mode 100644 index 00000000..92972246 --- /dev/null +++ b/Disco.Models/Services/Devices/Importing/DeviceImportFieldTypes.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Models.Services.Devices.Importing +{ + public enum DeviceImportFieldTypes + { + [Required, Display(Name = "Device Serial Number", Description = "The device serial number")] + DeviceSerialNumber, + [Display(Name = "Device Asset Number", Description = "The device asset number")] + DeviceAssetNumber, + [Display(Name = "Device Location", Description = "The device location")] + DeviceLocation, + [Display(Name = "Device Decommissioned Date", Description = "The date the device was decommissioned in Disco")] + DeviceDecommissionedDate, + [Display(Name = "Device Decommissioned Reason", Description = "The reason the device was decommissioned")] + DeviceDecommissionedReason, + + [Display(Name = "Device LAN MAC Address", Description = "The LAN MAC Address associated with the device")] + DetailLanMacAddress, + [Display(Name = "Device Wireless LAN MAC Address", Description = "The Wireless LAN MAC Address associated with the device")] + DetailWLanMacAddress, + [Display(Name = "Device AC Adapter", Description = "The AC Adapter associated with the device")] + DetailACAdapter, + + [Display(Name = "Model Identifier", Description = "The identifier of the device model associated with the device")] + ModelId, + + [Display(Name = "Batch Identifier", Description = "The identifier of the device batch associated with the device")] + BatchId, + + [Display(Name = "Profile Identifier", Description = "The identifier of the device profile associated with the device")] + ProfileId, + + [Display(Name = "Assigned User Identifier", Description = "The identifier of the user assigned to the device")] + AssignedUserId, + + [Display(Name = "Ignore Column", Description = "The column will be ignored during the import")] + IgnoreColumn + } +} diff --git a/Disco.Models/Services/Devices/Importing/IDeviceImportContext.cs b/Disco.Models/Services/Devices/Importing/IDeviceImportContext.cs new file mode 100644 index 00000000..3d761af2 --- /dev/null +++ b/Disco.Models/Services/Devices/Importing/IDeviceImportContext.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Models.Services.Devices.Importing +{ + public interface IDeviceImportContext + { + string SessionId { get; } + string Filename { get; } + List> Header { get; } + List, Type>> ParsedHeaders { get; } + List RawData { get; } + + List Records { get; } + int AffectedRecords { get; } + } +} diff --git a/Disco.Models/Services/Devices/Importing/IDeviceImportField.cs b/Disco.Models/Services/Devices/Importing/IDeviceImportField.cs new file mode 100644 index 00000000..b76f01d3 --- /dev/null +++ b/Disco.Models/Services/Devices/Importing/IDeviceImportField.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Models.Services.Devices.Importing +{ + public interface IDeviceImportField + { + DeviceImportFieldTypes FieldType { get; } + EntityState? FieldAction { get; } + + string ErrorMessage { get; } + + object RawParsedValue { get; } + string FriendlyValue { get; } + string FriendlyPreviousValue { get; } + } +} diff --git a/Disco.Models/Services/Devices/Importing/IDeviceImportRecord.cs b/Disco.Models/Services/Devices/Importing/IDeviceImportRecord.cs new file mode 100644 index 00000000..34430c41 --- /dev/null +++ b/Disco.Models/Services/Devices/Importing/IDeviceImportRecord.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Models.Services.Devices.Importing +{ + public interface IDeviceImportRecord + { + string DeviceSerialNumber { get; } + + IEnumerable Fields { get; } + + EntityState RecordAction { get; } + + bool HasError { get; } + } +} diff --git a/Disco.Models/UI/Device/DeviceImportHeadersModel.cs b/Disco.Models/UI/Device/DeviceImportHeadersModel.cs new file mode 100644 index 00000000..ef17c458 --- /dev/null +++ b/Disco.Models/UI/Device/DeviceImportHeadersModel.cs @@ -0,0 +1,9 @@ +using Disco.Models.Services.Devices.Importing; + +namespace Disco.Models.UI.Device +{ + public interface DeviceImportHeadersModel : BaseUIModel + { + IDeviceImportContext Context { get; set; } + } +} \ No newline at end of file diff --git a/Disco.Models/UI/Device/DeviceImportReviewModel.cs b/Disco.Models/UI/Device/DeviceImportReviewModel.cs index 036dd860..4ff2620d 100644 --- a/Disco.Models/UI/Device/DeviceImportReviewModel.cs +++ b/Disco.Models/UI/Device/DeviceImportReviewModel.cs @@ -1,16 +1,15 @@ -using Disco.Models.BI.Device; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using Disco.Models.Services.Devices.Importing; namespace Disco.Models.UI.Device { public interface DeviceImportReviewModel : BaseUIModel { - string ImportParseTaskId { get; set; } - string ImportFilename { get; set; } - List ImportDevices { get; set; } + IDeviceImportContext Context { get; set; } + + int StatisticErrorRecords { get; set; } + int StatisticNewRecords { get; set; } + int StatisticModifiedRecords { get; set; } + int StatisticUnmodifiedRecords { get; set; } + int StatisticImportRecords { get; } } -} +} \ No newline at end of file diff --git a/Disco.Services/Devices/Importing/DeviceImport.cs b/Disco.Services/Devices/Importing/DeviceImport.cs new file mode 100644 index 00000000..f69b02de --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImport.cs @@ -0,0 +1,199 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using Disco.Services.Devices.Importing.Fields; +using Disco.Services.Tasks; +using LumenWorks.Framework.IO.Csv; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Services.Devices.Importing +{ + public static class DeviceImport + { + + internal static Lazy> FieldHandlers = new Lazy>(() => + { + return new Dictionary() + { + { DeviceImportFieldTypes.DeviceSerialNumber, typeof(DeviceSerialNumberImportField) }, + { DeviceImportFieldTypes.DeviceAssetNumber, typeof(DeviceAssetNumberImportField) }, + { DeviceImportFieldTypes.DeviceLocation, typeof(DeviceLocationImportField) }, + { DeviceImportFieldTypes.DeviceDecommissionedDate, typeof(DeviceDecommissionedDateImportField) }, + { DeviceImportFieldTypes.DeviceDecommissionedReason, typeof(DeviceDecommissionedReasonImportField) }, + + { DeviceImportFieldTypes.DetailLanMacAddress, typeof(DetailLanMacAddressImportField) }, + { DeviceImportFieldTypes.DetailWLanMacAddress, typeof(DetailWLanMacAddressImportField) }, + { DeviceImportFieldTypes.DetailACAdapter, typeof(DetailACAdapterImportField) }, + + { DeviceImportFieldTypes.ModelId, typeof(ModelIdImportField) }, + + { DeviceImportFieldTypes.BatchId, typeof(BatchIdImportField) }, + + { DeviceImportFieldTypes.ProfileId, typeof(ProfileIdImportField) }, + + { DeviceImportFieldTypes.AssignedUserId, typeof(AssignedUserIdImportField) } + }; + }); + + public static DeviceImportContext BeginImport(DiscoDataContext Database, string Filename, bool HasHeader, Stream FileContent) + { + if (FileContent == null) + throw new ArgumentNullException("FileContent"); + + if (string.IsNullOrWhiteSpace(Filename)) + Filename = ""; + + DeviceImportContext context; + List> header; + List rawData; + + using (TextReader csvTextReader = new StreamReader(FileContent)) + { + using (CsvReader csvReader = new CsvReader(csvTextReader, HasHeader)) + { + csvReader.DefaultParseErrorAction = ParseErrorAction.ThrowException; + csvReader.MissingFieldAction = MissingFieldAction.ReplaceByNull; + + rawData = csvReader.ToList(); + header = csvReader.GetFieldHeaders().Select(h => Tuple.Create(h, DeviceImportFieldTypes.IgnoreColumn)).ToList(); + } + } + + context = new DeviceImportContext(Filename, header, rawData); + + context.GuessHeaderTypes(Database); + + return context; + } + + private static void GuessHeaderTypes(this DeviceImportContext Context, DiscoDataContext Database) + { + FieldHandlers.Value.ToList().ForEach(h => + { + var instance = (DeviceImportFieldBase)Activator.CreateInstance(h.Value); + var column = instance.GuessHeader(Database, Context); + if (column.HasValue) + Context.Header[column.Value] = Tuple.Create(Context.Header[column.Value].Item1, instance.FieldType); + }); + } + + public static void UpdateHeaderTypes(this DeviceImportContext Context, List HeaderTypes) + { + if (HeaderTypes == null) + throw new ArgumentNullException("HeaderTypes"); + + if (HeaderTypes.Count != Context.Header.Count) + throw new ArgumentException("The number of Header Types supplied does not match the number of Headers", "HeaderTypes"); + + if (!HeaderTypes.Any(h => h == DeviceImportFieldTypes.DeviceSerialNumber)) + throw new ArgumentException("At least one column must be the Device Serial Number", "HeaderTypes"); + + if (HeaderTypes.Where(h => h != DeviceImportFieldTypes.IgnoreColumn).GroupBy(h => h, (k, i) => Tuple.Create(k, i.Count())).Any(g => g.Item2 > 1)) + throw new ArgumentException("Column types can only be specified once for each type", "HeaderTypes"); + + Context.Header = Context.Header.Zip(HeaderTypes, (h, ht) => Tuple.Create(h.Item1, ht)).ToList(); + } + + public static void ParseRecords(this DeviceImportContext Context, DiscoDataContext Database, IScheduledTaskBasicStatus Status) + { + if (Context.Header == null) + throw new InvalidOperationException("The Import Context has not been initialized"); + + if (Context.Header.Count == 0) + throw new InvalidOperationException("No Headers were found"); + + if (!Context.Header.Any(h => h.Item2 == DeviceImportFieldTypes.DeviceSerialNumber)) + throw new ArgumentException("At least one column must be the Device Serial Number", "Header"); + + if (Context.RawData == null || Context.RawData.Count == 0) + throw new ArgumentException("No data was found in the import file", "RawData"); + + IDeviceImportCache cache; + if (Context.RawData.Count > 20) + cache = new DeviceImportInMemoryCache(Database); + else + cache = new DeviceImportDatabaseCache(Database); + + Context.HeaderDeviceSerialNumberIndex = Context.Header.IndexOf(Context.Header.First(h => h.Item2 == DeviceImportFieldTypes.DeviceSerialNumber)); + Context.ParsedHeaders = Context.Header + .Select((h, i) => Tuple.Create(h.Item1, h.Item2, i)) + .Where(h => h.Item2 != DeviceImportFieldTypes.IgnoreColumn) + .Select(h => new Tuple, Type>(h.Item1, h.Item2, (f) => f[h.Item3], DeviceImport.FieldHandlers.Value[h.Item2])) + .ToList(); + + DateTime nextProgress = DateTime.Now; + Status.UpdateStatus(0, "Parsing Import Records", "Starting..."); + + Context.Records = Context.RawData.Select((d, recordIndex) => + { + string deviceSerialNumber = Fields.DeviceSerialNumberImportField.ParseRawDeviceSerialNumber(d[Context.HeaderDeviceSerialNumberIndex]); + + if (nextProgress <= DateTime.Now) + { + Status.UpdateStatus(((double)recordIndex / Context.RawData.Count) * 100, string.Format("Parsing: {0}", deviceSerialNumber)); + nextProgress = DateTime.Now.AddSeconds(.5); + } + + Device existingDevice = null; + if (Fields.DeviceSerialNumberImportField.IsDeviceSerialNumberValid(deviceSerialNumber)) + existingDevice = cache.Devices.FirstOrDefault(device => device.SerialNumber == deviceSerialNumber); + + var values = Context.ParsedHeaders + .ToDictionary(k => k.Item2, k => k.Item3(d)); + + var fields = Context.ParsedHeaders.Select(h => + { + var f = (DeviceImportFieldBase)Activator.CreateInstance(h.Item4); + f.Parse(Database, cache, Context, recordIndex, deviceSerialNumber, existingDevice, values, h.Item3(d)); + return f; + }).ToList(); + + EntityState recordAction; + if (fields.Any(f => !f.FieldAction.HasValue)) + recordAction = EntityState.Detached; + else if (existingDevice == null) + recordAction = EntityState.Added; + else if (fields.Any(f => f.FieldAction == EntityState.Modified)) + recordAction = EntityState.Modified; + else + recordAction = EntityState.Unchanged; + + return new DeviceImportRecord(deviceSerialNumber, fields, recordAction); + }).Cast().ToList(); + } + + public static int ApplyRecords(this DeviceImportContext Context, DiscoDataContext Database, IScheduledTaskBasicStatus Status) + { + if (Context.Records == null) + throw new InvalidOperationException("Import Records have not been parsed"); + + if (Context.Records.Count == 0) + throw new InvalidOperationException("There are no records to import"); + + DateTime nextProgress = DateTime.Now; + Status.UpdateStatus(0, "Applying Import Records to Database", "Starting..."); + + int affectedRecords = 0; + + foreach (var record in Context.Records.Cast().Select((r, i) => Tuple.Create(r, i))) + { + if (nextProgress <= DateTime.Now) + { + Status.UpdateStatus(((double)record.Item2 / Context.Records.Count) * 100, string.Format("Applying: {0}", record.Item1.DeviceSerialNumber)); + nextProgress = DateTime.Now.AddSeconds(.5); + } + + if (record.Item1.Apply(Database)) + affectedRecords++; + } + + return affectedRecords; + } + } +} diff --git a/Disco.Services/Devices/Importing/DeviceImportApplyTask.cs b/Disco.Services/Devices/Importing/DeviceImportApplyTask.cs new file mode 100644 index 00000000..6c5af90f --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportApplyTask.cs @@ -0,0 +1,41 @@ +using Disco.Data.Repository; +using Disco.Services.Tasks; +using Quartz; +using System; + +namespace Disco.Services.Devices.Importing +{ + public class DeviceImportApplyTask : ScheduledTask + { + private const string JobDataMapContext = "Context"; + + public override string TaskName { get { return "Import Devices - Applying Changes"; } } + public override bool SingleInstanceTask { get { return false; } } + public override bool CancelInitiallySupported { get { return false; } } + + public static ScheduledTaskStatus ScheduleNow(DeviceImportContext Context) + { + if (Context == null) + throw new ArgumentNullException("Context"); + + // Build Data Map + var task = new DeviceImportApplyTask(); + JobDataMap taskData = new JobDataMap() { { JobDataMapContext, Context } }; + + // Schedule Task + return task.ScheduleTask(taskData); + } + + protected override void ExecuteTask() + { + var context = (DeviceImportContext)this.ExecutionContext.JobDetail.JobDataMap[JobDataMapContext]; + + using (DiscoDataContext Database = new DiscoDataContext()) + { + context.AffectedRecords = context.ApplyRecords(Database, this.Status); + } + + Status.SetFinishedMessage(string.Format("Successfully imported/updated {0} device{1}", context.AffectedRecords, context.AffectedRecords == 1 ? null : "s")); + } + } +} diff --git a/Disco.Services/Devices/Importing/DeviceImportContext.cs b/Disco.Services/Devices/Importing/DeviceImportContext.cs new file mode 100644 index 00000000..baa5ff4c --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportContext.cs @@ -0,0 +1,35 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using Disco.Services.Tasks; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing +{ + public class DeviceImportContext : IDeviceImportContext + { + public string SessionId { get; private set; } + public string Filename { get; private set; } + + public List> Header { get; internal set; } + public List, Type>> ParsedHeaders { get; internal set; } + internal int HeaderDeviceSerialNumberIndex { get; set; } + + public List RawData { get; private set; } + + public List Records { get; internal set; } + public int AffectedRecords { get; internal set; } + + internal DeviceImportContext(string Filename, List> Header, List RawData) + { + this.SessionId = Guid.NewGuid().ToString("D"); + + this.Filename = Filename; + this.Header = Header; + this.RawData = RawData; + } + } +} \ No newline at end of file diff --git a/Disco.Services/Devices/Importing/DeviceImportDatabaseCache.cs b/Disco.Services/Devices/Importing/DeviceImportDatabaseCache.cs new file mode 100644 index 00000000..b83dfad5 --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportDatabaseCache.cs @@ -0,0 +1,42 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using System.Collections.Generic; +using System.Linq; + +namespace Disco.Services.Devices.Importing +{ + internal class DeviceImportDatabaseCache : IDeviceImportCache + { + private DiscoDataContext Database; + + public DeviceImportDatabaseCache(DiscoDataContext Database) + { + this.Database = Database; + } + + public Device FindDevice(string DeviceSerialNumber) + { + return Database.Devices.FirstOrDefault(d => d.SerialNumber == DeviceSerialNumber); + } + + public IEnumerable Devices + { + get { return Database.Devices; } + } + + public IEnumerable DeviceModels + { + get { return Database.DeviceModels; } + } + + public IEnumerable DeviceProfiles + { + get { return Database.DeviceProfiles; } + } + + public IEnumerable DeviceBatches + { + get { return Database.DeviceBatches; } + } + } +} \ No newline at end of file diff --git a/Disco.Services/Devices/Importing/DeviceImportFieldBase.cs b/Disco.Services/Devices/Importing/DeviceImportFieldBase.cs new file mode 100644 index 00000000..60ea57eb --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportFieldBase.cs @@ -0,0 +1,44 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Services.Devices.Importing +{ + internal abstract class DeviceImportFieldBase : IDeviceImportField + { + public abstract DeviceImportFieldTypes FieldType { get; } + + public EntityState? FieldAction { get; protected set; } + + public string ErrorMessage { get; protected set; } + + public abstract object RawParsedValue { get; } + public abstract string FriendlyValue { get; } + public abstract string FriendlyPreviousValue { get; } + + public abstract bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value); + public abstract bool Apply(DiscoDataContext Database, Device Device); + + public abstract int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context); + + #region Helpers + protected bool Error(string Message) + { + this.ErrorMessage = Message; + this.FieldAction = null; + return false; + } + protected bool Success(EntityState Action) + { + this.FieldAction = Action; + return true; + } + #endregion + } +} diff --git a/Disco.Services/Devices/Importing/DeviceImportInMemoryCache.cs b/Disco.Services/Devices/Importing/DeviceImportInMemoryCache.cs new file mode 100644 index 00000000..8c292dd6 --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportInMemoryCache.cs @@ -0,0 +1,53 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Disco.Services.Devices.Importing +{ + internal class DeviceImportInMemoryCache : IDeviceImportCache + { + private DiscoDataContext Database; + + private Lazy> devices; + private Lazy> deviceModels; + private Lazy> deviceProfiles; + private Lazy> deviceBatches; + + public DeviceImportInMemoryCache(DiscoDataContext Database) + { + this.Database = Database; + + this.devices = new Lazy>(() => Database.Devices.Include("DeviceDetails").ToList()); + this.deviceModels = new Lazy>(() => Database.DeviceModels.ToList()); + this.deviceProfiles = new Lazy>(() => Database.DeviceProfiles.ToList()); + this.deviceBatches = new Lazy>(() => Database.DeviceBatches.ToList()); + } + + public Device FindDevice(string DeviceSerialNumber) + { + return devices.Value.FirstOrDefault(d => d.SerialNumber.Equals(DeviceSerialNumber, StringComparison.OrdinalIgnoreCase)); + } + + public IEnumerable Devices + { + get { return devices.Value; } + } + + public IEnumerable DeviceModels + { + get { return deviceModels.Value; } + } + + public IEnumerable DeviceProfiles + { + get { return deviceProfiles.Value; } + } + + public IEnumerable DeviceBatches + { + get { return deviceBatches.Value; } + } + } +} \ No newline at end of file diff --git a/Disco.Services/Devices/Importing/DeviceImportParseTask.cs b/Disco.Services/Devices/Importing/DeviceImportParseTask.cs new file mode 100644 index 00000000..894845bf --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportParseTask.cs @@ -0,0 +1,39 @@ +using Disco.Data.Repository; +using Disco.Services.Tasks; +using Quartz; +using System; + +namespace Disco.Services.Devices.Importing +{ + public class DeviceImportParseTask : ScheduledTask + { + private const string JobDataMapContext = "Context"; + + public override string TaskName { get { return "Import Devices - Parsing Records"; } } + public override bool SingleInstanceTask { get { return false; } } + public override bool CancelInitiallySupported { get { return false; } } + + public static ScheduledTaskStatus ScheduleNow(DeviceImportContext Context) + { + if (Context == null) + throw new ArgumentNullException("Context"); + + // Build Data Map + var task = new DeviceImportParseTask(); + JobDataMap taskData = new JobDataMap() { { JobDataMapContext, Context } }; + + // Schedule Task + return task.ScheduleTask(taskData); + } + + protected override void ExecuteTask() + { + var context = (DeviceImportContext)this.ExecutionContext.JobDetail.JobDataMap[JobDataMapContext]; + + using (DiscoDataContext Database = new DiscoDataContext()) + { + context.ParseRecords(Database, this.Status); + } + } + } +} diff --git a/Disco.Services/Devices/Importing/DeviceImportRecord.cs b/Disco.Services/Devices/Importing/DeviceImportRecord.cs new file mode 100644 index 00000000..d12323f9 --- /dev/null +++ b/Disco.Services/Devices/Importing/DeviceImportRecord.cs @@ -0,0 +1,85 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Disco.Services.Devices.Importing +{ + internal class DeviceImportRecord : IDeviceImportRecord + { + public string DeviceSerialNumber { get; private set; } + + public IEnumerable Fields { get; private set; } + + public EntityState RecordAction { get; private set; } + + public bool HasError + { + get { return Fields.Any(f => !f.FieldAction.HasValue); } + } + + internal DeviceImportRecord(string DeviceSerialNumber, IEnumerable Fields, EntityState RecordAction) + { + this.DeviceSerialNumber = DeviceSerialNumber; + this.Fields = Fields; + this.RecordAction = RecordAction; + } + + public bool Apply(DiscoDataContext Database) + { + if (RecordAction == EntityState.Detached || !HasError) + { + Device device; + + if (RecordAction == EntityState.Unchanged) + { + // Unchanged - No Action Required + return false; + } + else if (RecordAction == EntityState.Modified) + { + device = Database.Devices.Find(this.DeviceSerialNumber); + } + else if (RecordAction == EntityState.Added) + { + // Create Device + device = new Device() + { + SerialNumber = DeviceSerialNumber.ToUpper(), + CreatedDate = DateTime.Now, + AllowUnauthenticatedEnrol = true, + DeviceProfileId = Database.DiscoConfiguration.DeviceProfiles.DefaultAddDeviceOfflineDeviceProfileId, + DeviceModelId = 1 // Default 'Unknown Device Model' + }; + Database.Devices.Add(device); + } + else + { + // Invalid State + return false; + } + + bool changesMade = false; + + foreach (var field in Fields.Cast()) + { + changesMade = field.Apply(Database, device) || changesMade; + } + + // Commit Changes + if (changesMade) + Database.SaveChanges(); + + return changesMade; + } + + // Record has Errors + return false; + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/AssignedUserIdImportField.cs b/Disco.Services/Devices/Importing/Fields/AssignedUserIdImportField.cs new file mode 100644 index 00000000..f526f022 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/AssignedUserIdImportField.cs @@ -0,0 +1,144 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using Disco.Services.Users; +using System; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class AssignedUserIdImportField : DeviceImportFieldBase + { + private string parsedValue; + private string friendlyValue; + private string friendlyPreviousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.AssignedUserId; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return friendlyValue; } } + public override string FriendlyPreviousValue { get { return friendlyPreviousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + friendlyValue = Value; + + if (string.IsNullOrWhiteSpace(Value)) + { + friendlyValue = null; + parsedValue = null; + } + else + { + parsedValue = Value.Trim(); + + if (!parsedValue.Contains('\\')) + parsedValue = string.Format(@"{0}\{1}", Interop.ActiveDirectory.ActiveDirectory.Context.PrimaryDomain.NetBiosName, parsedValue); + + friendlyValue = parsedValue; + + if (parsedValue.Length > 50) + return Error("Cannot be more than 50 characters"); + } + + if (parsedValue != null) + { + // Check User Exists + + // Try Database + User user = Database.Users.FirstOrDefault(u => u.UserId == parsedValue); + try + { + // Try Updating from AD + user = UserService.GetUser(parsedValue, Database); + } + catch (Exception ex) + { + if (user == null) + return Error(ex.Message); + } + parsedValue = user.UserId; + friendlyValue = string.Format("{0} [{1}]", user.DisplayName, user.UserId); + + // Check Decommissioned + bool? importDecommissioning = null; + if (Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedDate) || Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedReason)) + importDecommissioning = Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedDate) && !string.IsNullOrWhiteSpace(Values[DeviceImportFieldTypes.DeviceDecommissionedDate]) || + Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedReason) && !string.IsNullOrWhiteSpace(Values[DeviceImportFieldTypes.DeviceDecommissionedReason]); + + if (importDecommissioning.HasValue && importDecommissioning.Value) + return Error("Cannot assign a user to a device being decommissioned"); + + if (ExistingDevice != null && ExistingDevice.DecommissionedDate.HasValue && !importDecommissioning.HasValue) + { + return Error("Cannot assign a user to a decommissioned device"); + } + } + + if (ExistingDevice == null && parsedValue != null) + { + return Success(EntityState.Added); + } + else if (ExistingDevice != null && ExistingDevice.AssignedUserId != parsedValue) + { + if (ExistingDevice.AssignedUserId != null) + friendlyPreviousValue = string.Format("{0} [{1}]", ExistingDevice.AssignedUser.DisplayName, ExistingDevice.AssignedUser.UserId); + else + friendlyPreviousValue = null; + + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Modified) + { + // Remove Current Assignments + var currentAssignments = Device.DeviceUserAssignments.Where(dua => !dua.UnassignedDate.HasValue); + foreach (var currentAssignment in currentAssignments) + { + currentAssignment.UnassignedDate = DateTime.Now; + } + + // Add Assignment + if (parsedValue != null) + { + var assignment = new DeviceUserAssignment() + { + Device = Device, + DeviceSerialNumber = Device.SerialNumber, + AssignedUserId = parsedValue, + AssignedDate = DateTime.Now + }; + Database.DeviceUserAssignments.Add(assignment); + } + Device.AssignedUserId = parsedValue; + + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && + h.Item1.Item1.IndexOf("user id", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("userid", System.StringComparison.OrdinalIgnoreCase) >= 0 + ); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/BatchIdImportField.cs b/Disco.Services/Devices/Importing/Fields/BatchIdImportField.cs new file mode 100644 index 00000000..797b46f8 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/BatchIdImportField.cs @@ -0,0 +1,106 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class BatchIdImportField : DeviceImportFieldBase + { + private int? parsedValue; + private string friendlyValue; + private string friendlyPreviousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.BatchId; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return friendlyValue; } } + public override string FriendlyPreviousValue { get { return friendlyPreviousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + friendlyValue = Value; + + // Validate + if (string.IsNullOrWhiteSpace(Value)) + this.parsedValue = null; // Default = null + else + { + int valueInt; + if (int.TryParse(Value, out valueInt)) + this.parsedValue = valueInt; + else + return Error("The Batch Identifier must be a number"); + } + + if (this.parsedValue.HasValue) + { + var b = Cache.DeviceBatches.FirstOrDefault(db => db.Id == parsedValue); + if (b == null) + return Error(string.Format("The identifier ({0}) does not match any Device Batch", Value)); + friendlyValue = string.Format("{0} [{1}]", b.Name, b.Id); + } + else + friendlyValue = null; + + if (ExistingDevice == null) + return Success(EntityState.Added); + else if (ExistingDevice != null && ExistingDevice.DeviceBatchId != parsedValue) + { + DeviceBatch previousBatch = null; + if (ExistingDevice.DeviceBatchId.HasValue) + previousBatch = Cache.DeviceBatches.FirstOrDefault(db => db.Id == ExistingDevice.DeviceBatchId.Value); + + if (previousBatch != null) + friendlyPreviousValue = string.Format("{0} [{1}]", previousBatch.Name, previousBatch.Id); + + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + Device.DeviceBatchId = this.parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("batch", System.StringComparison.OrdinalIgnoreCase) >= 0); + + // All Integers Numbers + possibleColumns = possibleColumns.Where(h => + { + int lastValue; + return Context.RawData.Select(v => v[h.Item2]).Take(100).Where(v => !string.IsNullOrWhiteSpace(v)).All(v => int.TryParse(v, out lastValue)); + }).ToList(); + + // Multiple Columns, tighten column definition + if (possibleColumns.Count() > 1) + { + possibleColumns = possibleColumns + .Where(h => + h.Item1.Item1.IndexOf("batchid", StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("batch id", StringComparison.OrdinalIgnoreCase) >= 0); + } + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DetailACAdapterImportField.cs b/Disco.Services/Devices/Importing/Fields/DetailACAdapterImportField.cs new file mode 100644 index 00000000..d7e0b257 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DetailACAdapterImportField.cs @@ -0,0 +1,99 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DetailACAdapterImportField : DeviceImportFieldBase + { + private string parsedValue; + private string previousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DetailACAdapter; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return previousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + parsedValue = null; + else + { + parsedValue = Value.Trim(); + } + + if (ExistingDevice == null && parsedValue != null) + return Success(EntityState.Added); + else if (ExistingDevice != null) + { + var detail = ExistingDevice.DeviceDetails.FirstOrDefault(dd => dd.Scope == DeviceDetail.ScopeHardware && dd.Key == DeviceDetail.HardwareKeyACAdapter); + + if (detail == null && parsedValue == null) + return Success(EntityState.Unchanged); + else if (detail == null && parsedValue != null) + { + return Success(EntityState.Modified); + } + else if (detail.Value != parsedValue) + { + previousValue = detail.Value; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + + DeviceDetail detail = Database.DeviceDetails.FirstOrDefault(dd => + dd.DeviceSerialNumber == Device.SerialNumber && + dd.Scope == DeviceDetail.ScopeHardware && + dd.Key == DeviceDetail.HardwareKeyACAdapter); + + if (detail == null) + { + detail = new DeviceDetail() + { + Device = Device, + DeviceSerialNumber = Device.SerialNumber, + Scope = DeviceDetail.ScopeHardware, + Key = DeviceDetail.HardwareKeyACAdapter + }; + Database.DeviceDetails.Add(detail); + } + + detail.Value = parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && + (h.Item1.Item1.IndexOf("ac adapter", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("acadapter", System.StringComparison.OrdinalIgnoreCase) >= 0)); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DetailLanMacAddressImportField.cs b/Disco.Services/Devices/Importing/Fields/DetailLanMacAddressImportField.cs new file mode 100644 index 00000000..7db9ff68 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DetailLanMacAddressImportField.cs @@ -0,0 +1,106 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DetailLanMacAddressImportField : DeviceImportFieldBase + { + private string parsedValue; + private string previousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DetailLanMacAddress; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return previousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + parsedValue = null; + else + { + parsedValue = Value.Trim(); + } + + if (ExistingDevice == null && parsedValue != null) + return Success(EntityState.Added); + else if (ExistingDevice != null) + { + var detail = ExistingDevice.DeviceDetails.FirstOrDefault(dd => dd.Scope == DeviceDetail.ScopeHardware && dd.Key == DeviceDetail.HardwareKeyLanMacAddress); + + if (detail == null && parsedValue == null) + return Success(EntityState.Unchanged); + else if (detail == null && parsedValue != null) + { + return Success(EntityState.Modified); + } + else if (detail.Value != parsedValue) + { + previousValue = detail.Value; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + + DeviceDetail detail = Database.DeviceDetails.FirstOrDefault(dd => + dd.DeviceSerialNumber == Device.SerialNumber && + dd.Scope == DeviceDetail.ScopeHardware && + dd.Key == DeviceDetail.HardwareKeyLanMacAddress); + + if (detail == null) + { + detail = new DeviceDetail() + { + Device = Device, + DeviceSerialNumber = Device.SerialNumber, + Scope = DeviceDetail.ScopeHardware, + Key = DeviceDetail.HardwareKeyLanMacAddress + }; + Database.DeviceDetails.Add(detail); + } + + detail.Value = parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && ( + h.Item1.Item1.IndexOf("wlan", System.StringComparison.OrdinalIgnoreCase) < 0 && + h.Item1.Item1.IndexOf("wireless", System.StringComparison.OrdinalIgnoreCase) < 0 && ( + h.Item1.Item1.IndexOf("lan address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("lan mac", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("lan mac address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("lanaddress", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("lanmac", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("lanmacaddress", System.StringComparison.OrdinalIgnoreCase) >= 0 + ))); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DetailWLanMacAddressImportField.cs b/Disco.Services/Devices/Importing/Fields/DetailWLanMacAddressImportField.cs new file mode 100644 index 00000000..04a5411d --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DetailWLanMacAddressImportField.cs @@ -0,0 +1,108 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DetailWLanMacAddressImportField : DeviceImportFieldBase + { + private string parsedValue; + private string previousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DetailWLanMacAddress; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return previousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + parsedValue = null; + else + { + parsedValue = Value.Trim(); + } + + if (ExistingDevice == null && parsedValue != null) + return Success(EntityState.Added); + else if (ExistingDevice != null) + { + var detail = ExistingDevice.DeviceDetails.FirstOrDefault(dd => dd.Scope == DeviceDetail.ScopeHardware && dd.Key == DeviceDetail.HardwareKeyWLanMacAddress); + + if (detail == null && parsedValue == null) + return Success(EntityState.Unchanged); + else if (detail == null && parsedValue != null) + { + return Success(EntityState.Modified); + } + else if (detail.Value != parsedValue) + { + previousValue = detail.Value; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + + DeviceDetail detail = Database.DeviceDetails.FirstOrDefault(dd => + dd.DeviceSerialNumber == Device.SerialNumber && + dd.Scope == DeviceDetail.ScopeHardware && + dd.Key == DeviceDetail.HardwareKeyWLanMacAddress); + + if (detail == null) + { + detail = new DeviceDetail() + { + Device = Device, + DeviceSerialNumber = Device.SerialNumber, + Scope = DeviceDetail.ScopeHardware, + Key = DeviceDetail.HardwareKeyWLanMacAddress + }; + Database.DeviceDetails.Add(detail); + } + + detail.Value = parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && ( + h.Item1.Item1.IndexOf("wireless lan mac address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wireless lan address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wireless mac address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wireless mac", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlan address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlan mac", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlan mac address", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlanaddress", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlanmac", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("wlanmacaddress", System.StringComparison.OrdinalIgnoreCase) >= 0 + )); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DeviceAssetNumberImportField.cs b/Disco.Services/Devices/Importing/Fields/DeviceAssetNumberImportField.cs new file mode 100644 index 00000000..f52c9674 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DeviceAssetNumberImportField.cs @@ -0,0 +1,68 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DeviceAssetNumberImportField : DeviceImportFieldBase + { + private string parsedValue; + private string previousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DeviceAssetNumber; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return previousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + parsedValue = null; + else + { + parsedValue = Value.Trim(); + if (parsedValue.Length > 40) + return Error("Cannot be more than 40 characters"); + } + + if (ExistingDevice == null && parsedValue != null) + return Success(EntityState.Added); + else if (ExistingDevice != null && ExistingDevice.AssetNumber != parsedValue) + { + previousValue = ExistingDevice.AssetNumber; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + Device.AssetNumber = this.parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // 'asset' in column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("asset", System.StringComparison.OrdinalIgnoreCase) >= 0); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedDateImportField.cs b/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedDateImportField.cs new file mode 100644 index 00000000..c9c48dd9 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedDateImportField.cs @@ -0,0 +1,130 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DeviceDecommissionedDateImportField : DeviceImportFieldBase + { + private const string DateFormat = "yyyy-MM-dd HH:mm:ss"; + + private string rawValue; + private DateTime? parsedValue; + private DateTime? previousValue; + private bool setReason { get; set; } + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DeviceDecommissionedDate; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue.HasValue ? parsedValue.Value.ToString(DateFormat) : rawValue; } } + public override string FriendlyPreviousValue { get { return previousValue.HasValue ? previousValue.Value.ToString(DateFormat) : null; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + { + rawValue = null; + parsedValue = null; + } + else + { + DateTime valueDateTime; + if (!DateTime.TryParse(Value.Trim(), CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.AssumeLocal, out valueDateTime)) + { + rawValue = Value.Trim(); + return Error(string.Format("Cannot parse the value as a Date/Time using {0} culture (system default).", CultureInfo.CurrentCulture.Name)); + } + else + { + // Accuracy to the second (remove any milliseconds) + parsedValue = new DateTime((valueDateTime.Ticks / 10000000L) * 10000000L); + } + } + + string errorMessage; + if (parsedValue.HasValue && !CanDecommissionDevice(ExistingDevice, Values, out errorMessage)) + return Error(errorMessage); + + setReason = !Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedReason) || + (parsedValue.HasValue && string.IsNullOrWhiteSpace(Values[DeviceImportFieldTypes.DeviceDecommissionedReason])); + + if (ExistingDevice != null && ExistingDevice.DecommissionedDate != parsedValue) + { + previousValue = ExistingDevice.DecommissionedDate; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Modified) + { + // Decommission or Recommission Device + Device.DecommissionedDate = this.parsedValue; + + if (setReason) + Device.DecommissionReason = this.parsedValue.HasValue ? (DecommissionReasons?)DecommissionReasons.EndOfLife : null; + + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && + h.Item1.Item1.IndexOf("decommission date", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissiondate", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissioned date", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissioneddate", System.StringComparison.OrdinalIgnoreCase) >= 0 + ); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + + public static bool CanDecommissionDevice(Device Device, Dictionary Values, out string ErrorMessage) + { + if (Device == null) + { + ErrorMessage = "Cannot decommission new devices"; + return false; + } + + // Check device is assigned (or being removed in this import) + + if ((!Values.ContainsKey(DeviceImportFieldTypes.AssignedUserId) && Device.AssignedUserId != null) || + (Values.ContainsKey(DeviceImportFieldTypes.AssignedUserId) && !string.IsNullOrWhiteSpace(Values[DeviceImportFieldTypes.AssignedUserId]))) + { + if (Device.AssignedUserId != null) + ErrorMessage = string.Format("The device is assigned to a user ({0} [{1}]) and cannot be decommissioned", Device.AssignedUser.DisplayName, Device.AssignedUser.UserId); + else + ErrorMessage = string.Format("The device is being assigned to a user ({0}) and cannot be decommissioned", Values[DeviceImportFieldTypes.AssignedUserId]); + return false; + } + + // Check device doesn't have any open jobs + var openJobCount = Device.Jobs.Count(j => !j.ClosedDate.HasValue); + if (openJobCount > 0) + { + ErrorMessage = string.Format("The device is associated with {0} open job{1} and cannot be decommissioned", openJobCount, openJobCount == 1 ? null : "s"); + return false; + } + + ErrorMessage = null; + return true; + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedReasonImportField.cs b/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedReasonImportField.cs new file mode 100644 index 00000000..84c1eda3 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DeviceDecommissionedReasonImportField.cs @@ -0,0 +1,116 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.Linq; +using System.Text; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DeviceDecommissionedReasonImportField : DeviceImportFieldBase + { + private string rawValue; + private DecommissionReasons? parsedValue; + private DecommissionReasons? previousValue; + private bool setDate { get; set; } + private static Lazy> decommissionReasonsMap = new Lazy>(() => BuildDecommissionReasonsMap()); + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DeviceDecommissionedReason; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue.HasValue ? parsedValue.Value.ToString() : rawValue; } } + public override string FriendlyPreviousValue { get { return previousValue.HasValue ? previousValue.Value.ToString() : null; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + { + rawValue = null; + parsedValue = null; + } + else + { + DecommissionReasons valueReason; + if (!decommissionReasonsMap.Value.TryGetValue(Value.Trim(), out valueReason)) + { + rawValue = Value.Trim(); + return Error("Cannot parse the value as a Decommission Reason"); + } + else + { + parsedValue = valueReason; + } + } + + if (parsedValue.HasValue && !Values.ContainsKey(DeviceImportFieldTypes.DeviceDecommissionedDate)) + { + string errorMessage; + if (!DeviceDecommissionedDateImportField.CanDecommissionDevice(ExistingDevice, Values, out errorMessage)) + return Error(errorMessage); + + setDate = true; + } + else if (parsedValue.HasValue && string.IsNullOrWhiteSpace(Values[DeviceImportFieldTypes.DeviceDecommissionedDate])) + { + setDate = true; + } + + if (ExistingDevice != null && ExistingDevice.DecommissionReason != parsedValue) + { + previousValue = ExistingDevice.DecommissionReason; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Modified) + { + // Decommission or Recommission Device + Device.DecommissionReason = this.parsedValue; + + if (setDate) + Device.DecommissionedDate = this.parsedValue.HasValue ? (DateTime?)DateTime.Now : null; + + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && + h.Item1.Item1.IndexOf("decommission reason", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissionreason", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissioned reason", System.StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("decommissionedreason", System.StringComparison.OrdinalIgnoreCase) >= 0 + ); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + + public static Dictionary BuildDecommissionReasonsMap() + { + return Enum.GetValues(typeof(DecommissionReasons)).Cast().SelectMany(r => + { + var rCamelName = r.ToString(); + var rName = string.Join(string.Empty, rCamelName.SelectMany(c => char.IsUpper(c) ? new char[] { ' ', c } : new char[] { c })).Trim(); + if (rCamelName == rName) + return new Tuple[] { Tuple.Create(r, rCamelName) }; + else + return new Tuple[] { Tuple.Create(r, rCamelName), Tuple.Create(r, rName) }; + }).ToDictionary(k => k.Item2, v => v.Item1, StringComparer.OrdinalIgnoreCase); + } + } +} \ No newline at end of file diff --git a/Disco.Services/Devices/Importing/Fields/DeviceLocationImportField.cs b/Disco.Services/Devices/Importing/Fields/DeviceLocationImportField.cs new file mode 100644 index 00000000..8e0eac8c --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DeviceLocationImportField.cs @@ -0,0 +1,68 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DeviceLocationImportField : DeviceImportFieldBase + { + private string parsedValue; + private string previousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DeviceLocation; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return previousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + if (string.IsNullOrWhiteSpace(Value)) + parsedValue = null; + else + { + parsedValue = Value.Trim(); + if (parsedValue.Length > 250) + return Error("Cannot be more than 250 characters"); + } + + if (ExistingDevice == null && parsedValue != null) + return Success(EntityState.Added); + else if (ExistingDevice != null && ExistingDevice.Location != parsedValue) + { + previousValue = ExistingDevice.Location; + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + Device.Location = this.parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("location", System.StringComparison.OrdinalIgnoreCase) >= 0); + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/DeviceSerialNumberImportField.cs b/Disco.Services/Devices/Importing/Fields/DeviceSerialNumberImportField.cs new file mode 100644 index 00000000..ff0b4091 --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/DeviceSerialNumberImportField.cs @@ -0,0 +1,98 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class DeviceSerialNumberImportField : DeviceImportFieldBase + { + private const int maxLength = 60; + private string parsedValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.DeviceSerialNumber; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return parsedValue; } } + public override string FriendlyPreviousValue { get { return parsedValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + // Validate + if (string.IsNullOrWhiteSpace(Value)) + return Error("The Device Serial Number is required"); + else + { + parsedValue = Value.Trim(); + if (parsedValue.Length > maxLength) + return Error(string.Format("Cannot be more than {0} characters", maxLength)); + } + + // Duplicate + var duplicate = Context.RawData + .Take(RecordIndex) + .Select((r, i) => Tuple.Create(i, ParseRawDeviceSerialNumber(r[Context.HeaderDeviceSerialNumberIndex]))) + .Where(r => IsDeviceSerialNumberValid(r.Item2)) + .FirstOrDefault(r => r.Item2.Equals(parsedValue, StringComparison.OrdinalIgnoreCase)); + if (duplicate != null) + return Error(string.Format("This Device Serial Number was already present on Row {0}", duplicate.Item1 + 1)); + + // No action required + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + // Do nothing for Device Serial Number + return false; + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // 'serial' in column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("serial", System.StringComparison.OrdinalIgnoreCase) >= 0); + + // All Values + possibleColumns = possibleColumns.Where(h => + { + return Context.RawData.Select(v => v[h.Item2]).All(v => !string.IsNullOrWhiteSpace(v)); + }).ToList(); + + if (possibleColumns.Count() > 1) + { + // Hunt Database + var possibleColumnIndex = possibleColumns.Where(h => + { + try + { + var top50SerialNumbers = Context.RawData.Select(v => v[h.Item2]).Take(50).ToArray(); + return Database.Devices.Count(d => top50SerialNumbers.Contains(d.SerialNumber)) > 0; + } + catch (Exception) { return false; } + }).Select(h => (int?)h.Item2).FirstOrDefault(); + + if (possibleColumnIndex.HasValue) + return possibleColumnIndex; + } + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + + public static string ParseRawDeviceSerialNumber(string DeviceSerialNumber) + { + if (string.IsNullOrWhiteSpace(DeviceSerialNumber)) + return null; + else + return DeviceSerialNumber.Trim(); + } + public static bool IsDeviceSerialNumberValid(string DeviceSerialNumber) + { + return DeviceSerialNumber != null && DeviceSerialNumber.Length <= maxLength; + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/ModelIdImportField.cs b/Disco.Services/Devices/Importing/Fields/ModelIdImportField.cs new file mode 100644 index 00000000..7ca8223e --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/ModelIdImportField.cs @@ -0,0 +1,98 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class ModelIdImportField : DeviceImportFieldBase + { + private int parsedValue; + private string friendlyValue; + private string friendlyPreviousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.ModelId; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return friendlyValue; } } + public override string FriendlyPreviousValue { get { return friendlyPreviousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + friendlyValue = Value; + + // Validate + if (string.IsNullOrWhiteSpace(Value)) + this.parsedValue = 1; // Default Model + else + if (!int.TryParse(Value, out parsedValue)) + return Error("The Model Identifier must be a number"); + + var m = Cache.DeviceModels.FirstOrDefault(dm => dm.Id == parsedValue); + + if (m == null) + return Error(string.Format("The identifier ({0}) does not match any Device Model", Value)); + + friendlyValue = string.Format("{0} [{1}]", m.Description, m.Id); + + if (ExistingDevice == null) + return Success(EntityState.Added); + else if (ExistingDevice != null && ExistingDevice.DeviceModelId != parsedValue) + { + friendlyPreviousValue = null; + if (ExistingDevice.DeviceModelId.HasValue) + { + var previousModel = Cache.DeviceModels.FirstOrDefault(dm => dm.Id == ExistingDevice.DeviceModelId.Value); + friendlyPreviousValue = string.Format("{0} [{1}]", previousModel.Description, previousModel.Id); + } + + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + Device.DeviceModelId = this.parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // 'model' in column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("model", System.StringComparison.OrdinalIgnoreCase) >= 0); + + // All Integers Numbers + possibleColumns = possibleColumns.Where(h => + { + int lastValue; + return Context.RawData.Select(v => v[h.Item2]).Take(100).Where(v => !string.IsNullOrWhiteSpace(v)).All(v => int.TryParse(v, out lastValue)); + }).ToList(); + + // Multiple Columns, tighten column definition + if (possibleColumns.Count() > 1) + { + possibleColumns = possibleColumns + .Where(h => + h.Item1.Item1.IndexOf("modelid", StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("model id", StringComparison.OrdinalIgnoreCase) >= 0); + } + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/Fields/ProfileIdImportField.cs b/Disco.Services/Devices/Importing/Fields/ProfileIdImportField.cs new file mode 100644 index 00000000..f67660af --- /dev/null +++ b/Disco.Services/Devices/Importing/Fields/ProfileIdImportField.cs @@ -0,0 +1,94 @@ +using Disco.Data.Repository; +using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; + +namespace Disco.Services.Devices.Importing.Fields +{ + internal class ProfileIdImportField : DeviceImportFieldBase + { + private int parsedValue; + private string friendlyValue; + private string friendlyPreviousValue; + + public override DeviceImportFieldTypes FieldType { get { return DeviceImportFieldTypes.ProfileId; } } + + public override object RawParsedValue { get { return parsedValue; } } + public override string FriendlyValue { get { return friendlyValue; } } + public override string FriendlyPreviousValue { get { return friendlyPreviousValue; } } + + public override bool Parse(DiscoDataContext Database, IDeviceImportCache Cache, DeviceImportContext Context, int RecordIndex, string DeviceSerialNumber, Device ExistingDevice, Dictionary Values, string Value) + { + friendlyValue = Value; + + // Validate + if (string.IsNullOrWhiteSpace(Value)) + this.parsedValue = Database.DiscoConfiguration.DeviceProfiles.DefaultAddDeviceOfflineDeviceProfileId; + else + if (!int.TryParse(Value, out parsedValue)) + return Error("The Profile Identifier must be a number"); + + var p = Cache.DeviceProfiles.FirstOrDefault(dp => dp.Id == parsedValue); + + if (p == null) + return Error(string.Format("The identifier ({0}) does not match any Device Profile", Value)); + + friendlyValue = string.Format("{0} [{1}]", p.Description, p.Id); + + if (ExistingDevice == null) + return Success(EntityState.Added); + else if (ExistingDevice != null && ExistingDevice.DeviceProfileId != parsedValue) + { + var previousProfile = Cache.DeviceProfiles.FirstOrDefault(dp => dp.Id == ExistingDevice.DeviceProfileId); + friendlyPreviousValue = string.Format("{0} [{1}]", previousProfile.Description, previousProfile.Id); + + return Success(EntityState.Modified); + } + else + return Success(EntityState.Unchanged); + } + + public override bool Apply(DiscoDataContext Database, Device Device) + { + if (this.FieldAction == EntityState.Added || + this.FieldAction == EntityState.Modified) + { + Device.DeviceProfileId = this.parsedValue; + return true; + } + else + { + return false; + } + } + + public override int? GuessHeader(DiscoDataContext Database, DeviceImportContext Context) + { + // column name + var possibleColumns = Context.Header + .Select((h, i) => Tuple.Create(h, i)) + .Where(h => h.Item1.Item2 == DeviceImportFieldTypes.IgnoreColumn && h.Item1.Item1.IndexOf("profile", System.StringComparison.OrdinalIgnoreCase) >= 0); + + // All Integers Numbers + possibleColumns = possibleColumns.Where(h => + { + int lastValue; + return Context.RawData.Select(v => v[h.Item2]).Take(100).Where(v => !string.IsNullOrWhiteSpace(v)).All(v => int.TryParse(v, out lastValue)); + }).ToList(); + + // Multiple Columns, tighten column definition + if (possibleColumns.Count() > 1) + { + possibleColumns = possibleColumns + .Where(h => + h.Item1.Item1.IndexOf("profileid", StringComparison.OrdinalIgnoreCase) >= 0 || + h.Item1.Item1.IndexOf("profile id", StringComparison.OrdinalIgnoreCase) >= 0); + } + + return possibleColumns.Select(h => (int?)h.Item2).FirstOrDefault(); + } + } +} diff --git a/Disco.Services/Devices/Importing/IDeviceImportCache.cs b/Disco.Services/Devices/Importing/IDeviceImportCache.cs new file mode 100644 index 00000000..14fb0e96 --- /dev/null +++ b/Disco.Services/Devices/Importing/IDeviceImportCache.cs @@ -0,0 +1,15 @@ +using Disco.Models.Repository; +using System.Collections.Generic; + +namespace Disco.Services.Devices.Importing +{ + internal interface IDeviceImportCache + { + Device FindDevice(string DeviceSerialNumber); + + IEnumerable Devices { get; } + IEnumerable DeviceModels { get; } + IEnumerable DeviceProfiles { get; } + IEnumerable DeviceBatches { get; } + } +} \ No newline at end of file diff --git a/Disco.Services/Disco.Services.csproj b/Disco.Services/Disco.Services.csproj index fbda5df3..0f76a6e2 100644 --- a/Disco.Services/Disco.Services.csproj +++ b/Disco.Services/Disco.Services.csproj @@ -39,6 +39,9 @@ ..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll + + ..\packages\LumenWorks.Framework.IO.3.8.0\lib\net20\LumenWorks.Framework.IO.dll + False ..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll @@ -175,6 +178,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -298,9 +322,7 @@ - - - + diff --git a/Disco.Services/packages.config b/Disco.Services/packages.config index 48bd73cf..cb32afc4 100644 --- a/Disco.Services/packages.config +++ b/Disco.Services/packages.config @@ -1,6 +1,7 @@  + diff --git a/Disco.Web/Areas/API/Controllers/DeviceController.cs b/Disco.Web/Areas/API/Controllers/DeviceController.cs index 16b75ab6..64d62a4f 100644 --- a/Disco.Web/Areas/API/Controllers/DeviceController.cs +++ b/Disco.Web/Areas/API/Controllers/DeviceController.cs @@ -1,11 +1,14 @@ using Disco.BI.Extensions; +using Disco.Models.Services.Devices.Importing; using Disco.Services.Authorization; using Disco.Services.Devices.Exporting; +using Disco.Services.Devices.Importing; using Disco.Services.Interop.ActiveDirectory; using Disco.Services.Users; using Disco.Services.Web; using Disco.Web.Models.Device; using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; @@ -530,9 +533,26 @@ namespace Disco.Web.Areas.API.Controllers #endregion #region Importing + internal const string ImportSessionCacheKey = "DeviceImportContext_{0}"; + + internal static void Import_StoreContext(DeviceImportContext Context) + { + string key = string.Format(ImportSessionCacheKey, Context.SessionId); + HttpRuntime.Cache.Insert(key, Context, null, DateTime.Now.AddMinutes(60), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null); + } + internal static DeviceImportContext Import_RetrieveContext(string SessionId, bool Remove = false) + { + string key = string.Format(ImportSessionCacheKey, SessionId); + DeviceImportContext context = HttpRuntime.Cache.Get(key) as DeviceImportContext; + + if (Remove && context != null) + HttpRuntime.Cache.Remove(key); + + return context; + } [DiscoAuthorize(Claims.Device.Actions.Import)] - public virtual ActionResult ImportParse(HttpPostedFileBase ImportFile) + public virtual ActionResult ImportBegin(HttpPostedFileBase ImportFile, bool HasHeader) { if (ImportFile == null || ImportFile.ContentLength == 0) throw new ArgumentNullException("ImportFile"); @@ -541,29 +561,57 @@ namespace Disco.Web.Areas.API.Controllers if (fileName.Contains(@"\")) fileName = fileName.Substring(fileName.LastIndexOf('\\') + 1); - var status = Disco.BI.DeviceBI.Importing.ImportParseTask.Run(ImportFile.InputStream, fileName); + var context = DeviceImport.BeginImport(Database, fileName, HasHeader, ImportFile.InputStream); + Import_StoreContext(context); - status.SetFinishedUrl(Url.Action(MVC.Device.ImportReview(status.SessionId))); - - return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId)); + return RedirectToAction(MVC.Device.ImportHeaders(context.SessionId)); } [DiscoAuthorize(Claims.Device.Actions.Import)] - public virtual ActionResult ImportProcess(string ParseTaskSessionKey) + public virtual ActionResult ImportParse(string Id, List Headers) { - if (string.IsNullOrWhiteSpace(ParseTaskSessionKey)) - throw new ArgumentNullException("ParseTaskSessionKey"); + if (string.IsNullOrWhiteSpace(Id)) + throw new ArgumentNullException("Id"); - var status = Disco.BI.DeviceBI.Importing.ImportProcessTask.Run(ParseTaskSessionKey); + var context = Import_RetrieveContext(Id); - status.SetFinishedUrl(Url.Action(MVC.Device.Index())); + if (context == null) + throw new ArgumentException("The Import Session Id is invalid or the session timed out (60 minutes), try importing again", "Id"); + + context.UpdateHeaderTypes(Headers); + + var status = DeviceImportParseTask.ScheduleNow(context); + + var finishedUrl = MVC.Device.ImportReview(context.SessionId); + + status.SetFinishedUrl(Url.Action(finishedUrl)); + + if (status.WaitUntilFinished(TimeSpan.FromSeconds(2))) + return RedirectToAction(finishedUrl); + else + return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId)); + } + + [DiscoAuthorize(Claims.Device.Actions.Import)] + public virtual ActionResult ImportApply(string Id) + { + if (string.IsNullOrWhiteSpace(Id)) + throw new ArgumentNullException("Id"); + + var context = Import_RetrieveContext(Id); + + if (context == null) + throw new ArgumentException("The Import Session Id is invalid or the session timed out (60 minutes), try importing again", "Id"); + + var status = DeviceImportApplyTask.ScheduleNow(context); + status.SetFinishedUrl(Url.Action(MVC.Device.Import(context.SessionId))); return RedirectToAction(MVC.Config.Logging.TaskStatus(status.SessionId)); } #endregion - #region Exporting + #region Exporting internal const string ExportSessionCacheKey = "DeviceExportContext_{0}"; [DiscoAuthorize(Claims.Device.Actions.Export)] @@ -578,14 +626,14 @@ namespace Disco.Web.Areas.API.Controllers // Start Export var exportContext = DeviceExportTask.ScheduleNow(Model.Options); - + // Store Export Context in Web Cache string key = string.Format(ExportSessionCacheKey, exportContext.TaskStatus.SessionId); HttpRuntime.Cache.Insert(key, exportContext, null, DateTime.Now.AddMinutes(60), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, null); // Set Task Finished Url var finishedActionResult = MVC.Device.Export(exportContext.TaskStatus.SessionId, null, null); - exportContext.TaskStatus.SetFinishedUrl(Url.Action(finishedActionResult)); + exportContext.TaskStatus.SetFinishedUrl(Url.Action(finishedActionResult)); // Try waiting for completion if (exportContext.TaskStatus.WaitUntilFinished(TimeSpan.FromSeconds(2))) @@ -611,7 +659,7 @@ namespace Disco.Web.Areas.API.Controllers var filename = string.Format("DiscoDeviceExport-{0:yyyyMMdd-HHmmss}.csv", context.TaskStatus.StartedTimestamp.Value); return File(context.Result.CsvResult.ToArray(), "text/csv", filename); - } + } #endregion diff --git a/Disco.Web/ClientSource/Style/BundleSite.css b/Disco.Web/ClientSource/Style/BundleSite.css index e506a705..70bb0ffb 100644 --- a/Disco.Web/ClientSource/Style/BundleSite.css +++ b/Disco.Web/ClientSource/Style/BundleSite.css @@ -1838,15 +1838,15 @@ body .ui-tooltip { border-radius: 8px; } /*! - * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.0.3'); - src: url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); + src: url('/ClientSource/Style/FontAwesome//fontawesome-webfont.eot?v=4.1.0'); + src: url('/ClientSource/Style/FontAwesome//fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('/ClientSource/Style/FontAwesome//fontawesome-webfont.woff?v=4.1.0') format('woff'), url('/ClientSource/Style/FontAwesome//fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('/ClientSource/Style/FontAwesome//fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -1861,7 +1861,7 @@ body .ui-tooltip { } /* makes the font 33% larger relative to the icon container */ .fa-lg { - font-size: 1.3333333333333333em; + font-size: 1.33333333em; line-height: 0.75em; vertical-align: -15%; } @@ -1878,12 +1878,12 @@ body .ui-tooltip { font-size: 5em; } .fa-fw { - width: 1.2857142857142858em; + width: 1.28571429em; text-align: center; } .fa-ul { padding-left: 0; - margin-left: 2.142857142857143em; + margin-left: 2.14285714em; list-style-type: none; } .fa-ul > li { @@ -1892,8 +1892,8 @@ body .ui-tooltip { .fa-li { position: absolute; left: -2.14285714em; - width: 2.142857142857143em; - top: 0.14285714285714285em; + width: 2.14285714em; + top: 0.14285714em; text-align: center; } .fa-li.fa-lg { @@ -1946,19 +1946,13 @@ body .ui-tooltip { -o-transform: rotate(359deg); } } -@-ms-keyframes spin { - 0% { - -ms-transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); - } -} @keyframes spin { 0% { + -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { + -webkit-transform: rotate(359deg); transform: rotate(359deg); } } @@ -2208,6 +2202,8 @@ body .ui-tooltip { .fa-video-camera:before { content: "\f03d"; } +.fa-photo:before, +.fa-image:before, .fa-picture-o:before { content: "\f03e"; } @@ -2571,6 +2567,8 @@ body .ui-tooltip { .fa-square:before { content: "\f0c8"; } +.fa-navicon:before, +.fa-reorder:before, .fa-bars:before { content: "\f0c9"; } @@ -2630,11 +2628,11 @@ body .ui-tooltip { content: "\f0dc"; } .fa-sort-down:before, -.fa-sort-asc:before { +.fa-sort-desc:before { content: "\f0dd"; } .fa-sort-up:before, -.fa-sort-desc:before { +.fa-sort-asc:before { content: "\f0de"; } .fa-envelope:before { @@ -2824,12 +2822,10 @@ body .ui-tooltip { .fa-code:before { content: "\f121"; } +.fa-mail-reply-all:before, .fa-reply-all:before { content: "\f122"; } -.fa-mail-reply-all:before { - content: "\f122"; -} .fa-star-half-empty:before, .fa-star-half-full:before, .fa-star-half-o:before { @@ -3175,6 +3171,238 @@ body .ui-tooltip { .fa-plus-square-o:before { content: "\f196"; } +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-square:before, +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} .tableData { border: solid 1px #f4f4f4; border-collapse: collapse; @@ -4692,3 +4920,8 @@ input:-moz-placeholder { text-transform: uppercase; padding: .6em 1em; } +body .ui-tooltip { + border-width: 1px; + -webkit-box-shadow: none; + box-shadow: none; +} diff --git a/Disco.Web/ClientSource/Style/BundleSite.min.css b/Disco.Web/ClientSource/Style/BundleSite.min.css index a029613c..9d1d8f6b 100644 --- a/Disco.Web/ClientSource/Style/BundleSite.min.css +++ b/Disco.Web/ClientSource/Style/BundleSite.min.css @@ -1 +1 @@ -article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,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);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQAAAADcH0/XAAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAASSURBVCjPY/gPAgyj5ChJVRIAypHyHLPbLnsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABaSURBVBjTY3h8jYFOaAPDo/cMj/QYHuYyPGhjuF/BcC+L4W4swx0NhltfGG7uZ7jRzXA9nOGaEsOV4wyXdzJcamW4WM5wYQLD+SaGcwcZzt5iOOvAcObMACIAsZae6pVZewYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3iXxzCKRhHV0bNnDM+NGJ7fYXgxk+FlJsOrOIbXIQxvYhjepjK8i2Z4H8DwwZjhIzPDx7UMn+QYPhmOolFEDAIAjUD2JAAuNW8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3j6n2EUjSKqo1u3GG57MdxxY7gby3BvIsP9PwwPMxgefWB4Us7w9DHDcz+GF/MYXl5ieHWW4XUpw+uJo2gUEYMAvlejJVIWsXwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjQtMDc6MDCCWi1cAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAw8weV4AAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQAQAAAABHIzd2AAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAARSURBVCjPY2hgGIWjcBTigACVaMgB0zSxaQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0xMC0yMFQxOTo1NTowMi0wNzowMKOvHxsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMTAtMjBUMTk6NTU6MDItMDc6MDDS8qenAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAjUlEQVRIx+3PIQoCQRSA4X+eYhBsg4iwowZBGDF7COtWq1kwad37eAPBg3iFFXaL4xvB4hVEw0tf+NNPvummOQsAGIZhGN8G1ZTqmtx99u5e8ARKYciMrTBi7nZCQeQkFCzdUZiwoiJfNDTx08gPPbRTcWMW7HlFvbZJ8ARXCgM8a0Ho0P+LacMwjB/yBjxhJFOI7HkuAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAwglotXAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToyNC0wNzowMPMHleAAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAiklEQVRIx+3PsQ0BYRiH8ef/FhLnXCFWEI3WDkojWMAAltDQi0R9ExiADS5m+D7JHYnuPgWxgVC81a94qoe0eMzuEwMAx3Ec59vQtnUdAsmacZySsmYXK9LwNrqujR5bnY1cpcKHgqOS0debV6NUNHLtuRiZNjoZXVY6GB3mLA0oGPzFtOM4zg95AkctKGSanwlIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjEyLTA3OjAwbwUfhQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToxMi0wNzowMB5YpzkAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:alpha(opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAAAmJLR0QAIn/tYtYAAAAJcEhZcwAAAEgAAABIAEbJaz4AABonSURBVHja7Z17aGXHfcc/Z70br7y2e5W0MRIp3gep+6DsXUsmcXHxVds0awdiaUuaUihItpEaQu3EUChJwXZK6F+x3QTTrklW20ACbkKkNWmyTh+SsWkTR/JqcesmDX5BI1Ga9qruH3JYJ6d/nNfMOfM659yre6Uz30V77z2/ec9vfjNnfr/5TXAcjybjwKAL4DFYeAZoODwDyBgjZGzQhdhNeAYQMcYmsNkkFug1Awx+/IwRVo65CYyjY4Ek5cHXsYeQGcAsAMP0nwm28aOPH8a5j2nD2PJOOrFaDaLu34pZwJTyPpIRIgP0QgCO10ghiZuMw/KoExcCAraALQICQ8p16jh0CNJ9gKSKyTjQIYRC84iI0gkqxU9GmS5/W95hzbK7pmyr4x5CJgHMAtAVpjFonz6i3E1daE6l3tg0TUFiyvXkzJAhKL0TaB5FpjGYNWrVsWNPwTw2zWU3y8AsZZuc2VMozwBmhANvmjE2KzOYeQpKUh58HXuIXjPAXscYm/upe+04OOgCDBm29sfSzh1+J7Dh8AzQcHgGaDg8AzQcngEaDs8ADYdngIbD2wPk4w66/LuMMvYAbhYBNmXMmNEewJyDvXvq2APY1eFR2fcVk5SzB3DTgJmbUN9B45rvrmnbut+W+mbuU5/6vrEGKNoDRNDvhiehTPo2Pd0W28UewFQ6c+72+GaEcdrJ576AbA+g+i5jy0kKqMPYx6eLPYBp/LmVTc8+odXaoExOewJVtIEmheuw2wOYmMsmf5Kae3WwAYNvnLr2AIMu/y7D2wM0HH4jqOHwDNBweAZoODwDNByeARoOzwANh2eAhsObhecRDnCXv/5eaenyH6wXvS+NMMgShNYSVFcF2WMOoObyFBCCUdfv4h8grEApi6p52MofdX1gTMXOHFVju9XAJVSJuAekALbqBw4V0McPHBrIpQqhQdnjUr7AQJM/y+WRUOwtYK6hmYFCS2ywDWKp/OIU4Fp9nbWOvZGCHgj40KiJtM2idUoQprEDJVXMXZVLMrz0ZQgNdHPaWe3Mw0AsZQBlF4Ghw+ixhXLhzmpj3K1zA4fUTR3kkm7VFjANQZe07W1QoJd5DcxEnEsoNc0sAu0cbE7DJmLdRLRtBNlyd1lEVoWdxe10qQRlJICb6Ky3yg0cpUy/yhgYBaxbuoFDmKowT9PmCVAZ96Am0OAw6BLs5fwrxPU7gQ2HZ4CGwzNAw+EZoOHwDNBweAZoODwDNBzy4dDEWergYPcH3k+4tICLRrRaPNvZaNdcSiFjgORglIu792oN0DtUS8tWcrcWMLmazbRxY6VjR3rK5J++DmOVWyDMlRJQHw41H+F00WiPKZ71jgV0abm5htCX360FdHmM5Y7XjpWKndXAJoHqHU0vHNCVj4a5uFO3HcHWHRB1s6Sxl0CXjt2Fu73kbg7p1RqDYtcGObrtYHnWOarziaGUsllhrFNYB8UwZRnAvQGCEnHdSmBuQpf87Wf79fnbYtsYwN4G5g60M4CZgTQMUO4tIGuAKiqLQEhDnXoofZryr4Ks3FXXEKbcx2NqMoOrPQiY8k9iqtcAtpQz3w2m8835Upa0BzA1gLyAMVXfXDhTFU1piFWzm32pusDOgKYabOUcSGyVTsENpu7dSq+9cSslZacAN3Oq0OoiwjwL1ont1rzqerjNwfVN2kzpVL/Uxr4GUML7BxAxZr0xad/BHwwR0bjbAvxWcOPhGaDh8AzQcHgGaDg8AzQcngF6jUGqsysgbw9gg0lf5VL1sZr67n6jfukCy2b3kNW9aA9ggklj7rJLmGjsxh0OmOpR93CV+Xh4YD3+au9gXXxT6gNCthMoFsvu7be42Sgejax2+7frRjOYNHa22IE2nPhUp+00HR4NnajuNd0VqNcAOqMDs74qmxqqGC1EI8duNqX3YRDiqusLSjxV5avK336yeSiRMYCsKCx/gXx0wXrSfeXjB2S6vGoHqLMwdV1QVMvXLUQdHx99QMYAoqKwCg/bbhKwK1vrzo6BIEHUEkL+VIXozShW5SBLj6GRE+IUkKlCVAI8EvCRuZcaW0Z7ABdtv909hBmZLYDapMLc9NkkpPcukoQMSlLFEFUNavoCtTpYt4wBF2WpbhHYC2Wrm9Vi1YWmyyISQwn24GUy3h5AxtCI5t2C3wmU0bDu9wzQeHgGaDg8AzQcngEaDs8ADcfwMUBrWDZJm4E8A7jpsk0qm9CJqgvRorsrr2KD9oMwNCjnLt5NFTNaozxdEiZpGcNVdVmfYR/dAF4HMgOYd6nNu93JqG7RVbJAmG6Uqs/uRaJ/NA3R1cRPvlVzqi5Kn/Iay32IjAFkd+9FZPpwncv0gCDu/m1lXmbRHon+bUYNZ2eT3NX5yxYF+VTc3Ec0DsnRsKzJzB6vbZqspPurz+PbTq6c1af/9U7VE2O2jL6ProCvg4QBkqY1mUyBeGmCGvWvRNHJDzn3fBnkixCKJdyU8g5o2BFQPbLDoWKT6R2M2G+9cL1WQkePWCAsrCMSRbDaK79cnl65lW8AyrwFZE2ss8mzXclkoo+m1C4QFORAIOSumojM9kSy+wiPFGXeAsxGVTYnZzbfHdsp1eU1MnB8lsBmsNZYuF8YYZsiegPzGqAOGnj23wXD5iDCd9IuY/h0AR67Cs8ADYdngIbDM0DDsZ8YYCLdaZjoS/oHORz/G7alcw1EDDAdN9wK05VT+pRF029DyFnJWqBsJ06wln5fU8aeqMUeB3mLm9hhh5t4S8kCE9bSH4+pusMYerotJnwo98+cQ9pL0cGQkAe4BLRYEgJnr2TT6fMZljVJZ+fqFjhrOFlUTD3CLC8KXQhznJcady0XfpL1EnS5hKrSHedl6fcJXpF+H+YmNhgBdmjzfd7UtoA6Dxdn0vqbP22XYkchspa31THdOk84+RIAq5pduCUFg6wyhQ4LmgKMpN92CrRFnkCPNSLHEhE2CVmTclhjUmKByRzdjpeF0kUlzMffYIQjwETMCLpywqSC4lqaOpfPmyGyeJpSwgAb8adohiEW+RLwfXaM27SH48+z2hCHDLHneJF5A31GckExI8kqgHWBBVSjP38+t9ghh3gj/X69sgxHuJ6AawylvNNAM0tAszo+UKRSjsGT7v9N/kF8nM1lXUsC32enEEYuQsQAo4bUdOMGbBIAnk9ZIGSG5xUhEhYodn+EVu6zWLobjCVt8yPuAL5JWxl/HVIWUpdgMpZUk4UJq99Iuv93GZFZwHU9q+r+YgOCWVBFY+dVJc0mARIWQNP9xLmjXeSdyH3mcZjX4283KqhHuEybDaDNZd5RWAPkNalVj5naBb0txO/z5cKzqPsXOAJ8HSCZwN1fA4vdn6/gNVzDNYxwjVZIXs3VXA2oRtiipfthjOeZYYbnNeacE2wxzTRbFdf5I/xi/G+kUL4x3kXIG7Rpc4CQdxlNSic1nX9U+NPhMDbYQnxJ8Sxi+rO8jb8BYIrViFD9jbZYxRFrnO8ZQtokwBhbEI/9LUXzT0h0FQv8fO4z30TRKGkTrYhkOfFONkB4L9igbbAoqiPgd2qGUNt0vBLXL1qfpd1vYgBxJVsUOsXu/zNelH4VYRaJ5jXApOI1rwwd4J25z3wTReuLg6wVXgGzRbL4JL9Msy3y4KvCXxFzLArfq4XQ45WUxYXuHyYHERPArwq/X9QspPqLEBTd38vUIwxG7X2cl+XuHyYG8BgI9pMuwKMCPAM0HJ4BGg7PAA2HZ4D9hU/z6XIRZAZoORzM1sPl5k03TCg16pOCLrv4lj9NKP2bztHnc3TVppOoLT/eBzrAn1vap0Oncrtdxyf4BNdZQs0yy2zyQ3wNbNFlElhT2OavcEe8A/UwSxxjSaGxfoJ1zgILTDAv0ct50Ex0+3L4Sb4bP41SuyW39RPpwxOcLcR31ce3gWjjp/f0JEwAzEr2DgAdVhilC4zSzb+v06ILLPAE85wF5fmJZ7kNeI5fN7TubLyZNMcqr4kMEHV/pE0rskDIeO48fdnbw6PzhB/lcT7K4zzAI5oGmmCdaZYKOj3x6KcqB5fr27/Ne7nEKf6JX9P4OGhzmZCAk4WdvowOGOivcIVDHFfSk+afAxZLtmBCXUjV7SJ9vqCEX1DurE6zxBzLdBODG1EdnGynrjFZyVGLaCug1hzeyiY/4N94nRc1OsEJ1phhWavSrYO/5z1cpM1FbuUftaGivfS2kS7vWcq4orAVSpCMvkUldVRqNZ3lhdra4kaHJwD3A6Px9NhiO1sDnJV209eYNJh16LDNNl26bGsPd/0zv8O3mOXrLBQMOiDp/iUm+rIN/Ft8ldN8g9N8WWm4cRNgOh+Z0AMCrtLSD3FYY/gyK3V8fi+/E3d/cnqyW2ot8Ek+I/3+DJ8shDnKUTrAIywyx/mol8Q1QAjxGkAlwO1TQEA2w4VK+nvZ5Da+w3v4Du8paK2T7lePfnEfXbWmiBzMdAWDlDz9K3yIJ/kwT/JhvsYZjQuJNqCawzP6VfzESFfHz+beCM/mbBA7rKS1iuonrwJaOalaXAOYbw/P2E+i5bWB+pHXZYZljsaiW28PqMNkYY6TGcDc/XJFbSYR28qnf8wR7uMG7uMa/pQzEm2cH8bfNuLPEz2lZ91/XlPm1XgKSGqW7+BtaYoodn8LgOeA24jFey7/aO5flaPlJYA4ivONbkYUohU3f3l7mKji+u5P3gISqN4CRlMXNcU6mBeJycz+L8bS1aEHhIbuV5VQ5UgrYgHVG8D7uMhHeAKY5y85zd9J1FkWeYAui/m4mQQQTRKrdOCCVIEFZRjblSym0b/GLQIL3FLQ/5/gZbpky88TCrr8Ow+b05g69Dlr98NU7jWwiG2BxfO4wu/xFQCeoMsVRYhHgLl8XFd18Mn49cej3+hAXkz3BLMARRb09gANh9cFNByeARoOzwANh2eAhqN5DBCpjTsKSidV5d7kkI5O17fHPBKLDHAybYCTldOr7h+gLlqEnIu/n9NaNTwU6yBWCizwG6xwhjO8m3fzPX6pEDNqnY/Hv8SbjiOc4gOE3MqthHyAU4X4ZvcVeWuGvD1DkW4LMV3IQ6YnFUlfA0+ywSp/ASzSStWexURcXEn2x+p9lkXaXOYkG4pNlSjnRe7mXLzfrt8PP8arFHcKj6Tf3+LHir3QRZ5iiTaX43TkvXq7OjzR73WVimTz3muo0A52cyGC1FBmTeHKN2RUiJGqszMJsMEqUyzzQVpsK07CDB6LwAazbKBSqCZ77Un3q1SuR+NPtSr6TX7MDjv8mLeU9KdYBkZTnf5q6RqcoJteiVGUA4kdlE6GbjMX61rV+tYwTmUCtFL4XYwzzjj/lTzIJEDIDMucYy7mdLM9iy57EWXkgO6GAhEnBbZUSahzgop1kbsL9Lw+LT9CssFwjJcLuT/KxwBYpQNKCSSeeNxRSgB9/iEjscXViDKFSAJ0IVbJvVa4XCeRABPAWaUz75A2B4CfAunRNlkbGHX/3UpPQWHuWzVlj675XXA5PRs3p5yg7oZ09Ku7X7R5yO+1P8lPU/3AyzxWiP9xLpCsHdS7+oeUO/CuOJJ+/gj4WUWIjwGwxAxLHFPIgJDsWGpxQE0A/w38lAP8HC/wcPRYlADbtOKmW6FTweQLYwg3gydTDjYJ8EX+IP2et4uTu1/VgSe5X/j1KV4z5K5isGiM/gSAK1oJoPMiFHJMeh7yWkECiPIj0u2VWwPcDPwnAD/MWjcTe21abPMU06zQUZhEZStetc9v8akqRJD7Z6aqctiIOy/7LiLp/khG3MazEjXp/ilGCZTj9zKfYy7+V+x+2GCRB4CHiVYaRWyzzf/xNq5SnuCftDjYuJZreZVruS7+3wzV2WDbGuBGDnADN3ADcHMSIpsCIv8X0UtSeyh1f3PxW8AlNhQNEHX/c9zNu7mNyCxCRNT9q4b0L7HIt4FfUHQ/wBdZ5RFWeYwuc6CQAhCJWRXWBTOW44XzxzPx4frs/5lciFYqI5LfeYhmMmqTGYVnhLLawEG+BprRopsK/me5Lac1j8zd7LZGaMsfLTG3OcZ2vJw8kHMJA/fwEq+zpW2lkCA9L5BfZh7mV1iLTfIm+decaem0woZSdtmXD1F06Kf0X+DVwSLewcPAg5pRPMsoizFbtfhffqbAYiJUDCB6M+yH3XMFeAZoOJqnC/CQ4Bmg4fAM0HDkGWBa6y/8Ts6nmqTzRpeoHnsI8iJwiWlgufAOCn/EZ3NP7uNzgy68R32IEuB0PPqnOZ0LdWfa/dkO3WeVUmCN0OAm8dVYgnSs5bKH2H2sCdr03fb12zeIDLAAjDJK8VjHGWVc1dMJMDhqPRp/rlhK1VEYbMBs3Piz2ni2EDZ6KFw1UeziSc33PY1sCjjNN8mOht3BRalhNLELT+w7gS3FwU0ZyTFJeeN2VvKSeV4RzxZilkVO8wy3c1GTgptDd1sN9xQyCRCN+la8x7ygCW+7eXfBEDdKv4v65Esn/VR1v2zgoT5fH5lpjMbuF1T00zzNmzzNaU0KwHDsz+0eEgboxPN/N9ZZTVechf89/tOhC2woFpmJ0Nd1vyuW2dZeagPP5D4zuNgyTgDrrLMOfbqWagBIpgBRDVJUiciir44gjM7wbueeZt2u7367K+YQmGOZaRZRC/DTPA3A+7moTWE97dx8CPEqqvX9sgqIJEAn/d0S1IzZ08eVcVVPO5Y1fkCgsGVJ7h8yjf45zXf56SLd1AtPkX6R93OY93PR4Gt7womyzySAbZH3Pr6loP527gx6lpJeMujVyXbhb3eyYAtho4essxCvAtY0Y7zqTSBDiogB1PfsiWLuHj6fo97LFxRxOqwY52+TPYEt7nBgXzKAC25nOjZLhMdYViykmoHGMoDHvoTXBjYcngEaDs8ADYdngIbDM0DD4Rkgj47Fm/8ecwBhg8gAoVILjxSiV1dCDApnLU6wO0ZbhY7VkmHPQZYAHVasTKBGxjwtbQodVmJNQ4eVAgvJ7DevoM9LKalYsOD/olCCeeYN9XPvfherpj2BvK/gCKs8rNyS1XsTDqV4Ifk9/ajxAqDDg3HjmVKY52yBHl2BoIsv18DswyAw0GwpJ9R9siOoXgN0WLHe5a2Ll3S0OEZD4alZwiQp6FBVQkWlKH6rm9Keh5oBVpkyXuWswypTTJFIgGyEBMJTs7onSUEHW/zdwb4Y+xGKDLBasZGTeC1WmCLIpbBKwBQrtAzpu+VctXyyDwI1dcoYV6SGFW5MGErIawDd3J+F0N8oMPwwz/IRsrVKeeqehNcG5tFhxdDFZuoehGeAhsPvBDYcngEaDs8ADYdngIbDM0DDkWcA09lbj32IjAFasavUG7lR42s/0rM9pKF67EkkDNCimzqHOUZX2cltpniMB+k6XCiRV5fM564rmN9luocGyUbQOeb4LPcT8hAPEyrdIUdosUTH6ky26Ko4/1t2lNhvuocGEQO06LLBKeBBnmGVS7Q1t1Mv8ileY4WO5gLTKJzKV/VI7E79EFc4VPCnHXI9b3C94HBdTX9D608/ou3EfyqP/R4KRM6iTwAXAGIv8hdoc6IwgtqcYpE5jjFDlzkeLZXT29Nv6tu/r43/1JfPw3Xx39tR6+OvBUZj+qjvfFfkJUAEtQRIQq4yxTnmtO6Q1RLgl6XfLxVEeH/pHhpEEmCbVTrMxoemZ2mzqrmRImCGJY7ylOGEvQoLvJT7vb6rdA8NkkVgdB/GBhe4izbqGwMya4ApUKhFxdG/Tyzm9j/Ea+Meil8El3loKC+M8OgDvD1Aw+F1AQ2HZ4CGwzNAw+EZoOHIGMB2H0Bd+u08mtIf5fZdp/e7foOmV0TyFmC7D6Au3eZmrt/0ftdv0PTKiBjgTv5WQfsA34i/1aXbHE32m97v+g2aXgPRFJB5/hePTZ1RfBORp9+bXi17b45+l5A+iqd3qZLX0IMK8c8o46vqZ6u/WP7y8delg2m6+Ca6WAp1r5RE3lWs2hm0zZVs5iD2HuAL0pPepe8S356+yh22a/wA9QGzsMTvUEilSP9DAP5K237J01O8QE8OqYkMIOvXiwWw0ZN5N5uP1Q2sayB7+oEyNdcOsKdvZoD67ROkz6vRb+YFoft7wgAH6ych4CfC/+URWiWCGeJx9CopBMJnlfihQ1ybmuwjBtrNXJK6vyfo9RQwC5yn+hRQX8Try1dMoZoIN6XvJkFsEkqX/81ckrq/BxIgWgTa7gNwo98DLLIYfxPp4gtZqHj6BYFqo2Oko6TL5Q8LTx+XKDZ61fZJ6hdWpr8gdb8615KIGOCCVIAEFxTfROTpn08b8PM5+teE9FE8/ZoqeQ09rBD/gjK+qn62+ovlLxs/77yqLB2QhL+6V0riqlGAV/gPPpij3MtX0+916T/gf7gjR7+PL+0avd/1GzS9BiIGgEusss1746eP8ScsSeHq0p/nu7xFO/7113xS6J7doPe7foOmV4Y3CGk4vDaw4fAM0HB4Bmg4PAM0HJ4BGg7PAA2HqAxyvzx9OOkeFSBrA0fSbzvK0HXpHkOH4hRQr+t2rCnUG7lB7RQ8JOQZwNaBO+wY6Yl7Bh1sHajz5Z0grKjr99AgzwAjYOzAEUaM9MhDhx4hZoMJ04UvYDeo8CiJ4hQwUiEVObY5hXrj18ZAHiUhLwJt839dusfQQWQAm2gddrpHBfiNoIbDM0DD4Rmg4fAM0HB4Bmg4PAM0HHuXAcb8hlAvIDNA/X22kAlCJvpe7jE2Ge97Lg2AzADj8d+gYRvdUfdvDbqY+wEyA2zGf4OFbXT77u8hXCVAyFjhrxzCwj81ou7Vs2HS/X4N0BPIyqBNAjY1d2sX/8ph0ilU0v3jRvqWXwP0CjIDmCTAeNo1yV85IbxWeFJkojEhfRWLyd3vJ4EeYJgkgO/+AcBVAtSH/QKHct0/pgnnUQquEmA3YJIuqu73a4AeoNcSoF9Wu4nQz3961IT3D9Bw7F1dgEdP8P+NTFhDa6AzzgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0wMi0wMVQwNTozMzoxMC0wODowMClgwJIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMDItMDFUMDU6MzM6MTAtMDg6MDBYPXguAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-widget-header .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-default .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-active .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-highlight .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(data:image/png;base64,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)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#666;opacity:.5;filter:alpha(opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:alpha(opacity=30);border-radius:8px}@font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?v=4.0.3');src:url('/ClientSource/Style/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.woff?v=4.0.3') format('woff'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.ttf?v=4.0.3') format('truetype'),url('/ClientSource/Style/FontAwesome/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857142858em;text-align:center}.fa-ul{padding-left:0;margin-left:2.142857142857143em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.142857142857143em;top:.14285714285714285em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);}100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-asc:before{content:""}.fa-sort-up:before,.fa-sort-desc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-reply-all:before{content:""}.fa-mail-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px}header #heading,#header #heading{float:left;height:34px}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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)}header nav,#header nav{float:left;height:34px;padding:0;margin:0}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5)}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5)}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px}header .watermark,#header .watermark{background-color:#888}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8}#QuickSearchMenu li>a{padding:2px}#QuickSearchMenu li>a>i{margin-right:2px}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1}#layout_PageHeading a{text-decoration:none}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}#layout_Error{min-height:200px}#layout_Error table{background-color:#fff}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap}#layout_Error h2.error{margin-bottom:10px}#layout_Error .stacktrace{white-space:pre;overflow:auto}#layout_Error>div{margin:0 auto;width:650px}#layout_uiExtensions{display:none}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none}p{margin:0 0 20px 0;line-height:1.6em}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em}header,footer,nav,section{display:block}form{display:inline}img{border:none;padding:0;margin:0;vertical-align:bottom}code{font-family:Consolas,"Courier New",monospace}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px}a:link{color:#335a87;text-decoration:none}a:visited{color:#335a87}a:hover{color:#5e8cc2;text-decoration:underline}a:active{color:#335a87}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:bold;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default}a.button.alert{border-color:#900;background-color:#e51400}a.button.small{padding:2px 5px;font-size:.9em}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e}a.button i{margin-right:10px}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2}div.actionBar:not(:first-child){margin-top:10px}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0!important;padding-top:0!important}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none}h1{font-size:24px}h2{font-size:20px;padding:8px 0 4px 0}h3{font-size:18px}h4{font-size:14px}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:bold}table{border:none;border-collapse:collapse;width:100%}table td{padding:5px;margin:0;border:none;vertical-align:top}table th{padding:5px;margin:0;text-align:left;font-weight:bold;vertical-align:top}table.none{border:none!important}table.none tr,table.none td,table.none th{padding:0!important;margin:0!important;background:none!important;border:none!important}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.genericData>tbody>tr:hover>td{background-color:#fefefe}table.genericData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4}table.genericData td.id{text-align:center}table.genericData td.id a{padding:0 6px}.smallTable th,.smallTable td{font-size:.9em}.dataTables_wrapper{position:relative}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC)}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:bold;color:#1e6dab}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none}.jobStatus{color:#333}.jobStatus.Closed{color:#9e9e9e}.jobStatus.Open{color:#60a917}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff}.deviceStatus{color:#333}.deviceStatus.Decommissioned{color:#9e9e9e}.deviceStatus.Active{color:#60a917}.deviceStatus.NotEnrolled{color:#f0a30a}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.jobTable>tbody>tr:hover>td{background-color:#fefefe}table.jobTable>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fcedcf!important}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fed6d2!important}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbebca!important}table.jobTable tr:hover.statusSlaExpired td{background-color:#fed1cd!important}table.jobTable div.queues{display:inline-block;float:right}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px}table.jobTable td.dates,table.jobTable th.dates{width:130px}table.jobTable td.type,table.jobTable th.type{width:50px}table.jobTable td.device,table.jobTable th.device{width:110px}table.jobTable td.user,table.jobTable th.user{width:240px}table.jobTable td.technician,table.jobTable th.technician{width:80px}table.jobTable td.location,table.jobTable th.location{width:200px}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px!important}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px}table.deviceTable tr.decommissioned{background-color:#ededed}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444}select.small{padding:0}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e}ul.none{list-style:none;margin:0;padding:0}ul.none li{margin:0}div.form{margin:0 auto}div.form>p.actions{text-align:right}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px}div.form>table>tbody>tr>th{font-weight:normal;text-align:right}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0}div.form>table>tbody>tr>td.details{padding:0}div.form>table>tbody>tr>th.name{width:150px;text-align:right}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right}div.form>table table.sub>tbody>tr>th.name{text-align:right}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none}#pageMenu td:first-child{padding-left:0}#pageMenu td:last-child{border-right:none;padding-right:0}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center}.d-priority-high:before{content:""}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center}.d-priority-normal:before{content:""}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center}.d-priority-low:before{content:""}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6}.d-lime{color:#a4c400}.d-green{color:#60a917}.d-emerald{color:#008a00}.d-teal{color:#00aba9}.d-cyan{color:#1ba1e2}.d-cobalt{color:#0050ef}.d-indigo{color:#6a00ff}.d-violet{color:#a0f}.d-pink{color:#f472d0}.d-magenta{color:#d80073}.d-crimson{color:#a20025}.d-red{color:#e51400}.d-orange{color:#fa6800}.d-amber{color:#f0a30a}.d-yellow{color:#e3c800}.d-brown{color:#825a2c}.d-olive{color:#6d8764}.d-steel{color:#647689}.d-mauve{color:#76608a}.d-sienna{color:#a0522d}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.field-validation-error{color:#e51400!important}.field-validation-valid{display:none}.input-validation-error{border:1px solid #e51400!important;background-color:#fff7f7!important}.validation-summary-errors{font-weight:bold!important;color:#e51400!important}.validation-summary-valid{display:none}.ajaxLoading{height:11px;width:16px;display:inline-block;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA);margin-bottom:0}.ajaxOk{color:#60a917}.ajaxSave{color:#1e6dab;cursor:pointer}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8}.ajaxRemove:hover{opacity:1}#layout_Page div.hiddenDialog{display:none}* html .clearfix{height:1%;overflow:visible}*+html .clearfix{min-height:1%}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0}div.columnHost .column50{float:left;width:50%}.hidden{display:none}.success{color:#60a917}.information{color:#1e6dab}.warning{color:#f0a30a}.error{color:#e51400}.alert{color:#fa6800}.smallText{font-size:.9em}.smallMessage{font-style:italic;color:#666;font-size:.9em}.nowrap{white-space:nowrap}.code{font-family:Consolas,"Courier New",monospace}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em}a.smallLink{font-size:.9em}textarea.block{width:250px;height:100px}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em}.checkboxBulkSelectContainer a{text-decoration:none}.ui-widget .checkboxBulkSelectContainer{font-size:1em}#licence{text-align:justify}#licence p{font-size:.9em}#licence li{font-size:.9em}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}.ui-tabs .ui-tabs-panel{padding:.5em}.ui-dialog{animation-name:ui-dialog-show;-webkit-animation-name:ui-dialog-show;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-show{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes ui-dialog-show{0%{-webkit-transform:translateY(-30px);opacity:0}100%{-webkit-transform:translateY(0);opacity:1}}.ui-widget-overlay.ui-front{animation-name:ui-dialog-fadeIn;-webkit-animation-name:ui-dialog-fadeIn;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}@-webkit-keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}.page .dialog{display:none}.ui-dialog{padding:0;border-color:#333;background:#fcfcfc;box-shadow:rgba(20,20,20,.7) 0 0 50px;top:50px!important}.ui-dialog .ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom-color:#d1d1d1;background:#333;color:#fff;font-size:1.1em;font-weight:normal;text-transform:uppercase;padding:.6em 1em} \ No newline at end of file +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"“" "”" "‘" "’"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,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);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQAAAADcH0/XAAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAASSURBVCjPY/gPAgyj5ChJVRIAypHyHLPbLnsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABaSURBVBjTY3h8jYFOaAPDo/cMj/QYHuYyPGhjuF/BcC+L4W4swx0NhltfGG7uZ7jRzXA9nOGaEsOV4wyXdzJcamW4WM5wYQLD+SaGcwcZzt5iOOvAcObMACIAsZae6pVZewYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3iXxzCKRhHV0bNnDM+NGJ7fYXgxk+FlJsOrOIbXIQxvYhjepjK8i2Z4H8DwwZjhIzPDx7UMn+QYPhmOolFEDAIAjUD2JAAuNW8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3j6n2EUjSKqo1u3GG57MdxxY7gby3BvIsP9PwwPMxgefWB4Us7w9DHDcz+GF/MYXl5ieHWW4XUpw+uJo2gUEYMAvlejJVIWsXwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjQtMDc6MDCCWi1cAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAw8weV4AAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQAQAAAABHIzd2AAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAARSURBVCjPY2hgGIWjcBTigACVaMgB0zSxaQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0xMC0yMFQxOTo1NTowMi0wNzowMKOvHxsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMTAtMjBUMTk6NTU6MDItMDc6MDDS8qenAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAjUlEQVRIx+3PIQoCQRSA4X+eYhBsg4iwowZBGDF7COtWq1kwad37eAPBg3iFFXaL4xvB4hVEw0tf+NNPvummOQsAGIZhGN8G1ZTqmtx99u5e8ARKYciMrTBi7nZCQeQkFCzdUZiwoiJfNDTx08gPPbRTcWMW7HlFvbZJ8ARXCgM8a0Ho0P+LacMwjB/yBjxhJFOI7HkuAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAwglotXAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToyNC0wNzowMPMHleAAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAiklEQVRIx+3PsQ0BYRiH8ef/FhLnXCFWEI3WDkojWMAAltDQi0R9ExiADS5m+D7JHYnuPgWxgVC81a94qoe0eMzuEwMAx3Ec59vQtnUdAsmacZySsmYXK9LwNrqujR5bnY1cpcKHgqOS0debV6NUNHLtuRiZNjoZXVY6GB3mLA0oGPzFtOM4zg95AkctKGSanwlIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjEyLTA3OjAwbwUfhQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToxMi0wNzowMB5YpzkAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:alpha(opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(data:image/png;base64,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)}.ui-widget-header .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-default .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-active .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-highlight .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(data:image/png;base64,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)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#666;opacity:.5;filter:alpha(opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:alpha(opacity=30);border-radius:8px}@font-face{font-family:'FontAwesome';src:url('/ClientSource/Style/FontAwesome//fontawesome-webfont.eot?v=4.1.0');src:url('/ClientSource/Style/FontAwesome//fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('/ClientSource/Style/FontAwesome//fontawesome-webfont.woff?v=4.1.0') format('woff'),url('/ClientSource/Style/FontAwesome//fontawesome-webfont.ttf?v=4.1.0') format('truetype'),url('/ClientSource/Style/FontAwesome//fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);}100%{-o-transform:rotate(359deg);}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-square:before,.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}body{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;margin:0;padding:0;color:#333}body.layout{background:url(data:image/png;base64,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) left top repeat-x #d1d1d1;background:linear-gradient(to bottom,#f2f2f2 0,#d1d1d1 370px) left top repeat-x #d1d1d1;min-height:370px}.page{max-width:1232px;min-width:768px;margin-left:auto;margin-right:auto}header,#header{position:relative;background-color:#333;margin:0;padding:0;height:34px}header #heading,#header #heading{float:left;height:34px}header #heading i,#header #heading i{display:block;height:34px;width:34px;background-image:url(data:image/png;base64,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)}header nav,#header nav{float:left;height:34px;padding:0;margin:0}header nav ul#menu,#header nav ul#menu{height:26px;padding:0;margin:8px 0 0 4px;list-style:none;z-index:100000;font-size:0;line-height:0}header nav ul#menu>li,#header nav ul#menu>li{display:inline-block;z-index:100000;font-size:13.2px;line-height:19.2px}header nav ul#menu>li.moveRight,#header nav ul#menu>li.moveRight{margin-left:20px}header nav ul#menu>li>a,#header nav ul#menu>li>a{display:inline-block;padding:2px 10px 4px 10px;height:20px;color:#fff;font-weight:400;text-transform:uppercase;text-decoration:none}header nav ul#menu>li>a:active,#header nav ul#menu>li>a:active{text-decoration:none}header nav ul#menu>li.active>a,#header nav ul#menu>li.active>a{background-color:#222}header nav ul#menu>li:hover>a,#header nav ul#menu>li:hover>a{background-color:#111;text-decoration:none}header nav ul#menu>li>ul,#header nav ul#menu>li>ul{z-index:100000;display:none;list-style:none;position:absolute;margin:0;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;background-color:#f2f2f2;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5)}header nav ul#menu>li>ul li,#header nav ul#menu>li>ul li{position:relative;background-position:top;background-repeat:repeat-x;border-top:1px solid #e6e6e6}header nav ul#menu>li>ul li:first-child,#header nav ul#menu>li>ul li:first-child{border-top:1px solid #d1d1d1}header nav ul#menu>li>ul li:last-child,#header nav ul#menu>li>ul li:last-child{border-bottom:1px solid #d1d1d1}header nav ul#menu>li>ul li:hover,#header nav ul#menu>li>ul li:hover{border-top:1px solid #d9d9d9;background-color:#e6e6e6}header nav ul#menu>li>ul li a,#header nav ul#menu>li>ul li a{display:block;color:#000;padding:4px 8px;text-decoration:none}header nav ul#menu>li>ul li a:hover,#header nav ul#menu>li>ul li a:hover{color:#335a87;text-decoration:none}header nav ul#menu>li>ul li a:active,#header nav ul#menu>li>ul li a:active{text-decoration:none}header nav ul#menu>li>ul li i.fa-caret-right,#header nav ul#menu>li>ul li i.fa-caret-right{cursor:pointer;color:#666;font-size:16px;position:absolute;display:block;right:12px;top:7px}header nav ul#menu>li>ul li:hover i.fa-caret-right,#header nav ul#menu>li>ul li:hover i.fa-caret-right{color:#333}header nav ul#menu>li>ul ul,#header nav ul#menu>li>ul ul{display:none;list-style:none;position:absolute;top:-1px;left:180px;background-color:#f2f2f2;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;padding:0;min-width:180px;box-shadow:2px 2px 5px rgba(209,209,209,.5)}header #headerMenu,#header #headerMenu{float:right;height:24px;padding:5px 8px;font-size:.9em;line-height:24px;text-align:right;color:#fff}header #headerMenu a,#header #headerMenu a{color:#fff;text-decoration:none}header #headerMenu a:hover,#header #headerMenu a:hover{color:#cddbec;text-decoration:none}header #SearchQuery,#header #SearchQuery{font-size:.9em;margin-left:6px;width:130px;background-color:#eee;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}header #SearchQuery:hover,#header #SearchQuery:hover,header #SearchQuery:focus,#header #SearchQuery:focus{background-color:#fff;width:190px}header .watermark,#header .watermark{background-color:#888}#QuickSearchMenu{max-height:400px;font-size:.9em;background:none;background-color:#fafafa}#QuickSearchMenu li:not(:last-child){border-bottom:1px solid #d8d8d8}#QuickSearchMenu li>a{padding:2px}#QuickSearchMenu li>a>i{margin-right:2px}#QuickSearchMenu li>a>div{padding-left:1.2857142857142858em;margin-left:2px}#layout_PageHeading{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAA8CAYAAABfESsNAAAAOUlEQVRIx+2SuREAIAzDFELL/uOSFVLx3Mm1C8nnABaNDJq5WJzAVkZGZXyPMg7+jUwCIeNZmdcZC2pxCZOpoRNgAAAAAElFTkSuQmCC) left top repeat-x #fff;background:linear-gradient(to bottom,#f2f2f2 0,#fff 50px) #fff;height:50px;padding:6px 20px 4px 20px;font-size:2em;color:#000;line-height:50px;position:relative;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1}#layout_PageHeading a{text-decoration:none}#layout_Page{background-color:#fff;overflow:auto;border-left:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;padding:0 30px 15px 30px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}#layout_Error{min-height:200px}#layout_Error table{background-color:#fff}#layout_Error h1,#layout_Error h2,#layout_Error h3,#layout_Error h4,#layout_Error h5{color:#fff;white-space:pre-wrap}#layout_Error h2.error{margin-bottom:10px}#layout_Error .stacktrace{white-space:pre;overflow:auto}#layout_Error>div{margin:0 auto;width:650px}#layout_uiExtensions{display:none}footer,#footer{color:#777;padding:10px 0;text-align:center;margin:0;font-size:.9em}footer a:link,#footer a:link,footer a:visited,#footer a:visited,footer a:active,#footer a:active{color:#777}footer a:link,#footer a:link,footer a:active,#footer a:active{text-decoration:underline}footer a:hover,#footer a:hover{color:#5e8cc2;text-decoration:none}p{margin:0 0 20px 0;line-height:1.6em}ul{margin:0;padding:0 0 0 25px;list-style:square;line-height:1.6em}header,footer,nav,section{display:block}form{display:inline}img{border:none;padding:0;margin:0;vertical-align:bottom}code{font-family:Consolas,"Courier New",monospace}hr{border:none;border-bottom:1px dashed #aaa;margin-top:15px}a:link{color:#335a87;text-decoration:none}a:visited{color:#335a87}a:hover{color:#5e8cc2;text-decoration:underline}a:active{color:#335a87}a[disabled]{color:#6b6b6b;text-decoration:none;cursor:default}a.button{display:inline-block;padding:4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:bold;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none}a.button[disabled],a.button.disabled{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default}a.button.alert{border-color:#900;background-color:#e51400}a.button.small{padding:2px 5px;font-size:.9em}a.button:hover{border:1px solid #6b6b6b;background:#9e9e9e}a.button i{margin-right:10px}div.actionBar{margin:0 -30px 0 -30px;padding:10px;border-top:1px solid #d1d1d1;text-align:right;background-color:#f2f2f2}div.actionBar:not(:first-child){margin-top:10px}div.actionBar:last-child{margin-bottom:-15px;-moz-border-radius:0 0 6px 6px;-webkit-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}h1,h2,h3,h4,h5,h6{color:#000;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;margin:0}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0!important;padding-top:0!important}h1>a:link,h2>a:link,h3>a:link,h4>a:link,h5>a:link,h6>a:link{text-decoration:none}h1{font-size:24px}h2{font-size:20px;padding:8px 0 4px 0}h3{font-size:18px}h4{font-size:14px}h5,h6{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-stretch:normal;font-weight:bold}table{border:none;border-collapse:collapse;width:100%}table td{padding:5px;margin:0;border:none;vertical-align:top}table th{padding:5px;margin:0;text-align:left;font-weight:bold;vertical-align:top}table.none{border:none!important}table.none tr,table.none td,table.none th{padding:0!important;margin:0!important;background:none!important;border:none!important}table.genericData{border:solid 1px #f4f4f4;border-collapse:collapse}table.genericData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.genericData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.genericData>thead>tr>th,table.genericData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.genericData>tbody>tr:hover>td{background-color:#fefefe}table.genericData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.genericData>tfoot>tr>th,table.genericData>tfoot>tr>td{background-color:#f4f4f4}table.genericData td.id{text-align:center}table.genericData td.id a{padding:0 6px}.smallTable th,.smallTable td{font-size:.9em}.dataTables_wrapper{position:relative}.dataTables_wrapper .dataTables_filter{position:absolute;height:20px;margin-top:-20px;right:0;font-size:.9em;-moz-opacity:.3;opacity:.3}.dataTables_wrapper .dataTables_filter input{font-size:.95em;padding:0;height:1.4em;width:150px}.dataTables_wrapper .dataTables_length{position:absolute;height:20px;margin-top:-20px;right:200px;font-size:.9em;-moz-opacity:.3;opacity:.3}.dataTables_wrapper .dataTables_length select{font-size:.95em;padding:0;height:1.4em}.dataTables_wrapper .dataTables_paginate{text-align:right;background-color:#f4f4f4;padding:2px 4px;font-size:.9em}.dataTables_wrapper .dataTables_paginate a{cursor:pointer;padding:2px;margin:0 3px;color:#335a87;background-repeat:no-repeat;-moz-opacity:.3;opacity:.3;text-transform:uppercase}.dataTables_wrapper .dataTables_paginate .first{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQALGUe0SQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAAYqTAY6Jng6AAAAAElFTkSuQmCC);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .first.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAKklEQVQI12NgQAKxsbESQPwfnY0iCcVwNjZJFAxT8J+QAvwmEHQDPl8AAEm8TIFT3+fIAAAAAElFTkSuQmCC)}.dataTables_wrapper .dataTables_paginate .previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .previous.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .next.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .last{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12Mwjmr/D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAABJ/EwGJKVDGAAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .last.paginate_button_disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAK0lEQVQI12OIjY39D8QSDECAzIYDqCBYApmNTQE6liCk4D/JJuB1A05fAACQykyB48rZCQAAAABJRU5ErkJggg==)}.dataTables_wrapper .dataTables_paginate .paginate_active{font-weight:bold;color:#1e6dab}.dataTables_wrapper .dataTables_paginate .paginate_button_disabled{color:#ccc;cursor:default}.dataTables_wrapper .dataTables_paginate .paginate_enabled_previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAGMo9olgPg/XkmsCpAlcSn4T0gBfhMIugFdEQCMVyg5CPiC8wAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .paginate_disabled_previous{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12NgwAH6+vokgPg/XkmsCpAlcSn4T0gBfhMIugFdEQDzojUdMBAGjgAAAABJRU5ErkJggg==);background-position:left center;padding-left:12px}.dataTables_wrapper .dataTables_paginate .paginate_enabled_next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Mwjmr/D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwCZ1Cg5w6CPqwAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper .dataTables_paginate .paginate_disabled_next{color:#ccc;cursor:default;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAAJUlEQVQI12Po6+v7D8QSDLgAVAFuRUgKsCtCU/CfIhPwugGnLwDwPjUdLMfQ6AAAAABJRU5ErkJggg==);background-position:right center;padding-right:12px}.dataTables_wrapper:hover .dataTables_filter,.dataTables_wrapper:hover .dataTables_length,.dataTables_wrapper:hover .dataTables_paginate a{-moz-opacity:1;opacity:1}.dataTables_wrapper table>thead tr>th{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAD6CAYAAACoLMeFAAAAdElEQVRo3u3bOwqAMBAFwBwjh/CUluKRhfVTiil0UYjMwJLqLfmUYUuBtw3jUreKfc2E43aTi/C9Jo3wUR4WAAAAAAAAejBPc90q9jUTjkdNTuGjPj9/bgfpO0i/AgAAAAAAAPQnPZ6YHpBsNEnNefrt4+9Wmn6nW/cZ1MQAAAAASUVORK5CYII=);background-repeat:no-repeat}.dataTables_wrapper table>thead tr>th.sorting{background-position:right center;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_desc{background-position:right bottom;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_asc{background-position:right top;cursor:pointer}.dataTables_wrapper table>thead tr>th.sorting_disabled{background-image:none}.jobStatus{color:#333}.jobStatus.Closed{color:#9e9e9e}.jobStatus.Open{color:#60a917}.jobStatus.AwaitingWarrantyRepair,.jobStatus.AwaitingRepairs{color:#1e6dab}.jobStatus.AwaitingDeviceReturn,.jobStatus.AwaitingUserAction,.jobStatus.AwaitingAccountingPayment,.jobStatus.AwaitingAccountingCharge{color:#f0a30a}.jobStatus.AwaitingInsuranceProcessing{color:#6a00ff}.deviceStatus{color:#333}.deviceStatus.Decommissioned{color:#9e9e9e}.deviceStatus.Active{color:#60a917}.deviceStatus.NotEnrolled{color:#f0a30a}table.jobTable{border:solid 1px #f4f4f4;border-collapse:collapse;table-layout:fixed}table.jobTable>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}table.jobTable>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}table.jobTable>thead>tr>th,table.jobTable>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}table.jobTable>tbody>tr:hover>td{background-color:#fefefe}table.jobTable>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}table.jobTable>tfoot>tr>th,table.jobTable>tfoot>tr>td{background-color:#f4f4f4}table.jobTable td{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis}table.jobTable.hideStatusClosed tr[data-status=Closed]{display:none}table.jobTable td.id,table.jobTable th.id{width:50px;text-align:center}table.jobTable td.id a,table.jobTable th.id a{padding:0 6px}table.jobTable tr.statusSlaWarning td{background-color:#fdeed1}table.jobTable tr.statusSlaWarning td:not(:last-child){border-right:1px solid #f8e9cb}table.jobTable tr.statusSlaExpired td{background-color:#ffd7d3}table.jobTable tr.statusSlaExpired td:not(:last-child){border-right:1px solid #fad2ce}table.jobTable tr:nth-child(odd).statusSlaWarning td{background-color:#fcedcf!important}table.jobTable tr:nth-child(odd).statusSlaExpired td{background-color:#fed6d2!important}table.jobTable tr:hover.statusSlaWarning td{background-color:#fbebca!important}table.jobTable tr:hover.statusSlaExpired td{background-color:#fed1cd!important}table.jobTable div.queues{display:inline-block;float:right}table.jobTable td.lastActive,table.jobTable th.lastActive{width:130px}table.jobTable td.dates,table.jobTable th.dates{width:130px}table.jobTable td.type,table.jobTable th.type{width:50px}table.jobTable td.device,table.jobTable th.device{width:110px}table.jobTable td.user,table.jobTable th.user{width:240px}table.jobTable td.technician,table.jobTable th.technician{width:80px}table.jobTable td.location,table.jobTable th.location{width:200px}div.jobTable>a.dataTables_showStatusClosed{margin:10px 5px}div.jobTable>h3,div.jobTable>div.allClosed_container{margin:50px 20px!important}div.jobTable>h3 a.button,div.jobTable>div.allClosed_container a.button{margin-top:10px}table.deviceTable tr.decommissioned{background-color:#ededed}textarea{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;min-height:75px;padding:2px;color:#444;width:200px}input[type="text"],input[type="password"],input[type="file"],input[type="number"]{font-size:12px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;border:1px solid #ccc;padding:2px;color:#444;width:200px}input[type="text"].small,input[type="password"].small,input[type="file"].small,input[type="number"].small{padding:0 2px;width:150px}input[type="text"].discreet,input[type="password"].discreet,input[type="file"].discreet,input[type="number"].discreet{border:1px solid #fff}input[type="text"].discreet:hover,input[type="password"].discreet:hover,input[type="file"].discreet:hover,input[type="number"].discreet:hover,input[type="text"].discreet:focus,input[type="password"].discreet:focus,input[type="file"].discreet:focus,input[type="number"].discreet:focus{border:1px solid #ccc}input[type="checkbox"],input[type="radio"]{margin-right:4px;vertical-align:sub}select{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:12px;border:1px solid #ccc;padding:2px;color:#444}select.small{padding:0}input[type="submit"],button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;padding:5px}input[type="submit"].button,button.button{font-size:12px;padding:4px 10px 4px 10px;margin:2px;border:1px solid #1a5f95;background:#1e6dab;color:#fff;font-weight:600;text-transform:uppercase;cursor:pointer}input[type="submit"].button.alert,button.button.alert{border-color:#900;background-color:#e51400}input[type="submit"].button.small,button.button.small{padding:2px 5px;font-size:.9em}input[type="submit"].button[disabled],button.button[disabled]{background:#9e9e9e;border:1px solid #6b6b6b;cursor:default}input[type="submit"].button:hover,button.button:hover{border:1px solid #6b6b6b;background:#9e9e9e}ul.none{list-style:none;margin:0;padding:0}ul.none li{margin:0}div.form{margin:0 auto}div.form>p.actions{text-align:right}div.form>table{border-top:6px solid #1e6dab;border-left:1px solid #1e6dab;border-right:1px solid #1e6dab;border-bottom:3px solid #1e6dab;background-color:#fff}div.form>table>tbody>tr>td,div.form>table>tbody>tr>th{background:none;border:none;margin:0;padding:8px 5px}div.form>table>tbody>tr>th{font-weight:normal;text-align:right}div.form>table>tbody>tr:nth-child(odd){background-color:#f2f2f2;margin:0;padding:0}div.form>table>tbody>tr>td.details{padding:0}div.form>table>tbody>tr>th.name{width:150px;text-align:right}div.form>table table.sub>tbody>tr:not(:first-child)>th,div.form>table table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}div.form>table table.sub>tbody>tr>th{font-weight:normal;text-align:right}div.form>table table.sub>tbody>tr>th.name{text-align:right}#pageMenu td{border-right:1px dashed #aaa;width:33%;padding:10px}#pageMenu td .pageMenuArea>.fa{font-size:1.3em;color:#6b6b6b;margin-right:4px}#pageMenu td .pageMenuArea>a,#pageMenu td .pageMenuArea>h3{text-decoration:none;font-size:1.2em}#pageMenu td .pageMenuArea .pageMenuBlurb{font-size:.9em;color:#888;margin-bottom:10px}#pageMenu td .pageMenuArea .pageMenuBlurb a{text-decoration:none}#pageMenu td .pageMenuArea:not(:last-child){border-bottom:1px dashed #aaa}#pageMenu td .pageMenuArea.noSeperator{border-bottom:none}#pageMenu td:first-child{padding-left:0}#pageMenu td:last-child{border-right:none;padding-right:0}.d-priority-high{color:#fa6800;width:1.2857142857142858em;text-align:center}.d-priority-high:before{content:""}.d-priority-normal{color:#60a917;width:1.2857142857142858em;text-align:center}.d-priority-normal:before{content:""}.d-priority-low{color:#1e6dab;width:1.2857142857142858em;text-align:center}.d-priority-low:before{content:""}.fa-stack .d-priority-high,.fa-stack .d-priority-normal,.fa-stack .d-priority-low{width:100%;font-size:.8em;margin-left:.5em;margin-top:.4em;opacity:.6}.d-lime{color:#a4c400}.d-green{color:#60a917}.d-emerald{color:#008a00}.d-teal{color:#00aba9}.d-cyan{color:#1ba1e2}.d-cobalt{color:#0050ef}.d-indigo{color:#6a00ff}.d-violet{color:#a0f}.d-pink{color:#f472d0}.d-magenta{color:#d80073}.d-crimson{color:#a20025}.d-red{color:#e51400}.d-orange{color:#fa6800}.d-amber{color:#f0a30a}.d-yellow{color:#e3c800}.d-brown{color:#825a2c}.d-olive{color:#6d8764}.d-steel{color:#647689}.d-mauve{color:#76608a}.d-sienna{color:#a0522d}table.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}td.subtleHighlight{border:1px solid #ccc;background-color:#ededed;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.field-validation-error{color:#e51400!important}.field-validation-valid{display:none}.input-validation-error{border:1px solid #e51400!important;background-color:#fff7f7!important}.validation-summary-errors{font-weight:bold!important;color:#e51400!important}.validation-summary-valid{display:none}.ajaxLoading{height:11px;width:16px;display:inline-block;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA);margin-bottom:0}.ajaxOk{color:#60a917}.ajaxSave{color:#1e6dab;cursor:pointer}.ajaxRemove{color:#e51400;cursor:pointer;opacity:.8}.ajaxRemove:hover{opacity:1}#layout_Page div.hiddenDialog{display:none}* html .clearfix{height:1%;overflow:visible}*+html .clearfix{min-height:1%}.clearfix:after{clear:both;content:".";display:block;height:0;visibility:hidden;font-size:0}div.columnHost .column50{float:left;width:50%}.hidden{display:none}.success{color:#60a917}.information{color:#1e6dab}.warning{color:#f0a30a}.error{color:#e51400}.alert{color:#fa6800}.smallText{font-size:.9em}.smallMessage{font-style:italic;color:#666;font-size:.9em}.nowrap{white-space:nowrap}.code{font-family:Consolas,"Courier New",monospace}div.code{border:1px dashed #bbb;background-color:#fff;margin:3px 6px;padding:4px;font-size:.9em}a.smallLink{font-size:.9em}textarea.block{width:250px;height:100px}.checkboxBulkSelectContainer{margin-top:6px;font-size:.8em}.checkboxBulkSelectContainer a{text-decoration:none}.ui-widget .checkboxBulkSelectContainer{font-size:1em}#licence{text-align:justify}#licence p{font-size:.9em}#licence li{font-size:.9em}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}.ui-tabs .ui-tabs-panel{padding:.5em}.ui-dialog{animation-name:ui-dialog-show;-webkit-animation-name:ui-dialog-show;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-show{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes ui-dialog-show{0%{-webkit-transform:translateY(-30px);opacity:0}100%{-webkit-transform:translateY(0);opacity:1}}.ui-widget-overlay.ui-front{animation-name:ui-dialog-fadeIn;-webkit-animation-name:ui-dialog-fadeIn;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}@-webkit-keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}.page .dialog{display:none}.ui-dialog{padding:0;border-color:#333;background:#fcfcfc;box-shadow:rgba(20,20,20,.7) 0 0 50px;top:50px!important}.ui-dialog .ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom-color:#d1d1d1;background:#333;color:#fff;font-size:1.1em;font-weight:normal;text-transform:uppercase;padding:.6em 1em}body .ui-tooltip{border-width:1px;-webkit-box-shadow:none;box-shadow:none} \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/Device.css b/Disco.Web/ClientSource/Style/Device.css index 7a17693e..4bd2f81c 100644 --- a/Disco.Web/ClientSource/Style/Device.css +++ b/Disco.Web/ClientSource/Style/Device.css @@ -373,95 +373,172 @@ margin-right: 10px; color: #1e6dab; } -#deviceImport #ImportFile { - width: 100%; +#Devices_Import #ImportFile { + width: 96%; + margin-bottom: 8px; } -#deviceImport #documentation { +#Devices_Import #Devices_Import_Documentation { width: 700px; margin: 20px auto; } -#deviceImport #documentation > table > thead > tr > th:first-child { - width: 100px; +#Devices_Import #Devices_Import_Documentation > table > tbody th:first-child { + width: 220px; } -#deviceImportReview #errorMessage { - font-weight: bold; - color: red; +#Devices_Import_Completed_Dialog { + padding: 50px 0; + text-align: center; } -#deviceImportReview #devicesNavigation { +#Devices_Import_Completed_Dialog h3 { + margin-bottom: 16px; +} +#Devices_Import_Completed_Dialog i { + margin-right: 10px; + color: #60a917; +} +#Devices_Import_Loading_Dialog { + padding-top: 50px; + text-align: center; +} +#Devices_Import_Loading_Dialog i { + margin-right: 10px; + color: #1e6dab; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer { + margin: 18px 0; + overflow-x: auto; + border: 1px solid #ccc; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > thead { + white-space: nowrap; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > thead ul.importHeaderType > li > a > span:not(.ui-menu-icon) { + padding-right: 16px; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > thead ul.importHeaderType ul { + z-index: 1000; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > thead td.headerIgnoreColumn { + background-color: #fa6800; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > thead td:not(.headerIgnoreColumn) { + background-color: #1e6dab; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > tbody td.headerDeviceSerialNumber { + border-top-color: #d1e6f7; + border-bottom-color: #d1e6f7; + background-color: #e2f0fa; +} +#Devices_Import_Headers #Devices_Import_Headers_TableContainer table > tbody td.headerIgnoreColumn { + max-width: 150px; + white-space: nowrap; + overflow: hidden; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + color: #cccccc; +} +#Devices_Import_Parsing_Dialog { + padding-top: 50px; + text-align: center; +} +#Devices_Import_Parsing_Dialog i { + margin-right: 10px; + color: #1e6dab; +} +#Devices_Import_Review #Devices_Import_Review_Navigation { margin-top: 15px; text-align: right; } -#deviceImportReview #devicesNavigation ul { +#Devices_Import_Review #Devices_Import_Review_Navigation ul { display: inline-block; - padding: 1px; + padding: 0px; border: 1px solid #bbb; } -#deviceImportReview #devicesNavigation ul li { +#Devices_Import_Review #Devices_Import_Review_Navigation ul li { display: inline-block; - padding: 1px 6px; + padding: 3px 10px; margin: 0; } -#deviceImportReview #devicesNavigation ul li.statusError { - background-color: #ffd3d3; +#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionDetached { + background-color: #ffd0cc; } -#deviceImportReview #devicesNavigation ul li.statusUpdate { - background-color: #d3f3ff; +#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionModified { + background-color: #e2f0fa; } -#deviceImportReview #devicesNavigation ul li.statusNew { - background-color: #d9ffb4; +#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionAdded { + background-color: #e7f9d5; } -#deviceImportReview #devices { - border: solid 1px #f4f4f4; - border-collapse: collapse; - margin-top: 6px; -} -#deviceImportReview #devices > tbody > tr > td { - border: solid 1px #f4f4f4; - background-color: #ffffff; -} -#deviceImportReview #devices > tbody > tr:nth-child(odd) > td { +#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionUnchanged { background-color: #fcfcfc; } -#deviceImportReview #devices > thead > tr > th, -#deviceImportReview #devices > tbody > tr > th { - background-color: #f4f4f4; - border: solid 1px #f4f4f4; +#Devices_Import_Review #Devices_Import_Review_TableContainer { + margin: 18px 0; + overflow-x: auto; + border: 1px solid #ccc; } -#deviceImportReview #devices > tbody > tr:hover > td { - background-color: #fefefe; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > thead { + white-space: nowrap; } -#deviceImportReview #devices > tbody > tr:hover:nth-child(odd) > td { - background-color: #fafafa; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > thead tr:nth-child(2) th { + padding-top: 0; + font-weight: normal; + font-size: 0.9em; } -#deviceImportReview #devices > tfoot > tr > th, -#deviceImportReview #devices > tfoot > tr > td { - background-color: #f4f4f4; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.action { + text-align: center; } -#deviceImportReview #devices > tbody td { - vertical-align: middle; - min-height: 32px; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionDetached td.action i:before { + color: #e51400; + content: "\f12a"; } -#deviceImportReview #devices > tbody tr.statusError td { - background-color: #ffd3d3; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionDetached td { + background-color: #ffe7e5; } -#deviceImportReview #devices > tbody tr.statusUpdate td { - background-color: #d3f3ff; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionUnchanged td.action i:before { + content: "\f068"; } -#deviceImportReview #devices > tbody tr.statusNew td { - background-color: #d9ffb4; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionUnchanged td { + background-color: #fcfcfc; } -#deviceImportReview #devices > tbody tr td.action { - font-weight: bold; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionUnchanged td:nth-child(n+3) { + color: #cccccc; } -#deviceImportReview #devices > tbody tr td.serialNumber { - font-family: Consolas, "Courier New", monospace; - font-weight: bold; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionModified td.action i:before { + color: #1e6dab; + content: "\f040"; } -#deviceImportReview #devices > tbody tr td.model img.modelImage { - width: 32px; - height: 32px; - margin-right: 2px; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionModified td { + background-color: #f4f9fd; } -#deviceImportReview #devices > tbody .error { - font-weight: bold; +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionAdded td.action i:before { + color: #60a917; + content: "\f067"; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr.actionAdded td { + background-color: #e7f9d5; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody tr:not(.actionUnchanged) td.actionUnchanged:nth-child(n+3):not(.headerDeviceSerialNumber) { + color: #cccccc; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.actionError { + color: #e51400; + background-color: #fff1ef; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.actionError span.errorMessage { + display: none; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.actionModified { + background-color: #e2f0fa !important; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerDeviceSerialNumber, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerDeviceDecommissionedDate, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerDeviceDecommissionedReason, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerModelId, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerBatchId, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerProfileId, +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody td.headerAssignedUserId { + white-space: nowrap; +} +#Devices_Import_Review #Devices_Import_Review_TableContainer table > tbody span.smallMessage { + color: inherit; } diff --git a/Disco.Web/ClientSource/Style/Device.less b/Disco.Web/ClientSource/Style/Device.less index 3cbdcc12..4ee6192d 100644 --- a/Disco.Web/ClientSource/Style/Device.less +++ b/Disco.Web/ClientSource/Style/Device.less @@ -357,118 +357,250 @@ } } -#deviceImport { +#Devices_Import { #ImportFile { - width: 100%; + width: 96%; + margin-bottom: 8px; } - #documentation { + #Devices_Import_Documentation { width: 700px; margin: 20px auto; - & > table { - & > thead > tr > th:first-child { - width: 100px; + & > table > tbody th:first-child { + width: 220px; + } + } +} + +#Devices_Import_Completed_Dialog { + padding: 50px 0; + text-align: center; + + h3 { + margin-bottom: 16px; + } + + i { + margin-right: 10px; + color: @StatusSuccess; + } +} + +#Devices_Import_Loading_Dialog { + padding-top: 50px; + text-align: center; + + i { + margin-right: 10px; + color: @StatusInformation; + } +} + +#Devices_Import_Headers { + + #Devices_Import_Headers_TableContainer { + margin: 18px 0; + overflow-x: auto; + border: 1px solid #ccc; + + table { + & > thead { + white-space: nowrap; + + ul.importHeaderType { + & > li > a > span:not(.ui-menu-icon) { + padding-right: 16px; + } + + ul { + z-index: 1000; + } + } + + td.headerIgnoreColumn { + background-color: @StatusAlert; + } + + td:not(.headerIgnoreColumn) { + background-color: @StatusInformation; + } + } + + & > tbody { + td.headerDeviceSerialNumber { + border-top-color: lighten(@StatusInformation, 50%); + border-bottom-color: lighten(@StatusInformation, 50%); + background-color: lighten(@StatusInformation, 54%); + } + + td.headerIgnoreColumn { + max-width: 150px; + white-space: nowrap; + overflow: hidden; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + color: @SubtleBorderColour; + } } } } } -#deviceImportReview { +#Devices_Import_Parsing_Dialog { + padding-top: 50px; + text-align: center; - #errorMessage { - font-weight: bold; - color: red; + i { + margin-right: 10px; + color: @StatusInformation; } +} - #devicesNavigation { +// Icons used within Devices_Import_Review +@import "FontAwesome\variables.less"; + +#Devices_Import_Review { + + #Devices_Import_Review_Navigation { margin-top: 15px; text-align: right; ul { display: inline-block; - padding: 1px; + padding: 0px; border: 1px solid #bbb; li { display: inline-block; - padding: 1px 6px; + padding: 3px 10px; margin: 0; - &.statusError { - background-color: #ffd3d3; + &.actionDetached { + background-color: lighten(@StatusError, 45%); } - &.statusUpdate { - background-color: #d3f3ff; + &.actionModified { + background-color: lighten(@StatusInformation, 54%); } - &.statusNew { - background-color: #d9ffb4; + &.actionAdded { + background-color: lighten(@StatusSuccess, 53%); + } + + &.actionUnchanged { + background-color: @TableDataRowBackgroundColor; } } } } - #devices { - .tableData; - margin-top: 6px; + #Devices_Import_Review_TableContainer { + margin: 18px 0; + overflow-x: auto; + border: 1px solid #ccc; - & > tbody { + table { + & > thead { + white-space: nowrap; - td { - vertical-align: middle; - min-height: 32px; + tr:nth-child(2) th { + padding-top: 0; + font-weight: normal; + font-size: 0.9em; + } } - tr.statusError td { - background-color: #ffd3d3; - } + & > tbody { - tr.statusUpdate td { - background-color: #d3f3ff; - } - - tr.statusNew td { - background-color: #d9ffb4; - } - - tr { td.action { - font-weight: bold; + text-align: center; } - td.serialNumber { - font-family: @FontFamilyMono; - font-weight: bold; - } + tr.actionDetached { + td.action { + i:before { + color: @StatusError; + content: @fa-var-exclamation; + } + } - td.model { - img.modelImage { - width: 32px; - height: 32px; - margin-right: 2px; + td { + background-color: lighten(@StatusError, 50%); } } - td.profile { + tr.actionUnchanged { + td.action { + i:before { + content: @fa-var-minus; + } + } + + td { + background-color: @TableDataRowBackgroundColor; + } + + td:nth-child(n+3) { + color: @SubtleBorderColour; + } } - td.batch { + tr.actionModified { + td.action { + i:before { + color: @StatusInformation; + content: @fa-var-pencil; + } + } + + td { + background-color: lighten(@StatusInformation, 58%); + } } - td.assignedUser { + tr.actionAdded { + td.action { + i:before { + color: @StatusSuccess; + content: @fa-var-plus; + } + } + + td { + background-color: lighten(@StatusSuccess, 53%); + } } - td.location { + tr:not(.actionUnchanged) { + td.actionUnchanged:nth-child(n+3):not(.headerDeviceSerialNumber) { + color: @SubtleBorderColour; + } } - td.assetNumber { - } - } + td.actionError { + color: @StatusError; + background-color: lighten(@StatusError, 52%); - .error { - font-weight: bold; + span.errorMessage { + display: none; + } + } + + td.actionModified { + background-color: lighten(@StatusInformation, 54%) !important; + } + + td.headerDeviceSerialNumber, td.headerDeviceDecommissionedDate, td.headerDeviceDecommissionedReason, + td.headerModelId, td.headerBatchId, td.headerProfileId, + td.headerAssignedUserId { + white-space: nowrap; + } + + span.smallMessage { + color: inherit; + } } } } diff --git a/Disco.Web/ClientSource/Style/Device.min.css b/Disco.Web/ClientSource/Style/Device.min.css index 379ad90f..77cd5f70 100644 --- a/Disco.Web/ClientSource/Style/Device.min.css +++ b/Disco.Web/ClientSource/Style/Device.min.css @@ -1 +1 @@ -.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#layout_PageHeading #Device_Show_Status{margin-left:20px;display:inline-block;height:50px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;font-size:.7em;text-transform:uppercase}#layout_PageHeading #Device_Show_Status span.icon{margin-right:6px}#Device_Show #Device_Show_Subjects{table-layout:fixed}#Device_Show #Device_Show_Subjects>tbody>tr>td{padding-top:0;height:100%}#Device_Show #Device_Show_Subjects>tbody>tr>td>div{position:relative}#Device_Show #Device_Show_Subjects>tbody>tr>td>div div.status{margin-top:2px;padding-top:2px;border-top:1px dashed #ddd}#Device_Show #Device_Show_Subjects>tbody>tr>td>div input.discreet{margin-left:-2px}#Device_Show #Device_Show_Subjects>tbody>tr>td:not(:last-child){border-right:1px dashed #aaa}#Device_Show #Device_Show_Subjects #Device_Show_Details table.verticalHeadings>tbody>tr>td:first-child{width:104px;font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Name{font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Enrolled_Trusted{display:inline-block;height:16px;padding-left:16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACWUlEQVQ4y6XRXWiSURgHcJsXa4WNNuuyiy6CoAupixERoXXhmljuxaJiFrVA1i72cVFCOSMt8rNt2YfGO5g5Z1NstWW+c4ZBq4QpqMkEbZDSCObAMprjdf90sIjxsgUdODd/zvmd5zwPCwDrf/aGB7q6utgmk8ngdruzVqt10eVyTWu1Wuk/AXK5vMpoNPpjsRgGbU8/9fbdH/J4PAuRSARKpfLKhoBYLG595nTCaDSZVjPp6TPbHQ5H0mAwfBeJRHXrAp0dna9JcqCguX2H/Xd+S625aLFYQBDE8XWBd+8/TI6Njc+vzcfGX4nLX4FOp5OuC0wGAlS53NzaPPAm2Gi32+H3+5tYJEl+pigKoVAIPp+PnpqaosPhMF1uHB2Px2mv14vya6VgMKhhHGN3d/dSMplENptFIpHA3NwcCoUCSqUSKqvScZVKBbPZHGQEFApFMZ1OI5PJIBqNrkD5fB40Ta8AlcrUajVsNpufEbh+42YxHEkh+/UbUqlZpGd/lAH8WTMzMzDd64d7NMAMDOobi/OpHqh6rqK9jcCvBQncQzK0Xm5DPn0BJ4lz6GgVIkedYAaamxqK0dEDePl4FziczehTsZGLs7BnNwdiwRac4lejvp6La83VzABv/8FF/qG9oD/WQS/fhNptHEw8rEJiuAo7ubXACAtH9m0Fu2YHxQzweEuEVIYnaiFmvQ04f1aItksi5KaP4ZFGjDB5GG/7j4LL5YYYgZYW2c/yiJbv6h/A0EvC4RjGiOsFnK4J+KgABmyjsDufL0skki8CgYCoXOLz+TWrwG+kXMkgQ6yv+QAAAABJRU5ErkJggg==);background-repeat:no-repeat}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container{padding-top:4px}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container #Device_Show_GenerateDocument{padding:0}#Device_Show #Device_Show_Subjects #Device_Show_Policies table.verticalHeadings>tbody>tr>td:first-child{width:120px;font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Aspects #Device_Show_Aspects_Model_Image{display:block;width:256px;height:256px;margin:0 auto}#Device_Show #Device_Show_Subjects #Device_Show_Subjects_Actions>td{padding-top:4px}#DeviceDetailTabs{margin-top:10px;border-radius:0;background-image:none;background-color:#fff;border:none;padding:0}#DeviceDetailTabs #DeviceDetailTabItems{border-radius:0;border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;border-bottom:none;padding:2px 0 0 4px;background-image:none;background-color:#eee;display:table}#DeviceDetailTabs #DeviceDetailTabItems>li{top:0;border-radius:0;margin:0 5px 0 0;padding:0;line-height:normal;margin-right:4px}#DeviceDetailTabs #DeviceDetailTabItems>li>a{padding:5px 8px}#DeviceDetailTabs div.ui-tabs-panel{border-radius:0;padding:4px;border-right:1px solid #ddd;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-top:none;background-color:#eee}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li,#Device_Show_Policies_Batch_Actions_Update_Dialog ul li{background-color:#fff;padding:2px 0}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li:nth-child(odd),#Device_Show_Policies_Batch_Actions_Update_Dialog ul li:nth-child(odd){background-color:#fcfcfc}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li.selected,#Device_Show_Policies_Batch_Actions_Update_Dialog ul li.selected{background-color:#d8d8d8;font-weight:bold}#DeviceDetailTab-JobsContainer div.jobTable{margin:-1px;border:1px solid #ddd}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_filter{margin-top:-24px;-moz-opacity:1;opacity:1}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_length{margin-top:-24px;-moz-opacity:1;opacity:1}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_showStatusClosed{right:220px;margin-top:-24px}#DeviceDetailTab-DetailsContainer>table{border:solid 1px #f4f4f4;border-collapse:collapse}#DeviceDetailTab-DetailsContainer>table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}#DeviceDetailTab-DetailsContainer>table>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}#DeviceDetailTab-DetailsContainer>table>thead>tr>th,#DeviceDetailTab-DetailsContainer>table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}#DeviceDetailTab-DetailsContainer>table>tbody>tr:hover>td{background-color:#fefefe}#DeviceDetailTab-DetailsContainer>table>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}#DeviceDetailTab-DetailsContainer>table>tfoot>tr>th,#DeviceDetailTab-DetailsContainer>table>tfoot>tr>td{background-color:#f4f4f4}#DeviceDetailTab-DetailsContainer>table>tbody>tr>th{width:150px}#DeviceDetailTab-DetailsContainer>table>tbody>tr>th,#DeviceDetailTab-DetailsContainer>table>tbody>tr>td{padding:10px 6px}#deviceShowResources #Attachments{padding:0;border:1px solid #ccc;background-color:#fff}#deviceShowResources #Attachments div.attachmentOutput{height:115px;overflow:auto;font-size:.95em}#deviceShowResources #Attachments div.attachmentOutput>a{display:block;float:left;height:48px;width:221px;padding:2px;margin:2px;font-size:.9em;border:1px solid #fff;color:#000;text-decoration:none}#deviceShowResources #Attachments div.attachmentOutput>a span.comments,#deviceShowResources #Attachments div.attachmentOutput>a span.author,#deviceShowResources #Attachments div.attachmentOutput>a span.timestamp{display:block;float:left;width:168px;overflow:hidden;height:16px}#deviceShowResources #Attachments div.attachmentOutput>a span.author{color:#888;width:150px}#deviceShowResources #Attachments div.attachmentOutput>a span.timestamp{color:#888;font-style:italic}#deviceShowResources #Attachments div.attachmentOutput>a span.icon{display:block;float:left;height:48px;width:48px;margin-right:2px}#deviceShowResources #Attachments div.attachmentOutput>a span.icon img{height:48px;width:48px}#deviceShowResources #Attachments div.attachmentOutput>a:hover{background-color:#ededed;border:1px solid #ccc}#deviceShowResources #Attachments div.attachmentOutput>a:hover span.remove{opacity:.5}#deviceShowResources #Attachments div.attachmentOutput>a span.remove{font-size:1.4em;color:#e51400;margin-left:6px;cursor:pointer;opacity:0}#deviceShowResources #Attachments div.attachmentOutput>a span.remove:hover{opacity:1}#deviceShowResources #Attachments div.attachmentInput{border-top:1px solid #ccc;height:40px;background-color:#fff;padding:3px}#deviceShowResources #Attachments div.attachmentInput span.action{color:#333;display:block;margin:0 4px 0 0;font-size:1.5em;cursor:pointer;float:right;border:1px solid #fff;padding:.5em}#deviceShowResources #Attachments div.attachmentInput span.action:hover{color:#335a87;background-color:#ededed;border:1px solid #ccc}#Devices_Export .Devices_Export_Type_Target{margin-top:10px;display:none}#Devices_Export #Devices_Export_Fields #Devices_Export_Fields_Defaults{font-size:.75em}#Devices_Export #Devices_Export_Fields th{font-size:1.05em}#Devices_Export #Devices_Export_Fields th span{margin-top:4px;font-size:.8em}#Devices_Export_Download_Dialog{padding-top:20px;text-align:center}#Devices_Export_Download_Dialog h4{margin-bottom:30px}#Devices_Export_Download_Dialog a{margin-bottom:20px}#Devices_Export_Exporting{padding-top:50px;text-align:center}#Devices_Export_Exporting i{margin-right:10px;color:#1e6dab}#deviceImport #ImportFile{width:100%}#deviceImport #documentation{width:700px;margin:20px auto}#deviceImport #documentation>table>thead>tr>th:first-child{width:100px}#deviceImportReview #errorMessage{font-weight:bold;color:red}#deviceImportReview #devicesNavigation{margin-top:15px;text-align:right}#deviceImportReview #devicesNavigation ul{display:inline-block;padding:1px;border:1px solid #bbb}#deviceImportReview #devicesNavigation ul li{display:inline-block;padding:1px 6px;margin:0}#deviceImportReview #devicesNavigation ul li.statusError{background-color:#ffd3d3}#deviceImportReview #devicesNavigation ul li.statusUpdate{background-color:#d3f3ff}#deviceImportReview #devicesNavigation ul li.statusNew{background-color:#d9ffb4}#deviceImportReview #devices{border:solid 1px #f4f4f4;border-collapse:collapse;margin-top:6px}#deviceImportReview #devices>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}#deviceImportReview #devices>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}#deviceImportReview #devices>thead>tr>th,#deviceImportReview #devices>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}#deviceImportReview #devices>tbody>tr:hover>td{background-color:#fefefe}#deviceImportReview #devices>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}#deviceImportReview #devices>tfoot>tr>th,#deviceImportReview #devices>tfoot>tr>td{background-color:#f4f4f4}#deviceImportReview #devices>tbody td{vertical-align:middle;min-height:32px}#deviceImportReview #devices>tbody tr.statusError td{background-color:#ffd3d3}#deviceImportReview #devices>tbody tr.statusUpdate td{background-color:#d3f3ff}#deviceImportReview #devices>tbody tr.statusNew td{background-color:#d9ffb4}#deviceImportReview #devices>tbody tr td.action{font-weight:bold}#deviceImportReview #devices>tbody tr td.serialNumber{font-family:Consolas,"Courier New",monospace;font-weight:bold}#deviceImportReview #devices>tbody tr td.model img.modelImage{width:32px;height:32px;margin-right:2px}#deviceImportReview #devices>tbody .error{font-weight:bold} \ No newline at end of file +.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}#layout_PageHeading #Device_Show_Status{margin-left:20px;display:inline-block;height:50px;font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-weight:lighter;font-stretch:condensed;font-size:.7em;text-transform:uppercase}#layout_PageHeading #Device_Show_Status span.icon{margin-right:6px}#Device_Show #Device_Show_Subjects{table-layout:fixed}#Device_Show #Device_Show_Subjects>tbody>tr>td{padding-top:0;height:100%}#Device_Show #Device_Show_Subjects>tbody>tr>td>div{position:relative}#Device_Show #Device_Show_Subjects>tbody>tr>td>div div.status{margin-top:2px;padding-top:2px;border-top:1px dashed #ddd}#Device_Show #Device_Show_Subjects>tbody>tr>td>div input.discreet{margin-left:-2px}#Device_Show #Device_Show_Subjects>tbody>tr>td:not(:last-child){border-right:1px dashed #aaa}#Device_Show #Device_Show_Subjects #Device_Show_Details table.verticalHeadings>tbody>tr>td:first-child{width:104px;font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Name{font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_Details_Asset_Enrolled_Trusted{display:inline-block;height:16px;padding-left:16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACWUlEQVQ4y6XRXWiSURgHcJsXa4WNNuuyiy6CoAupixERoXXhmljuxaJiFrVA1i72cVFCOSMt8rNt2YfGO5g5Z1NstWW+c4ZBq4QpqMkEbZDSCObAMprjdf90sIjxsgUdODd/zvmd5zwPCwDrf/aGB7q6utgmk8ngdruzVqt10eVyTWu1Wuk/AXK5vMpoNPpjsRgGbU8/9fbdH/J4PAuRSARKpfLKhoBYLG595nTCaDSZVjPp6TPbHQ5H0mAwfBeJRHXrAp0dna9JcqCguX2H/Xd+S625aLFYQBDE8XWBd+8/TI6Njc+vzcfGX4nLX4FOp5OuC0wGAlS53NzaPPAm2Gi32+H3+5tYJEl+pigKoVAIPp+PnpqaosPhMF1uHB2Px2mv14vya6VgMKhhHGN3d/dSMplENptFIpHA3NwcCoUCSqUSKqvScZVKBbPZHGQEFApFMZ1OI5PJIBqNrkD5fB40Ta8AlcrUajVsNpufEbh+42YxHEkh+/UbUqlZpGd/lAH8WTMzMzDd64d7NMAMDOobi/OpHqh6rqK9jcCvBQncQzK0Xm5DPn0BJ4lz6GgVIkedYAaamxqK0dEDePl4FziczehTsZGLs7BnNwdiwRac4lejvp6La83VzABv/8FF/qG9oD/WQS/fhNptHEw8rEJiuAo7ubXACAtH9m0Fu2YHxQzweEuEVIYnaiFmvQ04f1aItksi5KaP4ZFGjDB5GG/7j4LL5YYYgZYW2c/yiJbv6h/A0EvC4RjGiOsFnK4J+KgABmyjsDufL0skki8CgYCoXOLz+TWrwG+kXMkgQ6yv+QAAAABJRU5ErkJggg==);background-repeat:no-repeat}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container{padding-top:4px}#Device_Show #Device_Show_Subjects #Device_Show_Details #Device_Show_GenerateDocument_Container #Device_Show_GenerateDocument{padding:0}#Device_Show #Device_Show_Subjects #Device_Show_Policies table.verticalHeadings>tbody>tr>td:first-child{width:120px;font-weight:bold}#Device_Show #Device_Show_Subjects #Device_Show_Aspects #Device_Show_Aspects_Model_Image{display:block;width:256px;height:256px;margin:0 auto}#Device_Show #Device_Show_Subjects #Device_Show_Subjects_Actions>td{padding-top:4px}#DeviceDetailTabs{margin-top:10px;border-radius:0;background-image:none;background-color:#fff;border:none;padding:0}#DeviceDetailTabs #DeviceDetailTabItems{border-radius:0;border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;border-bottom:none;padding:2px 0 0 4px;background-image:none;background-color:#eee;display:table}#DeviceDetailTabs #DeviceDetailTabItems>li{top:0;border-radius:0;margin:0 5px 0 0;padding:0;line-height:normal;margin-right:4px}#DeviceDetailTabs #DeviceDetailTabItems>li>a{padding:5px 8px}#DeviceDetailTabs div.ui-tabs-panel{border-radius:0;padding:4px;border-right:1px solid #ddd;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-top:none;background-color:#eee}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li,#Device_Show_Policies_Batch_Actions_Update_Dialog ul li{background-color:#fff;padding:2px 0}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li:nth-child(odd),#Device_Show_Policies_Batch_Actions_Update_Dialog ul li:nth-child(odd){background-color:#fcfcfc}#Device_Show_Policies_Profile_Actions_Update_Dialog ul li.selected,#Device_Show_Policies_Batch_Actions_Update_Dialog ul li.selected{background-color:#d8d8d8;font-weight:bold}#DeviceDetailTab-JobsContainer div.jobTable{margin:-1px;border:1px solid #ddd}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_filter{margin-top:-24px;-moz-opacity:1;opacity:1}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_length{margin-top:-24px;-moz-opacity:1;opacity:1}#DeviceDetailTab-JobsContainer .dataTables_wrapper .dataTables_showStatusClosed{right:220px;margin-top:-24px}#DeviceDetailTab-DetailsContainer>table{border:solid 1px #f4f4f4;border-collapse:collapse}#DeviceDetailTab-DetailsContainer>table>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}#DeviceDetailTab-DetailsContainer>table>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}#DeviceDetailTab-DetailsContainer>table>thead>tr>th,#DeviceDetailTab-DetailsContainer>table>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}#DeviceDetailTab-DetailsContainer>table>tbody>tr:hover>td{background-color:#fefefe}#DeviceDetailTab-DetailsContainer>table>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}#DeviceDetailTab-DetailsContainer>table>tfoot>tr>th,#DeviceDetailTab-DetailsContainer>table>tfoot>tr>td{background-color:#f4f4f4}#DeviceDetailTab-DetailsContainer>table>tbody>tr>th{width:150px}#DeviceDetailTab-DetailsContainer>table>tbody>tr>th,#DeviceDetailTab-DetailsContainer>table>tbody>tr>td{padding:10px 6px}#deviceShowResources #Attachments{padding:0;border:1px solid #ccc;background-color:#fff}#deviceShowResources #Attachments div.attachmentOutput{height:115px;overflow:auto;font-size:.95em}#deviceShowResources #Attachments div.attachmentOutput>a{display:block;float:left;height:48px;width:221px;padding:2px;margin:2px;font-size:.9em;border:1px solid #fff;color:#000;text-decoration:none}#deviceShowResources #Attachments div.attachmentOutput>a span.comments,#deviceShowResources #Attachments div.attachmentOutput>a span.author,#deviceShowResources #Attachments div.attachmentOutput>a span.timestamp{display:block;float:left;width:168px;overflow:hidden;height:16px}#deviceShowResources #Attachments div.attachmentOutput>a span.author{color:#888;width:150px}#deviceShowResources #Attachments div.attachmentOutput>a span.timestamp{color:#888;font-style:italic}#deviceShowResources #Attachments div.attachmentOutput>a span.icon{display:block;float:left;height:48px;width:48px;margin-right:2px}#deviceShowResources #Attachments div.attachmentOutput>a span.icon img{height:48px;width:48px}#deviceShowResources #Attachments div.attachmentOutput>a:hover{background-color:#ededed;border:1px solid #ccc}#deviceShowResources #Attachments div.attachmentOutput>a:hover span.remove{opacity:.5}#deviceShowResources #Attachments div.attachmentOutput>a span.remove{font-size:1.4em;color:#e51400;margin-left:6px;cursor:pointer;opacity:0}#deviceShowResources #Attachments div.attachmentOutput>a span.remove:hover{opacity:1}#deviceShowResources #Attachments div.attachmentInput{border-top:1px solid #ccc;height:40px;background-color:#fff;padding:3px}#deviceShowResources #Attachments div.attachmentInput span.action{color:#333;display:block;margin:0 4px 0 0;font-size:1.5em;cursor:pointer;float:right;border:1px solid #fff;padding:.5em}#deviceShowResources #Attachments div.attachmentInput span.action:hover{color:#335a87;background-color:#ededed;border:1px solid #ccc}#Devices_Export .Devices_Export_Type_Target{margin-top:10px;display:none}#Devices_Export #Devices_Export_Fields #Devices_Export_Fields_Defaults{font-size:.75em}#Devices_Export #Devices_Export_Fields th{font-size:1.05em}#Devices_Export #Devices_Export_Fields th span{margin-top:4px;font-size:.8em}#Devices_Export_Download_Dialog{padding-top:20px;text-align:center}#Devices_Export_Download_Dialog h4{margin-bottom:30px}#Devices_Export_Download_Dialog a{margin-bottom:20px}#Devices_Export_Exporting{padding-top:50px;text-align:center}#Devices_Export_Exporting i{margin-right:10px;color:#1e6dab}#Devices_Import #ImportFile{width:96%;margin-bottom:8px}#Devices_Import #Devices_Import_Documentation{width:700px;margin:20px auto}#Devices_Import #Devices_Import_Documentation>table>tbody th:first-child{width:220px}#Devices_Import_Completed_Dialog{padding:50px 0;text-align:center}#Devices_Import_Completed_Dialog h3{margin-bottom:16px}#Devices_Import_Completed_Dialog i{margin-right:10px;color:#60a917}#Devices_Import_Loading_Dialog{padding-top:50px;text-align:center}#Devices_Import_Loading_Dialog i{margin-right:10px;color:#1e6dab}#Devices_Import_Headers #Devices_Import_Headers_TableContainer{margin:18px 0;overflow-x:auto;border:1px solid #ccc}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>thead{white-space:nowrap}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>thead ul.importHeaderType>li>a>span:not(.ui-menu-icon){padding-right:16px}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>thead ul.importHeaderType ul{z-index:1000}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>thead td.headerIgnoreColumn{background-color:#fa6800}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>thead td:not(.headerIgnoreColumn){background-color:#1e6dab}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>tbody td.headerDeviceSerialNumber{border-top-color:#d1e6f7;border-bottom-color:#d1e6f7;background-color:#e2f0fa}#Devices_Import_Headers #Devices_Import_Headers_TableContainer table>tbody td.headerIgnoreColumn{max-width:150px;white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:#ccc}#Devices_Import_Parsing_Dialog{padding-top:50px;text-align:center}#Devices_Import_Parsing_Dialog i{margin-right:10px;color:#1e6dab}#Devices_Import_Review #Devices_Import_Review_Navigation{margin-top:15px;text-align:right}#Devices_Import_Review #Devices_Import_Review_Navigation ul{display:inline-block;padding:0;border:1px solid #bbb}#Devices_Import_Review #Devices_Import_Review_Navigation ul li{display:inline-block;padding:3px 10px;margin:0}#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionDetached{background-color:#ffd0cc}#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionModified{background-color:#e2f0fa}#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionAdded{background-color:#e7f9d5}#Devices_Import_Review #Devices_Import_Review_Navigation ul li.actionUnchanged{background-color:#fcfcfc}#Devices_Import_Review #Devices_Import_Review_TableContainer{margin:18px 0;overflow-x:auto;border:1px solid #ccc}#Devices_Import_Review #Devices_Import_Review_TableContainer table>thead{white-space:nowrap}#Devices_Import_Review #Devices_Import_Review_TableContainer table>thead tr:nth-child(2) th{padding-top:0;font-weight:normal;font-size:.9em}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.action{text-align:center}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionDetached td.action i:before{color:#e51400;content:""}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionDetached td{background-color:#ffe7e5}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionUnchanged td.action i:before{content:""}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionUnchanged td{background-color:#fcfcfc}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionUnchanged td:nth-child(n+3){color:#ccc}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionModified td.action i:before{color:#1e6dab;content:""}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionModified td{background-color:#f4f9fd}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionAdded td.action i:before{color:#60a917;content:""}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr.actionAdded td{background-color:#e7f9d5}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody tr:not(.actionUnchanged) td.actionUnchanged:nth-child(n+3):not(.headerDeviceSerialNumber){color:#ccc}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.actionError{color:#e51400;background-color:#fff1ef}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.actionError span.errorMessage{display:none}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.actionModified{background-color:#e2f0fa!important}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerDeviceSerialNumber,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerDeviceDecommissionedDate,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerDeviceDecommissionedReason,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerModelId,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerBatchId,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerProfileId,#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody td.headerAssignedUserId{white-space:nowrap}#Devices_Import_Review #Devices_Import_Review_TableContainer table>tbody span.smallMessage{color:inherit} \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.css b/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.css new file mode 100644 index 00000000..08eac6a3 --- /dev/null +++ b/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.css @@ -0,0 +1,1499 @@ +/*! jQuery UI - v1.10.3 - 2013-12-22 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=%22Segoe%20UI%22%2C%20Arial%2C%20Verdana%2C%20Tahoma%2C%20sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0px&bgColorHeader=%23cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=%23aaaaaa&fcHeader=%23222222&iconColorHeader=%23222222&bgColorContent=%23ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=%23d3d3d3&fcDefault=%23555555&iconColorDefault=%23888888&bgColorHover=%23dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=%23999999&fcHover=%23212121&iconColorHover=%23454545&bgColorActive=%23ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=%23aaaaaa&fcActive=%23212121&iconColorActive=%23454545&bgColorHighlight=%23fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=%23fcefa1&fcHighlight=%23363636&iconColorHighlight=%232e83ff&bgColorError=%23fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=%23cd0a0a&fcError=%23cd0a0a&iconColorError=%23cd0a0a&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; + /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter: alpha(opacity=0); +} +.ui-front { + z-index: 100; +} +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} +/* Icons +----------------------------------*/ +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} +/* Misc visuals +----------------------------------*/ +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; + /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; + /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -0.3em; +} +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; + /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url(data:image/gif;base64,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) /*images/animated-overlay.gif*/; + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -0.3em; + margin-left: -0.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -0.3em; + margin-left: 0; + margin-bottom: -0.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} +.ui-tabs { + position: relative; + /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: "Segoe UI", Arial, Verdana, Tahoma, sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: "Segoe UI", Arial, Verdana, Tahoma, sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQAAAADcH0/XAAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAASSURBVCjPY/gPAgyj5ChJVRIAypHyHLPbLnsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) /*images/ui-bg_flat_75_ffffff_40x100.png*/ 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABaSURBVBjTY3h8jYFOaAPDo/cMj/QYHuYyPGhjuF/BcC+L4W4swx0NhltfGG7uZ7jRzXA9nOGaEsOV4wyXdzJcamW4WM5wYQLD+SaGcwcZzt5iOOvAcObMACIAsZae6pVZewYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) /*images/ui-bg_highlight-soft_75_cccccc_1x100.png*/ 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3iXxzCKRhHV0bNnDM+NGJ7fYXgxk+FlJsOrOIbXIQxvYhjepjK8i2Z4H8DwwZjhIzPDx7UMn+QYPhmOolFEDAIAjUD2JAAuNW8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) /*images/ui-bg_glass_75_e6e6e6_1x400.png*/ 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3j6n2EUjSKqo1u3GG57MdxxY7gby3BvIsP9PwwPMxgefWB4Us7w9DHDcz+GF/MYXl5ieHWW4XUpw+uJo2gUEYMAvlejJVIWsXwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjQtMDc6MDCCWi1cAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAw8weV4AAAAABJRU5ErkJggg==) /*images/ui-bg_glass_75_dadada_1x400.png*/ 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQAQAAAABHIzd2AAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAARSURBVCjPY2hgGIWjcBTigACVaMgB0zSxaQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0xMC0yMFQxOTo1NTowMi0wNzowMKOvHxsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMTAtMjBUMTk6NTU6MDItMDc6MDDS8qenAAAAAElFTkSuQmCC) /*images/ui-bg_glass_65_ffffff_1x400.png*/ 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAjUlEQVRIx+3PIQoCQRSA4X+eYhBsg4iwowZBGDF7COtWq1kwad37eAPBg3iFFXaL4xvB4hVEw0tf+NNPvummOQsAGIZhGN8G1ZTqmtx99u5e8ARKYciMrTBi7nZCQeQkFCzdUZiwoiJfNDTx08gPPbRTcWMW7HlFvbZJ8ARXCgM8a0Ho0P+LacMwjB/yBjxhJFOI7HkuAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAwglotXAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToyNC0wNzowMPMHleAAAAAASUVORK5CYII=) /*images/ui-bg_glass_55_fbf9ee_1x400.png*/ 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAiklEQVRIx+3PsQ0BYRiH8ef/FhLnXCFWEI3WDkojWMAAltDQi0R9ExiADS5m+D7JHYnuPgWxgVC81a94qoe0eMzuEwMAx3Ec59vQtnUdAsmacZySsmYXK9LwNrqujR5bnY1cpcKHgqOS0debV6NUNHLtuRiZNjoZXVY6GB3mLA0oGPzFtOM4zg95AkctKGSanwlIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjEyLTA3OjAwbwUfhQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToxMi0wNzowMB5YpzkAAAAASUVORK5CYII=) /*images/ui-bg_glass_95_fef1ec_1x400.png*/ 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter: alpha(opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter: alpha(opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter: alpha(opacity=35); + /* For IE8 - See #6059 */ +} +/* Icons +----------------------------------*/ +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_222222_256x240.png*/; +} +.ui-widget-header .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_222222_256x240.png*/; +} +.ui-state-default .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_888888_256x240.png*/; +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_454545_256x240.png*/; +} +.ui-state-active .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_454545_256x240.png*/; +} +.ui-state-highlight .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_2e83ff_256x240.png*/; +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(data:image/png;base64,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) /*images/ui-icons_cd0a0a_256x240.png*/; +} +/* positioning */ +.ui-icon-blank { + background-position: 16px 16px; +} +.ui-icon-carat-1-n { + background-position: 0 0; +} +.ui-icon-carat-1-ne { + background-position: -16px 0; +} +.ui-icon-carat-1-e { + background-position: -32px 0; +} +.ui-icon-carat-1-se { + background-position: -48px 0; +} +.ui-icon-carat-1-s { + background-position: -64px 0; +} +.ui-icon-carat-1-sw { + background-position: -80px 0; +} +.ui-icon-carat-1-w { + background-position: -96px 0; +} +.ui-icon-carat-1-nw { + background-position: -112px 0; +} +.ui-icon-carat-2-n-s { + background-position: -128px 0; +} +.ui-icon-carat-2-e-w { + background-position: -144px 0; +} +.ui-icon-triangle-1-n { + background-position: 0 -16px; +} +.ui-icon-triangle-1-ne { + background-position: -16px -16px; +} +.ui-icon-triangle-1-e { + background-position: -32px -16px; +} +.ui-icon-triangle-1-se { + background-position: -48px -16px; +} +.ui-icon-triangle-1-s { + background-position: -64px -16px; +} +.ui-icon-triangle-1-sw { + background-position: -80px -16px; +} +.ui-icon-triangle-1-w { + background-position: -96px -16px; +} +.ui-icon-triangle-1-nw { + background-position: -112px -16px; +} +.ui-icon-triangle-2-n-s { + background-position: -128px -16px; +} +.ui-icon-triangle-2-e-w { + background-position: -144px -16px; +} +.ui-icon-arrow-1-n { + background-position: 0 -32px; +} +.ui-icon-arrow-1-ne { + background-position: -16px -32px; +} +.ui-icon-arrow-1-e { + background-position: -32px -32px; +} +.ui-icon-arrow-1-se { + background-position: -48px -32px; +} +.ui-icon-arrow-1-s { + background-position: -64px -32px; +} +.ui-icon-arrow-1-sw { + background-position: -80px -32px; +} +.ui-icon-arrow-1-w { + background-position: -96px -32px; +} +.ui-icon-arrow-1-nw { + background-position: -112px -32px; +} +.ui-icon-arrow-2-n-s { + background-position: -128px -32px; +} +.ui-icon-arrow-2-ne-sw { + background-position: -144px -32px; +} +.ui-icon-arrow-2-e-w { + background-position: -160px -32px; +} +.ui-icon-arrow-2-se-nw { + background-position: -176px -32px; +} +.ui-icon-arrowstop-1-n { + background-position: -192px -32px; +} +.ui-icon-arrowstop-1-e { + background-position: -208px -32px; +} +.ui-icon-arrowstop-1-s { + background-position: -224px -32px; +} +.ui-icon-arrowstop-1-w { + background-position: -240px -32px; +} +.ui-icon-arrowthick-1-n { + background-position: 0 -48px; +} +.ui-icon-arrowthick-1-ne { + background-position: -16px -48px; +} +.ui-icon-arrowthick-1-e { + background-position: -32px -48px; +} +.ui-icon-arrowthick-1-se { + background-position: -48px -48px; +} +.ui-icon-arrowthick-1-s { + background-position: -64px -48px; +} +.ui-icon-arrowthick-1-sw { + background-position: -80px -48px; +} +.ui-icon-arrowthick-1-w { + background-position: -96px -48px; +} +.ui-icon-arrowthick-1-nw { + background-position: -112px -48px; +} +.ui-icon-arrowthick-2-n-s { + background-position: -128px -48px; +} +.ui-icon-arrowthick-2-ne-sw { + background-position: -144px -48px; +} +.ui-icon-arrowthick-2-e-w { + background-position: -160px -48px; +} +.ui-icon-arrowthick-2-se-nw { + background-position: -176px -48px; +} +.ui-icon-arrowthickstop-1-n { + background-position: -192px -48px; +} +.ui-icon-arrowthickstop-1-e { + background-position: -208px -48px; +} +.ui-icon-arrowthickstop-1-s { + background-position: -224px -48px; +} +.ui-icon-arrowthickstop-1-w { + background-position: -240px -48px; +} +.ui-icon-arrowreturnthick-1-w { + background-position: 0 -64px; +} +.ui-icon-arrowreturnthick-1-n { + background-position: -16px -64px; +} +.ui-icon-arrowreturnthick-1-e { + background-position: -32px -64px; +} +.ui-icon-arrowreturnthick-1-s { + background-position: -48px -64px; +} +.ui-icon-arrowreturn-1-w { + background-position: -64px -64px; +} +.ui-icon-arrowreturn-1-n { + background-position: -80px -64px; +} +.ui-icon-arrowreturn-1-e { + background-position: -96px -64px; +} +.ui-icon-arrowreturn-1-s { + background-position: -112px -64px; +} +.ui-icon-arrowrefresh-1-w { + background-position: -128px -64px; +} +.ui-icon-arrowrefresh-1-n { + background-position: -144px -64px; +} +.ui-icon-arrowrefresh-1-e { + background-position: -160px -64px; +} +.ui-icon-arrowrefresh-1-s { + background-position: -176px -64px; +} +.ui-icon-arrow-4 { + background-position: 0 -80px; +} +.ui-icon-arrow-4-diag { + background-position: -16px -80px; +} +.ui-icon-extlink { + background-position: -32px -80px; +} +.ui-icon-newwin { + background-position: -48px -80px; +} +.ui-icon-refresh { + background-position: -64px -80px; +} +.ui-icon-shuffle { + background-position: -80px -80px; +} +.ui-icon-transfer-e-w { + background-position: -96px -80px; +} +.ui-icon-transferthick-e-w { + background-position: -112px -80px; +} +.ui-icon-folder-collapsed { + background-position: 0 -96px; +} +.ui-icon-folder-open { + background-position: -16px -96px; +} +.ui-icon-document { + background-position: -32px -96px; +} +.ui-icon-document-b { + background-position: -48px -96px; +} +.ui-icon-note { + background-position: -64px -96px; +} +.ui-icon-mail-closed { + background-position: -80px -96px; +} +.ui-icon-mail-open { + background-position: -96px -96px; +} +.ui-icon-suitcase { + background-position: -112px -96px; +} +.ui-icon-comment { + background-position: -128px -96px; +} +.ui-icon-person { + background-position: -144px -96px; +} +.ui-icon-print { + background-position: -160px -96px; +} +.ui-icon-trash { + background-position: -176px -96px; +} +.ui-icon-locked { + background-position: -192px -96px; +} +.ui-icon-unlocked { + background-position: -208px -96px; +} +.ui-icon-bookmark { + background-position: -224px -96px; +} +.ui-icon-tag { + background-position: -240px -96px; +} +.ui-icon-home { + background-position: 0 -112px; +} +.ui-icon-flag { + background-position: -16px -112px; +} +.ui-icon-calendar { + background-position: -32px -112px; +} +.ui-icon-cart { + background-position: -48px -112px; +} +.ui-icon-pencil { + background-position: -64px -112px; +} +.ui-icon-clock { + background-position: -80px -112px; +} +.ui-icon-disk { + background-position: -96px -112px; +} +.ui-icon-calculator { + background-position: -112px -112px; +} +.ui-icon-zoomin { + background-position: -128px -112px; +} +.ui-icon-zoomout { + background-position: -144px -112px; +} +.ui-icon-search { + background-position: -160px -112px; +} +.ui-icon-wrench { + background-position: -176px -112px; +} +.ui-icon-gear { + background-position: -192px -112px; +} +.ui-icon-heart { + background-position: -208px -112px; +} +.ui-icon-star { + background-position: -224px -112px; +} +.ui-icon-link { + background-position: -240px -112px; +} +.ui-icon-cancel { + background-position: 0 -128px; +} +.ui-icon-plus { + background-position: -16px -128px; +} +.ui-icon-plusthick { + background-position: -32px -128px; +} +.ui-icon-minus { + background-position: -48px -128px; +} +.ui-icon-minusthick { + background-position: -64px -128px; +} +.ui-icon-close { + background-position: -80px -128px; +} +.ui-icon-closethick { + background-position: -96px -128px; +} +.ui-icon-key { + background-position: -112px -128px; +} +.ui-icon-lightbulb { + background-position: -128px -128px; +} +.ui-icon-scissors { + background-position: -144px -128px; +} +.ui-icon-clipboard { + background-position: -160px -128px; +} +.ui-icon-copy { + background-position: -176px -128px; +} +.ui-icon-contact { + background-position: -192px -128px; +} +.ui-icon-image { + background-position: -208px -128px; +} +.ui-icon-video { + background-position: -224px -128px; +} +.ui-icon-script { + background-position: -240px -128px; +} +.ui-icon-alert { + background-position: 0 -144px; +} +.ui-icon-info { + background-position: -16px -144px; +} +.ui-icon-notice { + background-position: -32px -144px; +} +.ui-icon-help { + background-position: -48px -144px; +} +.ui-icon-check { + background-position: -64px -144px; +} +.ui-icon-bullet { + background-position: -80px -144px; +} +.ui-icon-radio-on { + background-position: -96px -144px; +} +.ui-icon-radio-off { + background-position: -112px -144px; +} +.ui-icon-pin-w { + background-position: -128px -144px; +} +.ui-icon-pin-s { + background-position: -144px -144px; +} +.ui-icon-play { + background-position: 0 -160px; +} +.ui-icon-pause { + background-position: -16px -160px; +} +.ui-icon-seek-next { + background-position: -32px -160px; +} +.ui-icon-seek-prev { + background-position: -48px -160px; +} +.ui-icon-seek-end { + background-position: -64px -160px; +} +.ui-icon-seek-start { + background-position: -80px -160px; +} +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { + background-position: -80px -160px; +} +.ui-icon-stop { + background-position: -96px -160px; +} +.ui-icon-eject { + background-position: -112px -160px; +} +.ui-icon-volume-off { + background-position: -128px -160px; +} +.ui-icon-volume-on { + background-position: -144px -160px; +} +.ui-icon-power { + background-position: 0 -176px; +} +.ui-icon-signal-diag { + background-position: -16px -176px; +} +.ui-icon-signal { + background-position: -32px -176px; +} +.ui-icon-battery-0 { + background-position: -48px -176px; +} +.ui-icon-battery-1 { + background-position: -64px -176px; +} +.ui-icon-battery-2 { + background-position: -80px -176px; +} +.ui-icon-battery-3 { + background-position: -96px -176px; +} +.ui-icon-circle-plus { + background-position: 0 -192px; +} +.ui-icon-circle-minus { + background-position: -16px -192px; +} +.ui-icon-circle-close { + background-position: -32px -192px; +} +.ui-icon-circle-triangle-e { + background-position: -48px -192px; +} +.ui-icon-circle-triangle-s { + background-position: -64px -192px; +} +.ui-icon-circle-triangle-w { + background-position: -80px -192px; +} +.ui-icon-circle-triangle-n { + background-position: -96px -192px; +} +.ui-icon-circle-arrow-e { + background-position: -112px -192px; +} +.ui-icon-circle-arrow-s { + background-position: -128px -192px; +} +.ui-icon-circle-arrow-w { + background-position: -144px -192px; +} +.ui-icon-circle-arrow-n { + background-position: -160px -192px; +} +.ui-icon-circle-zoomin { + background-position: -176px -192px; +} +.ui-icon-circle-zoomout { + background-position: -192px -192px; +} +.ui-icon-circle-check { + background-position: -208px -192px; +} +.ui-icon-circlesmall-plus { + background-position: 0 -208px; +} +.ui-icon-circlesmall-minus { + background-position: -16px -208px; +} +.ui-icon-circlesmall-close { + background-position: -32px -208px; +} +.ui-icon-squaresmall-plus { + background-position: -48px -208px; +} +.ui-icon-squaresmall-minus { + background-position: -64px -208px; +} +.ui-icon-squaresmall-close { + background-position: -80px -208px; +} +.ui-icon-grip-dotted-vertical { + background-position: 0 -224px; +} +.ui-icon-grip-dotted-horizontal { + background-position: -16px -224px; +} +.ui-icon-grip-solid-vertical { + background-position: -32px -224px; +} +.ui-icon-grip-solid-horizontal { + background-position: -48px -224px; +} +.ui-icon-gripsmall-diagonal-se { + background-position: -64px -224px; +} +.ui-icon-grip-diagonal-se { + background-position: -80px -224px; +} +/* Misc visuals +----------------------------------*/ +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 0px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 0px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 0px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 0px; +} +/* Overlays */ +.ui-widget-overlay { + background: #666666; + opacity: .5; + filter: alpha(opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa; + opacity: .3; + filter: alpha(opacity=30); + border-radius: 8px; +} diff --git a/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.min.css b/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.min.css new file mode 100644 index 00000000..66438959 --- /dev/null +++ b/Disco.Web/ClientSource/Style/jQueryUI/jquery-ui.min.css @@ -0,0 +1 @@ +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:alpha(opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(data:image/gif;base64,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);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:"Segoe UI",Arial,Verdana,Tahoma,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQAAAADcH0/XAAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAASSURBVCjPY/gPAgyj5ChJVRIAypHyHLPbLnsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkEAAAAAAy19n/AAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABaSURBVBjTY3h8jYFOaAPDo/cMj/QYHuYyPGhjuF/BcC+L4W4swx0NhltfGG7uZ7jRzXA9nOGaEsOV4wyXdzJcamW4WM5wYQLD+SaGcwcZzt5iOOvAcObMACIAsZae6pVZewYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3iXxzCKRhHV0bNnDM+NGJ7fYXgxk+FlJsOrOIbXIQxvYhjepjK8i2Z4H8DwwZjhIzPDx7UMn+QYPhmOolFEDAIAjUD2JAAuNW8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjMtMDc6MDBH/RPSAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjIzLTA3OjAwNqCrbgAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAAAAAAao4lEAAAAAmJLR0T//xSrMc0AAAAJcEhZcwAAAEgAAABIAEbJaz4AAABISURBVDjLY3j6n2EUjSKqo1u3GG57MdxxY7gby3BvIsP9PwwPMxgefWB4Us7w9DHDcz+GF/MYXl5ieHWW4XUpw+uJo2gUEYMAvlejJVIWsXwAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTMtMTAtMjBUMTk6NTU6MjQtMDc6MDCCWi1cAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAw8weV4AAAAABJRU5ErkJggg==) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQAQAAAABHIzd2AAAAAmJLR0QAAd2KE6QAAAAJcEhZcwAAAEgAAABIAEbJaz4AAAARSURBVCjPY2hgGIWjcBTigACVaMgB0zSxaQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0xMC0yMFQxOTo1NTowMi0wNzowMKOvHxsAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMTAtMjBUMTk6NTU6MDItMDc6MDDS8qenAAAAAElFTkSuQmCC) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAjUlEQVRIx+3PIQoCQRSA4X+eYhBsg4iwowZBGDF7COtWq1kwad37eAPBg3iFFXaL4xvB4hVEw0tf+NNPvummOQsAGIZhGN8G1ZTqmtx99u5e8ARKYciMrTBi7nZCQeQkFCzdUZiwoiJfNDTx08gPPbRTcWMW7HlFvbZJ8ARXCgM8a0Ho0P+LacMwjB/yBjxhJFOI7HkuAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjI0LTA3OjAwglotXAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToyNC0wNzowMPMHleAAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAGQEAIAAACwqkHPAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAiklEQVRIx+3PsQ0BYRiH8ef/FhLnXCFWEI3WDkojWMAAltDQi0R9ExiADS5m+D7JHYnuPgWxgVC81a94qoe0eMzuEwMAx3Ec59vQtnUdAsmacZySsmYXK9LwNrqujR5bnY1cpcKHgqOS0debV6NUNHLtuRiZNjoZXVY6GB3mLA0oGPzFtOM4zg95AkctKGSanwlIAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDEzLTEwLTIwVDE5OjU1OjEyLTA3OjAwbwUfhQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMy0xMC0yMFQxOTo1NToxMi0wNzowMB5YpzkAAAAASUVORK5CYII=) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:alpha(opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(data:image/png;base64,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)}.ui-widget-header .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAQAAABFnnJAAAAAAmJLR0QAIn/tYtYAAAAJcEhZcwAAAEgAAABIAEbJaz4AABonSURBVHja7Z17aGXHfcc/Z70br7y2e5W0MRIp3gep+6DsXUsmcXHxVds0awdiaUuaUihItpEaQu3EUChJwXZK6F+x3QTTrklW20ACbkKkNWmyTh+SsWkTR/JqcesmDX5BI1Ga9qruH3JYJ6d/nNfMOfM659yre6Uz30V77z2/ec9vfjNnfr/5TXAcjybjwKAL4DFYeAZoODwDyBgjZGzQhdhNeAYQMcYmsNkkFug1Awx+/IwRVo65CYyjY4Ek5cHXsYeQGcAsAMP0nwm28aOPH8a5j2nD2PJOOrFaDaLu34pZwJTyPpIRIgP0QgCO10ghiZuMw/KoExcCAraALQICQ8p16jh0CNJ9gKSKyTjQIYRC84iI0gkqxU9GmS5/W95hzbK7pmyr4x5CJgHMAtAVpjFonz6i3E1daE6l3tg0TUFiyvXkzJAhKL0TaB5FpjGYNWrVsWNPwTw2zWU3y8AsZZuc2VMozwBmhANvmjE2KzOYeQpKUh58HXuIXjPAXscYm/upe+04OOgCDBm29sfSzh1+J7Dh8AzQcHgGaDg8AzQcngEaDs8ADYdngIbD2wPk4w66/LuMMvYAbhYBNmXMmNEewJyDvXvq2APY1eFR2fcVk5SzB3DTgJmbUN9B45rvrmnbut+W+mbuU5/6vrEGKNoDRNDvhiehTPo2Pd0W28UewFQ6c+72+GaEcdrJ576AbA+g+i5jy0kKqMPYx6eLPYBp/LmVTc8+odXaoExOewJVtIEmheuw2wOYmMsmf5Kae3WwAYNvnLr2AIMu/y7D2wM0HH4jqOHwDNBweAZoODwDNByeARoOzwANh2eAhsObhecRDnCXv/5eaenyH6wXvS+NMMgShNYSVFcF2WMOoObyFBCCUdfv4h8grEApi6p52MofdX1gTMXOHFVju9XAJVSJuAekALbqBw4V0McPHBrIpQqhQdnjUr7AQJM/y+WRUOwtYK6hmYFCS2ywDWKp/OIU4Fp9nbWOvZGCHgj40KiJtM2idUoQprEDJVXMXZVLMrz0ZQgNdHPaWe3Mw0AsZQBlF4Ghw+ixhXLhzmpj3K1zA4fUTR3kkm7VFjANQZe07W1QoJd5DcxEnEsoNc0sAu0cbE7DJmLdRLRtBNlyd1lEVoWdxe10qQRlJICb6Ky3yg0cpUy/yhgYBaxbuoFDmKowT9PmCVAZ96Am0OAw6BLs5fwrxPU7gQ2HZ4CGwzNAw+EZoOHwDNBweAZoODwDNBzy4dDEWergYPcH3k+4tICLRrRaPNvZaNdcSiFjgORglIu792oN0DtUS8tWcrcWMLmazbRxY6VjR3rK5J++DmOVWyDMlRJQHw41H+F00WiPKZ71jgV0abm5htCX360FdHmM5Y7XjpWKndXAJoHqHU0vHNCVj4a5uFO3HcHWHRB1s6Sxl0CXjt2Fu73kbg7p1RqDYtcGObrtYHnWOarziaGUsllhrFNYB8UwZRnAvQGCEnHdSmBuQpf87Wf79fnbYtsYwN4G5g60M4CZgTQMUO4tIGuAKiqLQEhDnXoofZryr4Ks3FXXEKbcx2NqMoOrPQiY8k9iqtcAtpQz3w2m8835Upa0BzA1gLyAMVXfXDhTFU1piFWzm32pusDOgKYabOUcSGyVTsENpu7dSq+9cSslZacAN3Oq0OoiwjwL1ont1rzqerjNwfVN2kzpVL/Uxr4GUML7BxAxZr0xad/BHwwR0bjbAvxWcOPhGaDh8AzQcHgGaDg8AzQcngF6jUGqsysgbw9gg0lf5VL1sZr67n6jfukCy2b3kNW9aA9ggklj7rJLmGjsxh0OmOpR93CV+Xh4YD3+au9gXXxT6gNCthMoFsvu7be42Sgejax2+7frRjOYNHa22IE2nPhUp+00HR4NnajuNd0VqNcAOqMDs74qmxqqGC1EI8duNqX3YRDiqusLSjxV5avK336yeSiRMYCsKCx/gXx0wXrSfeXjB2S6vGoHqLMwdV1QVMvXLUQdHx99QMYAoqKwCg/bbhKwK1vrzo6BIEHUEkL+VIXozShW5SBLj6GRE+IUkKlCVAI8EvCRuZcaW0Z7ABdtv909hBmZLYDapMLc9NkkpPcukoQMSlLFEFUNavoCtTpYt4wBF2WpbhHYC2Wrm9Vi1YWmyyISQwn24GUy3h5AxtCI5t2C3wmU0bDu9wzQeHgGaDg8AzQcngEaDs8ADcfwMUBrWDZJm4E8A7jpsk0qm9CJqgvRorsrr2KD9oMwNCjnLt5NFTNaozxdEiZpGcNVdVmfYR/dAF4HMgOYd6nNu93JqG7RVbJAmG6Uqs/uRaJ/NA3R1cRPvlVzqi5Kn/Iay32IjAFkd+9FZPpwncv0gCDu/m1lXmbRHon+bUYNZ2eT3NX5yxYF+VTc3Ec0DsnRsKzJzB6vbZqspPurz+PbTq6c1af/9U7VE2O2jL6ProCvg4QBkqY1mUyBeGmCGvWvRNHJDzn3fBnkixCKJdyU8g5o2BFQPbLDoWKT6R2M2G+9cL1WQkePWCAsrCMSRbDaK79cnl65lW8AyrwFZE2ss8mzXclkoo+m1C4QFORAIOSumojM9kSy+wiPFGXeAsxGVTYnZzbfHdsp1eU1MnB8lsBmsNZYuF8YYZsiegPzGqAOGnj23wXD5iDCd9IuY/h0AR67Cs8ADYdngIbDM0DDsZ8YYCLdaZjoS/oHORz/G7alcw1EDDAdN9wK05VT+pRF029DyFnJWqBsJ06wln5fU8aeqMUeB3mLm9hhh5t4S8kCE9bSH4+pusMYerotJnwo98+cQ9pL0cGQkAe4BLRYEgJnr2TT6fMZljVJZ+fqFjhrOFlUTD3CLC8KXQhznJcady0XfpL1EnS5hKrSHedl6fcJXpF+H+YmNhgBdmjzfd7UtoA6Dxdn0vqbP22XYkchspa31THdOk84+RIAq5pduCUFg6wyhQ4LmgKMpN92CrRFnkCPNSLHEhE2CVmTclhjUmKByRzdjpeF0kUlzMffYIQjwETMCLpywqSC4lqaOpfPmyGyeJpSwgAb8adohiEW+RLwfXaM27SH48+z2hCHDLHneJF5A31GckExI8kqgHWBBVSjP38+t9ghh3gj/X69sgxHuJ6AawylvNNAM0tAszo+UKRSjsGT7v9N/kF8nM1lXUsC32enEEYuQsQAo4bUdOMGbBIAnk9ZIGSG5xUhEhYodn+EVu6zWLobjCVt8yPuAL5JWxl/HVIWUpdgMpZUk4UJq99Iuv93GZFZwHU9q+r+YgOCWVBFY+dVJc0mARIWQNP9xLmjXeSdyH3mcZjX4283KqhHuEybDaDNZd5RWAPkNalVj5naBb0txO/z5cKzqPsXOAJ8HSCZwN1fA4vdn6/gNVzDNYxwjVZIXs3VXA2oRtiipfthjOeZYYbnNeacE2wxzTRbFdf5I/xi/G+kUL4x3kXIG7Rpc4CQdxlNSic1nX9U+NPhMDbYQnxJ8Sxi+rO8jb8BYIrViFD9jbZYxRFrnO8ZQtokwBhbEI/9LUXzT0h0FQv8fO4z30TRKGkTrYhkOfFONkB4L9igbbAoqiPgd2qGUNt0vBLXL1qfpd1vYgBxJVsUOsXu/zNelH4VYRaJ5jXApOI1rwwd4J25z3wTReuLg6wVXgGzRbL4JL9Msy3y4KvCXxFzLArfq4XQ45WUxYXuHyYHERPArwq/X9QspPqLEBTd38vUIwxG7X2cl+XuHyYG8BgI9pMuwKMCPAM0HJ4BGg7PAA2HZ4D9hU/z6XIRZAZoORzM1sPl5k03TCg16pOCLrv4lj9NKP2bztHnc3TVppOoLT/eBzrAn1vap0Oncrtdxyf4BNdZQs0yy2zyQ3wNbNFlElhT2OavcEe8A/UwSxxjSaGxfoJ1zgILTDAv0ct50Ex0+3L4Sb4bP41SuyW39RPpwxOcLcR31ce3gWjjp/f0JEwAzEr2DgAdVhilC4zSzb+v06ILLPAE85wF5fmJZ7kNeI5fN7TubLyZNMcqr4kMEHV/pE0rskDIeO48fdnbw6PzhB/lcT7K4zzAI5oGmmCdaZYKOj3x6KcqB5fr27/Ne7nEKf6JX9P4OGhzmZCAk4WdvowOGOivcIVDHFfSk+afAxZLtmBCXUjV7SJ9vqCEX1DurE6zxBzLdBODG1EdnGynrjFZyVGLaCug1hzeyiY/4N94nRc1OsEJ1phhWavSrYO/5z1cpM1FbuUftaGivfS2kS7vWcq4orAVSpCMvkUldVRqNZ3lhdra4kaHJwD3A6Px9NhiO1sDnJV209eYNJh16LDNNl26bGsPd/0zv8O3mOXrLBQMOiDp/iUm+rIN/Ft8ldN8g9N8WWm4cRNgOh+Z0AMCrtLSD3FYY/gyK3V8fi+/E3d/cnqyW2ot8Ek+I/3+DJ8shDnKUTrAIywyx/mol8Q1QAjxGkAlwO1TQEA2w4VK+nvZ5Da+w3v4Du8paK2T7lePfnEfXbWmiBzMdAWDlDz9K3yIJ/kwT/JhvsYZjQuJNqCawzP6VfzESFfHz+beCM/mbBA7rKS1iuonrwJaOalaXAOYbw/P2E+i5bWB+pHXZYZljsaiW28PqMNkYY6TGcDc/XJFbSYR28qnf8wR7uMG7uMa/pQzEm2cH8bfNuLPEz2lZ91/XlPm1XgKSGqW7+BtaYoodn8LgOeA24jFey7/aO5flaPlJYA4ivONbkYUohU3f3l7mKji+u5P3gISqN4CRlMXNcU6mBeJycz+L8bS1aEHhIbuV5VQ5UgrYgHVG8D7uMhHeAKY5y85zd9J1FkWeYAui/m4mQQQTRKrdOCCVIEFZRjblSym0b/GLQIL3FLQ/5/gZbpky88TCrr8Ow+b05g69Dlr98NU7jWwiG2BxfO4wu/xFQCeoMsVRYhHgLl8XFd18Mn49cej3+hAXkz3BLMARRb09gANh9cFNByeARoOzwANh2eAhqN5DBCpjTsKSidV5d7kkI5O17fHPBKLDHAybYCTldOr7h+gLlqEnIu/n9NaNTwU6yBWCizwG6xwhjO8m3fzPX6pEDNqnY/Hv8SbjiOc4gOE3MqthHyAU4X4ZvcVeWuGvD1DkW4LMV3IQ6YnFUlfA0+ywSp/ASzSStWexURcXEn2x+p9lkXaXOYkG4pNlSjnRe7mXLzfrt8PP8arFHcKj6Tf3+LHir3QRZ5iiTaX43TkvXq7OjzR73WVimTz3muo0A52cyGC1FBmTeHKN2RUiJGqszMJsMEqUyzzQVpsK07CDB6LwAazbKBSqCZ77Un3q1SuR+NPtSr6TX7MDjv8mLeU9KdYBkZTnf5q6RqcoJteiVGUA4kdlE6GbjMX61rV+tYwTmUCtFL4XYwzzjj/lTzIJEDIDMucYy7mdLM9iy57EWXkgO6GAhEnBbZUSahzgop1kbsL9Lw+LT9CssFwjJcLuT/KxwBYpQNKCSSeeNxRSgB9/iEjscXViDKFSAJ0IVbJvVa4XCeRABPAWaUz75A2B4CfAunRNlkbGHX/3UpPQWHuWzVlj675XXA5PRs3p5yg7oZ09Ku7X7R5yO+1P8lPU/3AyzxWiP9xLpCsHdS7+oeUO/CuOJJ+/gj4WUWIjwGwxAxLHFPIgJDsWGpxQE0A/w38lAP8HC/wcPRYlADbtOKmW6FTweQLYwg3gydTDjYJ8EX+IP2et4uTu1/VgSe5X/j1KV4z5K5isGiM/gSAK1oJoPMiFHJMeh7yWkECiPIj0u2VWwPcDPwnAD/MWjcTe21abPMU06zQUZhEZStetc9v8akqRJD7Z6aqctiIOy/7LiLp/khG3MazEjXp/ilGCZTj9zKfYy7+V+x+2GCRB4CHiVYaRWyzzf/xNq5SnuCftDjYuJZreZVruS7+3wzV2WDbGuBGDnADN3ADcHMSIpsCIv8X0UtSeyh1f3PxW8AlNhQNEHX/c9zNu7mNyCxCRNT9q4b0L7HIt4FfUHQ/wBdZ5RFWeYwuc6CQAhCJWRXWBTOW44XzxzPx4frs/5lciFYqI5LfeYhmMmqTGYVnhLLawEG+BprRopsK/me5Lac1j8zd7LZGaMsfLTG3OcZ2vJw8kHMJA/fwEq+zpW2lkCA9L5BfZh7mV1iLTfIm+decaem0woZSdtmXD1F06Kf0X+DVwSLewcPAg5pRPMsoizFbtfhffqbAYiJUDCB6M+yH3XMFeAZoOJqnC/CQ4Bmg4fAM0HDkGWBa6y/8Ts6nmqTzRpeoHnsI8iJwiWlgufAOCn/EZ3NP7uNzgy68R32IEuB0PPqnOZ0LdWfa/dkO3WeVUmCN0OAm8dVYgnSs5bKH2H2sCdr03fb12zeIDLAAjDJK8VjHGWVc1dMJMDhqPRp/rlhK1VEYbMBs3Piz2ni2EDZ6KFw1UeziSc33PY1sCjjNN8mOht3BRalhNLELT+w7gS3FwU0ZyTFJeeN2VvKSeV4RzxZilkVO8wy3c1GTgptDd1sN9xQyCRCN+la8x7ygCW+7eXfBEDdKv4v65Esn/VR1v2zgoT5fH5lpjMbuF1T00zzNmzzNaU0KwHDsz+0eEgboxPN/N9ZZTVechf89/tOhC2woFpmJ0Nd1vyuW2dZeagPP5D4zuNgyTgDrrLMOfbqWagBIpgBRDVJUiciir44gjM7wbueeZt2u7367K+YQmGOZaRZRC/DTPA3A+7moTWE97dx8CPEqqvX9sgqIJEAn/d0S1IzZ08eVcVVPO5Y1fkCgsGVJ7h8yjf45zXf56SLd1AtPkX6R93OY93PR4Gt7womyzySAbZH3Pr6loP527gx6lpJeMujVyXbhb3eyYAtho4essxCvAtY0Y7zqTSBDiogB1PfsiWLuHj6fo97LFxRxOqwY52+TPYEt7nBgXzKAC25nOjZLhMdYViykmoHGMoDHvoTXBjYcngEaDs8ADYdngIbDM0DD4Rkgj47Fm/8ecwBhg8gAoVILjxSiV1dCDApnLU6wO0ZbhY7VkmHPQZYAHVasTKBGxjwtbQodVmJNQ4eVAgvJ7DevoM9LKalYsOD/olCCeeYN9XPvfherpj2BvK/gCKs8rNyS1XsTDqV4Ifk9/ajxAqDDg3HjmVKY52yBHl2BoIsv18DswyAw0GwpJ9R9siOoXgN0WLHe5a2Ll3S0OEZD4alZwiQp6FBVQkWlKH6rm9Keh5oBVpkyXuWswypTTJFIgGyEBMJTs7onSUEHW/zdwb4Y+xGKDLBasZGTeC1WmCLIpbBKwBQrtAzpu+VctXyyDwI1dcoYV6SGFW5MGErIawDd3J+F0N8oMPwwz/IRsrVKeeqehNcG5tFhxdDFZuoehGeAhsPvBDYcngEaDs8ADYdngIbDM0DDkWcA09lbj32IjAFasavUG7lR42s/0rM9pKF67EkkDNCimzqHOUZX2cltpniMB+k6XCiRV5fM564rmN9luocGyUbQOeb4LPcT8hAPEyrdIUdosUTH6ky26Ko4/1t2lNhvuocGEQO06LLBKeBBnmGVS7Q1t1Mv8ileY4WO5gLTKJzKV/VI7E79EFc4VPCnHXI9b3C94HBdTX9D608/ou3EfyqP/R4KRM6iTwAXAGIv8hdoc6IwgtqcYpE5jjFDlzkeLZXT29Nv6tu/r43/1JfPw3Xx39tR6+OvBUZj+qjvfFfkJUAEtQRIQq4yxTnmtO6Q1RLgl6XfLxVEeH/pHhpEEmCbVTrMxoemZ2mzqrmRImCGJY7ylOGEvQoLvJT7vb6rdA8NkkVgdB/GBhe4izbqGwMya4ApUKhFxdG/Tyzm9j/Ea+Meil8El3loKC+M8OgDvD1Aw+F1AQ2HZ4CGwzNAw+EZoOHIGMB2H0Bd+u08mtIf5fZdp/e7foOmV0TyFmC7D6Au3eZmrt/0ftdv0PTKiBjgTv5WQfsA34i/1aXbHE32m97v+g2aXgPRFJB5/hePTZ1RfBORp9+bXi17b45+l5A+iqd3qZLX0IMK8c8o46vqZ6u/WP7y8delg2m6+Ca6WAp1r5RE3lWs2hm0zZVs5iD2HuAL0pPepe8S356+yh22a/wA9QGzsMTvUEilSP9DAP5K237J01O8QE8OqYkMIOvXiwWw0ZN5N5uP1Q2sayB7+oEyNdcOsKdvZoD67ROkz6vRb+YFoft7wgAH6ych4CfC/+URWiWCGeJx9CopBMJnlfihQ1ybmuwjBtrNXJK6vyfo9RQwC5yn+hRQX8Try1dMoZoIN6XvJkFsEkqX/81ckrq/BxIgWgTa7gNwo98DLLIYfxPp4gtZqHj6BYFqo2Oko6TL5Q8LTx+XKDZ61fZJ6hdWpr8gdb8615KIGOCCVIAEFxTfROTpn08b8PM5+teE9FE8/ZoqeQ09rBD/gjK+qn62+ovlLxs/77yqLB2QhL+6V0riqlGAV/gPPpij3MtX0+916T/gf7gjR7+PL+0avd/1GzS9BiIGgEusss1746eP8ScsSeHq0p/nu7xFO/7113xS6J7doPe7foOmV4Y3CGk4vDaw4fAM0HB4Bmg4PAM0HJ4BGg7PAA2HqAxyvzx9OOkeFSBrA0fSbzvK0HXpHkOH4hRQr+t2rCnUG7lB7RQ8JOQZwNaBO+wY6Yl7Bh1sHajz5Z0grKjr99AgzwAjYOzAEUaM9MhDhx4hZoMJ04UvYDeo8CiJ4hQwUiEVObY5hXrj18ZAHiUhLwJt839dusfQQWQAm2gddrpHBfiNoIbDM0DD4Rmg4fAM0HB4Bmg4PAM0HHuXAcb8hlAvIDNA/X22kAlCJvpe7jE2Ge97Lg2AzADj8d+gYRvdUfdvDbqY+wEyA2zGf4OFbXT77u8hXCVAyFjhrxzCwj81ou7Vs2HS/X4N0BPIyqBNAjY1d2sX/8ph0ilU0v3jRvqWXwP0CjIDmCTAeNo1yV85IbxWeFJkojEhfRWLyd3vJ4EeYJgkgO/+AcBVAtSH/QKHct0/pgnnUQquEmA3YJIuqu73a4AeoNcSoF9Wu4nQz3961IT3D9Bw7F1dgEdP8P+NTFhDa6AzzgAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0wMi0wMVQwNTozMzoxMC0wODowMClgwJIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMDItMDFUMDU6MzM6MTAtMDg6MDBYPXguAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-state-default .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-active .ui-icon{background-image:url(data:image/png;base64,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)}.ui-state-highlight .ui-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAADwCAMAAADYSUr5AAABDlBMVEUug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8ug/8bvOpvAAAAWXRSTlMAGRAzBAhQv4KZLyJVcUBmYBoTMswNITwWQkhLIB5aIycxUyyFNIeAw2rIz8Y4RRy8uL58q7WljKqorR+yKf0BnlEk7woGAgOPomKUSqCvbd+cR2M/b3+RaPlAXvEAAAABYktHRACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAPZElEQVR42u1dC2PbthEGyUiq6ZiSXblLE6ex1mTO5iXZq+u6ro3abG26pOkSd13v//+RAXzhcIeHWMoUbeOTLesIEMB9PIB3ACgLERERMQIkkOy6CTvWH0bOQO/mJeDXP8EMqMzDEkIsEBRMAmh7jHSVmuAjAKwC8FRAzi8/DmoS1AI5AQltj5FOryAjgJ7OK2CZkwEZYO23q+BJ5wwKkttfui1z4s20VTAL5k2kF5hbiPcKcwvwNGB4C7CTwproI4CdDcxEPKUTExx+DNiAj0u9C9AuNPxdYOe46Y5QRERERERExIhx6Z7gjv2ghEVrQJ33hJ5BsxsBfsIq8M0HsAkhWfqglFgawAhgGWh2M1xMWAWUAE90qUofMhhi7be32JNsmVFJPKeLwBQglAQMNh3ALVjYbNaI1jaYD0jM0nw9atcWYEXiaXH/+QDeQ3Y6BoRx3e8CERERERERERG7Qz/HP+iaBsvvHXj0LAD4cip0yN27fXw7AGtQoDTwH+HqkWTgWczTwZVmr8DbAEuqv35bCT6CWDorjGnAqwOSCI7EhlFWHjkBXIkb1M/DZQgRwCeAwK9B+HRPFlPBOjeZszKz0wK9/FlzeE3I24GEzUII45bT/SYarqGLesE+btlDBP70QInkckDwggQqAGGt052667vAJZ8fvk1GRERERERE3FT035ba081ILLvR3UXa/NDgUlWg+m4N2KgCfzzP1lYtDUDpAi9ObeDVqczu4ASsy/u8kaxId/2W+JYq4CsbrBcV8SPw8iRvrWWze+IlILA3XFjNzMeAl7/EMt0TmH4wwtkmHG4OsLVzYkEsHLZE4+yRDbFBA+ypVoZJ6fR8iw24T2cEsBbw5pnptIuFCbA3wHkJN0pmAbObAOvaOl+hd14A1gVIFwl2AXsvT5w5GMPezQE8j8XAhFmAYCv0AQLIIEhS2bAUmsGh9VuukT/Z3goHgZsE7wEL4JnHPR+w6+djIiIiIiIiRo3LvYtzR4U8Kms5Y7uORbg46Ja9o/7Aj+Doz3oGZm2j9XKiMc0MTpGt7PgXvroD2G5x03es1iY9T4cHXH1LBmAKCyP69BIC9jL7EuB+vrtM8nw/gG0+w1yvZu31BQfNueA6fesENOGmi4DEEg7zpnviKZ5uW50Gkgr+zLBFChJLC1m4C9hEwduHLaXRCRHvnhUrAbRLbD2804Oamkxg0Zn5fL8lnQi2bo8JYfwECAkR3h/mjA6LTskTI4HoNbQJKDT/4J8/uoa47vpFRERERFxvpFf8RmZxO8C3XEW94V+i/5iWAqzLLKb3lQZXAyElhXpFIUa1GMK2LgsUryhVU0hRMGTGdylUFqDzC+sSOCNwLN0GePRCt9dL/Y3ozCAAKhKMeJaKWN8ExkWAZfmdE5QSmRKA/wpL7IaOJW0XG0sX2MACWH5zx0ZFkMMC6H6Fhu7R6M90ZGMAyWGdoUm1ldAxwLJBZjTmr9tkSPiPY8hH+VO7QmD5pDDgd2V2YIDT0e0i0XugD8kICeiLLvpHRERERNwsZMpPyDbPf2sicWuo1k1l42ZTX473Ap4b7FWukkvFjCZnfj5uiRwgF7dIAeiMfSnuC4dME8XtGuSERiU4KIopcvbKzwYhpVs057ufG3FRa7gw9G1bTGW2srVfpzetnuQwmUA+MRogWDBB99paherA3FZjG6QVRZFWIITMDAIQA6BMdKJr3DMIkEUfSrSuNDQW4FrvrorTBU5gcnT0PmAClsul/wkMgQkQAQL2DQJBqY4OSEISTEjVQJPwYwWXBcAU0B9VcT0GAGqg0eLj8vRjTcDRB/u/Mgi4c+cO2x7vlskBSoDS/0NMgGlSIPUHTlGKpv3gjoLTAg6V6jA91PMAWWn/LQGqfDTFVhWnC5Rd4O5d3AWWQl4C+d6ekJWvX0iA0v/2vQ/dBCTkgDySJIcJCmHg5OTEPQbAoWRA6o8JKH9aAspBEBFwX519/35z4KgaBI+IOugETgB7REMQAj7C8xPzxW35XrgIoBXCgxKowtPTU9AmyiwgO5xO5ZvuAqXsJuC0Qn0gyeGDPF9Bjp8RQl1IHvh1+cL6TigBE0IAGBYw1/p7CGiL+7gEMblJSwC1gOywRHOJmAxqjJ2C0SfzvL0L5E39udMCOAGhLoDTqzGwaDO3BGRmfW1xlR8A7wkHiAWEboNVe+bmHEymb93AFQ4MegtcPT9ACSgZKMT2kGWLEh18Pcah6bqEs0OvaaX9reofERERETFyPHzoT0/BO68NYNv6SJDpcPdReZt61Ih1sN3G2PNanrfnVq7J/sayEL8h7Sm89zUZbR2TQ/K2jfXPMs3ATHmRZ/kUBTuyyfO91pGzUpHp449qV7xhQJ6sQFaaTM8mV67gxnJ1PVoNCuXMpe29PVXczvE1fQzwmOivHKUTrb/yzdvoN7E7Yiich9/K1wFuUCavc4byG2uDNLYQvxPn4vc4vs2lkBuyMOXjyTGSVfsXC1cDoXb2a7kxOGRxsrGLVLuO1YxFG11xAkg4DOLJ/afP7t1H00aZtO8Mt8dLwB/gj/L1J6ygcv2JjIMPGRtPcur7tnLtzKf2+h42IhoHZnCwkBxUwl4zY7PnIqAeBZAFHMCf4aFukNQfTdmFLeAv4hPxVz2ldEos4JRYwCmxgIURe8geUA1SbXxL6vu0kj5tG1gG8zh2ADUGaP3CBDy5/9ED+bLrX3vqmIAUylmnRv4bfCZff0c7Jow+XsrvExmll/1X4oGDgCa6S40GEfsRGOYoD5OpODHiRUJARhgm+rc7IkwCkPz5J3dmd/7xRS0fNsXtbyYvzKsnWBeoZSw+fqxlZfvtfKeVAEGg9gilwj0pCWSS+1HdYH0XUFuMhKtLqO5OivPLgujPA/gU6y+efimHv/mXT1sCZP9PPeczRedsEDUnWdkkP/ED6LQ3kW3fAOOTF1R/ehsU1aYunVyuCNwu2vOBlWAgF1cQRYcA3/CBIiIiIiJ2gCmemFauHJyyPM/1x0veWlguRXjvftCnBSms5fsa35rPALmaH8JXX339NXyBmnOg9C8hP6zuwZMncG/VpJP9Fs10QzPf0Mr0QBu8Ub8ph9l0+sJgwP/lYiEsZFk5ijZBMrCm3viJ9rz+qfAv7Yqup7KABQtu2nSyVEs+1MGrziNdx0wGO3pxsErQwZVyjNfwwrJb9hcSoFwtdIbSvfw1DUAT8M23z59/+41uz1RAscArO5QAY8sIlJNRaMNDKqqpilT72pmaj0EEPFNrdbjCtWLdRQANL7m6JL1a3dMWtS5lrX9q5ofS1vfb01/KpBlyV2FCNmSY55froCgDqMBTxnMCW8B8jver56uVCi81AVJ/gabAKOM0WLCLxMTb9jc2gPSvrmAzBnwG+xLwss1QFMb5cOwn4Eh+PFI/TbIysCmcIAsg0euzZ4fPVnDWFvhCtW62PQKoBXxXys2sXK2/VjBflzgxT9eEyUt6fHxsEFBf2erPicTn8odseFg7x4DVSnUAPAi+mE5nWxwEyRjwXT0G1Awo/QsjHF2p9p7o09cHcIYYUAUdoWGvmbxp9Pv44/qHGIhzDJhmq9UKVpgBehvc9l3gsZqY1e2hodt6PtcTVnIElD+pZgCMP83H/eYAvQ2WFlHCMQbAVAETYLuGfQggSMtr/7jxAyx7BM0RVlrLi1SNlM+b1H8/ScyvdRHlqFFLk0xN6WXNho3ufsDucfTq1RESFweKq/R5yxhtMNs5GREREdELU7w7+vX3aoj5/vWuGzUg3gC8aYUfmlH3h103azDcVererYXX1R1HvWsbWMISn/AfizMjtrfzbFnyv+xf0KZ4owKoxgTeagLetjmI22DzIwpNCVt6oAeoDEt1T196y79E3K0Uvosqp64Ha09KDxTaKAIbN5X8bvLOXJ1l1Q1JgBwBVAj9xqjcbMMcL4xV+uvlxcLU37Z1d5EusH7v5Ns7I8NyhwQUzfUu3AQUpMsDnKc4DetvIyA1TKbcaD4xwmmDgAyWy+Vwnq5W2E0APwfpL3U3BsXeFjDsIFgaQPXQTKnDK03AK5Sp8BeA03uPAcNGa3TQe6rFpzgTOYkwYPDT+y4gxIBD4FIrXLXgohEvsI50DMBSsf3d5zsN1n9U07Lw8sddtmFMsxURERERERGXjAJ84mUDZsSR2egJiT7Y26P6g0e8fAKAUGAQUKalOEMxS9WbkUGFzI08rzK5w9uC+M4FS4ZyhWxAAkwKTAKqtLbN5eWR6tEMBgE4nRNAg0U+GWBuxh2EALwZmBJQTn/UjSz/zHCb6wyYgJlFp7DGhrjN/x+wEQEDWsBGBAxsAcOOARQ7HwMGvgvw+Y4d3wVGgN36ARERERERNxv+58iuO9L/Cvjpc7R3U3opZzfoe3LVc6TwU4GeZ8iLl5YHKBrfhH7/QVd5dFjD/yQBAu1OVqzMGAP0yVK9X7+bPDakcC7ET4U4x09br09kRGs+X6sVmRxP5E+7fRuOzf3sSgZTnqjXZKTubVbvmz/TVyhfgNptf+AgoPxqtOSw+X49SCBJ1IFGPlQv/f17Kl0eSQ5HSkBpARLn+IqrcWFt7E5GBHxRoTXxjvLoMCvvgQu050UGo1M4mToIuHaDYA5wfnaOh/1qOkKHpLDl/3A5NuRv5PV5cyWfmo+IiIiI6A36fEBIppuouspd6+srh0CfDwjJdBtdV7lrfX3l4PWHFq83kelGyq5y1/r6ykHQ5wPe6gIa+UL5hhe1XG2lLdNftTJQWTjT3+r0t876BXjT1Y5Oki5o+wV+3sEH0BVAKzeFiHo1+OICrw6H8vN0ll8vkdvS8eqZ/S8Y7RE///yzMNtTPpG8KQHGB4useu8FaTBuEMsvmEL+/ISAYHtE8+uQV5X+2yNggb6DzkKA7W8XhYL1WyzEZwHq20ZW0IGAcBdQ377VxcRDXQRCBHq7lCD5qSwZWLX5g6DPB1gGtWYQ1IMYHaSAyu5B1TpI0vrpIGumN/y4ZNUHWjmIoW9jfW+jXeUwhnZk+jpSXeUwhnZl+7rSXeWIiIiIiIgID2rH4dLk0YP8/8CwfA0JAD8B5QsrKPwECPpPD8eN6isJwSMTgqB5c8nk39+NHdECbvwYcNPvAhERERERERHbRnJ1PIHgLkjIum90Tcj/BxozEhFo6wYE0Ot9lfTfhgVQfa+U/qYFlNvby5eDgHbtzdTX4FCdfW3HgKyBqT++4pX+V8cG+lpAlf/q6t/XAq68/n3vAg79r+0YEIDW/+rYQNACukDp3fxGRIwc/we0wIqagmy7GAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMy0wMi0wMVQwNTozMzoxMC0wODowMClgwJIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTMtMDItMDFUMDU6MzM6MTAtMDg6MDBYPXguAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAABJRU5ErkJggg==)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(data:image/png;base64,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)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0}.ui-widget-overlay{background:#666;opacity:.5;filter:alpha(opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:alpha(opacity=30);border-radius:8px} \ No newline at end of file diff --git a/Disco.Web/ClientSource/Style/jQueryUIExtensions.css b/Disco.Web/ClientSource/Style/jQueryUIExtensions.css index 1d5eb180..e41f782e 100644 --- a/Disco.Web/ClientSource/Style/jQueryUIExtensions.css +++ b/Disco.Web/ClientSource/Style/jQueryUIExtensions.css @@ -274,3 +274,8 @@ input:-moz-placeholder { text-transform: uppercase; padding: .6em 1em; } +body .ui-tooltip { + border-width: 1px; + -webkit-box-shadow: none; + box-shadow: none; +} diff --git a/Disco.Web/ClientSource/Style/jQueryUIExtensions.less b/Disco.Web/ClientSource/Style/jQueryUIExtensions.less index 225ce811..a48b7485 100644 --- a/Disco.Web/ClientSource/Style/jQueryUIExtensions.less +++ b/Disco.Web/ClientSource/Style/jQueryUIExtensions.less @@ -156,65 +156,65 @@ input:-moz-placeholder { // Dialogs .ui-dialog { - animation-name: ui-dialog-show; - -webkit-animation-name: ui-dialog-show; - - animation-duration: .2s; - -webkit-animation-duration: .2s; - - animation-timing-function: ease-in-out; - -webkit-animation-timing-function: ease-in-out; + animation-name: ui-dialog-show; + -webkit-animation-name: ui-dialog-show; + animation-duration: .2s; + -webkit-animation-duration: .2s; + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; } @keyframes ui-dialog-show { - 0% { + 0% { transform: translateY(-30px); - opacity: 0.0; - } - 100% { - transform: translateY(0); - opacity: 1; - } + opacity: 0.0; + } + + 100% { + transform: translateY(0); + opacity: 1; + } } @-webkit-keyframes ui-dialog-show { - 0% { - -webkit-transform: translateY(-30px); - opacity: 0.0; - } - 100% { - -webkit-transform: translateY(0); - opacity: 1; - } + 0% { + -webkit-transform: translateY(-30px); + opacity: 0.0; + } + + 100% { + -webkit-transform: translateY(0); + opacity: 1; + } } .ui-widget-overlay.ui-front { - animation-name: ui-dialog-fadeIn; - -webkit-animation-name: ui-dialog-fadeIn; - - animation-duration: .2s; - -webkit-animation-duration: .2s; - - animation-timing-function: ease-in-out; - -webkit-animation-timing-function: ease-in-out; + animation-name: ui-dialog-fadeIn; + -webkit-animation-name: ui-dialog-fadeIn; + animation-duration: .2s; + -webkit-animation-duration: .2s; + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; } @keyframes ui-dialog-fadeIn { - 0% { - opacity: 0.0; - } - 100% { - opacity: 0.5; - } + 0% { + opacity: 0.0; + } + + 100% { + opacity: 0.5; + } } @-webkit-keyframes ui-dialog-fadeIn { - 0% { - opacity: 0.0; - } - 100% { - opacity: 0.5; - } + 0% { + opacity: 0.0; + } + + 100% { + opacity: 0.5; + } } // Initially hide dialogs @@ -243,3 +243,10 @@ input:-moz-placeholder { text-transform: uppercase; padding: .6em 1em; } + +// Tooltip +body .ui-tooltip { + border-width: 1px; + -webkit-box-shadow: none; + box-shadow: none; +} diff --git a/Disco.Web/ClientSource/Style/jQueryUIExtensions.min.css b/Disco.Web/ClientSource/Style/jQueryUIExtensions.min.css index a001dd8f..61e3a192 100644 --- a/Disco.Web/ClientSource/Style/jQueryUIExtensions.min.css +++ b/Disco.Web/ClientSource/Style/jQueryUIExtensions.min.css @@ -1 +1 @@ -.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}.ui-tabs .ui-tabs-panel{padding:.5em}.ui-dialog{animation-name:ui-dialog-show;-webkit-animation-name:ui-dialog-show;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-show{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes ui-dialog-show{0%{-webkit-transform:translateY(-30px);opacity:0}100%{-webkit-transform:translateY(0);opacity:1}}.ui-widget-overlay.ui-front{animation-name:ui-dialog-fadeIn;-webkit-animation-name:ui-dialog-fadeIn;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}@-webkit-keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}.page .dialog{display:none}.ui-dialog{padding:0;border-color:#333;background:#fcfcfc;box-shadow:rgba(20,20,20,.7) 0 0 50px;top:50px!important}.ui-dialog .ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom-color:#d1d1d1;background:#333;color:#fff;font-size:1.1em;font-weight:normal;text-transform:uppercase;padding:.6em 1em} \ No newline at end of file +.tableData{border:solid 1px #f4f4f4;border-collapse:collapse}.tableData>tbody>tr>td{border:solid 1px #f4f4f4;background-color:#fff}.tableData>tbody>tr:nth-child(odd)>td{background-color:#fcfcfc}.tableData>thead>tr>th,.tableData>tbody>tr>th{background-color:#f4f4f4;border:solid 1px #f4f4f4}.tableData>tbody>tr:hover>td{background-color:#fefefe}.tableData>tbody>tr:hover:nth-child(odd)>td{background-color:#fafafa}.tableData>tfoot>tr>th,.tableData>tfoot>tr>td{background-color:#f4f4f4}.tableDataDark{border:solid 1px #d8d8d8;border-collapse:collapse}.tableDataDark td{border:solid 1px #d8d8d8;background-color:#fff}.tableDataDark th{background-color:#eee;border:solid 1px #d8d8d8}.tableDataContainer{background-color:#fff}.tableDataVertical{border:solid 1px #f4f4f4;border-collapse:collapse}.tableDataVertical>tbody>tr:nth-child(odd){background-color:#f4f4f4;margin:0;padding:0}.tableDataVertical>tbody>tr>th.name{width:170px;text-align:right}.tableDataVertical table.sub>tbody>tr:not(:first-child)>th,.tableDataVertical table.sub>tbody>tr:not(:first-child)>td{border-top:1px dashed #aaa}.tableDataVertical table.sub>tbody>tr>th{font-weight:normal;text-align:right}.tableDataVertical table.sub>tbody>tr>th.name{text-align:right}.icon16{display:inline-block;height:16px;width:16px;margin-left:2px;cursor:pointer}.subtleUntilHover{-moz-opacity:.3;opacity:.3}.subtleUntilHover:hover{-moz-opacity:1;opacity:1}.watermark{color:#888!important}::-webkit-input-placeholder{color:#888}::-moz-placeholder{color:#888}:-ms-input-placeholder{color:#888}input:-moz-placeholder{color:#888}.ui-autocomplete-loading{background:#fff url(data:image/gif;base64,R0lGODlhEAALAPQAAP///zNah+Hm7dng6O7x9DddiTNah1d3nJqtw3+Xs8fS3k5vlm6JqaGzx4KatcrU4FFymDZciHGMq+ru8t/l7Pb3+V9+oeLo7vT2+MTP3LLB0dTc5fHz9gAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA) right center no-repeat}.ui-autocomplete{max-height:150px;overflow-y:auto;overflow-x:hidden}* html .ui-autocomplete{height:150px}.ui-timepicker-div .ui-widget-header{margin-bottom:8px}.ui-timepicker-div dl{text-align:left}.ui-timepicker-div dl dt{float:left;clear:left;padding:0 0 0 5px}.ui-timepicker-div dl dd{margin:0 10px 10px 45%}.ui-timepicker-div td{font-size:90%}.ui-tpicker-grid-label{background:none;border:none;margin:0;padding:0}.ui-timepicker-rtl{direction:rtl}.ui-timepicker-rtl dl{text-align:right;padding:0 5px 0 0}.ui-timepicker-rtl dl dt{float:right;clear:right}.ui-timepicker-rtl dl dd{margin:0 45% 10px 10px}@-moz-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@-webkit-keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}@keyframes progressBarKeyframes{from{background-position-x:0}to{background-position-x:47px}}.ui-progressbar-value{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QwYAwcRFZ4/TAAAAmtJREFUWMO1l+lu2kAQx/+WlqMYCGmMzRGwcUhoVbWq1Ifq2+RF+hJ9hVRpohLuCB9AwAaqfqiPfjBEhtrcO5/wrGf2N4eXWeb223cXlCSeyUHIJGi5hzqagPny9ZZKAOfyZ9TyaWrw940u5noXJB4lJ3eeqXzCtUAP/qHZgzXpIx4lILFIcACuCzBM+HOY7kz6iGs+uRHABcAcCP/YUWAZCpbcJBZWgaDGYjbs7gJp8QOqC/igBACezr+2/nv5TtBavavCmvQ9+IWexMhqAMsNwiQICgDSpRpknl7bPPU0WIYCf8u77qYK7CHp4g2kbIoafLM/hGWqCGIl8chxAaQKVZQ5evBtdQTbUBDGeVQFkvkrlC9YavAdbQw7JPOvAUQPrADLlVDm6WW+q49hmRq28R3UQgmuiEvujBr882ACZzrALmx7t9Cb8xyK2Qw1+P7QgDMfYlcu0lZfdm+brAg5EoNm/DnZH5NfWsoLfg+7e9kQy3Z2g+dFiLm3sB06s19LHWOut/e22ykAlhch5S9gu3Tgm8oYc611kO3WAJKCBLnAwaGV+cEMZr9xsP3GAJK5CuQCR61tmoMZzN7jUT6I7QQHwAoVXBWzsCldd5r6FGbv4Wg/gRVgs2VUL3lqmW9o5kngvQrYzsoxmOBF3IgF2I77Oj2HTdOuTxc6va6tP+kzTDv3/9mE7YUtvlcqwAoSagt4GlLXZzDbP07qk/y1be+D5UXUpAK1o7KuTTFp3Z3cL7FsBylBwju5dNRRuV5+v+6XOoXRvltcQlwwDBNwhfX029b9z94wx5Xw/kj4jRfw5xHM3k9qs9M/9mQP+uNoCX0AAAAASUVORK5CYII=);background-position:0 0;-moz-animation:progressBarKeyframes 2s linear infinite;-o-animation:progressBarKeyframes 2s linear infinite;-webkit-animation:progressBarKeyframes 2s linear infinite;animation:progressBarKeyframes 2s linear infinite;-moz-transition-property:width;-o-transition-property:width;-webkit-transition-property:width;transition-property:width;-moz-transition-duration:.1s;-o-transition-duration:.1s;-webkit-transition-duration:.1s;transition-duration:.1s}.ui-tabs .ui-tabs-panel{padding:.5em}.ui-dialog{animation-name:ui-dialog-show;-webkit-animation-name:ui-dialog-show;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-show{0%{transform:translateY(-30px);opacity:0}100%{transform:translateY(0);opacity:1}}@-webkit-keyframes ui-dialog-show{0%{-webkit-transform:translateY(-30px);opacity:0}100%{-webkit-transform:translateY(0);opacity:1}}.ui-widget-overlay.ui-front{animation-name:ui-dialog-fadeIn;-webkit-animation-name:ui-dialog-fadeIn;animation-duration:.2s;-webkit-animation-duration:.2s;animation-timing-function:ease-in-out;-webkit-animation-timing-function:ease-in-out}@keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}@-webkit-keyframes ui-dialog-fadeIn{0%{opacity:0}100%{opacity:.5}}.page .dialog{display:none}.ui-dialog{padding:0;border-color:#333;background:#fcfcfc;box-shadow:rgba(20,20,20,.7) 0 0 50px;top:50px!important}.ui-dialog .ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom-color:#d1d1d1;background:#333;color:#fff;font-size:1.1em;font-weight:normal;text-transform:uppercase;padding:.6em 1em}body .ui-tooltip{border-width:1px;-webkit-box-shadow:none;box-shadow:none} \ No newline at end of file diff --git a/Disco.Web/Controllers/DeviceController.cs b/Disco.Web/Controllers/DeviceController.cs index 3b51191d..76f80ff1 100644 --- a/Disco.Web/Controllers/DeviceController.cs +++ b/Disco.Web/Controllers/DeviceController.cs @@ -124,36 +124,67 @@ namespace Disco.Web.Controllers #endregion - #region Import/Export - [DiscoAuthorizeAny(Claims.Device.Actions.Import, Claims.Device.Actions.Export), HttpGet] - public virtual ActionResult ImportExport() + #region Import + [DiscoAuthorize(Claims.Device.Actions.Import), HttpGet] + public virtual ActionResult Import(string Id) { - Models.Device.ImportModel m = new Models.Device.ImportModel(); - - if (Authorization.Has(Claims.Device.Actions.Import)) + var m = new Models.Device.ImportModel() { - m.DeviceModels = Database.DeviceModels.ToList(); - m.DeviceProfiles = Database.DeviceProfiles.ToList(); - m.DeviceBatches = Database.DeviceBatches.ToList(); - } + DeviceModels = Database.DeviceModels.ToList(), + DeviceProfiles = Database.DeviceProfiles.ToList(), + DeviceBatches = Database.DeviceBatches.ToList() + }; + + if (!string.IsNullOrWhiteSpace(Id)) + m.CompletedImportSessionContext = Areas.API.Controllers.DeviceController.Import_RetrieveContext(Id, Remove: true); // UI Extensions UIExtensions.ExecuteExtensions(this.ControllerContext, m); return View(m); } + [DiscoAuthorize(Claims.Device.Actions.Import), HttpGet] - public virtual ActionResult ImportReview(string ImportParseTaskId) + public virtual ActionResult ImportHeaders(string Id) { - if (string.IsNullOrWhiteSpace(ImportParseTaskId)) - throw new ArgumentNullException("ImportParseTaskId"); + if (string.IsNullOrWhiteSpace(Id)) + throw new ArgumentNullException("Id"); - var session = Disco.BI.DeviceBI.Importing.Import.GetSession(ImportParseTaskId); + var context = Areas.API.Controllers.DeviceController.Import_RetrieveContext(Id); - if (session == null) - throw new ArgumentException("The Import Parse Task Id is invalid or the session timed out (60 minutes), try importing again", "ImportParseTaskId"); + if (context == null) + throw new ArgumentException("The Import Session Id is invalid or the session timed out (60 minutes), try importing again", "Id"); - Models.Device.ImportReviewModel m = Models.Device.ImportReviewModel.FromImportDeviceSession(session); + var m = new Models.Device.ImportHeadersModel() + { + Context = context + }; + + // UI Extensions + UIExtensions.ExecuteExtensions(this.ControllerContext, m); + + return View(m); + } + + [DiscoAuthorize(Claims.Device.Actions.Import), HttpGet] + public virtual ActionResult ImportReview(string Id) + { + if (string.IsNullOrWhiteSpace(Id)) + throw new ArgumentNullException("Id"); + + var context = Areas.API.Controllers.DeviceController.Import_RetrieveContext(Id); + + if (context == null) + throw new ArgumentException("The Import Session Id is invalid or the session timed out (60 minutes), try importing again", "Id"); + + var m = new Models.Device.ImportReviewModel() + { + Context = context, + StatisticErrorRecords = context.Records.Count(r => r.HasError), + StatisticNewRecords = context.Records.Count(r => r.RecordAction == System.Data.EntityState.Added), + StatisticModifiedRecords = context.Records.Count(r => r.RecordAction == System.Data.EntityState.Modified), + StatisticUnmodifiedRecords = context.Records.Count(r => r.RecordAction == System.Data.EntityState.Unchanged) + }; // UI Extensions UIExtensions.ExecuteExtensions(this.ControllerContext, m); diff --git a/Disco.Web/Disco.Web.csproj b/Disco.Web/Disco.Web.csproj index 4cc988e2..5fee0702 100644 --- a/Disco.Web/Disco.Web.csproj +++ b/Disco.Web/Disco.Web.csproj @@ -545,7 +545,13 @@ + + + ImportHeaders.cshtml + True + True + True True @@ -663,10 +669,10 @@ True _Subject.cshtml - + True True - ImportExport.cshtml + Import.cshtml True @@ -1253,6 +1259,18 @@ ExpressionEditor.css + + + + + + + + + + + + @@ -1347,6 +1365,12 @@ normalize.less + + jquery-ui.less + + + jquery-ui.less + HeldDevices.less @@ -1526,6 +1550,10 @@ RazorGenerator AddOffline.generated.cs + + RazorGenerator + ImportHeaders.generated.cs + RazorGenerator _Details.generated.cs @@ -1554,9 +1582,9 @@ RazorGenerator Export.generated.cs - + RazorGenerator - ImportExport.generated.cs + Import.generated.cs RazorGenerator @@ -2063,7 +2091,7 @@ False - + diff --git a/Disco.Web/Models/Device/ImportHeadersModel.cs b/Disco.Web/Models/Device/ImportHeadersModel.cs new file mode 100644 index 00000000..0b6df91c --- /dev/null +++ b/Disco.Web/Models/Device/ImportHeadersModel.cs @@ -0,0 +1,25 @@ +using Disco.Models.Services.Devices.Importing; +using Disco.Models.UI.Device; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; + +namespace Disco.Web.Models.Device +{ + public class ImportHeadersModel : DeviceImportHeadersModel + { + public IDeviceImportContext Context { get; set; } + + public IEnumerable> HeaderTypes { get; set; } + + public ImportHeadersModel() + { + HeaderTypes = typeof(DeviceImportFieldTypes) + .GetFields() + .Select(p => Tuple.Create(p, (DisplayAttribute)p.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault())) + .Where(p => p.Item2 != null) + .Select(p => Tuple.Create((DeviceImportFieldTypes)p.Item1.GetRawConstantValue(), p.Item2.Name)).ToList(); + } + } +} \ No newline at end of file diff --git a/Disco.Web/Models/Device/ImportModel.cs b/Disco.Web/Models/Device/ImportModel.cs index 5c083ed6..48cff03c 100644 --- a/Disco.Web/Models/Device/ImportModel.cs +++ b/Disco.Web/Models/Device/ImportModel.cs @@ -1,4 +1,5 @@ using Disco.Models.Repository; +using Disco.Models.Services.Devices.Importing; using Disco.Models.UI.Device; using System; using System.Collections.Generic; @@ -10,11 +11,29 @@ namespace Disco.Web.Models.Device { public class ImportModel : DeviceImportModel { - [Required, Display(Name="CSV Import File")] + [Required, Display(Name = "CSV Import File")] public HttpPostedFileBase ImportFile { get; set; } + [Required, Display(Name = "Has Header")] + public bool HasHeader { get; set; } + + public IDeviceImportContext CompletedImportSessionContext { get; set; } + public List DeviceModels { get; set; } public List DeviceProfiles { get; set; } public List DeviceBatches { get; set; } + + public IEnumerable> HeaderTypes { get; set; } + + public ImportModel() + { + HasHeader = true; + + HeaderTypes = typeof(DeviceImportFieldTypes) + .GetFields() + .Select(p => Tuple.Create(p, (DisplayAttribute)p.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault())) + .Where(p => p.Item2 != null && p.Item1.Name != DeviceImportFieldTypes.IgnoreColumn.ToString()) + .Select(p => Tuple.Create(p.Item1.Name, p.Item2.Name, p.Item2.Description)).ToList(); + } } } \ No newline at end of file diff --git a/Disco.Web/Models/Device/ImportReviewModel.cs b/Disco.Web/Models/Device/ImportReviewModel.cs index e3fec143..85f13f9b 100644 --- a/Disco.Web/Models/Device/ImportReviewModel.cs +++ b/Disco.Web/Models/Device/ImportReviewModel.cs @@ -1,26 +1,35 @@ -using Disco.Models.BI.Device; +using Disco.Models.Services.Devices.Importing; using Disco.Models.UI.Device; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; -using System.Web; namespace Disco.Web.Models.Device { public class ImportReviewModel : DeviceImportReviewModel { - public string ImportParseTaskId { get; set; } - public string ImportFilename { get; set; } - public List ImportDevices { get; set; } + public IDeviceImportContext Context { get; set; } - public static ImportReviewModel FromImportDeviceSession(ImportDeviceSession session) + public int StatisticErrorRecords { get; set; } + public int StatisticNewRecords { get; set; } + public int StatisticModifiedRecords { get; set; } + public int StatisticUnmodifiedRecords { get; set; } + + public int StatisticImportRecords { - return new ImportReviewModel() - { - ImportParseTaskId = session.ImportParseTaskId, - ImportFilename = session.ImportFilename, - ImportDevices = session.ImportDevices - }; + get { return this.StatisticNewRecords + StatisticModifiedRecords; } + } + + public IEnumerable> HeaderTypes { get; set; } + + public ImportReviewModel() + { + HeaderTypes = typeof(DeviceImportFieldTypes) + .GetFields() + .Select(p => Tuple.Create(p, (DisplayAttribute)p.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault())) + .Where(p => p.Item2 != null) + .Select(p => Tuple.Create((DeviceImportFieldTypes)p.Item1.GetRawConstantValue(), p.Item2.Name)).ToList(); } } } \ No newline at end of file diff --git a/Disco.Web/T4MVC.cs b/Disco.Web/T4MVC.cs index e3175487..0d83dcc6 100644 --- a/Disco.Web/T4MVC.cs +++ b/Disco.Web/T4MVC.cs @@ -558,12 +558,24 @@ namespace Links private const string URLPATH = "~/ClientSource/Style/FontAwesome"; public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); } public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); } + public static readonly string bordered_pulled_less = Url("bordered-pulled.less"); + public static readonly string core_less = Url("core.less"); + public static readonly string fixed_width_less = Url("fixed-width.less"); public static readonly string font_awesome_less = Url("font-awesome.less"); public static readonly string fontawesome_webfont_eot = Url("fontawesome-webfont.eot"); public static readonly string fontawesome_webfont_svg = Url("fontawesome-webfont.svg"); public static readonly string fontawesome_webfont_ttf = Url("fontawesome-webfont.ttf"); public static readonly string fontawesome_webfont_woff = Url("fontawesome-webfont.woff"); public static readonly string FontAwesome_otf = Url("FontAwesome.otf"); + public static readonly string icons_less = Url("icons.less"); + public static readonly string larger_less = Url("larger.less"); + public static readonly string list_less = Url("list.less"); + public static readonly string mixins_less = Url("mixins.less"); + public static readonly string path_less = Url("path.less"); + public static readonly string rotated_flipped_less = Url("rotated-flipped.less"); + public static readonly string spinning_less = Url("spinning.less"); + public static readonly string stacked_less = Url("stacked.less"); + public static readonly string variables_less = Url("variables.less"); } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -683,6 +695,9 @@ namespace Links } public static readonly string jquery_ui_less = Url("jquery-ui.less"); + public static readonly string jquery_ui_css = T4MVCHelpers.IsProduction() && T4Extensions.FileExists(URLPATH + "/jquery-ui.min.css") ? Url("jquery-ui.min.css") : Url("jquery-ui.css"); + + public static readonly string jquery_ui_min_css = Url("jquery-ui.min.css"); } public static readonly string jQueryUIExtensions_less = Url("jQueryUIExtensions.less"); @@ -889,6 +904,18 @@ namespace Disco.Web.Controllers } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult Import() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Import); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult ImportHeaders() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportHeaders); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public virtual System.Web.Mvc.ActionResult ImportReview() { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportReview); @@ -918,7 +945,8 @@ namespace Disco.Web.Controllers public readonly string Index = "Index"; public readonly string AddOffline = "AddOffline"; public readonly string Export = "Export"; - public readonly string ImportExport = "ImportExport"; + public readonly string Import = "Import"; + public readonly string ImportHeaders = "ImportHeaders"; public readonly string ImportReview = "ImportReview"; public readonly string Show = "Show"; } @@ -929,7 +957,8 @@ namespace Disco.Web.Controllers public const string Index = "Index"; public const string AddOffline = "AddOffline"; public const string Export = "Export"; - public const string ImportExport = "ImportExport"; + public const string Import = "Import"; + public const string ImportHeaders = "ImportHeaders"; public const string ImportReview = "ImportReview"; public const string Show = "Show"; } @@ -953,13 +982,29 @@ namespace Disco.Web.Controllers public readonly string ExportType = "ExportType"; public readonly string ExportTypeTargetId = "ExportTypeTargetId"; } + static readonly ActionParamsClass_Import s_params_Import = new ActionParamsClass_Import(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_Import ImportParams { get { return s_params_Import; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_Import + { + public readonly string Id = "Id"; + } + static readonly ActionParamsClass_ImportHeaders s_params_ImportHeaders = new ActionParamsClass_ImportHeaders(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_ImportHeaders ImportHeadersParams { get { return s_params_ImportHeaders; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_ImportHeaders + { + public readonly string Id = "Id"; + } static readonly ActionParamsClass_ImportReview s_params_ImportReview = new ActionParamsClass_ImportReview(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_ImportReview ImportReviewParams { get { return s_params_ImportReview; } } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public class ActionParamsClass_ImportReview { - public readonly string ImportParseTaskId = "ImportParseTaskId"; + public readonly string Id = "Id"; } static readonly ActionParamsClass_Show s_params_Show = new ActionParamsClass_Show(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -983,7 +1028,8 @@ namespace Disco.Web.Controllers public readonly string _ViewStart = "_ViewStart"; public readonly string AddOffline = "AddOffline"; public readonly string Export = "Export"; - public readonly string ImportExport = "ImportExport"; + public readonly string Import = "Import"; + public readonly string ImportHeaders = "ImportHeaders"; public readonly string ImportReview = "ImportReview"; public readonly string Index = "Index"; public readonly string Show = "Show"; @@ -992,7 +1038,8 @@ namespace Disco.Web.Controllers public readonly string _ViewStart = "~/Views/Device/_ViewStart.cshtml"; public readonly string AddOffline = "~/Views/Device/AddOffline.cshtml"; public readonly string Export = "~/Views/Device/Export.cshtml"; - public readonly string ImportExport = "~/Views/Device/ImportExport.cshtml"; + public readonly string Import = "~/Views/Device/Import.cshtml"; + public readonly string ImportHeaders = "~/Views/Device/ImportHeaders.cshtml"; public readonly string ImportReview = "~/Views/Device/ImportReview.cshtml"; public readonly string Index = "~/Views/Device/Index.cshtml"; public readonly string Show = "~/Views/Device/Show.cshtml"; @@ -1067,22 +1114,33 @@ namespace Disco.Web.Controllers return callInfo; } - partial void ImportExportOverride(T4MVC_System_Web_Mvc_ActionResult callInfo); + partial void ImportOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id); - public override System.Web.Mvc.ActionResult ImportExport() + public override System.Web.Mvc.ActionResult Import(string Id) { - var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportExport); - ImportExportOverride(callInfo); + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.Import); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + ImportOverride(callInfo, Id); return callInfo; } - partial void ImportReviewOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string ImportParseTaskId); + partial void ImportHeadersOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id); - public override System.Web.Mvc.ActionResult ImportReview(string ImportParseTaskId) + public override System.Web.Mvc.ActionResult ImportHeaders(string Id) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportHeaders); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + ImportHeadersOverride(callInfo, Id); + return callInfo; + } + + partial void ImportReviewOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id); + + public override System.Web.Mvc.ActionResult ImportReview(string Id) { var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportReview); - ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ImportParseTaskId", ImportParseTaskId); - ImportReviewOverride(callInfo, ImportParseTaskId); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + ImportReviewOverride(callInfo, Id); return callInfo; } @@ -3551,15 +3609,21 @@ namespace Disco.Web.Areas.API.Controllers } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public virtual System.Web.Mvc.ActionResult ImportBegin() + { + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportBegin); + } + [NonAction] + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public virtual System.Web.Mvc.ActionResult ImportParse() { return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportParse); } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] - public virtual System.Web.Mvc.ActionResult ImportProcess() + public virtual System.Web.Mvc.ActionResult ImportApply() { - return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportProcess); + return new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportApply); } [NonAction] [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -3608,8 +3672,9 @@ namespace Disco.Web.Areas.API.Controllers public readonly string Attachment = "Attachment"; public readonly string Attachments = "Attachments"; public readonly string AttachmentRemove = "AttachmentRemove"; + public readonly string ImportBegin = "ImportBegin"; public readonly string ImportParse = "ImportParse"; - public readonly string ImportProcess = "ImportProcess"; + public readonly string ImportApply = "ImportApply"; public readonly string Export = "Export"; public readonly string ExportRetrieve = "ExportRetrieve"; public readonly string MigrateDeviceMacAddressesFromLog = "MigrateDeviceMacAddressesFromLog"; @@ -3637,8 +3702,9 @@ namespace Disco.Web.Areas.API.Controllers public const string Attachment = "Attachment"; public const string Attachments = "Attachments"; public const string AttachmentRemove = "AttachmentRemove"; + public const string ImportBegin = "ImportBegin"; public const string ImportParse = "ImportParse"; - public const string ImportProcess = "ImportProcess"; + public const string ImportApply = "ImportApply"; public const string Export = "Export"; public const string ExportRetrieve = "ExportRetrieve"; public const string MigrateDeviceMacAddressesFromLog = "MigrateDeviceMacAddressesFromLog"; @@ -3821,21 +3887,31 @@ namespace Disco.Web.Areas.API.Controllers { public readonly string id = "id"; } + static readonly ActionParamsClass_ImportBegin s_params_ImportBegin = new ActionParamsClass_ImportBegin(); + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public ActionParamsClass_ImportBegin ImportBeginParams { get { return s_params_ImportBegin; } } + [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] + public class ActionParamsClass_ImportBegin + { + public readonly string ImportFile = "ImportFile"; + public readonly string HasHeader = "HasHeader"; + } static readonly ActionParamsClass_ImportParse s_params_ImportParse = new ActionParamsClass_ImportParse(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public ActionParamsClass_ImportParse ImportParseParams { get { return s_params_ImportParse; } } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] public class ActionParamsClass_ImportParse { - public readonly string ImportFile = "ImportFile"; + public readonly string Id = "Id"; + public readonly string Headers = "Headers"; } - static readonly ActionParamsClass_ImportProcess s_params_ImportProcess = new ActionParamsClass_ImportProcess(); + static readonly ActionParamsClass_ImportApply s_params_ImportApply = new ActionParamsClass_ImportApply(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] - public ActionParamsClass_ImportProcess ImportProcessParams { get { return s_params_ImportProcess; } } + public ActionParamsClass_ImportApply ImportApplyParams { get { return s_params_ImportApply; } } [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] - public class ActionParamsClass_ImportProcess + public class ActionParamsClass_ImportApply { - public readonly string ParseTaskSessionKey = "ParseTaskSessionKey"; + public readonly string Id = "Id"; } static readonly ActionParamsClass_Export s_params_Export = new ActionParamsClass_Export(); [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode] @@ -4086,23 +4162,35 @@ namespace Disco.Web.Areas.API.Controllers return callInfo; } - partial void ImportParseOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, System.Web.HttpPostedFileBase ImportFile); + partial void ImportBeginOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, System.Web.HttpPostedFileBase ImportFile, bool HasHeader); - public override System.Web.Mvc.ActionResult ImportParse(System.Web.HttpPostedFileBase ImportFile) + public override System.Web.Mvc.ActionResult ImportBegin(System.Web.HttpPostedFileBase ImportFile, bool HasHeader) { - var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportParse); + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportBegin); ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ImportFile", ImportFile); - ImportParseOverride(callInfo, ImportFile); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "HasHeader", HasHeader); + ImportBeginOverride(callInfo, ImportFile, HasHeader); return callInfo; } - partial void ImportProcessOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string ParseTaskSessionKey); + partial void ImportParseOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id, System.Collections.Generic.List Headers); - public override System.Web.Mvc.ActionResult ImportProcess(string ParseTaskSessionKey) + public override System.Web.Mvc.ActionResult ImportParse(string Id, System.Collections.Generic.List Headers) { - var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportProcess); - ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "ParseTaskSessionKey", ParseTaskSessionKey); - ImportProcessOverride(callInfo, ParseTaskSessionKey); + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportParse); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Headers", Headers); + ImportParseOverride(callInfo, Id, Headers); + return callInfo; + } + + partial void ImportApplyOverride(T4MVC_System_Web_Mvc_ActionResult callInfo, string Id); + + public override System.Web.Mvc.ActionResult ImportApply(string Id) + { + var callInfo = new T4MVC_System_Web_Mvc_ActionResult(Area, Name, ActionNames.ImportApply); + ModelUnbinderHelpers.AddRouteValues(callInfo.RouteValueDictionary, "Id", Id); + ImportApplyOverride(callInfo, Id); return callInfo; } diff --git a/Disco.Web/Views/Device/Export.cshtml b/Disco.Web/Views/Device/Export.cshtml index 5723121f..52117ccb 100644 --- a/Disco.Web/Views/Device/Export.cshtml +++ b/Disco.Web/Views/Device/Export.cshtml @@ -184,7 +184,7 @@ }
-

Device Exporting devices...

+

Exporting devices...

Export Devices diff --git a/Disco.Web/Views/Device/Export.generated.cs b/Disco.Web/Views/Device/Export.generated.cs index 115151bf..d454ddb9 100644 --- a/Disco.Web/Views/Device/Export.generated.cs +++ b/Disco.Web/Views/Device/Export.generated.cs @@ -640,7 +640,7 @@ WriteLiteral(" class=\"fa fa-lg fa-cog fa-spin\""); WriteLiteral(" title=\"Please Wait\""); -WriteLiteral(">Device Exporting devices...\r\n
\r\nExporting devices...\r\n\r\n + @using (Html.BeginForm(MVC.API.Device.ImportBegin(), FormMethod.Post, new { enctype = "multipart/form-data" })) + { +
+

Import Devices

+ + + + + +
+ @Html.LabelFor(m => m.ImportFile) + +
+ @Html.ValidationMessageFor(m => m.ImportFile) +
+ @Html.CheckBoxFor(m => m.HasHeader) + @Html.LabelFor(m => m.HasHeader) +
+
+

+ +

+
+
+

Loading device import...

+
+ + } +
+

CSV Import Specification

+

Format

+
    +
  • The import file must be in comma-separated values format (CSV Reference).
  • +
  • Be conscious of editors removing leading zeros from serial numbers (ie: Microsoft Excel).
  • +
+

Fields

+
The following fields/columns are available for to the import file. The Device Serial Number is the only required field, all other fields are optional. Fields can appear in any order.
+ + + + + + + + + @foreach (var field in Model.HeaderTypes) + { + + + + + } + +
Field NameDescription
@field.Item2 + @field.Item3 + @if (field.Item1 == DeviceImportFieldTypes.DeviceSerialNumber.ToString()) + { + Required + } + else if (field.Item1 == DeviceImportFieldTypes.ModelId.ToString()) + { + (Show IDs) + } + else if (field.Item1 == DeviceImportFieldTypes.ProfileId.ToString()) + { + (Show IDs) + } + else if (field.Item1 == DeviceImportFieldTypes.BatchId.ToString()) + { + (Show IDs) + } + +
+ + +
+ + + + + + + + + + + @foreach (var dm in Model.DeviceModels) + { + + + + + + + } + +
IDDescriptionManufacturerModel
@Html.ActionLink(dm.Id.ToString(), MVC.Config.DeviceModel.Index(dm.Id))@dm.ToString()@dm.Manufacturer@dm.Model
+
+ +
+ + + + + + + + + + + @foreach (var dp in Model.DeviceProfiles) + { + + + + + + + } + +
IDNameShort NameDescription
@Html.ActionLink(dp.Id.ToString(), MVC.Config.DeviceProfile.Index(dp.Id))@dp.Name@dp.ShortName@dp.Description
+
+ +
+ + + + + + + + + + @foreach (var db in Model.DeviceBatches) + { + + + + + + } + +
IDNamePurchase Date
@Html.ActionLink(db.Id.ToString(), MVC.Config.DeviceBatch.Index(db.Id))@db.Name@CommonHelpers.FriendlyDate(db.PurchaseDate)
+
+ + +
+ +@if (Model.CompletedImportSessionContext != null) +{ +
+

Successfully imported/updated @Model.CompletedImportSessionContext.AffectedRecords device@(Model.CompletedImportSessionContext.AffectedRecords != 1 ? "s" : null).

+
File: @Model.CompletedImportSessionContext.Filename
+
+ +} \ No newline at end of file diff --git a/Disco.Web/Views/Device/Import.generated.cs b/Disco.Web/Views/Device/Import.generated.cs new file mode 100644 index 00000000..a678ccae --- /dev/null +++ b/Disco.Web/Views/Device/Import.generated.cs @@ -0,0 +1,698 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Disco.Web.Views.Device +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Net; + using System.Text; + using System.Web; + using System.Web.Helpers; + using System.Web.Mvc; + using System.Web.Mvc.Ajax; + using System.Web.Mvc.Html; + using System.Web.Routing; + using System.Web.Security; + using System.Web.UI; + using System.Web.WebPages; + using Disco; + using Disco.BI.Extensions; + using Disco.Models.Repository; + + #line 2 "..\..\Views\Device\Import.cshtml" + using Disco.Models.Services.Devices.Importing; + + #line default + #line hidden + using Disco.Services; + using Disco.Services.Authorization; + using Disco.Services.Web; + using Disco.Web; + using Disco.Web.Extensions; + + [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")] + [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/Import.cshtml")] + public partial class Import : Disco.Services.Web.WebViewPage + { + public Import() + { + } + public override void Execute() + { + + #line 3 "..\..\Views\Device\Import.cshtml" + + Authorization.Require(Claims.Device.Actions.Import); + + ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Import Devices"); + + + #line default + #line hidden +WriteLiteral("\r\n\r\n"); + + + #line 9 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 9 "..\..\Views\Device\Import.cshtml" + using (Html.BeginForm(MVC.API.Device.ImportBegin(), FormMethod.Post, new { enctype = "multipart/form-data" })) + { + + + #line default + #line hidden +WriteLiteral(" \r\n

Import Devices

\r\n \r\n " + +"\r\n \r\n \r\n \r\n
\r\n"); + +WriteLiteral(" "); + + + #line 16 "..\..\Views\Device\Import.cshtml" + Write(Html.LabelFor(m => m.ImportFile)); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n
\r\n"); + +WriteLiteral(" "); + + + #line 20 "..\..\Views\Device\Import.cshtml" + Write(Html.ValidationMessageFor(m => m.ImportFile)); + + + #line default + #line hidden +WriteLiteral("\r\n
\r\n"); + +WriteLiteral(" "); + + + #line 22 "..\..\Views\Device\Import.cshtml" + Write(Html.CheckBoxFor(m => m.HasHeader)); + + + #line default + #line hidden +WriteLiteral("\r\n"); + +WriteLiteral(" "); + + + #line 23 "..\..\Views\Device\Import.cshtml" + Write(Html.LabelFor(m => m.HasHeader)); + + + #line default + #line hidden +WriteLiteral("\r\n
\r\n
\r\n \r\n \r\n

\r\n \r\n"); + +WriteLiteral(" \r\n

Loading device import...

\r\n \r\n"); + +WriteLiteral(@" +"); + + + #line 56 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n

CSV Import Specification

\r\n

Format

\r\n \r\n
  • The import file must be in comma-separated values fo" + +"rmat (CSV Reference).
  • \r\n
  • Be conscious of editors removing leadi" + +"ng zeros from serial numbers (ie: Microsoft Excel).
  • \r\n \r\n " + +"

    Fields

    \r\n The following fields/columns are available for to the import file. The Device Se" + +"rial Number is the only required field, all other fields are optional. Fields ca" + +"n appear in any order.\r\n \r\n \r\n \r\n Field Name\r\n Description\r\n " + +"\r\n \r\n \r\n"); + + + #line 74 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 74 "..\..\Views\Device\Import.cshtml" + foreach (var field in Model.HeaderTypes) + { + + + #line default + #line hidden +WriteLiteral(" \r\n "); + + + #line 77 "..\..\Views\Device\Import.cshtml" + Write(field.Item2); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + +WriteLiteral(" "); + + + #line 79 "..\..\Views\Device\Import.cshtml" + Write(field.Item3); + + + #line default + #line hidden +WriteLiteral("\r\n"); + + + #line 80 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 80 "..\..\Views\Device\Import.cshtml" + if (field.Item1 == DeviceImportFieldTypes.DeviceSerialNumber.ToString()) + { + + + #line default + #line hidden +WriteLiteral(" Required\r\n"); + + + #line 83 "..\..\Views\Device\Import.cshtml" + } + else if (field.Item1 == DeviceImportFieldTypes.ModelId.ToString()) + { + + + #line default + #line hidden +WriteLiteral(" (Show IDs)\r\n"); + + + #line 87 "..\..\Views\Device\Import.cshtml" + } + else if (field.Item1 == DeviceImportFieldTypes.ProfileId.ToString()) + { + + + #line default + #line hidden +WriteLiteral(" (Show IDs)\r\n"); + + + #line 91 "..\..\Views\Device\Import.cshtml" + } + else if (field.Item1 == DeviceImportFieldTypes.BatchId.ToString()) + { + + + #line default + #line hidden +WriteLiteral(" (Show IDs)\r\n"); + + + #line 95 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral("\r\n \r\n \r\n"); + + + #line 99 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n\r\n\r\n \r\n + + + ID + Description + Manufacturer + Model + + + +"); + + + #line 115 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 115 "..\..\Views\Device\Import.cshtml" + foreach (var dm in Model.DeviceModels) + { + + + #line default + #line hidden +WriteLiteral(" \r\n "); + + + #line 118 "..\..\Views\Device\Import.cshtml" + Write(Html.ActionLink(dm.Id.ToString(), MVC.Config.DeviceModel.Index(dm.Id))); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 119 "..\..\Views\Device\Import.cshtml" + Write(dm.ToString()); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 120 "..\..\Views\Device\Import.cshtml" + Write(dm.Manufacturer); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 121 "..\..\Views\Device\Import.cshtml" + Write(dm.Model); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 123 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n\r\n \r\n + + + ID + Name + Short Name + Description + + + +"); + + + #line 139 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 139 "..\..\Views\Device\Import.cshtml" + foreach (var dp in Model.DeviceProfiles) + { + + + #line default + #line hidden +WriteLiteral(" \r\n "); + + + #line 142 "..\..\Views\Device\Import.cshtml" + Write(Html.ActionLink(dp.Id.ToString(), MVC.Config.DeviceProfile.Index(dp.Id))); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 143 "..\..\Views\Device\Import.cshtml" + Write(dp.Name); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 144 "..\..\Views\Device\Import.cshtml" + Write(dp.ShortName); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 145 "..\..\Views\Device\Import.cshtml" + Write(dp.Description); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 147 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n\r\n \r\n + + + ID + Name + Purchase Date + + + +"); + + + #line 162 "..\..\Views\Device\Import.cshtml" + + + #line default + #line hidden + + #line 162 "..\..\Views\Device\Import.cshtml" + foreach (var db in Model.DeviceBatches) + { + + + #line default + #line hidden +WriteLiteral(" \r\n "); + + + #line 165 "..\..\Views\Device\Import.cshtml" + Write(Html.ActionLink(db.Id.ToString(), MVC.Config.DeviceBatch.Index(db.Id))); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 166 "..\..\Views\Device\Import.cshtml" + Write(db.Name); + + + #line default + #line hidden +WriteLiteral("\r\n "); + + + #line 167 "..\..\Views\Device\Import.cshtml" + Write(CommonHelpers.FriendlyDate(db.PurchaseDate)); + + + #line default + #line hidden +WriteLiteral("\r\n \r\n"); + + + #line 169 "..\..\Views\Device\Import.cshtml" + } + + + #line default + #line hidden +WriteLiteral(" \r\n \r\n \r\n\r\n \r\n $(function () {\r\n var dialogOptions = {\r\n " + +" width: 700,\r\n height: 600,\r\n re" + +"sizable: false,\r\n modal: true,\r\n autoOpen:" + +" false\r\n },\r\n $DeviceModelsDialog = null,\r\n " + +" $DeviceProfilesDialog = null,\r\n $DeviceBatchesDialog = n" + +"ull;\r\n\r\n $(\'#Devices_Import_Documentation_DeviceModels_Button\').c" + +"lick(function (e) {\r\n e.preventDefault();\r\n " + +" if (!$DeviceModelsDialog)\r\n $DeviceModelsDialog = $(\'#D" + +"evices_Import_Documentation_DeviceModels_Dialog\').dialog(dialogOptions);\r\n " + +" $DeviceModelsDialog.dialog(\'open\');\r\n });\r\n\r\n " + +" $(\'#Devices_Import_Documentation_DeviceProfiles_Button\').click(functio" + +"n (e) {\r\n e.preventDefault();\r\n if (!$Devi" + +"ceProfilesDialog)\r\n $DeviceProfilesDialog = $(\'#Devices_I" + +"mport_Documentation_DeviceProfiles_Dialog\').dialog(dialogOptions);\r\n " + +" $DeviceProfilesDialog.dialog(\'open\');\r\n });\r\n " + +" $(\'#Devices_Import_Documentation_DeviceBatches_Button\').click(function (e) {" + +"\r\n e.preventDefault();\r\n if (!$DeviceBatch" + +"esDialog)\r\n $DeviceBatchesDialog = $(\'#Devices_Import_Doc" + +"umentation_DeviceBatches_Dialog\').dialog(dialogOptions);\r\n $D" + +"eviceBatchesDialog.dialog(\'open\');\r\n });\r\n });\r\n " + +" \r\n \r\n\r\n"); + + + #line 210 "..\..\Views\Device\Import.cshtml" + if (Model.CompletedImportSessionContext != null) +{ + + + #line default + #line hidden +WriteLiteral(" \r\n

    Successfully imported/updated "); + + + #line 213 "..\..\Views\Device\Import.cshtml" + Write(Model.CompletedImportSessionContext.AffectedRecords); + + + #line default + #line hidden +WriteLiteral(" device"); + + + #line 213 "..\..\Views\Device\Import.cshtml" + Write(Model.CompletedImportSessionContext.AffectedRecords != 1 ? "s" : null); + + + #line default + #line hidden +WriteLiteral(".

    \r\n
    File: "); + + + #line 214 "..\..\Views\Device\Import.cshtml" + Write(Model.CompletedImportSessionContext.Filename); + + + #line default + #line hidden +WriteLiteral("
    \r\n \r\n"); + +WriteLiteral(@" +"); + + + #line 232 "..\..\Views\Device\Import.cshtml" +} + + #line default + #line hidden + } + } +} +#pragma warning restore 1591 diff --git a/Disco.Web/Views/Device/ImportExport.cshtml b/Disco.Web/Views/Device/ImportExport.cshtml deleted file mode 100644 index b8255b7e..00000000 --- a/Disco.Web/Views/Device/ImportExport.cshtml +++ /dev/null @@ -1,192 +0,0 @@ -@model Disco.Web.Models.Device.ImportModel -@{ - Authorization.RequireAny(Claims.Device.Actions.Import, Claims.Device.Actions.Export); - - ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Import/Export Devices"); -} -@if (Authorization.Has(Claims.Device.Actions.Import)){ -
    - @using (Html.BeginForm(MVC.API.Device.ImportParse(), FormMethod.Post, new { enctype = "multipart/form-data" })) - { - @Html.ValidationSummary() -
    -

    Import Devices

    - - - - - -
    - @Html.LabelFor(m => m.ImportFile) - - -
    -

    - -

    -
    - } -
    -

    CSV Import Specification

    -

    Format

    -
      -
    • The import file must be in comma-separated values format (CSV Reference).
    • -
    • The first line will be ignored (it is assumed the file includes headers).
    • -
    • Be conscious of editors removing leading zeros from serial numbers (ie: Microsoft Excel).
    • -
    -

    Fields

    -
    The following fields/columns are available for to the import file. The order of the fields must be as shown below.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Field NameDescription
    Serial NumberRequired - must contain the device serial number (maximum of 60 characters). -
    Device ModelThe ID for the Device Model (Show IDs). Default: 1 [@Html.ActionLink(Model.DeviceModels[0].ToString(), MVC.Config.DeviceModel.Index(Model.DeviceModels[0].Id))] -
    Device ProfileThe ID for the Device Profile (Show IDs). Default: 1 [@Html.ActionLink(Model.DeviceProfiles[0].ToString(), MVC.Config.DeviceProfile.Index(Model.DeviceProfiles[0].Id))] -
    Device BatchThe ID for the Device Batch (Show IDs). Default: <None> -
    Assigned UserThe ID for the User assigned to the device. Default: <None> -
    LocationUpdates the Location of the device. Maximum of 250 characters. Default: <None> -
    Asset NumberUpdates the Asset Number of the device. Maximum of 40 characters. Default: <None> -
    - - -
    - - - - - - - - - - - @foreach (var dm in Model.DeviceModels) - { - - - - - - - } - -
    IDDescriptionManufacturerModel
    @Html.ActionLink(dm.Id.ToString(), MVC.Config.DeviceModel.Index(dm.Id))@dm.ToString()@dm.Manufacturer@dm.Model
    -
    - -
    - - - - - - - - - - - @foreach (var dp in Model.DeviceProfiles) - { - - - - - - - } - -
    IDNameShort NameDescription
    @Html.ActionLink(dp.Id.ToString(), MVC.Config.DeviceProfile.Index(dp.Id))@dp.Name@dp.ShortName@dp.Description
    -
    - -
    - - - - - - - - - - @foreach (var db in Model.DeviceBatches) - { - - - - - - } - -
    IDNamePurchase Date
    @Html.ActionLink(db.Id.ToString(), MVC.Config.DeviceBatch.Index(db.Id))@db.Name@CommonHelpers.FriendlyDate(db.PurchaseDate)
    -
    - - -
    -
    -} \ No newline at end of file diff --git a/Disco.Web/Views/Device/ImportExport.generated.cs b/Disco.Web/Views/Device/ImportExport.generated.cs deleted file mode 100644 index b29a297a..00000000 --- a/Disco.Web/Views/Device/ImportExport.generated.cs +++ /dev/null @@ -1,553 +0,0 @@ -#pragma warning disable 1591 -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.34014 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Disco.Web.Views.Device -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Net; - using System.Text; - using System.Web; - using System.Web.Helpers; - using System.Web.Mvc; - using System.Web.Mvc.Ajax; - using System.Web.Mvc.Html; - using System.Web.Routing; - using System.Web.Security; - using System.Web.UI; - using System.Web.WebPages; - using Disco; - using Disco.BI.Extensions; - using Disco.Models.Repository; - using Disco.Services; - using Disco.Services.Authorization; - using Disco.Services.Web; - using Disco.Web; - using Disco.Web.Extensions; - - [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")] - [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/ImportExport.cshtml")] - public partial class ImportExport : Disco.Services.Web.WebViewPage - { - public ImportExport() - { - } - public override void Execute() - { - - #line 2 "..\..\Views\Device\ImportExport.cshtml" - - Authorization.RequireAny(Claims.Device.Actions.Import, Claims.Device.Actions.Export); - - ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Import/Export Devices"); - - - #line default - #line hidden -WriteLiteral("\r\n"); - - - #line 7 "..\..\Views\Device\ImportExport.cshtml" - if (Authorization.Has(Claims.Device.Actions.Import)){ - - - #line default - #line hidden -WriteLiteral("\r\n"); - - - #line 9 "..\..\Views\Device\ImportExport.cshtml" - - - #line default - #line hidden - - #line 9 "..\..\Views\Device\ImportExport.cshtml" - using (Html.BeginForm(MVC.API.Device.ImportParse(), FormMethod.Post, new { enctype = "multipart/form-data" })) - { - - - #line default - #line hidden - - #line 11 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ValidationSummary()); - - - #line default - #line hidden - - #line 11 "..\..\Views\Device\ImportExport.cshtml" - - - - #line default - #line hidden -WriteLiteral(" \r\n

    Import Devices

    \r\n \r\n " + -"\r\n \r\n \r\n \r\n
    \r\n"); - -WriteLiteral(" "); - - - #line 17 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.LabelFor(m => m.ImportFile)); - - - #line default - #line hidden -WriteLiteral("\r\n \r\n \r\n
    \r\n " + -" \r\n \r\n

    \r\n \r\n"); - - - #line 28 "..\..\Views\Device\ImportExport.cshtml" - } - - - #line default - #line hidden -WriteLiteral(" \r\n

    CSV Import Specification

    \r\n

    Format

    \r\n \r\n
  • The import file must be in comma-separated values fo" + -"rmat (CSV Reference).
  • -
  • The first line will be ignored (it is assumed the file includes headers).
  • -
  • Be conscious of editors removing leading zeros from serial numbers (ie: Microsoft Excel).
  • - -

    Fields

    - The following fields/columns are available for to the import file. The o" + -"rder of the fields must be as shown below.\r\n \r\n \r\n \r\n Field Name - Description - - - - - Serial Number - Required - must contain the device serial number (maximum of 60 characters). - - - - Device Model - The ID for the Device Model (Show IDs). Default: 1 ["); - - - #line 54 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ActionLink(Model.DeviceModels[0].ToString(), MVC.Config.DeviceModel.Index(Model.DeviceModels[0].Id))); - - - #line default - #line hidden -WriteLiteral("]\r\n \r\n \r\n \r\n " + -" Device Profile\r\n The ID for the Device Profile (Show IDs). Default: 1 ["); - - - #line 59 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ActionLink(Model.DeviceProfiles[0].ToString(), MVC.Config.DeviceProfile.Index(Model.DeviceProfiles[0].Id))); - - - #line default - #line hidden -WriteLiteral("]\r\n \r\n \r\n \r\n " + -" Device Batch\r\n The ID for the Device Batch (Show IDs). Default: <None>\r\n \r\n \r\n " + -" \r\n Assigned User\r\n " + -" The ID for the User assigned to the device. Default: <None>\r\n \r\n \r\n " + -" \r\n Location\r\n Updates the Location of the device. Maximum of 250 characters. Default: <None>\r\n \r\n \r\n " + -" \r\n Asset Number\r\n " + -" Updates the Asset Number of the device. Maximum of 40 characters. Defau" + -"lt: <None>\r\n \r\n \r\n " + -" \r\n \r\n\r\n\r\n \r\n - - - ID - Description - Manufacturer - Model - - - -"); - - - #line 97 "..\..\Views\Device\ImportExport.cshtml" - - - #line default - #line hidden - - #line 97 "..\..\Views\Device\ImportExport.cshtml" - foreach (var dm in Model.DeviceModels) - { - - - #line default - #line hidden -WriteLiteral(" \r\n "); - - - #line 100 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ActionLink(dm.Id.ToString(), MVC.Config.DeviceModel.Index(dm.Id))); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 101 "..\..\Views\Device\ImportExport.cshtml" - Write(dm.ToString()); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 102 "..\..\Views\Device\ImportExport.cshtml" - Write(dm.Manufacturer); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 103 "..\..\Views\Device\ImportExport.cshtml" - Write(dm.Model); - - - #line default - #line hidden -WriteLiteral("\r\n \r\n"); - - - #line 105 "..\..\Views\Device\ImportExport.cshtml" - } - - - #line default - #line hidden -WriteLiteral(" \r\n \r\n \r\n\r\n \r\n - - - ID - Name - Short Name - Description - - - -"); - - - #line 121 "..\..\Views\Device\ImportExport.cshtml" - - - #line default - #line hidden - - #line 121 "..\..\Views\Device\ImportExport.cshtml" - foreach (var dp in Model.DeviceProfiles) - { - - - #line default - #line hidden -WriteLiteral(" \r\n "); - - - #line 124 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ActionLink(dp.Id.ToString(), MVC.Config.DeviceProfile.Index(dp.Id))); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 125 "..\..\Views\Device\ImportExport.cshtml" - Write(dp.Name); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 126 "..\..\Views\Device\ImportExport.cshtml" - Write(dp.ShortName); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 127 "..\..\Views\Device\ImportExport.cshtml" - Write(dp.Description); - - - #line default - #line hidden -WriteLiteral("\r\n \r\n"); - - - #line 129 "..\..\Views\Device\ImportExport.cshtml" - } - - - #line default - #line hidden -WriteLiteral(" \r\n \r\n \r\n\r\n \r\n - - - ID - Name - Purchase Date - - - -"); - - - #line 144 "..\..\Views\Device\ImportExport.cshtml" - - - #line default - #line hidden - - #line 144 "..\..\Views\Device\ImportExport.cshtml" - foreach (var db in Model.DeviceBatches) - { - - - #line default - #line hidden -WriteLiteral(" \r\n "); - - - #line 147 "..\..\Views\Device\ImportExport.cshtml" - Write(Html.ActionLink(db.Id.ToString(), MVC.Config.DeviceBatch.Index(db.Id))); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 148 "..\..\Views\Device\ImportExport.cshtml" - Write(db.Name); - - - #line default - #line hidden -WriteLiteral("\r\n "); - - - #line 149 "..\..\Views\Device\ImportExport.cshtml" - Write(CommonHelpers.FriendlyDate(db.PurchaseDate)); - - - #line default - #line hidden -WriteLiteral("\r\n \r\n"); - - - #line 151 "..\..\Views\Device\ImportExport.cshtml" - } - - - #line default - #line hidden -WriteLiteral(" \r\n \r\n \r\n\r\n \r\n $(function () {\r\n var dialogOptions = {\r\n " + -" width: 700,\r\n height: 600,\r\n re" + -"sizable: false,\r\n modal: true,\r\n autoOpen:" + -" false\r\n },\r\n $showDeviceModelsDialog = null,\r\n " + -" $showDeviceProfilesDialog = null,\r\n $showDeviceBatch" + -"esDialog = null;\r\n\r\n $(\'#showDeviceModels\').click(function (e) {\r" + -"\n e.preventDefault();\r\n if (!$showDeviceMo" + -"delsDialog)\r\n $showDeviceModelsDialog = $(\'#showDeviceMod" + -"elsDialog\').dialog(dialogOptions);\r\n $showDeviceModelsDialog." + -"dialog(\'open\');\r\n });\r\n\r\n $(\'#showDeviceProfiles\')" + -".click(function (e) {\r\n e.preventDefault();\r\n " + -" if (!$showDeviceProfilesDialog)\r\n $showDeviceProfiles" + -"Dialog = $(\'#showDeviceProfilesDialog\').dialog(dialogOptions);\r\n " + -" $showDeviceProfilesDialog.dialog(\'open\');\r\n });\r\n " + -" $(\'#showDeviceBatches\').click(function (e) {\r\n e.preventD" + -"efault();\r\n if (!$showDeviceBatchesDialog)\r\n " + -" $showDeviceBatchesDialog = $(\'#showDeviceBatchesDialog\').dialog(dialogOpt" + -"ions);\r\n $showDeviceBatchesDialog.dialog(\'open\');\r\n " + -" });\r\n });\r\n \r\n \r\n\r\n"); - - - #line 192 "..\..\Views\Device\ImportExport.cshtml" -} - - #line default - #line hidden - } - } -} -#pragma warning restore 1591 diff --git a/Disco.Web/Views/Device/ImportHeaders.cshtml b/Disco.Web/Views/Device/ImportHeaders.cshtml new file mode 100644 index 00000000..4897cae0 --- /dev/null +++ b/Disco.Web/Views/Device/ImportHeaders.cshtml @@ -0,0 +1,183 @@ +@model Disco.Web.Models.Device.ImportHeadersModel +@{ + Authorization.Require(Claims.Device.Actions.Import); + + ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Import Devices", MVC.Device.Import(), string.Format("File: {0}", Model.Context.Filename)); +} +
    + +

    Define Import Columns

    + + @if (Model.Context.RawData.Count > 10) + { +

    @Model.Context.RawData.Count records were loaded, only the first 10 are shown here.

    + } + +

    The Device Serial Number column must be defined.

    + +
    + + + + @foreach (var header in Model.Context.Header.Select((h, i) => Tuple.Create(h, i))) + { + + } + + + @foreach (var header in Model.Context.Header.Select((h, i) => Tuple.Create(h, i))) + { + + } + + + + @foreach (var record in Model.Context.RawData.Take(10)) + { + + @foreach (var field in record.Select((h, i) => Tuple.Create(h, i))) + { + + } + + } + +
    @header.Item1.Item1
    + +
    @field.Item1
    +
    +
    + @using (Html.BeginForm(MVC.API.Device.ImportParse(Model.Context.SessionId, null))) + { + Parse Device Import + } +
    +
    +
    +

    Parsing device import...

    +
    + diff --git a/Disco.Web/Views/Device/ImportHeaders.generated.cs b/Disco.Web/Views/Device/ImportHeaders.generated.cs new file mode 100644 index 00000000..8ed7f34d --- /dev/null +++ b/Disco.Web/Views/Device/ImportHeaders.generated.cs @@ -0,0 +1,557 @@ +#pragma warning disable 1591 +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34014 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Disco.Web.Views.Device +{ + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Net; + using System.Text; + using System.Web; + using System.Web.Helpers; + using System.Web.Mvc; + using System.Web.Mvc.Ajax; + using System.Web.Mvc.Html; + using System.Web.Routing; + using System.Web.Security; + using System.Web.UI; + using System.Web.WebPages; + using Disco; + using Disco.BI.Extensions; + using Disco.Models.Repository; + using Disco.Services; + using Disco.Services.Authorization; + using Disco.Services.Web; + using Disco.Web; + using Disco.Web.Extensions; + + [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")] + [System.Web.WebPages.PageVirtualPathAttribute("~/Views/Device/ImportHeaders.cshtml")] + public partial class ImportHeaders : Disco.Services.Web.WebViewPage + { + public ImportHeaders() + { + } + public override void Execute() + { + + #line 2 "..\..\Views\Device\ImportHeaders.cshtml" + + Authorization.Require(Claims.Device.Actions.Import); + + ViewBag.Title = Html.ToBreadcrumb("Devices", MVC.Device.Index(), "Import Devices", MVC.Device.Import(), string.Format("File: {0}", Model.Context.Filename)); + + + #line default + #line hidden +WriteLiteral("\r\n\r\n\r\n

    Define Import Columns

    \r\n\r\n"); + + + #line 11 "..\..\Views\Device\ImportHeaders.cshtml" + + + #line default + #line hidden + + #line 11 "..\..\Views\Device\ImportHeaders.cshtml" + if (Model.Context.RawData.Count > 10) + { + + + #line default + #line hidden +WriteLiteral(" "); + + + #line 13 "..\..\Views\Device\ImportHeaders.cshtml" + Write(Model.Context.RawData.Count); + + + #line default + #line hidden +WriteLiteral(" records were loaded, only the first 10 are shown here.\r\n"); + + + #line 14 "..\..\Views\Device\ImportHeaders.cshtml" + } + + + #line default + #line hidden +WriteLiteral("\r\n The Device Serial Number column must be defined.\r\n\r\n \r\n \r\n \r\n \r\n"); + + + #line 22 "..\..\Views\Device\ImportHeaders.cshtml" + + + #line default + #line hidden + + #line 22 "..\..\Views\Device\ImportHeaders.cshtml" + foreach (var header in Model.Context.Header.Select((h, i) => Tuple.Create(h, i))) + { + + + #line default + #line hidden +WriteLiteral("