using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
public class Test
{
private static string DCDAIG_START_STRING = @"テストを開始しています";
private static string LDAP_ERROR_STRING1 = @"失敗";
public static void Main()
{
// your code goes here
if(CheckDC())
{
Console.WriteLine(@"Success");
}else{
Console.WriteLine(@"Error!");
}
}
public static bool CheckDC()
{
// 除外するテストを取得
string[] exclutionTest = {@"DFSREvent", @"Replications"} ;
// コマンド実行
string resultString = @"ディレクトリ サーバー診断\n\n\n初期セットアップを実行しています:\n\n ホーム サーバーの検索を試みています.\n\n ホーム サーバー = ldap-server1\n\n * AD フォレストが識別されました。 \n 初期情報の収集が完了しました。\n\n\n必須の初期テストを実行しています\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER1\n\n テストを開始しています: Connectivity\n\n . LDAP-SERVER1 はテスト Connectivity に合格しました\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER2\n\n テストを開始しています: Connectivity\n\n . LDAP-SERVER2 はテスト Connectivity に合格しました\n\n\n\nプライマリ テストを実行しています\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER1\n\n テストを開始しています: Advertising\n\n . LDAP-SERVER1 はテスト Advertising に合格しました\n\n テストを開始しています: FrsEvent\n\n . LDAP-SERVER1 はテスト FrsEvent に合格しました\n\n テストを開始しています: DFSREvent\n\n . LDAP-SERVER1 はテスト DFSREvent に合格しました\n\n テストを開始しています: SysVolCheck\n\n . LDAP-SERVER1 はテスト SysVolCheck に合格しました\n\n テストを開始しています: KccEvent\n\n 警告イベントが発生しました。イベント ID: 0x80000603\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n Active Directory ドメイン サービスは、次のハード ディスク上の、ソフトウェア ベースのディスク書き込みキャッシュを無効にできませんでした。 \n\n\n 警告イベントが発生しました。イベント ID: 0x80000B46\n\n 生成日時: 01/19/2015 09:48:31\n\n イベント文字列:\n\n このディレクトリ サーバーのセキュリティは、署名 (整合性の確認) を要求しない SASL (ネゴシエート、Kerberos、NTLM または ダイジェスト) LDAP バインド、およびクリア テキスト (SSL/TLS 暗号化がされていない) 接続上で実行される LDAP 簡易 バインドを拒否するようサーバーを設定することで、大幅に強化することができます。これらのバインドを使用する クライアントが 1 つもない場合でも、拒否するようにサーバーを構成することで、サーバーのセキュリティが強化されます。 \n\n\n . LDAP-SERVER1 はテスト KccEvent に合格しました\n\n テストを開始しています: KnowsOfRoleHolders\n\n . LDAP-SERVER1 はテスト KnowsOfRoleHolders に合格しました\n\n テストを開始しています: MachineAccount\n\n . LDAP-SERVER1 はテスト MachineAccount に合格しました\n\n テストを開始しています: NCSecDesc\n\n . LDAP-SERVER1 はテスト NCSecDesc に合格しました\n\n テストを開始しています: NetLogons\n\n . LDAP-SERVER1 はテスト NetLogons に合格しました\n\n テストを開始しています: ObjectsReplicated\n\n . LDAP-SERVER1 はテスト ObjectsReplicated に合格しました\n\n テストを開始しています: Replications\n\n . LDAP-SERVER1 はテスト Replications に合格しました\n\n テストを開始しています: RidManager\n\n . LDAP-SERVER1 はテスト RidManager に合格しました\n\n テストを開始しています: Services\n\n . LDAP-SERVER1 はテスト Services に合格しました\n\n テストを開始しています: SystemLog\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:46:12\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x80040020\n\n 生成日時: 01/19/2015 09:48:29\n\n イベント文字列:\n\n ドライバーは、デバイス DeviceHarddisk0DR0 の書き込みキャッシュが有効であることを検出しました。 データが壊れる可能性があります。\n\n 警告イベントが発生しました。イベント ID: 0x8000001D\n\n 生成日時: 01/19/2015 09:48:32\n\n イベント文字列:\n\n スマート カード ログオンに使用できる適切な証明書をキー配布センター (KDC) が検出できなかったか、KDC 証明書を確認できませんでした。この問題が解決しない場合、スマート カード ログオンが正しく機能しない可能性があります。この問題を解決するには、certutil.exe を使用して既存の KDC 証明書を確認するか、新しい KDC 証明書を登録してください。\n\n 警告イベントが発生しました。イベント ID: 0x00001695\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n DNS ドメイン 'ifax.ytc.local.' に関連付けられた、1 つ以上の DNS レコードの動的な登録または 削除に失敗しました。これらのレコードは、他のコンピューターがこのサーバーを ドメイン コントローラー (指定されたドメインが Active Directory ドメインである場合) または LDAP サーバー (指定されたドメインがアプリケーション パーティションである 場合) として検出するのに使用されます。 \n\n\n 警告イベントが発生しました。イベント ID: 0x00001695\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n DNS ドメイン 'DomainDnsZones.ifax.ytc.local.' に関連付けられた、1 つ以上の DNS レコードの動的な登録または 削除に失敗しました。これらのレコードは、他のコンピューターがこのサーバーを ドメイン コントローラー (指定されたドメインが Active Directory ドメインである場合) または LDAP サーバー (指定されたドメインがアプリケーション パーティションである 場合) として検出するのに使用されます。 \n\n\n 警告イベントが発生しました。イベント ID: 0x000003F6\n\n 生成日時: 01/19/2015 09:49:03\n\n イベント文字列:\n\n 名前 _msdcs.ifax.ytc.local の名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。\n\n . LDAP-SERVER1 はテスト SystemLog に合格しました\n\n テストを開始しています: VerifyReferences\n\n . LDAP-SERVER1 はテスト VerifyReferences に合格しました\n\n \n サーバーをテストしています: Default-First-Site-NameLDAP-SERVER2\n\n テストを開始しています: Advertising\n\n . LDAP-SERVER2 はテスト Advertising に合格しました\n\n テストを開始しています: FrsEvent\n\n . LDAP-SERVER2 はテスト FrsEvent に合格しました\n\n テストを開始しています: DFSREvent\n\n SYSVOL の共有後、この 24 時間以内に発生した警告またはエラー イベントがあります。 SYSVOL\n\n レプリケーション失敗の問題があると、グループ ポリシーの問題が発生する場合 があります。 \n . LDAP-SERVER2 はテスト DFSREvent に失敗しました\n\n テストを開始しています: SysVolCheck\n\n . LDAP-SERVER2 はテスト SysVolCheck に合格しました\n\n テストを開始しています: KccEvent\n\n . LDAP-SERVER2 はテスト KccEvent に合格しました\n\n テストを開始しています: KnowsOfRoleHolders\n\n . LDAP-SERVER2 はテスト KnowsOfRoleHolders に合格しました\n\n テストを開始しています: MachineAccount\n\n . LDAP-SERVER2 はテスト MachineAccount に合格しました\n\n テストを開始しています: NCSecDesc\n\n . LDAP-SERVER2 はテスト NCSecDesc に合格しました\n\n テストを開始しています: NetLogons\n\n . LDAP-SERVER2 はテスト NetLogons に合格しました\n\n テストを開始しています: ObjectsReplicated\n\n . LDAP-SERVER2 はテスト ObjectsReplicated に合格しました\n\n テストを開始しています: Replications\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=ForestDnsZones,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1256):\n\n リモート システムは利用できません。ネットワークのトラブルシューティングについては、Windows ヘルプを参照してください。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=DomainDnsZones,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1256):\n\n リモート システムは利用できません。ネットワークのトラブルシューティングについては、Windows ヘルプを参照してください。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: CN=Schema,CN=Configuration,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 08:47:07 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: CN=Configuration,DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 09:43:34 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n [Replications Check、LDAP-SERVER2] 最近のレプリケーション試行は失敗しました:\n\n LDAP-SERVER1 から LDAP-SERVER2\n\n 名前付けコンテスト: DC=ifax,DC=ytc,DC=local\n\n レプリケーションでエラーが生成されました (1753):\n\n エンドポイント マッパーから使用できるエンドポイントはこれ以上ありません。\n\n 2015-01-19 09:47:07 でエラーが発生しました。\n\n 前回の成功は 2015-01-19 09:43:36 です。\n\n 前回の成功から、1 回エラーが発生しました。\n\n LDAP-SERVER1 上のディレクトリは起動またはシャットダウンの処理中のため\n\n 利用できません。\n\n ブート中にコンピューターがハングしていないことを確認してください。\n\n . LDAP-SERVER2 はテスト Replications に失敗しました\n\n テストを開始しています: RidManager\n\n . LDAP-SERVER2 はテスト RidManager に合格しました\n\n テストを開始しています: Services\n\n . LDAP-SERVER2 はテスト Services に合格しました\n\n テストを開始しています: SystemLog\n\n . LDAP-SERVER2 はテスト SystemLog に合格しました\n\n テストを開始しています: VerifyReferences\n\n . LDAP-SERVER2 はテスト VerifyReferences に合格しました\n\n \n \n \n パーティション テストを実行しています: ForestDnsZones\n\n テストを開始しています: CheckSDRefDom\n\n . ForestDnsZones はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . ForestDnsZones はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: DomainDnsZones\n\n テストを開始しています: CheckSDRefDom\n\n . DomainDnsZones はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . DomainDnsZones はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: Schema\n\n テストを開始しています: CheckSDRefDom\n\n . Schema はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . Schema はテスト CrossRefValidation に合格しました\n\n \n パーティション テストを実行しています: Configuration\n\n テストを開始しています: CheckSDRefDom\n\n . Configuration はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . Configuration はテスト CrossRefValidation\n\n に合格しました\n\n \n パーティション テストを実行しています: ifax\n\n テストを開始しています: CheckSDRefDom\n\n . ifax はテスト CheckSDRefDom に合格しました\n\n テストを開始しています: CrossRefValidation\n\n . ifax はテスト CrossRefValidation に合格しました\n\n \n エンタープライズ テストを実行しています: ifax.ytc.local\n\n テストを開始しています: LocatorCheck\n\n . ifax.ytc.local はテスト LocatorCheck に合格しました\n\n テストを開始しています: Intersite\n\n . ifax.ytc.local はテスト Intersite に合格しました";
List<string> stringList = new List<string>();
int sIndex = resultString.IndexOf(DCDAIG_START_STRING);
int eIndex = 0;
while (sIndex >= 0)
{
eIndex = resultString.IndexOf(DCDAIG_START_STRING, sIndex + DCDAIG_START_STRING.Length) - 1;
stringList.Add(resultString.Substring(sIndex, eIndex));
sIndex = eIndex + 1;
}
eIndex = resultString.Length - 1;
stringList.Add(resultString.Substring(sIndex, eIndex));
bool isResult = true;
foreach(string str in stringList)
{
string[] array = str.Split('\n');
bool isExclusion = false;
foreach(string search in exclutionTest)
{
if (array[array.Length - 1].IndexOf(search) != -1)
{
isExclusion = true;
break;
}
}
if (isExclusion)
{
continue;
}
if (array[array.Length - 1].IndexOf(LDAP_ERROR_STRING1) != -1)
{
isResult = false;
break;
}
}
return isResult;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5MaW5xOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCQoJcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIERDREFJR19TVEFSVF9TVFJJTkcgPSBAIuODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmSI7Cglwcml2YXRlIHN0YXRpYyBzdHJpbmcgTERBUF9FUlJPUl9TVFJJTkcxID0gQCLlpLHmlZciOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCWlmKENoZWNrREMoKSkKCQl7CgkJCUNvbnNvbGUuV3JpdGVMaW5lKEAiU3VjY2VzcyIpOwoJCX1lbHNlewoJCQlDb25zb2xlLldyaXRlTGluZShAIkVycm9yISIpOwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyBib29sIENoZWNrREMoKQoJewoJCS8vIOmZpOWkluOBmeOCi+ODhuOCueODiOOCkuWPluW+lwogICAgICAgIHN0cmluZ1tdIGV4Y2x1dGlvblRlc3QgPSB7QCJERlNSRXZlbnQiLCBAIlJlcGxpY2F0aW9ucyJ9IDsKICAgICAgICAKICAgICAgICAvLyDjgrPjg57jg7Pjg4nlrp/ooYwKICAgICAgICAKICAgICAgICBzdHJpbmcgcmVzdWx0U3RyaW5nID0gQCLjg4fjgqPjg6zjgq/jg4jjg6og44K144O844OQ44O86Ki65patXG5cblxu5Yid5pyf44K744OD44OI44Ki44OD44OX44KS5a6f6KGM44GX44Gm44GE44G+44GZOlxuXG4gICDjg5vjg7zjg6Ag44K144O844OQ44O844Gu5qSc57Si44KS6Kmm44G/44Gm44GE44G+44GZLlxuXG4gICDjg5vjg7zjg6Ag44K144O844OQ44O8ID0gbGRhcC1zZXJ2ZXIxXG5cbiAgICogQUQg44OV44Kp44Os44K544OI44GM6K2Y5Yil44GV44KM44G+44GX44Gf44CCIFxuICAg5Yid5pyf5oOF5aCx44Gu5Y+O6ZuG44GM5a6M5LqG44GX44G+44GX44Gf44CCXG5cblxu5b+F6aCI44Gu5Yid5pyf44OG44K544OI44KS5a6f6KGM44GX44Gm44GE44G+44GZXG5cbiAgIFxuICAg44K144O844OQ44O844KS44OG44K544OI44GX44Gm44GE44G+44GZOiBEZWZhdWx0LUZpcnN0LVNpdGUtTmFtZUxEQVAtU0VSVkVSMVxuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IENvbm5lY3Rpdml0eVxuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMSDjga/jg4bjgrnjg4ggQ29ubmVjdGl2aXR5IOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICBcbiAgIOOCteODvOODkOODvOOCkuODhuOCueODiOOBl+OBpuOBhOOBvuOBmTogRGVmYXVsdC1GaXJzdC1TaXRlLU5hbWVMREFQLVNFUlZFUjJcblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBDb25uZWN0aXZpdHlcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjIg44Gv44OG44K544OIIENvbm5lY3Rpdml0eSDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuXG5cbuODl+ODqeOCpOODnuODqiDjg4bjgrnjg4jjgpLlrp/ooYzjgZfjgabjgYTjgb7jgZlcblxuICAgXG4gICDjgrXjg7zjg5Djg7zjgpLjg4bjgrnjg4jjgZfjgabjgYTjgb7jgZk6IERlZmF1bHQtRmlyc3QtU2l0ZS1OYW1lTERBUC1TRVJWRVIxXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQWR2ZXJ0aXNpbmdcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIEFkdmVydGlzaW5nIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IEZyc0V2ZW50XG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIxIOOBr+ODhuOCueODiCBGcnNFdmVudCDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBERlNSRXZlbnRcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIERGU1JFdmVudCDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBTeXNWb2xDaGVja1xuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMSDjga/jg4bjgrnjg4ggU3lzVm9sQ2hlY2sg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogS2NjRXZlbnRcblxuICAgICAgICAg6K2m5ZGK44Kk44OZ44Oz44OI44GM55m655Sf44GX44G+44GX44Gf44CC44Kk44OZ44Oz44OIIElEOiAweDgwMDAwNjAzXG5cbiAgICAgICAgICAgIOeUn+aIkOaXpeaZgjogMDEvMTkvMjAxNSAgIDA5OjQ4OjI5XG5cbiAgICAgICAgICAgIOOCpOODmeODs+ODiOaWh+Wtl+WIlzpcblxuICAgICAgICAgICAgQWN0aXZlIERpcmVjdG9yeSDjg4njg6HjgqTjg7Mg44K144O844OT44K544Gv44CB5qyh44Gu44OP44O844OJIOODh+OCo+OCueOCr+S4iuOBruOAgeOCveODleODiOOCpuOCp+OCoiDjg5njg7zjgrnjga7jg4fjgqPjgrnjgq/mm7jjgY3ovrzjgb/jgq3jg6Pjg4Pjgrfjg6XjgpLnhKHlirnjgavjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIIgXG5cblxuICAgICAgICAg6K2m5ZGK44Kk44OZ44Oz44OI44GM55m655Sf44GX44G+44GX44Gf44CC44Kk44OZ44Oz44OIIElEOiAweDgwMDAwQjQ2XG5cbiAgICAgICAgICAgIOeUn+aIkOaXpeaZgjogMDEvMTkvMjAxNSAgIDA5OjQ4OjMxXG5cbiAgICAgICAgICAgIOOCpOODmeODs+ODiOaWh+Wtl+WIlzpcblxuICAgICAgICAgICAg44GT44Gu44OH44Kj44Os44Kv44OI44OqIOOCteODvOODkOODvOOBruOCu+OCreODpeODquODhuOCo+OBr+OAgee9suWQjSAo5pW05ZCI5oCn44Gu56K66KqNKSDjgpLopoHmsYLjgZfjgarjgYQgU0FTTCAo44ON44K044K344Ko44O844OI44CBS2VyYmVyb3PjgIFOVExNIOOBvuOBn+OBryDjg4DjgqTjgrjjgqfjgrnjg4gpIExEQVAg44OQ44Kk44Oz44OJ44CB44GK44KI44Gz44Kv44Oq44KiIOODhuOCreOCueODiCAoU1NML1RMUyDmmpflj7fljJbjgYzjgZXjgozjgabjgYTjgarjgYQpIOaOpee2muS4iuOBp+Wun+ihjOOBleOCjOOCiyBMREFQIOewoeaYkyDjg5DjgqTjg7Pjg4njgpLmi5LlkKbjgZnjgovjgojjgYbjgrXjg7zjg5Djg7zjgpLoqK3lrprjgZnjgovjgZPjgajjgafjgIHlpKfluYXjgavlvLfljJbjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILjgZPjgozjgonjga7jg5DjgqTjg7Pjg4njgpLkvb/nlKjjgZnjgosg44Kv44Op44Kk44Ki44Oz44OI44GMIDEg44Gk44KC44Gq44GE5aC05ZCI44Gn44KC44CB5ouS5ZCm44GZ44KL44KI44GG44Gr44K144O844OQ44O844KS5qeL5oiQ44GZ44KL44GT44Go44Gn44CB44K144O844OQ44O844Gu44K744Kt44Ol44Oq44OG44Kj44GM5by35YyW44GV44KM44G+44GZ44CCIFxuXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIxIOOBr+ODhuOCueODiCBLY2NFdmVudCDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBLbm93c09mUm9sZUhvbGRlcnNcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIEtub3dzT2ZSb2xlSG9sZGVycyDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBNYWNoaW5lQWNjb3VudFxuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMSDjga/jg4bjgrnjg4ggTWFjaGluZUFjY291bnQg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogTkNTZWNEZXNjXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIxIOOBr+ODhuOCueODiCBOQ1NlY0Rlc2Mg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogTmV0TG9nb25zXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIxIOOBr+ODhuOCueODiCBOZXRMb2dvbnMg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogT2JqZWN0c1JlcGxpY2F0ZWRcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIE9iamVjdHNSZXBsaWNhdGVkIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IFJlcGxpY2F0aW9uc1xuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMSDjga/jg4bjgrnjg4ggUmVwbGljYXRpb25zIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IFJpZE1hbmFnZXJcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIFJpZE1hbmFnZXIg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogU2VydmljZXNcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjEg44Gv44OG44K544OIIFNlcnZpY2VzIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IFN5c3RlbUxvZ1xuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4ODAwNDAwMjBcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDY6MTJcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICDjg4njg6njgqTjg5Djg7zjga/jgIHjg4fjg5DjgqTjgrkgRGV2aWNlSGFyZGRpc2swRFIwIOOBruabuOOBjei+vOOBv+OCreODo+ODg+OCt+ODpeOBjOacieWKueOBp+OBguOCi+OBk+OBqOOCkuaknOWHuuOBl+OBvuOBl+OBn+OAgiDjg4fjg7zjgr/jgYzlo4rjgozjgovlj6/og73mgKfjgYzjgYLjgorjgb7jgZnjgIJcblxuICAgICAgICAg6K2m5ZGK44Kk44OZ44Oz44OI44GM55m655Sf44GX44G+44GX44Gf44CC44Kk44OZ44Oz44OIIElEOiAweDgwMDQwMDIwXG5cbiAgICAgICAgICAgIOeUn+aIkOaXpeaZgjogMDEvMTkvMjAxNSAgIDA5OjQ2OjEyXG5cbiAgICAgICAgICAgIOOCpOODmeODs+ODiOaWh+Wtl+WIlzpcblxuICAgICAgICAgICAg44OJ44Op44Kk44OQ44O844Gv44CB44OH44OQ44Kk44K5IERldmljZUhhcmRkaXNrMERSMCDjga7mm7jjgY3ovrzjgb/jgq3jg6Pjg4Pjgrfjg6XjgYzmnInlirnjgafjgYLjgovjgZPjgajjgpLmpJzlh7rjgZfjgb7jgZfjgZ/jgIIg44OH44O844K/44GM5aOK44KM44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCXG5cbiAgICAgICAgIOitpuWRiuOCpOODmeODs+ODiOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAguOCpOODmeODs+ODiCBJRDogMHg4MDA0MDAyMFxuXG4gICAgICAgICAgICDnlJ/miJDml6XmmYI6IDAxLzE5LzIwMTUgICAwOTo0NjoxMlxuXG4gICAgICAgICAgICDjgqTjg5njg7Pjg4jmloflrZfliJc6XG5cbiAgICAgICAgICAgIOODieODqeOCpOODkOODvOOBr+OAgeODh+ODkOOCpOOCuSBEZXZpY2VIYXJkZGlzazBEUjAg44Gu5pu444GN6L6844G/44Kt44Oj44OD44K344Ol44GM5pyJ5Yq544Gn44GC44KL44GT44Go44KS5qSc5Ye644GX44G+44GX44Gf44CCIOODh+ODvOOCv+OBjOWjiuOCjOOCi+WPr+iDveaAp+OBjOOBguOCiuOBvuOBmeOAglxuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4ODAwNDAwMjBcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDg6MjlcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICDjg4njg6njgqTjg5Djg7zjga/jgIHjg4fjg5DjgqTjgrkgRGV2aWNlSGFyZGRpc2swRFIwIOOBruabuOOBjei+vOOBv+OCreODo+ODg+OCt+ODpeOBjOacieWKueOBp+OBguOCi+OBk+OBqOOCkuaknOWHuuOBl+OBvuOBl+OBn+OAgiDjg4fjg7zjgr/jgYzlo4rjgozjgovlj6/og73mgKfjgYzjgYLjgorjgb7jgZnjgIJcblxuICAgICAgICAg6K2m5ZGK44Kk44OZ44Oz44OI44GM55m655Sf44GX44G+44GX44Gf44CC44Kk44OZ44Oz44OIIElEOiAweDgwMDQwMDIwXG5cbiAgICAgICAgICAgIOeUn+aIkOaXpeaZgjogMDEvMTkvMjAxNSAgIDA5OjQ4OjI5XG5cbiAgICAgICAgICAgIOOCpOODmeODs+ODiOaWh+Wtl+WIlzpcblxuICAgICAgICAgICAg44OJ44Op44Kk44OQ44O844Gv44CB44OH44OQ44Kk44K5IERldmljZUhhcmRkaXNrMERSMCDjga7mm7jjgY3ovrzjgb/jgq3jg6Pjg4Pjgrfjg6XjgYzmnInlirnjgafjgYLjgovjgZPjgajjgpLmpJzlh7rjgZfjgb7jgZfjgZ/jgIIg44OH44O844K/44GM5aOK44KM44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCXG5cbiAgICAgICAgIOitpuWRiuOCpOODmeODs+ODiOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAguOCpOODmeODs+ODiCBJRDogMHg4MDA0MDAyMFxuXG4gICAgICAgICAgICDnlJ/miJDml6XmmYI6IDAxLzE5LzIwMTUgICAwOTo0ODoyOVxuXG4gICAgICAgICAgICDjgqTjg5njg7Pjg4jmloflrZfliJc6XG5cbiAgICAgICAgICAgIOODieODqeOCpOODkOODvOOBr+OAgeODh+ODkOOCpOOCuSBEZXZpY2VIYXJkZGlzazBEUjAg44Gu5pu444GN6L6844G/44Kt44Oj44OD44K344Ol44GM5pyJ5Yq544Gn44GC44KL44GT44Go44KS5qSc5Ye644GX44G+44GX44Gf44CCIOODh+ODvOOCv+OBjOWjiuOCjOOCi+WPr+iDveaAp+OBjOOBguOCiuOBvuOBmeOAglxuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4ODAwMDAwMURcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDg6MzJcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICDjgrnjg57jg7zjg4gg44Kr44O844OJIOODreOCsOOCquODs+OBq+S9v+eUqOOBp+OBjeOCi+mBqeWIh+OBquiovOaYjuabuOOCkuOCreODvOmFjeW4g+OCu+ODs+OCv+ODvCAoS0RDKSDjgYzmpJzlh7rjgafjgY3jgarjgYvjgaPjgZ/jgYvjgIFLREMg6Ki85piO5pu444KS56K66KqN44Gn44GN44G+44Gb44KT44Gn44GX44Gf44CC44GT44Gu5ZWP6aGM44GM6Kej5rG644GX44Gq44GE5aC05ZCI44CB44K544Oe44O844OIIOOCq+ODvOODiSDjg63jgrDjgqrjg7PjgYzmraPjgZfjgY/mqZ/og73jgZfjgarjgYTlj6/og73mgKfjgYzjgYLjgorjgb7jgZnjgILjgZPjga7llY/poYzjgpLop6PmsbrjgZnjgovjgavjga/jgIFjZXJ0dXRpbC5leGUg44KS5L2/55So44GX44Gm5pei5a2Y44GuIEtEQyDoqLzmmI7mm7jjgpLnorroqo3jgZnjgovjgYvjgIHmlrDjgZfjgYQgS0RDIOiovOaYjuabuOOCkueZu+mMsuOBl+OBpuOBj+OBoOOBleOBhOOAglxuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4MDAwMDE2OTVcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDk6MDNcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICBETlMg44OJ44Oh44Kk44OzICdpZmF4Lnl0Yy5sb2NhbC4nIOOBq+mWoumAo+S7mOOBkeOCieOCjOOBn+OAgTEg44Gk5Lul5LiK44GuIEROUyDjg6zjgrPjg7zjg4njga7li5XnmoTjgarnmbvpjLLjgb7jgZ/jga8g5YmK6Zmk44Gr5aSx5pWX44GX44G+44GX44Gf44CC44GT44KM44KJ44Gu44Os44Kz44O844OJ44Gv44CB5LuW44Gu44Kz44Oz44OU44Ol44O844K/44O844GM44GT44Gu44K144O844OQ44O844KSIOODieODoeOCpOODsyDjgrPjg7Pjg4jjg63jg7zjg6njg7wgKOaMh+WumuOBleOCjOOBn+ODieODoeOCpOODs+OBjCBBY3RpdmUgRGlyZWN0b3J5IOODieODoeOCpOODs+OBp+OBguOCi+WgtOWQiCkg44G+44Gf44GvIExEQVAg44K144O844OQ44O8ICjmjIflrprjgZXjgozjgZ/jg4njg6HjgqTjg7PjgYzjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Mg44OR44O844OG44Kj44K344On44Oz44Gn44GC44KLIOWgtOWQiCkg44Go44GX44Gm5qSc5Ye644GZ44KL44Gu44Gr5L2/55So44GV44KM44G+44GZ44CCICBcblxuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4MDAwMDE2OTVcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDk6MDNcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICBETlMg44OJ44Oh44Kk44OzICdEb21haW5EbnNab25lcy5pZmF4Lnl0Yy5sb2NhbC4nIOOBq+mWoumAo+S7mOOBkeOCieOCjOOBn+OAgTEg44Gk5Lul5LiK44GuIEROUyDjg6zjgrPjg7zjg4njga7li5XnmoTjgarnmbvpjLLjgb7jgZ/jga8g5YmK6Zmk44Gr5aSx5pWX44GX44G+44GX44Gf44CC44GT44KM44KJ44Gu44Os44Kz44O844OJ44Gv44CB5LuW44Gu44Kz44Oz44OU44Ol44O844K/44O844GM44GT44Gu44K144O844OQ44O844KSIOODieODoeOCpOODsyDjgrPjg7Pjg4jjg63jg7zjg6njg7wgKOaMh+WumuOBleOCjOOBn+ODieODoeOCpOODs+OBjCBBY3RpdmUgRGlyZWN0b3J5IOODieODoeOCpOODs+OBp+OBguOCi+WgtOWQiCkg44G+44Gf44GvIExEQVAg44K144O844OQ44O8ICjmjIflrprjgZXjgozjgZ/jg4njg6HjgqTjg7PjgYzjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Mg44OR44O844OG44Kj44K344On44Oz44Gn44GC44KLIOWgtOWQiCkg44Go44GX44Gm5qSc5Ye644GZ44KL44Gu44Gr5L2/55So44GV44KM44G+44GZ44CCICBcblxuXG4gICAgICAgICDorablkYrjgqTjg5njg7Pjg4jjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjgqTjg5njg7Pjg4ggSUQ6IDB4MDAwMDAzRjZcblxuICAgICAgICAgICAg55Sf5oiQ5pel5pmCOiAwMS8xOS8yMDE1ICAgMDk6NDk6MDNcblxuICAgICAgICAgICAg44Kk44OZ44Oz44OI5paH5a2X5YiXOlxuXG4gICAgICAgICAgICDlkI3liY0gX21zZGNzLmlmYXgueXRjLmxvY2FsIOOBruWQjeWJjeino+axuuOBr+OAgeani+aIkOOBleOCjOOBn+OBqeOBriBETlMg44K144O844OQ44O844GL44KJ44KC5b+c562U44GM44Gq44GP44CB44K/44Kk44Og44Ki44Km44OI44GX44G+44GX44Gf44CCXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIxIOOBr+ODhuOCueODiCBTeXN0ZW1Mb2cg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogVmVyaWZ5UmVmZXJlbmNlc1xuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMSDjga/jg4bjgrnjg4ggVmVyaWZ5UmVmZXJlbmNlcyDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgXG4gICDjgrXjg7zjg5Djg7zjgpLjg4bjgrnjg4jjgZfjgabjgYTjgb7jgZk6IERlZmF1bHQtRmlyc3QtU2l0ZS1OYW1lTERBUC1TRVJWRVIyXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQWR2ZXJ0aXNpbmdcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjIg44Gv44OG44K544OIIEFkdmVydGlzaW5nIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IEZyc0V2ZW50XG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBGcnNFdmVudCDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBERlNSRXZlbnRcblxuICAgICAgICAgU1lTVk9MIOOBruWFseacieW+jOOAgeOBk+OBriAyNCDmmYLplpPku6XlhoXjgavnmbrnlJ/jgZfjgZ/orablkYrjgb7jgZ/jga/jgqjjg6njg7wg44Kk44OZ44Oz44OI44GM44GC44KK44G+44GZ44CCIFNZU1ZPTFxuXG4gICAgICAgICDjg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PlpLHmlZfjga7llY/poYzjgYzjgYLjgovjgajjgIHjgrDjg6vjg7zjg5cg44Od44Oq44K344O844Gu5ZWP6aGM44GM55m655Sf44GZ44KL5aC05ZCIIOOBjOOBguOCiuOBvuOBmeOAgiBcbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBERlNSRXZlbnQg44Gr5aSx5pWX44GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogU3lzVm9sQ2hlY2tcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjIg44Gv44OG44K544OIIFN5c1ZvbENoZWNrIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IEtjY0V2ZW50XG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBLY2NFdmVudCDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBLbm93c09mUm9sZUhvbGRlcnNcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjIg44Gv44OG44K544OIIEtub3dzT2ZSb2xlSG9sZGVycyDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBNYWNoaW5lQWNjb3VudFxuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMiDjga/jg4bjgrnjg4ggTWFjaGluZUFjY291bnQg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogTkNTZWNEZXNjXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBOQ1NlY0Rlc2Mg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogTmV0TG9nb25zXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBOZXRMb2dvbnMg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogT2JqZWN0c1JlcGxpY2F0ZWRcblxuICAgICAgICAgLiBMREFQLVNFUlZFUjIg44Gv44OG44K544OIIE9iamVjdHNSZXBsaWNhdGVkIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IFJlcGxpY2F0aW9uc1xuXG4gICAgICAgICBbUmVwbGljYXRpb25zIENoZWNr44CBTERBUC1TRVJWRVIyXSDmnIDov5Hjga7jg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PoqabooYzjga/lpLHmlZfjgZfjgb7jgZfjgZ86XG5cbiAgICAgICAgICAgIExEQVAtU0VSVkVSMSDjgYvjgokgTERBUC1TRVJWRVIyXG5cbiAgICAgICAgICAgIOWQjeWJjeS7mOOBkeOCs+ODs+ODhuOCueODiDogREM9Rm9yZXN0RG5zWm9uZXMsREM9aWZheCxEQz15dGMsREM9bG9jYWxcblxuICAgICAgICAgICAg44Os44OX44Oq44Kx44O844K344On44Oz44Gn44Ko44Op44O844GM55Sf5oiQ44GV44KM44G+44GX44GfICgxMjU2KTpcblxuICAgICAgICAgICAg44Oq44Oi44O844OIIOOCt+OCueODhuODoOOBr+WIqeeUqOOBp+OBjeOBvuOBm+OCk+OAguODjeODg+ODiOODr+ODvOOCr+OBruODiOODqeODluODq+OCt+ODpeODvOODhuOCo+ODs+OCsOOBq+OBpOOBhOOBpuOBr+OAgVdpbmRvd3Mg44OY44Or44OX44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCXG5cbiAgICAgICAgICAgIDIwMTUtMDEtMTkgMDk6NDc6MDcg44Gn44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CCXG5cbiAgICAgICAgICAgIOWJjeWbnuOBruaIkOWKn+OBryAyMDE1LTAxLTE5IDA4OjQ3OjA3IOOBp+OBmeOAglxuXG4gICAgICAgICAgICDliY3lm57jga7miJDlip/jgYvjgonjgIExIOWbnuOCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAglxuXG4gICAgICAgICBbUmVwbGljYXRpb25zIENoZWNr44CBTERBUC1TRVJWRVIyXSDmnIDov5Hjga7jg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PoqabooYzjga/lpLHmlZfjgZfjgb7jgZfjgZ86XG5cbiAgICAgICAgICAgIExEQVAtU0VSVkVSMSDjgYvjgokgTERBUC1TRVJWRVIyXG5cbiAgICAgICAgICAgIOWQjeWJjeS7mOOBkeOCs+ODs+ODhuOCueODiDogREM9RG9tYWluRG5zWm9uZXMsREM9aWZheCxEQz15dGMsREM9bG9jYWxcblxuICAgICAgICAgICAg44Os44OX44Oq44Kx44O844K344On44Oz44Gn44Ko44Op44O844GM55Sf5oiQ44GV44KM44G+44GX44GfICgxMjU2KTpcblxuICAgICAgICAgICAg44Oq44Oi44O844OIIOOCt+OCueODhuODoOOBr+WIqeeUqOOBp+OBjeOBvuOBm+OCk+OAguODjeODg+ODiOODr+ODvOOCr+OBruODiOODqeODluODq+OCt+ODpeODvOODhuOCo+ODs+OCsOOBq+OBpOOBhOOBpuOBr+OAgVdpbmRvd3Mg44OY44Or44OX44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCXG5cbiAgICAgICAgICAgIDIwMTUtMDEtMTkgMDk6NDc6MDcg44Gn44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CCXG5cbiAgICAgICAgICAgIOWJjeWbnuOBruaIkOWKn+OBryAyMDE1LTAxLTE5IDA4OjQ3OjA3IOOBp+OBmeOAglxuXG4gICAgICAgICAgICDliY3lm57jga7miJDlip/jgYvjgonjgIExIOWbnuOCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAglxuXG4gICAgICAgICBbUmVwbGljYXRpb25zIENoZWNr44CBTERBUC1TRVJWRVIyXSDmnIDov5Hjga7jg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PoqabooYzjga/lpLHmlZfjgZfjgb7jgZfjgZ86XG5cbiAgICAgICAgICAgIExEQVAtU0VSVkVSMSDjgYvjgokgTERBUC1TRVJWRVIyXG5cbiAgICAgICAgICAgIOWQjeWJjeS7mOOBkeOCs+ODs+ODhuOCueODiDogQ049U2NoZW1hLENOPUNvbmZpZ3VyYXRpb24sREM9aWZheCxEQz15dGMsREM9bG9jYWxcblxuICAgICAgICAgICAg44Os44OX44Oq44Kx44O844K344On44Oz44Gn44Ko44Op44O844GM55Sf5oiQ44GV44KM44G+44GX44GfICgxNzUzKTpcblxuICAgICAgICAgICAg44Ko44Oz44OJ44Od44Kk44Oz44OIIOODnuODg+ODkeODvOOBi+OCieS9v+eUqOOBp+OBjeOCi+OCqOODs+ODieODneOCpOODs+ODiOOBr+OBk+OCjOS7peS4iuOBguOCiuOBvuOBm+OCk+OAglxuXG4gICAgICAgICAgICAyMDE1LTAxLTE5IDA5OjQ3OjA3IOOBp+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAglxuXG4gICAgICAgICAgICDliY3lm57jga7miJDlip/jga8gMjAxNS0wMS0xOSAwODo0NzowNyDjgafjgZnjgIJcblxuICAgICAgICAgICAg5YmN5Zue44Gu5oiQ5Yqf44GL44KJ44CBMSDlm57jgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIJcblxuICAgICAgICAgICAgTERBUC1TRVJWRVIxIOS4iuOBruODh+OCo+ODrOOCr+ODiOODquOBr+i1t+WLleOBvuOBn+OBr+OCt+ODo+ODg+ODiOODgOOCpuODs+OBruWHpueQhuS4reOBruOBn+OCgVxuXG4gICAgICAgICAgICDliKnnlKjjgafjgY3jgb7jgZvjgpPjgIJcblxuICAgICAgICAgICAg44OW44O844OI5Lit44Gr44Kz44Oz44OU44Ol44O844K/44O844GM44OP44Oz44Kw44GX44Gm44GE44Gq44GE44GT44Go44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCXG5cbiAgICAgICAgIFtSZXBsaWNhdGlvbnMgQ2hlY2vjgIFMREFQLVNFUlZFUjJdIOacgOi/keOBruODrOODl+ODquOCseODvOOCt+ODp+ODs+ippuihjOOBr+WkseaVl+OBl+OBvuOBl+OBnzpcblxuICAgICAgICAgICAgTERBUC1TRVJWRVIxIOOBi+OCiSBMREFQLVNFUlZFUjJcblxuICAgICAgICAgICAg5ZCN5YmN5LuY44GR44Kz44Oz44OG44K544OIOiBDTj1Db25maWd1cmF0aW9uLERDPWlmYXgsREM9eXRjLERDPWxvY2FsXG5cbiAgICAgICAgICAgIOODrOODl+ODquOCseODvOOCt+ODp+ODs+OBp+OCqOODqeODvOOBjOeUn+aIkOOBleOCjOOBvuOBl+OBnyAoMTc1Myk6XG5cbiAgICAgICAgICAgIOOCqOODs+ODieODneOCpOODs+ODiCDjg57jg4Pjg5Hjg7zjgYvjgonkvb/nlKjjgafjgY3jgovjgqjjg7Pjg4njg53jgqTjg7Pjg4jjga/jgZPjgozku6XkuIrjgYLjgorjgb7jgZvjgpPjgIJcblxuICAgICAgICAgICAgMjAxNS0wMS0xOSAwOTo0NzowNyDjgafjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIJcblxuICAgICAgICAgICAg5YmN5Zue44Gu5oiQ5Yqf44GvIDIwMTUtMDEtMTkgMDk6NDM6MzQg44Gn44GZ44CCXG5cbiAgICAgICAgICAgIOWJjeWbnuOBruaIkOWKn+OBi+OCieOAgTEg5Zue44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CCXG5cbiAgICAgICAgICAgIExEQVAtU0VSVkVSMSDkuIrjga7jg4fjgqPjg6zjgq/jg4jjg6rjga/otbfli5Xjgb7jgZ/jga/jgrfjg6Pjg4Pjg4jjg4Djgqbjg7Pjga7lh6bnkIbkuK3jga7jgZ/jgoFcblxuICAgICAgICAgICAg5Yip55So44Gn44GN44G+44Gb44KT44CCXG5cbiAgICAgICAgICAgIOODluODvOODiOS4reOBq+OCs+ODs+ODlOODpeODvOOCv+ODvOOBjOODj+ODs+OCsOOBl+OBpuOBhOOBquOBhOOBk+OBqOOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAglxuXG4gICAgICAgICBbUmVwbGljYXRpb25zIENoZWNr44CBTERBUC1TRVJWRVIyXSDmnIDov5Hjga7jg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PoqabooYzjga/lpLHmlZfjgZfjgb7jgZfjgZ86XG5cbiAgICAgICAgICAgIExEQVAtU0VSVkVSMSDjgYvjgokgTERBUC1TRVJWRVIyXG5cbiAgICAgICAgICAgIOWQjeWJjeS7mOOBkeOCs+ODs+ODhuOCueODiDogREM9aWZheCxEQz15dGMsREM9bG9jYWxcblxuICAgICAgICAgICAg44Os44OX44Oq44Kx44O844K344On44Oz44Gn44Ko44Op44O844GM55Sf5oiQ44GV44KM44G+44GX44GfICgxNzUzKTpcblxuICAgICAgICAgICAg44Ko44Oz44OJ44Od44Kk44Oz44OIIOODnuODg+ODkeODvOOBi+OCieS9v+eUqOOBp+OBjeOCi+OCqOODs+ODieODneOCpOODs+ODiOOBr+OBk+OCjOS7peS4iuOBguOCiuOBvuOBm+OCk+OAglxuXG4gICAgICAgICAgICAyMDE1LTAxLTE5IDA5OjQ3OjA3IOOBp+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAglxuXG4gICAgICAgICAgICDliY3lm57jga7miJDlip/jga8gMjAxNS0wMS0xOSAwOTo0MzozNiDjgafjgZnjgIJcblxuICAgICAgICAgICAg5YmN5Zue44Gu5oiQ5Yqf44GL44KJ44CBMSDlm57jgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgIJcblxuICAgICAgICAgICAgTERBUC1TRVJWRVIxIOS4iuOBruODh+OCo+ODrOOCr+ODiOODquOBr+i1t+WLleOBvuOBn+OBr+OCt+ODo+ODg+ODiOODgOOCpuODs+OBruWHpueQhuS4reOBruOBn+OCgVxuXG4gICAgICAgICAgICDliKnnlKjjgafjgY3jgb7jgZvjgpPjgIJcblxuICAgICAgICAgICAg44OW44O844OI5Lit44Gr44Kz44Oz44OU44Ol44O844K/44O844GM44OP44Oz44Kw44GX44Gm44GE44Gq44GE44GT44Go44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBSZXBsaWNhdGlvbnMg44Gr5aSx5pWX44GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogUmlkTWFuYWdlclxuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMiDjga/jg4bjgrnjg4ggUmlkTWFuYWdlciDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBTZXJ2aWNlc1xuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMiDjga/jg4bjgrnjg4ggU2VydmljZXMg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogU3lzdGVtTG9nXG5cbiAgICAgICAgIC4gTERBUC1TRVJWRVIyIOOBr+ODhuOCueODiCBTeXN0ZW1Mb2cg44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogVmVyaWZ5UmVmZXJlbmNlc1xuXG4gICAgICAgICAuIExEQVAtU0VSVkVSMiDjga/jg4bjgrnjg4ggVmVyaWZ5UmVmZXJlbmNlcyDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgXG4gICBcbiAgIFxuICAg44OR44O844OG44Kj44K344On44OzIOODhuOCueODiOOCkuWun+ihjOOBl+OBpuOBhOOBvuOBmTogRm9yZXN0RG5zWm9uZXNcblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBDaGVja1NEUmVmRG9tXG5cbiAgICAgICAgIC4gRm9yZXN0RG5zWm9uZXMg44Gv44OG44K544OIIENoZWNrU0RSZWZEb20g44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQ3Jvc3NSZWZWYWxpZGF0aW9uXG5cbiAgICAgICAgIC4gRm9yZXN0RG5zWm9uZXMg44Gv44OG44K544OIIENyb3NzUmVmVmFsaWRhdGlvblxuXG4gICAgICAgICDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgXG4gICDjg5Hjg7zjg4bjgqPjgrfjg6fjg7Mg44OG44K544OI44KS5a6f6KGM44GX44Gm44GE44G+44GZOiBEb21haW5EbnNab25lc1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IENoZWNrU0RSZWZEb21cblxuICAgICAgICAgLiBEb21haW5EbnNab25lcyDjga/jg4bjgrnjg4ggQ2hlY2tTRFJlZkRvbSDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBDcm9zc1JlZlZhbGlkYXRpb25cblxuICAgICAgICAgLiBEb21haW5EbnNab25lcyDjga/jg4bjgrnjg4ggQ3Jvc3NSZWZWYWxpZGF0aW9uXG5cbiAgICAgICAgIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICBcbiAgIOODkeODvOODhuOCo+OCt+ODp+ODsyDjg4bjgrnjg4jjgpLlrp/ooYzjgZfjgabjgYTjgb7jgZk6IFNjaGVtYVxuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IENoZWNrU0RSZWZEb21cblxuICAgICAgICAgLiBTY2hlbWEg44Gv44OG44K544OIIENoZWNrU0RSZWZEb20g44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQ3Jvc3NSZWZWYWxpZGF0aW9uXG5cbiAgICAgICAgIC4gU2NoZW1hIOOBr+ODhuOCueODiCBDcm9zc1JlZlZhbGlkYXRpb24g44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgIFxuICAg44OR44O844OG44Kj44K344On44OzIOODhuOCueODiOOCkuWun+ihjOOBl+OBpuOBhOOBvuOBmTogQ29uZmlndXJhdGlvblxuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IENoZWNrU0RSZWZEb21cblxuICAgICAgICAgLiBDb25maWd1cmF0aW9uIOOBr+ODhuOCueODiCBDaGVja1NEUmVmRG9tIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICAgICDjg4bjgrnjg4jjgpLplovlp4vjgZfjgabjgYTjgb7jgZk6IENyb3NzUmVmVmFsaWRhdGlvblxuXG4gICAgICAgICAuIENvbmZpZ3VyYXRpb24g44Gv44OG44K544OIIENyb3NzUmVmVmFsaWRhdGlvblxuXG4gICAgICAgICDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgXG4gICDjg5Hjg7zjg4bjgqPjgrfjg6fjg7Mg44OG44K544OI44KS5a6f6KGM44GX44Gm44GE44G+44GZOiBpZmF4XG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQ2hlY2tTRFJlZkRvbVxuXG4gICAgICAgICAuIGlmYXgg44Gv44OG44K544OIIENoZWNrU0RSZWZEb20g44Gr5ZCI5qC844GX44G+44GX44GfXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogQ3Jvc3NSZWZWYWxpZGF0aW9uXG5cbiAgICAgICAgIC4gaWZheCDjga/jg4bjgrnjg4ggQ3Jvc3NSZWZWYWxpZGF0aW9uIOOBq+WQiOagvOOBl+OBvuOBl+OBn1xuXG4gICBcbiAgIOOCqOODs+OCv+ODvOODl+ODqeOCpOOCuiDjg4bjgrnjg4jjgpLlrp/ooYzjgZfjgabjgYTjgb7jgZk6IGlmYXgueXRjLmxvY2FsXG5cbiAgICAgIOODhuOCueODiOOCkumWi+Wni+OBl+OBpuOBhOOBvuOBmTogTG9jYXRvckNoZWNrXG5cbiAgICAgICAgIC4gaWZheC55dGMubG9jYWwg44Gv44OG44K544OIIExvY2F0b3JDaGVjayDjgavlkIjmoLzjgZfjgb7jgZfjgZ9cblxuICAgICAg44OG44K544OI44KS6ZaL5aeL44GX44Gm44GE44G+44GZOiBJbnRlcnNpdGVcblxuICAgICAgICAgLiBpZmF4Lnl0Yy5sb2NhbCDjga/jg4bjgrnjg4ggSW50ZXJzaXRlIOOBq+WQiOagvOOBl+OBvuOBl+OBnyI7CiAgICAgICAgTGlzdDxzdHJpbmc+IHN0cmluZ0xpc3QgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgaW50IHNJbmRleCA9IHJlc3VsdFN0cmluZy5JbmRleE9mKERDREFJR19TVEFSVF9TVFJJTkcpOwogICAgICAgIGludCBlSW5kZXggPSAwOwogICAgICAgIHdoaWxlIChzSW5kZXggPj0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGVJbmRleCA9IHJlc3VsdFN0cmluZy5JbmRleE9mKERDREFJR19TVEFSVF9TVFJJTkcsIHNJbmRleCArIERDREFJR19TVEFSVF9TVFJJTkcuTGVuZ3RoKSAtIDE7CiAgICAgICAgICAgIHN0cmluZ0xpc3QuQWRkKHJlc3VsdFN0cmluZy5TdWJzdHJpbmcoc0luZGV4LCBlSW5kZXgpKTsKICAgICAgICAgICAgc0luZGV4ID0gZUluZGV4ICsgMTsKICAgICAgICB9CiAgICAgICAgZUluZGV4ID0gcmVzdWx0U3RyaW5nLkxlbmd0aCAtIDE7CiAgICAgICAgc3RyaW5nTGlzdC5BZGQocmVzdWx0U3RyaW5nLlN1YnN0cmluZyhzSW5kZXgsIGVJbmRleCkpOwoKICAgICAgICBib29sIGlzUmVzdWx0ID0gdHJ1ZTsKICAgICAgICBmb3JlYWNoKHN0cmluZyBzdHIgaW4gc3RyaW5nTGlzdCkKICAgICAgICB7CiAgICAgICAgICAgIHN0cmluZ1tdIGFycmF5ID0gc3RyLlNwbGl0KCdcbicpOwogICAgICAgICAgICBib29sIGlzRXhjbHVzaW9uID0gZmFsc2U7CiAgICAgICAgICAgIGZvcmVhY2goc3RyaW5nIHNlYXJjaCBpbiBleGNsdXRpb25UZXN0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoYXJyYXlbYXJyYXkuTGVuZ3RoIC0gMV0uSW5kZXhPZihzZWFyY2gpICE9IC0xKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlzRXhjbHVzaW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNFeGNsdXNpb24pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheVthcnJheS5MZW5ndGggLSAxXS5JbmRleE9mKExEQVBfRVJST1JfU1RSSU5HMSkgIT0gLTEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlzUmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICB9CgkJcmV0dXJuIGlzUmVzdWx0OwoJfQp9