From ab5e751720d3f6b6b0230a190fe73d1c08046e6c Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sun, 18 Oct 2015 05:45:00 +0000 Subject: [PATCH] Version 2.4.0 Stand 18.10.15 --- Stundensheet.xlsx | Bin 17587 -> 18074 bytes .../SendNSWMessageService/NSWSendService.cs | 15 +++++++- .../ANSWMessageComparer.cs | 25 ++++++++++++ .../bsmd.ReportGenerator/BSMDDocument.cs | 6 +-- nsw/Source/bsmd.database/ATA.cs | 2 +- nsw/Source/bsmd.database/ATD.cs | 2 +- nsw/Source/bsmd.database/DatabaseEntity.cs | 3 +- nsw/Source/bsmd.database/HAZ.cs | 2 + .../LastTenPortFacilitiesCalled.cs | 12 ++++-- nsw/Source/bsmd.database/POBD.cs | 2 +- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/RuleEngine.cs | 33 ++++++++++++++++ nsw/Source/bsmd.database/SEC.cs | 10 ++++- nsw/Source/bsmd.database/TIEFA.cs | 2 +- nsw/Source/bsmd.database/TIEFD.cs | 4 +- nsw/Source/bsmd.database/Util.cs | 36 ++++++++++++++++++ .../bsmd.database/ValidationAttribute.cs | 4 ++ nsw/Source/bsmd.database/WAS.cs | 33 ++++++++++++++++ nsw/Source/bsmd.dbh/Request.cs | 17 ++++++--- nsw/Source/bsmd.herberg.FormService/Util.cs | 22 ++++++++++- nsw/Stand_2015_09_29.docx | Bin 0 -> 38833 bytes server.txt | 2 +- 23 files changed, 210 insertions(+), 26 deletions(-) create mode 100644 nsw/Source/bsmd.ReportGenerator/ANSWMessageComparer.cs create mode 100644 nsw/Stand_2015_09_29.docx diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 3ea144ac520763fd915cc0e811d5aae11020d580..4f0c1b952ce1c3cc723d3f2e7090364690b8b9b8 100644 GIT binary patch delta 8369 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 EKeJ7|iU0rr delta 7853 zcmZ8`bx>TL92o8e;0tAPFNg%kp69^g{g1ftiL3Z-} zs`lI6`_Fr?y6aZ=x#x7(eVrMPSQ~>_MMVAreAS#!g^z%6ZkVD&NDlCE2e`R{Ei64K zTk(T=#-C~TO1N~)Tg^aB4F2mvZjG{7MD33OMy_J`&gK7aB(C4w?T^P9qjfHL%#Vn8WaJe^-3hFF>q4u`FTQ^U;?f~qO>@nDT;lmRM))Fl4 zmN$qxH3)h>-#s4QcZc1pml_}Y+QvV&tv)YuKN5yI)D2H?Rkyn4YPEWp<90SmXeK;+ zNwfmv4e2(kcc(q;-OYQIQG>gqUhf-$$GMZgSE3_R@7*mAh zGBEX&YBco>uy{yNHtcV?UBqb8+uB96gVEQc?A2ftbp$N3Kow9cqn0ep# zhKWYk2(`v?e3KSg!FEjcZvtJp4`{B;IKP+I`UGLE66WhCVP0Gx!$j2hi=eto-I4+w zIn5f7rSdR52De_8rZ$OBSc*KgjOKfYj7BWv;1%i+N1L)Wk<{U0mo%r*ja20b!T0)T zNvZ3LwzPTAx4RIVL_@}bN;$h`89D80ty)!p`YIA}`>Jckj$}NP!^9eDErbvo7?^C5lRw*5RoTd|ANST4NL=vKW62qZh#gg{0i|IvTTK%0A<5 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 diff --git a/nsw/Source/SendNSWMessageService/NSWSendService.cs b/nsw/Source/SendNSWMessageService/NSWSendService.cs index ff21b76a..6832d697 100644 --- a/nsw/Source/SendNSWMessageService/NSWSendService.cs +++ b/nsw/Source/SendNSWMessageService/NSWSendService.cs @@ -117,9 +117,22 @@ namespace SendNSWMessageService // nachträglich geändert werden. Ich denke hier muss in dashface ggf. der Status // wieder auf PREPARE gesetzt werden _log.Debug("Visit/Transit found, SENDING DATA messages"); + foreach (Message message in messages) { - // T + // Wenn das ein Transit ist, werden nicht erforderliche Meldeklassen übersprungen + if (core.IsTransit) + { + if ((message.MessageNotificationClass == Message.NotificationClass.BKRD) || + (message.MessageNotificationClass == Message.NotificationClass.PRE72H) || + (message.MessageNotificationClass == Message.NotificationClass.TIEFD) || + (message.MessageNotificationClass == Message.NotificationClass.NAME) || + (message.MessageNotificationClass == Message.NotificationClass.INFO) || + (message.MessageNotificationClass == Message.NotificationClass.POBD)) + continue; + } + + if (message.InternalStatus != Message.BSMDStatus.CONFIRMED) //(message.InternalStatus == Message.BSMDStatus.PREPARE) || //(message.InternalStatus == Message.BSMDStatus.TOSEND)) diff --git a/nsw/Source/bsmd.ReportGenerator/ANSWMessageComparer.cs b/nsw/Source/bsmd.ReportGenerator/ANSWMessageComparer.cs new file mode 100644 index 00000000..f6d96139 --- /dev/null +++ b/nsw/Source/bsmd.ReportGenerator/ANSWMessageComparer.cs @@ -0,0 +1,25 @@ +// +// Class: ANSWMessageComparer +// Current CLR: 4.0.30319.34209 +// System: Microsoft Visual Studio 10.0 +// Author: dani +// Created: 8/30/2015 6:36:43 PM +// +// Copyright (c) 2015 Informatikbüro Daniel Schick. All rights reserved. + +using System; +using System.Collections.Generic; + +using bsmd.database; + +namespace bsmd.ReportGenerator +{ + public class ANSWMessageComparer : IComparer + { + public int Compare(Message x, Message y) + { + return Message.ANSWSortList.IndexOf(x.MessageNotificationClass).CompareTo(Message.ANSWSortList.IndexOf(y.MessageNotificationClass)); + } + } + +} diff --git a/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs b/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs index 5c9111a4..335bb032 100644 --- a/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs +++ b/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs @@ -425,8 +425,8 @@ namespace bsmd.ReportGenerator Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("handling type"); hRow.Cells[2].AddParagraph("Code (NST2007)"); - hRow.Cells[1].AddParagraph("Number of items"); - hRow.Cells[2].AddParagraph("Gross quantity (tons)"); + hRow.Cells[3].AddParagraph("Number of items"); + hRow.Cells[4].AddParagraph("Gross quantity (tons)"); for (int i = 0; i < message.Elements.Count; i++) { @@ -436,7 +436,7 @@ namespace bsmd.ReportGenerator row.Cells[1].AddParagraph(ladg.CargoHandlingType.HasValue ? (ladg.CargoHandlingType.Value == 0) ? "Load" : "Discharge" : ""); row.Cells[2].AddParagraph(ladg.CargoCodeNST ?? ""); row.Cells[3].AddParagraph(ladg.CargoNumberOfItems.HasValue ? ladg.CargoNumberOfItems.Value.ToString() : ""); - row.Cells[4].AddParagraph(ladg.CargoGrossQuantity_TNE.HasValue ? ladg.CargoGrossQuantity_TNE.Value.ToString() : ""); + row.Cells[4].AddParagraph(ladg.CargoGrossQuantity_TNE.HasValue ? ladg.CargoGrossQuantity_TNE.Value.ToString("N2") : ""); } } diff --git a/nsw/Source/bsmd.database/ATA.cs b/nsw/Source/bsmd.database/ATA.cs index 1e5e855c..79fad2a7 100644 --- a/nsw/Source/bsmd.database/ATA.cs +++ b/nsw/Source/bsmd.database/ATA.cs @@ -25,7 +25,7 @@ namespace bsmd.database #region Properties [ShowReport] - [Validation(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.TIME_IMPLAUSIBLE)] public DateTime? ATAPortOfCall { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/ATD.cs b/nsw/Source/bsmd.database/ATD.cs index 173b40be..ada5247f 100644 --- a/nsw/Source/bsmd.database/ATD.cs +++ b/nsw/Source/bsmd.database/ATD.cs @@ -25,7 +25,7 @@ namespace bsmd.database #region Properties [ShowReport] - [Validation(ValidationCode.NOT_NULL)] + [Validation(ValidationCode.TIME_IMPLAUSIBLE)] public DateTime? ATDPortOfCall { get; set; } #endregion diff --git a/nsw/Source/bsmd.database/DatabaseEntity.cs b/nsw/Source/bsmd.database/DatabaseEntity.cs index 4b246278..08fa1143 100644 --- a/nsw/Source/bsmd.database/DatabaseEntity.cs +++ b/nsw/Source/bsmd.database/DatabaseEntity.cs @@ -132,8 +132,9 @@ namespace bsmd.database foreach (PropertyInfo property in props) { + bool isDouble = (property.PropertyType == typeof(Nullable)); object propValue = property.GetValue(this, null); - string value = (propValue == null) ? string.Empty : propValue.ToString(); + string value = (propValue == null) ? string.Empty : (isDouble ? ((double) propValue).ToString("N2") : propValue.ToString()); string displayName = property.Name; if(Attribute.IsDefined(property, typeof(ReportDisplayNameAttribute))) { ReportDisplayNameAttribute reportDisplayNameAttribute = Attribute.GetCustomAttribute(property, typeof(ReportDisplayNameAttribute)) diff --git a/nsw/Source/bsmd.database/HAZ.cs b/nsw/Source/bsmd.database/HAZ.cs index a7e76ebf..fba16957 100644 --- a/nsw/Source/bsmd.database/HAZ.cs +++ b/nsw/Source/bsmd.database/HAZ.cs @@ -31,9 +31,11 @@ namespace bsmd.database #region Properties [ShowReport] + [Validation(ValidationCode.NOT_NULL)] public bool? NoDPGOnBoardOnArrival { get; set; } [ShowReport] + [Validation(ValidationCode.NOT_NULL)] public bool? DPGManifestOnBoardOnArrival { get; set; } [ShowReport] diff --git a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs index 6cf4bf3d..7cb1d32c 100644 --- a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs @@ -43,7 +43,7 @@ namespace bsmd.database [ShowReport] public string PortFacilitySecurityMattersToReport { get; set; } [ShowReport] - [Validation2(ValidationCode.NOT_NULL)] + [Validation2(ValidationCode.GISIS)] public string PortFacilityGISISCode { get; set; } public string Identifier { get; set; } @@ -138,11 +138,15 @@ namespace bsmd.database public override void Validate(List errors, List violations) { - bool locationOK = !this.PortFacilityPortLoCode.IsNullOrEmpty() || + bool locationOK = (!this.PortFacilityPortLoCode.IsNullOrEmpty()) || (!this.PortFacilityPortName.IsNullOrEmpty() && !this.PortFacilityPortCountry.IsNullOrEmpty()); - if(!locationOK) - RuleEngine.CreateViolation(ValidationCode.V703, "Either LoCode or Country + Name must be given", null); + if (!locationOK) + { + string val = string.Format("LoCode:{0} Port:{1} Country:{2}", this.PortFacilityPortLoCode ?? "", this.PortFacilityPortName ?? "", + this.PortFacilityPortCountry ?? ""); + RuleEngine.CreateViolation(ValidationCode.V703, "Either LoCode or Country + Name must be given", val); + } } #endregion diff --git a/nsw/Source/bsmd.database/POBD.cs b/nsw/Source/bsmd.database/POBD.cs index 4e21320d..f3dba2ec 100644 --- a/nsw/Source/bsmd.database/POBD.cs +++ b/nsw/Source/bsmd.database/POBD.cs @@ -40,7 +40,7 @@ namespace bsmd.database { get { - return "Persons on board on arrival"; + return "Persons on board on departure"; } } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index 96e3c726..8be604f3 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("2.3.0")] +[assembly: AssemblyInformationalVersion("2.4.0")] [assembly: AssemblyCopyright("Copyright © 2014-2015 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 27000242..7e884bd2 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -4,6 +4,6 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.3.0.*")] +[assembly: AssemblyVersion("2.4.0.*")] // wenn das nicht auskommentiert wird erhalten wir eine Warnung // [assembly: AssemblyFileVersion("1.0.0.*")] diff --git a/nsw/Source/bsmd.database/RuleEngine.cs b/nsw/Source/bsmd.database/RuleEngine.cs index 76c47401..aee03601 100644 --- a/nsw/Source/bsmd.database/RuleEngine.cs +++ b/nsw/Source/bsmd.database/RuleEngine.cs @@ -236,6 +236,39 @@ namespace bsmd.database errors.Add(RuleEngine.CreateError(validationCode, property.Name, value)); } break; + case ValidationCode.STRING_IMOCLASS: + { + Regex rgx = new Regex(@"[1-9]{1}(\.[1-9]{1})?"); + if (!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value)); + } + break; + case ValidationCode.STRING_UNNUMBER: + { + Regex rgx = new Regex("[0-9]{4}"); + if (!rgx.IsMatch(value)) errors.Add(RuleEngine.CreateError(validationCode, property.Name, value)); + } + break; + case ValidationCode.DRAUGHT_IMPLAUSIBLE: + { + double dVal = 0; + if (!Double.TryParse(value, out dVal) || dVal <= 0) + errors.Add(RuleEngine.CreateError(ValidationCode.DOUBLE_GT_ZERO, property.Name, value)); + else + if ((dVal < 20) || (dVal > 150)) + errors.Add(RuleEngine.CreateError(validationCode, property.Name, value)); + } + break; + case ValidationCode.TIME_IMPLAUSIBLE: + { + DateTime aTime; + if (value.Length == 0) errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, property.Name, value)); + if (DateTime.TryParse(value, out aTime)) + { + if ((aTime - DateTime.UtcNow).Minutes > 30) + errors.Add(RuleEngine.CreateError(validationCode, property.Name, value)); + } + } + break; default: break; } diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index d5513557..972347bc 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -49,13 +49,19 @@ namespace bsmd.database [Validation2(ValidationCode.NOT_NULL)] public bool? ValidISSCOnBoard { get; set; } [ShowReport] - public string ReasonsForNoValidISSC { get; set; } - [ShowReport] + public string ReasonsForNoValidISSC { get; set; } [Validation2(ValidationCode.NOT_NULL)] public byte? ISSCType { get; set; } [ShowReport] + [ReportDisplayName("ISSC type")] + public string ISSCTypeDisplay { get { return Util.GetISSCTypeDisplay(this.ISSCType); } } + [Validation2(ValidationCode.NOT_NULL)] public byte? ISSCIssuerType { get; set; } + [ShowReport] + [ReportDisplayName("ISSC issuer type")] + public string ISSCIssuerTypeDisplay { get { return Util.GetISSCIssuerTypeDisplay(this.ISSCIssuerType); } } + [ShowReport] [Validation2(ValidationCode.NOT_NULL)] public string ISSCIssuerName { get; set; } diff --git a/nsw/Source/bsmd.database/TIEFA.cs b/nsw/Source/bsmd.database/TIEFA.cs index 57791fe4..33e144ee 100644 --- a/nsw/Source/bsmd.database/TIEFA.cs +++ b/nsw/Source/bsmd.database/TIEFA.cs @@ -24,7 +24,7 @@ namespace bsmd.database #region Properties [ShowReport] - [Validation(ValidationCode.DOUBLE_GT_ZERO)] + [Validation(ValidationCode.DRAUGHT_IMPLAUSIBLE)] public double? DraughtUponArrival_DMT { get; set; } public override string Subtitle diff --git a/nsw/Source/bsmd.database/TIEFD.cs b/nsw/Source/bsmd.database/TIEFD.cs index 3bc87368..d1c1e15e 100644 --- a/nsw/Source/bsmd.database/TIEFD.cs +++ b/nsw/Source/bsmd.database/TIEFD.cs @@ -24,14 +24,14 @@ namespace bsmd.database #region Properties [ShowReport] - [Validation(ValidationCode.DOUBLE_GT_ZERO)] + [Validation(ValidationCode.DRAUGHT_IMPLAUSIBLE)] public double? DraughtUponDeparture_DMT { get; set; } public override string Subtitle { get { - return "Draught at arrival notification"; + return "Draught at departure notification"; } } diff --git a/nsw/Source/bsmd.database/Util.cs b/nsw/Source/bsmd.database/Util.cs index da7366fb..80d7c1e2 100644 --- a/nsw/Source/bsmd.database/Util.cs +++ b/nsw/Source/bsmd.database/Util.cs @@ -64,5 +64,41 @@ namespace bsmd.database } } + public static string GetISSCTypeDisplay(byte? val) + { + if (val.HasValue) + { + switch(val) + { + case 0: return "FULL"; + case 1: return "INTERIM"; + default: + return "UNKNOWN"; + } + } + else + { + return "Unknown"; + } + } + + public static string GetISSCIssuerTypeDisplay(byte? val) + { + if (val.HasValue) + { + switch (val) + { + case 0: return "ADMINISTRATION"; + case 1: return "RSO"; + default: + return "UNKNOWN"; + } + } + else + { + return "Unknown"; + } + } + } } diff --git a/nsw/Source/bsmd.database/ValidationAttribute.cs b/nsw/Source/bsmd.database/ValidationAttribute.cs index 2e93da25..61d8161e 100644 --- a/nsw/Source/bsmd.database/ValidationAttribute.cs +++ b/nsw/Source/bsmd.database/ValidationAttribute.cs @@ -29,6 +29,10 @@ namespace bsmd.database TWO_DIGIT, STRING_MAXLEN, STRING_EXACT_LEN, + STRING_UNNUMBER = 23, + STRING_IMOCLASS = 24, + DRAUGHT_IMPLAUSIBLE = 25, + TIME_IMPLAUSIBLE = 26, E121 = 121, E122 = 122, E123 = 123, diff --git a/nsw/Source/bsmd.database/WAS.cs b/nsw/Source/bsmd.database/WAS.cs index 145b6e4c..da5332a0 100644 --- a/nsw/Source/bsmd.database/WAS.cs +++ b/nsw/Source/bsmd.database/WAS.cs @@ -201,5 +201,38 @@ namespace bsmd.database #endregion + #region public convenience method + + public List AddRemainingWasteTypes() + { + List result = new List(); + + for (byte wType = 1; wType <= 9; wType++ ) + { + bool wasteTypeFound = false; + foreach (Waste w in this.Waste) + { + if ((w.WasteType ?? 0) == wType) + wasteTypeFound = true; + } + if (!wasteTypeFound) + { + Waste newWaste = new Waste(); + newWaste.WasteType = wType; + newWaste.WasteAmountGeneratedTillNextPort_MTQ = 0; + newWaste.WasteAmountRetained_MTQ = 0; + newWaste.WasteCapacity_MTQ = 0; + newWaste.WasteDisposalAmount_MTQ = 0; + newWaste.Identifier = ""; + newWaste.WAS = this; + this.Waste.Add(newWaste); + result.Add(newWaste); + } + } + return result; + } + + #endregion + } } diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs index a34938bc..453eff20 100644 --- a/nsw/Source/bsmd.dbh/Request.cs +++ b/nsw/Source/bsmd.dbh/Request.cs @@ -689,6 +689,7 @@ namespace bsmd.dbh rootMDH.Items[12] = mdh.SickAnimalOrPetOnBoard ?? false ? RootMDHSickAnimalOrPetOnBoard.Y : RootMDHSickAnimalOrPetOnBoard.N; rootMDH.ItemsElementName[13] = ItemsChoiceType2.ValidSanitaryControlExemptionOrCertificateOnBoard; rootMDH.Items[13] = mdh.ValidSanitaryControlExemptionOrCertificateOnBoard ?? false ? RootMDHValidSanitaryControlExemptionOrCertificateOnBoard.Y : RootMDHValidSanitaryControlExemptionOrCertificateOnBoard.N; + rootMDH.ItemsElementName[14] = ItemsChoiceType2.ValidSanitaryControlExemptionOrCertificate; RootMDHValidSanitaryControlExemptionOrCertificate cert = new RootMDHValidSanitaryControlExemptionOrCertificate(); rootMDH.Items[14] = cert; @@ -696,13 +697,19 @@ namespace bsmd.dbh cert.PlaceOfIssue = mdh.PlaceOfIssue; rootMDH.ItemsElementName[15] = ItemsChoiceType2.SanitaryControlReinspectionRequired; rootMDH.Items[15] = mdh.SanitaryControlReinspectionRequired ?? false ? RootMDHSanitaryControlReinspectionRequired.Y : RootMDHSanitaryControlReinspectionRequired.N; + rootMDH.ItemsElementName[16] = ItemsChoiceType2.InfectedAreaVisited; rootMDH.Items[16] = mdh.InfectedAreaVisited ?? false ? RootMDHInfectedAreaVisited.Y : RootMDHInfectedAreaVisited.N; - rootMDH.ItemsElementName[17] = ItemsChoiceType2.InfectedArea; - RootMDHInfectedArea infected = new RootMDHInfectedArea(); - rootMDH.Items[17] = infected; - infected.InfectedAreaPort = mdh.InfectedAreaPort; - if (mdh.InfectedAreaDate.HasValue) infected.InfectedAreaDate = mdh.InfectedAreaDate.Value; + + if (!mdh.InfectedAreaPort.IsNullOrEmpty() && mdh.InfectedAreaDate.HasValue) + { + rootMDH.ItemsElementName[17] = ItemsChoiceType2.InfectedArea; + RootMDHInfectedArea infected = new RootMDHInfectedArea(); + rootMDH.Items[17] = infected; + infected.InfectedAreaPort = mdh.InfectedAreaPort; + if (mdh.InfectedAreaDate.HasValue) infected.InfectedAreaDate = mdh.InfectedAreaDate.Value; + } + rootMDH.ItemsElementName[18] = ItemsChoiceType2.PortsOfCallLast30Days; RootMDHPortsOfCallLast30Days l30d = new RootMDHPortsOfCallLast30Days(); rootMDH.Items[18] = l30d; diff --git a/nsw/Source/bsmd.herberg.FormService/Util.cs b/nsw/Source/bsmd.herberg.FormService/Util.cs index 9c9baae1..44658bb9 100644 --- a/nsw/Source/bsmd.herberg.FormService/Util.cs +++ b/nsw/Source/bsmd.herberg.FormService/Util.cs @@ -738,6 +738,7 @@ namespace bsmd.herberg.FormService if (vDict.ContainsKey("ShippingArea")) info.ShippingArea = (byte) Enum.Parse(typeof(Enums.ShippingArea), vDict["ShippingArea"]); if (vDict.ContainsKey("RequestedPositionInPortOfCall")) info.RequestedPositionInPortOfCall = vDict["RequestedPositionInPortOfCall"]; if (vDict.ContainsKey("SpecialRequirementsOfShipAtBerth")) info.SpecialRequirementsOfShipAtBerth = vDict["SpecialRequirementsOfShipAtBerth"]; + else info.SpecialRequirementsOfShipAtBerth = aMessageCore.Customer.Name; if (vDict.ContainsKey("ConstructionCharacteristicsOfShip")) info.ConstructionCharacteristicsOfShip = vDict["ConstructionCharacteristicsOfShip"]; if (vDict.ContainsKey("FumigatedBulkCargo")) info.FumigatedBulkCargo = (byte)Enum.Parse(typeof(Enums.FumigatedBulkCargo), vDict["FumigatedBulkCargo"]); } @@ -767,6 +768,7 @@ namespace bsmd.herberg.FormService try { if (vDict.ContainsKey("Tanker")) pre72h.Tanker = vDict["Tanker"].Equals("Y"); + else pre72h.Tanker = false; // 18.10.15, vorläufig als default if (vDict.ContainsKey("TankerHullConfiguration")) pre72h.TankerHullConfiguration = (byte)Enum.Parse(typeof(Enums.TankerHullConfiguration), vDict["TankerHullConfiguration"]); if (vDict.ContainsKey("ConditionCargoBallastTanks")) pre72h.ConditionCargoBallastTanks = (byte)Enum.Parse(typeof(Enums.ConditionCargoBallastTanks), vDict["ConditionCargoBallastTanks"]); if (vDict.ContainsKey("NatureOfCargo")) pre72h.NatureOfCargo = vDict["NatureOfCargo"]; @@ -882,6 +884,18 @@ namespace bsmd.herberg.FormService foreach(int key in nDict.Keys) { Dictionary wDict = nDict[key]; Waste waste = was.GetSublistElementWithIdentifier(key.ToString()) as Waste; + if (waste == null) + { + foreach (Waste existingWaste in was.Waste) + { + if ((existingWaste.WasteType ?? 0) == (Enums.ParseWasteType(wDict["WasteType"]) ?? 0)) + { + waste = existingWaste; + break; + } + } + } + if (waste == null) { waste = new Waste(); @@ -902,6 +916,10 @@ namespace bsmd.herberg.FormService saveMessages.Add(waste); } + // fehlende Waste Meldungen als "leer" hinzufügen, der Identifier muss dann zur Kennzeichnung leer sein + // falls später vom Schiff als Update korrigierte Werte kommen. + saveMessages.AddRange(was.AddRemainingWasteTypes()); + if (vDict.ContainsKey("WasteDisposalServiceProviderName")) { WasteDisposalServiceProvider wdsp = null; @@ -1043,9 +1061,10 @@ namespace bsmd.herberg.FormService theMessage.MessageNotificationClass = Message.NotificationClass.VISIT; if (vDict.ContainsKey("PortNameOfCall")) aMessageCore.Portname = vDict["PortNameOfCall"]; if (vDict.ContainsKey("PortOfCall")) aMessageCore.PoC = "DE" + vDict["PortOfCall"]; - if (vDict.ContainsKey("TransitKielCanal")) aMessageCore.IsTransit = vDict["TransitKielCanal"].Equals("Y"); + // if (vDict.ContainsKey("TransitKielCanal")) aMessageCore.IsTransit = vDict["TransitKielCanal"].Equals("Y"); if (vDict.ContainsKey("ETAPortOfCall")) aMessageCore.ETA = Extensions.TryParseDateTime(vDict["ETAPortOfCall"]); if (vDict.ContainsKey("ETAKielCanal")) aMessageCore.ETAKielCanal = Extensions.TryParseDateTime(vDict["ETAKielCanal"]); + aMessageCore.IsTransit = false; } break; #endregion @@ -1055,6 +1074,7 @@ namespace bsmd.herberg.FormService { theMessage.MessageNotificationClass = Message.NotificationClass.TRANSIT; if (vDict.ContainsKey("ETAKielCanal")) aMessageCore.ETAKielCanal = Extensions.TryParseDateTime(vDict["ETAKielCanal"]); + aMessageCore.IsTransit = true; } break; #endregion diff --git a/nsw/Stand_2015_09_29.docx b/nsw/Stand_2015_09_29.docx new file mode 100644 index 0000000000000000000000000000000000000000..f8c71e7c999ca8d1afc8d0a80a8c1dc677b257bd GIT binary patch literal 38833 zcmeEs(~~Davt`?ywr$(C?P=S#ZBP5xwr$(CF>Tw}`R>L>+>QMc?&d?iWWHp@$#W_z zQ&9#K3>63h2nq-YhzO{Xu@?U?Fc1(iG!PI95EO`xh`pVQshx|ys;7ggvo5`dtqoxT z7zkw^5Xisy|8M_;Z=fl)-)@N!DeOkFOXQG7y6Y$aX~PDw7&re{^xk5>ede_8#g>sPfHIcYmVvVhX&KCeLhXy}5G2Zz z5~?s{k|w@~c*ijjL36+KFl#X96J4Adv%hc!N{GBxm`I6M8M>)^l#eCzl_BMShMe%xo1L zz?>6=L7I=vCKjns%!tQFN0Ew&BgELnDwW*Q2W_rwh`w^)ee9^UQB4VnOjWLepA22S_$~#Y$mVATNE(Nm8dh5 zN%0aQOV-?Lr&4)N=G0zGnk0+^*rbJ})eXjMygZpa1Hffk2p z5T-|}!7k*WO2dY+FOk_|{g{x=?He!_Y)lK4cykqc=KSKDwf(YL-k3OXt}H0y;-&6E zCA^b_hG9;FxuOuoS|l@&_9ANmgy2g^)`&3YJwdnuWhL0daiJ<1QwbgQx9a@Y3okXl7vVMeFmnFt$Hx%*4M&t zkZz}@O#*dugd1A)7B);nsI36tcNMLr6Y|y4m!9KM=~%lMvX!Km3WV=IcU$*lGEwXZ)m!+Be@00V%;xa;@Nit0i-y z5iX`@j}~66;RV*w`m40}9|-?nJgaMX6RGk60d1=R10ny5_%A&FcO+lxPC6Y(XYMEr zb%{VAFiX2pz-w*Qr$&W6SY31N*m_{x$uQi-(UW)O$h?`xa>g-! z!gDuy-N6~fyNri>v16Voe5v2h!dqnivOn!~KyvvDI3}<0Eg=7cNFkaF7=teN4`SGA zS0jy~>9wJTia>tRwKGJByMmv-v%$J}4kJSdrrKuE8TuN7*~yBFPHDdzAS+!DF0q!a zM{7hl>5u^uSMXzPAjP%tH}Ay0sn^tO!E7d365|YKRhb)wGh=3!<+(KDn-dL$jq*V7 z%k7*o!Id|+;je9l{h+^$hH?(gKtljK5=%R-Uh2m^+d+tBnypuQIW#ihshO{5EVQg2 zfFf~bV~mbl{1E?%TYm(bDsgwtq(Q|#nphX&!r-;K?_sL}U;Ig)!U|WAIQfGXL0z zd@UA78hmYz-i&|il?B5oTJ^bWuy77;Uxcd+AO0I$ke+W4MX|GX3W8*u=DpQ@(vH1p zjh#;F{t*#lG zO|%jz@gV8-JP#v6r5No~l{N7nG1Q(<6F?$0-xD+qPwfNS_8fU^$jt7(L+J{H6Rzxu zjz7*FUW0P@I`^#~4f!W@jYlU#Euok0Iz@`S?T#31@1*OjRNJ@ppyDKjS;-CJJoj(1 z23AS^X_Z!pdtC_^6@X8k^=!g|l>1dYzxHXL1wZWzg#3qr&E?VuicZuT(6!F2j?!(auxvoeF&Encik&vSvh@)eIul zQ$=Arg-Wb%C{IXELacAU-f`&Zq=2UbqDRfT)x5ss;!XM#xu!XLdnjIC|M9Am+ez;3 z+XCsl==C}MKx+W%?oalx=pGw6yDbMwAskHAo?w}*ZgI!IG^czgXc0XGFO?;I7$r?7 zw?^AdW{uZkddIWtYLhH$`22jp?!Sq*p}3gG7Hr|NP3>4bJUHk^qNKB`GbFuSNXt6^ zp3P9UXlk(K#vq@O^r%v&?yIIWtz*A_=#^ZRtQ-(Bkpn%)lyI2D1>g4Z$}ns0a5NVd zG=)#T7qh0d;@mF9GxKb*$xv&TX_L!#aZ_XW6GPBFbDM_hvdT%FqFvp$;Q@kOxu{!E z-NJPC1HKh82xBZ`8mwI)nlS6YkjRt-q6CvNpakv5Yy+j$g6vn_YLl%m5K6gP<9H$i zahvGPpMG038_0B97HEpX^PM8pB2U(Yi5UV55y&C?VF z4j1=5aE*ZuHZZ@L_RgV5@JP6cva;(9OxW8sc?p5W-yc|v){m4Xeoa;8wvCduivPJx zm~G_=NeGLy>mz^WT)%$DHm0^U8HjdaDgIr^VhrbQ3v;do$J}kY`KrvTXJ;;Q2I=u9 zN{ae~I9sv9V{ej?8<4@Sgh+t=yy!SKUp zFRCx~S@>XuHuWnu*y-z%b}n&fMRY_V6gA)9&+C`#X>C5~id~yw27Z;2ln8z0CZ49> zBZfu5l)A;R=K>6GK6sJl+nrGU7TgMk*hJ7u(%nSze2HDWDX%ak=!OwSdj)&+bh8hL z`_ge@j2*T`F3>xAw*GM8QH2Qel70Um5r*LPCFsGg&zS*oL1WC}a`p_Oshd7DT&frH zT&n<`rogD&DyY>)>1IzC%)GZ1wT9-sjewQ7Dj@H@C+Mnc>yWw`gu?X7R+A}uE97g1 z3fz4f!V2Cq_DWc^Igzf_^hfZAgo)bQD5ve&tO(0@tK5KKVg4i;Dsb_oER8BvkPl7Y zYQP%-zCVGa25DtEh&=_~M!Phbkam|~WsZkX_1p6kFd>^}K0Y%%qg%05qb zt@!JN_h`FFaKtnQwdcr>s3G(MeAfd4$C_+VLhs0f$9m1Vn^rkuy`3S7K7V?ugvg!czs7q&@* zx!XMwr|^Vj!d&Pw_oJWXst%Y6R`^Ha{R#u|LYE_NuecEQf$3&UVMA5Mdq!r(hGiJ8BWKU1CI%KU)Y%I}u*{lWdSC{c-vCevGo#OeKkBQmC?# zL!Wp9P>HaOyDya6G)k~&uk>UeaR{vlD7lc{g3N;P5<}C93>9KTIVI zd0>K~;L?ASn(9->btnJ+1p*eAeJD-RPR-Nt%jKy4 z1xc59GV5Z!Y$&RTzUa?DwiRW6JxLuanEF=+bX5w43{5Rn5aUuxJ$)2F8#2^N$rP6Y zGAO|+3;=YfobZ&2+MJ?ZD{F+JMFyqJe`K)>EgM^V1xAirT@Iju6ky?7z0$%~@m+Y) zHQuY|lRCQWH6v!FGJH1AZ~Fr=du)lc)%a^XrhPLE{A1WJHkB8M!VUPcH-JcL7BPekqHrw*IbO2KPte| zETrTr_MRd^#)JCGtS197lCU(CUaF{nNrTXpZda%M94cxN)ImFtEfOFOy6dB(eu*f0 z+_($T+t)-Lw|^|2^j?kdWBqNnRo=+;r*4XM=yl;0Lxngs@Wd0ntfwx!fqIb4Ng0rMitxn+r(La7^T?|L1CuG5y$t zSK!!*G|*O1sT}r^HBPpb42zV=@@U)yaQ9KDF7Gg{v)f~eJpsA%<6561H0O=NA;62% z5=E69He^RmR5#0VSId6QwK02C2o^CpP`rI9>yf+%=*SeI;zUZ=_no1#_T1Q>U~&OF zU(4*Ni&gfRl0o(`k<7D9Ph1;u;RM3xF|3(?g=%+Hq#yV^tMReH454&+EN%%%i>9^e z+sYF9^I<%FqTG)~e+>97z>>dUXp}=JMjQXTUUhC7MQU?|gs9482X?wk8WP!ny6IY9NVK?&!BbDP zxc5hQRLG*qh1LrDQ50DV98`|UR&O@6xb?w9Ew-Wmcp+du%Damz6isTD{;Hw7o{oKh z32X$EGnN8h7Hx)!gzv`oy5KBa@lc*?Mjo^P7cTo0&n+ZdZMpRe-6KkokWV&@Rn=Px zW&ZYv2@`BtM;_HSLBhWo>U2Dg@AP>R!_%@Kq(A6AHS2R_acHQDox;u1bIkNSu3L|s zg{P^~S`n=Yk<(%HM~|4*N`2GklJ^{y^1EYoE@~%&^}Tv11P!bpKx~jCY<-+OPonsu zxyS&-I$&sGemvQXau6`O0(d4N`3LJG`C2&gMZ_F2KsAxiCgnY#Je#c}f82F_*jk|n9;CsAzhW&#a?tm~`9+EjRn327 zSVHO#n>CD;TnEQO+xCSfeKcZYQ}PxUvEbii+dWTXPj;^ePx+92qh_pU4) z7n{;e`7Dl4SsUr})hxA+9o7@qOU7v@U5cjW&pxQ=CUI4HCN^1*OfyRUaB)wA0otyv znp0Cv{|mIZozTUm^~|wHu1x2q()5~zO|*K`Vptjlm3dR4cG%oi>XTPPJhD&d``fDV z>gls3^b88mb^5#{mrR#9x;fOaL~3)va&oQVZ4h>cXPETDgl((IyyQ@8b*Wt#U9;in zTa<^=iS2f{`$*g%8zK(IL#hzGEZm66JrPbrB3Rn*a*tLg8;^Ib9_!{vS!G`nr&e|_)pg;}gRuo9cH{&rkf>2c@tLBxltI&8(L*`^XIyPy-1n1`i*rAQfrI|H4W8LnHTslGJ%C0)a;v3b98>b!~b0NH5o<$|>kN{7I6F9aG% zcFeS+NSQKu<+Z^5gx-&{R0u~ZQ{8_9hm&Z*-nz$4hZ#a2mBv!8i~h0-qSB-z5^8iu zZLiHI-=+Li26${!hOwX1^H{8iqh!Whwn@_&HRl@mL+C)y)lIO|6lFOzXtP|1`BbmQ zXM1TVx^qTnec&>I%I1L3en=*k$pVdO1>aDiCHH6V#f2f@E>mrqY~zW*3?nCO>3ENB zO)*Gw5DIue<}g0Lo3IRT2sSi@3ActK9HAUj7(*Yd zJo2GGb7ngPj)m_gArA{5xrKyt>{NC2r3#JnRS62goN`gB>O=O^A$-KQz*Tsy>2j<6 zDqKx9F6f3)~&pP-9|w!7=gAh*r{xjOEAsno{9!`}GD*#Rwpah9}z@+NJG!l=NqGLAOgJ2eQ^fA|Wi`db&UcEW%BV-{9bKf>2Ol z%Qjtdi{i$aKI4HlB!B|Xxwvr+gAk1xsU(5oX|Klz!9=Mfa@JAbkU}Y$TM`8+m?UZT z!29AQrMty0KhG25-jxq{1Rlyq2SKc8P!j}rzxfFn1Og!AnD-o}FYE-n3o}LqPRTWK zv7*c+Ad4pw1<{Y>*94IS;lM;kLO@;ARm1#I3C=aO>-I_5bLEHK;C~xmOD_#h>NBoV z9ZMBaZpV%cx&M2wBTx6i3IxeC`1m-`YOp&@?_?N{H>bf$pozHwjd5j$@Ks7d;BnZq z=4Ni#o`FUf*yOp791iS@fBvB&M?ErnzX)n!C(KX2Ld`4weNXeO0;3A0kSOyeHvb^OTB$ZO5t z6%2y*ESmvB_-ngKbe#sdDm<(P9PphOwf`&DK*BYzqxmy&GjWI^UL0DL0@0@tNe`xM z`gY9=qx*|;s0FZkDGA@9MZNl??bk;ud3AeQr)>}Qz)@UFYSkZIBw!%6#CJXj&D8CxG(6B;q>i zJiywL?Gf&we`7FCAX;umBv*t|Hdo)JDmA6V=Uu9mj7F}RHL@0w0-Hvrh0bG{tG-d| z-gk&7?0Mp{oWlCM(6hbj=vm1IIpHt{!nOM2PJfKH6b#iZ*17>sWJBzeNI%Df+TM)o$BAu?4PdwONJdFKwxD zFE}(S)6{=`7GiFFCC%oOdRitOYLTMxE~9nrrUI7wAq|;xZMAoic}k@NQ$8Xe2I-8o zDt7_kF05(~`7BKyYRX!o+fj$)*fi+=WgOri{}nqsDm(1eyA=%8L%7lNg1}YsN@B@+vk6tza8tSTvhO6}mCDJXj*ZD&6l9_3LH z%NG5TA{BLlny9mcnKcZyYFKO6B3DXSsDpwoHjh~+bij0qwMJmU-E!pU9{KR;R&PzI-rMTguEDC znDo7D?2?O;r0$l4^^RAoh|WNqbKMD9P3Sm-azS+d3n@F{$_@OKusZ_*v1H+;u7jU} zltx#CP*!Mq=plV?)J9>eyvhx3bwl3J)h*1k4p9i3G;Y5Fjh5%QMo#oGWv{l(2wXJY zYg`3-^smu=Sq>%c6Z&}C;UvwJxv?^dY>#oSIQ|Pk-k;*Vj(6;WwH>=ZILnH3+lS{X zdmZCWR}9XWbajZ}_b!B>mc<7>rb1|nJjJUdLdb9?2%&7Kf)+4C z0>z*99yvDRN|SpaZkJJk?3~F(7gEDcVD`YH6g3QQ<0g-c8Bwgibq)rtXCkzJ+5Tuud>JLRps+KAwahq6npMGny%$vuTBxbp1|POfYDGUum+qUA%a^ zv0*}Td|?0FzTya)2-`)WXoP@^CEy#A2;$Sff)OYSA+_(Lm4*5P?|}=3js)%a+Sy`P z!4zujrO-TFr$m@Nz1c*#GgRsb;Wx*7!+F4{=L{RI8XO6^kuJ4IP=ica@7+egt6Yb* zxWuZF!_tBc;`@g`51$JYv0XwE<%3l2himy>;o(wqB1__mqwLS~pbN)Q7K#WfY>eX= z5&7Acd~c`ccw*FcNvbwuILBCZD^rIkLFIp%O2{}M~shDcvB=^jr z^Qx(^D2q|f5|ykrf4&cq*as_SjRBuGltdPW`P?cfP^x$*{JOVbE!Xa!LD8aX6`66= z#-@S5F2_AaDka&M$vn)yUDQV4 z&*GIWI>TN(HtMOBOia+1+4t17xjv<{&g7w?p?pVHSK?E(M}AO>S658`)jr9cvkE~0 zcjzEH5Z54CEDLiv!b`Pml<(x0dZ@mlGjuRf9XuF(-pJ>5u>{eR)rRPc(Ii?XC;u4` zC5X?is!zz34I=rClE<)rzZt!W3X{<@ae91CXY>`W!>e>{(5}y?rO`eRiRvJOV38Ko9n5_lpX?N&SbRfZ&d&|ts(!GX`F@}}3`d%o_gV}H*$cZ8;i{5B-%(@2ilOGbf_t>)0<_SbJ zalA&z!@*;N*yXHV>NWVo9%wwwGc7lolc2`8noev2 z$BUbb>E?c#Ah7))5H(@&z6|BxEy3hauS}n3l8)`*AbeYD9yfyC>o&)Lts55s`FgE$ zY9kU-EVFzd^wj2}IG$hT6OqD^UE?u7&@Ryv006VyrPyex7y=dEFFb%C*X)q0jak2`85;mi&p4U_=7?^N?|-2Ontg$ zKX}%nYwnVH!M$Q)GC6xUqt=V4?^3NY7 zu1trk795xK{zdyPM$XZaZ99IOr98eeMV!P4_=@ zJ`BPa`4ar>FurFC=vG43db67$6jpP9&s8T0HUZyA-7qKcV_Kk}|MSz@)2DOXrQf?_ zrU-jJgSzQf?~6}NghsH21>k`)$LvIV)CrTUsFr4 z9(X;BZYw@5_QHv;1tL8^E6g8jOS|+z)} zCJsxte-kZvYQSoD0z=ix6OTTC6G$zfq`y~ZGzbe{IZPIrE=1B;IPMPv*9IeGS9Q=M zii>`cXcjem7mA<;E|$`b1>6Fz?uFC<=r^!iMJgu3`i`AT2< z&*oq}A)dW5AHE@efM=O52EtVNQcE2K1rOq-pXx+q`8F0JTl%c{or^GsFNYMoc3XpT zeIq&;3^H7?(d3kGMPA?RZbviXW5rQ4-O^Ss4mdEc*KT(=TaCx;r96hF`2D_&+Kh+q zpg8EW18%S>m_{ge$+R1?xo2?BvVv%S$w{_RYa>r#-D zn{p=kI{-K(ow>jL|Feej^KzqiDk0~1|1%ufD?1W7{|r`VYU51X{Wh6r~PJ~+cO-O2Vp z+GPytW3Bqz+50Cx(*Ee?TbZ{cE~VAy<0|-EQ}0@H6#Z^4il7nf=u36~_JfMVA<56e z^o`76ho98(_{0yF58DhK@?`6c$zkgg`G?89;xiWc_2U%z=o1tBY$twasTgejEkBv} zU~ZGCW?z^W`#H{wP2FvjmxogB{u^3;8_lTHU>qg z`dcPpj%#aEu3Iz!R#ceYyFhh@{NCeFOb}^td%bl$LYg$JioSE}>a%k6$^+eC?smD! znz7eH8U@-Y1u=RwTfbIbspGlrn8Dmj@LXnM1>ZEHaO*F~-^75Y$(GfNOnzH>?sc-% za=uo*y|lU8l#3pomQXoHb%fAnGp-8qGCK28IV{~yqmFp-_9~4=oBij}q?w5PGCJ@= zYOE*Jdbr8U2F2`ue>*TI^7b2CxhGLHytT&2Wz`lqnN&m%ygyFFgQo@<%DT9w#lDHYXLGSlFgV z1TMY4ec@uv6GPPm@-b{Z-3fNm^4t$Qq|(#Hk#ueH0qyA=cag~(O%7y<>$Ih5_d9ks zK8`mXFc-Lx{empfX!xVqJyag6hRcra`Bqsb?yTc2J5)#$h8&V9DCX~-#?3izrM7Yj zq^&(U*oTfhTqwYa45BcjQ=XD3M{ZFXV4WO1x;uJ;N(+1j>v?%=v^1NZ@h&F+Jk^>jWaDbG#559dW3qfy>-&C>l}&dSvFQOd7m z{HtJwri$vgo9iHSf4-3DS%xmRC3~n3?~M+u>bqTdj^C52OMVOKy@qBrIacAS4HK2e zO=;(Ys`2eN>7nqJb}qu{+_WU+KBNv#qLgeumwjp3pmgxLPGxw|8^v%Hnd6P}SRTik zagFDih0nN^OQFO^MygO)=3-T;pftT>XqnW?=$==C;-tCaMq}34X0aIkk_G=pWk4KI zG@Ld}O{(wM-N%`oC+F1J@V4jTeH?kN!9_Xl`;BK6Wc_;=;A4;KUe`}pc0Vuvc+9i0 zu4~pJn<8Z&Xq&23_5PQ$#OFT!AhgqYl1)c$?1>F(uto~GC_>AJ$rfs)kz|&xL--`g zcFU%!xTaZOljqJM;w?EdJMH6IofYwweHN1eT8#!@^*Vr8p4dj-<7x}8!bDcxt-+#1 zE(zh?Q=$O9M)T5Z6|Ft09^95m-dkQG74LLHdzA$?IbMW2!}H`waQFo$CmZ(YQ&1;7 zP?jKFZg#Gbv|MKm#et%v+2N(n`Xo=}Ro*PzGAa?8e`ltu6@?2%n`y? zIKt|Q1x~4a+BNS#Qz5DPAB1yPy|Gh|vc;u@Qim7>{r)6iS72NW;K@z!>+DBWEt~u> z>(g!?6qG(?M6W+i85gC>tktXl)gVB?F_?J_1DLzdaLWf-II=%{r>SP|V95y=S%-&dI_nH+;DwxJ zIY8B2u2@>IF9P`?o*x^45UFjQycM8ek37cQyhChRp+|2W6d#LrKO{{@q*8l=?`gC7 z+?5|ftfY5ip2_tt42;v#Ro|N`(X|Wx9}k767W5j$^#sZn_@RGF$7L?CiZ6*tLmZ# z&n-_k`o>$$jYQqi1nBNPKz%lH=51NZcu{J5?`v0aX9wEfqWYtQ+L8{Y8Pg+vLsvif z-HU^MEt)8pb>laC{7R=>6W&)Hq?o%85Fj=Ncg+=NJ#8tFNdecBNnAlopF1xy?73F4 z6JHhlIY1svN0X$NT?E!!j#9MqUuvX6Zg$41@$lG%UUt0QpNMt}d|SeF>u6BdFNo0bRh%U*zeZ37-Nj)ahm>%UQJ_T`mGhDjZiej7?oHymA)+)5xM zqHDzqK-u8z7amM6THk?B$Mh#7G{6(iCI8m)FIPvkd(&X4R1^q9@RLrectnO|$(~BFrqI^xnBw&WmmmCFl zH+6k;V%xXXLNE$bDrHu@D|`>t>Sz#3&rlBwlMjc;gUm=Q`H5dh6!KuEc7QN(gw`|s z&i48NAQDHwh=D|G`nRk!SiI;3;9Y;vYU_t>#hAc~ z!ZH;xo6{zLXcLl@_(BgWH0kJ8+~e^K`LTf(!N(g&y17Sa$|;1jA)6w&{j%`hATPjj@>j3)?~%iRcZH);3+U zGy${bOswMXfJqS6X4hVOx10tXtmRHgG}Zz@j@|3wf)5T!NE8c;Xtv27>{{zZw9|0u z%2Tyji)c2*e(SAyVwUZkBN*Si2KQYFz<$|Hfh1UKXK$C|Z=^hkJw#TdZpi$d#^|jm z;14+nqeY`)>ucW97oDT}nw|2>!@ds>MNPpRd;01qqYJ`?1$nl1}3L!1o{rFY59O!xvx$J33Hf}%|RGsdg6VtfYZRP*O$VBK^~eS@GuK4sUEwmhzFGMPUi_ zg^rz9C}g|wfQO!5xrOiP?bX%VDP#t9p5njyrW4xJL^(g*)qpvSUqIv8HO zDOMF_=;6C&yFX{zRpBzGVzoBoXq_!OD7>#i;M(q0>p{5@p%Mxtsl~c{+o8-i+311e zFBm0enKHuoE%oKh_m;-hXvlxaFAzUqe3Y^ih#{ z^j}3z#@w93Pp8fp<;s*(T4hRX@u5~|$>)zYR)krWCo1jGV)`HJSOhU#VO1tMrMHaw zKtfD9))i$qR`_#p;Mg?bY*X6yE@C)fv`RKhA3D0Pvc8&m9o;0Rix`zJo#NX0OEyue z-LY+0A3@pqQM>oSFHU0)lNJk^hRqX2Zx`CA%p{ z!?+X2_84ytAMNPH)-_8LoKpz!lpON0w-T~vKT1ujBeIwWwFA6FHkFb#=5NqzN?}iQ zH}TNEPx)s+jv{q;k)+nI20P;T{yun79sv8*csulPfz%&q3Ixxo}KM zWq22I$xq*3!^JJ_aKgsYq2OS3%!!6cGu?dR0?d|O$ZFegt!|?KTE-^`p7Eik9Fp9e zrK%y96jRc23}o!7nt~^QY>BL{^OIM04%hXlw+%vBi{5)M6nhdJbBL zSiS8^pF$XX3&oLhDI{-;U*I>RFK*^LSD>gNsm?KKTgbq68Xq4P zLtdS4SF~gX=-2BH-iDTuQ&zo$sRc>yy+DoS7ODo*RffuewAHPzXaW(M^JQoMDQKc< zdNXx7BdB6y$hafRm{+dVD<`R2s(>rzSGaVbMiR}k?OUntawBoVI<{-I*L%5;-PVTfRe($O zfK7Pvpt3X4<#&;AlswgFSsaZ^MaGv<*P(}gwjk$Gfps@C7m~+0bR^l>oPT!dgYL=B zL~w2{dWhHqR8+h0ym~IzT69S=Y|giDsvK1ks0n4M#kZhkihnTgN*VD!N%@K+zE79p zd9BiRd>HQ=hzqBlGffazok-Ik9Hj|Mu^}oAf9%?aCs_q4cr5TK3HtG4NN0|2R&S9b z|4~IjorF+$$LePYOd3h;TH=U>5ez}f0fRX=&P@0aQ&bM#@f%IX4mhyhlj_Y4-tRO% zB5MTj(iCj8-#RvkF&sxK%^ z@Zs>?EJzrz!VeNCdAJ((?F$*`7uOr8e*-P-CG61?EXZc|fCna=H}7wYbeao4$*SM% zqq7Is1WnOn%(7dbfrvS)F=8fY+#56op>gWzvlj zSA?4zD>`Rx7dVGOf96!iY4a(ghUWZj>eB-4%ClgduusiDl^W0>>aZ zq{!&rPpQeGA)t1SzH!&jl})eXYjZtR2lFTKH1@ED=Y@e@2gbuO%#M)8Vbcymx z@p|G(_!(xOPZWRQj;>3ByVg2L<*A4O#LyYdJZ)-VI@!nzv^MECx>0}X!CLeKodRZu zyo&~UzaE+L1Y5atioRY4Eys?HjdV%U+!^V~yd+@gs&bufuM_c{b31q+2=}8MvB5?pg%3 z6+OZ9IPBwr{{^?j)03vx(YONbR8?`W8)>=%az}CVfT3O7*kl%T=kAOYi2&yUSy@tu zi>lwER%43Ofd5labpD%NVMIFFCcYcJ5@rub{2D_d;)d%Xusc0T*{fKz<3``vPloEj zdgqviY6}5ta{J`XVAuRMNMqSdF`}7o@L6SjxA^mJs+!}XQvM}qof_%Erf~{|i?BO@ zY^z-=BD0-oLYv2CIoY2duB ztmZvnVJcxmB`TaHicmOaWd&z_#iHRVhq1unz55N&y3}~gRn&7V{!rMQ5PfCP%W=}F z!iPwrMgLi@o^`_C=j7-Vco*SPwEn6^JVL@;HT@|Imoqh2f^FrkPAd!nM4Z>eLyq{=x6j zZd%#pK3}?YVMW6Q%LIeatn{pbsnnR1-ywGpG>u2N`?}7UAq}l_6FqsfNPV|NBh>K} z*~asM;i8D}s=Xtlc4Lr-J70cGqFCVeU$lOwdd(|~5M|5zjqa-8=yPp3uz|lbTn&{3 zHO!D}kx{RgMp62)cY7(;fL}~+EX0zHN+(0P4-s5L)+(z}c`Fr~k!d|hUV(ACNG99~ z1J1-<#+1mxzBl-z#Hs^oCk-DiK?Zz=XrvKeHYtKQCU*b&^y%K!qMSU`UR}IOJB+uY z4?Zk!1oK|!;!rJ<-NpsJF2?k-=T`SRt9$Xz`BamPVU0*{P5YX%Rl1!tT=s+31O_Q?i?(HAplm856vU2 zsR?Zk&|}@gEa*0&b@*(F2bhQ`W2Pc^d_LP>DtUWO0^f<_E_)8+PiDBd3zF60pmY{h zD5CWC`*SNsYyDex^m{U9JnrNO23!?gvIzReN~gy}UIf}4bZUK;zvm~~2=?tgF1_P` zciUc{nk2fbgP|H;{DYyUQwauO)_EBBbvD2UFb4&cdf6c3J|p)QKT~Z@s)Iq1`yC1r z7O|x^O1&drsKUZ$e{jy8om_5Y&Qp9R-$B~l35cXQgd{l!@FT2!3OPejwqCBDbtUc6n@tmXad?nw4txql zKDgil@Y&1;={nlk=>@kLnm2J@p9J4AXuh0J2?s+yQNwdrTu{WGkL*400Xu?LhJ-sL zyU>J8fto&p(BHS?@0nE}4Tc`N#NR!?-YcQwxp0G#1Pz?732rb}ITkB5R^?FC-zS5N ze`l>$7ze-Eh^`9wq;_-b^_H8Dak>x&aQgmmFlJ_}3;bKxmM%%e?~fAZiK;{q9kX${ z-za)T2RpEizLetfXF<7YJ>41q`02ElN6Wyx`B5_(#BLIYh^Xf!0aLJuR{y;8ext}Q zm2vd-vS$ggzL_CNm;wU3dYnzy3mG+vUa$WVmR4P#7p@JxRf zUF&ngUcWuhZYV>60toqWT^|ehUdUX%Icp}FK5zbRyoEeib{py>(P2 zO_T76J2cj~ySux)ySux)yF=sd(zv_3yL;pA+R(t>e%_gHW_RA*{r3OmoO`Kz;6_G8 zMMYL*{xXs*OI!{WH&x*|Vd`yQHz3*z$H-n4@_x{#ty+Mym zcKI4Fbu{ve|ToF0iPdq(AsdCL1ou_uSa{ddsko?^9?)~Y<>sF&HE zCFK`V`tqfb$whB$>$hhHs_|V}ye}`%hq2y!K_GKkq8pLt)eYTul`xC(WOUvu0Isj0Fr_ z2~et(%!Dlhg_rB+WkQ3pzc|BcLF2;}C@EmVJ717+9sZOPNMXKAdvO2K|62y&e=fnc zEp>7J0?f`Pg98B}{^t^G3sXZAQzyp1wFHWjZS6M+5Jz|AH{9zy@cBhFmo;1~+%(Iq zl+;-(pEC_`ia^4FMy2^bfJWuC)K&5IFbB79K1Uth-9F`SEu@VY&3Yz8zIfUnq&sXlHh*77H{tQ^_L>TT#_Tf)iuGsj!g| zApfKivsehCOR~%?F)U$0w2Fa!!kwgLvxrAA#-gCot%7OlTN%n{kL-IZP(%?|Uu$4J zn7YQ{<~?In$QPURp|@ayx~KCbxA;2aeWZv+-*?NECWy^n2#bg;-LeF-v?@ig^hrKe zs`8fHTuoeq+1YHS%8K2Gr|d0(kdD<>j{1u{wRj>MeDbWR~#mguKwVQ3Z#m6bEQ{zNB8$=MlCcc!djZ*%c?yEfdsEj(NB zv1)|8lx@fJuGVz)Q}mzbKbYhckrC)84VoaV1s}!ydN^QTtnpx3U|~Zel{0>`0wdJi zI2!jWBbTuo{3(paOm}l^e8VQ4kAEMZzKJerZS3dDb|drH2F|tjTujL;@MOsuJ>zjh zx!ptw`i5p};ne&5pztTn3eLw*)3u34#@{6t^>TjEUL6&$xeLq+S~W0{i(5$QyjrEtVoNGzKrEI=9C)p2CL&jb zVk=sTma@7|(}IS?o2Wz0r%WzEPHg!F(_ut;(NhIV*gfj8+s^4A55d7J4oVF_Le+1H z_Xl|^*XmjiyHmhrGT2M88Ag1_jGY+nu-K6d8;X`pXrA-}8oqXZa9TwtV$=ItfJG~F zPPABVWehl`Hko()l>$quN=z!;nh2o-Z?>6DcXnSkaaSog=YTeKAB-coGa;tXeZe&^ zTw_;R^-EM{ot05olxS#Zj~4Yaj+1F#Cj|GTvP6Nvoeh7zAkr1wCElg^EqjPM*0U1 z){R=jF4ZfG`{j`~o+trxS7CD3ydz_cyF%JLbG+fd-6eB?P?9Y>9B+AuVx-pnDIbZB zs0$h4555_^1Imy5&qzYhx?Xk!DBhC}DDL&YB8izjz%~9ANvcwH?Kc=u!*0m0_%(X6 zmq=V(E(*ho_z4se^HZ-OWU?P}PqJUu_Rrr+#`=++ ze<&jNr5*?dNXjI|Oo6lg#qa_jf%RR2+N$}fz(Ri{Dtr6YCR zSrc*6CNMzRkghDKd^XhNV3}#g=%$`be%-!$KNaPOWlX42p)Has(HEd=58mlX;Y(Lv4FAsul*}&>z_g%tamO5@8?6roRcLS6)a~8+$qL zp=dxPE0%Vk!>B-XjJcWOSdmHP*dwZiM{T5excQ=1wOn&ZE$tT%$s4CO5tU;gT2qP{ z2~Xv;33+uhvn)KE>Ry!|ORQCB;_+=@Gg~_m#I!h>vzqmNS~Yx+`N4PeEGUJ8<~@5O zfG17sO~x-^>fKOo$Io(K7$l_#dm3pF5w)H_9cf~oMO~y)4f`}Q1lLubq3(Y9BQXZ_ z)HAKO%kLe>4*$s^3a!2BI_4P<^9K^U{tulK4N-bUyuQ!<@8+CgHR~OcQ`Cv)A!hpe zv{u?5sI|a0S>VF;AU0>NGR_roJX#VJq&lHiERO@FjX`f(_o476IIvS`7;bhWdki?i zr_V3>yYXRr!t|H$1EUroO^GaCsTs%@OIEI;B zN2(o zbwL|lNE_a>*$p+Aryx(+8Z3G$AwLYU!bA=8FH*3)lED0kk`4+Dw%EG zVFGWVn9%KT==Sk2S}{otRND`mMiA!aY3?Ctbt9Ww8n-IM$gZBK?V#|R6Ea0eRg!K2 z!6t*wLhPO2I1u)P;TL_W`_vE6?99SIBrIc9gYOS^2yR(aX8PL9!Y+edK0jg~y@yKG zksx3ev~uvFrp1K%N%5g@Q%?=asb+?7dD#23Nt|z2DZ{30&-r$!GMJXpKhgTG@0FJ8`{=NwtiG zBS9p|?`$pNK_TES!f@3LT5-c{!LRbhS2k;~%$&5=RHw>s-juEAo;%~mZ zedIe_ju=cW@}ML=R}eDMv4M#+$A~kBuYRr6`5V#-DDBY<#F!W3%0$A|==gngOM3{D zl8{0@n>&HF28)#Y7#j+P)x{i%<|e`A#2)sV&xv@RsRCIKJ`zGzoRO`-_bMz#HCcPAJX=;toyP{!fOXuYQ z+VFbB=~LObepTb~_d^P&kH4#L$zx4Ab$Y7Of9ph%6R_Pgsye zWv@gt#GXv>KG*+a9euU4o zpk~gBw#lxzkeY!S@t*{S*%rtdL@q)|Wu%U_T$NvE=?rmRNb}|! zKBxX90{Ww8tBlE2TCMhtmgmHwh2E|#_69S$hiJPOWE|5Mb)cD~bkCsekc3h52Zf|R=^ME*2?YF5qZ3-ozeD4yh4P0xy80a#Ov^KE5<@7cT9yj0# z+ngn6*glNW(VrbTZTuX=C^uqWOpQrp30!2-)}oCFva21eDi7siZ7oHbRuPTYE@@z^ z&zS5#OtGrd&_wCL0_#T9@B}CGo5m`|osuZNvh!8x81~rX(Ir8_`7t1_b>oT88k;ns zk)bSdVHhkJA4je+z1LDR-UHma$T4oZ$`z)2*3EvWgxSwb58PaIHpaxxsTqc_(f@Y8 z?-U@E-5SgYH{p2AYo4eAGMiDX(<}b4j&c|& zT2ZUwj73kA-s_8gz#24KMm)MjhCcIm_*6tewn*q?acz--i6Xu;o2XTTz)g)mT zVUr^o84g^vwm_1s%tp;XX=?6c6Q)Ls^hktQxPm}+Ux{6d+}fQU|eAFqs8aIp?2N%_>Y3*^Y>0jK&dvd%apgUMgSR?5x zB5*p>;wV1Ps2C6pfr?Oa$kd^cgOmRMHo09hp%L-~Ka$%? zxlIAoZS`~h7_;pmHhUVJ;vkBjSy7{5+e1BZ;#1Ph2NhY4 z+!S7{o(yNc+emCau=vym>UWLuM;2q`E>@{Li2@wf4)NY>E;VVQBkP>cRA$=oe&p-a z`^Vt<2AmVz7tUsA2X@;)|CWGe*J^H8T2Xr}l$iKSg%JeB4^OXpg^h-G0a4io;Q?$( z^9xhK%w%-TVcNyws^^rEMYo#J1Q|mmSuKWm2_1yaq*sRqTz&G*vuic1(bhdm^(|*I z1sWqQtzdUY_wQ+AnB?#8=DV%JhTa#bQfjbY`;v%8e(TRpNBCd{XNi$9pOh+#_*RE-#JFY>+_=MD4@z1T_N&Min z-@oqsa_&zEk$2Q!AiD=^9r??D2|8I~4!AoQkcNi&0~G<4DL5is7-1C%G7BaoJngj}%Wl_Pbg*8x!}%HSS|& zX0HtweYtTsKBNo|t6zGnMS(!<$q|$2i8Vj(LM~;9{8YWbJp@HfBnSyhm8>+-IXOAmv%-aNKmaAm2D6}XD*G5aT0t^S-E;_O# z+<8lX^79`WN->}nQpi9I25VDGNqglzUM|Jo0dAp(@HSk;5u6QaSoa>5ac$QZU*8zK zm)`C2pN^2ARitR5AX0wO9yFt7$Gua1LZ)HXX$T}j4oRVkFa3&j+uGT=EmjR8OmuUT zyG6l)RTmkkwvrg0Tb#JR;!uK$rsM1hI!)v~X*fpyqEsOpp^pewp|-xZ*rgxx-2k#j zwbs^AN140513A&+8qmQ!udFnhuM}zp2C6^`HnKW%Xuk0bRSlF2>e`=l|6L0AW&}+8 zrj&{6XrUdXfqOU3Xt>tRiIGm3anb3xU)AoK4bOjV+I5T|Mz`dh3|;pQ-d<3aG9v zo5q-+rPGu5Wj#BaS)EXT7OP{yYxQa6^)Po#F4OhHj)>xBO{h}lQ`pH|k1=ePST?P` z(aT%8YgxyFXz;Sf9i`S3ZgwU&8xM_h=@+iQI__3fu2@CPj{CjNI<$*qk0G;47|-GE zkFkv>oi-g~F1OnZJ7#3-ZJq3~u{k^7ulg9(=;Hr4pk&ScqN)l0jrdf|1Wi1!~Kp1?C=v_uF+y0q7+gxZGv4E3%p*XLv zoT^f6`-}D3@QfEZ9NK-2FhwIT#Tpvo^uRtkRrZrxgC5Y}2-9e*7&!VX;69%Dk-%k=) zF-?Z?0YwO5zA27dHJJ2WJVOGEG^w7G7eK8+v>JiXg>=<%ZgLL?F{OYb^3n16P~Q% zdA@PGzSIBPtU2M%Dp>^vFbFLJ1Oym$`B%|cXBSVKe+@xj>TEh~u_61)FMonY-!vQ( z&1zJ{C@0!ftGXeN5|gUFj}S6q)kqo*M4O(O-!uNMXTc%~V^4@BY?gl~`2qF@v<+D% z2tAGO|Aq&#!j4AH7q9mGxIEONap*J~kEizhu{}MGy(y(cexDs6Zez+{KlFKa)$8|q zcSj_d2a>8`Kp;gY>)x0kO8Lwms|keWnSA-jS4qRWSi}3UzBRsmG7*dn z7h*y0^z{c5Gp{uUj4%5!^loXb0aKZiNZA0YOP<_qD??rNTz8vqgvX@~h{MjoS>N4jhM}llK*+r)u01agx8Lt2)Yzisu2=V0 zATDcc$oVw&VT{W-ruWS)JKiS__h7;s+;yNJ(j8kUL6v~SL+1O?ak6Ox>F@WY$^M+1 zP|ga@0R^N?5139L^nEv&(L%<^ZMY)8_A}k#3WcP`uK#uXadonG!kFM4wN`FBxLgM@cA)pR+X;b=D?gOj5ea{jN(-eu%o-sA&oN-pwmM!6DR_mV#Yb& z*d5unhA#HV61oO`>T&pB=AH_Wer!?HC*mz7cP9Fn@=wijQ&4-cXe@0O31;r#!N)y5 zTPPH^iU$LC^I`$tT+K(=+sBJ>aC^5Qz^LblIzK{K8t(qK>=XHt1I|Q9?%-M0$je#t zjL7+zL5^(ZyQHhvG0#e7Q%PPt7q4B^wQzSK7He^ zzo`Gjeb=L3vX<-_$#yVa$QrIFO@TSqbW!1!*zHMTh$c%@yV;TAyc6HJk2&IjVdN~3g$4u*5LPM-d;rUz zxf@Rvx#D0r`8WuTk%p=UjD@(WDQRO1XC6`cVs}Z#5-X5jzd{MEIM89f+HyQ zAgT3i6tc9@?7&c2>0Rg4`3)W@0Wr;j6}q47MMO6RDc5P6NJCixMmYJU9w>lDiU8k1 zV`DTFf|r)W1-AY_3ylMOc?8KGWX|F48WK~!3tD4jBcG+2W(SPG*i%8k6rh123W}}8 zcYB>Ddb%Aj)B_;a;lILjGV?2BsemUr1XyWEcfe?DjD*5)V8?Bl$^ptU6#b*||Auf( zYvD?d10x^DJFwgKx^8CLF zj%5E2!LDFcf0Yaw!ufl$HcnuOHAG1a0CR_6{$umK{q1i|xgIEW0NYwxX?8&ijNIo3 zOzg`7F|9y2&Y;aiC&rh_v6AHHGE>O0CIFjf5-0*cK>HbLqY3}`e!-8+gjkne09+V` zw?wJu__3|$Dh)RU%)M7n8{Y(2rU+lD!s{NQB7EXV zNF$d7Cfp$VY!Oe&?Rj|I$q*hUL_}9z4(K$8=m_5pv5%cR2+r2@e z0$s!xf0E%-5BCBpPjA@WpUWX50m|KrEC`#diLyoLK^Y>8?6&&#eGaw5^ zyqGT3q`3#ui2?ZNf|bg_D}2o4l0D@(5{9URokUrcr@3|YfqxH<-*x8?2s^QocID4MFPkNGB>5qT@%J;yI}5R zbS)|gD2evXpdFlONvdnKRC|}xioC3Fx3pj*^&;nLs~OLupbfF~-ciCq0Y-+VkNwU3C7j1y5PtxV|)T3~706yPA2l`~KdmlYh) z)sz&)s*w=q%DPfZO4TL@HBYyuzSc`RuPBg&$yYFUYfaJD z)>1R$l4LFC^nXu&99%_0$iPnucvTX(4lti{BisXNq`-9-RUIv$!DUNu(sxkNZ#L(s zaIY`osA&9_hj_adPE?XHqviJX(RNJ)YX@@V=egd!T7DTT?H#G$LpBg8DEn&?RWUeA z4%PAJJG$y?y%(#sv86nlHF9bPZw39%1$*@RdRF%3Z*-)kQOwfcd_2eAR5GLx60u-;V+T`;{>=N+S*X15&`dW(fstloDe(W})+KZvq zr$*lF#|>A7xq#^vR_WOr*mU^Bz;&71BFu=bXs_0*VFs`mvmd#%f}Ze8v2oonpC^Ps zj03W2_s{=++Qt$GD5Vks2*~E(zs>5|x!M|;IssDfzZk@&?q*_<7_#qf#78)S=&NHX z<+V%O6=KI_+~CDpow;$IW#kzdjX>aO>d7+yf&AL+J-rQx6>Gw92~3F9$P*K~2(W5O zhU@uZNzcb;tAqQ)K6yAn+_m{(H&f?bk!%-y;pqFiKVQx6dSjOGxu~{1y7=eEWut$( z@7MP3*YnjKofiWBA27SFKy#7s&I3PZes8J8kL{}~!-vE0ojqR+o5WW{f2m#j{ad!r zN6NL=)=`f2oeCJmd;hB>j{|&!+w4&EZjbQwGe<%{t*#ehkJT~`=R%spC+dicnC@_5PTx6guia`-8%oz#8i&T3cDpwGdNx1}g7pxtX2kZ@AstXK`pyZlIL!o&_E` zCJbz%#rA42!fpI^&6+<&3Y%PyS%}w(XLjdKP%3VGJ`(3(3m=SM!%BJD@{xrP-|;2? zbn*Mo@L@bReVea6F*nT|zcr1@u-0q0hAf37SpGN~-+XV(a&UgxV~j$%F@)52A$gM} z`_XvQr{(c2oaK(~On!Dx_Q)T<<%OBFmy`=k`}Jygv;TX8+xUW`S*zy3t!Ekp{~P`1 z^}$K^m)Gp#NjS;cC-u8++K1X!R@nRY1@4GXNfwM^w7wht`ZwS|Dcwk)8Q1OxCaAjg zsG@|w*#oMj7gmppEg-|}aC7PTcy8SMy!`gXzgi#U{Xai@AD-~pYUS5|=gGC+eC3#Q zLl;(MtslK-lpO2dABx7ek1xxRdJkRQUAs6dHA${GCgbI2xUYc`aQ6Bj;2X`oA8aq; zj8r=jM*Qm6{z`%*cJ|WvMD?I}XWzgyN@rKFW21;Xj`S@t&h!&5}U>l_WLxzB~J8H7$g>Gx`&gL)ehH0@BMP0N}!0&Iq!k~M=GOub& zC06YfD?13ZP)JJM$#f6INN)&1li!YH$SQbXnH?G?1{TXqBe$uuSiK0N-^rzOU|_9| zLcz!~v&1Ruq1x%efgh64Z!$k-A z_1aq&!J`}jCXfMUo1gGbo<1vr!&M|}VK0FkOV?4G4(e zkm=dLtmCQZBc4SQ9!dX!^20T70Y6Bl@&?~rXF$OQ1yk{2Pp|94V(9W|o_>(}o0DB; zX2$??{&(Xo?~CVa9&+BJJbXFNPN3)NjH{<^VJ?2K9dUw5gS_t$b*`W0W-a$ek0Fga zcDpzW3$b=}wAaSMNKj^hf9?w+bV#)i*Nex6J9&t!mZftU8MK_;%9q8onm(H*+|ii| zC)q)m4M-rT6td=<);pI1El+iYBo2&(PUgIp=v<)eSfFrSV!^S0wkuW`fqGYWlxnAA z>Dkmx^r#a?H}+fgLl85t<7A_0rI3`XCiv=JY~R%cUR4TyN!vmpwkQs*Av)AH53+-) z)}RuX1@U%2qv2F%En4e9r{qAn61M#6+8PqU3ZF|Sz#5g+jj49T*o-W2gkq7Yb%Y|P zBC^2YXnI}ii)29%R1{>HajFqxW(LuQ2i4B9NZmsq>7F8GwB0{NUSsmKt_``Xy)hfK zc;XTcoU^q3T8lUzeegHX@gfzgg^gG^3q*G7A}U%PUSXLz*pDqtiqWI(0S6w>beaPP zDdH2v=%!l}zd;bPB4YH?4T#+#1uGIUdPGdMLgYHdf-O=9Ye>Q5?dz!MU|1c*;9Yf4 z@$Es(m|wiw5@Qy}jBOo?#4LrVC-ebjp0|TECK1HoO?cfJAI4&4V(Sg~k%aLl$nM++ zlqGlM=%zMgEUJ$lBXgXc0mU-=XH0InL*{KgD}pgMz!{r3Wq*5Mg*y~t#N_r{R+2Ap zfQf<|KH8)#hJ0J)5HrvYsZkH8=F&fnvxEn2No`rc-TscT7M0=mV;C1fO5`_ev9?b5 z1qwk^V3-CZES!Au=o6*^BNEkq@OuXYxfZ>s=uh1(N8&FopYAF#&xk06cIfk3+ybIR zO@>&M?*(r4>*z}yVj)&UdCWr#mZjy{N+ce^l)9m(BSwbLcbxJ2O2+a{r$IO_et3%| z>L4%bl2Hj3{gRi398n-#i@+(!dKr>KaFiHX@D8>8Lj1Y~vj_ zERGH6P!*#SI_221Xzg1uG4&&d14SeHz12L`I2w@Ma~t4^C1|kh3}_g?<1%m)iWN1dNtXdPqIF0WyQ*XLkhg$oQm{=Jrn);j3W%M_d_)s9e6Fv!ti zOhj)mOAfKdU@fA8bxt&yEd*Z`mUu>cEe zW0;d7iAFoz>bks#oqxyEPza)J0F+;Y+DMrxaWDkll1=9G%Jgm;QkTJ1Mu{(f00!O? zvZy9s>^K0To%J8?BYjJVo`473r?woX*wP`1s_GvbV(ktqJ@M?b6Am>Vlh_biq`_fz zKX{!|JGSIdU0c(b*dTj9Xw`RaV#sKEKupze#8YKZ=&Gh;GU=JxzlN1|BTZExm)O9Y z15ZHFkOB_ezS2e?-araoLF3%=Ho&-)!p-nYF{^Vz$@3Ug^o^++4+mqg@sJZE<}?SZtq>??HTb1XT8nJQb% zb*$&DfP-O3rZ}dTOD&!^T{Gdz(X-T2(C#-X~vR;Zz;fQ!SrBFoUWbeWjseT1O;D8NOM@2`cTi8MPKyU(Vs1Z+{p%tJ(CD!e)8b z<8n6x36nD_!OjhEc8{bOWK{K%T+rj*TQqSFiEhtUXpNy2g!TXRc7?y*9#B}-n_R>L zWJSx^w7|%-#%NQRATCWBCK;CNWLq`1<+iPtA}U@$WAb!A`mQ7%a|95K2p}A>1njKFk@xN6Y%=OGEOqSya*YEL zU$QgiCP)09jI>8h<79W}RLM7)1@lC{NlF}z^S{qM2C>fwSwJ!i9&~__*Sji5sOX9N zBcP28oWWNEyh*iuj5y{w#x5sYQC4-LMe`x6T0^PbF9H^?_6VqF2NqR(dU~lF+60zH{i8Ljw@K?k^MGb}IYoVvr5^4oOq5J@_6m&?Nx%hf5N*tC3DTo5>P6t1{6 z`pKUeVGsquHH@@(uMxxo&BP)53J7~5H3Y9?S6uoWZ(h8J?KQ_W*O?W4W2$H$V`jODDa$FP zs}XZ#3tm`>;NigHpX#umCxR^v3eMipAgHxV=x_0@Gf|N?oyd^2)s6#1+80(AHcuwl zhCixj+D)%B7g&n^Mv{o8+PFTr#;bQxiRDl-?$RY=b z$c8sBWOxr1>CIsFU%Qc}PS2BqeWyQ;`Q^}A5vFvd6wF-Mu@rIPrfS$aO5*|rsQ7!j zwq281`nP!bJ|8@{Q^Ze3cCHfQM5I8&NwJjv=d4j(&8Lm=bCS#aRcnV6~h^D6Ol zggb5Vp3nnutq@u(EmviPgXawIVg9%hnBSg+(}t8B>Zp!0z8k{wAGc$-dw#Pp(kqA&6S;-tD;~Nvo$l38xAuIWslo{%a?KPB;rikpqtIM@X-BX zCuj>XG54o~C_Q$EE?&giLw}F3taVX)$DNBfW2erRM_znR5&IabZckVq(nn!aFj4AZ zECJ0kFuaAu=0|!|IQxSaK(~0CZ6fz=M&c1x}&BYGw#7&OJ3xtTd>%}YR6lfmr0M#?wTUe zuBLh8pm)Qt?0$a$sUe2Xkl3$s2bFgG6h<)>BHEk#VnUE{*{9K{i9z1KNo(e?7y zEG}-ug{KegL+nD^g1*O5hetNk^4Ke^UCZ42xOEAFk~(LAUqzI>%Z$ry#rs4MN5PVt zY%3G*GUF$smn4DCDHv;H#kQ@@8`yWQvz4!dB zYZro^J?>=DuZ&!wgPTUronanGSjaAnjjEsppR$W_TJOWd&_Xck7PuClt-(GNpl>uj zO`g=f7b|OcUY~R(?!4dp>97r0j?L}MKu1ym>n!fs|Lx493qPmV0N^hafI9>aaCaEH zI=k50YS`NR#~!SfE~d8sFuVW%2CM)p{pU}}Y=0C8BOJu9&R^WgTRAfxh(FFeG|{>u z+kQ2>Ffk8XDrZu>J)_A}(_At_|NboA<{zlKPG47MnNwk7#U7YF4(xmiX-jgIZk zp)3p}XS(b>D&*a>DWSPLM5!zkVPl9a&RMx6gG;5B!k9G4$EiwYis#aFZzeu>)wOr| zv=w+UtPr**z<+~S`kf(l|HTF$?EWfxjm9v6kF>F^L7_9?GnL#n#uiTj(PiM#npv?0 z+hP4Q>c0*9?_wk(@M-oQ;N$>%mI7e_Q2_my7yP~c|AfnboPeN^1c)M^;6KgqfBQQ- zpTD9h8^6=ej13@jU>rT&6g{um7?(DRFb2t}8CFH85Q^ZWh;#!s- z{T1yrW0}Km_^HAB>wx#lA;mfFB5`HCpm4O1q8FI7S=JmRm~!MuL?R)HiRf~>&;|=( z1{(?G?MIv8oRX_tjo7+G6b*HxPSQ?S2IdCs?9Fo{)&Q;Dyjty-b^G~6)%NKylP`!R z_Pu!X-8A*azaKpGInDLGm-D7k4#SvpBsXu9$# z$!66kM>vP2XsBmJB_P;W(qjLQ86^KG5y<WuhnN$pL>=5 z!h&En{{D2kY-c2T^;NBbld8tInXg4BsA!%J zJ(RmGC9N%Gqz2X+!yS<1nOv3qoU4{i%*CMWuW}@N;N_6fxuHN%tK;ckCMQ)aUOPMx z!Ydb;An~K zdNZ;(mAN8h3tz<=b@@qvkZ1DSTbvfsv+_62`oO?yZNu08<3KCYK%OqOvGMFr>rhp` zBJ@fD;Jg*g7W~z5PT+dfsLoRq`l8w8nZb}&5hw+WeZB;VJ<(sv8?sgeVw1H3=x8zCEaMqKy@p_$d(_RLs%QCy-7TsAdD-LFEt;Ky?#+ zyc6WBCYC*~%{>T}VeI!GY@QSJo})td^e8KUM{M12R@s^7b1Q1bSYRBpLA;{_Sr9`rV+>MRVn5dX+Fi zCH#-Fi84MWmz+BCcij|-DMj4xMS>_Vuf08RG1htxSHcC;otB37?W2Y#E zDB_73GgYK=S+M*zhcifH$l7Bc=&qhrb@eOl!)6sNaB@Pq8vq-Z#(iY=qyGr9(M`su z%_}n9CuGt@qc$~;Z1nPYiPP@mU&)gUfZ?EbaqWTW7-C( zN?4XZQ+`vQYi6b?Qtp(K$nQ<^29hb{wd9iu<#~Re^)J=rXv28lQlB5U0oc*6`&e`y znydHDtfFr%-^u0b9DVTWNTnJ1lr`NI-lH*i2SQImT(8EHpuu9n;-fCn@m z&F@I=yYqN)>~PN;W8nop&PjGPpLmbMj^$1N67hc@ud$gVtwpKlq};u_}pD zBcK2j@O^k-G-@<3D*#Xer+$xa)9>h-c(V$*t-c8fmTqU)FPaArIF|0JkvR|=UESu! z_n8fw3@fC=4gazW{@r;r=sn%`{=$EYfR{RwPCgiHDUY53_K(NIS@@)oU=jhBgGh)! z3T(h20S-8h3dNI??O`YkmEIq9h`-#E2!MNPVu5|S0TZfR1k{T*RGbG&wl2OHcR(r| z6z#&N14(jEr$-xX4v3waix}IYFd^mr3GHrr|NXU%=UhjPIUZNZgru2Naw!};R@k#lbb zIkvgN4PCQl!Bt54``M#IgAOSY`sOrVyns7ei8lke|3)}B`Llug4kXLmle^J{@dvVJ zo$pnk7kyH#8H$|@mi8L^uH$;#J2sl8`(=2{&;GaFw&ujn7`-Eiu&2tGI%%4=^sIn;=(ovZBRc(|^uk^nQOF7MQ+n*xzC6`+V^&<$22j^t?1N)EdHbG7NM^w0R=Pum>=7^JT7k9kzoF2_;)!Psme#umJ4*R^NJY4HNkL^g!K ze%u%Pf8({@eX5*XPfT9o~nC*JU+&OV*EK|BG>6Q~NgJ)kX@jj^nN(D-x{A#iEs zzv$C{3UnL;@KgwZwdo^-f6=FV0QwaF7k%2w=WLevi#~bH35Wvzd5@TEYffTENrWgUPNMZ*b=HU7+w0tPr$AqBpU#2iLLIAXZ$maxvsP;oL9bk+9 zF#P|MXu<5p(1*gqgYw1Hzv$E0Kj;&!U?B(dbGaq10v6qm@Dkf+aVRPY+jHXlAMKs_JJeeo$0v=lU6UbKDI#@? zM#@g2Rbw*9nz5uwMI&3bj1mYaRO-;tV`bMK#U z&rdV+Jg@he=R4>7obP#`^LbB98=bT+`61&5@o7R_eL}Rew|sio%I=L3m@`Tm>UBil zf>uj$DTSobya7JEHQ78pZVk0~XJ~C#679sw!+RfSqSiIlBJ?AIW-T-7^RaSb2EHu| zE|jp4F1O;X&?hvC?6?lZhHB?WsBZXw`ha@av@15oLeu2Ga!d^&S%2bOHi* zTYihz4ek~nzZ{cl*rg)U6<#3k=k6tpTzvK*Ym?D3G@gh?LZ`CK&%+DR2B0g{msX%otP7>jmihw>aWIqToDp_YP0OUBZ5=OB-z6 z2Uq@Ptn=w?C6geQ`?ka2%WHjxMb!<7j_tUMn!2S=%H)r0g{jqO2V;Dvd8op2!*eb0 z7m`}>EA6h(ctZr=5iYc^HQhLErA64(`?M>g_+q`=dj>(@{ryRVolJp4dQswO=VF_M zn5x7`#U~TRv%Rl}%CSzaHZ7RJm*>!_d@b;f7s!tujr=^qo{J|1bQ|nzZx%kjpYlnR zb?`}i_*3Zg;8?JM_xNG>yvMcdHvJd*(>3epsv{y)gFENcTS{ohq>x9UzrUe&(vx@F zC(thLQ_IwuaBZ*YwI556Eu%u`p0@O=Z#&8CjgpSEOKhGgx2dj*o|p`=3^2{CZ4kYy zQWDM!A@UoWnhgT?K=OTI>{eY@j=?*PF9 zYg-dUiRkXb(QiSWO~2U8Y_;^T9*XyVeLctXALW4ZLK4ZmB>EY*zQg~MphsqOh$tQJFk6m zxnNvZdO%Au!Beu_rgn~TfLYpEv}Ie9o_T+Z`G_uJ#SM}3g*`EgP#Vy`pM{U#Grn&G zJtbd)R<`W=aG2gG2cCCBsQ(umLq(Rnd3-)U0M}D}P!Kb3WpWza2*IY9teyC0v zW#yt0-_IwE${BbNq^_whek;%E`9*$30Xe2eNBr5o01|$1N?6Pj?bg5Pe3bdS(1!Ew zRa1Y^c(DAX6#{!i-zm4R_;OnAj_9!wkyc`B*=oM%+pBonw2z8L1X87PJp%3e6T(f= zfrQGV_n(-SbOmdaA+XV}N?b^419&JC?pgjVyBQOFHpSLm&s@g04yEKu7(dIf-jye~ zM{`izO1aO{p;?l@XGmjozDbJ`Qa;#`ZBWExH1Iw*-KC#TR>0}ILrKx!iJx_IlgI}A zX)jMnojGOrRnyRO|K2j2-zO5ny`pY>+#A$qvD|9J;jKUQ>C}_pH z3I^FJFd5hbrF^L`&^VNZl4e9%*PE;14nRH&RI_Ps=I7?%{xW7dFxY3vMr2i+vfCPHwYj9ksR4cwFt&@0lk}Hyju0=926LR)^mFtw&6(;1 z;$YGb8~==1#yN6-KpG51Vbdd64*FL_3dn=08EhV5vdn`S8lVJN>dTf$vs#wmEc^v= zumY2fAHpr;ob{L>4i+$R;3t0Kzsi|F7(9H+hF>`^!(2yEL7sbuk4?j1xBXx+aK8_v zxpzP~>1RY3hZFweCg9!=0kyb&bWW|8mpHY!U3E}}+fL?GfnNqymds^P0JLh^65k+! zr5lmUxCMF8RAcjj!OJ{gv4IMp#l%)9y2>>k0K*B?;hvt^Dlpiy7>=Lz=VWb+;e}#} RSjjVMVHVJQe<+Ui?jO^cNXq~K literal 0 HcmV?d00001 diff --git a/server.txt b/server.txt index ca2c3646..be821115 100644 --- a/server.txt +++ b/server.txt @@ -17,7 +17,7 @@ Zugangsdaten NSW Server: https://bscw.dlz-it.de/bscw/bscw.cgi Benutzer: mippel PW: baffi1234! -PW: lkDDXd1321? +PW: 34SsjjJJ:: NSW Test E-Mail Account: