update sql scripts

This commit is contained in:
luc 2026-09-22 16:03:46 +02:00
parent ae632c06d8
commit 6b16ea1b6a
26 changed files with 1113 additions and 767 deletions

View file

@ -1647,7 +1647,21 @@ WORD Epd3Base::Epd3U::PrepareForIssue()
progressCallback(EpdSteps::StepSleep, EpdStepResults::OK);
DebugWrite("**** After sleep callback\n");
}
Sleep(SleepAfterClear);
switch (WaitForSingleObject(hCancel, SleepAfterClear))
{
case WAIT_OBJECT_0:
DebugWrite("**** After sleep callback, cancel event set\n");
rv = r_ErrorUserCancelled;
goto error;
case WAIT_TIMEOUT:
rv = r_OK;
break;
default:
rv = r_OperationFailed; // WAIT_ABANDONED
break;
}
if (DoDisconnectAfterClear) {
if (isConnected && epdComsHandle) {
@ -2280,7 +2294,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
r = CommitAndEnd2RV(EndWriteAccessLevel, token);
if (!r) {
isAdmin = true;
displayIds = new QuickAccessDisplay_t[6]{
std::vector<QuickAccessDisplay_t> vdisplayIds =
{
{ 0,0x0021 },
{ 1,0x0022 },
{ 2,0x0031 },
@ -2288,10 +2303,8 @@ int Epd3Base::Epd3U::WriteConfig(void)
{ 4,0x0051 },
{ 5,0x0062 }
};
numDisplays = 6;
SetFunctionReturnValue(eFunctions::WriteQuickAccessDisplays_R3, 1);
token = BeginWriteQuickAccessDisplays_R3(epdComsHandle, displayIds, numDisplays, nullptr);
token = BeginWriteQuickAccessDisplays_R3(epdComsHandle, vdisplayIds.data(), vdisplayIds.size() , nullptr);
r = CommitAndEnd2RV(EndWriteQuickAccessDisplays_R3, token);
}
@ -2299,48 +2312,56 @@ int Epd3Base::Epd3U::WriteConfig(void)
if (r != 0)
Error = r;
if (!r && isAdmin) {
SetFunctionReturnValue(eFunctions::WriteDoseProfileInterval, 1);
token = BeginWriteDoseProfileInterval(epdComsHandle, 0, nullptr);
r = CommitAndEnd2RV(EndWriteDoseProfileInterval, token);
}
if (!r && isAdmin) {
//Unmanaged%20HtmlFiles/_display_ids.html
numItems = 9;
if (HardVersionMinor > 0) {
enables = new DisplayAttributeMap_t[9]{
{ 0,0x3FFF,0xFFFF },
{ 1,0x3FFF,0xFF01 }, //{ 1,0x0FFF,0xFFE1 }
{ 2,0x3FFF,0xFE0F },
{ 3,0x3FFF,0xFE0F },
{ 4,0x3FFF,0xFE01 },
{ 5,0x3FFF,0xFF0B },
{ 6,0x3FFF,0xFFF9 },
{ 7,0x3FFF,0xFFD3 },
{ 8,0x3FFF,0xFFFF }
//numItems = 5;
//if (HardVersionMinor > 0) {
// enables = new DisplayAttributeMap_t[9]{
// //{ 0,0x3FFF,0xFFFF },
// { 1,0x3FFF,0xFF01 }, //{ 1,0x0FFF,0xFFE1 }
// { 2,0x3FFF,0xFE0F },
// { 3,0x3FFF,0xFE0F },
// { 4,0x3FFF,0xFE01 },
// { 5,0x3FFF,0xFF0B },
// { 6,0x3FFF,0xFFF9 },
// { 7,0x3FFF,0xFFD3 },
// { 8,0x3FFF,0xFFFF }
// };
//}
//else {
std::vector<DisplayAttributeMap_t> venables =
{
//{ 0,0x0FFF,0xFFFF },
{ 1,0x0001,0xFF01 }, //Operation Menu Back
{ 2,0x000F,0xFE0F }, //Measurand1 Back Dose Rate DoseAlarm
{ 3,0x000F,0xFE0F },
//{ 4,0x0001,0xFE01 },
{ 5,0x00CF,0xFF89 },
{ 6,0x0003,0xFF03 },
{ 7,0x000F,0xFF0B },
//{ 8,0x00FF,0xFFFF }
};
}
else {
enables = new DisplayAttributeMap_t[9]{
{ 0,0x0FFF,0xFFFF },
{ 1,0x0FFF,0xFFE1 },
{ 2,0x0FFF,0xFE07 },
{ 3,0x0FFF,0xFE07 },
{ 4,0x0FFF,0xFE01 },
{ 5,0x0FFF,0xFF0B },
{ 6,0x0FFF,0xFFF9 },
{ 7,0x0FFF,0xFFD3 },
{ 8,0x0FFF,0xFFFF }
};
}
//}
// 0x1 Operation Menu Back /0x2 On / Off 0x4 Clear Dose 0x8 Toggle Telemtry 0x10 Responder Trigger
// 1 0 0 0 0
/*SetFunctionReturnValue(eFunctions::WriteDisplayEnables_R3,1);
token = BeginWriteDisplayEnables_R3(epdComsHandle, enables, numItems, nullptr);
SetFunctionReturnValue(eFunctions::WriteDisplayEnables_R3,1);
token = BeginWriteDisplayEnables_R3(epdComsHandle, venables.data(), venables.size() , nullptr);
r = CommitAndEnd2RV(EndWriteDisplayEnables_R3, token);
if (r != 0)
Error = r;*/
Error = r;
}
if (!r) {
uint8_t numMenus = 9;
uint16_t permissions[9] = {
std::vector<uint16_t> vpermissions= {
0x0000 ,
0x0016 ,
0x0000 ,
@ -2353,7 +2374,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
};
SetFunctionReturnValue(eFunctions::WriteDisplayEnablePermissions_R3,1);
token = BeginWriteDisplayEnablePermissions_R3(epdComsHandle, AccessLevel_t::Admin, permissions, numDisplays, nullptr);
token = BeginWriteDisplayEnablePermissions_R3(epdComsHandle, AccessLevel_t::Admin, vpermissions.data(), vpermissions.size(), nullptr);
r = CommitAndEnd2RV(EndWriteDisplayEnablePermissions_R3, token);
if (r != 0)
@ -2363,8 +2384,9 @@ int Epd3Base::Epd3U::WriteConfig(void)
if (!r) {
//AlarmConfiguration
if (isBG) {
const uint8_t alarmConfigLen = 10;
alarmConfigIds = new AlarmConfig_t[alarmConfigLen]{
std::vector<AlarmConfig_t> valarmConfigIds={
/* const uint8_t alarmConfigLen = 10;
alarmConfigIds = new AlarmConfig_t[alarmConfigLen]{*/
{ (AlarmIds)0,0,0x0000,0x9CC1,60 },
{ (AlarmIds)1,0,0x0000,0x1884,60 },
{ (AlarmIds)2,0,0x0000,0x9CC7,60 },
@ -2377,7 +2399,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
{ (AlarmIds)9,0,0x0000,0x9CA5,60 }
};
SetFunctionReturnValue(eFunctions::WriteAlarmConfiguration_R3, 1);
token = BeginWriteAlarmConfiguration_R3(epdComsHandle, alarmConfigIds, alarmConfigLen, nullptr);
token = BeginWriteAlarmConfiguration_R3(epdComsHandle, valarmConfigIds.data(), valarmConfigIds.size() , nullptr);
r = CommitAndEnd2RV(EndWriteAlarmConfiguration_R3, token);
}
}
@ -2400,7 +2422,7 @@ int Epd3Base::Epd3U::WriteConfig(void)
token = BeginWriteOffModeDisplay_R3(epdComsHandle, dutyCycle, offModeDispId, nullptr);
r = CommitAndEnd2RV(EndWriteOffModeDisplay_R3, token);
/* //Does not seem to work on new
/* //Does not seem to work on new epd
if (r != 0)
Error = r;
else {

View file

@ -92,7 +92,8 @@ namespace Epd3Base {
fSetCalDueDate,
fReadSelfTestInterval,
EpdOn,
EpdOff
EpdOff,
WriteDoseProfileInterval
};
@ -362,14 +363,16 @@ namespace Epd3Base {
DetectorThreshold_t dTresholds[MaxTresholds];
DisplayAttributeMap_t* enables;
/* DisplayAttributeMap_t* enables;
uint8_t numItems;
QuickAccessDisplay_t* displayIds;
uint8_t numDisplays;
AlarmConfig_t* alarmConfigIds;
uint16_t alarmConfigLen = 20;
uint16_t alarmConfigLen = 20;*/
OffModeDutyCycle dutyCycle;
OffModeDisplayId_t offModeDispId;
@ -404,24 +407,24 @@ namespace Epd3Base {
void decodePeakRates(int count);
public:
void SetReleaseLogging(bool doLog);
int SetFunctionReturnValue(eFunctions f, BYTE CanIgnore, int retry=0);
void SetCommitReturnValue(int rv);
void SetCommitReturnValue(int step, int rv);
uint32_t SetEndReturnValue(int rv);
uint32_t SetEndReturnValue(int step, int rv);
void SetReleaseLogging(bool doLog);
int SetFunctionReturnValue(eFunctions f, BYTE CanIgnore, int retry=0);
void SetCommitReturnValue(int rv);
void SetCommitReturnValue(int step, int rv);
uint32_t SetEndReturnValue(int rv);
uint32_t SetEndReturnValue(int step, int rv);
int32_t CommitAndSetRV();
int32_t CommitAndSetRV(int idx[], int len);
int32_t CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token);
int32_t End2RV(int step, int32_t(WINAPI* endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token);
int GetAll(bool Closeconnection);
int GetAllDeissue(bool reconnect);
int IssueAndCheck(float gain, float ChirpRate);
int SetChirp(float Sensitivity);
int GetSelfTestData();
WORD ReadCal();
WORD ReadSensitivitiesAndTresholds();
int32_t CommitAndSetRV();
int32_t CommitAndSetRV(int idx[], int len);
int32_t CommitAndEnd2RV(int32_t (WINAPI *endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token);
int32_t End2RV(int step, int32_t(WINAPI* endFunction2)(CommsHandle hComms, CompletionToken token), CompletionToken token);
int GetAll(bool Closeconnection);
int GetAllDeissue(bool reconnect);
int IssueAndCheck(float gain, float ChirpRate);
int SetChirp(float Sensitivity);
int GetSelfTestData();
WORD ReadCal();
WORD ReadSensitivitiesAndTresholds();
WORD ReadDoses();
int ClearDoses();
int ClearAlarms();
@ -435,11 +438,10 @@ namespace Epd3Base {
WORD Issue(bool Preparedone);
WORD EPDReadExtraStatus();
WORD WriteCal();
WORD SetCalDueDate();
WORD PrepareForIssue();
private:
int WriteConfig(void);
void resetErrors();

View file

@ -37,7 +37,7 @@ int EpdBaseClr::Epd2::SetEndNotifyAlarm(UInt16 NotifyAlarm, UINT16 NotifyAlarmDu
/// <param name="DoDisconnectAfterClear">After clear dose, peaks do a disconnect</param>
/// <param name="DoDisconnectBeforeReconnect">Before a reconnect, do a disconnect</param>
/// <returns></returns>
int EpdBaseClr::Epd2::OtherParam(UInt16 ResponseTimeout, UInt16 DiscoveryCacheTimeout,UInt16 ReconnectRetries, UInt16 SleepAfterClear, UInt16 SleepBeforeReconnect, UInt16 SleepAfterDisconnect, Boolean DoDisconnectAfterClear, Boolean DoDisconnectBeforeReconnect)
int EpdBaseClr::Epd2::OtherParam(int ResponseTimeout, int DiscoveryCacheTimeout,int ReconnectRetries, int SleepAfterClear, int SleepBeforeReconnect, int SleepAfterDisconnect, bool DoDisconnectAfterClear, bool DoDisconnectBeforeReconnect)
{
if (epd3) {
epd3->ResponseTimeout = ResponseTimeout;

View file

@ -10,6 +10,7 @@
#pragma managed
using namespace System;
using namespace System::Runtime::InteropServices;
using namespace System::Windows;
namespace EpdBaseClr {
public enum class EpdSteps1
@ -417,7 +418,7 @@ namespace EpdBaseClr {
bool HasStepError();
int SetEndNotifyAlarm(UInt16 NotifyAlarm, UINT16 NotifyAlarmDuration);
int OtherParam(UInt16 ResponseTimeout, UInt16 DiscoveryCacheTimeout, UInt16 ReconnectRetries, UInt16 SleepAfterClear, UInt16 SleepBeforeReconnect, UInt16 SleepAfterDisconnect, Boolean DoDisconnectAfterClear, Boolean DoDisconnectBeforeReconnect);
int OtherParam(int ResponseTimeout, int DiscoveryCacheTimeout,int ReconnectRetries, int SleepAfterClear, int SleepBeforeReconnect, int SleepAfterDisconnect, Boolean DoDisconnectAfterClear, Boolean DoDisconnectBeforeReconnect);
int SetReleaseLogging(bool doLog);
private:

View file

@ -1,13 +1,13 @@
#pragma once
// C++ / Win32 resource editor vereist getallen met komma's
#define VERSION_MAJOR 3
#define VERSION_MINOR 10
#define VERSION_MAJOR 4
#define VERSION_MINOR 0
#define VERSION_BUILD 0
#define VERSION_REVISION 0
// Strings voor de tekstuele weergave
#define VERSION_STRING "3.10.0.0"
#define VERSION_STRING "4.0.0.0"
#define COPYRIGHT_STRING "Copyright (c) 2019-2026 LSW-Tech Luc Vandenbroucke"
#define COMPANY_STRING "LSW-Tech"
#define PRODUCT_STRING "EpdBaseClr"

View file

@ -1,149 +0,0 @@
-- Batch 1: Setup Versioning and Determine Execution
DECLARE @TargetVersionNumber INT = 1;
DECLARE @VersionNumber INT;
IF OBJECT_ID('dbo.[DatabaseVersion]') IS NULL
BEGIN
CREATE TABLE [dbo].[DatabaseVersion] (
VersionNumber INT NOT NULL,
VersionDate DATETIME NOT NULL,
Description NVARCHAR(200) NULL
);
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
VALUES (1, GETDATE(), 'Initial version');
SET @VersionNumber = 1;
END
ELSE
BEGIN
SELECT @VersionNumber = ISNULL(MAX(VersionNumber), 0)
FROM [dbo].[DatabaseVersion];
END
-- If version target is not met, disable execution for all subsequent batches
IF @VersionNumber <> @TargetVersionNumber
BEGIN
PRINT 'Target version condition not met (Version is not ' + CAST(@TargetVersionNumber AS VARCHAR(10)) + '). Canceling rest of script.';
SET NOEXEC ON;
END
GO
-- Batch 2: DDL Command 1
IF NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID('[dbo].[StationSettings]')
AND name = 'SleepAfterClear'
)
BEGIN
ALTER TABLE [dbo].[StationSettings] ADD [SleepAfterClear] INT;
END
GO
-- Batch 3: Next DDL Command (Runs safely because of GO separation)
-- CREATE PROCEDURE / CREATE VIEW / etc.
ALTER PROCEDURE dbo.StationSettingsUpdate
@ComPort INT = NULL,
@Inst_CODE1 INT = NULL,
@Inst_CODE2 INT = NULL,
@Inst_Name1 VARCHAR(50) = NULL,
@Inst_Name2 VARCHAR(50) = NULL,
@TestCSN VARCHAR(50) = NULL,
@Reader VARCHAR(70) = NULL,
@useTestButtons BIT = 0,
@useBeep TINYINT = 22,
@checkUser BIT = 0,
@EPDTimeout INT = 10000,
@EPDRetries INT = 1,
@RestartCom BIT = 0,
@RestartComFirst BIT = 0,
@OnlyMK2 BIT = 0,
@AllowMultipleEPD BIT = 0,
@WriteConfig BIT = 1,
@IssueWhenDoseAlarms BIT = 0,
@ElatecPort INT = NULL, @SleepAfterClear INT =3000
AS
IF NOT EXISTS (SELECT * FROM dbo.StationSettings WHERE PCNr = HOST_NAME())
INSERT dbo.StationSettings
(
PCNr,
ComPort,
Inst_CODE1,
Inst_CODE2,
Inst_Name1,
Inst_Name2,
TestCSN,
Reader,
useTestButtons,
useBeep,
checkUser,
EPDREtries,
RestartCom,
RestartComFirst,
OnlyMK2,
AllowMultipleEPD,
WriteConfig,
IssueWhenDoseAlarms,
ElatecPort,SleepAfterClear
)
VALUES
(HOST_NAME(), @ComPort, @Inst_CODE1, @Inst_CODE2, @Inst_Name1, @Inst_Name2, @TestCSN, @Reader, @useTestButtons,
@useBeep, @checkUser, @EPDRetries, @RestartCom, @RestartComFirst, @OnlyMK2, @AllowMultipleEPD, @WriteConfig,
@IssueWhenDoseAlarms, @ElatecPort, @SleepAfterClear);
ELSE
UPDATE dbo.StationSettings
SET ComPort = @ComPort,
Inst_CODE1 = @Inst_CODE1,
Inst_CODE2 = @Inst_CODE2,
Inst_Name1 = @Inst_Name1,
Inst_Name2 = @Inst_Name2,
TestCSN = @TestCSN,
Reader = @Reader,
useTestButtons = @useTestButtons,
useBeep = @useBeep,
checkUser = @checkUser,
EPDTimeout = @EPDTimeout,
EPDREtries = @EPDRetries,
RestartCom = @RestartCom,
RestartComFirst = @RestartComFirst,
OnlyMK2 = @OnlyMK2,
AllowMultipleEPD = @AllowMultipleEPD,
WriteConfig = @WriteConfig,
IssueWhenDoseAlarms = @IssueWhenDoseAlarms,
ElatecPort = @ElatecPort,
SleepAfterClear = @SleepAfterClear
WHERE PCNr = HOST_NAME();
GO
ALTER PROCEDURE [dbo].[StationSettingsSelect] AS
SELECT ID_Station,
PCNr,
ComPort,
Inst_CODE1,
Inst_CODE2,
Inst_Name1,
Inst_Name2,
TestCSN,
Reader,
useTestButtons = ISNULL(useTestButtons, 0),
useBeep = ISNULL(useBeep, 22),
checkUser = ISNULL(checkUser, 0),
EPDTimeout = ISNULL(EPDTimeout, 10000),
EPDRetries = ISNULL(EPDREtries, 1),
RestartCom = ISNULL(RestartCom, 0),
RestartComFirst = ISNULL(RestartComFirst, 0),
OnlyMK2 = ISNULL(OnlyMK2, 0),
AllowMultipleEPD = ISNULL(AllowMultipleEPD, 0),
WriteConfig = ISNULL(WriteConfig, 0),
IssueWhenDoseAlarms = ISNULL(IssueWhenDoseAlarms, 0),
ElatecPort,SleepAfterClear
FROM dbo.StationSettings
WHERE PCNr = HOST_NAME();
GO
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
VALUES (2, GETDATE(), 'SleepParameter');
go
-- Final Batch: Turn execution back ON for subsequent scripts in the same session
SET NOEXEC OFF;
GO

View file

@ -0,0 +1,201 @@
-- Batch 1: Setup Versioning and Determine Execution
go
DECLARE @TargetVersionNumber INT = 1, @VersionNumber INT;
IF OBJECT_ID('dbo.[DatabaseVersion]') IS NULL
BEGIN
CREATE TABLE [dbo].[DatabaseVersion] (
VersionNumber INT NOT NULL,
VersionDate DATETIME NOT NULL,
Description NVARCHAR(200) NULL
);
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
VALUES (1, GETDATE(), 'Initial version');
SET @VersionNumber = 1;
END
ELSE
BEGIN
SELECT @VersionNumber = ISNULL(MAX(VersionNumber), 0)
FROM [dbo].[DatabaseVersion];
END
-- If version target is not met, disable execution for all subsequent batches
IF @VersionNumber <> @TargetVersionNumber
BEGIN
PRINT 'Target version condition not met (Version is not ' + CAST(@TargetVersionNumber AS VARCHAR(10)) + '). Canceling rest of script.';
SET NOEXEC ON;
END
GO
-- Batch 2: DDL Command 1
IF NOT EXISTS (
SELECT 1
FROM sys.columns
WHERE object_id = OBJECT_ID('[dbo].[StationSettings]')
AND name = 'SleepAfterClear'
)
BEGIN
ALTER TABLE [dbo].[StationSettings] ADD [SleepAfterClear] INT;
ALTER TABLE [dbo].[StationSettings] ADD ResponseTimeout INT;
ALTER TABLE [dbo].[StationSettings] ADD DiscoveryCacheTimeout INT;
ALTER TABLE [dbo].[StationSettings] ADD ReconnectRetries INT;
ALTER TABLE [dbo].[StationSettings] ADD SleepBeforeReconnect INT;
ALTER TABLE [dbo].[StationSettings] ADD SleepAfterDisconnect INT;
ALTER TABLE [dbo].[StationSettings] ADD DoDisconnectAfterClear BIT;
ALTER TABLE [dbo].[StationSettings] ADD DoDisconnectBeforeReconnect BIT;
END
GO
-- Batch 3: Next DDL Command (Runs safely because of GO separation)
-- CREATE PROCEDURE / CREATE VIEW / etc.
GO
CREATE OR ALTER PROCEDURE dbo.StationSettingsUpdate
@ComPort INT = NULL,
@Inst_CODE1 INT = NULL,
@Inst_CODE2 INT = NULL,
@Inst_Name1 VARCHAR(50) = NULL,
@Inst_Name2 VARCHAR(50) = NULL,
@TestCSN VARCHAR(50) = NULL,
@Reader VARCHAR(70) = NULL,
@useTestButtons BIT = 0,
@useBeep TINYINT = 22,
@checkUser BIT = 0,
@EPDTimeout INT = 10000,
@EPDRetries INT = 1,
@RestartCom BIT = 0,
@RestartComFirst BIT = 0,
@OnlyMK2 BIT = 0,
@AllowMultipleEPD BIT = 0,
@WriteConfig BIT = 1,
@IssueWhenDoseAlarms BIT = 0,
@ElatecPort INT = NULL,
@SleepAfterClear INT = 6000,
@ResponseTimeout INT=500,
@DiscoveryCacheTimeout INT=5000,
@ReconnectRetries INT=5,
@SleepBeforeReconnect INT=1000,
@SleepAfterDisconnect INT=1000,
@DoDisconnectAfterClear BIT=0,
@DoDisconnectBeforeReconnect BIT=0
AS
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.StationSettings WHERE PCNr = HOST_NAME())
BEGIN
INSERT dbo.StationSettings
(
PCNr,
ComPort,
Inst_CODE1,
Inst_CODE2,
Inst_Name1,
Inst_Name2,
TestCSN,
Reader,
useTestButtons,
useBeep,
checkUser,
EPDREtries,
RestartCom,
RestartComFirst,
OnlyMK2,
AllowMultipleEPD,
WriteConfig,
IssueWhenDoseAlarms,
ElatecPort,
SleepAfterClear,
ResponseTimeout,
DiscoveryCacheTimeout,
ReconnectRetries,
SleepBeforeReconnect,
SleepAfterDisconnect,
DoDisconnectAfterClear,
DoDisconnectBeforeReconnect
)
VALUES
(HOST_NAME(), @ComPort, @Inst_CODE1, @Inst_CODE2, @Inst_Name1, @Inst_Name2, @TestCSN, @Reader, @useTestButtons,
@useBeep, @checkUser, @EPDRetries, @RestartCom, @RestartComFirst, @OnlyMK2, @AllowMultipleEPD, @WriteConfig,
@IssueWhenDoseAlarms, @ElatecPort, @SleepAfterClear, @ResponseTimeout ,
@DiscoveryCacheTimeout ,
@ReconnectRetries ,
@SleepBeforeReconnect,
@SleepAfterDisconnect,
@DoDisconnectAfterClear,
@DoDisconnectBeforeReconnect);
END
ELSE
BEGIN
UPDATE dbo.StationSettings
SET ComPort = @ComPort,
Inst_CODE1 = @Inst_CODE1,
Inst_CODE2 = @Inst_CODE2,
Inst_Name1 = @Inst_Name1,
Inst_Name2 = @Inst_Name2,
TestCSN = @TestCSN,
Reader = @Reader,
useTestButtons = @useTestButtons,
useBeep = @useBeep,
checkUser = @checkUser,
EPDTimeout = @EPDTimeout,
EPDREtries = @EPDRetries,
RestartCom = @RestartCom,
RestartComFirst = @RestartComFirst,
OnlyMK2 = @OnlyMK2,
AllowMultipleEPD = @AllowMultipleEPD,
WriteConfig = @WriteConfig,
IssueWhenDoseAlarms = @IssueWhenDoseAlarms,
ElatecPort = @ElatecPort,
SleepAfterClear = @SleepAfterClear,
ResponseTimeout = @ResponseTimeout,
DiscoveryCacheTimeout = @DiscoveryCacheTimeout,
ReconnectRetries = @ReconnectRetries,
SleepBeforeReconnect = @SleepBeforeReconnect,
SleepAfterDisconnect = @SleepAfterDisconnect,
DoDisconnectAfterClear = @DoDisconnectAfterClear,
DoDisconnectBeforeReconnect = @DoDisconnectBeforeReconnect
WHERE PCNr = HOST_NAME();
END
END
GO
CREATE OR ALTER PROCEDURE dbo.StationSettingsSelect
AS
BEGIN
SELECT ID_Station,
PCNr,
ComPort,
Inst_CODE1,
Inst_CODE2,
Inst_Name1,
Inst_Name2,
TestCSN,
Reader,
ISNULL(useTestButtons, 0) AS useTestButtons,
ISNULL(useBeep, 22) AS useBeep,
ISNULL(checkUser, 0) AS checkUser,
ISNULL(EPDTimeout, 10000) AS EPDTimeout,
ISNULL(EPDREtries, 1) AS EPDRetries,
ISNULL(RestartCom, 0) AS RestartCom,
ISNULL(RestartComFirst, 0) AS RestartComFirst,
ISNULL(OnlyMK2, 0) AS OnlyMK2,
ISNULL(AllowMultipleEPD, 0) AS AllowMultipleEPD,
ISNULL(WriteConfig, 0) AS WriteConfig,
ISNULL(IssueWhenDoseAlarms, 0) AS IssueWhenDoseAlarms,
ElatecPort,
SleepAfterClear=ISNULL(SleepAfterClear,6000),
ResponseTimeout=ISNULL(ResponseTimeout,500),
DiscoveryCacheTimeout=ISNULL(DiscoveryCacheTimeout,5000),
ReconnectRetries=ISNULL(ReconnectRetries,5),
SleepBeforeReconnect=ISNULL(SleepBeforeReconnect,1000),
SleepAfterDisconnect=ISNULL(SleepAfterDisconnect,1000),
DoDisconnectAfterClear=ISNULL(DoDisconnectAfterClear,0),
DoDisconnectBeforeReconnect=ISNULL(DoDisconnectBeforeReconnect,0)
FROM dbo.StationSettings
WHERE PCNr = HOST_NAME();
END
GO
INSERT INTO [dbo].[DatabaseVersion] (VersionNumber, VersionDate, Description)
VALUES (2, GETDATE(), 'SleepParameter');
GO
-- Final Batch: Turn execution back ON for subsequent scripts in the same session
SET NOEXEC OFF;
GO

View file

@ -68,6 +68,8 @@
<None Include="eDosLocalTables.sql" />
</ItemGroup>
<ItemGroup>
<Build Include="SqlUpdates\update_001.sql" />
<None Include="SqlUpdates\update_001.sql">
<CopyToOutputDirectory>DoNotCopy</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View file

@ -6,8 +6,11 @@
</sectionGroup>
</configSections>
<connectionStrings>
<add name="eDosStation.Properties.Settings.localConnectionString" connectionString="Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation" providerName="System.Data.SqlClient" />
<add name="eDosConnectionString" connectionString="Data Source=eDos;Initial Catalog=eDos;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation" providerName="System.Data.SqlClient" />
<add name="eDosStation.Properties.Settings.localConnectionString"
connectionString="Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation"
providerName="System.Data.SqlClient" />
<add name="eDosConnectionString" connectionString="Data Source=eDos;Initial Catalog=eDos;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation"
providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
@ -35,6 +38,30 @@
<setting name="useTestButtons" serializeAs="String">
<value>True</value>
</setting>
<setting name="DoDisconnectAfterClear" serializeAs="String">
<value>False</value>
</setting>
<setting name="DoDisconnectBeforeReconnect" serializeAs="String">
<value>False</value>
</setting>
<setting name="SleepAfterClear" serializeAs="String">
<value>2000</value>
</setting>
<setting name="DiscoveryCacheTimeout" serializeAs="String">
<value>20000</value>
</setting>
<setting name="ReconnectRetries" serializeAs="String">
<value>5</value>
</setting>
<setting name="ResponseTimeout" serializeAs="String">
<value>500</value>
</setting>
<setting name="SleepBeforeReconnect" serializeAs="String">
<value>500</value>
</setting>
<setting name="SleepAfterDisconnect" serializeAs="String">
<value>1000</value>
</setting>
</eDosStation.Properties.Settings>
</userSettings>
<appSettings>

View file

@ -62,7 +62,8 @@ namespace eDosStation
"fCreateReaderInterface",
"fOpenReader",
"TestVibe",
"fConnect","fSetCalDueDate","fReadSelfTestInterval","epdOn","epdOff"
"fConnect","fSetCalDueDate","fReadSelfTestInterval","epdOn","epdOff",
"fWriteDoseProfileInterval"
};
private static string GetName(int func)

View file

@ -384,11 +384,11 @@
</TextBlock.TextEffects>
</TextBlock>
<telerik:RadStepProgressBar Grid.Row="5" x:Name="stepEPD" CanUserSelect="False" Margin="10,0,10,10" AnimationDuration="0" >
<telerik:RadStepProgressBarItem Content="Open" />
<telerik:RadStepProgressBarItem Content="Open" />
<telerik:RadStepProgressBarItem Content="Connect" />
<telerik:RadStepProgressBarItem Content="Status" />
<telerik:RadStepProgressBarItem Content="Sleep" />
<telerik:RadStepProgressBarItem Content="Clear" />
<telerik:RadStepProgressBarItem Content="Clearing" />
<telerik:RadStepProgressBarItem Content="Issuing" />
<telerik:RadStepProgressBarItem Content="Issued" />
</telerik:RadStepProgressBar>
</Grid>

View file

@ -82,6 +82,7 @@ namespace eDosStation
}
private void Ep_EpdRead(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdEventArgs e)
{
System.Diagnostics.Debug.WriteLine($"{System.DateTime.Now:yyyy-MM-dd HH:mm:ss} EPD Read ");
EntryState = eEntryState.epdOK;
EpdReading = false;
Dispatcher.InvokeAsync(() => StopProgress("Writing config"));
@ -595,7 +596,7 @@ namespace eDosStation
if (_User.VisitIDLocked > 0 || _User.AccessAllow == false)
ReasonNoAccess = _User.ReasonNoAccess;
else if (_User.hasEPD)
ReasonNoAccess = User.ErrorEPDInUse;
ReasonNoAccess = User.ErrorhasEPDInUse;
else ReasonNoAccess = getCommentOnEvent(string.Empty, 3);
}
@ -999,13 +1000,8 @@ namespace eDosStation
{
ep = new EpdBaseClr.Epd2(thisStation.ComPort, thisStation.OnlyMK2);
ep.SetFeedbackSound(thisStation.useBeep, thisStation.useBeepMK3());
//#if DEBUG
// ep.SetEndNotifyAlarm(0, 0);
//#endif
ep.OtherParam(thisStation.ResponseTimeout, thisStation.DiscoveryCacheTimeout, thisStation.ReconnectRetries, thisStation.SleepAfterClear, thisStation.SleepBeforeReconnect, thisStation.SleepAfterDisconnect, thisStation.DoDisconnectAfterClear, thisStation.DoDisconnectBeforeReconnect)
//ep.SetEndNotifyAlarm(0, 0);
ep.OtherParam(thisStation.ResponseTimeout, thisStation.DiscoveryCacheTimeout, thisStation.ReconnectRetries, thisStation.SleepAfterClear, thisStation.SleepBeforeReconnect, thisStation.SleepAfterDisconnect, thisStation.DoDisconnectAfterClear, thisStation.DoDisconnectBeforeReconnect);
ep.SetReleaseLogging(true);
ep.EpdRead += Ep_EpdRead;
@ -1052,25 +1048,30 @@ namespace eDosStation
private void Ep_EpdProgress(EpdBaseClr.Epd2 Sender, EpdSteps step, EpdStepResults result)
{
System.Diagnostics.Debug.WriteLine($"EPD Progress step:{step} result:{result}");
System.Diagnostics.Debug.WriteLine($"{System.DateTime.Now:yyyy-MM-dd HH:mm:ss} EPD Progress step:{step} result:{result}");
string text = string.Empty;
int index = -1;
StepStatus st = StepStatus.NotStarted;
System.Windows.Media.Brush br = System.Windows.Media.Brushes.LightGray;
System.Windows.Media.Brush br = System.Windows.Media.Brushes.LightGray;
switch (step)
{
case EpdSteps.StepStartCom: index = 0; break;
case EpdSteps.StepConnecting: index = 1; break;
case EpdSteps.StepReadStatus: index = 2; break;
case EpdSteps.StepSleep: index = 3; break;
case EpdSteps.StepSleep:
index = 3;
ResultTime += TimeSpan.FromSeconds(thisStation.InfoScreenTimeout);
text = "Sleep";
break; // increment max timer
case EpdSteps.StepPrepareIssue: index = 4; break;
case EpdSteps.StepIssue: index = 5; break;
case EpdSteps.StepIssue: index = 5; text = "Issued"; break;
}
switch (result)
{
case EpdStepResults.OK: st = StepStatus.Completed; br = System.Windows.Media.Brushes.LightGreen; break;
case EpdStepResults.Error: st = StepStatus.Indeterminate ; br = System.Windows.Media.Brushes.LightGreen; break;
case EpdStepResults.Started: st = StepStatus.Indeterminate ; br = System.Windows.Media.Brushes.LightYellow; break;
case EpdStepResults.OK: st = StepStatus.Completed; br = System.Windows.Media.Brushes.LightGreen; break;
case EpdStepResults.Error: st = StepStatus.Indeterminate; br = System.Windows.Media.Brushes.LightGreen; break;
case EpdStepResults.Started: st = StepStatus.Indeterminate; br = System.Windows.Media.Brushes.LightYellow; break;
case EpdStepResults.Sleeping: st = StepStatus.Indeterminate; br = System.Windows.Media.Brushes.LightBlue; break;
}
if (index >= 0 && index < stepEPD.Items.Count)
@ -1081,19 +1082,18 @@ namespace eDosStation
stepEPD.SelectedIndex = index;
stepEPD.SelectedItemStatus = st;
stepEPD.Background = br;
// 2. Dwing het control om de layout voor de UI-items direct te berekenen
if (!string.IsNullOrEmpty(text)) statusEPD.Text = text;
stepEPD.UpdateLayout();
// 3. Nu bestaat de container wél gegarandeerd in het geheugen
if (stepEPD.ItemContainerGenerator.ContainerFromIndex(index) is FrameworkElement container)
{
container.UpdateLayout();
// De container is nu direct visueel bijgewerkt en beschikbaar voor verdere logica
// (Bijvoorbeeld om direct een transformatie of focus toe te passen)
}
}, System.Windows.Threading.DispatcherPriority.Send);
}
DoEvents();
}
}
private void Pelatec_DataReceived(int PersID)

View file

@ -74,5 +74,6 @@ using System.Windows;
//2026-08-07 3.00 optimized
//2026-08-17 3.01 telerik upgrade, cleanup old files
//2026-08-17 3.03 reconnect,issuewithalarms
[assembly: AssemblyVersion("3.5.1.0")]
[assembly: AssemblyFileVersion("3.5.1.0")]
//2026-09-22 4.00 no disconnect, set correct displayids, parameter set for retries, sleep, reconnect
[assembly: AssemblyVersion("4.0.0.0")]
[assembly: AssemblyFileVersion("4.0.0.0")]

View file

@ -12,7 +12,7 @@ namespace eDosStation.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "18.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -117,5 +117,101 @@ namespace eDosStation.Properties {
return ((string)(this["localConnectionString"]));
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DoDisconnectAfterClear {
get {
return ((bool)(this["DoDisconnectAfterClear"]));
}
set {
this["DoDisconnectAfterClear"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DoDisconnectBeforeReconnect {
get {
return ((bool)(this["DoDisconnectBeforeReconnect"]));
}
set {
this["DoDisconnectBeforeReconnect"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("2000")]
public int SleepAfterClear {
get {
return ((int)(this["SleepAfterClear"]));
}
set {
this["SleepAfterClear"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("20000")]
public int DiscoveryCacheTimeout {
get {
return ((int)(this["DiscoveryCacheTimeout"]));
}
set {
this["DiscoveryCacheTimeout"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("5")]
public int ReconnectRetries {
get {
return ((int)(this["ReconnectRetries"]));
}
set {
this["ReconnectRetries"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("500")]
public int ResponseTimeout {
get {
return ((int)(this["ResponseTimeout"]));
}
set {
this["ResponseTimeout"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("500")]
public int SleepBeforeReconnect {
get {
return ((int)(this["SleepBeforeReconnect"]));
}
set {
this["SleepBeforeReconnect"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1000")]
public int SleepAfterDisconnect {
get {
return ((int)(this["SleepAfterDisconnect"]));
}
set {
this["SleepAfterDisconnect"] = value;
}
}
}
}

View file

@ -31,5 +31,29 @@
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation</Value>
</Setting>
<Setting Name="DoDisconnectAfterClear" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="DoDisconnectBeforeReconnect" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="SleepAfterClear" Type="System.Int32" Scope="User">
<Value Profile="(Default)">2000</Value>
</Setting>
<Setting Name="DiscoveryCacheTimeout" Type="System.Int32" Scope="User">
<Value Profile="(Default)">20000</Value>
</Setting>
<Setting Name="ReconnectRetries" Type="System.Int32" Scope="User">
<Value Profile="(Default)">5</Value>
</Setting>
<Setting Name="ResponseTimeout" Type="System.Int32" Scope="User">
<Value Profile="(Default)">500</Value>
</Setting>
<Setting Name="SleepBeforeReconnect" Type="System.Int32" Scope="User">
<Value Profile="(Default)">500</Value>
</Setting>
<Setting Name="SleepAfterDisconnect" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1000</Value>
</Setting>
</Settings>
</SettingsFile>

View file

@ -1 +1 @@
18/09/2026 15:31:05,79
23/09/2026 15:27:04,93

View file

@ -9,84 +9,119 @@
Title="Settings"
FontFamily="Segoe UI" FontSize="20"
Loaded="Window_Loaded">
<Grid >
<Grid Margin="15">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="400"/>
</Grid.ColumnDefinitions>
<TextBlock Text="EPD Reader Com port"></TextBlock>
<telerik:RadComboBox Name="cComPort" Grid.Column="1" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Installation 1"></TextBlock>
<telerik:RadComboBox Name="CIns1" Grid.Row="1" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" />
<!-- Main Scrollable Container -->
<ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto" Margin="0,0,0,15">
<StackPanel >
<TextBlock Grid.Row="2" Grid.Column="0" Text="Installation 2"></TextBlock>
<telerik:RadComboBox Name="CIns2" Grid.Row="2" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Badgelezers" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<telerik:RadComboBox Grid.Row="4" Grid.Column="1" Name="cbReaders" SelectedValuePath="Text" DisplayMemberPath="Text" />
<!-- 1. General & Hardware Ports -->
<GroupBox Header="Hardware &amp; Installations" Padding="10" Margin="0,0,0,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="220"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="5" Grid.Column="0" Text="Check user status" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="5" Grid.ColumnSpan="2" Name="cbCheckUsers" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="EPD Reader Com Port" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadComboBox Name="cComPort" Grid.Row="0" Grid.Column="1" Margin="0,4"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="ValidationButtons" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="6" Grid.ColumnSpan="2" Name="cbValidation" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Elatec Com Port" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadComboBox Name="eComPort" Grid.Row="1" Grid.Column="1" Margin="0,4"/>
<TextBlock Grid.Row="7" Grid.Column="0" Text="Beep EPD" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<telerik:RadComboBox Grid.Row="7" Grid.ColumnSpan="2" Name="tBeep" Grid.Column="1" SelectedValuePath="Value" DisplayMemberPath="Text" >
</telerik:RadComboBox>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Badge Reader" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadComboBox Name="cbReaders" Grid.Row="2" Grid.Column="1" SelectedValuePath="Text" DisplayMemberPath="Text" Margin="0,4"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Installation 1" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadComboBox Name="CIns1" Grid.Row="3" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" Margin="0,4"/>
<TextBlock Grid.Row="8" Grid.Column="0" Text="Timeout EPD (ms)" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<TextBox Grid.Row="8" Grid.ColumnSpan="2" Name="tEPDTimeout" Text="" Grid.Column="1" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Installation 2" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadComboBox Name="CIns2" Grid.Row="4" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" Margin="0,4"/>
</Grid>
</GroupBox>
<TextBlock Grid.Row="9" Grid.Column="0" Text="Restart COM" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="9" Grid.ColumnSpan="2" Name="cbRestartCom" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<!-- 2. Timings and Delays (UInt16 Settings) -->
<GroupBox Header="Timings &amp; Delays (ms / retries)" Padding="10" Margin="0,0,0,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="10" Grid.Column="0" Text="Restart COM voor entry/exit" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="10" Grid.ColumnSpan="2" Name="cbRestartComFirst" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="0" Grid.Column="0" Text="EPD Timeout (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="0" Grid.Column="1" Name="tEPDTimeout" Minimum="2000" Maximum="20000" SmallChange="1000" LargeChange="1000" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Response Timeout (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="1" Grid.Column="1" Name="numResponseTimeout" Minimum="400" Maximum="2000" SmallChange="10" LargeChange="100" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="11" Grid.Column="0" Text="Alleen MK2" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="11" Grid.ColumnSpan="2" Name="cbOnlyMK2" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Discovery Cache Timeout (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="2" Grid.Column="1" Name="numDiscoveryCacheTimeout" Minimum="5000" Maximum="20000" SmallChange="100" LargeChange="1000" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="12" Grid.Column="0" Text="Meerdere EPD toegelaten" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="12" Grid.ColumnSpan="2" Name="cbAllowMultipleEPD" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Reconnect Retries" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="3" Grid.Column="1" Name="numReconnectRetries" Minimum="3" Maximum="30" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="13" Grid.Column="0" Text="Write config 3.2" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="13" Grid.ColumnSpan="2" Name="cbWriteConfig32" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Sleep After Clear (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="4" Grid.Column="1" Name="numSleepAfterClear" Minimum="3000" Maximum="10000" SmallChange="500" LargeChange="1000" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="14" Grid.Column="0" Text="Log all" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="14" Grid.ColumnSpan="2" Name="cbLogAll" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="5" Grid.Column="0" Text="Sleep Before Reconnect (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="5" Grid.Column="1" Name="numSleepBeforeReconnect" Minimum="100" Maximum="1000" SmallChange="100" LargeChange="100" NumberDecimalDigits="0" Margin="0,4"/>
<TextBlock Grid.Row="15" Grid.Column="0" Text="Issue When Dose Alarms"></TextBlock>
<CheckBox Grid.Row="15" Grid.ColumnSpan="2" Name="IssueWhenDoseAlarms" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="6" Grid.Column="0" Text="Sleep After Disconnect (ms)" VerticalAlignment="Center" Margin="0,4"/>
<telerik:RadNumericUpDown Grid.Row="6" Grid.Column="1" Name="numSleepAfterDisconnect" Minimum="1000" Maximum="10000" SmallChange="1000" LargeChange="1000" NumberDecimalDigits="0" Margin="0,4"/>
</Grid>
</GroupBox>
<!-- 3. Operational Behavior & Flags -->
<GroupBox Header="Operational Options" Padding="10">
<StackPanel>
<CheckBox Name="cbCheckUsers" Content="Check user status" Margin="0,4"/>
<CheckBox Name="cbValidation" Content="Validation Buttons" Margin="0,4"/>
<CheckBox Name="cbRestartCom" Content="Restart COM Port" Margin="0,4"/>
<CheckBox Name="cbRestartComFirst" Content="Restart COM before Entry/Exit" Margin="0,4"/>
<CheckBox Name="cbOnlyMK2" Content="Only MK2" Margin="0,4"/>
<CheckBox Name="cbAllowMultipleEPD" Content="Allow Multiple EPDs" Margin="0,4"/>
<CheckBox Name="cbWriteConfig32" Content="Write Config 3.2" Margin="0,4"/>
<CheckBox Name="cbLogAll" Content="Log All Events" Margin="0,4"/>
<CheckBox Name="IssueWhenDoseAlarms" Content="Issue When Dose Alarms" Margin="0,4"/>
<CheckBox Name="cbDoDisconnectAfterClear" Content="Disconnect After Clear" Margin="0,4"/>
<CheckBox Name="cbDoDisconnectBeforeReconnect" Content="Disconnect Before Reconnect" Margin="0,4"/>
<TextBlock Grid.Row="16" Grid.Column="0" Text="Elatec Com port"></TextBlock>
<telerik:RadComboBox Grid.Row="16" Grid.ColumnSpan="2" Name="eComPort" Grid.Column="1" />
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<TextBlock Text="Beep EPD:" VerticalAlignment="Center" Width="220"/>
<telerik:RadComboBox Name="tBeep" SelectedValuePath="Value" DisplayMemberPath="Text" Width="300"/>
</StackPanel>
</StackPanel>
</GroupBox>
<telerik:RadButton Grid.Row="18" Grid.Column="0" Name="bOK" Content="OK" Click="BOK_Click" Style="{DynamicResource OkCancelButton}" Margin="10,10,10,10" />
<telerik:RadButton Grid.Row="18" Grid.Column="1" Name="bCancel" Content="Cancel" Click="BCancel_Click" Style="{DynamicResource OkCancelButton}" HorizontalAlignment="Right" />
</StackPanel>
</ScrollViewer>
<!-- Command Buttons -->
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
<telerik:RadButton Name="bOK" Content="OK" Click="BOK_Click" Width="100" Height="35" Margin="5"/>
<telerik:RadButton Name="bCancel" Content="Cancel" Click="BCancel_Click" Width="100" Height="35" Margin="5"/>
</StackPanel>
</Grid>
</Window>
</Window>

View file

@ -108,7 +108,7 @@ namespace eDosStation
thisStation.checkUser = cbCheckUsers.IsChecked != null ? cbCheckUsers.IsChecked.Value : false;
thisStation.RestartCom = cbRestartCom.IsChecked != null ? cbRestartCom.IsChecked.Value : false;
step = "EPDTimeOut";
thisStation.EPDTimeOut = int.Parse(tEPDTimeout.Text);
thisStation.EPDTimeOut = (int)tEPDTimeout.Value;
step = "OnlyMK2";
thisStation.OnlyMK2 = cbOnlyMK2.IsChecked != null ? cbOnlyMK2.IsChecked.Value : false;
@ -131,6 +131,18 @@ namespace eDosStation
thisStation.StopBecauseAlarmDose = !( IssueWhenDoseAlarms.IsChecked != null ? IssueWhenDoseAlarms.IsChecked.Value : false);
step = "NewUInt16Settings";
thisStation.ResponseTimeout = Convert.ToInt32(numResponseTimeout.Value ?? 0);
thisStation.DiscoveryCacheTimeout = Convert.ToInt32(numDiscoveryCacheTimeout.Value ?? 0);
thisStation.ReconnectRetries = Convert.ToInt32(numReconnectRetries.Value ?? 0);
thisStation.SleepAfterClear = Convert.ToInt32(numSleepAfterClear.Value ?? 0);
thisStation.SleepBeforeReconnect = Convert.ToInt32(numSleepBeforeReconnect.Value ?? 0);
thisStation.SleepAfterDisconnect = Convert.ToInt32(numSleepAfterDisconnect.Value ?? 0);
step = "NewBooleanSettings";
thisStation.DoDisconnectAfterClear = cbDoDisconnectAfterClear.IsChecked ?? false;
thisStation.DoDisconnectBeforeReconnect = cbDoDisconnectBeforeReconnect.IsChecked ?? false;
step = "Update";
thisStation.Update();
@ -315,7 +327,7 @@ namespace eDosStation
cbValidation.IsChecked = thisStation.useTestButtons;
cbCheckUsers.IsChecked = thisStation.checkUser;
cbRestartCom.IsChecked = thisStation.RestartCom;
tEPDTimeout.Text = thisStation.EPDTimeOut.ToString();
tEPDTimeout.Value= thisStation.EPDTimeOut;
cbRestartComFirst.IsChecked = thisStation.RestartComFirst;
cbOnlyMK2.IsChecked = thisStation.OnlyMK2;
cbAllowMultipleEPD.IsChecked = thisStation.AllowMultipleEPD;
@ -344,6 +356,19 @@ namespace eDosStation
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Interface check {ex.Message}");
}
// --- LOAD NEW SETTINGS ---
numResponseTimeout.Value = thisStation.ResponseTimeout;
numDiscoveryCacheTimeout.Value = thisStation.DiscoveryCacheTimeout;
numReconnectRetries.Value = thisStation.ReconnectRetries;
numSleepAfterClear.Value = thisStation.SleepAfterClear;
numSleepBeforeReconnect.Value = thisStation.SleepBeforeReconnect;
numSleepAfterDisconnect.Value = thisStation.SleepAfterDisconnect;
cbDoDisconnectAfterClear.IsChecked = thisStation.DoDisconnectAfterClear;
cbDoDisconnectBeforeReconnect.IsChecked = thisStation.DoDisconnectBeforeReconnect;
step = "endLoaded";
thisStation?.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}

View file

@ -75,12 +75,12 @@ namespace eDosStation
public dReceivedPersID ReceivedPersid;
internal bool StopBecauseAlarmDose; // issues when false ?
public UInt16 ResponseTimeout = 500;
public UInt16 DiscoveryCacheTimeout = 20000; //15000; //ms
public UInt16 ReconnectRetries = 5;
public UInt16 SleepAfterClear = 5000; //?6000
public UInt16 SleepBeforeReconnect = 500;
public UInt16 SleepAfterDisconnect = 1000;
public int ResponseTimeout = 500;
public int DiscoveryCacheTimeout = 20000; //15000; //ms
public int ReconnectRetries = 5;
public int SleepAfterClear = 5000; //?6000
public int SleepBeforeReconnect = 500;
public int SleepAfterDisconnect = 1000;
public Boolean DoDisconnectAfterClear = false;
public Boolean DoDisconnectBeforeReconnect = false;
@ -139,14 +139,14 @@ namespace eDosStation
EPDRetries = 2;
//Other Dll parameters
ResponseTimeout = 500;
DiscoveryCacheTimeout = 20000; //15000; //ms
ReconnectRetries = 5;
SleepAfterClear = 6000; //?6000
SleepBeforeReconnect = 500;
SleepAfterDisconnect = 1000;
DoDisconnectAfterClear = false;
DoDisconnectBeforeReconnect = false;
ResponseTimeout = Properties.Settings.Default.ResponseTimeout;
DiscoveryCacheTimeout = Properties.Settings.Default.DiscoveryCacheTimeout;
ReconnectRetries = Properties.Settings.Default.ReconnectRetries;
SleepAfterClear = Properties.Settings.Default.SleepAfterClear;
SleepBeforeReconnect = Properties.Settings.Default.SleepBeforeReconnect;
SleepAfterDisconnect = Properties.Settings.Default.SleepAfterDisconnect;
DoDisconnectAfterClear = Properties.Settings.Default.DoDisconnectAfterClear;
DoDisconnectBeforeReconnect = Properties.Settings.Default.DoDisconnectBeforeReconnect;
ShowTimeoutTime = TimeSpan.FromSeconds(8);
InfoScreenTimeout = 5;
@ -178,7 +178,6 @@ namespace eDosStation
object[] Values = new object[rs.FieldCount];
int rv = rs.GetValues(Values);
ID_Station = (int)Values[rs.GetOrdinal("ID_Station")];
if (ComPort == 0) ComPort = (int)Values[rs.GetOrdinal("ComPort")];
@ -206,6 +205,16 @@ namespace eDosStation
AllowMultipleEPD = rs.BoolOrDefault("AllowMultipleEPD", false);
WriteConfig32 = rs.BoolOrDefault("WriteConfig", false);
StopBecauseAlarmDose = ! rs.BoolOrDefault("IssueWhenDoseAlarms", false);
ResponseTimeout = rs.IntOrDefault("ResponseTimeout", ResponseTimeout);
DiscoveryCacheTimeout = rs.IntOrDefault("DiscoveryCacheTimeout", DiscoveryCacheTimeout);
ReconnectRetries = rs.IntOrDefault("ReconnectRetries", ReconnectRetries);
SleepAfterClear = rs.IntOrDefault("SleepAfterClear", SleepAfterClear);
SleepBeforeReconnect = rs.IntOrDefault("SleepBeforeReconnect", SleepBeforeReconnect);
SleepAfterDisconnect = rs.IntOrDefault ("SleepAfterDisconnect", SleepAfterDisconnect);
DoDisconnectAfterClear = rs.BoolOrDefault("DoDisconnectAfterClear", DoDisconnectAfterClear);
DoDisconnectBeforeReconnect = rs.BoolOrDefault("DoDisconnectBeforeReconnect", DoDisconnectBeforeReconnect);
}
else
{
@ -320,6 +329,15 @@ namespace eDosStation
cmd.SetIfExists("WriteConfig", WriteConfig32);
cmd.SetIfExists("IssueWhenDoseAlarms", !StopBecauseAlarmDose);
cmd.SetIfExists("ResponseTimeout", ResponseTimeout);
cmd.SetIfExists("DiscoveryCacheTimeout", DiscoveryCacheTimeout);
cmd.SetIfExists("ReconnectRetries", ReconnectRetries);
cmd.SetIfExists("SleepAfterClear", SleepAfterClear);
cmd.SetIfExists("SleepBeforeReconnect", SleepBeforeReconnect);
cmd.SetIfExists("SleepAfterDisconnect", SleepAfterDisconnect);
cmd.SetIfExists("DoDisconnectAfterClear",DoDisconnectAfterClear);
cmd.SetIfExists("DoDisconnectBeforeReconnect", DoDisconnectBeforeReconnect);
}
catch (System.Exception ex)
{

View file

@ -10,6 +10,7 @@ namespace eDosStation
public class User
{
public const string ErrorEPDInUse = "EPD in use";
public const string ErrorhasEPDInUse = "User already has an EPD";
public int PersID { get; set; }
public string LastName { get; set; }

View file

@ -116,6 +116,18 @@ static public class extensions
catch { rv = defaultValue; }
return rv;
}
public static ushort UshortOrDefault(this System.Data.SqlClient.SqlDataReader rs, string colName, ushort defaultValue)
{
ushort rv = defaultValue;
try
{
int c = rs.GetOrdinal(colName);
if (!rs.IsDBNull(c)) rv = (ushort)rs.GetInt16(c);
}
catch { rv = defaultValue; }
return rv;
}
public static string StringOrDefault(this System.Data.SqlClient.SqlDataReader rs, string colName, string defaultValue)
{
string rv = defaultValue;

View file

@ -208,17 +208,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTE2MTQyNzEyWjAvBgkqhkiG9w0BCQQxIgQgwGts
# BgkqhkiG9w0BCQUxDxcNMjYwOTIyMTMzNTMwWjAvBgkqhkiG9w0BCQQxIgQgwGts
# hmgwg+1No3Bfq4IiEmxiCsjb9Jy7A/l9sT7ewm0wDQYJKoZIhvcNAQEBBQAEggIA
# lTPDEboBXDzHmRQw1OCguooyeCMaD5TRwZzArnog96kxqEr0uqkRvMz/hqfKV5Fu
# Fzdq3PiValA6Ct/xVYfDAb8QhTmN9qRFRCBdGwUaeN2y2BcK5i26/bzTkV2p5Lk9
# QTI/c1v8QBC2/Il++TpHfAluSfKO7W2hV8rAtMI+ZcvOoYxPYjnX4/iZrOFeW9wO
# zDEArdL31zAmh6CXptMf0ozpZwGLoWJ2ZCEqRcONVMWTioahAV/9+stl5oEQM7qi
# tukikp0ohSJyDtS3gGagSFZnGaB/xho24in6OjCue7FAHAloW6rmipjF/Wn0eORx
# BfKfHqqCHnLPGiorJbmjAP8kPHSiqjlanFoC7YpSh3s7ey8GLUbNkWSCADluxbdc
# W4KC22FQfkY0kMmHJODscIyFvHsuYJcxZT5BJdx7ywgsZgj+R2pTmy/YAUnF2ce+
# 8BwtTPU+WzCKPWQKduQSxr3sA5eeOy+ejZaYY55sGNeulnDmX1um3aMaMbq9taNx
# C30hO6X7rVV6KiTFI0SOknr1U4GMiLBCx7P265LXMpK9x/WAYHnRErcUHUgcAf5D
# XWeg+6FqlZobZVw291Ag58ZGi55ubsgl5AXM3d8YamWBSeROwZiWVAL0oQFBuxJ+
# pKBjsTlMRlzzMDLTm0lEwroeSpDElhbjSpqrkkvslvU=
# WTg0WVvHozVIcC/FBaKdD9uLGfNwHNOHdhs2PXcAeYL3fvNRwBoebHUpmyFKV0Lh
# hgH4EqXTNB3RtsC7dmzTthJe4a3I/vjY0NaZ8W0uO1WeTCJlZ+enkYpTqAJPZN0Z
# 6jot9GE/aHsTVqAPlF3BKwaAnQStKxpibSE1xT/s7YaSxiDiVS5eohbGNKQMXrEO
# 2Kcky0wF3t05x3oJjRcSr2wDNtT5HfNu8QJZvfKozmwsAFpmyqrJ83lrba8b5gok
# RhxBFr7ZaCgj79Fdev1wTCNQwX0gIV11y5B1pDI7+oxFPpgIOglUSmROlPM1MDvS
# uhrmCRQtyMmJzngJ6L51neIxZSwA9q52lOP5BQ13RTJbUF8UgP4zg/AOfsv2K3WB
# A8LTw/eZruOajkaOJBmK7t5qsqj8HVfUAQ2l47OVpAcLxRfUda8o6i4+BuqkFxV5
# a3t7fJ8gD34SnEEB9UAmUxD+TZt2uSnbuuVJK/M/56XY5r6g6JAAixlSKhIrITZW
# CMCILVYAA26nAsr8QhMPimyBYw2Q32TWnZxosEw/Nhc6HW/mFfOs8vhwpnQ2vN0R
# KEa7S4pe0GGM1RTt1TYeyV03B2QBft8JjBrgkPQLMldEWBJBhexjQYphlREHZZyD
# CjPr3KgPyFW2zBX1zMebwJGpY5hm38Ec0l99YM2WxbA=
# SIG # End signature block

View file

@ -1,14 +1,35 @@
# Instellingen
$Server = "."
$Database = "eDosLocal"
$ScriptFolder = "C:\software\SqlUpdates" # Map waar update_001.sql, update_002.sql etc. staan
$ScriptFolder = "C:\software\SqlUpdates"
if (-not (Test-Path -Path $ScriptFolder)) {
$ScriptFolder = "C:\l\Edos2026\SqlUpdates"
}
# 1. Haal de huidige databaseversie op via sqlcmd
$CurrentVersionQuery = "SELECT ISNULL(MAX(VersionNumber), 0) FROM DatabaseVersion;"
$CurrentVersionStr = sqlcmd -S $Server -d $Database -Q $CurrentVersionQuery -h -1 -W
$CurrentVersion = [int]$CurrentVersionStr.Trim()
# 1. Maak een SQL-verbinding en commando aan
$ConnectionString = "Server=$Server;Database=$Database;Integrated Security=True;"
$connection = New-Object System.Data.SqlClient.SqlConnection($ConnectionString)
Write-Host "Huidige database versie: $CurrentVersion" -ForegroundColor Cyan
$query = "IF OBJECT_ID('dbo.DatabaseVersion', 'U') IS NOT NULL
SELECT ISNULL(MAX(VersionNumber), 0) FROM dbo.DatabaseVersion
ELSE
SELECT 0"
$command = New-Object System.Data.SqlClient.SqlCommand($query, $connection)
try {
$connection.Open()
# 2. Gebruik ExecuteScalar() om exact 1 waarde op te halen
$CurrentVersion = [int]$command.ExecuteScalar()
Write-Host "Huidige database versie: $CurrentVersion" -ForegroundColor Cyan
}
catch {
Write-Error "Fout bij ophalen databaseversie: $_"
}
finally {
$connection.Close()
}
# 2. Scan de map en filter de scripts
$Scripts = Get-ChildItem -Path $ScriptFolder -Filter "update_*.sql" | ForEach-Object {
@ -55,203 +76,204 @@ foreach ($Script in $Scripts) {
Write-Host "Database is volledig up-to-date!" -ForegroundColor Green
# SIG # Begin signature block
# MIIlPAYJKoZIhvcNAQcCoIIlLTCCJSkCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUvT1k8kmlnReZL62s9FmNDHJt
# pUCggh9wMIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkqhkiG9w0B
# AQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVk
# IElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQsw
# CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
# ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw
# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz
# 7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS
# 5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7
# bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfI
# SKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jH
# trHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14
# Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2
# h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt
# 6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPR
# iQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ER
# ElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4K
# Jpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUwAwEB/zAd
# BgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAUReuir/SS
# y4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAC
# hjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS
# b290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0
# LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAowCDAGBgRV
# HSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyh
# hyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO
# 0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo
# 8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9HdaXFSMb++h
# UD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbObyMt9H5x
# aiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMIIFvDCCA6Sg
# AwIBAgIBHzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJCRTESMBAGA1UECBMJ
# QW50d2VycGVuMQwwCgYDVQQHEwNNb2wxDzANBgNVBAoTBlNDS0NFTjEMMAoGA1UE
# CxMDSUNUMRYwFAYDVQQDEw1TQ0tDRU4gSUNUIENBMB4XDTE4MDUyNDA2MTEwMFoX
# DTMwMDYwMTEyMDAwMFowTzEhMB8GA1UEAxMYVmFuZGVuYnJvdWNrZSBMdWMgQ1My
# MDIxMSowKAYJKoZIhvcNAQkBFhtsdWMudmFuZGVuYnJvdWNrZUBzY2tjZW4uYmUw
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0WzD0gHTLFEbOjPUwobl2
# VntS0kJVV2FRzxkZZ0Hhe9fbYB0tRK5+9GltD7rwhApM1E2xh8N6Pmxfr49VGVsP
# NqDhGRmp5wKE8htQiMXTjHPOTHZsvim/vvSL8WuouGoX6TQxxNBefE6Jmjcg2NHb
# UVAxDGcPwNADJBZnYPQTp6q2HniwdDv/OmZM1JJUYn4v1mt7YtS1eFO30ekuGzJu
# 3WQYeOiFNht/6AXZTWALQtwzaJfm563AbxfnHBsBuZFcRGYPE7aRDI9NIZyPqzT4
# yOAK+phPN1ympNV+f8XXWaacfZXSWolbo8jqstHDjYYjf77Fj3WVN+y0GxtTsnRl
# AgMBAAGjggGKMIIBhjAJBgNVHRMEAjAAMB0GA1UdDgQWBBTftWyIS4unlpS288p5
# Xofe0LiBZTAfBgNVHSMEGDAWgBTwKRT1aiEUklZUE6Q91a3wITrFeDALBgNVHQ8E
# BAMCB4AwHwYDVR0lBBgwFgYIKwYBBQUHAwMGCisGAQQBgjcCARUwOgYDVR0RBDMw
# MYEbbHVjLnZhbmRlbmJyb3Vja2VAc2NrY2VuLmJlgRJsdmFuZGVuYkBzY2tjZW4u
# YmUwNQYDVR0SBC4wLIYqaHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIwSUNU
# JTIwQ0EuY3J0MDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmwuc2NrY2VuLmJl
# L1NDS0NFTiUyMElDVCUyMENBLmNybDA+BgkrBgEEAYI3FQcEMTAvBicrBgEEAYI3
# FQiEjLwhgsj9d4KhkyKEl5RGhMaSLoEBgtSEIYH6yGkCAWQCAQgwGwYJKwYBBAGC
# NxUKBA4wDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAgEARh/O37vbDW3A
# j1UAnSfYz+I0+fVk2ZurOQarjtdFC/Yu1ABJnXdMnwh1t5sjVIoEejvjnOlmu+B2
# 1IQJPpxIph8cz+SnDZyhOpcKrCDn+PSeRvth0Zk4FvbXsLK9/WYgdzRObNOHxxAN
# COOc7PMLIMqeDJa+b9wH82Ae4MYdB8XZvoqJ+z172yoQMiNxe6UE2GropZiwJB56
# Fw+k/jrKdOMEfZtfhzRqizCmMlTknbtFJ5hrqhwcaTA+4QCfCwouckererOATQnM
# 8Ic1KaOmYK7S5igmnA5mekiTKrBhcGp/xsZy0r8OUKVV1FSYnQ3035THia31oQzh
# Le48faEFkNuPbs8ZaiTFXwbdWGQ6uIK++soyulWOxeueNBAqIOGrj7XuDaIk+VD3
# RN0B0g//Nv3HS6FboRC0eKeG3yezzjU+8fImcyPAaAEofUiiQYdOpnJsiaLDpHO+
# 1r98pKmpe0fvy0IvYHicJLuk4tFyMvVBRgW1A+JtfHuXCnag88iB8AJ3tCUdGRCC
# z8yE1r4hbklyqhj9G5EmxoKZfi7mgh3CgL/tRUAXNqFltMj3cQlGKcKPUH004dKm
# FwAUAG4mzsO1Sk50S7EvdpvaW+sJ/bWMjXzLuq+xFwrsSTQ22KSm8XmnX2NGqws5
# Tk+pqQupcwan4CsjflVqMva5nc4YxI4wggZyMIIEWqADAgECAhM4AAAAAm7pDq12
# AeXXAAAAAAACMA0GCSqGSIb3DQEBCwUAMGcxCzAJBgNVBAYTAkJFMRIwEAYDVQQI
# EwlBbnR3ZXJwZW4xDDAKBgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYD
# VQQLEwNJQ1QxFzAVBgNVBAMTDlNDS0NFTiBSb290IENBMB4XDTE3MDYyMzExMzkz
# NFoXDTMyMDYyMzExNDkzNFowZjELMAkGA1UEBhMCQkUxEjAQBgNVBAgTCUFudHdl
# cnBlbjEMMAoGA1UEBxMDTW9sMQ8wDQYDVQQKEwZTQ0tDRU4xDDAKBgNVBAsTA0lD
# VDEWMBQGA1UEAxMNU0NLQ0VOIElDVCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
# ADCCAgoCggIBALFtbifIAikMI3YQIa+niSTV8PsH34uadkQePLs02kIdmPPT/u+T
# RYZO6njltLVcGnMWJLmzL4DamrAPUbJcpkRLMS35aDAonUT0kI/KNChNnHy2KI2K
# 3tUwoRcXND2aG4m2ewU7FNr++RkI57BBDJsc8CSwI0lNphVSiSo6yrOF7f6uo98N
# H3a0c9G2vM0jG0xztivAndUatxkAyz8rYScg8c6OmERO0xThXFxqyKRV75stVz3P
# yLYh8E6HDpkNZrBfuOltIH1rWxS7fGwvwp7hNmUD5wJqat5TlLvHDqv9nqoYoQHg
# JYuTHGHqWivqq9SbSzX4E0pJBRcNu3OXD18BQghNK8iXTfqjeF3ZNydos9IWshCe
# LBmopnSU17/zk5kscShjJz2FfgU75PzwyZxo1kKjq8n9D1oJsFUNSgKMGj4wQFyT
# hKLczZ81tPxSrb4CWC5N8RbN7CSehBug9NsAdkTbMzRjOurcqqsf2d+udccM4JGG
# EdRE3ZnXXKi+v92vh4n0uSvfTfqu61/0ad9QFJTbG+d8YYeNzVlAIOU862/SeeJg
# UemfzGn5k1R3CtpyukUWGlH8bP1rhNvjs1+zHRv1EYtZVbjru4aewCp0o3C5znAR
# u5ZEitUNaQrgAmDJLwpfu5HoqN++mpFH7pl9x6hFYCvLbWYkYIlR0e0NAgMBAAGj
# ggEWMIIBEjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU8CkU9WohFJJWVBOk
# PdWt8CE6xXgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGG
# MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUr8bKrgoIFExryOnviOUxtH5
# FDAwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VO
# JTIwUm9vdCUyMENBLmNybDBHBggrBgEFBQcBAQQ7MDkwNwYIKwYBBQUHMAKGK2h0
# dHA6Ly9jcmwuc2NrY2VuLmJlL1NDS0NFTiUyMFJvb3QlMjBDQS5jcnQwDQYJKoZI
# hvcNAQELBQADggIBAIbENXjQHhcyihmPSltFTBqy1G7XHIx6HipRnVZ/soUvcYUm
# iBYJtNCD1Tuc4fYyrYAgN6PNU6mNMNVqEStVPLfPTp+UWWFct/aQ8rvqAZR4LpfS
# jriWyCi4IdFYBD72N7zNIdGy3cSK55SMXIVcYLOcv4f8Cyply47IPgLmM7CePvRg
# A+UrHRRqdo4ij3/WsOsxuu2p9sk6rbz33qEaZDFjvjMd/QllsH1NzGkMkpQMdPyc
# 2XKls5OkBYDdYfPcEgRw9JjBXZ2oRLYecvUIT5C8nT54omxeVWefYG1FZaRRc/FX
# XZgbcfcX3uWiGBI5I9+R5hFvxTe6sJyT93QpY8xYqkrniqohSDd6bp4x2zFKAMSZ
# 4m8ddV8+KRZuZnZPL/ea/rJ3B/EhSvz+Z1I4xGCAUSJ2YqL5ewvCnyNUQ/ZVyQz3
# cOclX5AqZAq/62DTTAR3w2GfhtTRLvVsxNja5JwuB+KqDSS5jI1T07MHCE+/NIjr
# xWUX9apftHtkylBwjpGfqZV7Zdx+jIpqzZOgf2UAMuJhEzR+nHmqLnVe1+WOx820
# 8ElwksOhgokDHWF4LBafpYqKKxJhWYVXNj07PqFF2zIvCFGgsihJurTGRyfjxlNW
# ARPEs8o+ZyNUlIW/mh7p0RpYYFz2+G5xHWVWjK7sRTNFG64hsJpDhL/XD1aQMIIG
# tDCCBJygAwIBAgIQDcesVwX/IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQsw
# CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
# ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw
# HhcNMjUwNTA3MDAwMDAwWhcNMzgwMTE0MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEX
# MBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0
# ZWQgRzQgVGltZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIICIjAN
# BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtHgx0wqYQXK+PEbAHKx126NGaHS0
# URedTa2NDZS1mZaDLFTtQ2oRjzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1IusL
# opuW2qftJYJaDNs1+JH7Z+QdSKWM06qchUP+AbdJgMQB3h2DZ0Mal5kYp77jYMVQ
# XSZH++0trj6Ao+xh/AS7sQRuQL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDE
# pKk7RdoX0M980EpLtlrNyHw0Xm+nt5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVCiZv7
# PNBYqHEpNVWC2ZQ8BbfnFRQVESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpo
# YGk81coWJ+KdPvMvaB0WkE/2qHxJ0ucS638ZxqU14lDnki7CcoKCz6eum5A19WZQ
# HkqUJfdkDjHkccpL6uoG8pbF0LJAQQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJn
# jq3hj0XbQcd8hjj/q8d6ylgxCZSKi17yVp2NL+cnT6Toy+rN+nM8M7LnLqCrO2JP
# 3oW//1sfuZDKiDEb1AQ8es9Xr/u6bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp
# 2WyODi7vQTCBZtVFJfVZ3j7OgWmnhFr4yUozZtqgPrHRVHhGNKlYzyjlroPxul+b
# gIspzOwbtmsgY1MCAwEAAaOCAV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYD
# VR0OBBYEFO9vU0rp5AZ8esrikFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LScV1k
# TN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcD
# CDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
# ZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t
# L0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0
# cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmww
# IAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUA
# A4ICAQAXzvsWgBz+Bz0RdnEwvb4LyLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVMY2mh
# XZXjDNJQa8j00DNqhCT3t+s8G0iP5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib6
# 1eoalhnd6ywFLerycvZTAz40y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB9BfB
# wAQYK9FHaoq2e26MHvVY9gCDA/JYsq7pGdogP8HRtrYfctSLANEBfHU16r3J05qX
# 3kId+ZOczgj5kjatVB+NdADVZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HCn2cQ
# LwQCqjFbqrXuvTPSegOOzr4EWj7PtspIHBldNE2K9i697cvaiIo2p61Ed2p8xMJb
# 82Yosn0z4y25xUbI7GIN/TpVfHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToW
# d2UQ1KYT70kZjE4YtL8Pbzg0c1ugMZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6Tl4KS
# FLFk43esaUeqGkH/wyW4N7OigizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx
# 3zEdmcif/sYQsfch28bZeUz2rtY/9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8Blqm
# yIjlgp2+VqsS9/wQD7yFylIz0scmbKvFoW2jNrbM1pD2T7m3XDCCBu0wggTVoAMC
# AQICEAhP3DNPfkVO28MPj/mSGDUwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMC
# VVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBU
# cnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMTAe
# Fw0yNjA4MDUwMDAwMDBaFw0zNzExMDQyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcw
# FQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgU0hBMjU2
# IFJTQTQwOTYgVGltZXN0YW1wIFJlc3BvbmRlciAyMDI2IDEwggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQC2e6byyf7NSvjUm0xls/04xjD4fAkOkbnGQi7+
# Wpx81iYxfzViaxSIctuH3KSl5YEYpMuFgGsA31N2D9ATMbfZdw5uaAhuWevQKhDd
# ZIB4NnqcfpfpWQXJiQnDdAElETC+bhSEvNLGbA8DtwUpFMQ4yyYQSPqomT92osQA
# v6hBi47ATZS6JfVWe6XxhF4jJZ3iSAuf2Cros1czRSmWRHqMv9AfGZvp8ygYElhu
# dpQjtcPpwoOl6QrZJUyV3iINvN4cO05prGV0fkjG426xDr2d3z9lcSIHkdvGPdGU
# rXdxfVbgOUVcp2/8ISEzwKPW++Wa+E2ujI91EZtukGWDJ/xZ27k3oHKEXBRGfRTq
# jOU+jE3ba/5++JSE/7oNHnjs5mekExYN96LV/mxUbCKJb8pBNY4r3uD7hEmk/M81
# XhVgwDA7aMzYC3LZBg9WY5BMmbSay5ecmtJuXaB/0nKWmQmVZeqTVDgsmzHP5MQu
# hAJkiWNuC9MmCg9TZHXbJ2/yLVSov9p16UDTLtT0+aa1vN71fHeu1qMLlLNB3WOB
# /ADCxr3S/1hxI92Z6jKgEED/btwIvbfuXkNNhg8MtDg43c4tMZae9FvqMOt/9Pvm
# AxF9TNIsIFB8G6yb36ZJZGUL8N/pL971DyLXcK6HM5PYnH5X+eVtczhCgHCVQCF6
# XDAlPQIDAQABo4IBlTCCAZEwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUFMljijAu
# 1Er7bpTz5uNAfvXszeIwHwYDVR0jBBgwFoAU729TSunkBnx6yuKQVvYv1Ensy04w
# DgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMIGVBggrBgEF
# BQcBAQSBiDCBhTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
# MF0GCCsGAQUFBzAChlFodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkRzRUaW1lU3RhbXBpbmdSU0E0MDk2U0hBMjU2MjAyNUNBMS5jcnQw
# XwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lD
# ZXJ0VHJ1c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEuY3Js
# MCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsF
# AAOCAgEAjcU6YR6dUgrfmawJgH59KECxa9Ji8sEi2g10CBDaMiqsaxWyW5cwlT/6
# ZF5sFznazqVsoC85U9dqLOYqQwst+UQQoNlDHgKRLa3xoc+OReFreFhnTXSG0Vrd
# 2E2CZqUfm+5a+He1MJ/h+tNLuA+0Zzhn/Fo+FDYAHWZHx4R79ZsfRFYe9UiXpXBD
# f6DkUo183Y38NYmR/XfDYf7YZ+oR9t3flbDwK+hgGMs0gNNp1w9Z2CyOyI5or/sS
# womAuNQ0hWC9xoU4stD8aWsD7RkcmgVRs6vlIk3zPKQ+ylcheWkMlj+CoVRlFE55
# pv0ZWCaFt04lwP/rdGHE9qEVQZtyRE42ox7oNgC/r+Y4bSlZ3dw9K2x1xLtu6PkP
# KeLBFjzKigwfqm3Hm+k/+lnME8F5kPZTgiy2HLEHklpryqs6QHnPXrRNeIzkAMyy
# lnRN8P0wmirS0WkU+ywpEWFZ4QNg+9xS43tTuW9x0eXh7NDc1P/sV+zWxHXKH8tF
# t1ncHdVzqrZaYPyYMLSn2TOXajveJW1L3joiQSPsWRGxkbDDW15jERFE4LvjnGu2
# O9zD1nLJSMdlYZEikl4w2w+q4IN/R+TIe0H4ngCI1moJCTbevGH4punIxM1Uoi0n
# mX3ZK+XbRT01uowE5ViXWHng0RgsmrX/EdYUo80r3TfMlkD0/YMxggU2MIIFMgIB
# ATBrMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAKBgNVBAcT
# A01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVND
# S0NFTiBJQ1QgQ0ECAR8wCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKA
# AKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
# MAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFCjLrQHyizo8/xWGuudC9eFZ
# YDd0MA0GCSqGSIb3DQEBAQUABIIBAHPBqLCnnWtH7A5HTQuuiH+2knTQ9zZfs7nN
# SBz8kixoRGmYIVyp2NvOHdHLsumyjHSohFpezRETXP7v0Ld8A9KzwdDremTUaCSP
# wq2NFGHvJ8sUDCn+92qIYM3EHuUVWnL4+X4nQiU/xKaaP+95tvdOD+zldAtDrOMN
# fCOQn4wLrTGIUn404K9cemuiSUXhqQZGfh9klgUR89Nlhn6l6H/Y+s6147fVFq1d
# c4riAMgqRLETC0l033BjlqsTb9KxrpZq2A/P9HBJ+aauNic4GDt0o0O8cbWNIAsu
# ftyI9iZUPn+KFdC/Q9rTkITz3Uj08qq05HtO4TJdXvTG+fzJ2tChggMmMIIDIgYJ
# KoZIhvcNAQkGMYIDEzCCAw8CAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTE2MTQyNzEzWjAvBgkqhkiG9w0BCQQxIgQgsFNC
# rfQYEMX1jMMKWMIAthxhxU9e32M5DpTch3wWr/EwDQYJKoZIhvcNAQEBBQAEggIA
# Lf4WY15+KhI8HMtGStMHICvANyTzWjTPaTowEbUL4UeWjCOR/tUZrYncVkZm3hsm
# RNCwj3zcvSCtBePk1tGV+WJK3lSy/uJIV0Phu14U1lchELoDn0i4aj2PrbOHpXcE
# UvC7f3/R6iYqCkjz2Ul807PO+HGkHdexHaSphiEmZf8CKuv2d6TC6mjUKOF/w6bU
# n4P/MNZwjG14fswOrA8aYWqo2n6YN0t6xNr/WRwoEpwP8uzIWwWEL9Ox9MndhqI4
# kfAobSdveDZCgR4XgLfQJOFAkcvFnZTE5azAOj1mmlfrMaEUzG6C0v5FI9HG8e7F
# 3OG7wa2CRNHSAO7RoJrbWHo7NLA42sl2DPqh+KbS2a5n4trAw/+4XXQkLy197gVv
# J4p7CQNgTu9KPidsvg1XgGXo+0VWT6/u9TDPUhGx9Nyb5ns16w9XSIGtmLtqiZ1z
# xaqnsJHUyAMmF3YmSkTlqMOv00uepXClR+zCSYntkAhRSSnENE67eTOhY8gJhvIG
# bURUCdPUhwXsGa776iG5KsTFdra3xd6Hy+23ZEl3/eoKjhqCAZICqyLd7Od3oqo1
# wZGk74Z6xQBBRnMnQfbwILMgZg6ihM2mY4Och1C67EEzzFItNxIPKngU4iRfuP56
# 3tnWtMG74X0fI3taBM/tL3fczUsHagKUjv0DPUA98mQ=
# MIIlWAYJKoZIhvcNAQcCoIIlSTCCJUUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCHKgQ+kdR5gwYa
# mJOzfvQjTIW41ZJeBB4+isAvCDu/uaCCH3AwggWNMIIEdaADAgECAhAOmxiO+dAt
# 5+/bUOIIQBhaMA0GCSqGSIb3DQEBDAUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
# BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0yMjA4MDEwMDAwMDBa
# Fw0zMTExMDkyMzU5NTlaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
# ZXJ0IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
# ggIBAL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3E
# MB/zG6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKy
# unWZanMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsF
# xl7sWxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU1
# 5zHL2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJB
# MtfbBHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObUR
# WBf3JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6
# nj3cAORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxB
# YKqxYxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5S
# UUd0viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+x
# q4aLT8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjggE6MIIB
# NjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTs1+OC0nFdZEzfLmc/57qYrhwP
# TzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzAOBgNVHQ8BAf8EBAMC
# AYYweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
# Y2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNv
# bS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwRQYDVR0fBD4wPDA6oDigNoY0
# aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB
# LmNybDARBgNVHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQEMBQADggEBAHCgv0Nc
# Vec4X6CjdBs9thbX979XB72arKGHLOyFXqkauyL4hxppVCLtpIh3bb0aFPQTSnov
# Lbc47/T/gLn4offyct4kvFIDyE7QKt76LVbP+fT3rDB6mouyXtTP0UNEm0Mh65Zy
# oUi0mcudT6cGAxN3J0TU53/oWajwvy8LpunyNDzs9wPHh6jSTEAZNUZqaVSwuKFW
# juyk1T3osdz9HNj0d1pcVIxv76FQPfx2CWiEn2/K2yCNNWAcAgPLILCsWKAOQGPF
# mCLBsln1VWvPJ6tsds5vIy30fnFqI2si/xK4VC0nftg62fC2h5b9W9FcrBjDTZ9z
# twGpn1eqXijiuZQwggW8MIIDpKADAgECAgEfMA0GCSqGSIb3DQEBCwUAMGYxCzAJ
# BgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAKBgNVBAcTA01vbDEPMA0G
# A1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJQ1Qg
# Q0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAwWjBPMSEwHwYDVQQDExhW
# YW5kZW5icm91Y2tlIEx1YyBDUzIwMjExKjAoBgkqhkiG9w0BCQEWG2x1Yy52YW5k
# ZW5icm91Y2tlQHNja2Nlbi5iZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
# ggEBAPRbMPSAdMsURs6M9TChuXZWe1LSQlVXYVHPGRlnQeF719tgHS1Ern70aW0P
# uvCECkzUTbGHw3o+bF+vj1UZWw82oOEZGannAoTyG1CIxdOMc85Mdmy+Kb++9Ivx
# a6i4ahfpNDHE0F58TomaNyDY0dtRUDEMZw/A0AMkFmdg9BOnqrYeeLB0O/86ZkzU
# klRifi/Wa3ti1LV4U7fR6S4bMm7dZBh46IU2G3/oBdlNYAtC3DNol+bnrcBvF+cc
# GwG5kVxEZg8TtpEMj00hnI+rNPjI4Ar6mE83XKak1X5/xddZppx9ldJaiVujyOqy
# 0cONhiN/vsWPdZU37LQbG1OydGUCAwEAAaOCAYowggGGMAkGA1UdEwQCMAAwHQYD
# VR0OBBYEFN+1bIhLi6eWlLbzynleh97QuIFlMB8GA1UdIwQYMBaAFPApFPVqIRSS
# VlQTpD3VrfAhOsV4MAsGA1UdDwQEAwIHgDAfBgNVHSUEGDAWBggrBgEFBQcDAwYK
# KwYBBAGCNwIBFTA6BgNVHREEMzAxgRtsdWMudmFuZGVuYnJvdWNrZUBzY2tjZW4u
# YmWBEmx2YW5kZW5iQHNja2Nlbi5iZTA1BgNVHRIELjAshipodHRwOi8vY3JsLnNj
# a2Nlbi5iZS9TQ0tDRU4lMjBJQ1QlMjBDQS5jcnQwOwYDVR0fBDQwMjAwoC6gLIYq
# aHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIwSUNUJTIwQ0EuY3JsMD4GCSsG
# AQQBgjcVBwQxMC8GJysGAQQBgjcVCISMvCGCyP13gqGTIoSXlEaExpIugQGC1IQh
# gfrIaQIBZAIBCDAbBgkrBgEEAYI3FQoEDjAMMAoGCCsGAQUFBwMDMA0GCSqGSIb3
# DQEBCwUAA4ICAQBGH87fu9sNbcCPVQCdJ9jP4jT59WTZm6s5BquO10UL9i7UAEmd
# d0yfCHW3myNUigR6O+Oc6Wa74HbUhAk+nEimHxzP5KcNnKE6lwqsIOf49J5G+2HR
# mTgW9tewsr39ZiB3NE5s04fHEA0I45zs8wsgyp4Mlr5v3AfzYB7gxh0Hxdm+ion7
# PXvbKhAyI3F7pQTYauilmLAkHnoXD6T+Osp04wR9m1+HNGqLMKYyVOSdu0UnmGuq
# HBxpMD7hAJ8LCi5yR6t6s4BNCczwhzUpo6ZgrtLmKCacDmZ6SJMqsGFwan/GxnLS
# vw5QpVXUVJidDfTflMeJrfWhDOEt7jx9oQWQ249uzxlqJMVfBt1YZDq4gr76yjK6
# VY7F6540ECog4auPte4NoiT5UPdE3QHSD/82/cdLoVuhELR4p4bfJ7PONT7x8iZz
# I8BoASh9SKJBh06mcmyJosOkc77Wv3ykqal7R+/LQi9geJwku6Ti0XIy9UFGBbUD
# 4m18e5cKdqDzyIHwAne0JR0ZEILPzITWviFuSXKqGP0bkSbGgpl+LuaCHcKAv+1F
# QBc2oWW0yPdxCUYpwo9QfTTh0qYXABQAbibOw7VKTnRLsS92m9pb6wn9tYyNfMu6
# r7EXCuxJNDbYpKbxeadfY0arCzlOT6mpC6lzBqfgKyN+VWoy9rmdzhjEjjCCBnIw
# ggRaoAMCAQICEzgAAAACbukOrXYB5dcAAAAAAAIwDQYJKoZIhvcNAQELBQAwZzEL
# MAkGA1UEBhMCQkUxEjAQBgNVBAgTCUFudHdlcnBlbjEMMAoGA1UEBxMDTW9sMQ8w
# DQYDVQQKEwZTQ0tDRU4xDDAKBgNVBAsTA0lDVDEXMBUGA1UEAxMOU0NLQ0VOIFJv
# b3QgQ0EwHhcNMTcwNjIzMTEzOTM0WhcNMzIwNjIzMTE0OTM0WjBmMQswCQYDVQQG
# EwJCRTESMBAGA1UECBMJQW50d2VycGVuMQwwCgYDVQQHEwNNb2wxDzANBgNVBAoT
# BlNDS0NFTjEMMAoGA1UECxMDSUNUMRYwFAYDVQQDEw1TQ0tDRU4gSUNUIENBMIIC
# IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsW1uJ8gCKQwjdhAhr6eJJNXw
# +wffi5p2RB48uzTaQh2Y89P+75NFhk7qeOW0tVwacxYkubMvgNqasA9RslymREsx
# LfloMCidRPSQj8o0KE2cfLYojYre1TChFxc0PZobibZ7BTsU2v75GQjnsEEMmxzw
# JLAjSU2mFVKJKjrKs4Xt/q6j3w0fdrRz0ba8zSMbTHO2K8Cd1Rq3GQDLPythJyDx
# zo6YRE7TFOFcXGrIpFXvmy1XPc/ItiHwTocOmQ1msF+46W0gfWtbFLt8bC/CnuE2
# ZQPnAmpq3lOUu8cOq/2eqhihAeAli5McYepaK+qr1JtLNfgTSkkFFw27c5cPXwFC
# CE0ryJdN+qN4Xdk3J2iz0hayEJ4sGaimdJTXv/OTmSxxKGMnPYV+BTvk/PDJnGjW
# QqOryf0PWgmwVQ1KAowaPjBAXJOEotzNnzW0/FKtvgJYLk3xFs3sJJ6EG6D02wB2
# RNszNGM66tyqqx/Z3651xwzgkYYR1ETdmddcqL6/3a+HifS5K99N+q7rX/Rp31AU
# lNsb53xhh43NWUAg5Tzrb9J54mBR6Z/MafmTVHcK2nK6RRYaUfxs/WuE2+OzX7Md
# G/URi1lVuOu7hp7AKnSjcLnOcBG7lkSK1Q1pCuACYMkvCl+7keio376akUfumX3H
# qEVgK8ttZiRgiVHR7Q0CAwEAAaOCARYwggESMBAGCSsGAQQBgjcVAQQDAgEAMB0G
# A1UdDgQWBBTwKRT1aiEUklZUE6Q91a3wITrFeDAZBgkrBgEEAYI3FAIEDB4KAFMA
# dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAW
# gBRSvxsquCggUTGvI6e+I5TG0fkUMDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8v
# Y3JsLnNja2Nlbi5iZS9TQ0tDRU4lMjBSb290JTIwQ0EuY3JsMEcGCCsGAQUFBwEB
# BDswOTA3BggrBgEFBQcwAoYraHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIw
# Um9vdCUyMENBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAhsQ1eNAeFzKKGY9KW0VM
# GrLUbtccjHoeKlGdVn+yhS9xhSaIFgm00IPVO5zh9jKtgCA3o81TqY0w1WoRK1U8
# t89On5RZYVy39pDyu+oBlHgul9KOuJbIKLgh0VgEPvY3vM0h0bLdxIrnlIxchVxg
# s5y/h/wLKmXLjsg+AuYzsJ4+9GAD5SsdFGp2jiKPf9aw6zG67an2yTqtvPfeoRpk
# MWO+Mx39CWWwfU3MaQySlAx0/JzZcqWzk6QFgN1h89wSBHD0mMFdnahEth5y9QhP
# kLydPniibF5VZ59gbUVlpFFz8VddmBtx9xfe5aIYEjkj35HmEW/FN7qwnJP3dClj
# zFiqSueKqiFIN3punjHbMUoAxJnibx11Xz4pFm5mdk8v95r+sncH8SFK/P5nUjjE
# YIBRInZiovl7C8KfI1RD9lXJDPdw5yVfkCpkCr/rYNNMBHfDYZ+G1NEu9WzE2Nrk
# nC4H4qoNJLmMjVPTswcIT780iOvFZRf1ql+0e2TKUHCOkZ+plXtl3H6MimrNk6B/
# ZQAy4mETNH6ceaoudV7X5Y7HzbTwSXCSw6GCiQMdYXgsFp+lioorEmFZhVc2PTs+
# oUXbMi8IUaCyKEm6tMZHJ+PGU1YBE8Szyj5nI1SUhb+aHunRGlhgXPb4bnEdZVaM
# ruxFM0UbriGwmkOEv9cPVpAwgga0MIIEnKADAgECAhANx6xXBf8hmS5AQyIMOkmG
# MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
# ZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yNTA1MDcwMDAwMDBaFw0zODAxMTQyMzU5
# NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8G
# A1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBT
# SEEyNTYgMjAyNSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0
# eDHTCphBcr48RsAcrHXbo0ZodLRRF51NrY0NlLWZloMsVO1DahGPNRcybEKq+Ruw
# OnPhof6pvF4uGjwjqNjfEvUi6wuim5bap+0lgloM2zX4kftn5B1IpYzTqpyFQ/4B
# t0mAxAHeHYNnQxqXmRinvuNgxVBdJkf77S2uPoCj7GH8BLuxBG5AvftBdsOECS1U
# kxBvMgEdgkFiDNYiOTx4OtiFcMSkqTtF2hfQz3zQSku2Ws3IfDReb6e3mmdglTca
# arps0wjUjsZvkgFkriK9tUKJm/s80FiocSk1VYLZlDwFt+cVFBURJg6zMUjZa/zb
# CclF83bRVFLeGkuAhHiGPMvSGmhgaTzVyhYn4p0+8y9oHRaQT/aofEnS5xLrfxnG
# pTXiUOeSLsJygoLPp66bkDX1ZlAeSpQl92QOMeRxykvq6gbylsXQskBBBnGy3tW/
# AMOMCZIVNSaz7BX8VtYGqLt9MmeOreGPRdtBx3yGOP+rx3rKWDEJlIqLXvJWnY0v
# 5ydPpOjL6s36czwzsucuoKs7Yk/ehb//Wx+5kMqIMRvUBDx6z1ev+7psNOdgJMoi
# wOrUG2ZdSoQbU2rMkpLiQ6bGRinZbI4OLu9BMIFm1UUl9VnePs6BaaeEWvjJSjNm
# 2qA+sdFUeEY0qVjPKOWug/G6X5uAiynM7Bu2ayBjUwIDAQABo4IBXTCCAVkwEgYD
# VR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU729TSunkBnx6yuKQVvYv1Ensy04w
# HwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGG
# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcw
# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8v
# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBD
# BgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgB
# hv1sBwEwDQYJKoZIhvcNAQELBQADggIBABfO+xaAHP4HPRF2cTC9vgvItTSmf83Q
# h8WIGjB/T8ObXAZz8OjuhUxjaaFdleMM0lBryPTQM2qEJPe36zwbSI/mS83afsl3
# YTj+IQhQE7jU/kXjjytJgnn0hvrV6hqWGd3rLAUt6vJy9lMDPjTLxLgXf9r5nWMQ
# wr8Myb9rEVKChHyfpzee5kH0F8HABBgr0UdqirZ7bowe9Vj2AIMD8liyrukZ2iA/
# wdG2th9y1IsA0QF8dTXqvcnTmpfeQh35k5zOCPmSNq1UH410ANVko43+Cdmu4y81
# hjajV/gxdEkMx1NKU4uHQcKfZxAvBAKqMVuqte69M9J6A47OvgRaPs+2ykgcGV00
# TYr2Lr3ty9qIijanrUR3anzEwlvzZiiyfTPjLbnFRsjsYg39OlV8cipDoq7+qNNj
# qFzeGxcytL5TTLL4ZaoBdqbhOhZ3ZRDUphPvSRmMThi0vw9vODRzW6AxnJll38F0
# cuJG7uEBYTptMSbhdhGQDpOXgpIUsWTjd6xpR6oaQf/DJbg3s6KCLPAlZ66RzIg9
# sC+NJpud/v4+7RWsWCiKi9EOLLHfMR2ZyJ/+xhCx9yHbxtl5TPau1j/1MIDpMPx0
# LckTetiSuEtQvLsNz3Qbp7wGWqbIiOWCnb5WqxL3/BAPvIXKUjPSxyZsq8WhbaM2
# tszWkPZPubdcMIIG7TCCBNWgAwIBAgIQCE/cM09+RU7bww+P+ZIYNTANBgkqhkiG
# 9w0BAQsFADBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4x
# QTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGltZVN0YW1waW5nIFJTQTQw
# OTYgU0hBMjU2IDIwMjUgQ0ExMB4XDTI2MDgwNTAwMDAwMFoXDTM3MTEwNDIzNTk1
# OVowYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYD
# VQQDEzJEaWdpQ2VydCBTSEEyNTYgUlNBNDA5NiBUaW1lc3RhbXAgUmVzcG9uZGVy
# IDIwMjYgMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALZ7pvLJ/s1K
# +NSbTGWz/TjGMPh8CQ6RucZCLv5anHzWJjF/NWJrFIhy24fcpKXlgRiky4WAawDf
# U3YP0BMxt9l3Dm5oCG5Z69AqEN1kgHg2epx+l+lZBcmJCcN0ASURML5uFIS80sZs
# DwO3BSkUxDjLJhBI+qiZP3aixAC/qEGLjsBNlLol9VZ7pfGEXiMlneJIC5/YKuiz
# VzNFKZZEeoy/0B8Zm+nzKBgSWG52lCO1w+nCg6XpCtklTJXeIg283hw7TmmsZXR+
# SMbjbrEOvZ3fP2VxIgeR28Y90ZStd3F9VuA5RVynb/whITPAo9b75Zr4Ta6Mj3UR
# m26QZYMn/FnbuTegcoRcFEZ9FOqM5T6MTdtr/n74lIT/ug0eeOzmZ6QTFg33otX+
# bFRsIolvykE1jive4PuESaT8zzVeFWDAMDtozNgLctkGD1ZjkEyZtJrLl5ya0m5d
# oH/ScpaZCZVl6pNUOCybMc/kxC6EAmSJY24L0yYKD1Nkddsnb/ItVKi/2nXpQNMu
# 1PT5prW83vV8d67WowuUs0HdY4H8AMLGvdL/WHEj3ZnqMqAQQP9u3Ai9t+5eQ02G
# Dwy0ODjdzi0xlp70W+ow63/0++YDEX1M0iwgUHwbrJvfpklkZQvw3+kv3vUPItdw
# roczk9icflf55W1zOEKAcJVAIXpcMCU9AgMBAAGjggGVMIIBkTAMBgNVHRMBAf8E
# AjAAMB0GA1UdDgQWBBQUyWOKMC7USvtulPPm40B+9ezN4jAfBgNVHSMEGDAWgBTv
# b1NK6eQGfHrK4pBW9i/USezLTjAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAww
# CgYIKwYBBQUHAwgwgZUGCCsGAQUFBwEBBIGIMIGFMCQGCCsGAQUFBzABhhhodHRw
# Oi8vb2NzcC5kaWdpY2VydC5jb20wXQYIKwYBBQUHMAKGUWh0dHA6Ly9jYWNlcnRz
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQw
# OTZTSEEyNTYyMDI1Q0ExLmNydDBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vY3Js
# My5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRUaW1lU3RhbXBpbmdSU0E0
# MDk2U0hBMjU2MjAyNUNBMS5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZI
# AYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQCNxTphHp1SCt+ZrAmAfn0oQLFr0mLy
# wSLaDXQIENoyKqxrFbJblzCVP/pkXmwXOdrOpWygLzlT12os5ipDCy35RBCg2UMe
# ApEtrfGhz45F4Wt4WGdNdIbRWt3YTYJmpR+b7lr4d7Uwn+H600u4D7RnOGf8Wj4U
# NgAdZkfHhHv1mx9EVh71SJelcEN/oORSjXzdjfw1iZH9d8Nh/thn6hH23d+VsPAr
# 6GAYyzSA02nXD1nYLI7Ijmiv+xLCiYC41DSFYL3GhTiy0PxpawPtGRyaBVGzq+Ui
# TfM8pD7KVyF5aQyWP4KhVGUUTnmm/RlYJoW3TiXA/+t0YcT2oRVBm3JETjajHug2
# AL+v5jhtKVnd3D0rbHXEu27o+Q8p4sEWPMqKDB+qbceb6T/6WcwTwXmQ9lOCLLYc
# sQeSWmvKqzpAec9etE14jOQAzLKWdE3w/TCaKtLRaRT7LCkRYVnhA2D73FLje1O5
# b3HR5eHs0NzU/+xX7NbEdcofy0W3Wdwd1XOqtlpg/JgwtKfZM5dqO94lbUveOiJB
# I+xZEbGRsMNbXmMREUTgu+Oca7Y73MPWcslIx2VhkSKSXjDbD6rgg39H5Mh7Qfie
# AIjWagkJNt68Yfim6cjEzVSiLSeZfdkr5dtFPTW6jATlWJdYeeDRGCyatf8R1hSj
# zSvdN8yWQPT9gzGCBT4wggU6AgEBMGswZjELMAkGA1UEBhMCQkUxEjAQBgNVBAgT
# CUFudHdlcnBlbjEMMAoGA1UEBxMDTW9sMQ8wDQYDVQQKEwZTQ0tDRU4xDDAKBgNV
# BAsTA0lDVDEWMBQGA1UEAxMNU0NLQ0VOIElDVCBDQQIBHzANBglghkgBZQMEAgEF
# AKB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
# MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCC8
# f/s6BffOZ8ZGSq5OoEagMm8SXFJcgCMYFyDf8Gfg/DANBgkqhkiG9w0BAQEFAASC
# AQB4/lQ7EkR3lvFm4nillNVaUc39vi63bUJUnZ/MLUnCSfbo7gJacx2JxP6sM7WK
# em4HyUTqcqE9RaC3p7auyG4WprNhSXh766KlakqWoCp5xHRo4IZWKWdlopcOobMz
# LCDnVqaXsdJOMVtqQBw8QiR8b6AQN5UjaIjiTIuaJnIEWM65/OV8giStwehu6/Kb
# Y8ljkMdJOr7o6PdvC3S9/vMbMaOC887l1URAU2WhDpL2rdX+YZfyU7FNwOmb4nu5
# HBmPqZ7Oa0ggfvg/ioLKpSus/N/hK0OiMmtnL3+S5KKcIhr/5fI07+zWfdSp01RE
# nRp2u8o5+3L/Mk21YoP5MMHsoYIDJjCCAyIGCSqGSIb3DQEJBjGCAxMwggMPAgEB
# MH0waTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYD
# VQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNI
# QTI1NiAyMDI1IENBMQIQCE/cM09+RU7bww+P+ZIYNTANBglghkgBZQMEAgEFAKBp
# MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI2MDky
# MjEzNTg0MlowLwYJKoZIhvcNAQkEMSIEIOBo7cXJ91+YGvfqtIl9QEZ+b47fhxaG
# 6QnMgGa2D7RMMA0GCSqGSIb3DQEBAQUABIICAJu6f8OOlLOpaBBBhbWI8SC5Oq8k
# qiWX5nk3jNuHyCBx9UeQgdIs1MJwtl98tQw5LHv75zCc9dvH6trzzsyDzu2X+zMl
# L9c2zGHnAhllSY/MPSUwXVsraj12hxsYdVz5JQSt4X4wt2Rh5fqym0tyb0MRv8WS
# tWn/6a1O+szJtlJjiX6dlOIJ8ILy/yA5lMO0kstqord4beiJK6OesmcSnsmzeISw
# rgNO2klOjKkh6Q9gdvW46cHR3NUVQdVUcmfwc8RV28Toyq9HcgnW9E6Q28riPS6l
# vpuiUObVQZB7nvwUgMLsJtaOEdu+/E1tgennn/+cBtG8OnJScbwxKnbIGOrgX2js
# 3tTYy3ypYzUo87OWDS9aSoJExYQWdh6vT0o+nXsVwkzT/dEqi+wa+sa6jJIBA2vC
# 3bKQwtL9+cU00ew2+4zT5HQl8sJdAvQlQ6d/xwM/MS0/HBgnNYGGn8RRHaEt2Bm1
# V9pYqwGOChRhxjOF0hCaMEZcSg57aYoKSYnOnASrJZpn1k3ygPl+sZRF7R4uaeeG
# RxIOHlBo/kr9Xz1TwJykwCnKvuGBEUXl/I3YhiAWLBH++twhe10oxw0aMaCrGR0q
# oGf7CFJD6E+X25RK30feANwmErmOJVqnF7jyP00yvQCUtzqGkrAcMBGixlPE6yqG
# o6jEG8VV18eg/yK6
# SIG # End signature block

View file

@ -118,6 +118,10 @@ start-process -wait -workingdirectory "c:\software" -filepath "C:\Program Files\
start-process -wait -workingdirectory "c:\software" -filepath "C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\sqlcmd.exe" -argumentlist "-i c:\software\UpdateLocal.sql" -passthru
. "$PSScriptRoot\UpdateSql.ps1"
Write-Host "Other script finished! Continuing main script..." -ForegroundColor Green
echo Certificate
Import-Certificate -FilePath "c:\software\sckca.cer" -CertStoreLocation Cert:\LocalMachine\Root
Import-Certificate -FilePath "c:\software\ictinteremediate.cer" -CertStoreLocation Cert:\LocalMachine\Ca
@ -142,203 +146,204 @@ exit
# SIG # Begin signature block
# MIIlPAYJKoZIhvcNAQcCoIIlLTCCJSkCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUF0+tka23Dq2dXV+Id4/BT6YP
# tNaggh9wMIIFjTCCBHWgAwIBAgIQDpsYjvnQLefv21DiCEAYWjANBgkqhkiG9w0B
# AQwFADBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVk
# IElEIFJvb3QgQ0EwHhcNMjIwODAxMDAwMDAwWhcNMzExMTA5MjM1OTU5WjBiMQsw
# CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
# ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw
# ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz
# 7MKnJS7JIT3yithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS
# 5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7
# bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfI
# SKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jH
# trHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14
# Ztk6MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2
# h4mXaXpI8OCiEhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt
# 6zPZxd9LBADMfRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPR
# iQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ER
# ElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4K
# Jpn15GkvmB0t9dmpsh3lGwIDAQABo4IBOjCCATYwDwYDVR0TAQH/BAUwAwEB/zAd
# BgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wHwYDVR0jBBgwFoAUReuir/SS
# y4IxLVGLp6chnfNtyA8wDgYDVR0PAQH/BAQDAgGGMHkGCCsGAQUFBwEBBG0wazAk
# BggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAC
# hjdodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURS
# b290Q0EuY3J0MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0
# LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwEQYDVR0gBAowCDAGBgRV
# HSAAMA0GCSqGSIb3DQEBDAUAA4IBAQBwoL9DXFXnOF+go3QbPbYW1/e/Vwe9mqyh
# hyzshV6pGrsi+IcaaVQi7aSId229GhT0E0p6Ly23OO/0/4C5+KH38nLeJLxSA8hO
# 0Cre+i1Wz/n096wwepqLsl7Uz9FDRJtDIeuWcqFItJnLnU+nBgMTdydE1Od/6Fmo
# 8L8vC6bp8jQ87PcDx4eo0kxAGTVGamlUsLihVo7spNU96LHc/RzY9HdaXFSMb++h
# UD38dglohJ9vytsgjTVgHAIDyyCwrFigDkBjxZgiwbJZ9VVrzyerbHbObyMt9H5x
# aiNrIv8SuFQtJ37YOtnwtoeW/VvRXKwYw02fc7cBqZ9Xql4o4rmUMIIFvDCCA6Sg
# AwIBAgIBHzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJCRTESMBAGA1UECBMJ
# QW50d2VycGVuMQwwCgYDVQQHEwNNb2wxDzANBgNVBAoTBlNDS0NFTjEMMAoGA1UE
# CxMDSUNUMRYwFAYDVQQDEw1TQ0tDRU4gSUNUIENBMB4XDTE4MDUyNDA2MTEwMFoX
# DTMwMDYwMTEyMDAwMFowTzEhMB8GA1UEAxMYVmFuZGVuYnJvdWNrZSBMdWMgQ1My
# MDIxMSowKAYJKoZIhvcNAQkBFhtsdWMudmFuZGVuYnJvdWNrZUBzY2tjZW4uYmUw
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQD0WzD0gHTLFEbOjPUwobl2
# VntS0kJVV2FRzxkZZ0Hhe9fbYB0tRK5+9GltD7rwhApM1E2xh8N6Pmxfr49VGVsP
# NqDhGRmp5wKE8htQiMXTjHPOTHZsvim/vvSL8WuouGoX6TQxxNBefE6Jmjcg2NHb
# UVAxDGcPwNADJBZnYPQTp6q2HniwdDv/OmZM1JJUYn4v1mt7YtS1eFO30ekuGzJu
# 3WQYeOiFNht/6AXZTWALQtwzaJfm563AbxfnHBsBuZFcRGYPE7aRDI9NIZyPqzT4
# yOAK+phPN1ympNV+f8XXWaacfZXSWolbo8jqstHDjYYjf77Fj3WVN+y0GxtTsnRl
# AgMBAAGjggGKMIIBhjAJBgNVHRMEAjAAMB0GA1UdDgQWBBTftWyIS4unlpS288p5
# Xofe0LiBZTAfBgNVHSMEGDAWgBTwKRT1aiEUklZUE6Q91a3wITrFeDALBgNVHQ8E
# BAMCB4AwHwYDVR0lBBgwFgYIKwYBBQUHAwMGCisGAQQBgjcCARUwOgYDVR0RBDMw
# MYEbbHVjLnZhbmRlbmJyb3Vja2VAc2NrY2VuLmJlgRJsdmFuZGVuYkBzY2tjZW4u
# YmUwNQYDVR0SBC4wLIYqaHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIwSUNU
# JTIwQ0EuY3J0MDsGA1UdHwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmwuc2NrY2VuLmJl
# L1NDS0NFTiUyMElDVCUyMENBLmNybDA+BgkrBgEEAYI3FQcEMTAvBicrBgEEAYI3
# FQiEjLwhgsj9d4KhkyKEl5RGhMaSLoEBgtSEIYH6yGkCAWQCAQgwGwYJKwYBBAGC
# NxUKBA4wDDAKBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAgEARh/O37vbDW3A
# j1UAnSfYz+I0+fVk2ZurOQarjtdFC/Yu1ABJnXdMnwh1t5sjVIoEejvjnOlmu+B2
# 1IQJPpxIph8cz+SnDZyhOpcKrCDn+PSeRvth0Zk4FvbXsLK9/WYgdzRObNOHxxAN
# COOc7PMLIMqeDJa+b9wH82Ae4MYdB8XZvoqJ+z172yoQMiNxe6UE2GropZiwJB56
# Fw+k/jrKdOMEfZtfhzRqizCmMlTknbtFJ5hrqhwcaTA+4QCfCwouckererOATQnM
# 8Ic1KaOmYK7S5igmnA5mekiTKrBhcGp/xsZy0r8OUKVV1FSYnQ3035THia31oQzh
# Le48faEFkNuPbs8ZaiTFXwbdWGQ6uIK++soyulWOxeueNBAqIOGrj7XuDaIk+VD3
# RN0B0g//Nv3HS6FboRC0eKeG3yezzjU+8fImcyPAaAEofUiiQYdOpnJsiaLDpHO+
# 1r98pKmpe0fvy0IvYHicJLuk4tFyMvVBRgW1A+JtfHuXCnag88iB8AJ3tCUdGRCC
# z8yE1r4hbklyqhj9G5EmxoKZfi7mgh3CgL/tRUAXNqFltMj3cQlGKcKPUH004dKm
# FwAUAG4mzsO1Sk50S7EvdpvaW+sJ/bWMjXzLuq+xFwrsSTQ22KSm8XmnX2NGqws5
# Tk+pqQupcwan4CsjflVqMva5nc4YxI4wggZyMIIEWqADAgECAhM4AAAAAm7pDq12
# AeXXAAAAAAACMA0GCSqGSIb3DQEBCwUAMGcxCzAJBgNVBAYTAkJFMRIwEAYDVQQI
# EwlBbnR3ZXJwZW4xDDAKBgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYD
# VQQLEwNJQ1QxFzAVBgNVBAMTDlNDS0NFTiBSb290IENBMB4XDTE3MDYyMzExMzkz
# NFoXDTMyMDYyMzExNDkzNFowZjELMAkGA1UEBhMCQkUxEjAQBgNVBAgTCUFudHdl
# cnBlbjEMMAoGA1UEBxMDTW9sMQ8wDQYDVQQKEwZTQ0tDRU4xDDAKBgNVBAsTA0lD
# VDEWMBQGA1UEAxMNU0NLQ0VOIElDVCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
# ADCCAgoCggIBALFtbifIAikMI3YQIa+niSTV8PsH34uadkQePLs02kIdmPPT/u+T
# RYZO6njltLVcGnMWJLmzL4DamrAPUbJcpkRLMS35aDAonUT0kI/KNChNnHy2KI2K
# 3tUwoRcXND2aG4m2ewU7FNr++RkI57BBDJsc8CSwI0lNphVSiSo6yrOF7f6uo98N
# H3a0c9G2vM0jG0xztivAndUatxkAyz8rYScg8c6OmERO0xThXFxqyKRV75stVz3P
# yLYh8E6HDpkNZrBfuOltIH1rWxS7fGwvwp7hNmUD5wJqat5TlLvHDqv9nqoYoQHg
# JYuTHGHqWivqq9SbSzX4E0pJBRcNu3OXD18BQghNK8iXTfqjeF3ZNydos9IWshCe
# LBmopnSU17/zk5kscShjJz2FfgU75PzwyZxo1kKjq8n9D1oJsFUNSgKMGj4wQFyT
# hKLczZ81tPxSrb4CWC5N8RbN7CSehBug9NsAdkTbMzRjOurcqqsf2d+udccM4JGG
# EdRE3ZnXXKi+v92vh4n0uSvfTfqu61/0ad9QFJTbG+d8YYeNzVlAIOU862/SeeJg
# UemfzGn5k1R3CtpyukUWGlH8bP1rhNvjs1+zHRv1EYtZVbjru4aewCp0o3C5znAR
# u5ZEitUNaQrgAmDJLwpfu5HoqN++mpFH7pl9x6hFYCvLbWYkYIlR0e0NAgMBAAGj
# ggEWMIIBEjAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU8CkU9WohFJJWVBOk
# PdWt8CE6xXgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGG
# MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUr8bKrgoIFExryOnviOUxtH5
# FDAwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VO
# JTIwUm9vdCUyMENBLmNybDBHBggrBgEFBQcBAQQ7MDkwNwYIKwYBBQUHMAKGK2h0
# dHA6Ly9jcmwuc2NrY2VuLmJlL1NDS0NFTiUyMFJvb3QlMjBDQS5jcnQwDQYJKoZI
# hvcNAQELBQADggIBAIbENXjQHhcyihmPSltFTBqy1G7XHIx6HipRnVZ/soUvcYUm
# iBYJtNCD1Tuc4fYyrYAgN6PNU6mNMNVqEStVPLfPTp+UWWFct/aQ8rvqAZR4LpfS
# jriWyCi4IdFYBD72N7zNIdGy3cSK55SMXIVcYLOcv4f8Cyply47IPgLmM7CePvRg
# A+UrHRRqdo4ij3/WsOsxuu2p9sk6rbz33qEaZDFjvjMd/QllsH1NzGkMkpQMdPyc
# 2XKls5OkBYDdYfPcEgRw9JjBXZ2oRLYecvUIT5C8nT54omxeVWefYG1FZaRRc/FX
# XZgbcfcX3uWiGBI5I9+R5hFvxTe6sJyT93QpY8xYqkrniqohSDd6bp4x2zFKAMSZ
# 4m8ddV8+KRZuZnZPL/ea/rJ3B/EhSvz+Z1I4xGCAUSJ2YqL5ewvCnyNUQ/ZVyQz3
# cOclX5AqZAq/62DTTAR3w2GfhtTRLvVsxNja5JwuB+KqDSS5jI1T07MHCE+/NIjr
# xWUX9apftHtkylBwjpGfqZV7Zdx+jIpqzZOgf2UAMuJhEzR+nHmqLnVe1+WOx820
# 8ElwksOhgokDHWF4LBafpYqKKxJhWYVXNj07PqFF2zIvCFGgsihJurTGRyfjxlNW
# ARPEs8o+ZyNUlIW/mh7p0RpYYFz2+G5xHWVWjK7sRTNFG64hsJpDhL/XD1aQMIIG
# tDCCBJygAwIBAgIQDcesVwX/IZkuQEMiDDpJhjANBgkqhkiG9w0BAQsFADBiMQsw
# CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
# ZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQw
# HhcNMjUwNTA3MDAwMDAwWhcNMzgwMTE0MjM1OTU5WjBpMQswCQYDVQQGEwJVUzEX
# MBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0
# ZWQgRzQgVGltZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExMIICIjAN
# BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtHgx0wqYQXK+PEbAHKx126NGaHS0
# URedTa2NDZS1mZaDLFTtQ2oRjzUXMmxCqvkbsDpz4aH+qbxeLho8I6jY3xL1IusL
# opuW2qftJYJaDNs1+JH7Z+QdSKWM06qchUP+AbdJgMQB3h2DZ0Mal5kYp77jYMVQ
# XSZH++0trj6Ao+xh/AS7sQRuQL37QXbDhAktVJMQbzIBHYJBYgzWIjk8eDrYhXDE
# pKk7RdoX0M980EpLtlrNyHw0Xm+nt5pnYJU3Gmq6bNMI1I7Gb5IBZK4ivbVCiZv7
# PNBYqHEpNVWC2ZQ8BbfnFRQVESYOszFI2Wv82wnJRfN20VRS3hpLgIR4hjzL0hpo
# YGk81coWJ+KdPvMvaB0WkE/2qHxJ0ucS638ZxqU14lDnki7CcoKCz6eum5A19WZQ
# HkqUJfdkDjHkccpL6uoG8pbF0LJAQQZxst7VvwDDjAmSFTUms+wV/FbWBqi7fTJn
# jq3hj0XbQcd8hjj/q8d6ylgxCZSKi17yVp2NL+cnT6Toy+rN+nM8M7LnLqCrO2JP
# 3oW//1sfuZDKiDEb1AQ8es9Xr/u6bDTnYCTKIsDq1BtmXUqEG1NqzJKS4kOmxkYp
# 2WyODi7vQTCBZtVFJfVZ3j7OgWmnhFr4yUozZtqgPrHRVHhGNKlYzyjlroPxul+b
# gIspzOwbtmsgY1MCAwEAAaOCAV0wggFZMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYD
# VR0OBBYEFO9vU0rp5AZ8esrikFb2L9RJ7MtOMB8GA1UdIwQYMBaAFOzX44LScV1k
# TN8uZz/nupiuHA9PMA4GA1UdDwEB/wQEAwIBhjATBgNVHSUEDDAKBggrBgEFBQcD
# CDB3BggrBgEFBQcBAQRrMGkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2lj
# ZXJ0LmNvbTBBBggrBgEFBQcwAoY1aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29t
# L0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcnQwQwYDVR0fBDwwOjA4oDagNIYyaHR0
# cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0VHJ1c3RlZFJvb3RHNC5jcmww
# IAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZIAYb9bAcBMA0GCSqGSIb3DQEBCwUA
# A4ICAQAXzvsWgBz+Bz0RdnEwvb4LyLU0pn/N0IfFiBowf0/Dm1wGc/Do7oVMY2mh
# XZXjDNJQa8j00DNqhCT3t+s8G0iP5kvN2n7Jd2E4/iEIUBO41P5F448rSYJ59Ib6
# 1eoalhnd6ywFLerycvZTAz40y8S4F3/a+Z1jEMK/DMm/axFSgoR8n6c3nuZB9BfB
# wAQYK9FHaoq2e26MHvVY9gCDA/JYsq7pGdogP8HRtrYfctSLANEBfHU16r3J05qX
# 3kId+ZOczgj5kjatVB+NdADVZKON/gnZruMvNYY2o1f4MXRJDMdTSlOLh0HCn2cQ
# LwQCqjFbqrXuvTPSegOOzr4EWj7PtspIHBldNE2K9i697cvaiIo2p61Ed2p8xMJb
# 82Yosn0z4y25xUbI7GIN/TpVfHIqQ6Ku/qjTY6hc3hsXMrS+U0yy+GWqAXam4ToW
# d2UQ1KYT70kZjE4YtL8Pbzg0c1ugMZyZZd/BdHLiRu7hAWE6bTEm4XYRkA6Tl4KS
# FLFk43esaUeqGkH/wyW4N7OigizwJWeukcyIPbAvjSabnf7+Pu0VrFgoiovRDiyx
# 3zEdmcif/sYQsfch28bZeUz2rtY/9TCA6TD8dC3JE3rYkrhLULy7Dc90G6e8Blqm
# yIjlgp2+VqsS9/wQD7yFylIz0scmbKvFoW2jNrbM1pD2T7m3XDCCBu0wggTVoAMC
# AQICEAhP3DNPfkVO28MPj/mSGDUwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMC
# VVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBU
# cnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMTAe
# Fw0yNjA4MDUwMDAwMDBaFw0zNzExMDQyMzU5NTlaMGMxCzAJBgNVBAYTAlVTMRcw
# FQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE7MDkGA1UEAxMyRGlnaUNlcnQgU0hBMjU2
# IFJTQTQwOTYgVGltZXN0YW1wIFJlc3BvbmRlciAyMDI2IDEwggIiMA0GCSqGSIb3
# DQEBAQUAA4ICDwAwggIKAoICAQC2e6byyf7NSvjUm0xls/04xjD4fAkOkbnGQi7+
# Wpx81iYxfzViaxSIctuH3KSl5YEYpMuFgGsA31N2D9ATMbfZdw5uaAhuWevQKhDd
# ZIB4NnqcfpfpWQXJiQnDdAElETC+bhSEvNLGbA8DtwUpFMQ4yyYQSPqomT92osQA
# v6hBi47ATZS6JfVWe6XxhF4jJZ3iSAuf2Cros1czRSmWRHqMv9AfGZvp8ygYElhu
# dpQjtcPpwoOl6QrZJUyV3iINvN4cO05prGV0fkjG426xDr2d3z9lcSIHkdvGPdGU
# rXdxfVbgOUVcp2/8ISEzwKPW++Wa+E2ujI91EZtukGWDJ/xZ27k3oHKEXBRGfRTq
# jOU+jE3ba/5++JSE/7oNHnjs5mekExYN96LV/mxUbCKJb8pBNY4r3uD7hEmk/M81
# XhVgwDA7aMzYC3LZBg9WY5BMmbSay5ecmtJuXaB/0nKWmQmVZeqTVDgsmzHP5MQu
# hAJkiWNuC9MmCg9TZHXbJ2/yLVSov9p16UDTLtT0+aa1vN71fHeu1qMLlLNB3WOB
# /ADCxr3S/1hxI92Z6jKgEED/btwIvbfuXkNNhg8MtDg43c4tMZae9FvqMOt/9Pvm
# AxF9TNIsIFB8G6yb36ZJZGUL8N/pL971DyLXcK6HM5PYnH5X+eVtczhCgHCVQCF6
# XDAlPQIDAQABo4IBlTCCAZEwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUFMljijAu
# 1Er7bpTz5uNAfvXszeIwHwYDVR0jBBgwFoAU729TSunkBnx6yuKQVvYv1Ensy04w
# DgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMIGVBggrBgEF
# BQcBAQSBiDCBhTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
# MF0GCCsGAQUFBzAChlFodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkRzRUaW1lU3RhbXBpbmdSU0E0MDk2U0hBMjU2MjAyNUNBMS5jcnQw
# XwYDVR0fBFgwVjBUoFKgUIZOaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lD
# ZXJ0VHJ1c3RlZEc0VGltZVN0YW1waW5nUlNBNDA5NlNIQTI1NjIwMjVDQTEuY3Js
# MCAGA1UdIAQZMBcwCAYGZ4EMAQQCMAsGCWCGSAGG/WwHATANBgkqhkiG9w0BAQsF
# AAOCAgEAjcU6YR6dUgrfmawJgH59KECxa9Ji8sEi2g10CBDaMiqsaxWyW5cwlT/6
# ZF5sFznazqVsoC85U9dqLOYqQwst+UQQoNlDHgKRLa3xoc+OReFreFhnTXSG0Vrd
# 2E2CZqUfm+5a+He1MJ/h+tNLuA+0Zzhn/Fo+FDYAHWZHx4R79ZsfRFYe9UiXpXBD
# f6DkUo183Y38NYmR/XfDYf7YZ+oR9t3flbDwK+hgGMs0gNNp1w9Z2CyOyI5or/sS
# womAuNQ0hWC9xoU4stD8aWsD7RkcmgVRs6vlIk3zPKQ+ylcheWkMlj+CoVRlFE55
# pv0ZWCaFt04lwP/rdGHE9qEVQZtyRE42ox7oNgC/r+Y4bSlZ3dw9K2x1xLtu6PkP
# KeLBFjzKigwfqm3Hm+k/+lnME8F5kPZTgiy2HLEHklpryqs6QHnPXrRNeIzkAMyy
# lnRN8P0wmirS0WkU+ywpEWFZ4QNg+9xS43tTuW9x0eXh7NDc1P/sV+zWxHXKH8tF
# t1ncHdVzqrZaYPyYMLSn2TOXajveJW1L3joiQSPsWRGxkbDDW15jERFE4LvjnGu2
# O9zD1nLJSMdlYZEikl4w2w+q4IN/R+TIe0H4ngCI1moJCTbevGH4punIxM1Uoi0n
# mX3ZK+XbRT01uowE5ViXWHng0RgsmrX/EdYUo80r3TfMlkD0/YMxggU2MIIFMgIB
# ATBrMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAKBgNVBAcT
# A01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVND
# S0NFTiBJQ1QgQ0ECAR8wCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAIoAKA
# AKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
# MAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFIA8OgX466XoZqx5H0mYm+/E
# IVIvMA0GCSqGSIb3DQEBAQUABIIBAJnh0OEfPf5uqkAAzc9XcPoZWRugTl11+yZg
# vmcsQr5UB7YOxNpK5U4u92eaCvqOU8zHiRE4XGWtxEFZLtD0uVk+HIrFcMxaWhUD
# ET39fdLMYwI/9ickYb78+dgyxME0w5yiT5fpRB+azRREI9Sslv4o+0HRTIZyuKgB
# HdJpFALcX4SHdFSIgSIvmBQHJHisdsY2ztiyykABhZ9grt08JGlpVy8hfnhgDTfZ
# kxI5YZk/rHbqBEDK6xD8CUAUph/rsptBUVKK5hZSupr3qqeuBXo0WFsyXmQKNswq
# 1mRk4pYW9qcIh5Qk2JoSazROb1aJnY/SgN9gdUyz7aC9E40vadChggMmMIIDIgYJ
# KoZIhvcNAQkGMYIDEzCCAw8CAQEwfTBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMO
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTE2MTQyNzEyWjAvBgkqhkiG9w0BCQQxIgQgxNg/
# icCg2MAhRyEVmuC/WQlcj+EuJ2xwmmXJubq+tjwwDQYJKoZIhvcNAQEBBQAEggIA
# WfYg8FT+RVuI/CQVoYs/kvYA0zcX6RFbOP5OdHb6xPvSNb/qUz+lqSvVl5et6Z5Q
# K+ukUB8dDMy1rCHbdY488x01hLzc/aI+Pc66+cVLQggr3XJt/LnqmxnowPi7aXsy
# HELrKahq5g3qEBPOd5uMm3n44MQRvvn4FgU1LHJdTv8kUimBuQkFUfg3Ufi5rK60
# unSv12RsPzLCzz/jOB3c9m17gxbAKLXeCPUA1vgG9gaNQ8ItB2dHh0fZGAS9BC65
# svL5OHfPSMTZ3/SPVWTmqAh3YhHxNZPn3Pbi5slHXoG9gZLqXIbw4zOxlT6sX1yo
# rMLzLl5gAjGuk6f2HlON5XHx+IlSKbxft3MJj+jNd+PC37k9gBBixevwp18WJLfn
# fUplTQpYwFEE5dUmUwZVt8hCdOKvBZKSdHgPo+hC6E3abBrD40S1p7JGxHnd7Q0V
# 8bJvDFZcOkdlK6JhiPkdQolJI/+iWhAHTIbsMzlGuIR7kn8VfiBStzf0MmUrjnfo
# GAEYSupmrOCP/PFCZRJ/TfqXGYvcp1O1p4SrYlKeNZbxd5jVTIYWOoAQ3hdkWdzJ
# dKmIV4F3F2NZKzWlIHmIrmb2oREaR/2PFiUlhxZ6mN8716VFk3HjFMu2uer1B3gU
# fD2ezP7xK9I3PhFx5NgCzNBfMz3VrxTY8V97DcAYlqY=
# MIIlWAYJKoZIhvcNAQcCoIIlSTCCJUUCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCANd+p0msmWDmOu
# TlvBBfmW/QvkuXsm2gXCa79hv4V+O6CCH3AwggWNMIIEdaADAgECAhAOmxiO+dAt
# 5+/bUOIIQBhaMA0GCSqGSIb3DQEBDAUAMGUxCzAJBgNVBAYTAlVTMRUwEwYDVQQK
# EwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xJDAiBgNV
# BAMTG0RpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQTAeFw0yMjA4MDEwMDAwMDBa
# Fw0zMTExMDkyMzU5NTlaMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
# ZXJ0IFRydXN0ZWQgUm9vdCBHNDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
# ggIBAL/mkHNo3rvkXUo8MCIwaTPswqclLskhPfKK2FnC4SmnPVirdprNrnsbhA3E
# MB/zG6Q4FutWxpdtHauyefLKEdLkX9YFPFIPUh/GnhWlfr6fqVcWWVVyr2iTcMKy
# unWZanMylNEQRBAu34LzB4TmdDttceItDBvuINXJIB1jKS3O7F5OyJP4IWGbNOsF
# xl7sWxq868nPzaw0QF+xembud8hIqGZXV59UWI4MK7dPpzDZVu7Ke13jrclPXuU1
# 5zHL2pNe3I6PgNq2kZhAkHnDeMe2scS1ahg4AxCN2NQ3pC4FfYj1gj4QkXCrVYJB
# MtfbBHMqbpEBfCFM1LyuGwN1XXhm2ToxRJozQL8I11pJpMLmqaBn3aQnvKFPObUR
# WBf3JFxGj2T3wWmIdph2PVldQnaHiZdpekjw4KISG2aadMreSx7nDmOu5tTvkpI6
# nj3cAORFJYm2mkQZK37AlLTSYW3rM9nF30sEAMx9HJXDj/chsrIRt7t/8tWMcCxB
# YKqxYxhElRp2Yn72gLD76GSmM9GJB+G9t+ZDpBi4pncB4Q+UDCEdslQpJYls5Q5S
# UUd0viastkF13nqsX40/ybzTQRESW+UQUOsxxcpyFiIJ33xMdT9j7CFfxCBRa2+x
# q4aLT8LWRV+dIPyhHsXAj6KxfgommfXkaS+YHS312amyHeUbAgMBAAGjggE6MIIB
# NjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTs1+OC0nFdZEzfLmc/57qYrhwP
# TzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzAOBgNVHQ8BAf8EBAMC
# AYYweQYIKwYBBQUHAQEEbTBrMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
# Y2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNv
# bS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwRQYDVR0fBD4wPDA6oDigNoY0
# aHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENB
# LmNybDARBgNVHSAECjAIMAYGBFUdIAAwDQYJKoZIhvcNAQEMBQADggEBAHCgv0Nc
# Vec4X6CjdBs9thbX979XB72arKGHLOyFXqkauyL4hxppVCLtpIh3bb0aFPQTSnov
# Lbc47/T/gLn4offyct4kvFIDyE7QKt76LVbP+fT3rDB6mouyXtTP0UNEm0Mh65Zy
# oUi0mcudT6cGAxN3J0TU53/oWajwvy8LpunyNDzs9wPHh6jSTEAZNUZqaVSwuKFW
# juyk1T3osdz9HNj0d1pcVIxv76FQPfx2CWiEn2/K2yCNNWAcAgPLILCsWKAOQGPF
# mCLBsln1VWvPJ6tsds5vIy30fnFqI2si/xK4VC0nftg62fC2h5b9W9FcrBjDTZ9z
# twGpn1eqXijiuZQwggW8MIIDpKADAgECAgEfMA0GCSqGSIb3DQEBCwUAMGYxCzAJ
# BgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAKBgNVBAcTA01vbDEPMA0G
# A1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJQ1Qg
# Q0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAwWjBPMSEwHwYDVQQDExhW
# YW5kZW5icm91Y2tlIEx1YyBDUzIwMjExKjAoBgkqhkiG9w0BCQEWG2x1Yy52YW5k
# ZW5icm91Y2tlQHNja2Nlbi5iZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
# ggEBAPRbMPSAdMsURs6M9TChuXZWe1LSQlVXYVHPGRlnQeF719tgHS1Ern70aW0P
# uvCECkzUTbGHw3o+bF+vj1UZWw82oOEZGannAoTyG1CIxdOMc85Mdmy+Kb++9Ivx
# a6i4ahfpNDHE0F58TomaNyDY0dtRUDEMZw/A0AMkFmdg9BOnqrYeeLB0O/86ZkzU
# klRifi/Wa3ti1LV4U7fR6S4bMm7dZBh46IU2G3/oBdlNYAtC3DNol+bnrcBvF+cc
# GwG5kVxEZg8TtpEMj00hnI+rNPjI4Ar6mE83XKak1X5/xddZppx9ldJaiVujyOqy
# 0cONhiN/vsWPdZU37LQbG1OydGUCAwEAAaOCAYowggGGMAkGA1UdEwQCMAAwHQYD
# VR0OBBYEFN+1bIhLi6eWlLbzynleh97QuIFlMB8GA1UdIwQYMBaAFPApFPVqIRSS
# VlQTpD3VrfAhOsV4MAsGA1UdDwQEAwIHgDAfBgNVHSUEGDAWBggrBgEFBQcDAwYK
# KwYBBAGCNwIBFTA6BgNVHREEMzAxgRtsdWMudmFuZGVuYnJvdWNrZUBzY2tjZW4u
# YmWBEmx2YW5kZW5iQHNja2Nlbi5iZTA1BgNVHRIELjAshipodHRwOi8vY3JsLnNj
# a2Nlbi5iZS9TQ0tDRU4lMjBJQ1QlMjBDQS5jcnQwOwYDVR0fBDQwMjAwoC6gLIYq
# aHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIwSUNUJTIwQ0EuY3JsMD4GCSsG
# AQQBgjcVBwQxMC8GJysGAQQBgjcVCISMvCGCyP13gqGTIoSXlEaExpIugQGC1IQh
# gfrIaQIBZAIBCDAbBgkrBgEEAYI3FQoEDjAMMAoGCCsGAQUFBwMDMA0GCSqGSIb3
# DQEBCwUAA4ICAQBGH87fu9sNbcCPVQCdJ9jP4jT59WTZm6s5BquO10UL9i7UAEmd
# d0yfCHW3myNUigR6O+Oc6Wa74HbUhAk+nEimHxzP5KcNnKE6lwqsIOf49J5G+2HR
# mTgW9tewsr39ZiB3NE5s04fHEA0I45zs8wsgyp4Mlr5v3AfzYB7gxh0Hxdm+ion7
# PXvbKhAyI3F7pQTYauilmLAkHnoXD6T+Osp04wR9m1+HNGqLMKYyVOSdu0UnmGuq
# HBxpMD7hAJ8LCi5yR6t6s4BNCczwhzUpo6ZgrtLmKCacDmZ6SJMqsGFwan/GxnLS
# vw5QpVXUVJidDfTflMeJrfWhDOEt7jx9oQWQ249uzxlqJMVfBt1YZDq4gr76yjK6
# VY7F6540ECog4auPte4NoiT5UPdE3QHSD/82/cdLoVuhELR4p4bfJ7PONT7x8iZz
# I8BoASh9SKJBh06mcmyJosOkc77Wv3ykqal7R+/LQi9geJwku6Ti0XIy9UFGBbUD
# 4m18e5cKdqDzyIHwAne0JR0ZEILPzITWviFuSXKqGP0bkSbGgpl+LuaCHcKAv+1F
# QBc2oWW0yPdxCUYpwo9QfTTh0qYXABQAbibOw7VKTnRLsS92m9pb6wn9tYyNfMu6
# r7EXCuxJNDbYpKbxeadfY0arCzlOT6mpC6lzBqfgKyN+VWoy9rmdzhjEjjCCBnIw
# ggRaoAMCAQICEzgAAAACbukOrXYB5dcAAAAAAAIwDQYJKoZIhvcNAQELBQAwZzEL
# MAkGA1UEBhMCQkUxEjAQBgNVBAgTCUFudHdlcnBlbjEMMAoGA1UEBxMDTW9sMQ8w
# DQYDVQQKEwZTQ0tDRU4xDDAKBgNVBAsTA0lDVDEXMBUGA1UEAxMOU0NLQ0VOIFJv
# b3QgQ0EwHhcNMTcwNjIzMTEzOTM0WhcNMzIwNjIzMTE0OTM0WjBmMQswCQYDVQQG
# EwJCRTESMBAGA1UECBMJQW50d2VycGVuMQwwCgYDVQQHEwNNb2wxDzANBgNVBAoT
# BlNDS0NFTjEMMAoGA1UECxMDSUNUMRYwFAYDVQQDEw1TQ0tDRU4gSUNUIENBMIIC
# IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsW1uJ8gCKQwjdhAhr6eJJNXw
# +wffi5p2RB48uzTaQh2Y89P+75NFhk7qeOW0tVwacxYkubMvgNqasA9RslymREsx
# LfloMCidRPSQj8o0KE2cfLYojYre1TChFxc0PZobibZ7BTsU2v75GQjnsEEMmxzw
# JLAjSU2mFVKJKjrKs4Xt/q6j3w0fdrRz0ba8zSMbTHO2K8Cd1Rq3GQDLPythJyDx
# zo6YRE7TFOFcXGrIpFXvmy1XPc/ItiHwTocOmQ1msF+46W0gfWtbFLt8bC/CnuE2
# ZQPnAmpq3lOUu8cOq/2eqhihAeAli5McYepaK+qr1JtLNfgTSkkFFw27c5cPXwFC
# CE0ryJdN+qN4Xdk3J2iz0hayEJ4sGaimdJTXv/OTmSxxKGMnPYV+BTvk/PDJnGjW
# QqOryf0PWgmwVQ1KAowaPjBAXJOEotzNnzW0/FKtvgJYLk3xFs3sJJ6EG6D02wB2
# RNszNGM66tyqqx/Z3651xwzgkYYR1ETdmddcqL6/3a+HifS5K99N+q7rX/Rp31AU
# lNsb53xhh43NWUAg5Tzrb9J54mBR6Z/MafmTVHcK2nK6RRYaUfxs/WuE2+OzX7Md
# G/URi1lVuOu7hp7AKnSjcLnOcBG7lkSK1Q1pCuACYMkvCl+7keio376akUfumX3H
# qEVgK8ttZiRgiVHR7Q0CAwEAAaOCARYwggESMBAGCSsGAQQBgjcVAQQDAgEAMB0G
# A1UdDgQWBBTwKRT1aiEUklZUE6Q91a3wITrFeDAZBgkrBgEEAYI3FAIEDB4KAFMA
# dQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAW
# gBRSvxsquCggUTGvI6e+I5TG0fkUMDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8v
# Y3JsLnNja2Nlbi5iZS9TQ0tDRU4lMjBSb290JTIwQ0EuY3JsMEcGCCsGAQUFBwEB
# BDswOTA3BggrBgEFBQcwAoYraHR0cDovL2NybC5zY2tjZW4uYmUvU0NLQ0VOJTIw
# Um9vdCUyMENBLmNydDANBgkqhkiG9w0BAQsFAAOCAgEAhsQ1eNAeFzKKGY9KW0VM
# GrLUbtccjHoeKlGdVn+yhS9xhSaIFgm00IPVO5zh9jKtgCA3o81TqY0w1WoRK1U8
# t89On5RZYVy39pDyu+oBlHgul9KOuJbIKLgh0VgEPvY3vM0h0bLdxIrnlIxchVxg
# s5y/h/wLKmXLjsg+AuYzsJ4+9GAD5SsdFGp2jiKPf9aw6zG67an2yTqtvPfeoRpk
# MWO+Mx39CWWwfU3MaQySlAx0/JzZcqWzk6QFgN1h89wSBHD0mMFdnahEth5y9QhP
# kLydPniibF5VZ59gbUVlpFFz8VddmBtx9xfe5aIYEjkj35HmEW/FN7qwnJP3dClj
# zFiqSueKqiFIN3punjHbMUoAxJnibx11Xz4pFm5mdk8v95r+sncH8SFK/P5nUjjE
# YIBRInZiovl7C8KfI1RD9lXJDPdw5yVfkCpkCr/rYNNMBHfDYZ+G1NEu9WzE2Nrk
# nC4H4qoNJLmMjVPTswcIT780iOvFZRf1ql+0e2TKUHCOkZ+plXtl3H6MimrNk6B/
# ZQAy4mETNH6ceaoudV7X5Y7HzbTwSXCSw6GCiQMdYXgsFp+lioorEmFZhVc2PTs+
# oUXbMi8IUaCyKEm6tMZHJ+PGU1YBE8Szyj5nI1SUhb+aHunRGlhgXPb4bnEdZVaM
# ruxFM0UbriGwmkOEv9cPVpAwgga0MIIEnKADAgECAhANx6xXBf8hmS5AQyIMOkmG
# MA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2Vy
# dCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xITAfBgNVBAMTGERpZ2lD
# ZXJ0IFRydXN0ZWQgUm9vdCBHNDAeFw0yNTA1MDcwMDAwMDBaFw0zODAxMTQyMzU5
# NTlaMGkxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjFBMD8G
# A1UEAxM4RGlnaUNlcnQgVHJ1c3RlZCBHNCBUaW1lU3RhbXBpbmcgUlNBNDA5NiBT
# SEEyNTYgMjAyNSBDQTEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC0
# eDHTCphBcr48RsAcrHXbo0ZodLRRF51NrY0NlLWZloMsVO1DahGPNRcybEKq+Ruw
# OnPhof6pvF4uGjwjqNjfEvUi6wuim5bap+0lgloM2zX4kftn5B1IpYzTqpyFQ/4B
# t0mAxAHeHYNnQxqXmRinvuNgxVBdJkf77S2uPoCj7GH8BLuxBG5AvftBdsOECS1U
# kxBvMgEdgkFiDNYiOTx4OtiFcMSkqTtF2hfQz3zQSku2Ws3IfDReb6e3mmdglTca
# arps0wjUjsZvkgFkriK9tUKJm/s80FiocSk1VYLZlDwFt+cVFBURJg6zMUjZa/zb
# CclF83bRVFLeGkuAhHiGPMvSGmhgaTzVyhYn4p0+8y9oHRaQT/aofEnS5xLrfxnG
# pTXiUOeSLsJygoLPp66bkDX1ZlAeSpQl92QOMeRxykvq6gbylsXQskBBBnGy3tW/
# AMOMCZIVNSaz7BX8VtYGqLt9MmeOreGPRdtBx3yGOP+rx3rKWDEJlIqLXvJWnY0v
# 5ydPpOjL6s36czwzsucuoKs7Yk/ehb//Wx+5kMqIMRvUBDx6z1ev+7psNOdgJMoi
# wOrUG2ZdSoQbU2rMkpLiQ6bGRinZbI4OLu9BMIFm1UUl9VnePs6BaaeEWvjJSjNm
# 2qA+sdFUeEY0qVjPKOWug/G6X5uAiynM7Bu2ayBjUwIDAQABo4IBXTCCAVkwEgYD
# VR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU729TSunkBnx6yuKQVvYv1Ensy04w
# HwYDVR0jBBgwFoAU7NfjgtJxXWRM3y5nP+e6mK4cD08wDgYDVR0PAQH/BAQDAgGG
# MBMGA1UdJQQMMAoGCCsGAQUFBwMIMHcGCCsGAQUFBwEBBGswaTAkBggrBgEFBQcw
# AYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEEGCCsGAQUFBzAChjVodHRwOi8v
# Y2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkUm9vdEc0LmNydDBD
# BgNVHR8EPDA6MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNl
# cnRUcnVzdGVkUm9vdEc0LmNybDAgBgNVHSAEGTAXMAgGBmeBDAEEAjALBglghkgB
# hv1sBwEwDQYJKoZIhvcNAQELBQADggIBABfO+xaAHP4HPRF2cTC9vgvItTSmf83Q
# h8WIGjB/T8ObXAZz8OjuhUxjaaFdleMM0lBryPTQM2qEJPe36zwbSI/mS83afsl3
# YTj+IQhQE7jU/kXjjytJgnn0hvrV6hqWGd3rLAUt6vJy9lMDPjTLxLgXf9r5nWMQ
# wr8Myb9rEVKChHyfpzee5kH0F8HABBgr0UdqirZ7bowe9Vj2AIMD8liyrukZ2iA/
# wdG2th9y1IsA0QF8dTXqvcnTmpfeQh35k5zOCPmSNq1UH410ANVko43+Cdmu4y81
# hjajV/gxdEkMx1NKU4uHQcKfZxAvBAKqMVuqte69M9J6A47OvgRaPs+2ykgcGV00
# TYr2Lr3ty9qIijanrUR3anzEwlvzZiiyfTPjLbnFRsjsYg39OlV8cipDoq7+qNNj
# qFzeGxcytL5TTLL4ZaoBdqbhOhZ3ZRDUphPvSRmMThi0vw9vODRzW6AxnJll38F0
# cuJG7uEBYTptMSbhdhGQDpOXgpIUsWTjd6xpR6oaQf/DJbg3s6KCLPAlZ66RzIg9
# sC+NJpud/v4+7RWsWCiKi9EOLLHfMR2ZyJ/+xhCx9yHbxtl5TPau1j/1MIDpMPx0
# LckTetiSuEtQvLsNz3Qbp7wGWqbIiOWCnb5WqxL3/BAPvIXKUjPSxyZsq8WhbaM2
# tszWkPZPubdcMIIG7TCCBNWgAwIBAgIQCE/cM09+RU7bww+P+ZIYNTANBgkqhkiG
# 9w0BAQsFADBpMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4x
# QTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGltZVN0YW1waW5nIFJTQTQw
# OTYgU0hBMjU2IDIwMjUgQ0ExMB4XDTI2MDgwNTAwMDAwMFoXDTM3MTEwNDIzNTk1
# OVowYzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMTswOQYD
# VQQDEzJEaWdpQ2VydCBTSEEyNTYgUlNBNDA5NiBUaW1lc3RhbXAgUmVzcG9uZGVy
# IDIwMjYgMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALZ7pvLJ/s1K
# +NSbTGWz/TjGMPh8CQ6RucZCLv5anHzWJjF/NWJrFIhy24fcpKXlgRiky4WAawDf
# U3YP0BMxt9l3Dm5oCG5Z69AqEN1kgHg2epx+l+lZBcmJCcN0ASURML5uFIS80sZs
# DwO3BSkUxDjLJhBI+qiZP3aixAC/qEGLjsBNlLol9VZ7pfGEXiMlneJIC5/YKuiz
# VzNFKZZEeoy/0B8Zm+nzKBgSWG52lCO1w+nCg6XpCtklTJXeIg283hw7TmmsZXR+
# SMbjbrEOvZ3fP2VxIgeR28Y90ZStd3F9VuA5RVynb/whITPAo9b75Zr4Ta6Mj3UR
# m26QZYMn/FnbuTegcoRcFEZ9FOqM5T6MTdtr/n74lIT/ug0eeOzmZ6QTFg33otX+
# bFRsIolvykE1jive4PuESaT8zzVeFWDAMDtozNgLctkGD1ZjkEyZtJrLl5ya0m5d
# oH/ScpaZCZVl6pNUOCybMc/kxC6EAmSJY24L0yYKD1Nkddsnb/ItVKi/2nXpQNMu
# 1PT5prW83vV8d67WowuUs0HdY4H8AMLGvdL/WHEj3ZnqMqAQQP9u3Ai9t+5eQ02G
# Dwy0ODjdzi0xlp70W+ow63/0++YDEX1M0iwgUHwbrJvfpklkZQvw3+kv3vUPItdw
# roczk9icflf55W1zOEKAcJVAIXpcMCU9AgMBAAGjggGVMIIBkTAMBgNVHRMBAf8E
# AjAAMB0GA1UdDgQWBBQUyWOKMC7USvtulPPm40B+9ezN4jAfBgNVHSMEGDAWgBTv
# b1NK6eQGfHrK4pBW9i/USezLTjAOBgNVHQ8BAf8EBAMCB4AwFgYDVR0lAQH/BAww
# CgYIKwYBBQUHAwgwgZUGCCsGAQUFBwEBBIGIMIGFMCQGCCsGAQUFBzABhhhodHRw
# Oi8vb2NzcC5kaWdpY2VydC5jb20wXQYIKwYBBQUHMAKGUWh0dHA6Ly9jYWNlcnRz
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQw
# OTZTSEEyNTYyMDI1Q0ExLmNydDBfBgNVHR8EWDBWMFSgUqBQhk5odHRwOi8vY3Js
# My5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRUaW1lU3RhbXBpbmdSU0E0
# MDk2U0hBMjU2MjAyNUNBMS5jcmwwIAYDVR0gBBkwFzAIBgZngQwBBAIwCwYJYIZI
# AYb9bAcBMA0GCSqGSIb3DQEBCwUAA4ICAQCNxTphHp1SCt+ZrAmAfn0oQLFr0mLy
# wSLaDXQIENoyKqxrFbJblzCVP/pkXmwXOdrOpWygLzlT12os5ipDCy35RBCg2UMe
# ApEtrfGhz45F4Wt4WGdNdIbRWt3YTYJmpR+b7lr4d7Uwn+H600u4D7RnOGf8Wj4U
# NgAdZkfHhHv1mx9EVh71SJelcEN/oORSjXzdjfw1iZH9d8Nh/thn6hH23d+VsPAr
# 6GAYyzSA02nXD1nYLI7Ijmiv+xLCiYC41DSFYL3GhTiy0PxpawPtGRyaBVGzq+Ui
# TfM8pD7KVyF5aQyWP4KhVGUUTnmm/RlYJoW3TiXA/+t0YcT2oRVBm3JETjajHug2
# AL+v5jhtKVnd3D0rbHXEu27o+Q8p4sEWPMqKDB+qbceb6T/6WcwTwXmQ9lOCLLYc
# sQeSWmvKqzpAec9etE14jOQAzLKWdE3w/TCaKtLRaRT7LCkRYVnhA2D73FLje1O5
# b3HR5eHs0NzU/+xX7NbEdcofy0W3Wdwd1XOqtlpg/JgwtKfZM5dqO94lbUveOiJB
# I+xZEbGRsMNbXmMREUTgu+Oca7Y73MPWcslIx2VhkSKSXjDbD6rgg39H5Mh7Qfie
# AIjWagkJNt68Yfim6cjEzVSiLSeZfdkr5dtFPTW6jATlWJdYeeDRGCyatf8R1hSj
# zSvdN8yWQPT9gzGCBT4wggU6AgEBMGswZjELMAkGA1UEBhMCQkUxEjAQBgNVBAgT
# CUFudHdlcnBlbjEMMAoGA1UEBxMDTW9sMQ8wDQYDVQQKEwZTQ0tDRU4xDDAKBgNV
# BAsTA0lDVDEWMBQGA1UEAxMNU0NLQ0VOIElDVCBDQQIBHzANBglghkgBZQMEAgEF
# AKB8MBAGCisGAQQBgjcCAQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE
# MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCDO
# 2uEOWQoF0fESIOuAiFiZBQOKmyktSinlDs6IfNtd6jANBgkqhkiG9w0BAQEFAASC
# AQA7Pt7woRtSv0v219CHqXZbKPXYXwi1nk7zT2JaT1fmjGRRGRRkQJTIVsfP3/VY
# fNL2BBvc6Rtxi9Y6bnXmxTD7ofwOaCLEqH7gzPOegGQfa63GL/ZAX7sMefOA0kEo
# 3ZUUQSniZdoqmdEK/HQ62+zIOcPxCZXbyzqGK0txxMXrPwGB8AM1Oj8zVq5VvD0A
# 8LNFZivP/UPKMLD0m+9N/OfRl0IN2lORPlxFo2hKwvspTsb6Ylgkhqal54r/GJ5H
# H4H8DFUyB8PF/hOOuyErURBHNS+JfmKSH0/FOMfBA5aidEGMhR8ttvIAQHxkZBIO
# NGELAATu7i1j20WGcbq+B/RooYIDJjCCAyIGCSqGSIb3DQEJBjGCAxMwggMPAgEB
# MH0waTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYD
# VQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNI
# QTI1NiAyMDI1IENBMQIQCE/cM09+RU7bww+P+ZIYNTANBglghkgBZQMEAgEFAKBp
# MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTI2MDky
# MjE0MDIyN1owLwYJKoZIhvcNAQkEMSIEIE5dZy3wnK/XRlS9p0rzjwjCPCk6XRvo
# +WyjDjoogwBRMA0GCSqGSIb3DQEBAQUABIICAJ4IijgPxLPGggt8vNj+OWekFaxk
# 0k7A58LQ4B53AxxoiRjdrK1FhuLmeFlWojqdlFTLXF3hZh9sG/4h53/HkObev5Ra
# FMGF9J3Z0th1/03ZexPMMGnWZbnvkH2Exsu6An/V/ecwf0U08zCeoRAW2Fq/JyD2
# OwK2RR8SmycjyHFFHK2/fe6h+B40uahHivWOC0zL9Su82b+hrxi+/hfyKTt0unmq
# Y/E3vLEvkd1jCOLPq7AaEG8v5zzvQD5wZU0YvPmOVZCzy3LRt9oczHyKDlnYTau9
# Gp5oXPzXYVGBLgcMRMd0qwVkc6sz6KJjuwbk02+ZKx+sqqNHqveysGBKr9yhxQtS
# dD+mtl4v6VPDmB74+Dt7WeLxwYS3uTASaPtnlq6EIXjfgkodg+yAv8MvpB76PP3B
# G/9MR8BXaziravkliio89CO6rCK1QSh00v6ov10W62ywliaG8ZKRw68TSUL33ZD0
# 1+8/hqb1cKIZjtpEKb7xaQ29G03ewaVMmGmvdbTS1UMiNAV0a6wmhB6r1d8hTj5a
# bsbfWq2u41nRiqfF6GXksYwG4TubmUKDhn15lbBnqthwRMGvNRFrp7ZbejSY9OtA
# Xjoby83C1IPzshzEjNy3+Nk1VZFJN5+qG2fhnoI5FvuU7AisH2dKH4fqKRKULj1D
# O69rsXGMnFMRNWx7
# SIG # End signature block

View file

@ -331,17 +331,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTE2MTQyNzEyWjAvBgkqhkiG9w0BCQQxIgQgAN9v
# BgkqhkiG9w0BCQUxDxcNMjYwOTIyMTMzNTMwWjAvBgkqhkiG9w0BCQQxIgQgAN9v
# kOJtz07EFlsqOf+NilmfH65NiagnciBjzDO0bX8wDQYJKoZIhvcNAQEBBQAEggIA
# D8jFSKvLYg3Q3R9nsyvywg6U3eBbCe7gTGQQcip4teHs90jyXhu9FU8A+gU5YkhK
# z07xPLYbtjB920UZyuoB1CJ7Z3UOqJrFEubift4/ru9NNczGW9Fgf4u3r4cN23c+
# AmpFnFaLu0zW6MVNp/ySh5zuwJhQbv+BoHtMTlziYz6dQuV33dblCs2mkteopba/
# RxQ7Mjg4T+FgTxdT++KFTS87Dc2I3l5kgRSLFEBGD/vclTmZ5O5+HFDJWI/6Mht9
# XL4j7zII6Y0NGM7wh8f7enxmrZixWrSZymJH5BwGyxwk2GSA4YwGKhqXCz4Gx+i+
# y+S083i7Van+kwBHozFLbR1gx0XVhJUhcnSnm7D+d7ke2sV6KeKK6TFS+oqBDsHE
# f0aO/p3vCnOqj+lpAC3RgMPbO/0cJPdl4wzjPPnrU/lu1Arp3vasvIEYKI1uq7iw
# 8ev5S5VAlYPt8DyINr2TsXzcNqPWFNx5QPh4UazJ7qVlW4+kMDahcbFqvZSQxwTx
# ThufJq4gkhPyirIBq0b8yALRt8e42g/F+lt1Xg/QUp8JXkQHrANFSHWhqW96hb9V
# f3X9aNpyYpnZxmHAh2Kt/n92V+UVa8HYWmlZbv1YmjGpm8jEL+3VISPnFolxh0s2
# t0cRhc0jUGfQWnO7mWke2oUQIFbJidphIzaUsXV7u64=
# pFDakdUbDWvw/XyFk16GbCdy1Gq2J2M1PME1qvxP7RWQrkJXd5xOF0LlIjEzTBtf
# 5sayIfoxIKrddgSPT1/HoNbXn71Zz9ZC167ohRBv420XmIgRP3POg2B3P4Z+7+ag
# h3GVpdkcizt1hTcpRPwwx24mDpadHTy2l/+LRJFJr6OlzrbIAI0VKNIjd/gymoxf
# dfoid6G+6+4WXhauT8kwukDEsEQZQcKiqy5d9hWmboNcs0qqYbx432G0oKR0ToDk
# 6dgmSfDdF8rzV/n+qqVmO0AEz6bNLXnMu7z77okwY/+WrBZg4HlS/29WcJf+hT24
# 9LsNhaMYmlzeIqoTTNrZPPwGU7drdFboD7j0972GynXnSoLn1aqDceXpeKVQXQJD
# BJYEtJ1H/+usuDcXkcF7beZHkT7HKNY3g2mf7BteTrt6iQ7rRWHHuk+omDkXATvo
# 2U0K/CcVq46BYHnw14cC6oMAq7NcFBK7TqP21ySuaMmSaeXRqfr5AupTK95rMzxE
# tRL0U+jPXaz23o7gRwAX9Bm9ZSGxOR6PQst18W/hskXxAa/N1fY9QH5Ye1x5Mtuk
# rW1R71x8EEwsnmgRFIV6otnIMrV4EqYyClZj8JqPDh9mTGKb4djejL7+fcIRLpO6
# oDNW+zqv/Oejk9lNXCr9ebBY4kTWWU/bTeGsT6OcFf8=
# SIG # End signature block

View file

@ -193,17 +193,17 @@ exit
# RGlnaUNlcnQsIEluYy4xQTA/BgNVBAMTOERpZ2lDZXJ0IFRydXN0ZWQgRzQgVGlt
# ZVN0YW1waW5nIFJTQTQwOTYgU0hBMjU2IDIwMjUgQ0ExAhAIT9wzT35FTtvDD4/5
# khg1MA0GCWCGSAFlAwQCAQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
# BgkqhkiG9w0BCQUxDxcNMjYwOTE2MTQyNzEyWjAvBgkqhkiG9w0BCQQxIgQg6Tgk
# BgkqhkiG9w0BCQUxDxcNMjYwOTIyMTMzNTMwWjAvBgkqhkiG9w0BCQQxIgQg6Tgk
# d9vgRJTrKaa/aNqr0ugqtMxl17/Df7q35ywcJSEwDQYJKoZIhvcNAQEBBQAEggIA
# XvbCqSxyXV7COUlpN6awyQ150/PR3uPzeV9U+eXAtl7zHsHKXAi3VIfrN0KyI+sE
# 7j9aioka8cAI6kwPZ4uZKqsaXctQsZy2CXQueERQornq38/a5LcHZs2d02IVjam+
# XXxKF633rdZ2xlKTSsyzAbeoIe2+Xld8ONWPq3fbEsA2OkuqhCujMSS1PEjm97iV
# h03A8WYQnAq96myZkjfoCBV3WPZg39DBJFp8cAHKyXnmZ4bgSbZQdn3RUzlm7pEz
# SONYib+vkksWBdpbWc43qUlY0Sk1iMcycFBp867pvzvs/n/2LyW1wFsvWGLlQqDG
# g4oTqLjKCjenZDS3l7IaY/6ff2dwLrGziUMN6rFktQNjZWp25cplKQ/XmZiUjP81
# i3xBQBXcpcsxlq/AnUSTp3j1Zoh279arBNR80APZPQiY0XV+qhmCTiSto5o24K+j
# eTgZL3D4EyDd8XOFqkUf9ShedByrRdZ7lxqaTAucgeOFUhxfFlndafpCsMCZet0r
# zWUHQY8NRI9Vur+veS7Tr6CAdPcz8g3bzVyHTpTBQIUcUVIfpRSFxFQrtTetK6Q6
# 6IjCe+FJc4xCx4Q169LGaQTe2YS4VK1+wAThyfzFir0Dfd11AqxGnzOkXuagr7y6
# pgv29LStWENt6NC0CtaHEuHh6k/F7xEn8DmOiE5SS78=
# Pcr4Jsz/Ihlf4WtCHHbEmNJc53rYvJxkB+Pevp4jzcBH3HLCS+0RneFt3VUqMw4v
# yWTnJSJhsi2OTiMj7SJ/Qq/3dieaX2sV76+MjRupoEm0fIPkh3cZ7tvJpHNstnSo
# KMtDrnvl6dGJLeUzHpzbjn6oujcCLvY2mFjG839VC71ZW45aIZ8B5R278IKxDTzs
# t0e4yQJqWH7Jb/iyJD73oEfm/0Yl40QWPYE/tR+cOtUqvH7ZdH2TJ2XZLWAwPiKF
# rp5p6npMM3v1o8OywGC5Vjxvl1cvJnvJh2SDwr0PADn33LJJHgTWhEm+oyO2yQOX
# bxBJW6gRJRBOocqasbElGggUQT+xfWv1BnFfqcbVrlnWeLcv2BFPA+5YGLo9RZcB
# 7hCBg5D5DTlY4GnMnAySgx5547S1w5sJv9TSSG5uq0VfetUcYt0wC8GcJeyJU4mX
# 14TpSqUdvt2Si7wCAsJjCap7AGuicuRBXSwKqFGOQu2rB3RuuEYtYhFz7XzpfUrF
# QMnEZqMccIPyBH2IvFZwZkjUA74hUYif8bauioZYQHby+xySdFX6gCBbbmeMC1Eo
# 7O9YadVoq4oEzGPdGiMGR4xnrvp+f/uBvZAq4mYEvYtGli0nZKNPQzdD2q8ZFb25
# zfyXMb3zOXU+NebhqaquOo3EuYQ9WsphojF9UO9HC88=
# SIG # End signature block