From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Germano Massullo (Thetra) To: git-commits@fedoraproject.org Subject: [rpms/darktable] f43: 5.6.1 release Date: Tue, 01 Sep 2026 08:50:19 GMT Message-ID: <178825261984.1.16950870839507150388.rpms-darktable-6fa39d4362d9@fedoraproject.org> List-ID: X-Git-Repo: rpms/darktable X-Git-Branch: f43 X-Git-Rev: 6fa39d4362d90089967b92a6285a555ac4630026 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZGFya3RhYmxlCkJy YW5jaCA6IGY0MwpDb21taXQgOiA2ZmEzOWQ0MzYyZDkwMDg5OTY3YjkyYTYyODVhNTU1YWM0NjMw MDI2CkF1dGhvciA6IEdlcm1hbm8gTWFzc3VsbG8gKFRoZXRyYSkgPGdlcm1hbm8ubWFzc3VsbG9A dGhldHJhLmV1PgpEYXRlICAgOiAyMDI2LTA5LTAxVDEwOjQ1OjEwKzAyOjAwClN0YXRzICA6ICsz MDkxLy0zOTggaW4gOSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qu b3JnL3JwbXMvZGFya3RhYmxlL2MvNmZhMzlkNDM2MmQ5MDA4OTk2N2I5MmE2Mjg1YTU1NWFjNDYz MDAyNj9icmFuY2g9ZjQzCgpMb2c6CjUuNi4xIHJlbGVhc2UKCi0tLQpkaWZmIC0tZ2l0IGEvLmdp dGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggZDA0NDlkYy4uN2VkZjdmMyAxMDA2NDQKLS0tIGEv LmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC03OSwzICs3OSw1IEBACiAvZGFya3RhYmxl LTUuMi4xLnRhci54egogL2Rhcmt0YWJsZS01LjQuMC50YXIueHoKIC9kYXJrdGFibGUtNS40LjEu dGFyLnh6CisvZGFya3RhYmxlLTUuNi4wLnRhci54egorL2Rhcmt0YWJsZS01LjYuMS50YXIueHoK CmRpZmYgLS1naXQgYS8wMDAxLUFkZC01LjQuMS1pbi1hcHBkYXRhLnBhdGNoIGIvMDAwMS1BZGQt NS40LjEtaW4tYXBwZGF0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNj NTAzMy4uMDAwMDAwMAotLS0gYS8wMDAxLUFkZC01LjQuMS1pbi1hcHBkYXRhLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotRnJvbSAxNDM1ZmVhZWMzMGVhMWFjYmY5NGFhZWMy N2NlNzUwNzMzM2VkMmQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFzY2FsIE9i cnkgPHBhc2NhbEBvYnJ5Lm5ldD4KLURhdGU6IFRodSwgNSBGZWIgMjAyNiAxNzo1NjoyMSArMDEw MAotU3ViamVjdDogW1BBVENIXSBBZGQgNS40LjEgaW4gYXBwZGF0YS4KLQotLS0tCi0gZGF0YS9v cmcuZGFya3RhYmxlLmRhcmt0YWJsZS5hcHBkYXRhLnhtbC5pbiB8IDEgKwotIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZGF0YS9vcmcuZGFya3RhYmxlLmRh cmt0YWJsZS5hcHBkYXRhLnhtbC5pbiBiL2RhdGEvb3JnLmRhcmt0YWJsZS5kYXJrdGFibGUuYXBw ZGF0YS54bWwuaW4KLWluZGV4IDYwMGM4N2I2YzFlNC4uMWE0NWRlMWViNzRkIDEwMDY0NAotLS0t IGEvZGF0YS9vcmcuZGFya3RhYmxlLmRhcmt0YWJsZS5hcHBkYXRhLnhtbC5pbgotKysrIGIvZGF0 YS9vcmcuZGFya3RhYmxlLmRhcmt0YWJsZS5hcHBkYXRhLnhtbC5pbgotQEAgLTQ3LDYgKzQ3LDcg QEAKLSAgIDwvc2NyZWVuc2hvdHM+Ci0gICA8Y29udGVudF9yYXRpbmcgdHlwZT0ib2Fycy0xLjEi IC8+Ci0gICA8cmVsZWFzZXM+Ci0rICAgIDxyZWxlYXNlIGRhdGU9IjIwMjYtMDItMDUiIHZlcnNp b249IjUuNC4xIi8+Ci0gICAgIDxyZWxlYXNlIGRhdGU9IjIwMjUtMTItMjEiIHZlcnNpb249IjUu NC4wIi8+Ci0gICAgIDxyZWxlYXNlIGRhdGU9IjIwMjUtMDgtMDYiIHZlcnNpb249IjUuMi4xIi8+ Ci0gICAgIDxyZWxlYXNlIGRhdGU9IjIwMjUtMDYtMjEiIHZlcnNpb249IjUuMi4wIi8+CgpkaWZm IC0tZ2l0IGEvOGRjNjhlMmE0NTUxZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMC5wYXRjaCBi LzhkYzY4ZTJhNDU1MWYwMzgzOGI3ZjJkYTkyNzZlNWQxZWIyMGJjYTAucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZTFjZTcuLjAwMDAwMDAKLS0tIGEvOGRjNjhlMmE0NTUx ZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUz ICswLDAgQEAKLUZyb20gOGRjNjhlMmE0NTUxZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggVHV0dWJhbGluIDxsZXhhQGxleGEu cnU+Ci1EYXRlOiBTdW4sIDI1IEphbiAyMDI2IDE5OjU2OjI0ICswMzAwCi1TdWJqZWN0OiBbUEFU Q0hdIFVzZSBMSUJSQVdfRVhDRVBUSU9OIGluc3RlYWQgb2Ygb3duIGludGVybmFsIGluCi0gbG9z c2xlc3NqcGVnLmgKLQotLS0tCi0gaW50ZXJuYWwvbG9zc2xlc3NqcGVnLmggfCAxMSArKystLS0t LS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9pbnRlcm5hbC9sb3NzbGVzc2pwZWcuaCBiL2ludGVybmFsL2xvc3NsZXNz anBlZy5oCi1pbmRleCA3OTY0ODIyZC4uZWNlZDgyYjMgMTAwNjQ0Ci0tLS0gYS9zcmMvZXh0ZXJu YWwvTGliUmF3L2ludGVybmFsL2xvc3NsZXNzanBlZy5oCi0rKysgYi9zcmMvZXh0ZXJuYWwvTGli UmF3L2ludGVybmFsL2xvc3NsZXNzanBlZy5oCi1AQCAtMjAsNiArMjAsNyBAQCBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIG9uZSBvZiB0d28gbGljZW5zZXMgYXMgeW91IGNob29zZToKLSAjcHJh Z21hICBvbmNlCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci0rI2lu Y2x1ZGUgImxpYnJhd19jeHhfZGVmcy5oIgotIAotIHN0cnVjdCBCaXRQdW1wIC8vIGdlbmVyaWMg Yml0IHNvdXJjZQotIHsKLUBAIC0zNywxMiArMzgsNiBAQCBzdHJ1Y3QgQml0UHVtcCAvLyBnZW5l cmljIGJpdCBzb3VyY2UKLSAKLSBzdHJ1Y3QgQnl0ZVN0cmVhbUJFIC8vIEpwZWcgaXMgYWx3YXlz IGJpZyBlbmRpYW4KLSB7Ci0tICBlbnVtIEV4Y2VwdGlvbnMKLS0gIHsKLS0gICAgT0sgPSAwLAot LSAgICBFbmRPZkJ1ZmZlciA9IDEKLS0gIH07Ci0tCi0gICB1aW50OF90ICpidWZmZXI7Ci0gICB1 bnNpZ25lZCBzaXplLCBwb3M7Ci0gICBCeXRlU3RyZWFtQkUodWludDhfdCAqYiwgdW5zaWduZWQg cykgOiBidWZmZXIoYiksIHNpemUocyksIHBvcygwKSB7fQotQEAgLTUyLDcgKzQ3LDcgQEAgc3Ry dWN0IEJ5dGVTdHJlYW1CRSAvLyBKcGVnIGlzIGFsd2F5cyBiaWcgZW5kaWFuCi0gICB1aW50OF90 IGdldF91OCgpCi0gICB7Ci0gICAgIGlmIChwb3MgPj0gc2l6ZSkKLS0gICAgICB0aHJvdyBFbmRP ZkJ1ZmZlcjsKLSsgICAgICB0aHJvdyBMSUJSQVdfRVhDRVBUSU9OX0lPX0NPUlJVUFQ7Ci0gICAg IHVpbnQ4X3QgcmV0ID0gYnVmZmVyW3Bvc107Ci0gICAgIHBvcysrOwotICAgICByZXR1cm4gcmV0 OwotQEAgLTYwLDcgKzU1LDcgQEAgc3RydWN0IEJ5dGVTdHJlYW1CRSAvLyBKcGVnIGlzIGFsd2F5 cyBiaWcgZW5kaWFuCi0gICB1aW50MTZfdCBnZXRfdTE2KCkKLSAgIHsKLSAgICAgaWYgKHBvcyAr IDIgPiBzaXplKQotLSAgICAgIHRocm93IEVuZE9mQnVmZmVyOwotKyAgICAgIHRocm93IExJQlJB V19FWENFUFRJT05fSU9fQ09SUlVQVDsKLSAgICAgdWludDhfdCByMSA9IGJ1ZmZlcltwb3NdOwot ICAgICB1aW50OF90IHIyID0gYnVmZmVyW3BvcyArIDFdOwotICAgICBwb3MgKz0gMjsKCmRpZmYg LS1naXQgYS9jdmUtMjAyNi01MzE4LnBhdGNoIGIvY3ZlLTIwMjYtNTMxOC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJlODU0My4uMDAwMDAwMAotLS0gYS9jdmUtMjAyNi01 MzE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotZGlmZiAtdXJOciBkYXJr dGFibGUtNS40LjEtb3JpZy9zcmMvZXh0ZXJuYWwvTGliUmF3L3NyYy9kZWNvbXByZXNzb3JzL2xv c3NsZXNzanBlZy5jcHAgZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5hbC9MaWJSYXcvc3JjL2Rl Y29tcHJlc3NvcnMvbG9zc2xlc3NqcGVnLmNwcAotLS0tIGRhcmt0YWJsZS01LjQuMS1vcmlnL3Ny Yy9leHRlcm5hbC9MaWJSYXcvc3JjL2RlY29tcHJlc3NvcnMvbG9zc2xlc3NqcGVnLmNwcAkyMDI2 LTAxLTA5IDEwOjU5OjU5LjAwMDAwMDAwMCArMDEwMAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMv ZXh0ZXJuYWwvTGliUmF3L3NyYy9kZWNvbXByZXNzb3JzL2xvc3NsZXNzanBlZy5jcHAJMjAyNi0w NC0wMiAyMzoyMzoyNy42MzA4MjUyODEgKzAyMDAKLUBAIC0zNjEsNiArMzYxLDcgQEAKLSAJCW5i aXRzLS07Ci0gICAgICAgfQotIAlodWZmdGFibGUucmVzaXplKCBzaXplX3QoMVVMTCA8PCBuYml0 cykpOwotKwl1aW50MzJfdCB0c2l6ZSA9IDEgPDwgbmJpdHM7Ci0gCWZvciAodW5zaWduZWQgaSA9 IDA7IGkgPCBodWZmdGFibGUuc2l6ZSgpOyBpKyspIGh1ZmZ0YWJsZVtpXSA9IDA7Ci0gCi0gCWlu dCBoID0gMDsKLUBAIC0zNzEsMTAgKzM3MiwxNCBAQAotICAgICAgIHsKLSAgICAgICAgIGZvciAo aW50IGogPSAwOyBqIDwgKDEgPDwgKG5iaXRzIC0gbGVuIC0gMSkpOyBqKyspCi0gICAgICAgICB7 Ci0tICAgICAgICAgIGh1ZmZ0YWJsZVtoXSA9ICgobGVuKzEpIDw8IDE2KSB8ICh1aW50OF90KGh1 ZmZ2YWxbcG9zXSAmIDB4ZmYpIDw8IDgpIHwgdWludDhfdChzaGlmdHZhbFtwb3NdICYgMHhmZik7 Ci0rICAgICAgICAgIGlmIChoID49IHRzaXplKQotKwkJCXRocm93IExJQlJBV19FWENFUFRJT05f SU9fQ09SUlVQVDsKLSsgICAgICAgICAgaHVmZnRhYmxlW2hdID0gKChsZW4gKyAxKSA8PCAxNikg fCAodWludDhfdChodWZmdmFsW3Bvc10gJiAweGZmKSA8PCA4KSB8IHVpbnQ4X3Qoc2hpZnR2YWxb cG9zXSAmIDB4ZmYpOwotICAgICAgICAgICBoKys7Ci0gICAgICAgICB9Ci0gICAgICAgICBwb3Mr KzsKLSsJCWlmKHBvcyA+PSAyNTYpCi0rCQkJdGhyb3cgTElCUkFXX0VYQ0VQVElPTl9JT19DT1JS VVBUOwotICAgICAgIH0KLSAgICAgfQotIAlpZiAoIWRpc2FibGVfY2FjaGUpCgpkaWZmIC0tZ2l0 IGEvZGFya3RhYmxlLTUuNC4xLWx1YS01LjUtc2NyaXB0cy5wYXRjaCBiL2Rhcmt0YWJsZS01LjQu MS1sdWEtNS41LXNjcmlwdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1 MmI2YTIuLjAwMDAwMDAKLS0tIGEvZGFya3RhYmxlLTUuNC4xLWx1YS01LjUtc2NyaXB0cy5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0tLS0gZGFya3RhYmxlLTUuNC4xL3Ny Yy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL0hEUk1lcmdlLmx1YQkyMDI1LTExLTE0IDIw OjA0OjI5LjAwMDAwMDAwMCAtMDUwMAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwv bHVhLXNjcmlwdHMvY29udHJpYi9IRFJNZXJnZS5sdWEJMjAyNi0wNS0xOCAxMTo0MTozMS44MDQ1 NjAzNTMgLTA0MDAKLUBAIC0yNzcsOSArMjc3LDkgQEAgbG9jYWwgZnVuY3Rpb24gbWFpbigpCi0g ICAgIGxvY2FsIHNldF90YWcgPSBHVUkuVGFyZ2V0LmFkZF90YWdzLnRleHQKLSAgICAgaWYgc2V0 X3RhZyB+PSBuaWwgdGhlbiAtLSBhZGQgYWRkaXRpb25hbCB1c2VyLXNwZWNpZmllZCB0YWdzCi0g ICAgICAgZm9yIHRhZyBpbiBzdHJpbmcuZ21hdGNoKHNldF90YWcsICdbXixdKycpIGRvCi0tICAg ICAgICB0YWcgPSBDbGVhblNwYWNlcyh0YWcpCi0tICAgICAgICB0YWcgPSBkdC50YWdzLmNyZWF0 ZSh0YWcpCi0tICAgICAgICBkdC50YWdzLmF0dGFjaCh0YWcsIGltcG9ydGVkKSAKLSsgICAgICAg IGxvY2FsIGNsZWFuZWRfdGFnID0gQ2xlYW5TcGFjZXModGFnKQotKyAgICAgICAgY2xlYW5lZF90 YWcgPSBkdC50YWdzLmNyZWF0ZShjbGVhbmVkX3RhZykKLSsgICAgICAgIGR0LnRhZ3MuYXR0YWNo KGNsZWFuZWRfdGFnLCBpbXBvcnRlZCkgCi0gICAgICAgZW5kCi0gICAgIGVuZAotICAgICBkdC5w cmludChfKCdIRFJNZXJnZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JykpCi0tLS0gZGFya3RhYmxl LTUuNC4xL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1 YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAwMDAwMDAwMCAtMDUwMAotKysrIGRhcmt0YWJsZS01LjQu MS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9lbmZ1c2VBZHZhbmNlZC5sdWEJMjAy Ni0wNS0xOCAxMTo0MTozMS44MDU1NjAzNjIgLTA0MDAKLUBAIC01MjAsOSArNTIwLDkgQEAgbG9j YWwgZnVuY3Rpb24gbWFpbihzdG9yYWdlLCBpbWFnZV90YWJsZQotICAgICAgICAgICAgIGxvY2Fs IHNldF90YWcgPSBHVUkuVGFyZ2V0LmFkZF90YWdzLnRleHQKLSAgICAgICAgICAgICBpZiBzZXRf dGFnIH49IG5pbCB0aGVuIC0tYWRkIGFkZGl0aW9uYWwgdXNlci1zcGVjaWZpZWQgdGFncwotICAg ICAgICAgICAgICAgICBmb3IgdGFnIGluIHN0cmluZy5nbWF0Y2goc2V0X3RhZywgJ1teLF0rJykg ZG8KLS0gICAgICAgICAgICAgICAgICAgIHRhZyA9IENsZWFuU3BhY2VzKHRhZykKLS0gICAgICAg ICAgICAgICAgICAgIHRhZyA9IGR0LnRhZ3MuY3JlYXRlKHRhZykKLS0gICAgICAgICAgICAgICAg ICAgIGR0LnRhZ3MuYXR0YWNoKHRhZywgaW1wb3J0ZWQpIAotKyAgICAgICAgICAgICAgICAgICAg bG9jYWwgY2xlYW5lZF90YWcgPSBDbGVhblNwYWNlcyh0YWcpCi0rICAgICAgICAgICAgICAgICAg ICBjbGVhbmVkX3RhZyA9IGR0LnRhZ3MuY3JlYXRlKGNsZWFuZWRfdGFnKQotKyAgICAgICAgICAg ICAgICAgICAgZHQudGFncy5hdHRhY2goY2xlYW5lZF90YWcsIGltcG9ydGVkKSAKLSAgICAgICAg ICAgICAgICAgZW5kCi0gICAgICAgICAgICAgZW5kCi0gICAgICAgICBlbmQKLS0tLSBkYXJrdGFi bGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZmFjZV9yZWNvZ25pdGlv bi5sdWEJMjAyNS0xMS0xNCAyMDowNDoyOS4wMDAwMDAwMDAgLTA1MDAKLSsrKyBkYXJrdGFibGUt NS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZmFjZV9yZWNvZ25pdGlvbi5s dWEJMjAyNi0wNS0xOCAxMTo0MTozMS44MDA1NjAzMTUgLTA0MDAKLUBAIC0zMTEsMjUgKzMxMSwy NiBAQCBsb2NhbCBmdW5jdGlvbiBmYWNlX3JlY29nbml0aW9uICgpCi0gICAgICAgICAgICAgaWYg aWdub3JlQnlUYWcgKGltZywgaWdub3JlVGFncykgdGhlbgotICAgICAgICAgICAgICAgZHQucHJp bnRfbG9nKCJGYWNlIHJlY29nbml0aW9uOiBJZ25vcmluZyBpbWFnZSB3aXRoIElEICIgLi4gaW1n LmlkKQotICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGxvY2FsIHRhZ19uYW1lID0g dAotICAgICAgICAgICAgICAgLS0gQ2hlY2sgb2YgdW5yZWNvZ25pemVkIHVua25vd25fcGVyc29u Ci0tICAgICAgICAgICAgICBpZiB0ID09ICJ1bmtub3duX3BlcnNvbiIgdGhlbgotLSAgICAgICAg ICAgICAgICB0ID0gdW5rbm93blRhZwotKyAgICAgICAgICAgICAgaWYgdGFnX25hbWUgPT0gInVu a25vd25fcGVyc29uIiB0aGVuCi0rICAgICAgICAgICAgICAgIHRhZ19uYW1lID0gdW5rbm93blRh ZwotICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAtLSBDaGVjayBvZiB1bnJlY29n bml6ZWQgbm9fcGVyc29uc19mb3VuZAotLSAgICAgICAgICAgICAgaWYgdCA9PSAibm9fcGVyc29u c19mb3VuZCIgdGhlbgotLSAgICAgICAgICAgICAgICB0ID0gbm9ucGVyc29uc2ZvdW5kVGFnCi0r ICAgICAgICAgICAgICBpZiB0YWdfbmFtZSA9PSAibm9fcGVyc29uc19mb3VuZCIgdGhlbgotKyAg ICAgICAgICAgICAgICB0YWdfbmFtZSA9IG5vbnBlcnNvbnNmb3VuZFRhZwotICAgICAgICAgICAg ICAgZW5kCi0tICAgICAgICAgICAgICBpZiB0IH49ICIiIGFuZCB0IH49IG5pbCB0aGVuCi0tICAg ICAgICAgICAgICAgIGlmIGNhdGVnb3J5VGFnU3RyaW5nIH49ICIiIGFuZCB0IH49IG5vbnBlcnNv bnNmb3VuZFRhZyB0aGVuCi0tICAgICAgICAgICAgICAgICAgdCA9IGNhdGVnb3J5VGFnU3RyaW5n IC4uICJ8IiAuLiB0Ci0rICAgICAgICAgICAgICBpZiB0YWdfbmFtZSB+PSAiIiBhbmQgdGFnX25h bWUgfj0gbmlsIHRoZW4KLSsgICAgICAgICAgICAgICAgaWYgY2F0ZWdvcnlUYWdTdHJpbmcgfj0g IiIgYW5kIHRhZ19uYW1lIH49IG5vbnBlcnNvbnNmb3VuZFRhZyB0aGVuCi0rICAgICAgICAgICAg ICAgICAgdGFnX25hbWUgPSBjYXRlZ29yeVRhZ1N0cmluZyAuLiAifCIgLi4gdGFnX25hbWUKLSAg ICAgICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICAgCi0tICAgICAgICAgICAgICAgIGR0 LnByaW50X2xvZyAoIkltZ0lkOiIgLi4gaW1nLmlkIC4uICIgVGFnOiIuLiB0KQotKyAgICAgICAg ICAgICAgICBkdC5wcmludF9sb2cgKCJJbWdJZDoiIC4uIGltZy5pZCAuLiAiIFRhZzoiLi4gdGFn X25hbWUpCi0gICAgICAgICAgICAgICAgIC0tIENyZWF0ZSB0YWcgaWYgaXQgZG9lcyBub3QgZXhp c3QKLS0gICAgICAgICAgICAgICAgaWYgdGFnc19saXN0W3RdID09IG5pbCB0aGVuCi0tICAgICAg ICAgICAgICAgICAgdGFnID0gZHQudGFncy5jcmVhdGUgKHQpCi0tICAgICAgICAgICAgICAgICAg dGFnc19saXN0W3RdID0gdGFnCi0rICAgICAgICAgICAgICAgIGlmIHRhZ3NfbGlzdFt0YWdfbmFt ZV0gPT0gbmlsIHRoZW4KLSsgICAgICAgICAgICAgICAgICB0YWcgPSBkdC50YWdzLmNyZWF0ZSAo dGFnX25hbWUpCi0rICAgICAgICAgICAgICAgICAgdGFnc19saXN0W3RhZ19uYW1lXSA9IHRhZwot ICAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICAgdGFnID0gdGFnc19saXN0 W3RdCi0rICAgICAgICAgICAgICAgICAgdGFnID0gdGFnc19saXN0W3RhZ19uYW1lXQotICAgICAg ICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgICAgaW1nOmF0dGFjaF90YWcgKHRhZykKLSAg ICAgICAgICAgICAgIGVuZAotLS0tIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNj cmlwdHMvY29udHJpYi9naW1wLmx1YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAwMDAwMDAwMCAtMDUw MAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9n aW1wLmx1YQkyMDI2LTA1LTE4IDExOjQxOjMxLjgwMTU2MDMyNCAtMDQwMAotQEAgLTE0Miw4ICsx NDIsOCBAQCBsb2NhbCBmdW5jdGlvbiBnaW1wX2VkaXQoc3RvcmFnZSwgaW1hZ2VfCi0gICBpbWdf bGlzdCA9ICIiCi0gCi0gICBmb3IgXyxleHBfaW1nIGluIHBhaXJzKGltYWdlX3RhYmxlKSBkbwot LSAgICBleHBfaW1nID0gZGYuc2FuaXRpemVfZmlsZW5hbWUoZXhwX2ltZykKLS0gICAgaW1nX2xp c3QgPSBpbWdfbGlzdCAuLmV4cF9pbWcuLiAiICIKLSsgICAgbG9jYWwgc2FuaXRpemVkID0gZGYu c2FuaXRpemVfZmlsZW5hbWUoZXhwX2ltZykKLSsgICAgaW1nX2xpc3QgPSBpbWdfbGlzdCAuLnNh bml0aXplZC4uICIgIgotICAgZW5kCi0gCi0gICBkdC5wcmludChfKCJsYXVuY2hpbmcgR0lNUC4u LiIpKQotLS0tIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJp Yi9pbWFnZV9zdGFjay5sdWEJMjAyNS0xMS0xNCAyMDowNDoyOS4wMDAwMDAwMDAgLTA1MDAKLSsr KyBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvaW1hZ2Vf c3RhY2subHVhCTIwMjYtMDUtMTggMTE6NDE6MzEuODAzNTYwMzQzIC0wNDAwCi1AQCAtMzIzLDgg KzMyMyw4IEBAIGxvY2FsIGZ1bmN0aW9uIGNsZWFudXAoaW1nX2xpc3QpCi0gICBkdC5wcmludF9s b2coImltYWdlIGxpc3QgaXMgIiAuLiBpbWdfbGlzdCkKLSAgIGZpbGVzID0gZHUuc3BsaXQoaW1n X2xpc3QsICIgIikKLSAgIGZvciBfLGYgaW4gaXBhaXJzKGZpbGVzKSBkbwotLSAgICBmID0gc3Ry aW5nLmdzdWIoZiwgJ1tcJ1wiXScsICIiKQotLSAgICBvcy5yZW1vdmUoZikKLSsgICAgbG9jYWwg Y2xlYW5lZCA9IHN0cmluZy5nc3ViKGYsICdbXCdcIl0nLCAiIikKLSsgICAgb3MucmVtb3ZlKGNs ZWFuZWQpCi0gICBlbmQKLSBlbmQKLSAKLS0tLSBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFs L2x1YS1zY3JpcHRzL3Rvb2xzL2dldF9saWJfbWFucGFnZXMubHVhCTIwMjUtMTEtMTQgMjA6MDQ6 MjkuMDAwMDAwMDAwIC0wNTAwCi0rKysgZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5hbC9sdWEt c2NyaXB0cy90b29scy9nZXRfbGliX21hbnBhZ2VzLmx1YQkyMDI2LTA1LTE4IDExOjQxOjMxLjgw MTU2MDMyNCAtMDQwMAotQEAgLTYzLDggKzYzLDggQEAgbG9jYWwgb3V0cHV0ID0gaW8ucG9wZW4o ImNkICIuLmR0LmNvbmZpZwotIC0tIGxvb3AgdGhyb3VnaCB0aGUgbGlicmFyaWVzCi0gCi0gZm9y IGxpbmUgaW4gb3V0cHV0OmxpbmVzKCkgZG8KLS0gIGxpbmUgPSBzdHJpbmcuZ3N1YihsaW5lLCAi LyIsICIuIikKLS0gIGxvY2FsIGxpYl9uYW1lID0gbGluZTpzdWIoMywtNSkKLSsgIGxvY2FsIGNs ZWFuZWRfbGluZSA9IHN0cmluZy5nc3ViKGxpbmUsICIvIiwgIi4iKQotKyAgbG9jYWwgbGliX25h bWUgPSBjbGVhbmVkX2xpbmU6c3ViKDMsLTUpCi0gICBpZiBsaWJfbmFtZTpsZW4oKSA+IDIgdGhl bgotICAgICBsaWJfbmFtZSA9ICJsaWIvIiAuLiBsaWJfbmFtZQotICAgICBsb2NhbCBsaWIgPSBy ZXF1aXJlKGxpYl9uYW1lKQotLS0tIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNj cmlwdHMvdG9vbHMvZ2V0X2xpYmRvYy5sdWEJMjAyNS0xMS0xNCAyMDowNDoyOS4wMDAwMDAwMDAg LTA1MDAKLSsrKyBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xz L2dldF9saWJkb2MubHVhCTIwMjYtMDUtMTggMTE6NDE6MzEuODAzNTYwMzQzIC0wNDAwCi1AQCAt NDAsOCArNDAsOCBAQCBsb2NhbCBvdXRwdXQgPSBpby5wb3BlbigiY2QgIi4uZHQuY29uZmlnCi0g LS0gbG9vcCB0aHJvdWdoIHRoZSBsaWJyYXJpZXMKLSAKLSBmb3IgbGluZSBpbiBvdXRwdXQ6bGlu ZXMoKSBkbwotLSAgbGluZSA9IHN0cmluZy5nc3ViKGxpbmUsICIvIiwgIi4iKQotLSAgbG9jYWwg bGliX25hbWUgPSBsaW5lOnN1YigzLC01KQotKyAgbG9jYWwgY2xlYW5lZF9saW5lID0gc3RyaW5n LmdzdWIobGluZSwgIi8iLCAiLiIpCi0rICBsb2NhbCBsaWJfbmFtZSA9IGNsZWFuZWRfbGluZTpz dWIoMywtNSkKLSAgIGlmIGxpYl9uYW1lOmxlbigpID4gMiB0aGVuCi0gICAgIGxpYl9uYW1lID0g ImxpYi8iIC4uIGxpYl9uYW1lCi0gICAgIGxvY2FsIGxpYiA9IHJlcXVpcmUobGliX25hbWUpCi0t LS0gZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9zY3JpcHRf bWFuYWdlci5sdWEJMjAyNS0xMS0xNCAyMDowNDoyOS4wMDAwMDAwMDAgLTA1MDAKLSsrKyBkYXJr dGFibGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL3NjcmlwdF9tYW5hZ2Vy Lmx1YQkyMDI2LTA1LTE4IDExOjQxOjMxLjc5OTU2MDMwNiAtMDQwMAotQEAgLTg5NCw3ICs4OTQs OSBAQCBsb2NhbCBmdW5jdGlvbiBpbnN0YWxsX3NjcmlwdHMoKQotICAgICAgICAgICBzbS53aWRn ZXRzLmZvbGRlcl9zZWxlY3Rvci5zZWxlY3RlZCA9IGkKLSAgICAgICAgICAgYnJlYWsKLSAgICAg ICAgIGVuZAotLSAgICAgICAgaSA9IGkgKyAxCi0rICAgICAgICAtLSBMdWEgNS41OiBmb3IgbG9v cCBjb250cm9sIHZhcmlhYmxlcyBhcmUgcmVhZC1vbmx5LiBUaGlzIGluY3JlbWVudAotKyAgICAg ICAgLS0gd2FzIGFsd2F5cyBhIG5vLW9wIHNpbmNlIG51bWVyaWMgZm9yIGxvb3BzIHVzZSBhbiBp bnRlcm5hbCBjb3VudGVyLgotKyAgICAgICAgLS0gaSA9IGkgKyAxCi0gICAgICAgZW5kCi0gCi0g ICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJjbGVhcmluZyB0ZXh0IGZpZWxkcyIpCgpkaWZmIC0t Z2l0IGEvZGFya3RhYmxlLTUuNC4xLWx1YS01LjUucGF0Y2ggYi9kYXJrdGFibGUtNS40LjEtbHVh LTUuNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1ZWYwZS4uMDAwMDAw MAotLS0gYS9kYXJrdGFibGUtNS40LjEtbHVhLTUuNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDg4ICswLDAgQEAKLWRpZmYgLXVwIGRhcmt0YWJsZS01LjQuMS9zcmMvQ01ha2VMaXN0cy50eHQu bHVhNTUgZGFya3RhYmxlLTUuNC4xL3NyYy9DTWFrZUxpc3RzLnR4dAotLS0tIGRhcmt0YWJsZS01 LjQuMS9zcmMvQ01ha2VMaXN0cy50eHQubHVhNTUJMjAyNi0wMi0yNyAxNTowODo0Mi43NTU2OTU0 NjggLTA1MDAKLSsrKyBkYXJrdGFibGUtNS40LjEvc3JjL0NNYWtlTGlzdHMudHh0CTIwMjYtMDIt MjcgMTU6MDg6NDkuOTA1MTkzMzY2IC0wNTAwCi1AQCAtNzA2LDE0ICs3MDYsMTQgQEAgY29uZmln dXJlX2ZpbGUoIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRAotICMgQnVpbGQgZXh0ZXJuYWwgZGVw cwotICMKLSBpZihVU0VfTFVBKQotLSAgZmluZF9wYWNrYWdlKEx1YTU0IDUuNCkKLS0gIGlmKEx1 YTU0X0ZPVU5EKQotKyAgZmluZF9wYWNrYWdlKEx1YTU1IDUuNSkKLSsgIGlmKEx1YTU1X0ZPVU5E KQotICAgICBtZXNzYWdlKFNUQVRVUyAiTHVhIHN1cHBvcnQ6IEVuYWJsZWQiKQotLSAgICBpbmNs dWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0x1YTU0X0lOQ0xVREVfRElSU30pCi0tICAgIGxpc3Qo QVBQRU5EIExJQlMgJHtMdWE1NF9MREZMQUdTfSkKLSsgICAgaW5jbHVkZV9kaXJlY3RvcmllcyhT WVNURU0gJHtMdWE1NV9JTkNMVURFX0RJUlN9KQotKyAgICBsaXN0KEFQUEVORCBMSUJTICR7THVh NTVfTERGTEFHU30pCi0gICBlbHNlKCkKLSAgICAgaWYoRE9OVF9VU0VfSU5URVJOQUxfTFVBKQot LSAgICAgIG1lc3NhZ2UoU1RBVFVTICJMdWEgc3VwcG9ydDogU3lzdGVtIGxpYnJhcnkgZm9yIGx1 YSA1LjQgbm90IGZvdW5kICh0byB1c2UgZGFya3RhYmxlJ3MgdmVyc2lvbiB1c2UgLURET05UX1VT RV9JTlRFUk5BTF9MVUE9T2ZmKSIpCi0rICAgICAgbWVzc2FnZShTVEFUVVMgIkx1YSBzdXBwb3J0 OiBTeXN0ZW0gbGlicmFyeSBmb3IgbHVhIDUuNSBub3QgZm91bmQgKHRvIHVzZSBkYXJrdGFibGUn cyB2ZXJzaW9uIHVzZSAtRERPTlRfVVNFX0lOVEVSTkFMX0xVQT1PZmYpIikKLSAgICAgICBzZXQo VVNFX0xVQSBPRkYpCi0gICAgIGVsc2UoRE9OVF9VU0VfSU5URVJOQUxfTFVBKQotICAgICAgIG1l c3NhZ2UoU1RBVFVTICJMdWEgc3VwcG9ydDogU3lzdGVtIGxpYnJhcnkgbm90IGZvdW5kICh1c2lu ZyBkYXJrdGFibGUncyB2ZXJzaW9uKSIpCi1AQCAtNzc1LDkgKzc3NSw5IEBAIGVsc2UoVVNFX0xV QSkKLSBlbmRpZihVU0VfTFVBKQotIAotIGlmKFVTRV9MVUEpCi0tICBpZihOT1QgTHVhNTRfRk9V TkQpCi0rICBpZihOT1QgTHVhNTVfRk9VTkQpCi0gICAgIGxpc3QoQVBQRU5EIExJQl9ERVBTIGx1 YSkgIyAybmQgaGFsZiBvZiB0aGUgdWdsaW5lc3MgOi8KLS0gIGVuZGlmKE5PVCBMdWE1NF9GT1VO RCkKLSsgIGVuZGlmKE5PVCBMdWE1NV9GT1VORCkKLSAgICMgbGlibGF1dG9jIGZvciBsdWEgYXV0 b21hdGVkIGludGVyZmFjZSBnZW5lcmF0aW9uCi0gICBhZGRfbGlicmFyeShsYXV0b2Nfc3RhdGlj IFNUQVRJQyBJTVBPUlRFRCkKLSAgIHNldF90YXJnZXRfcHJvcGVydGllcyhsYXV0b2Nfc3RhdGlj IFBST1BFUlRJRVMgSU1QT1JURURfTE9DQVRJT04gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9 L2V4dGVybmFsL0x1YUF1dG9DL2xpYmxhdXRvYy5hIFBPU0lUSU9OX0lOREVQRU5ERU5UX0NPREUg VHJ1ZSkKLWRpZmYgLXVwIGRhcmt0YWJsZS01LjQuMS9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5j bWFrZS5sdWE1NSBkYXJrdGFibGUtNS40LjEvY21ha2UvbW9kdWxlcy9GaW5kTHVhNTUuY21ha2UK LS0tLSBkYXJrdGFibGUtNS40LjEvY21ha2UvbW9kdWxlcy9GaW5kTHVhNTUuY21ha2UubHVhNTUJ MjAyNi0wMi0yNyAxNToxMzo0OS4wMzc1NzUwMjkgLTA1MDAKLSsrKyBkYXJrdGFibGUtNS40LjEv Y21ha2UvbW9kdWxlcy9GaW5kTHVhNTUuY21ha2UJMjAyNi0wMi0yNyAxNToxMjo1OS45NDI1MzM3 MzkgLTA1MDAKLUBAIC0wLDAgKzEsNDkgQEAKLStTRVQoTHVhX1ZFUlNJT05fVE9PX0hJR0ggNS42 KQotKwotK2luY2x1ZGUoUHJlYnVpbHQpCi0raW5jbHVkZShMaWJGaW5kTWFjcm9zKQotKwotK2xp YmZpbmRfcGtnX3NlYXJjaF9tb2R1bGUoTHVhNTUgbHVhNTUgbHVhNS41IGx1YS01LjUgbHVhKQot KwotK2lmKEx1YTU1X0ZJTkRfVkVSU0lPTikKLSsgIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVS U0lPTiAzLjEwLjApCi0rICBzZXQoTHVhNTVfRkFJTEVEX1ZFUlNJT05fQ0hFQ0sgdHJ1ZSkKLSsK LSsgIGlmKEx1YTU1X0ZJTkRfVkVSU0lPTl9FWEFDVCkKLSsgICAgaWYoTHVhNTVfVkVSU0lPTiBW RVJTSU9OX0VRVUFMIEx1YTU1X0ZJTkRfVkVSU0lPTikKLSsgICAgICBzZXQoTHVhNTVfRkFJTEVE X1ZFUlNJT05fQ0hFQ0sgZmFsc2UpCi0rICAgIGVuZGlmKCkKLSsgIGVsc2UoKQotKyAgICBpZihM dWE1NV9WRVJTSU9OIFZFUlNJT05fRVFVQUwgICBMdWE1NV9GSU5EX1ZFUlNJT04gT1IKLSsgICAg ICAgTHVhNTVfVkVSU0lPTiBWRVJTSU9OX0dSRUFURVIgTHVhNTVfRklORF9WRVJTSU9OIEFORAot KyAgICAgICBMdWE1NV9WRVJTSU9OIFZFUlNJT05fTEVTUyBMdWFfVkVSU0lPTl9UT09fSElHSCkK LSsgICAgICBzZXQoTHVhNTVfRkFJTEVEX1ZFUlNJT05fQ0hFQ0sgZmFsc2UpCi0rICAgIGVuZGlm KCkKLSsgIGVuZGlmKCkKLSsKLSsgIGlmKEx1YTU1X0ZBSUxFRF9WRVJTSU9OX0NIRUNLKQotKyAg ICBpZihMdWE1NV9GSU5EX1JFUVVJUkVEIEFORCBOT1QgTHVhNTVfRklORF9RVUlFVExZKQotKyAg ICAgICAgaWYoTHVhNTVfRklORF9WRVJTSU9OX0VYQUNUKQotKyAgICAgICAgICAgIG1lc3NhZ2Uo RkFUQUxfRVJST1IgIkx1YTUuNSB2ZXJzaW9uIGNoZWNrIGZhaWxlZC4gIFZlcnNpb24gJHtMdWE1 NV9WRVJTSU9OfSB3YXMgZm91bmQsIHZlcnNpb24gJHtMdWE1NV9GSU5EX1ZFUlNJT059IGlzIG5l ZWRlZCBleGFjdGx5LiIpCi0rICAgICAgICBlbHNlKEx1YTU1X0ZJTkRfVkVSU0lPTl9FWEFDVCkK LSsgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJMdWE1LjUgdmVyc2lvbiBjaGVjayBm YWlsZWQuICBWZXJzaW9uICR7THVhNTVfVkVSU0lPTn0gd2FzIGZvdW5kLCBhdCBsZWFzdCB2ZXJz aW9uICR7THVhNTVfRklORF9WRVJTSU9OfSBpcyByZXF1aXJlZCIpCi0rICAgICAgICBlbmRpZihM dWE1NV9GSU5EX1ZFUlNJT05fRVhBQ1QpCi0rICAgIGVuZGlmKEx1YTU1X0ZJTkRfUkVRVUlSRUQg QU5EIE5PVCBMdWE1NV9GSU5EX1FVSUVUTFkpCi0rCi0rICAgIHNldChMdWE1NV9GT1VORCBmYWxz ZSkKLSsgIGVuZGlmKEx1YTU1X0ZBSUxFRF9WRVJTSU9OX0NIRUNLKQotKwotK2VuZGlmKEx1YTU1 X0ZJTkRfVkVSU0lPTikKLSsKLStpZihMdWE1NV9GT1VORCkKLSsgIHNldChMdWE1NSBPTiBDQUNI RSBCT09MICJCdWlsZCB3aXRoIGx1YTUuNSBzdXBwb3J0LiIpCi0rICBpZihBUFBMRSkKLSsgICAg Zm9yZWFjaChpICR7THVhNTVfTElCUkFSSUVTfSkKLSsgICAgICBmaW5kX2xpYnJhcnkoX2x1YTU1 X0xJQlJBUlkgTkFNRVMgJHtpfSBISU5UUyAke0x1YTU1X0xJQlJBUllfRElSU30pCi0rICAgICAg bGlzdChBUFBFTkQgTHVhNTVfTElCUkFSSUVTX0ZVTEwgJHtfbHVhNTVfTElCUkFSWX0pCi0rICAg ICAgdW5zZXQoX2x1YTU1X0xJQlJBUlkgQ0FDSEUpCi0rICAgIGVuZGZvcmVhY2goaSkKLSsgICAg c2V0KEx1YTU1X0xJQlJBUklFUyAke0x1YTU1X0xJQlJBUklFU19GVUxMfSkKLSsgICAgdW5zZXQo THVhNTVfTElCUkFSSUVTX0ZVTEwgQ0FDSEUpCi0rICBlbmRpZigpCi0rZW5kaWYoTHVhNTVfRk9V TkQpCgpkaWZmIC0tZ2l0IGEvZGFya3RhYmxlLnNwZWMgYi9kYXJrdGFibGUuc3BlYwppbmRleCAz YmRmNDNkLi43OGI0NmFlIDEwMDY0NAotLS0gYS9kYXJrdGFibGUuc3BlYworKysgYi9kYXJrdGFi bGUuc3BlYwpAQCAtNiw3ICs2LDcgQEAKICMjIwogCiBOYW1lOiBkYXJrdGFibGUKLVZlcnNpb246 IDUuNC4xCitWZXJzaW9uOiA1LjYuMQogUmVsZWFzZTogJWF1dG9yZWxlYXNlCiAKIFN1bW1hcnk6 IFV0aWxpdHkgdG8gb3JnYW5pemUgYW5kIGRldmVsb3AgcmF3IGltYWdlcwpAQCAtMTgsMTYgKzE4 LDggQEAgU291cmNlMDogaHR0cHM6Ly9naXRodWIuY29tL2Rhcmt0YWJsZS1vcmcvZGFya3RhYmxl L3JlbGVhc2VzL2Rvd25sb2FkL3JlbGVhc2UtJXsKICNTb3VyY2UxOiBodHRwczovL2dpdGh1Yi5j b20vZGFya3RhYmxlLW9yZy9kYXJrdGFibGUvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0lJXt2 ZXJzaW9ufS8lJXtuYW1lfS0lJXt2ZXJzaW9ufS50YXIueHouYXNjCiAjU291cmNlMjogaHR0cHM6 Ly9rZXlzZXJ2ZXIudWJ1bnR1LmNvbS9wa3MvbG9va3VwP29wPWdldCZzZWFyY2g9MHhmMTBmOTY4 NjY1MmIwZTk0OWZjZDk0YzMxOGRjYTEyM2Y5NDliZDNiCiAKLVBhdGNoMDogMDAwMS1BZGQtNS40 LjEtaW4tYXBwZGF0YS5wYXRjaAotCi1QYXRjaDE6IGRhcmt0YWJsZS01LjQuMS1sdWEtNS41LnBh dGNoCi0jIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MjQ1NDIy MgotUGF0Y2gyOiBjdmUtMjAyNi01MzE4LnBhdGNoCi0jIFRoaXMgdXBzdHJlYW0gY2hhbmdlIGlz IG5lY2Vzc2FyeSBmb3IgdGhlIENWRS0yMDI2LTUzMTggcGF0Y2ggYWJvdmUgdG8gYWN0dWFsbHkg ZmluZCB0aGUgZW51bSB2YWx1ZXMKLSMgaHR0cHM6Ly9naXRodWIuY29tL0xpYlJhdy9MaWJSYXcv Y29tbWl0LzhkYzY4ZTJhNDU1MWYwMzgzOGI3ZjJkYTkyNzZlNWQxZWIyMGJjYTAKLVBhdGNoMzog OGRjNjhlMmE0NTUxZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMC5wYXRjaAogIyBodHRwczov L2dpdGh1Yi5jb20vZGFya3RhYmxlLW9yZy9sdWEtc2NyaXB0cy9wdWxsLzY3OAotUGF0Y2g0OiBk YXJrdGFibGUtNS40LjEtbHVhLTUuNS1zY3JpcHRzLnBhdGNoCitQYXRjaDA6IGx1YS5wYXRjaAog CiBCdWlsZFJlcXVpcmVzOiBjYWlyby1kZXZlbAogIyBjbGFuZyBpcyBvcHRpb25hbCAoT3BlbkNM IGtlcm5lbCBidWlsZCB0ZXN0KQpAQCAtMzgsMTcgKzMwLDkgQEAgQnVpbGRSZXF1aXJlczogY29s b3JkLWRldmVsCiBCdWlsZFJlcXVpcmVzOiBjdXBzLWRldmVsCiBCdWlsZFJlcXVpcmVzOiBkZXNr dG9wLWZpbGUtdXRpbHMKIEJ1aWxkUmVxdWlyZXM6IGV4aXYyLWRldmVsID49IDAuMjcuMgotJWlm ICV7ZGVmaW5lZCBmZWRvcmF9CiBCdWlsZFJlcXVpcmVzOiBnY2MKLSVlbmRpZgotJWlmIDAlez9y aGVsfQotQnVpbGRSZXF1aXJlczogZ2NjLXRvb2xzZXQtMTIKLSNCdWlsZFJlcXVpcmVzOiBnY2Mt dG9vbHNldC0xMi1nY2MKLSNCdWlsZFJlcXVpcmVzOiBnY2MtdG9vbHNldC0xMi1hbm5vYmluLXBs dWdpbi1nY2MKLSVlbmRpZgotJWlmICV7ZGVmaW5lZCBmZWRvcmF9Ci1CdWlsZFJlcXVpcmVzOiBn bWljLWRldmVsCi0lZW5kaWYKK0J1aWxkUmVxdWlyZXM6IGdsaWIyLWRldmVsID49IDIuNTYKK0J1 aWxkUmVxdWlyZXM6IGdtaWMtZGV2ZWwgPj0gMi43LjAKIEJ1aWxkUmVxdWlyZXM6IEdyYXBoaWNz TWFnaWNrLWRldmVsCiBCdWlsZFJlcXVpcmVzOiBndGszLWRldmVsID49IDMuMjQuMTUKIEJ1aWxk UmVxdWlyZXM6IGludGx0b29sCkBAIC02MCwxMCArNDQsOCBAQCBCdWlsZFJlcXVpcmVzOiBsZW5z ZnVuLWRldmVsCiBCdWlsZFJlcXVpcmVzOiBsaWJhcHBzdHJlYW0tZ2xpYgogQnVpbGRSZXF1aXJl czogY21ha2UobGliYXZpZikgPj0gMC45LjMKIEJ1aWxkUmVxdWlyZXM6IGxpYmN1cmwtZGV2ZWwg Pj0gNy41NgotQnVpbGRSZXF1aXJlczogbGliZ3Bob3RvMi1kZXZlbCA+PSAyLjQuNQotJWlmICgo JXtkZWZpbmVkIHJoZWx9ICYmIDAlez9yaGVsfSA+PSA5KSB8fCAle2RlZmluZWQgZmVkb3JhfSkK K0J1aWxkUmVxdWlyZXM6IGxpYmdwaG90bzItZGV2ZWwgPj0gMi41CiBCdWlsZFJlcXVpcmVzOiBs aWJoZWlmLWRldmVsID49IDEuMTMuMAotJWVuZGlmCiBCdWlsZFJlcXVpcmVzOiBsaWJpY3UtZGV2 ZWwKIEJ1aWxkUmVxdWlyZXM6IGxpYmpwZWctZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6IGxpYmp4bC1k ZXZlbCA+PSAwLjcuMApAQCAtNzEsMjQgKzUzLDIwIEBAIEJ1aWxkUmVxdWlyZXM6IGxpYnBuZy1k ZXZlbCA+PSAxLjUuMAogQnVpbGRSZXF1aXJlczogbGlicnN2ZzItZGV2ZWwgPj0gMi4yNgogQnVp bGRSZXF1aXJlczogbGlic2VjcmV0LWRldmVsCiBCdWlsZFJlcXVpcmVzOiBsaWJ0aWZmLWRldmVs Ci1CdWlsZFJlcXVpcmVzOiBsaWJ3ZWJwLWRldmVsCitCdWlsZFJlcXVpcmVzOiBsaWJ3ZWJwLWRl dmVsID49IDAuMy4wCiAjIGxsdm0tZGV2ZWwgaXMgb3B0aW9uYWwgKE9wZW5DTCBrZXJuZWwgYnVp bGQgdGVzdCkKIEJ1aWxkUmVxdWlyZXM6IGxsdm0tZGV2ZWwgPj0gNwotJWlmICgle2RlZmluZWQg cmhlbH0gJiYgMCV7P3JoZWx9ID49IDkpIHx8ICV7ZGVmaW5lZCBmZWRvcmF9CiBCdWlsZFJlcXVp cmVzOiBwa2djb25maWcobHVhKQotJWVuZGlmCiAjIG9wZW5jbC1oZWFkZXJzIGlzIG9wdGlvbmFs IChPcGVuQ0wga2VybmVsIGJ1aWxkIHRlc3QpCiBCdWlsZFJlcXVpcmVzOiBvcGVuY2wtaGVhZGVy cwotJWlmICgle2RlZmluZWQgcmhlbH0gJiYgMCV7P3JoZWx9ID49IDkpIHx8ICV7ZGVmaW5lZCBm ZWRvcmF9CiBCdWlsZFJlcXVpcmVzOiBjbWFrZShPcGVuRVhSKSA+IDMuMAotQnVpbGRSZXF1aXJl czogY21ha2UoSW1hdGgpCi0lZWxzZQotQnVpbGRSZXF1aXJlczogT3BlbkVYUi1kZXZlbAorQnVp bGRSZXF1aXJlczogY21ha2UoSW1hdGgpID49IDMuMS4wCislaWYgKCV7ZGVmaW5lZCBmZWRvcmF9 ICYmIDAlez9mZWRvcmF9ID4gNDMpCitCdWlsZFJlcXVpcmVzOiBsaWJhcmNoaXZlLWRldmVsID49 IDMuOC41CitCdWlsZFJlcXVpcmVzOiBvbm54cnVudGltZS1kZXZlbCA+PSAxLjE4CiAlZW5kaWYK IEJ1aWxkUmVxdWlyZXM6IG9wZW5qcGVnMi1kZXZlbAotJWlmICV7ZGVmaW5lZCBmZWRvcmF9CiBC dWlsZFJlcXVpcmVzOiBvc20tZ3BzLW1hcC1kZXZlbCA+PSAxLjAKLSVlbmRpZgogQnVpbGRSZXF1 aXJlczogcGVybC1pbnRlcnByZXRlcgogQnVpbGRSZXF1aXJlczogcGVybChGaW5kQmluKQogQnVp bGRSZXF1aXJlczogcGVybChsaWIpCkBAIC05Niw5ICs3NCwxMCBAQCBCdWlsZFJlcXVpcmVzOiBw a2djb25maWcgPj0gMC4yMgogQnVpbGRSZXF1aXJlczogcG80YQogQnVpbGRSZXF1aXJlczogcGVy bC1wb2RsYXRvcnMKIEJ1aWxkUmVxdWlyZXM6IHBvcnRtaWRpLWRldmVsCi1CdWlsZFJlcXVpcmVz OiBwdWdpeG1sLWRldmVsID49IDEuNQorQnVpbGRSZXF1aXJlczogcG90cmFjZS1kZXZlbCA+PSAx LjE2CitCdWlsZFJlcXVpcmVzOiBwdWdpeG1sLWRldmVsID49IDEuOAogQnVpbGRSZXF1aXJlczog Y21ha2UoU0RMMikKLUJ1aWxkUmVxdWlyZXM6IHNxbGl0ZS1kZXZlbAorQnVpbGRSZXF1aXJlczog c3FsaXRlLWRldmVsID49IDMuMjYKIEJ1aWxkUmVxdWlyZXM6IHpsaWItZGV2ZWwgPj0gMS4yLjEx CiAKIFJlcXVpcmVzOiBpc28tY29kZXMgPj0gMy42NgpAQCAtMTA4LDkgKzg3LDYgQEAgUmVxdWly ZXM6IGlzby1jb2RlcyA+PSAzLjY2CiBQcm92aWRlczogYnVuZGxlZChyYXdzcGVlZCkKICMgaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yMjUyNDMyCiBQcm92aWRl czogYnVuZGxlZChsaWJyYXcpCi0laWYgJXtkZWZpbmVkIHJoZWx9ICYmIDAlez9yaGVsfSA9PSA4 Ci1Qcm92aWRlczogYnVuZGxlZChsdWEpCi0lZW5kaWYKIAogIyBVbnN1cHBvcnRlZCBDUFUgYXJj aGl0ZWN0dXJlcwogIyBmaWxsZWQgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVn LmNnaT9pZD0yMDM4Njg0CkBAIC0xNTksMzUgKzEzNSwxOCBAQCBzZWQgLWkgLWUgJ3MsIFwiZXh0 ZXJuYWwvQ0wvXCpcLmhcIiAsICwnIHNyYy9DTWFrZUxpc3RzLnR4dAogCiAKICVidWlsZAotCi0j Ci0jIEdlcm1hbm8gTWFzc3VsbG86IEkgd2FudGVkIHRvIHVzZSAlJWVsc2VpZiBidXQgaXQgaXMg bm90IHlldCBhY3RpdmUgaW4KLSMgRmVkb3JhLCBldGMuLCBkZXNwaXRlIGlzIHN1cHBvcnRlZCB1 cHN0cmVhbS4gSSBkaWQgbm90IGNvbXBhcmUgdGhlIEZlZG9yYSBSUE0gdmVyc2lvbgotIyBidXQg SSBlbXBpcmljYWxseSB2ZXJpZmllZCB0aGF0ICUlZWxzZWlmIGFuZCAlJWVsaWYgZG8gbm90IHdv cmsgaGVyZSwgZXZlbiBpZiB5b3UgZG9uJ3QgZ2V0Ci0jIGVycm9ycyBkdXJpbmcgYnVpbGRzCi0j IGh0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vaXNzdWVzLzMx MQotIyBodHRwczovL2dpdGh1Yi5jb20vZGViYnVpbGQvZGViYnVpbGQvaXNzdWVzLzE4MgotIyAK LSMKLSMlJWlmICUle2RlZmluZWQgcmhlbH0KLSVpZiAle2RlZmluZWQgcmhlbH0KLS4gL29wdC9y aC9nY2MtdG9vbHNldC0xMi9lbmFibGUKLSVlbmRpZgotJWlmICgle2RlZmluZWQgcmhlbH0gJiYg MCV7P3JoZWx9ID09IDgpCi1ta2RpciAle190YXJnZXRfcGxhdGZvcm19Ci1wdXNoZCAle190YXJn ZXRfcGxhdGZvcm19CislaWYgKCV7ZGVmaW5lZCBmZWRvcmF9ICYmIDAlez9mZWRvcmF9ID4gNDMp CiAlY21ha2UgXAogICAgICAgICAtRENNQUtFX0xJQlJBUllfUEFUSDpQQVRIPSV7X2xpYmRpcn0g XAogICAgICAgICAtRFVTRV9HRU86Qk9PTEVBTj1PTiBcCiAgICAgICAgIC1EQ01BS0VfQlVJTERf VFlQRTpTVFJJTkc9UmVsZWFzZSBcCiAgICAgICAgIC1EQklOQVJZX1BBQ0tBR0VfQlVJTEQ9MSBc Ci0gICAgICAgIC1ERE9OVF9VU0VfSU5URVJOQUxfTFVBPU9GRiBcCiAgICAgICAgIC1EQlVJTERf Tk9JU0VfVE9PTFM9T04gXAogICAgICAgICAtREJVSUxEX0NVUlZFX1RPT0xTPU9OIFwKLSAgICAg ICAgLURIQVZFX0dNSUM9T0ZGIFwKICAgICAgICAgLURSQVdTUEVFRF9FTkFCTEVfTFRPPU9OIFwK LSAgICAgICAgLi4KLSVlbHNlCisgICAgICAgIC1EVVNFX0FJPU9OIFwKKyAgICAgICAgLURPTk5Y UlVOVElNRV9PRkZMSU5FPU9OCislZWxpZiAoJXtkZWZpbmVkIGZlZG9yYX0gJiYgMCV7P2ZlZG9y YX0gPT0gNDMpCiAlY21ha2UgXAogICAgICAgICAtRENNQUtFX0xJQlJBUllfUEFUSDpQQVRIPSV7 X2xpYmRpcn0gXAogICAgICAgICAtRFVTRV9HRU86Qk9PTEVBTj1PTiBcCkBAIC0xOTgsMjUgKzE1 NywxMyBAQCBwdXNoZCAle190YXJnZXRfcGxhdGZvcm19CiAgICAgICAgIC1EUkFXU1BFRURfRU5B QkxFX0xUTz1PTgogJWVuZGlmCiAKLSVpZiAoKCV7ZGVmaW5lZCByaGVsfSAmJiAwJXs/cmhlbH0g PiA4KSB8fCAle2RlZmluZWQgZmVkb3JhfSkKKwogJWNtYWtlX2J1aWxkCi0lZWxzZQotJW1ha2Vf YnVpbGQKLXBvcGQKLSVlbmRpZgogCiAKICVpbnN0YWxsCi0laWYgJXtkZWZpbmVkIHJoZWx9Ci0u IC9vcHQvcmgvZ2NjLXRvb2xzZXQtMTIvZW5hYmxlCi0lZW5kaWYKLSVpZiAoKCV7ZGVmaW5lZCBy aGVsfSAmJiAwJXs/cmhlbH0gPiA4KSB8fCAle2RlZmluZWQgZmVkb3JhfSkKICVjbWFrZV9pbnN0 YWxsCi0lZWxzZQotcHVzaGQgJXtfdGFyZ2V0X3BsYXRmb3JtfQotJW1ha2VfaW5zdGFsbAotcG9w ZAotJWVuZGlmCisKIAogJWZpbmRfbGFuZyAle25hbWV9CiBybSAtcmYgJXtidWlsZHJvb3R9JXtf ZGF0YWRpcn0vZG9jL2Rhcmt0YWJsZQoKZGlmZiAtLWdpdCBhL2x1YS5wYXRjaCBiL2x1YS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGNkMzIzCi0tLSAvZGV2L251 bGwKKysrIGIvbHVhLnBhdGNoCkBAIC0wLDAgKzEsMzA2OSBAQAorZGlmZiAtdXJOciBkYXJrdGFi bGUtNS42LjAtb3JpZy9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5jbWFrZSBkYXJrdGFibGUtNS42 LjAvY21ha2UvbW9kdWxlcy9GaW5kTHVhNTUuY21ha2UKKy0tLSBkYXJrdGFibGUtNS42LjAtb3Jp Zy9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5jbWFrZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAw MDAwMCArMDEwMAorKysrIGRhcmt0YWJsZS01LjYuMC9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5j bWFrZQkyMDI2LTA5LTAxIDA5OjM5OjU0Ljk5MTEzNDQ3OCArMDIwMAorQEAgLTAsMCArMSw0OSBA QAorK1NFVChMdWFfVkVSU0lPTl9UT09fSElHSCA1LjYpCisrCisraW5jbHVkZShQcmVidWlsdCkK KytpbmNsdWRlKExpYkZpbmRNYWNyb3MpCisrCisrbGliZmluZF9wa2dfc2VhcmNoX21vZHVsZShM dWE1NSBsdWE1NSBsdWE1LjUgbHVhLTUuNSBsdWEpCisrCisraWYoTHVhNTVfRklORF9WRVJTSU9O KQorKyAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMTAuMCkKKysgIHNldChMdWE1 NV9GQUlMRURfVkVSU0lPTl9DSEVDSyB0cnVlKQorKworKyAgaWYoTHVhNTVfRklORF9WRVJTSU9O X0VYQUNUKQorKyAgICBpZihMdWE1NV9WRVJTSU9OIFZFUlNJT05fRVFVQUwgTHVhNTVfRklORF9W RVJTSU9OKQorKyAgICAgIHNldChMdWE1NV9GQUlMRURfVkVSU0lPTl9DSEVDSyBmYWxzZSkKKysg ICAgZW5kaWYoKQorKyAgZWxzZSgpCisrICAgIGlmKEx1YTU1X1ZFUlNJT04gVkVSU0lPTl9FUVVB TCAgIEx1YTU1X0ZJTkRfVkVSU0lPTiBPUgorKyAgICAgICBMdWE1NV9WRVJTSU9OIFZFUlNJT05f R1JFQVRFUiBMdWE1NV9GSU5EX1ZFUlNJT04gQU5ECisrICAgICAgIEx1YTU1X1ZFUlNJT04gVkVS U0lPTl9MRVNTIEx1YV9WRVJTSU9OX1RPT19ISUdIKQorKyAgICAgIHNldChMdWE1NV9GQUlMRURf VkVSU0lPTl9DSEVDSyBmYWxzZSkKKysgICAgZW5kaWYoKQorKyAgZW5kaWYoKQorKworKyAgaWYo THVhNTVfRkFJTEVEX1ZFUlNJT05fQ0hFQ0spCisrICAgIGlmKEx1YTU1X0ZJTkRfUkVRVUlSRUQg QU5EIE5PVCBMdWE1NV9GSU5EX1FVSUVUTFkpCisrICAgICAgICBpZihMdWE1NV9GSU5EX1ZFUlNJ T05fRVhBQ1QpCisrICAgICAgICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiTHVhNS41IHZlcnNp b24gY2hlY2sgZmFpbGVkLiAgVmVyc2lvbiAke0x1YTU1X1ZFUlNJT059IHdhcyBmb3VuZCwgdmVy c2lvbiAke0x1YTU1X0ZJTkRfVkVSU0lPTn0gaXMgbmVlZGVkIGV4YWN0bHkuIikKKysgICAgICAg IGVsc2UoTHVhNTVfRklORF9WRVJTSU9OX0VYQUNUKQorKyAgICAgICAgICAgIG1lc3NhZ2UoRkFU QUxfRVJST1IgIkx1YTUuNSB2ZXJzaW9uIGNoZWNrIGZhaWxlZC4gIFZlcnNpb24gJHtMdWE1NV9W RVJTSU9OfSB3YXMgZm91bmQsIGF0IGxlYXN0IHZlcnNpb24gJHtMdWE1NV9GSU5EX1ZFUlNJT059 IGlzIHJlcXVpcmVkIikKKysgICAgICAgIGVuZGlmKEx1YTU1X0ZJTkRfVkVSU0lPTl9FWEFDVCkK KysgICAgZW5kaWYoTHVhNTVfRklORF9SRVFVSVJFRCBBTkQgTk9UIEx1YTU1X0ZJTkRfUVVJRVRM WSkKKysKKysgICAgc2V0KEx1YTU1X0ZPVU5EIGZhbHNlKQorKyAgZW5kaWYoTHVhNTVfRkFJTEVE X1ZFUlNJT05fQ0hFQ0spCisrCisrZW5kaWYoTHVhNTVfRklORF9WRVJTSU9OKQorKworK2lmKEx1 YTU1X0ZPVU5EKQorKyAgc2V0KEx1YTU1IE9OIENBQ0hFIEJPT0wgIkJ1aWxkIHdpdGggbHVhNS41 IHN1cHBvcnQuIikKKysgIGlmKEFQUExFKQorKyAgICBmb3JlYWNoKGkgJHtMdWE1NV9MSUJSQVJJ RVN9KQorKyAgICAgIGZpbmRfbGlicmFyeShfbHVhNTVfTElCUkFSWSBOQU1FUyAke2l9IEhJTlRT ICR7THVhNTVfTElCUkFSWV9ESVJTfSkKKysgICAgICBsaXN0KEFQUEVORCBMdWE1NV9MSUJSQVJJ RVNfRlVMTCAke19sdWE1NV9MSUJSQVJZfSkKKysgICAgICB1bnNldChfbHVhNTVfTElCUkFSWSBD QUNIRSkKKysgICAgZW5kZm9yZWFjaChpKQorKyAgICBzZXQoTHVhNTVfTElCUkFSSUVTICR7THVh NTVfTElCUkFSSUVTX0ZVTEx9KQorKyAgICB1bnNldChMdWE1NV9MSUJSQVJJRVNfRlVMTCBDQUNI RSkKKysgIGVuZGlmKCkKKytlbmRpZihMdWE1NV9GT1VORCkKK2RpZmYgLXVyTnIgZGFya3RhYmxl LTUuNi4wLW9yaWcvc3JjL0NNYWtlTGlzdHMudHh0IGRhcmt0YWJsZS01LjYuMC9zcmMvQ01ha2VM aXN0cy50eHQKKy0tLSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvQ01ha2VMaXN0cy50eHQJMjAy Ni0wNi0yMSAxMDoyMDoyMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBkYXJrdGFibGUtNS42LjAvc3Jj L0NNYWtlTGlzdHMudHh0CTIwMjYtMDktMDEgMDk6NTA6MzkuMzM1Mzg4NzUyICswMjAwCitAQCAt NzYwLDE0ICs3NjAsMTQgQEAKKyAjIEJ1aWxkIGV4dGVybmFsIGRlcHMKKyAjCisgaWYoVVNFX0xV QSkKKy0gIGZpbmRfcGFja2FnZShMdWE1NCA1LjQpCistICBpZihMdWE1NF9GT1VORCkKKysgIGZp bmRfcGFja2FnZShMdWE1NSA1LjUpCisrICBpZihMdWE1NV9GT1VORCkKKyAgICAgbWVzc2FnZShT VEFUVVMgIkx1YSBzdXBwb3J0OiBFbmFibGVkIikKKy0gICAgaW5jbHVkZV9kaXJlY3RvcmllcyhT WVNURU0gJHtMdWE1NF9JTkNMVURFX0RJUlN9KQorLSAgICBsaXN0KEFQUEVORCBMSUJTICR7THVh NTRfTERGTEFHU30pCisrICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7THVhNTVfSU5D TFVERV9ESVJTfSkKKysgICAgbGlzdChBUFBFTkQgTElCUyAke0x1YTU1X0xERkxBR1N9KQorICAg ZWxzZSgpCisgICAgIGlmKERPTlRfVVNFX0lOVEVSTkFMX0xVQSkKKy0gICAgICBtZXNzYWdlKEZB VEFMX0VSUk9SICJMdWEgc3VwcG9ydDogU3lzdGVtIGxpYnJhcnkgZm9yIEx1YSA1LjQgbm90IGZv dW5kICh0byB1c2UgZGFya3RhYmxlJ3MgdmVyc2lvbiBhZGQgLURET05UX1VTRV9JTlRFUk5BTF9M VUE9T2ZmKSIpCisrICAgICAgbWVzc2FnZShTVEFUVVMgIkx1YSBzdXBwb3J0OiBTeXN0ZW0gbGli cmFyeSBmb3IgbHVhIDUuNSBub3QgZm91bmQgKHRvIHVzZSBkYXJrdGFibGUncyB2ZXJzaW9uIHVz ZSAtRERPTlRfVVNFX0lOVEVSTkFMX0xVQT1PZmYpIikKKyAgICAgZWxzZShET05UX1VTRV9JTlRF Uk5BTF9MVUEpCisgICAgICAgbWVzc2FnZShTVEFUVVMgIkx1YSBzdXBwb3J0OiBTeXN0ZW0gbGli cmFyeSBub3QgZm91bmQgKHVzaW5nIGRhcmt0YWJsZSdzIHZlcnNpb24pIikKKyAgICAgICBpbmNs dWRlX2RpcmVjdG9yaWVzKCR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9leHRlcm5hbC9sdWEv c3JjKQorQEAgLTgzMCw5ICs4MzAsOSBAQAorIGVuZGlmKFVTRV9MVUEpCisgCisgaWYoVVNFX0xV QSkKKy0gIGlmKE5PVCBMdWE1NF9GT1VORCkKKysgIGlmKE5PVCBMdWE1NV9GT1VORCkKKyAgICAg bGlzdChBUFBFTkQgTElCX0RFUFMgbHVhKSAjIDJuZCBoYWxmIG9mIHRoZSB1Z2xpbmVzcyA6Lwor LSAgZW5kaWYoTk9UIEx1YTU0X0ZPVU5EKQorKyAgZW5kaWYoTk9UIEx1YTU1X0ZPVU5EKQorICAg IyBsaWJsYXV0b2MgZm9yIGx1YSBhdXRvbWF0ZWQgaW50ZXJmYWNlIGdlbmVyYXRpb24KKyAgIGFk ZF9saWJyYXJ5KGxhdXRvY19zdGF0aWMgU1RBVElDIElNUE9SVEVEKQorICAgc2V0X3RhcmdldF9w cm9wZXJ0aWVzKGxhdXRvY19zdGF0aWMgUFJPUEVSVElFUyBJTVBPUlRFRF9MT0NBVElPTiAke0NN QUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZXh0ZXJuYWwvTHVhQXV0b0MvbGlibGF1dG9jLmEgUE9T SVRJT05fSU5ERVBFTkRFTlRfQ09ERSBUcnVlKQorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAt b3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9lbmZ1c2VBZHZhbmNlZC5sdWEg ZGFya3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFk dmFuY2VkLmx1YQorLS0tIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2Ny aXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1YQkyMDI2LTA2LTEyIDA1OjA2OjM4LjAwMDAw MDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMv Y29udHJpYi9lbmZ1c2VBZHZhbmNlZC5sdWEJMjAyNi0wOS0wMSAwOTo0MjowNC4zNzA5Mjg5MTgg KzAyMDAKK0BAIC01MjcsOSArNTI3LDkgQEAKKyAgICAgICAgICAgICBsb2NhbCBzZXRfdGFnID0g R1VJLlRhcmdldC5hZGRfdGFncy50ZXh0CisgICAgICAgICAgICAgaWYgc2V0X3RhZyB+PSBuaWwg dGhlbiAtLWFkZCBhZGRpdGlvbmFsIHVzZXItc3BlY2lmaWVkIHRhZ3MKKyAgICAgICAgICAgICAg ICAgZm9yIHRhZyBpbiBzdHJpbmcuZ21hdGNoKHNldF90YWcsICdbXixdKycpIGRvCistICAgICAg ICAgICAgICAgICAgICB0YWcgPSBDbGVhblNwYWNlcyh0YWcpCistICAgICAgICAgICAgICAgICAg ICB0YWcgPSBkdC50YWdzLmNyZWF0ZSh0YWcpCistICAgICAgICAgICAgICAgICAgICBkdC50YWdz LmF0dGFjaCh0YWcsIGltcG9ydGVkKSAKKysgICAgICAgICAgICAgICAgICAgIGxvY2FsIGNsZWFu ZWRfdGFnID0gQ2xlYW5TcGFjZXModGFnKQorKyAgICAgICAgICAgICAgICAgICAgY2xlYW5lZF90 YWcgPSBkdC50YWdzLmNyZWF0ZShjbGVhbmVkX3RhZykKKysgICAgICAgICAgICAgICAgICAgIGR0 LnRhZ3MuYXR0YWNoKGNsZWFuZWRfdGFnLCBpbXBvcnRlZCkgCisgICAgICAgICAgICAgICAgIGVu ZAorICAgICAgICAgICAgIGVuZAorICAgICAgICAgZW5kCitkaWZmIC11ck5yIGRhcmt0YWJsZS01 LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2Vk Lmx1YS5vcmlnIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJp Yi9lbmZ1c2VBZHZhbmNlZC5sdWEub3JpZworLS0tIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9l eHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1YS5vcmlnCTE5NzAt MDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgZGFya3RhYmxlLTUuNi4wL3NyYy9l eHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1YS5vcmlnCTIwMjYt MDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDExNzUgQEAKKystLVtb RW5mdXNlIEFkdmFuY2VkIHBsdWdpbiBmb3IgZGFya3RhYmxlIDIuMi5YIGFuZCAyLjQuWAorKwor KyAgY29weXJpZ2h0IChjKSAyMDE3LCAyMDE4ICBIb2xnZXIgS2xlbW0gKE9yaWdpbmFsIExpbnV4 LW9ubHkgdmVyc2lvbikKKysgIE1vZGlmaWVkIGJ5OiBLZXZpbiBFcnRlbAorKyAgCisrICBkYXJr dGFibGUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyAgCisrICBkYXJrdGFibGUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgCisrICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgYWxvbmcgd2l0aCBkYXJrdGFibGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrXV0KKysKKystLVtbQWJvdXQgdGhpcyBwbHVnaW4KKytUaGlzIHBs dWdpbiB3aWxsIGFkZCB0aGUgbmV3IGV4cG9ydCBtb2R1bGUgJ2Z1c2lvbiB0byBEUkkgb3IgREZG IGltYWdlJy4KKysgICAKKystLS0tUkVRVUlSRUQgU09GVFdBUkUtLS0tCisrYWxpZ25faW1hZ2Vf c3RhY2sKKytlbmZ1c2UgdmVyLiA0LjIgb3IgZ3JlYXRlcgorK2V4aWZ0b29sCisrCisrLS0tLVVT QUdFLS0tLQorK0luc3RhbGw6CisrIDEpIEdldCB0aGUgTHVhIHNjcmlwdHM6IGh0dHBzOi8vZ2l0 aHViLmNvbS9kYXJrdGFibGUtb3JnL2x1YS1zY3JpcHRzI2Rvd25sb2FkLWFuZC1pbnN0YWxsCisr IDIpIFJlcXVpcmUgdGhpcyBmaWxlIGluIHlvdXIgbHVhcmMgZmlsZSwgYXMgd2l0aCBhbnkgb3Ro ZXIgZHQgcGx1Zy1pbjogcmVxdWlyZSAiY29udHJpYi9lbmZ1c2VBZHZhbmNlZCIKKysgMykgVGhl biBzZWxlY3QgIkRSSSBvciBERkYgaW1hZ2UiIGFzIHN0b3JhZ2Ugb3B0aW9uCisrIDQpIE9uIHRo ZSBpbml0aWFsIHN0YXJ0dXAgc2V0IHlvdXIgZXhlY3V0YWJsZSBwYXRocyAKKysKKytEUkkgPSBE eW5hbWljIFJhbmdlIEluY3JlYXNlIChCbGVuZCBtdWx0aXBsZSBicmFja2V0IGltYWdlcyBpbnRv IGEgc2luZ2xlIExEUiBmaWxlKQorK0RGRiA9IERlcHRoIEZyb20gRm9jdXMgKCdGb2N1cyBTdGFj a2luZycgLSBCbGVuZCBtdWx0aXBsZSBpbWFnZXMgd2l0aCBkaWZmZXJlbnQgZm9jdXMgaW50byBh IHNpbmdsZSBpbWFnZSkKKytTZWxlY3QgbXVsdGlwbGUgaW1hZ2VzIHRoYXQgYXJlIGVpdGhlciBi cmFja2V0ZWQsIG9yIGZvY3VzLXNoaWZ0ZWQsIHNldCB5b3VyIGRlc2lyZWQgb3BlcmF0aW5nIHBh cmFtZXRlcnMsIGFuZCBwcmVzcyB0aGUgZXhwb3J0IGJ1dHRvbi4gQSBuZXcgaW1hZ2Ugd2lsbCBi ZSBjcmVhdGVkLiBUaGUgaW1hZ2Ugd2lsbAorK2JlIGF1dG8gaW1wb3J0ZWQgaW50byBkYXJrdGFi bGUgaWYgeW91IGhhdmUgdGhhdCBvcHRpb24gZW5hYmxlZC4gQWRkaXRpb25hbCB0YWdzIG9yIHN0 eWxlIGNhbiBiZSBhcHBsaWVkIG9uIGF1dG8gaW1wb3J0IGFzIHdlbGwsIGlmIHlvdSBkZXNpcmUu CisrCisraW1hZ2UgYWxpZ24gb3B0aW9uczoKKytTZWUgYWxpZ25faW1hZ2Vfc3RhY2sgZG9jdW1l bnRhdGlvbiBmb3IgZnVydGhlciBleHBsYW5hdGlvbiBvZiBob3cgaXQgc3BlY2lmaWNhbGx5IHdv cmtzIGFuZCB0aGUgb3B0aW9ucyBwcm92aWRlZCAoaHR0cDovL2h1Z2luLnNvdXJjZWZvcmdlLm5l dC9kb2NzL21hbnVhbC9BbGlnbl9pbWFnZV9zdGFjay5odG1sKQorKworK2ltYWdlIGZ1c3Rpb24g b3B0aW9uczoKKytTZWUgZW5mdXNlIGRvY3VtZW50YXRpb24gZm9yIGZ1cnRoZXIgZXhwbGFuYXRp b24gb2YgaG93IGl0IHNwZWNpZmljYWxseSB3b3JrcyBhbmQgdGhlIG9wdGlvbnMgcHJvdmlkZWQg KGh0dHBzOi8vd2lraS5wYW5vdG9vbHMub3JnL0VuZnVzZSkKKytJZiB5b3UgaGF2ZSBhIHNwZWNp ZmljIHNldCBvZiBwYXJhbWV0ZXJzIHlvdSBmcmVxdWVudGx5IGxpa2UgdG8gdXNlLCB5b3UgY2Fu IHNhdmUgdGhlbSB0byBhIHByZXNldC4gVGhlcmUgYXJlIDMgcHJlc2V0cyBhdmFpbGFibGUgZm9y IERSSSwgYW5kIDMgZm9yIERGRi4KKysKKyt0YXJnZXQgZmlsZToKKytTZWxlY3QgeW91ciBmaWxl IGRlc3RpbmF0aW9uIHBhdGgsIG9yIGNoZWNrIHRoZSAnc2F2ZSB0byBzb3VyY2UgaW1hZ2UgbG9j YXRpb24nIG9wdGlvbi4KKysnQ3JlYXRlIFVuaXF1ZSBGaWxlbmFtZScgaXMgZW5hYmxlZCBieSBk ZWZhdWx0IGF0IHN0YXJ0dXAsIHRoZSB1c2VyIGNhbiBjaG9vc2UgdG8gb3ZlcndyaXRlIGV4aXN0 aW5nCisrU2V0IGFueSB0YWdzIG9yIHN0eWxlIHlvdSBkZXNpcmUgdG8gYmUgYWRkZWQgdG8gdGhl IG5ldyBpbWFnZSAob25seSBhdmFpbGFibGUgaWYgdGhlIGF1dG8taW1wb3J0IG9wdGlvbiBpcyBl bmFibGVkKS4gWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgZGVmYXVsdHMgZm9yIHRoaXMgdW5kZXIg c2V0dGluZ3MgPiBsdWEgb3B0aW9ucworKworK2Zvcm1hdCBvcHRpb25zOgorK1NhbWUgYXMgb3Ro ZXIgZXhwb3J0IG1vZHVsZXMKKysKKytnbG9iYWwgb3B0aW9uczoKKytTYW1lIGFzIG90aGVyIGV4 cG9ydCBtb2R1bGVzCisrCisrXV0KKysKKytsb2NhbCBkdCA9IHJlcXVpcmUgJ2Rhcmt0YWJsZScK Kytsb2NhbCBkZiA9IHJlcXVpcmUgJ2xpYi9kdHV0aWxzLmZpbGUnCisrbG9jYWwgZHN5cyA9IHJl cXVpcmUgJ2xpYi9kdHV0aWxzLnN5c3RlbScKKytsb2NhbCBkdSA9IHJlcXVpcmUgJ2xpYi9kdHV0 aWxzJworK2xvY2FsIG1vZCA9ICdtb2R1bGVfZW5mdXNlQWR2YW5jZWQnCisrbG9jYWwgb3NfcGF0 aF9zZXBlcmF0b3IgPSAnLycKKytpZiBkdC5jb25maWd1cmF0aW9uLnJ1bm5pbmdfb3MgPT0gJ3dp bmRvd3MnIHRoZW4gb3NfcGF0aF9zZXBlcmF0b3IgPSAnXFwnIGVuZAorKworK2R1LmNoZWNrX21p bl9hcGlfdmVyc2lvbigiNy4wLjAiLCAiZW5mdXNlQWR2YW5jZWQiKSAKKysKKystLSBUZWxsIGdl dHRleHQgd2hlcmUgdG8gZmluZCB0aGUgLm1vIGZpbGUgdHJhbnNsYXRpbmcgbWVzc2FnZXMgZm9y IGEgcGFydGljdWxhciBkb21haW4KKytsb2NhbCBnZXR0ZXh0ID0gZHQuZ2V0dGV4dC5nZXR0ZXh0 CisrCisrbG9jYWwgZnVuY3Rpb24gXyhtc2dpZCkKKysgICAgcmV0dXJuIGdldHRleHQobXNnaWQp CisrZW5kCisrCisrLS0gcmV0dXJuIGRhdGEgc3RydWN0dXJlIGZvciBzY3JpcHRfbWFuYWdlcgor KworK2xvY2FsIHNjcmlwdF9kYXRhID0ge30KKysKKytzY3JpcHRfZGF0YS5tZXRhZGF0YSA9IHsK KysgIG5hbWUgPSBfKCJlbmZ1c2UgYWR2YW5jZWQiKSwKKysgIHB1cnBvc2UgPSBfKCJmb2N1cyBz dGFjayBvciBleHBvc3VyZSBibGVuZCBpbWFnZXMiKSwKKysgIGF1dGhvciA9ICJLZXZpbiBFcnRl bCIsCisrICBoZWxwID0gImh0dHBzOi8vZG9jcy5kYXJrdGFibGUub3JnL2x1YS9zdGFibGUvbHVh LnNjcmlwdHMubWFudWFsL3NjcmlwdHMvY29udHJpYi9lbmZ1c2VBZHZhbmNlZCIKKyt9CisrCisr c2NyaXB0X2RhdGEuZGVzdHJveSA9IG5pbCAtLSBmdW5jdGlvbiB0byBkZXN0b3J5IHRoZSBzY3Jp cHQKKytzY3JpcHRfZGF0YS5kZXN0cm95X21ldGhvZCA9IG5pbCAtLSBzZXQgdG8gaGlkZSBmb3Ig bGlicyBzaW5jZSB3ZSBjYW4ndCBkZXN0cm95IHRoZW0gY29tbXBsZXRlbHkgeWV0LCBvdGhlcndp c2UgbGVhdmUgYXMgbmlsCisrc2NyaXB0X2RhdGEucmVzdGFydCA9IG5pbCAtLSBob3cgdG8gcmVz dGFydCB0aGUgKGxpYikgc2NyaXB0IGFmdGVyIGl0J3MgYmVlbiBoaWRkZW4gLSBpLmUuIG1ha2Ug aXQgdmlzaWJsZSBhZ2FpbgorK3NjcmlwdF9kYXRhLnNob3cgPSBuaWwgLS0gb25seSByZXF1aXJl ZCBmb3IgbGlicyBzaW5jZSB0aGUgZGVzdHJveV9tZXRob2Qgb25seSBoaWRlcyB0aGVtCisrCisr LS0gSU5JVFMgLS0KKytsb2NhbCBBSVMgPSB7CisrICAgIG5hbWUgPSAnYWxpZ25faW1hZ2Vfc3Rh Y2snLAorKyAgICBiaW4gPSAnJywKKysgICAgZmlyc3RfcnVuID0gdHJ1ZSwKKysgICAgaW5zdGFs bF9lcnJvciA9IGZhbHNlLAorKyAgICBhcmdfc3RyaW5nID0gJycsCisrICAgIGltYWdlc19zdHJp bmcgPSAnJywKKysgICAgYXJncyA9IHsKKysgICAgICAgIHJhZGlhbF9kaXN0b3J0aW9uICAgICAg ID0ge3RleHQgPSAnLWQnLCAgICAgICAgICAgICBzdHlsZSA9ICdib29sJ30sCisrICAgICAgICBv cHRpbWl6ZV9maWVsZCAgICAgICAgICA9IHt0ZXh0ID0gJy1tJywgICAgICAgICAgICAgc3R5bGUg PSAnYm9vbCd9LAorKyAgICAgICAgb3B0aW1pemVfaW1hZ2VfY2VudGVyICAgPSB7dGV4dCA9ICct aScsICAgICAgICAgICAgIHN0eWxlID0gJ2Jvb2wnfSwKKysgICAgICAgIGF1dG9fY3JvcCAgICAg ICAgICAgICAgID0ge3RleHQgPSAnLUMnLCAgICAgICAgICAgICBzdHlsZSA9ICdib29sJ30sCisr ICAgICAgICBkaXN0b3J0aW9uICAgICAgICAgICAgICA9IHt0ZXh0ID0gJy0tZGlzdG9ydGlvbics ICAgc3R5bGUgPSAnYm9vbCd9LAorKyAgICAgICAgZ3B1ICAgICAgICAgICAgICAgICAgICAgPSB7 dGV4dCA9ICctLWdwdScsICAgICAgICAgIHN0eWxlID0gJ2Jvb2wnfSwKKysgICAgICAgIGdyaWRf c2l6ZSAgICAgICAgICAgICAgID0ge3RleHQgPSAnLWcgJywgICAgICAgICAgICBzdHlsZSA9ICdp bnRlZ2VyJ30sCisrICAgICAgICBjb250cm9sX3BvaW50cyAgICAgICAgICA9IHt0ZXh0ID0gJy1j ICcsICAgICAgICAgICAgc3R5bGUgPSAnaW50ZWdlcid9LAorKyAgICAgICAgY29udHJvbF9wb2lu dHNfcmVtb3ZlICAgPSB7dGV4dCA9ICctdCAnLCAgICAgICAgICAgIHN0eWxlID0gJ2ludGVnZXIn fSwKKysgICAgICAgIGNvcnJlbGF0aW9uICAgICAgICAgICAgID0ge3RleHQgPSAnLS1jb3JyPScs ICAgICAgICBzdHlsZSA9ICdmbG9hdCd9CisrICAgIH0KKyt9CisrbG9jYWwgRU5GID0geworKyAg ICBuYW1lID0gJ2VuZnVzZScsCisrICAgIGJpbiA9ICcnLAorKyAgICBmaXJzdF9ydW4gPSB0cnVl LAorKyAgICBpbnN0YWxsX2Vycm9yID0gZmFsc2UsCisrICAgIGFyZ19zdHJpbmcgPSAnJywKKysg ICAgaW1hZ2Vfc3RyaW5nID0gJycsCisrICAgIGFyZ3MgPSB7CisrICAgICAgICBleHBvc3VyZV93 ZWlnaHQgICAgICAgICA9IHt0ZXh0ID0gJy0tZXhwb3N1cmUtd2VpZ2h0PScsICAgICAgICAgc3R5 bGUgPSAnZmxvYXQnfSwKKysgICAgICAgIHNhdHVyYXRpb25fd2VpZ2h0ICAgICAgID0ge3RleHQg PSAnLS1zYXR1cmF0aW9uLXdlaWdodD0nLCAgICAgICBzdHlsZSA9ICdmbG9hdCd9LAorKyAgICAg ICAgY29udHJhc3Rfd2VpZ2h0ICAgICAgICAgPSB7dGV4dCA9ICctLWNvbnRyYXN0LXdlaWdodD0n LCAgICAgICAgIHN0eWxlID0gJ2Zsb2F0J30sCisrICAgICAgICBleHBvc3VyZV9vcHRpbXVtICAg ICAgICA9IHt0ZXh0ID0gJy0tZXhwb3N1cmUtb3B0aW11bT0nLCAgICAgICAgc3R5bGUgPSAnZmxv YXQnfSwKKysgICAgICAgIGV4cG9zdXJlX3dpZHRoICAgICAgICAgID0ge3RleHQgPSAnLS1leHBv c3VyZS13aWR0aD0nLCAgICAgICAgICBzdHlsZSA9ICdmbG9hdCd9LAorKyAgICAgICAgaGFyZF9t YXNrcyAgICAgICAgICAgICAgPSB7dGV4dCA9ICctLWhhcmQtbWFzaycsICAgICAgICAgICAgICAg IHN0eWxlID0gJ2Jvb2wnfSwKKysgICAgICAgIHNhdmVfbWFza3MgICAgICAgICAgICAgID0ge3Rl eHQgPSAnLS1zYXZlLW1hc2tzJywgICAgICAgICAgICAgICBzdHlsZSA9ICdib29sJ30sCisrICAg ICAgICBjb250cmFzdF93aW5kb3dfc2l6ZSAgICA9IHt0ZXh0ID0gJy0tY29udHJhc3Qtd2luZG93 LXNpemU9JywgICAgc3R5bGUgPSAnaW50ZWdlcid9LAorKyAgICAgICAgY29udHJhc3RfZWRnZV9z Y2FsZSAgICAgPSB7dGV4dCA9ICctLWNvbnRyYXN0LWVkZ2Utc2NhbGU9JywgICAgIHN0eWxlID0g J2Zsb2F0J30sCisrICAgICAgICBjb250cmFzdF9taW5fY3VydmF0dXJlICA9IHt0ZXh0ID0gJy0t Y29udHJhc3QtbWluLWN1cnZhdHVyZT0nLCBzdHlsZSA9ICdzdHJpbmcnfQorKyAgICB9CisrfQor K2xvY2FsIEVYRiA9IHsKKysgICAgbmFtZSA9ICdleGlmdG9vbCcsCisrICAgIGJpbiA9ICcnLAor KyAgICBmaXJzdF9ydW4gPSB0cnVlLAorKyAgICBpbnN0YWxsX2Vycm9yID0gZmFsc2UKKyt9Cisr bG9jYWwgR1VJID0geworKyAgICBBSVMgPSB7CisrICAgICAgICByYWRpYWxfZGlzdG9ydGlvbiAg ICAgICA9IHt9LAorKyAgICAgICAgb3B0aW1pemVfZmllbGQgICAgICAgICAgPSB7fSwKKysgICAg ICAgIG9wdGltaXplX2ltYWdlX2NlbnRlciAgID0ge30sCisrICAgICAgICBhdXRvX2Nyb3AgICAg ICAgICAgICAgICA9IHt9LAorKyAgICAgICAgZGlzdG9ydGlvbiAgICAgICAgICAgICAgPSB7fSwK KysgICAgICAgIGdyaWRfc2l6ZSAgICAgICAgICAgICAgID0ge30sCisrICAgICAgICBjb250cm9s X3BvaW50cyAgICAgICAgICA9IHt9LAorKyAgICAgICAgY29udHJvbF9wb2ludHNfcmVtb3ZlICAg PSB7fSwKKysgICAgICAgIGNvcnJlbGF0aW9uICAgICAgICAgICAgID0ge319LAorKyAgICBFTkYg PSB7CisrICAgICAgICBleHBvc3VyZV93ZWlnaHQgICAgICAgICA9IHt9LAorKyAgICAgICAgc2F0 dXJhdGlvbl93ZWlnaHQgICAgICAgPSB7fSwKKysgICAgICAgIGNvbnRyYXN0X3dlaWdodCAgICAg ICAgID0ge30sCisrICAgICAgICBleHBvc3VyZV9vcHRpbXVtICAgICAgICA9IHt9LAorKyAgICAg ICAgZXhwb3N1cmVfd2lkdGggICAgICAgICAgPSB7fSwKKysgICAgICAgIGhhcmRfbWFza3MgICAg ICAgICAgICAgID0ge30sCisrICAgICAgICBzYXZlX21hc2tzICAgICAgICAgICAgICA9IHt9LAor KyAgICAgICAgY29udHJhc3Rfd2luZG93X3NpemUgICAgPSB7fSwKKysgICAgICAgIGNvbnRyYXN0 X2VkZ2Vfc2NhbGUgICAgID0ge30sCisrICAgICAgICBjb250cmFzdF9taW5fY3VydmF0dXJlICA9 IHt9fSwKKysgICAgVGFyZ2V0ID0geworKyAgICAgICAgZm9ybWF0ICAgICAgICAgICAgICAgICAg PSB7fSwKKysgICAgICAgIGRlcHRoICAgICAgICAgICAgICAgICAgID0ge30sICAgCisrICAgICAg ICBjb21wcmVzc2lvbl9sZXZlbF90aWYgICA9IHt9LAorKyAgICAgICAgY29tcHJlc3Npb25fbGV2 ZWxfanBnICAgPSB7fSwKKysgICAgICAgIG91dHB1dF9jb21wcmVzcyAgICAgICAgID0ge30sCisr ICAgICAgICBvdXRwdXRfZGlyZWN0b3J5ICAgICAgICA9IHt9LAorKyAgICAgICAgc291cmNlX2xv Y2F0aW9uICAgICAgICAgPSB7fSwKKysgICAgICAgIG9uX2NvbmZsaWN0ICAgICAgICAgICAgID0g e30sCisrICAgICAgICBhdXRvX2ltcG9ydCAgICAgICAgICAgICA9IHt9LAorKyAgICAgICAgYXBw bHlfc3R5bGUgICAgICAgICAgICAgPSB7fSwKKysgICAgICAgIGNvcHlfdGFncyAgICAgICAgICAg ICAgID0ge30sCisrICAgICAgICBhZGRfdGFncyAgICAgICAgICAgICAgICA9IHt9fSwKKysgICAg UHJlc2V0cyA9IHsKKysgICAgICAgIGN1cnJlbnRfcHJlc2V0ICAgICAgPXt9OworKyAgICAgICAg bG9hZCAgICAgICAgICAgICAgICA9e307CisrICAgICAgICBzYXZlICAgICAgICAgICAgICAgID17 fTsKKysgICAgICAgIHZhcmlhbnRzICAgICAgICAgICAgPXt9OworKyAgICAgICAgdmFyaWFudHNf dHlwZSAgICAgICA9e319LAorKyAgICBleGVzID0geworKyAgICAgICAgYWxpZ25faW1hZ2Vfc3Rh Y2sgPSB7fSwKKysgICAgICAgIGVuZnVzZSA9IHt9LAorKyAgICAgICAgZXhpZnRvb2wgPSB7fSwK KysgICAgICAgIHVwZGF0ZSA9IHt9CisrICAgIH0sCisrICAgIGFsaWduICAgICAgICAgICAgICAg ICAgID0ge30sCisrICAgIG9wdGlvbnNfY29udGFpbiAgICAgICAgID0ge30sCisrICAgIHNob3df b3B0aW9ucyAgICAgICAgICAgID0ge30KKyt9CisrCisrbG9jYWwgc3R5bGVzID0gZHQuc3R5bGVz CisrbG9jYWwgc3R5bGVzX2NvdW50ID0gMSAtLSAnbm9uZScgPSAxCisrZm9yIF8saSBpbiBwYWly cyhkdC5zdHlsZXMpIGRvCisrICAgIGlmIHR5cGUoaSkgPT0gJ3VzZXJkYXRhJyB0aGVuIHN0eWxl c19jb3VudCA9IHN0eWxlc19jb3VudCArIDEgZW5kCisrZW5kCisrCisrLS0gRlVOQ1RJT04gLS0K KysKKytsb2NhbCBmdW5jdGlvbiBzYW5pdGl6ZV9kZWNpbWFscyhjbWQpIC0tIG1ha2Ugc3VyZSBk ZWNpbWFsIHNlcGFyYXRvciBpcyBhICcuJworKyAgICByZXR1cm4gc3RyaW5nLmdzdWIoY21kLCAn KCVkKSwoJWQpJywgIiUxLiUyIikKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBJblJhbmdlKHRl c3QsIGxvdywgaGlnaCkgLS0gdGVzdHMgaWYgdGVzdCB2YWx1ZSBpcyB3aXRoaW4gcmFuZ2Ugb2Yg bG93IGFuZCBoaWdoIChpbmNsdXNpdmUpCisrICAgIGlmIHRlc3QgPj0gbG93IGFuZCB0ZXN0IDw9 IGhpZ2ggdGhlbgorKyAgICAgICAgcmV0dXJuIHRydWUKKysgICAgZWxzZQorKyAgICAgICAgcmV0 dXJuIGZhbHNlCisrICAgIGVuZAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIEdldEZpbGVOYW1l KGZ1bGxfcGF0aCkgLS0gUGFyc2VzIGEgZnVsbCBwYXRoIChwYXRoL2ZpbGVuYW1lX2lkZW50aWZp ZXIuZXh0ZW5zaW9uKSBpbnRvIGluZGl2aWR1YWwgcGFydHMKKystLVtbSW5wdXQ6IEZvbGRlcjEv Rm9sZGVyMi9Gb2xkZXIzL0ltZ18wMDAxLkNSMgorKyAgICAKKysgICAgUmV0dXJuczoKKysgICAg cGF0aDogRm9sZGVyMS9Gb2xkZXIyL0ZvbGRlcjMvCisrICAgIGZpbGVuYW1lOiBJbWdfMDAwMQor KyAgICBpZGVudGlmaWVyOiAwMDAxCisrICAgIGV4dGVuc2lvbjogLkNSMgorKyAgICAKKysgICAg RVg6CisrICAgIHBhdGhfMSwgZmlsZV8xLCBpZF8xLCBleHRfMSA9IEdldEZpbGVOYW1lKGZ1bGxf cGF0aF8xKQorKyAgICBdXQorKyAgICBsb2NhbCBwYXRoID0gc3RyaW5nLm1hdGNoKGZ1bGxfcGF0 aCwgJy4qW1xcL10nKQorKyAgICBsb2NhbCBmaWxlbmFtZSA9IHN0cmluZy5nc3ViKHN0cmluZy5t YXRjaChmdWxsX3BhdGgsICdbJXctX10qJS4nKSAsICclLicgLCAnJyApIAorKyAgICBsb2NhbCBp ZGVudGlmaWVyID0gc3RyaW5nLm1hdGNoKGZpbGVuYW1lLCAnJWQqJCcpCisrICAgIGxvY2FsIGV4 dGVuc2lvbiA9IHN0cmluZy5tYXRjaChmdWxsX3BhdGgsICclLiV3KicpCisrICAgIHJldHVybiBw YXRoLCBmaWxlbmFtZSwgaWRlbnRpZmllciwgZXh0ZW5zaW9uCisrZW5kCisrCisrbG9jYWwgZnVu Y3Rpb24gQ2xlYW5TcGFjZXModGV4dCkgLS1yZW1vdmVzIHNwYWNlcyBmcm9tIHRoZSBmcm9udCBh bmQgYmFjayBvZiBwYXNzZWQgaW4gdGV4dAorKyAgICB0ZXh0ID0gc3RyaW5nLmdzdWIodGV4dCwn XiVzKicsJycpCisrICAgIHRleHQgPSBzdHJpbmcuZ3N1Yih0ZXh0LCclcyokJywnJykKKysgICAg cmV0dXJuIHRleHQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBCdWlsZEV4ZWN1dGVDbWQocHJv Z190YWJsZSkgLS1jcmVhdGVzIGEgcHJvZ3JhbSBjb21tYW5kIHVzaW5nIGVsZW1lbnRzIG9mIHRo ZSBwYXNzZWQgaW4gcHJvZ3JhbSB0YWJsZQorKyAgICBsb2NhbCByZXN1bHQgPSBDbGVhblNwYWNl cyhwcm9nX3RhYmxlLmJpbikuLicgJy4uQ2xlYW5TcGFjZXMocHJvZ190YWJsZS5hcmdfc3RyaW5n KS4uJyAnLi5DbGVhblNwYWNlcyhwcm9nX3RhYmxlLmltYWdlc19zdHJpbmcpCisrICAgIHJldHVy biByZXN1bHQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBQcmVDYWxsKHByb2dfdGJscykgLS1s b29rcyB0byBzZWUgaWYgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgaWYgc28gY2hlY2tzIHRvIHNl ZSBpZiBwcm9ncmFtIGlzIGluc3RhbGxlZCBwcm9wZXJseQorKyAgICBmb3IgXyxwcm9nIGluIHBh aXJzKHByb2dfdGJscykgZG8KKysgICAgICAgIGlmIHByb2cuZmlyc3RfcnVuIHRoZW4KKysgICAg ICAgICAgICBwcm9nLmJpbiA9IGRmLmNoZWNrX2lmX2Jpbl9leGlzdHMocHJvZy5uYW1lKQorKyAg ICAgICAgICAgIGlmIG5vdCBwcm9nLmJpbiB0aGVuIAorKyAgICAgICAgICAgICAgICBwcm9nLmlu c3RhbGxfZXJyb3IgPSB0cnVlCisrICAgICAgICAgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRl KG1vZCwgJ2Jpbl9leGlzdHMnLCAnYm9vbCcsIGZhbHNlKQorKyAgICAgICAgICAgIGVsc2UKKysg ICAgICAgICAgICAgICAgcHJvZy5iaW4gPSBDbGVhblNwYWNlcyhwcm9nLmJpbikKKysgICAgICAg ICAgICBlbmQKKysgICAgICAgICAgICBwcm9nLmZpcnN0X3J1biA9IGZhbHNlCisrICAgICAgICBl bmQKKysgICAgZW5kCisrICAgIGlmIG5vdCBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2Jpbl9l eGlzdHMnLCAnYm9vbCcpIHRoZW4KKysgICAgICAgIEdVSS5vcHRpb25zX2NvbnRhaW4uYWN0aXZl ID0gNAorKyAgICAgICAgR1VJLnNob3dfb3B0aW9ucy5zZW5zaXRpdmUgPSBmYWxzZQorKyAgICAg ICAgZHQucHJpbnQoXygncGxlYXNlIHVwZGF0ZSB5b3VyIGJpbmFyeSBsb2NhdGlvbnMnKSkKKysg ICAgZW5kCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gRXhlVXBkYXRlKHByb2dfdGJsKSAtLXVw ZGF0ZXMgZXhlY3V0YWJsZSBwYXRocyBhbmQgdmVyaWZpZXMgdGhlbQorKyAgICBkdC5wcmVmZXJl bmNlcy53cml0ZShtb2QsICdiaW5fZXhpc3RzJywgJ2Jvb2wnLCB0cnVlKQorKyAgICBmb3IgeCxw cm9nIGluIHBhaXJzKHByb2dfdGJsKSBkbworKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUo J2V4ZWN1dGFibGVfcGF0aHMnLCBwcm9nLm5hbWUsICdzdHJpbmcnLCBHVUkuZXhlc1twcm9nLm5h bWVdLnZhbHVlKQorKyAgICAgICAgcHJvZy5iaW4gPSBkZi5jaGVja19pZl9iaW5fZXhpc3RzKHBy b2cubmFtZSkKKysgICAgICAgIGlmIG5vdCBwcm9nLmJpbiB0aGVuIAorKyAgICAgICAgICAgIHBy b2cuaW5zdGFsbF9lcnJvciA9IHRydWUKKysgICAgICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsICdiaW5fZXhpc3RzJywgJ2Jvb2wnLCBmYWxzZSkKKysgICAgICAgICAgICBkdC5wcmlu dChzdHJpbmcuZm9ybWF0KF8oImlzc3VlIHdpdGggJXMgZXhlY3V0YWJsZSIpLCBwcm9nLm5hbWUp KQorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHByb2cuYmluID0gQ2xlYW5TcGFjZXMocHJv Zy5iaW4pCisrICAgICAgICBlbmQKKysgICAgICAgIHByb2cuZmlyc3RfcnVuID0gZmFsc2UKKysg ICAgZW5kCisrICAgIGlmIGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYmluX2V4aXN0cycsICdi b29sJykgdGhlbgorKyAgICAgICAgR1VJLm9wdGlvbnNfY29udGFpbi5hY3RpdmUgPSAyCisrICAg ICAgICBHVUkuc2hvd19vcHRpb25zLnNlbnNpdGl2ZSA9IHRydWUKKysgICAgICAgIGR0LnByaW50 KF8oJ3VwZGF0ZSBzdWNjZXNzZnVsJykpCisrICAgIGVsc2UKKysgICAgICAgIGR0LnByaW50KF8o J3VwZGF0ZSB1bnN1Y2Nlc3NmdWwsIHBsZWFzZSB0cnkgYWdhaW4nKSkKKysgICAgZW5kCisrZW5k CisrCisrbG9jYWwgZnVuY3Rpb24gR2V0QXJnc0Zyb21QcmVmZXJlbmNlKHByb2dfdGFibGUsIHBy ZWZpeCkgLS1mb3IgZWFjaCBhcmcgaW4gYSBwcm9ncmFtIHRhYmxlIHJlYWRzIGluIHRoZSBhc3Nv Y2lhdGVkIHZhbHVlIGluIHRoZSBhY3RpdmUgcHJlZmVyZW5jZSAod2hpY2ggaXMgY29udGludWFs bHkgdXBkYXRlZCB2aWEgY2xpY2tlZC9jaGFuZ2VkIGNhbGxiYWNrIGluIEdVSSBlbGVtZW50cwor KyAgICBwcm9nX3RhYmxlLmFyZ19zdHJpbmcgPSAnJworKyAgICBmb3IgYXJndW1lbnQsIGFyZ19k YXRhIGluIHBhaXJzKHByb2dfdGFibGUuYXJncykgZG8KKysgICAgICAgIGxvY2FsIHRlbXAgPSBk dC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgcHJlZml4Li5hcmd1bWVudCwgYXJnX2RhdGEuc3R5bGUp CisrICAgICAgICBpZiBhcmdfZGF0YS5zdHlsZSA9PSAnYm9vbCcgYW5kIHRlbXAgdGhlbgorKyAg ICAgICAgICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9IHByb2dfdGFibGUuYXJnX3N0cmluZy4u YXJnX2RhdGEudGV4dC4uJyAnCisrICAgICAgICBlbHNlaWYgYXJnX2RhdGEuc3R5bGUgPT0gJ2lu dGVnZXInIHRoZW4KKysgICAgICAgICAgICBwcm9nX3RhYmxlLmFyZ19zdHJpbmcgPSBwcm9nX3Rh YmxlLmFyZ19zdHJpbmcuLmFyZ19kYXRhLnRleHQuLnRlbXAuLicgJworKyAgICAgICAgZWxzZWlm IGFyZ19kYXRhLnN0eWxlID09ICdzdHJpbmcnIHRoZW4KKysgICAgICAgICAgICBpZiBkdC5jb25m aWd1cmF0aW9uLnJ1bm5pbmdfb3MgPT0gIndpbmRvd3MiIHRoZW4KKysgICAgICAgICAgICAgICAg LS1lc2NhcGUgJSB3aXRoICUlIGFzICUgbWVhbnMgZW52IHZhciBvbiB3aW5kb3dzIGFuZCBjYWxs IHdpbGwgZmFpbCBvdGhlcndpc2UKKysgICAgICAgICAgICAgICAgdGVtcCA9IHN0cmluZy5nc3Vi KHRlbXAsICIlJSIsICIlJSUlIikKKysgICAgICAgICAgICBlbmQKKysgICAgICAgICAgICBwcm9n X3RhYmxlLmFyZ19zdHJpbmcgPSBwcm9nX3RhYmxlLmFyZ19zdHJpbmcuLmFyZ19kYXRhLnRleHQu LnRlbXAuLicgJworKyAgICAgICAgZWxzZWlmIGFyZ19kYXRhLnN0eWxlID09ICdmbG9hdCcgdGhl bgorKyAgICAgICAgICAgIHRlbXAgPSBzdHJpbmcuc3ViKHRvc3RyaW5nKHRlbXApLDEsMykKKysg ICAgICAgICAgICBwcm9nX3RhYmxlLmFyZ19zdHJpbmcgPSBwcm9nX3RhYmxlLmFyZ19zdHJpbmcu LmFyZ19kYXRhLnRleHQuLnRlbXAuLicgJworKyAgICAgICAgZW5kCisrICAgIGVuZAorKyAgICBw cm9nX3RhYmxlLmFyZ19zdHJpbmcgPSBDbGVhblNwYWNlcyhwcm9nX3RhYmxlLmFyZ19zdHJpbmcp CisrICAgIHJldHVybiBwcm9nX3RhYmxlLmFyZ19zdHJpbmcKKytlbmQKKysKKytsb2NhbCBmdW5j dGlvbiBVcGRhdGVBSVNhcmdzKGltYWdlX3RhYmxlLCBpbWFnZXNfdG9fcmVtb3ZlKSAtLXVwZGF0 ZXMgdGhlIEFJUyBhcmd1bWVudHMsIGJ1aWxkcyB0aGUgaW5wdXQgaW1hZ2Ugc3RyaW5nLCByZXR1 cm5zIGEgbW9kaWZpZWQgaW1hZ2UgdGFibGUgd2hpY2ggY29udGFpbnMgdGhlIGFsaWduZWQgaW1h Z2UgbmFtZXMgaW4gcGxhY2Ugb2YgdGhlIGV4cG9ydGVkIGltYWdlIG5hbWVzIGFsc28gdXBkYXRl cyB0aGUgaW1hZ2VzIHRvIHJlbW92ZSBzdHJpbmcgd2l0aCBuZXcgYWxpZ25lZCBpbWFnZXMgYW5k IGEgc3RyaW5nIG9mIHRoZSBpbWFnZXMgdG8gYWxpZ24KKysgICAgR2V0QXJnc0Zyb21QcmVmZXJl bmNlKEFJUywgJ2FjdGl2ZV8nKQorKyAgICBsb2NhbCBzb3VyY2VfcGF0aCA9ICcnCisrICAgIGxv Y2FsIGltYWdlc190b19hbGlnbiA9ICcnCisrICAgIGxvY2FsIGluZGV4ID0gMAorKyAgICBmb3Ig cmF3LCB0ZW1wX2ltYWdlIGluIHBhaXJzKGltYWdlX3RhYmxlKSBkbworKyAgICAgICAgbG9jYWwg aW5kZXhfc3RyID0gJycKKysgICAgICAgIHNvdXJjZV9wYXRoID0gR2V0RmlsZU5hbWUodGVtcF9p bWFnZSkKKysgICAgICAgIGltYWdlc190b19hbGlnbiA9IGltYWdlc190b19hbGlnbi4uZGYuc2Fu aXRpemVfZmlsZW5hbWUodGVtcF9pbWFnZSkuLicgJworKyAgICAgICAgaWYgSW5SYW5nZShpbmRl eCwwLDkpIHRoZW4gaW5kZXhfc3RyID0gJzAwMCcuLnRvc3RyaW5nKGluZGV4KQorKyAgICAgICAg ZWxzZWlmIEluUmFuZ2UoaW5kZXgsMTAsOTkpIHRoZW4gaW5kZXhfc3RyID0gJzAwJy4udG9zdHJp bmcoaW5kZXgpCisrICAgICAgICBlbmQKKysgICAgICAgIGltYWdlX3RhYmxlW3Jhd10gPSBzb3Vy Y2VfcGF0aC4uJ2FsaWduZWRfJy4uaW5kZXhfc3RyLi4nLnRpZicKKysgICAgICAgIGltYWdlc190 b19yZW1vdmUgPSBpbWFnZXNfdG9fcmVtb3ZlLi5kZi5zYW5pdGl6ZV9maWxlbmFtZShpbWFnZV90 YWJsZVtyYXddKS4uJyAnCisrICAgICAgICBpbmRleCA9IGluZGV4ICsgMQorKyAgICBlbmQKKysg ICAgc291cmNlX3BhdGggPSBkZi5zYW5pdGl6ZV9maWxlbmFtZShzb3VyY2VfcGF0aC4uJ2FsaWdu ZWRfJykKKysgICAgQUlTLmFyZ19zdHJpbmcgPSBBSVMuYXJnX3N0cmluZy4uJyAtYSAnLi5zb3Vy Y2VfcGF0aAorKyAgICBpbWFnZXNfdG9fYWxpZ24gPSBDbGVhblNwYWNlcyhpbWFnZXNfdG9fYWxp Z24pCisrICAgIAorKyAgICByZXR1cm4gaW1hZ2VfdGFibGUsIGltYWdlc190b19yZW1vdmUsIGlt YWdlc190b19hbGlnbgorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIFVwZGF0ZUVORmFyZ3MoaW1h Z2VfdGFibGUsIHByZWZpeCkgLS11cGRhdGVzIHRoZSBFbmZ1c2UgYXJndW1lbnRzLCBidWlsZHMg dGhlIGlucHV0IGltYWdlIHN0cmluZywgZ2VuZXJhdGVzIG91dHB1dCBmaWxlbmFtZSwgcmV0dXJu cyBzdHJpbmcgb2YgaW1hZ2VzIHRvIGJsZW5kLCB0aGUgbmFtZSBvZiB0aGUgb3V0b3V0IGltYWdl LCBhbmQgdGhlIGZpcnN0IHJhdyBpbWFnZSBvYmplY3QKKysgICAgR2V0QXJnc0Zyb21QcmVmZXJl bmNlKEVORiwgcHJlZml4KQorKyAgICBsb2NhbCBpbWFnZXNfdG9fYmxlbmQgPSAnJworKyAgICBs b2NhbCBvdXRfcGF0aCA9ICcnCisrICAgIGxvY2FsIG91dF9uYW1lID0gJycKKysgICAgbG9jYWwg c21hbGxlc3RfbmFtZSA9ICcnCisrICAgIGxvY2FsIHNtYWxsZXN0X2lkID0gbWF0aC5odWdlCisr ICAgIGxvY2FsIGxhcmdlc3RfaWQgPSAwCisrICAgIGxvY2FsIGZpcnN0X3JhdyA9IHt9CisrICAg IGZvciByYXcsIHRlbXBfaW1hZ2UgaW4gcGFpcnMoaW1hZ2VfdGFibGUpIGRvCisrICAgICAgICBs b2NhbCBfLCBzb3VyY2VfbmFtZSwgc291cmNlX2lkID0gR2V0RmlsZU5hbWUocmF3LmZpbGVuYW1l KQorKyAgICAgICAgc291cmNlX2lkID0gdG9udW1iZXIoc291cmNlX2lkKQorKyAgICAgICAgaWYg c291cmNlX2lkIDwgc21hbGxlc3RfaWQgdGhlbiAKKysgICAgICAgICAgICBzbWFsbGVzdF9pZCA9 IHNvdXJjZV9pZAorKyAgICAgICAgICAgIHNtYWxsZXN0X25hbWUgPSBzb3VyY2VfbmFtZQorKyAg ICAgICAgICAgIGZpcnN0X3JhdyA9IHJhdworKyAgICAgICAgZW5kCisrICAgICAgICBpZiBzb3Vy Y2VfaWQgPiBsYXJnZXN0X2lkIHRoZW4gbGFyZ2VzdF9pZCA9IHNvdXJjZV9pZCBlbmQKKysgICAg ICAgIG91dF9wYXRoID0gcmF3LnBhdGgKKysgICAgICAgIGltYWdlc190b19ibGVuZCA9IGltYWdl c190b19ibGVuZC4uZGYuc2FuaXRpemVfZmlsZW5hbWUodGVtcF9pbWFnZSkuLicgJworKyAgICBl bmQKKysgICAgRU5GLmFyZ19zdHJpbmcgPSBFTkYuYXJnX3N0cmluZy4uJyAtLWRlcHRoPScuLkdV SS5UYXJnZXQuZGVwdGgudmFsdWUuLicgJworKyAgICBpZiBHVUkuVGFyZ2V0LmZvcm1hdC52YWx1 ZSA9PSAndGlmJyB0aGVuIEVORi5hcmdfc3RyaW5nID0gRU5GLmFyZ19zdHJpbmcuLictLWNvbXBy ZXNzaW9uPScuLkdVSS5UYXJnZXQuY29tcHJlc3Npb25fbGV2ZWxfdGlmLnZhbHVlLi4nICcKKysg ICAgZWxzZWlmIEdVSS5UYXJnZXQuZm9ybWF0LnZhbHVlID09ICdqcGcnIHRoZW4gRU5GLmFyZ19z dHJpbmcgPSBFTkYuYXJnX3N0cmluZy4uJy0tY29tcHJlc3Npb249Jy4udG9zdHJpbmcobWF0aC5m bG9vcihHVUkuVGFyZ2V0LmNvbXByZXNzaW9uX2xldmVsX2pwZy52YWx1ZSkpLi4nICcKKysgICAg ZW5kCisrICAgIGlmIG5vdCBHVUkuVGFyZ2V0LnNvdXJjZV9sb2NhdGlvbi52YWx1ZSB0aGVuIG91 dF9wYXRoID0gR1VJLlRhcmdldC5vdXRwdXRfZGlyZWN0b3J5LnZhbHVlIGVuZAorKyAgICBvdXRf bmFtZSA9IHNtYWxsZXN0X25hbWUuLictJy4ubGFyZ2VzdF9pZAorKyAgICBvdXRfcGF0aCA9IG91 dF9wYXRoLi5vc19wYXRoX3NlcGVyYXRvci4ub3V0X25hbWUuLicuJy4uR1VJLlRhcmdldC5mb3Jt YXQudmFsdWUKKysgICAgaWYgR1VJLlRhcmdldC5vbl9jb25mbGljdC52YWx1ZSA9PSAnY3JlYXRl IHVuaXF1ZSBmaWxlbmFtZScgdGhlbiBvdXRfcGF0aCA9IGRmLmNyZWF0ZV91bmlxdWVfZmlsZW5h bWUob3V0X3BhdGgpIGVuZAorKyAgICBFTkYuYXJnX3N0cmluZyA9IEVORi5hcmdfc3RyaW5nLi4n LS1vdXRwdXQ9Jy4uZGYuc2FuaXRpemVfZmlsZW5hbWUob3V0X3BhdGgpCisrICAgIGltYWdlc190 b19ibGVuZCA9IENsZWFuU3BhY2VzKGltYWdlc190b19ibGVuZCkKKysgICAgCisrICAgIHJldHVy biBpbWFnZXNfdG9fYmxlbmQsIG91dF9wYXRoLCBmaXJzdF9yYXcKKytlbmQKKysKKytsb2NhbCBm dW5jdGlvbiBVcGRhdGVBY3RpdmVQcmVmZXJlbmNlKCkgLS1zbGlkZXJzICYgZW50cnkgYm94ZXMg ZG8gbm90IGhhdmUgYSBjbGljay9jaGFuZ2VkIGNhbGxiYWNrLCBzbyB0aGVpciB2YWx1ZXMgbXVz dCBiZSBzYXZlZCB0byB0aGUgYWN0aXZlIHByZWZlcmVuY2UgJ21hbnVhbGx5JworKyAgICBsb2Nh bCBlbmYgPSB7J2V4cG9zdXJlX3dlaWdodCcsJ3NhdHVyYXRpb25fd2VpZ2h0JywnY29udHJhc3Rf d2VpZ2h0JywnZXhwb3N1cmVfb3B0aW11bScsJ2V4cG9zdXJlX3dpZHRoJ30KKysgICAgZm9yIF8s ZGVzY3JpcHRvciBpbiBwYWlycyhlbmYpIGRvCisrICAgICAgICB0ZW1wID0gR1VJLkVORltkZXNj cmlwdG9yXS52YWx1ZQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZl XycuLmRlc2NyaXB0b3IsICdmbG9hdCcsIHRlbXApCisrICAgIGVuZAorKyAgICB0ZW1wID0gR1VJ LlRhcmdldC5jb21wcmVzc2lvbl9sZXZlbF9qcGcudmFsdWUKKysgICAgdGVtcCA9IG1hdGguZmxv b3IodGVtcCkKKysgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbXByZXNz aW9uX2xldmVsX2pwZycsICdpbnRlZ2VyJywgdGVtcCkKKysgICAgdGVtcCA9IEdVSS5UYXJnZXQu YWRkX3RhZ3MudGV4dAorKyAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfYWRk X3RhZ3MnLCAnc3RyaW5nJywgdGVtcCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBTYXZlVG9Q cmVmZXJlbmNlKHByZXNldCkgLS1zYXZlIHRoZSBwcmVzZW50IHZhbHVlcyBvZiBlbmZ1c2UgR1VJ IGVsZW1lbnRzIHRvIHRoZSBzcGVjaWZpZWQgJ3ByZXNldCcKKysgICAgVXBkYXRlQWN0aXZlUHJl ZmVyZW5jZSgpCisrICAgIGZvciBhcmd1bWVudCwgYXJnX2RhdGEgaW4gcGFpcnMoRU5GLmFyZ3Mp IGRvCisrICAgICAgICBsb2NhbCB0ZW1wCisrICAgICAgICBpZiBhcmd1bWVudCA9PSAnY29udHJh c3Rfd2luZG93X3NpemUnIG9yIGFyZ3VtZW50ID09ICdjb250cmFzdF9lZGdlX3NjYWxlJyBvciBh cmd1bWVudCA9PSAnY29udHJhc3RfbWluX2N1cnZhdHVyZScgdGhlbiAtLWNvbWJvYm94ZXMgbXVz dCBiZSBoYW5kbGVkIHNwZWNpYWxseSB2aWEgYW4gaW5kZXggdmFsdWUKKysgICAgICAgICAgICB0 ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfJy4uYXJndW1lbnQuLidfaW5k JywgJ2ludGVnZXInKQorKyAgICAgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgcHJl c2V0Li5hcmd1bWVudC4uJ19pbmQnLCAnaW50ZWdlcicsIHRlbXApCisrICAgICAgICAgICAgdGVt cCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlXycuLmFyZ3VtZW50LCBhcmdfZGF0 YS5zdHlsZSkKKysgICAgICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsIHByZXNldC4u YXJndW1lbnQsIGFyZ19kYXRhLnN0eWxlLCB0ZW1wKQorKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIHRlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV8nLi5hcmd1bWVudCwg YXJnX2RhdGEuc3R5bGUpCisrICAgICAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCBw cmVzZXQuLmFyZ3VtZW50LCBhcmdfZGF0YS5zdHlsZSwgdGVtcCkKKysgICAgICAgIGVuZAorKyAg ICBlbmQKKysgICAgZHQucHJpbnQoc3RyaW5nLmZvcm1hdChfKCJzYXZlZCB0byAlcyIpLCBwcmVz ZXQpKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIExvYWRGcm9tUHJlZmVyZW5jZShwcmVzZXQp IC0tbG9hZCB2YWx1ZXMgZnJvbSB0aGUgc3BlY2lmaWVkICdwcmVzZXQnIGludG8gdGhlIEdVSSBl bGVtZW50cworKyAgICBmb3IgYXJndW1lbnQsIGFyZ19kYXRhIGluIHBhaXJzKEVORi5hcmdzKSBk bworKyAgICBsb2NhbCB0ZW1wCisrICAgICAgICBpZiBhcmd1bWVudCA9PSAnY29udHJhc3Rfd2lu ZG93X3NpemUnIG9yIGFyZ3VtZW50ID09ICdjb250cmFzdF9lZGdlX3NjYWxlJyBvciBhcmd1bWVu dCA9PSAnY29udHJhc3RfbWluX2N1cnZhdHVyZScgdGhlbiAgLS1jb21ib2JveGVzIG11c3QgYmUg aGFuZGxlZCBzcGVjaWFsbHkgdmlhIGFuIGluZGV4IHZhbHVlCisrICAgICAgICAgICAgdGVtcCA9 IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCBwcmVzZXQuLmFyZ3VtZW50Li4nX2luZCcsICdpbnRl Z2VyJykKKysgICAgICAgICAgICBHVUkuRU5GW2FyZ3VtZW50XS5zZWxlY3RlZCA9IHRlbXAKKysg ICAgICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfJy4uYXJndW1lbnQu LidfaW5kJywgJ2ludGVnZXInLCB0ZW1wKQorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHRl bXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgcHJlc2V0Li5hcmd1bWVudCwgYXJnX2RhdGEu c3R5bGUpCisrICAgICAgICAgICAgR1VJLkVORlthcmd1bWVudF0udmFsdWUgPSB0ZW1wCisrICAg ICAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlXycuLmFyZ3VtZW50LCBh cmdfZGF0YS5zdHlsZSwgdGVtcCkKKysgICAgICAgIGVuZCAgICAgCisrICAgIGVuZAorKyAgICBk dC5wcmludChzdHJpbmcuZm9ybWF0KF8oImxvYWRlZCBmcm9tICVzIiksIHByZXNldCkpCisrZW5k CisrCisrbG9jYWwgZnVuY3Rpb24gcmVtb3ZlX3RlbXBfZmlsZXMoaW1hZ2VzX3RvX3JlbW92ZSkg LS1kZWxldGVzIGFsbCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIGlucHV0IHN0cmluZworKyAgICBp ZiBkdC5jb25maWd1cmF0aW9uLnJ1bm5pbmdfb3MgPT0gJ3dpbmRvd3MnIHRoZW4KKysgICAgICAg IGR0LmNvbnRyb2wuZXhlY3V0ZSgnZGVsICcuLmltYWdlc190b19yZW1vdmUpCisrICAgIGVsc2UK KysgICAgICAgIGR0LmNvbnRyb2wuZXhlY3V0ZSgncm0gJy4uaW1hZ2VzX3RvX3JlbW92ZSkKKysg ICAgZW5kCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gaW5pdGlhbChzdG9yYWdlLCBmb3JtYXQs IGltYWdlcywgaGlnaF9xdWFsaXR5LCBleHRyYV9kYXRhKSAtLWNhbGxlZCBiZWZvcmUgZXhwb3J0 IGhhcHBlbnMsIGVuc3VyZSBlbm91Z2ggaW1hZ2VzIHNlbGVjdGVkIGFuZCBhbGwgbmVjZXNhcnkg cHJvZ3JhbXMgaW5zdGFsbGVkIGNvcnJlY3RseSwgaWYgZXJyb3IgdGhlbiBpdCBzZXRzIGEgYml0 IGluIGV4dHJhX2RhdGEgZm9yIHVzZSBieSBtYWluIGFuZCBjYW5jZWxzIGV4cG9ydAorKyAgICBp ZiAjaW1hZ2VzIDwyIHRoZW4KKysgICAgICAgIHRhYmxlLmluc2VydChleHRyYV9kYXRhLCAxLCAx KQorKyAgICAgICAgcmV0dXJuIHt9CisrICAgIGVsc2UKKysgICAgICAgIFByZUNhbGwoe0VORixB SVMsRVhGfSkKKysgICAgICAgIGlmIEFJUy5pbnN0YWxsX2Vycm9yIG9yIEVORi5pbnN0YWxsX2Vy cm9yIG9yIEVYRi5pbnN0YWxsX2Vycm9yIHRoZW4KKysgICAgICAgICAgICB0YWJsZS5pbnNlcnQo ZXh0cmFfZGF0YSwgMSwgMikKKysgICAgICAgICAgICByZXR1cm4ge30KKysgICAgICAgIGVsc2UK KysgICAgICAgICAgICB0YWJsZS5pbnNlcnQoZXh0cmFfZGF0YSwgMSwgMCkKKysgICAgICAgICAg ICByZXR1cm4gaW1hZ2VzCisrICAgICAgICBlbmQKKysgICAgZW5kCisrZW5kCisrCisrbG9jYWwg ZnVuY3Rpb24gc3VwcG9ydF9mb3JtYXQoc3RvcmFnZSwgZm9ybWF0KSAtLXRlbGxzIGR0IHdlIG9u bHkgc3VwcG9ydCBUSUZGIGV4cG9ydCB0eXBlCisrICAgIGxvY2FsIHJldCA9IGZhbHNlCisrICAg IGxvY2FsIHRlbXAgPSBzdHJpbmcuZmluZChmb3JtYXQubmFtZSwgJ1RJRkYnKQorKyAgICBpZiB0 ZW1wIH49IG5pbCB0aGVuIHJldCA9IHRydWUgZW5kCisrICAgIHJldHVybiByZXQKKytlbmQKKysK Kytsb2NhbCBmdW5jdGlvbiBzaG93X3N0YXR1cyhzdG9yYWdlLCBpbWFnZSwgZm9ybWF0LCBmaWxl bmFtZSwgbnVtYmVyLCB0b3RhbCwgaGlnaF9xdWFsaXR5LCBleHRyYV9kYXRhKSAtLW91dHB1dHMg bWVzc2FnZSB0byB1c2VyIHNob3dpbmcgc2NyaXB0IGV4cG9ydCBzdGF0dXMKKysgICAgZHQucHJp bnQoc3RyaW5nLmZvcm1hdChfKCJleHBvcnQgZm9yIGltYWdlIGZ1c2lvbiAlZCAvICVkIiksIG1h dGguZmxvb3IobnVtYmVyKSwgbWF0aC5mbG9vcih0b3RhbCkpKQorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIG1haW4oc3RvcmFnZSwgaW1hZ2VfdGFibGUsIGV4dHJhX2RhdGEpCisrICAgIGlmIGV4 dHJhX2RhdGFbMV0gPT0gMSB0aGVuCisrICAgICAgICBkdC5wcmludChfKCd0b28gZmV3IGltYWdl cyBzZWxlY3RlZCwgcGxlYXNlIHNlbGVjdCBhdCBsZWFzdCAyIGltYWdlcycpKQorKyAgICAgICAg cmV0dXJuCisrICAgIGVsc2VpZiBleHRyYV9kYXRhWzFdID09IDIgdGhlbgorKyAgICAgICAgZHQu cHJpbnQoXygnaW5zdGFsbGF0aW9uIGVycm9yLCBwbGVhc2UgdmVyaWZ5IGJpbmFyeSBwYXRocyBh cmUgY29ycmVjdCcpKQorKyAgICAgICAgcmV0dXJuCisrICAgIGVuZAorKyAgICBsb2NhbCBpbWFn ZXNfdG9fcmVtb3ZlID0gJycKKysgICAgbG9jYWwgZmluYWxfaW1hZ2UgPSBuaWwKKysgICAgbG9j YWwgc291cmNlX3JhdyA9IG5pbAorKyAgICBmb3IgcmF3LGV4cG9ydGVkIGluIHBhaXJzKGltYWdl X3RhYmxlKSBkbyAtLWFkZCB0aGUgZXhwb3J0ZWQgZmlsZXMgdG8gbGlzdCBvZiBpbWFnZXMgdG8g cmVtb3ZlIHdoZW4gY29tcGxldGVcZmFpbAorKyAgICAgICAgaW1hZ2VzX3RvX3JlbW92ZSA9IGlt YWdlc190b19yZW1vdmUuLmRmLnNhbml0aXplX2ZpbGVuYW1lKGV4cG9ydGVkKS4uJyAnCisrICAg IGVuZAorKyAgICBpZiBHVUkuYWxpZ24udmFsdWUgdGhlbiAtLWlmIHVzZXIgc2VsZWN0ZWQgdG8g YWxpZ24gaW1hZ2VzIHRoZW4gdXBkYXRlIEFJUyBhcmd1bWVudHMgYW5kIGV4ZWN1dGUgQUlTIGNv bW1hbmQKKysgICAgICAgIGxvY2FsIGpvYiA9IGR0Lmd1aS5jcmVhdGVfam9iKCdhbGlnbmluZyBp bWFnZXMnKQorKyAgICAgICAgaW1hZ2VfdGFibGUsIGltYWdlc190b19yZW1vdmUsIEFJUy5pbWFn ZXNfc3RyaW5nID0gVXBkYXRlQUlTYXJncyhpbWFnZV90YWJsZSwgaW1hZ2VzX3RvX3JlbW92ZSkK KysgICAgICAgIGxvY2FsIHJ1bl9jbWQgPSBCdWlsZEV4ZWN1dGVDbWQoQUlTKQorKyAgICAgICAg ZHQucHJpbnRfbG9nKCJBSVMgcnVuIGNvbW1hbmQgaXMgIiAuLiBydW5fY21kKQorKyAgICAgICAg cnVuX2NtZCA9IHNhbml0aXplX2RlY2ltYWxzKHJ1bl9jbWQpCisrICAgICAgICBkdC5wcmludF9s b2coIkFJUyBkZWNpbWFhbCBzYW5pdGl6ZWQgY29tbWFuZCBpcyAiIC4uIHJ1bl9jbWQpCisrICAg ICAgICBsb2NhbCByZXNwID0gZHN5cy5leHRlcm5hbF9jb21tYW5kKHJ1bl9jbWQpCisrICAgICAg ICBqb2IudmFsaWQgPSBmYWxzZQorKyAgICAgICAgaWYgcmVzcCB+PSAwIHRoZW4KKysgICAgICAg ICAgICByZW1vdmVfdGVtcF9maWxlcyhpbWFnZXNfdG9fcmVtb3ZlKQorKyAgICAgICAgICAgIGR0 LnByaW50KHN0cmluZy5mb3JtYXQoXygiJXMgZmFpbGVkIiksIEFJUy5uYW1lKSkKKysgICAgICAg ICAgICBkdC5wcmludF9lcnJvcihBSVMubmFtZSAuLiAnIGZhaWxlZCcpCisrICAgICAgICAgICAg cmV0dXJuCisrICAgICAgICBlbmQKKysgICAgZW5kCisrICAgIHZhcmlhbnRzID0geydhY3RpdmVf J30gLS1kZWZhdWx0IHRvICdhY3RpdmUnIHNldHRpbmdzIHVubGVzcyB1c2VyIHNlbGVjdGVkIHRv IGNyZWF0ZSBtdWx0aXBsZSBpbWFnZSB2YXJpYW50cyBmcm9tIHRoZSBzcGVjaWZpZWQgcHJlc2V0 IHR5cGVzCisrICAgIGlmIEdVSS5QcmVzZXRzLnZhcmlhbnRzLnZhbHVlIHRoZW4KKysgICAgICAg IGlmIEdVSS5QcmVzZXRzLnZhcmlhbnRzX3R5cGUudmFsdWUgPT0gJ2RyaScgdGhlbgorKyAgICAg ICAgICAgIHZhcmlhbnRzID0geydkcmlfMScsICdkcmlfMicsICdkcmlfMyd9CisrICAgICAgICBl bHNlCisrICAgICAgICAgICAgdmFyaWFudHMgPSB7J2RmZl8yJywgJ2RmZl8yJywgJ2RmZl8zJ30K KysgICAgICAgIGVuZAorKyAgICBlbmQKKysgICAgbG9jYWwgaW1hZ2VfbnVtID0gMAorKyAgICBs b2NhbCBqb2IgPSBkdC5ndWkuY3JlYXRlX2pvYignYmxlbmRpbmcgJy4uI3ZhcmlhbnRzLi4nIGlt YWdlKHMpJywgdHJ1ZSkgLS1jcmVhdGUgYSBHVUkgam9iIGJhciB0byBkaXNwbGF5IGVuZnVzZSBw cm9ncmVzcworKyAgICBVcGRhdGVBY3RpdmVQcmVmZXJlbmNlKCkgLS1sb2FkIGN1cnJlbnQgR1VJ IHZhbHVlcyBpbnRvIGFjdGl2ZSBwcmVmZXJlbmNlIChvbmx5IGFwcGxpZXMgdG8gZWxlbWVudHMg d2l0aG91dCBhIGNsaWNrZWQvY2hhbmdlZCBjYWxsYmFjaykKKysgICAgZm9yIHgscHJlZml4IGlu IHBhaXJzKHZhcmlhbnRzKSBkbyAtLWZvciBlYWNoIGltYWdlIHRvIGJlIGNyZWF0ZWQgbG9hZCBp biB0aGUgcHJlZmVyZW5jZSB2YWx1ZXMsIGJ1aWxkIGFyZ3VtZW50cyBzdHJpbmcsIG91dHB1dCBp bWFnZSwgYW5kIHJ1biBjb21tYW5kIHRoZW4gZXhlY3V0ZS4KKysgICAgICAgIGpvYi5wZXJjZW50 ID0gaW1hZ2VfbnVtIC8oI3ZhcmlhbnRzKQorKyAgICAgICAgaW1hZ2VfbnVtID0gaW1hZ2VfbnVt KzEKKysgICAgICAgIEVORi5pbWFnZXNfc3RyaW5nLCBmaW5hbF9pbWFnZSwgc291cmNlX3JhdyA9 IFVwZGF0ZUVORmFyZ3MoaW1hZ2VfdGFibGUsIHByZWZpeCkKKysgICAgICAgIGxvY2FsIHJ1bl9j bWQgPSBCdWlsZEV4ZWN1dGVDbWQoRU5GKQorKyAgICAgICAgZHQucHJpbnRfbG9nKCJFTkYgcnVu IGNvbW1hbmQgaXMgIiAuLiBydW5fY21kKQorKyAgICAgICAgcnVuX2NtZCA9IHNhbml0aXplX2Rl Y2ltYWxzKHJ1bl9jbWQpCisrICAgICAgICBkdC5wcmludF9sb2coIkVORiBkZWNpbWFhbCBzYW5p dGl6ZWQgY29tbWFuZCBpcyAiIC4uIHJ1bl9jbWQpCisrICAgICAgICBsb2NhbCByZXNwID0gZHN5 cy5leHRlcm5hbF9jb21tYW5kKHJ1bl9jbWQpCisrICAgICAgICBpZiByZXNwIH49IDAgdGhlbgor KyAgICAgICAgICAgIHJlbW92ZV90ZW1wX2ZpbGVzKGltYWdlc190b19yZW1vdmUpCisrICAgICAg ICAgICAgZHQucHJpbnRfZXJyb3IoRU5GLm5hbWUuLicgZmFpbGVkJykKKysgICAgICAgICAgICBk dC5wcmludChzdHJpbmcuZm9ybWF0KF8oIiVzIGZhaWxlZCIpLCBFTkYubmFtZSkpCisrICAgICAg ICAgICAgam9iLnZhbGlkID0gZmFsc2UKKysgICAgICAgICAgICByZXR1cm4KKysgICAgICAgIGVu ZAorKyAgICAgICAgCisrICAgICAgICAtLWNvcHkgZXhpZiBkYXRhIGZyb20gb3JpZ2luYWwgZmls ZQorKyAgICAgICAgcnVuX2NtZCA9IEVYRi5iaW4uLicgLVRhZ3NGcm9tRmlsZSAnLi5kZi5zYW5p dGl6ZV9maWxlbmFtZShzb3VyY2VfcmF3LnBhdGguLm9zX3BhdGhfc2VwZXJhdG9yLi5zb3VyY2Vf cmF3LmZpbGVuYW1lKS4uJyAtZXhpZjphbGwgLS1zdWJpZmQ6YWxsIC1vdmVyd3JpdGVfb3JpZ2lu YWwgJy4uZGYuc2FuaXRpemVfZmlsZW5hbWUoZmluYWxfaW1hZ2UpCisrICAgICAgICAtLSByZXBs YWNlIGNvbW1hIGRlY2ltYWwgc2VwYXJhdG9yIHdpdGggcGVyaW9kCisrICAgICAgICBkdC5wcmlu dF9sb2coIkVYRiBydW4gY29tbWFuZCBpcyAiIC4uIHJ1bl9jbWQpCisrICAgICAgICBydW5fY21k ID0gc2FuaXRpemVfZGVjaW1hbHMocnVuX2NtZCkKKysgICAgICAgIGR0LnByaW50X2xvZygiRVhG IGRlY2ltYWFsIHNhbml0aXplZCBjb21tYW5kIGlzICIgLi4gcnVuX2NtZCkKKysgICAgICAgIHJl c3AgPSBkc3lzLmV4dGVybmFsX2NvbW1hbmQocnVuX2NtZCkKKysgICAgICAgIAorKyAgICAgICAg CisrICAgICAgICBpZiBHVUkuVGFyZ2V0LmF1dG9faW1wb3J0LnZhbHVlIHRoZW4gLS1pbXBvcnQg aW1hZ2UgaW50byBkdCBpZiBzcGVjaWZpZWQKKysgICAgICAgICAgICBsb2NhbCBpbXBvcnRlZCA9 IGR0LmRhdGFiYXNlLmltcG9ydChmaW5hbF9pbWFnZSkKKysgICAgICAgICAgICBkdC5wcmludF9s b2coImltYWdlIGltcG9ydGVkIikKKysgICAgICAgICAgICBpZiBHVUkuVGFyZ2V0LmFwcGx5X3N0 eWxlLnNlbGVjdGVkID4gMSB0aGVuIC0tYXBwbHkgc3BlY2lmaWVkIHN0eWxlIHRvIGltcG9ydGVk IGltYWdlCisrICAgICAgICAgICAgICAgIGxvY2FsIHNldF9zdHlsZSA9IHN0eWxlc1tHVUkuVGFy Z2V0LmFwcGx5X3N0eWxlLnNlbGVjdGVkIC0gMV0KKysgICAgICAgICAgICAgICAgZHQuc3R5bGVz LmFwcGx5KHNldF9zdHlsZSAsIGltcG9ydGVkKQorKyAgICAgICAgICAgIGVuZAorKyAgICAgICAg ICAgIGlmIEdVSS5UYXJnZXQuY29weV90YWdzLnZhbHVlIHRoZW4gLS1jb3B5IHRhZ3MgZnJvbSBz b3VyY2UgaW1hZ2UKKysgICAgICAgICAgICAgICAgbG9jYWwgYWxsX3RhZ3MgPSBkdC50YWdzLmdl dF90YWdzKHNvdXJjZV9yYXcpIAorKyAgICAgICAgICAgICAgICBmb3IgXyx0YWcgaW4gcGFpcnMo YWxsX3RhZ3MpIGRvCisrICAgICAgICAgICAgICAgICAgICBpZiBzdHJpbmcubWF0Y2godGFnLm5h bWUsICdkYXJrdGFibGV8JykgPT0gbmlsIHRoZW4gZHQudGFncy5hdHRhY2godGFnLCBpbXBvcnRl ZCkgZW5kCisrICAgICAgICAgICAgICAgIGVuZAorKyAgICAgICAgICAgIGVuZAorKyAgICAgICAg ICAgIGxvY2FsIHNldF90YWcgPSBHVUkuVGFyZ2V0LmFkZF90YWdzLnRleHQKKysgICAgICAgICAg ICBpZiBzZXRfdGFnIH49IG5pbCB0aGVuIC0tYWRkIGFkZGl0aW9uYWwgdXNlci1zcGVjaWZpZWQg dGFncworKyAgICAgICAgICAgICAgICBmb3IgdGFnIGluIHN0cmluZy5nbWF0Y2goc2V0X3RhZywg J1teLF0rJykgZG8KKysgICAgICAgICAgICAgICAgICAgIHRhZyA9IENsZWFuU3BhY2VzKHRhZykK KysgICAgICAgICAgICAgICAgICAgIHRhZyA9IGR0LnRhZ3MuY3JlYXRlKHRhZykKKysgICAgICAg ICAgICAgICAgICAgIGR0LnRhZ3MuYXR0YWNoKHRhZywgaW1wb3J0ZWQpIAorKyAgICAgICAgICAg ICAgICBlbmQKKysgICAgICAgICAgICBlbmQKKysgICAgICAgIGVuZAorKyAgICBlbmQKKysgICAg cmVtb3ZlX3RlbXBfZmlsZXMoaW1hZ2VzX3RvX3JlbW92ZSkKKysgICAgam9iLnZhbGlkID0gZmFs c2UKKysgICAgZHQucHJpbnQoJ2ltYWdlIGZ1c2lvbiBwcm9jZXNzIGNvbXBsZXRlJykKKytlbmQK KysKKytsb2NhbCBmdW5jdGlvbiBkZXN0cm95KCkKKysgICAgZHQuZGVzdHJveV9zdG9yYWdlKCdt b2R1bGVfZW5mdXNlQWR2YW5jZWQnKQorK2VuZAorKworKy0tR1VJLS0KKytzdGFja19jb21wcmVz c2lvbiA9IGR0Lm5ld193aWRnZXQoJ3N0YWNrJyl7fQorK2xvY2FsIGxhYmVsX0FJU19vcHRpb25z PSBkdC5uZXdfd2lkZ2V0KCdzZWN0aW9uX2xhYmVsJyl7CisrICAgIGxhYmVsID0gXygnaW1hZ2Ug YWxpZ24gb3B0aW9ucycpCisrfQorK0dVSS5hbGlnbiA9IGR0Lm5ld193aWRnZXQoJ2NoZWNrX2J1 dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ2FsaWduIGltYWdlcycpLAorKyAgICB2YWx1ZSA9IGR0 LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2FsaWduJywgJ2Jvb2wnKSwKKysgICAgdG9v bHRpcCA9IF8oJ2F1dG9tYXRpY2FsbHkgYWxpZ24gaW1hZ2VzIHByaW9yIHRvIGVuZnVzZScpLAor KyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBkdC5wcmVm ZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfYWxpZ24nLCAnYm9vbCcsIHNlbGYudmFsdWUpIAor KyAgICAgICAgZm9yIF8sd2lkZ2V0IGluIHBhaXJzKEdVSS5BSVMpIGRvCisrICAgICAgICAgICAg d2lkZ2V0LnNlbnNpdGl2ZSA9IHNlbGYudmFsdWUKKysgICAgICAgIGVuZAorKyAgICBlbmQsCisr ICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IHRydWUgZW5k CisrfQorK0dVSS5BSVMucmFkaWFsX2Rpc3RvcnRpb24gPSBkdC5uZXdfd2lkZ2V0KCdjaGVja19i dXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdvcHRpbWl6ZSByYWRpYWwgZGlzdG9ydGlvbicpLAor KyAgICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX3JhZGlhbF9kaXN0 b3J0aW9uJywgJ2Jvb2wnKSwKKysgICAgdG9vbHRpcCA9IF8oJ29wdGltaXplIHJhZGlhbCBkaXN0 b3J0aW9uIGZvciBhbGwgaW1hZ2VzLCBcbmV4Y2VwdCBmb3IgZmlyc3QnKSwKKysgICAgY2xpY2tl ZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Fj dGl2ZV9yYWRpYWxfZGlzdG9ydGlvbicsICdib29sJywgc2VsZi52YWx1ZSkgZW5kLAorKyAgICBy ZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUgPSB0cnVlIGVuZAorK30K KytHVUkuQUlTLm9wdGltaXplX2ZpZWxkID0gZHQubmV3X3dpZGdldCgnY2hlY2tfYnV0dG9uJyl7 CisrICAgIGxhYmVsID0gXygnb3B0aW1pemUgZmllbGQgb2YgdmlldycpLCAKKysgICAgdmFsdWUg PSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9vcHRpbWl6ZV9maWVsZCcsICdib29s JyksCisrICAgIHRvb2x0aXAgPSBfKCdvcHRpbWl6ZSBmaWVsZCBvZiB2aWV3IGZvciBhbGwgaW1h Z2VzLCBleGNlcHQgZm9yIGZpcnN0LiBcblVzZWZ1bCBmb3IgYWxpZ25pbmcgZm9jdXMgc3RhY2tz IChERkYpIHdpdGggc2xpZ2h0bHkgXG5kaWZmZXJlbnQgbWFnbmlmaWNhdGlvbi4nKSwKKysgICAg Y2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVuY2VzLndyaXRlKG1v ZCwgJ2FjdGl2ZV9vcHRpbWl6ZV9maWVsZCcsICdib29sJywgc2VsZi52YWx1ZSkgZW5kLAorKyAg ICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUgPSB0cnVlIGVuZAor K30KKytHVUkuQUlTLm9wdGltaXplX2ltYWdlX2NlbnRlciA9IGR0Lm5ld193aWRnZXQoJ2NoZWNr X2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ29wdGltaXplIGltYWdlIGNlbnRlciBzaGlmdCcp LCAKKysgICAgdmFsdWUgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9vcHRpbWl6 ZV9pbWFnZV9jZW50ZXInLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygnb3B0aW1pemUgaW1h Z2UgY2VudGVyIHNoaWZ0IGZvciBhbGwgaW1hZ2VzLCBcbmV4Y2VwdCBmb3IgZmlyc3QuJyksCisr ICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsICdhY3RpdmVfb3B0aW1pemVfaW1hZ2VfY2VudGVyJywgJ2Jvb2wnLCBzZWxmLnZhbHVl KSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9 IHRydWUgZW5kCisrfQorK0dVSS5BSVMuYXV0b19jcm9wID0gZHQubmV3X3dpZGdldCgnY2hlY2tf YnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnYXV0byBjcm9wJyksIAorKyAgICB2YWx1ZSA9IGR0 LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2F1dG9fY3JvcCcsICdib29sJyksCisrICAg IHRvb2x0aXAgPSBfKCdhdXRvIGNyb3AgdGhlIGltYWdlIHRvIHRoZSBhcmVhIGNvdmVyZWQgYnkg YWxsIGltYWdlcy4nKSwKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0 LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9hdXRvX2Nyb3AnLCAnYm9vbCcsIHNlbGYu dmFsdWUpIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBzZWxmLnZh bHVlID0gdHJ1ZSBlbmQKKyt9CisrR1VJLkFJUy5kaXN0b3J0aW9uID0gZHQubmV3X3dpZGdldCgn Y2hlY2tfYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnbG9hZCBkaXN0b3J0aW9uIGZyb20gbGVu cyBkYXRhYmFzZScpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2Fj dGl2ZV9kaXN0b3J0aW9uJywgJ2Jvb2wnKSwKKysgICAgdG9vbHRpcCA9IF8oJ3RyeSB0byBsb2Fk IGRpc3RvcnRpb24gaW5mb3JtYXRpb24gZnJvbSBsZW5zIGRhdGFiYXNlJyksCisrICAgIGNsaWNr ZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfZGlzdG9ydGlvbicsICdib29sJywgc2VsZi52YWx1ZSkgZW5kLAorKyAgICByZXNldF9j YWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUgPSB0cnVlIGVuZAorK30KKytHVUku QUlTLmdwdSA9IGR0Lm5ld193aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8o J3VzZSBncHUnKSwgCisrICAgIHZhbHVlID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3Rp dmVfZ3B1JywgJ2Jvb2wnKSwKKysgICAgdG9vbHRpcCA9IF8oJ3VzZSBncHUgZHVyaW5nIGFsaWdu bWVudCcpLAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgZHQucHJlZmVy ZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2dwdScsICdib29sJywgc2VsZi52YWx1ZSkgZW5kLAor KyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUgPSB0cnVlIGVu ZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZ3JpZF9zaXpl X2luZCcsICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA5KSB0aGVuIHRlbXAg PSA1IGVuZCAKKytHVUkuQUlTLmdyaWRfc2l6ZSA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7 CisrICAgIGxhYmVsID0gXygnaW1hZ2UgZ3JpZCBzaXplJyksIAorKyAgICB0b29sdGlwID0gXygn YnJlYWsgaW1hZ2UgaW50byBhIHJlY3Rhbmd1bGFyIGdyaWQgXG5hbmQgYXR0ZW1wdCB0byBmaW5k IG51bSBjb250cm9sIHBvaW50cyBpbiBlYWNoIHNlY3Rpb24uXG5kZWZhdWx0OiAoNXg1KScpLAor KyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3Jywn OCcsJzknLAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAg IGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9ncmlkX3NpemUnLCAnaW50ZWdlcics IHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZl X2dyaWRfc2l6ZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCwKKysg ICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYuc2VsZWN0 ZWQgPSA1CisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfZ3JpZF9z aXplJywgJ2ludGVnZXInLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndy aXRlKG1vZCwgJ2FjdGl2ZV9ncmlkX3NpemVfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVk KQorKyAgICBlbmQKKyt9IAorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2 ZV9jb250cm9sX3BvaW50c19pbmQnLCAnaW50ZWdlcicpCisraWYgbm90IEluUmFuZ2UodGVtcCwg MSwgOSkgdGhlbiB0ZW1wID0gOCBlbmQgCisrR1VJLkFJUy5jb250cm9sX3BvaW50cyA9IGR0Lm5l d193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnY29udHJvbCBwb2ludHMvZ3Jp ZCcpLCAKKysgICAgdG9vbHRpcCA9IF8oJ251bWJlciBvZiBjb250cm9sIHBvaW50cyAocGVyIGdy aWQsIHNlZSBvcHRpb24gLWcpIFxudG8gY3JlYXRlIGJldHdlZW4gYWRqYWNlbnQgaW1hZ2VzIFxu ZGVmYXVsdDogKDgpLicpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICcxJywnMicsJzMn LCc0JywnNScsJzYnLCc3JywnOCcsJzknLCAgICAgICAgICAgICAKKysgICAgY2hhbmdlZF9jYWxs YmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2Qs ICdhY3RpdmVfY29udHJvbF9wb2ludHMnLCAnaW50ZWdlcicsIHNlbGYudmFsdWUpIAorKyAgICAg ICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbnRyb2xfcG9pbnRzX2luZCcs ICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFj ayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDgKKysgICAgICAg IGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cm9sX3BvaW50cycsICdpbnRl Z2VyJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfY29udHJvbF9wb2ludHNfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAg ICBlbmQKKyt9IAorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9jb250 cm9sX3BvaW50c19yZW1vdmVfaW5kJywgJ2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAs IDEsIDkpIHRoZW4gdGVtcCA9IDMgZW5kIAorK0dVSS5BSVMuY29udHJvbF9wb2ludHNfcmVtb3Zl ID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwgPSBfKCdyZW1vdmUgY29u dHJvbCBwb2ludHMgd2l0aCBlcnJvcicpLCAKKysgICAgdG9vbHRpcCA9IF8oJ3JlbW92ZSBhbGwg Y29udHJvbCBwb2ludHMgd2l0aCBhbiBlcnJvciBoaWdoZXIgXG50aGFuIG51bSBwaXhlbHMgXG5k ZWZhdWx0OiAoMyknKSwKKysgICAgc2VsZWN0ZWQgPSB0ZW1wLAorKyAgICAnMScsJzInLCczJywn NCcsJzUnLCc2JywnNycsJzgnLCc5JywgICAgICAgICAgICAgCisrICAgIGNoYW5nZWRfY2FsbGJh Y2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAn YWN0aXZlX2NvbnRyb2xfcG9pbnRzX3JlbW92ZScsICdpbnRlZ2VyJywgc2VsZi52YWx1ZSkgCisr ICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJvbF9wb2ludHNf cmVtb3ZlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICBy ZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9 IDMKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cm9sX3Bv aW50c19yZW1vdmUnLCAnaW50ZWdlcicsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVy ZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbnRyb2xfcG9pbnRzX3JlbW92ZV9pbmQnLCAnaW50 ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5j ZXMucmVhZChtb2QsICdhY3RpdmVfY29ycmVsYXRpb25faW5kJywgJ2ludGVnZXInKQorK2lmIG5v dCBJblJhbmdlKHRlbXAsIDEsIDEwKSB0aGVuIHRlbXAgPSA5IGVuZCAKKytHVUkuQUlTLmNvcnJl bGF0aW9uICA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnY29y cmVsYXRpb24gdGhyZXNob2xkIGZvciBjb250cm9sIHBvaW50cycpLCAKKysgICAgdG9vbHRpcCA9 IF8oJ2NvcnJlbGF0aW9uIHRocmVzaG9sZCBmb3IgaWRlbnRpZnlpbmcgXG5jb250cm9sIHBvaW50 cyBcbmRlZmF1bHQ6ICgwLjkpLicpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICcwLjEn LCcwLjInLCcwLjMnLCcwLjQnLCcwLjUnLCcwLjYnLCcwLjcnLCcwLjgnLCcwLjknLCcxLjAnLCAg ICAgCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQu cHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvcnJlbGF0aW9uJywgJ2Zsb2F0Jywgc2Vs Zi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29y cmVsYXRpb25faW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQsCisrICAg IHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnNlbGVjdGVk ID0gOQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvcnJlbGF0 aW9uJywgJ2Zsb2F0Jywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsICdhY3RpdmVfY29ycmVsYXRpb25faW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVk KQorKyAgICBlbmQKKyt9IAorK2xvY2FsIGxhYmVsX0VORl9vcHRpb25zPSBkdC5uZXdfd2lkZ2V0 KCdzZWN0aW9uX2xhYmVsJyl7CisrICAgIGxhYmVsID0gXygnaW1hZ2UgZnVzaW9uIG9wdGlvbnMn KQorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZXhwb3N1cmVf d2VpZ2h0JywgJ2Zsb2F0JykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAwLCAxKSB0aGVuIHRlbXAg PSAxIGVuZAorK0dVSS5FTkYuZXhwb3N1cmVfd2VpZ2h0ID0gZHQubmV3X3dpZGdldCgnc2xpZGVy Jyl7CisrICAgIGxhYmVsID0gXygnZXhwb3N1cmUgd2VpZ2h0JyksCisrICAgIHRvb2x0aXAgPSBf KCdzZXQgdGhlIHJlbGF0aXZlIHdlaWdodCBvZiB0aGUgd2VsbC1leHBvc2VkbmVzcyBjcml0ZXJp b24gXG5hcyBkZWZpbmVkIGJ5IHRoZSBjaG9zZW4gZXhwb3N1cmUgd2VpZ2h0IGZ1bmN0aW9uLiBc bmluY3JlYXNpbmcgdGhpcyB3ZWlnaHQgcmVsYXRpdmUgdG8gdGhlIG90aGVycyB3aWxsXG4gbWFr ZSB3ZWxsLWV4cG9zZWQgcGl4ZWxzIGNvbnRyaWJ1dGUgbW9yZSB0b1xuIHRoZSBmaW5hbCBvdXRw dXQuIFxuZGVmYXVsdDogKDEuMCknKSwKKysgICAgaGFyZF9taW4gPSAwLAorKyAgICBoYXJkX21h eCA9IDEsCisrICAgIHZhbHVlID0gdGVtcCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlv bihzZWxmKSAKKysgICAgICAgIHNlbGYudmFsdWUgPSAxCisrICAgIGVuZAorK30KKyt0ZW1wID0g ZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfc2F0dXJhdGlvbl93ZWlnaHQnLCAnZmxv YXQnKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDAsIDEpIHRoZW4gdGVtcCA9IC4yIGVuZAorK0dV SS5FTkYuc2F0dXJhdGlvbl93ZWlnaHQgPSBkdC5uZXdfd2lkZ2V0KCdzbGlkZXInKXsKKysgICAg bGFiZWwgPSBfKCdzYXR1cmF0aW9uIHdlaWdodCcpLAorKyAgICB0b29sdGlwID0gXygnc2V0IHRo ZSByZWxhdGl2ZSB3ZWlnaHQgb2YgaGlnaC1zYXR1cmF0aW9uIHBpeGVscy4gXG5pbmNyZWFzaW5n IHRoaXMgd2VpZ2h0IG1ha2VzIHBpeGVscyB3aXRoIGhpZ2ggXG5zYXR1cmF0aW9uIGNvbnRyaWJ1 dGUgbW9yZSB0byB0aGUgZmluYWwgb3V0cHV0LiBcbmRlZmF1bHQ6ICgwLjIpJyksCisrICAgIGhh cmRfbWluID0gMCwKKysgICAgaGFyZF9tYXggPSAxLAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAg IHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnZhbHVlID0g MC4yCisrICAgIGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3Rp dmVfY29udHJhc3Rfd2VpZ2h0JywgJ2Zsb2F0JykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAwLCAx KSB0aGVuIHRlbXAgPSAwIGVuZAorK0dVSS5FTkYuY29udHJhc3Rfd2VpZ2h0ID0gZHQubmV3X3dp ZGdldCgnc2xpZGVyJyl7CisrICAgIGxhYmVsID0gXygnY29udHJhc3Qgd2VpZ2h0JyksCisrICAg IHRvb2x0aXAgPSBfKCdzZXRzIHRoZSByZWxhdGl2ZSB3ZWlnaHQgb2YgaGlnaCBsb2NhbC1jb250 cmFzdCBwaXhlbHMuIFxuZGVmYXVsdDogKDAuMCkuJyksCisrICAgIGhhcmRfbWluID0gMCwKKysg ICAgaGFyZF9tYXggPSAxLAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAgIHJlc2V0X2NhbGxiYWNr ID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnZhbHVlID0gMAorKyAgICBlbmQKKyt9 CisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2V4cG9zdXJlX29wdGlt dW0nLCAnZmxvYXQnKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDAsIDEpIHRoZW4gdGVtcCA9IDAu NSBlbmQKKytHVUkuRU5GLmV4cG9zdXJlX29wdGltdW0gPSBkdC5uZXdfd2lkZ2V0KCdzbGlkZXIn KXsKKysgICAgbGFiZWwgPSBfKCdleHBvc3VyZSBvcHRpbXVtJyksCisrICAgIHRvb2x0aXAgPSBf KCdkZXRlcm1pbmUgYXQgd2hhdCBub3JtYWxpemVkIGV4cG9zdXJlIHZhbHVlXG4gdGhlIG9wdGlt dW0gZXhwb3N1cmUgb2YgdGhlIGlucHV0IGltYWdlc1xuIGlzLiB0aGlzIGlzLCBzZXQgdGhlIHBv c2l0aW9uIG9mIHRoZSBtYXhpbXVtXG4gb2YgdGhlIGV4cG9zdXJlIHdlaWdodCBjdXJ2ZS4gdXNl IHRoaXMgXG5vcHRpb24gdG8gZmluZS10dW5lIGV4cG9zdXJlIHdlaWdodGluZy4gXG5kZWZhdWx0 OiAoMC41KScpLAorKyAgICBoYXJkX21pbiA9IDAsCisrICAgIGhhcmRfbWF4ID0gMSwKKysgICAg dmFsdWUgPSB0ZW1wLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAg ICAgICAgc2VsZi52YWx1ZSA9IDAuNQorKyAgICBlbmQKKyt9CisrdGVtcCA9IGR0LnByZWZlcmVu Y2VzLnJlYWQobW9kLCAnYWN0aXZlX2V4cG9zdXJlX3dpZHRoJywgJ2Zsb2F0JykKKytpZiBub3Qg SW5SYW5nZSh0ZW1wLCAwLCAxKSB0aGVuIHRlbXAgPSAwLjIgZW5kCisrR1VJLkVORi5leHBvc3Vy ZV93aWR0aCA9IGR0Lm5ld193aWRnZXQoJ3NsaWRlcicpeworKyAgICBsYWJlbCA9IF8oJ2V4cG9z dXJlIHdpZHRoJyksCisrICAgIHRvb2x0aXAgPSBfKCdzZXQgdGhlIGNoYXJhY3RlcmlzdGljIHdp ZHRoIChGV0hNKSBvZiB0aGUgZXhwb3N1cmUgXG53ZWlnaHQgZnVuY3Rpb24uIGxvdyBudW1iZXJz IGdpdmUgbGVzcyB3ZWlnaHQgdG8gXG5waXhlbHMgdGhhdCBhcmUgZmFyIGZyb20gdGhlIHVzZXIt ZGVmaW5lZCBcbm9wdGltdW0gYW5kIHZpY2UgdmVyc2EuIHVzZSB0aGlzIG9wdGlvbiB0byBcbmZp bmUtdHVuZSBleHBvc3VyZSB3ZWlnaHRpbmcuIFxuZGVmYXVsdDogKDAuMiknKSwKKysgICAgaGFy ZF9taW4gPSAwLAorKyAgICBoYXJkX21heCA9IDEsCisrICAgIHZhbHVlID0gdGVtcCwKKysgICAg cmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYudmFsdWUgPSAw LjIKKysgICAgZW5kCisrfQorK0dVSS5FTkYuaGFyZF9tYXNrcyA9IGR0Lm5ld193aWRnZXQoJ2No ZWNrX2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ2hhcmQgbWFzaycpLCAKKysgICAgdmFsdWUg PSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9oYXJkX21hc2tzJywgJ2Jvb2wnKSwK KysgICAgdG9vbHRpcCA9IF8oJ2ZvcmNlIGhhcmQgYmxlbmQgbWFza3Mgb24gdGhlIGZpbmVzdCBz Y2FsZS4gdGhpcyBhdm9pZHMgXG5hdmVyYWdpbmcgb2YgZmluZSBkZXRhaWxzIChvbmx5KSwgYXQg dGhlIGV4cGVuc2UgXG5vZiBpbmNyZWFzaW5nIHRoZSBub2lzZS4gdGhpcyBpbXByb3ZlcyB0aGUg XG5zaGFycG5lc3Mgb2YgZm9jdXMgc3RhY2tzIGNvbnNpZGVyYWJseS5cbmRlZmF1bHQgKHNvZnQg bWFzayknKSwgICAKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnBy ZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9oYXJkX21hc2tzJywgJ2Jvb2wnLCBzZWxmLnZh bHVlKSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1 ZSA9IGZhbHNlIGVuZAorK30KKytHVUkuRU5GLnNhdmVfbWFza3MgPSBkdC5uZXdfd2lkZ2V0KCdj aGVja19idXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdzYXZlIG1hc2tzJyksIAorKyAgICB2YWx1 ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX3NhdmVfbWFza3MnLCAnYm9vbCcp LAorKyAgICB0b29sdGlwID0gXygnc2F2ZSB0aGUgZ2VuZXJhdGVkIHdlaWdodCBtYXNrcyB0byB5 b3VyIGhvbWUgZGlyZWN0b3J5LFxuZW5ibGVuZCBzYXZlcyBtYXNrcyBhcyA4IGJpdCBncmF5c2Nh bGUsIFxuaS5lLiBzaW5nbGUgY2hhbm5lbCBpbWFnZXMuIFxuZm9yIGFjY3VyYWN5IHdlIHJlY29t bWVuZCB0byBjaG9vc2UgYSBsb3NzbGVzcyBmb3JtYXQuJyksICAKKysgICAgY2xpY2tlZF9jYWxs YmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9z YXZlX21hc2tzJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNr ID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IGZhbHNlIGVuZAorK30KKyt0ZW1wID0gZHQu cHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfY29udHJhc3Rfd2luZG93X3NpemVfaW5kJywg J2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDgpIHRoZW4gdGVtcCA9IDMgZW5k IAorK0dVSS5FTkYuY29udHJhc3Rfd2luZG93X3NpemUgPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2Jv eCcpeworKyAgICBsYWJlbCA9IF8oJ2NvbnRyYXN0IHdpbmRvdyBzaXplJyksIAorKyAgICB0b29s dGlwID0gXygnc2V0IHRoZSB3aW5kb3cgc2l6ZSBmb3IgbG9jYWwgY29udHJhc3QgYW5hbHlzaXMu IFxudGhlIHdpbmRvdyB3aWxsIGJlIGEgc3F1YXJlIG9mIHNpemUgw5cgc2l6ZSBwaXhlbHMuIFxu aWYgZ2l2ZW4gYW4gZXZlbiBzaXplLCBFbmZ1c2Ugd2lsbCBcbmF1dG9tYXRpY2FsbHkgdXNlIHRo ZSBuZXh0IG9kZCBudW1iZXIuXG5mb3IgY29udHJhc3QgYW5hbHlzaXMgc2l6ZSB2YWx1ZXMgbGFy Z2VyIFxudGhhbiA1IHBpeGVscyBtaWdodCByZXN1bHQgaW4gYSBcbmJsdXJyeSBjb21wb3NpdGUg aW1hZ2UuIHZhbHVlcyBvZiAzIGFuZCBcbjUgcGl4ZWxzIGhhdmUgZ2l2ZW4gZ29vZCByZXN1bHRz IG9uIFxuZm9jdXMgc3RhY2tzLiBcbmRlZmF1bHQ6ICg1KSBwaXhlbHMnKSwKKysgICAgc2VsZWN0 ZWQgPSB0ZW1wLAorKyAgICAnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsJzEwJywKKysgICAg Y2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBkdC5wcmVmZXJlbmNl cy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3Rfd2luZG93X3NpemUnLCAnaW50ZWdlcicsIHNl bGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Nv bnRyYXN0X3dpbmRvd19zaXplX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAg ZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2Vs Zi5zZWxlY3RlZCA9IDMKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2 ZV9jb250cmFzdF93aW5kb3dfc2l6ZScsICdpbnRlZ2VyJywgc2VsZi52YWx1ZSkgCisrICAgICAg ICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3Rfd2luZG93X3NpemVf aW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQKKyt9IAorK3RlbXAgPSBk dC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF9lZGdlX3NjYWxlX2luZCcs ICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA2KSB0aGVuIHRlbXAgPSAxIGVu ZCAKKytHVUkuRU5GLmNvbnRyYXN0X2VkZ2Vfc2NhbGUgPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2Jv eCcpeworKyAgICBsYWJlbCA9IF8oJ2NvbnRyYXN0IGVkZ2Ugc2NhbGUnKSwgCisrICAgIHRvb2x0 aXAgPSBfKCdhIG5vbi16ZXJvIHZhbHVlIGZvciBFREdFLVNDQUxFIHN3aXRjaGVzIG9uIHRoZSBc bkxhcGxhY2lhbi1vZi1HYXVzc2lhbiAoTG9HKSBlZGdlIGRldGVjdGlvbiBhbGdvcml0aG0uXG4g ZWRhZ2Utc2NhbGUgaXMgdGhlIHJhZGl1cyBvZiB0aGUgR2F1c3NpYW4gdXNlZCBcbmluIHRoZSBz ZWFyY2ggZm9yIGVkZ2VzLiBhIHBvc2l0aXZlIExDRS1TQ0FMRSBcbnR1cm5zIG9uIGxvY2FsIGNv bnRyYXN0IGVuaGFuY2VtZW50IChMQ0UpIFxuYmVmb3JlIHRoZSBMb0cgZWRnZSBkZXRlY3Rpb24u IFxuRGVmYXVsdDogKDAuMCkgcGl4ZWxzLicpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAg ICcwLjAnLCcwLjEnLCcwLjInLCcwLjMnLCcwLjQnLCcwLjUnLAorKyAgICBjaGFuZ2VkX2NhbGxi YWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwg J2FjdGl2ZV9jb250cmFzdF9lZGdlX3NjYWxlJywgJ2Zsb2F0Jywgc2VsZi52YWx1ZSkgCisrICAg ICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3RfZWRnZV9zY2Fs ZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCwKKysgICAgcmVzZXRf Y2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisr ICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3RfZWRnZV9z Y2FsZScsICdmbG9hdCcsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3Jp dGUobW9kLCAnYWN0aXZlX2NvbnRyYXN0X2VkZ2Vfc2NhbGVfaW5kJywgJ2ludGVnZXInLCBzZWxm LnNlbGVjdGVkKQorKyAgICBlbmQKKyt9CisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9k LCAnYWN0aXZlX2NvbnRyYXN0X21pbl9jdXJ2YXR1cmVfaW5kJywgJ2ludGVnZXInKQorK2lmIG5v dCBJblJhbmdlKHRlbXAsIDEsIDExKSB0aGVuIHRlbXAgPSAxIGVuZCAKKytHVUkuRU5GLmNvbnRy YXN0X21pbl9jdXJ2YXR1cmUgPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2JveCcpeworKyAgICBsYWJl bCA9IF8oJ2NvbnRyYXN0IG1pbiBjdXJ2YXR1cmUgWyVdJyksCisrICAgIHRvb2x0aXAgPSBfKCdk ZWZpbmUgdGhlIG1pbmltdW0gY3VydmF0dXJlIGZvciB0aGUgTG9HIGVkZ2UgZGV0ZWN0aW9uLiBB cHBlbmQgYSDigJgl4oCZIHRvIHNwZWNpZnkgdGhlIG1pbmltdW0gY3VydmF0dXJlIHJlbGF0aXZl IHRvIG1heGltdW0gcGl4ZWwgdmFsdWUgaW4gdGhlIHNvdXJjZSBpbWFnZS4gRGVmYXVsdDogKDAu MCUpJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwgCisrICAgICcwLjAlJywnMC4xJScsJzAuMiUn LCcwLjMlJywnMC40JScsJzAuNSUnLCcwLjYlJywnMC43JScsJzAuOCUnLCcwLjklJywnMS4wJScs CisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJl ZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbnRyYXN0X21pbl9jdXJ2YXR1cmUnLCAnc3Ry aW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfY29udHJhc3RfbWluX2N1cnZhdHVyZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0 ZWQpCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysg ICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZSht b2QsICdhY3RpdmVfY29udHJhc3RfbWluX2N1cnZhdHVyZScsICdzdHJpbmcnLCBzZWxmLnZhbHVl KSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF9t aW5fY3VydmF0dXJlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kCisr fSAKKytsb2NhbCBsYWJlbF90YXJnZXRfb3B0aW9ucz0gZHQubmV3X3dpZGdldCgnc2VjdGlvbl9s YWJlbCcpeworKyAgICBsYWJlbCA9IF8oJ3RhcmdldCBmaWxlJykKKyt9CisrdGVtcCA9IGR0LnBy ZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2NvbXByZXNzaW9uX2xldmVsX3RpZl9pbmQnLCAn aW50ZWdlcicpCisraWYgbm90IEluUmFuZ2UodGVtcCwgMSwgNCkgdGhlbiB0ZW1wID0gMSBlbmQg CisrR1VJLlRhcmdldC5jb21wcmVzc2lvbl9sZXZlbF90aWYgPSBkdC5uZXdfd2lkZ2V0KCdjb21i b2JveCcpeworKyAgICBsYWJlbCA9IF8oJ3RpZmYgY29tcHJlc3Npb24nKSwgCisrICAgIHRvb2x0 aXAgPSBfKCdjb21wcmVzc2lvbiBtZXRob2QgZm9yIHRpZmYgZmlsZXMnKSwKKysgICAgc2VsZWN0 ZWQgPSB0ZW1wLAorKyAgICAnbm9uZScsJ2RlZmxhdGUnLCdsencnLCdwYWNrYml0cycsCisrICAg IGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5j ZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbXByZXNzaW9uX2xldmVsX3RpZicsICdzdHJpbmcnLCBz ZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9j b21wcmVzc2lvbl9sZXZlbF90aWZfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAg ICBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBz ZWxmLnNlbGVjdGVkID0gMQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0 aXZlX2NvbXByZXNzaW9uX2xldmVsX3RpZicsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAg ICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb21wcmVzc2lvbl9sZXZlbF90 aWZfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQgCisrfQorK3RlbXAg PSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9jb21wcmVzc2lvbl9sZXZlbF9qcGcn LCAnaW50ZWdlcicpCisraWYgbm90IEluUmFuZ2UodGVtcCwgMCwgMTAwKSB0aGVuIHRlbXAgPSAw IGVuZAorK0dVSS5UYXJnZXQuY29tcHJlc3Npb25fbGV2ZWxfanBnID0gZHQubmV3X3dpZGdldCgn c2xpZGVyJyl7CisrICAgIGxhYmVsID0gXygnanBlZyBjb21wcmVzc2lvbicpLAorKyAgICB0b29s dGlwID0gXygnanBlZyBjb21wcmVzc2lvbiBsZXZlbCcpLAorKyAgICBzb2Z0X21pbiA9IDAsCisr ICAgIHNvZnRfbWF4ID0gMTAwLAorKyAgICBoYXJkX21pbiA9IDAsCisrICAgIGhhcmRfbWF4ID0g MTAwLAorKyAgICBzdGVwID0gNSwKKysgICAgZGlnaXRzID0gMCwKKysgICAgdmFsdWUgPSB0ZW1w LAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi52 YWx1ZSA9IDAKKysgICAgZW5kCisrfQorK2xvY2FsIGJsYW5rID0gZHQubmV3X3dpZGdldCgnYm94 Jyl7fQorK3N0YWNrX2NvbXByZXNzaW9uID0gZHQubmV3X3dpZGdldCgnc3RhY2snKXsKKysgICAg R1VJLlRhcmdldC5jb21wcmVzc2lvbl9sZXZlbF90aWYsCisrICAgIEdVSS5UYXJnZXQuY29tcHJl c3Npb25fbGV2ZWxfanBnLAorKyAgICBibGFuaywKKysgICAgYWN0aXZlID0gMQorK30KKyt0ZW1w ID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZm9ybWF0X2luZCcsICdpbnRlZ2Vy JykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA2KSB0aGVuIHRlbXAgPSAxIGVuZCAKKytHVUku VGFyZ2V0LmZvcm1hdCA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0g XygnZmlsZSBmb3JtYXQnKSwgCisrICAgIHRvb2x0aXAgPSBfKCdmaWxlIGZvcm1hdCBvZiB0aGUg ZW5mdXNlZCBmaW5hbCBpbWFnZScpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICd0aWYn LCdqcGcnLCdwbmcnLCdwbm0nLCdwYm0nLCdwcG0nLAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0g ZnVuY3Rpb24oc2VsZikKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2 ZV9mb3JtYXQnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNl cy53cml0ZShtb2QsICdhY3RpdmVfZm9ybWF0X2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3Rl ZCkKKysgICAgICAgIGlmIHNlbGYudmFsdWUgPT0gJ3RpZicgdGhlbiBzdGFja19jb21wcmVzc2lv bi5hY3RpdmUgPSAxCisrICAgICAgICBlbHNlaWYgc2VsZi52YWx1ZSA9PSAnanBnJyB0aGVuIHN0 YWNrX2NvbXByZXNzaW9uLmFjdGl2ZSA9IDIKKysgICAgICAgIGVsc2Ugc3RhY2tfY29tcHJlc3Np b24uYWN0aXZlID0gMworKyAgICAgICAgZW5kCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJh Y2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAg ICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfZm9ybWF0JywgJ3N0cmluZycsIHNl bGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Zv cm1hdF9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9CisrdGVt cCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2RlcHRoX2luZCcsICdpbnRlZ2Vy JykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA1KSB0aGVuIHRlbXAgPSAzIGVuZCAKKytHVUku VGFyZ2V0LmRlcHRoID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwgPSBf KCdiaXQgZGVwdGgnKSwgCisrICAgIHRvb2x0aXAgPSBfKCdiaXQgZGVwdGggb2YgdGhlIGVuZnVz ZWQgZmlsZScpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICc4JywnMTYnLCczMicsJ3Iz MicsJ3I2NCcsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAg ICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2RlcHRoJywgJ3N0cmluZycsIHNl bGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Rl cHRoX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICByZXNl dF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDIK KysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9kZXB0aCcsICdzdHJp bmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Fj dGl2ZV9kZXB0aF9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9 CisrbG9jYWwgbGFiZWxfZGlyZWN0b3J5ID0gZHQubmV3X3dpZGdldCgnbGFiZWwnKXsKKysgICAg bGFiZWwgPSBfKCdkaXJlY3RvcnknKSwKKysgICAgZWxsaXBzaXplID0gJ3N0YXJ0JywKKysgICAg aGFsaWduID0gJ3N0YXJ0JworK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdh Y3RpdmVfb3V0cHV0X2RpcmVjdG9yeScsICdzdHJpbmcnKQorK2lmIHRlbXAgPT0gJycgb3IgdGVt cCA9PSBuaWwgdGhlbiB0ZW1wID0gZHQuY29sbGVjdGlvblsxXS5wYXRoIGVuZAorK0dVSS5UYXJn ZXQub3V0cHV0X2RpcmVjdG9yeSA9IGR0Lm5ld193aWRnZXQoJ2ZpbGVfY2hvb3Nlcl9idXR0b24n KXsKKysgICAgdGl0bGUgPSAnU2VsZWN0IGV4cG9ydCBwYXRoJywgCisrICAgIGlzX2RpcmVjdG9y eSA9IHRydWUsCisrICAgIHRvb2x0aXAgPSBfKCdzZWxlY3QgdGhlIHRhcmdldCBkaXJlY3Rvcnkg Zm9yIHRoZSBmdXNlZCBpbWFnZS4gXG50aGUgZmlsZW5hbWUgaXMgY3JlYXRlZCBhdXRvbWF0aWNh bGx5LicpLAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5j dGlvbihzZWxmKSBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfb3V0cHV0X2RpcmVj dG9yeScsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSBlbmQKKyt9CisrR1VJLlRhcmdldC5zb3VyY2Vf bG9jYXRpb24gPSBkdC5uZXdfd2lkZ2V0KCdjaGVja19idXR0b24nKXsKKysgICAgbGFiZWwgPSBf KCdzYXZlIHRvIHNvdXJjZSBpbWFnZSBsb2NhdGlvbicpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVm ZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9zb3VyY2VfbG9jYXRpb24nLCAnYm9vbCcpLAorKyAg ICB0b29sdGlwID0gXygnaWYgY2hlY2tlZCBpZ25vcmVzIHRoZSBsb2NhdGlvbiBhYm92ZSBhbmQg c2F2ZXMgb3V0cHV0IGltYWdlKHMpIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHRoZSBzb3VyY2Ug aW1hZ2VzLicpLCAgCisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBkdC5w cmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfc291cmNlX2xvY2F0aW9uJywgJ2Jvb2wnLCBz ZWxmLnZhbHVlKSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2Vs Zi52YWx1ZSA9IHRydWUgZW5kCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwg J2FjdGl2ZV9vbl9jb25mbGljdF9pbmQnLCAnaW50ZWdlcicpCisraWYgbm90IEluUmFuZ2UodGVt cCwgMSwgMikgdGhlbiB0ZW1wID0gMSBlbmQgCisrR1VJLlRhcmdldC5vbl9jb25mbGljdCA9IGR0 Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnb24gY29uZmxpY3QnKSwg CisrICAgIHNlbGVjdGVkID0gMSwgIAorKyAgICAnY3JlYXRlIHVuaXF1ZSBmaWxlbmFtZScsJ292 ZXJ3cml0ZScsICAgICAgICAgICAKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNl bGYpCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfb25fY29uZmxp Y3QnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsICdhY3RpdmVfb25fY29uZmxpY3RfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVk KQorKyAgICBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAg ICAgICBzZWxmLnNlbGVjdGVkID0gMQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9k LCAnYWN0aXZlX29uX2NvbmZsaWN0JywgJ3N0cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAg ZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX29uX2NvbmZsaWN0X2luZCcsICdpbnRl Z2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kIAorK30gIAorK0dVSS5UYXJnZXQuYXV0b19p bXBvcnQgPSBkdC5uZXdfd2lkZ2V0KCdjaGVja19idXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdh dXRvIGltcG9ydCcpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2Fj dGl2ZV9hdXRvX2ltcG9ydCcsICdib29sJyksCisrICAgIHRvb2x0aXAgPSBfKCdpbXBvcnQgdGhl IGltYWdlIGludG8gZGFya3RhYmxlIGRhdGFiYXNlIHdoZW4gZW5mdXNlIGNvbXBsZXRlcycpLCAg CisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJl ZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2F1dG9faW1wb3J0JywgJ2Jvb2wnLCBzZWxmLnZh bHVlKQorKyAgICAgICAgR1VJLlRhcmdldC5hcHBseV9zdHlsZS5zZW5zaXRpdmUgPSBzZWxmLnZh bHVlCisrICAgICAgICBHVUkuVGFyZ2V0LmNvcHlfdGFncy5zZW5zaXRpdmUgPSBzZWxmLnZhbHVl CisrICAgICAgICBHVUkuVGFyZ2V0LmFkZF90YWdzLnNlbnNpdGl2ZSA9IHNlbGYudmFsdWUKKysg ICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUg PSB0cnVlIGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVf YXBwbHlfc3R5bGVfaW5kJywgJ2ludGVnZXInKQorK0dVSS5UYXJnZXQuYXBwbHlfc3R5bGUgPSBk dC5uZXdfd2lkZ2V0KCdjb21ib2JveCcpeworKyAgICBsYWJlbCA9IF8oJ2FwcGx5IHN0eWxlIG9u IEltcG9ydCcpLAorKyAgICB0b29sdGlwID0gXygnYXBwbHkgc2VsZWN0ZWQgc3R5bGUgb24gYXV0 by1pbXBvcnQgdG8gbmV3bHkgY3JlYXRlZCBibGVuZGVkIGltYWdlJyksCisrICAgIHNlbGVjdGVk ID0gMSwKKysgICAgJ25vbmUnLAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2Vs ZikKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9hcHBseV9zdHls ZScsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRl KG1vZCwgJ2FjdGl2ZV9hcHBseV9zdHlsZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQp CisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAg ICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2Qs ICdhY3RpdmVfYXBwbHlfc3R5bGUnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBk dC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfYXBwbHlfc3R5bGVfaW5kJywgJ2ludGVn ZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQgCisrfQorK2ZvciBrPTEsIChzdHlsZXNfY291 bnQtMSkgZG8KKysgICAgR1VJLlRhcmdldC5hcHBseV9zdHlsZVtrKzFdID0gc3R5bGVzW2tdLm5h bWUKKytlbmQKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCBzdHlsZXNfY291bnQpIHRoZW4gdGVt cCA9IDEgZW5kCisrR1VJLlRhcmdldC5hcHBseV9zdHlsZS5zZWxlY3RlZCA9IHRlbXAKKytHVUku VGFyZ2V0LmNvcHlfdGFncyA9IGR0Lm5ld193aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBs YWJlbCA9IF8oJ2NvcHkgdGFncycpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVmZXJlbmNlcy5yZWFk KG1vZCwgJ2FjdGl2ZV9jb3B5X3RhZ3MnLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygnY29w eSB0YWdzIGZyb20gZmlyc3QgaW1hZ2UuJyksIAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVu Y3Rpb24oc2VsZikgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvcHlfdGFncycs ICdib29sJywgc2VsZi52YWx1ZSkgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9u KHNlbGYpIHNlbGYudmFsdWUgPSB0cnVlIGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMu cmVhZChtb2QsICdhY3RpdmVfYWRkX3RhZ3MnLCAnc3RyaW5nJykKKytpZiB0ZW1wID09ICcnIHRo ZW4gdGVtcCA9IG5pbCBlbmQgCisrR1VJLlRhcmdldC5hZGRfdGFncyA9IGR0Lm5ld193aWRnZXQo J2VudHJ5Jyl7CisrICAgIHRvb2x0aXAgPSBfKCdhZGRpdGlvbmFsIHRhZ3MgdG8gYmUgYWRkZWQg b24gaW1wb3J0LCBzZXBlcmF0ZSB3aXRoIGNvbW1hcywgYWxsIHNwYWNlcyB3aWxsIGJlIHJlbW92 ZWQnKSwKKysgICAgdGV4dCA9IHRlbXAsCisrICAgIHBsYWNlaG9sZGVyID0gXygnZW50ZXIgdGFn cywgc2VwYXJhdGVkIGJ5IGNvbW1hcycpLAorKyAgICBlZGl0YWJsZSA9IHRydWUKKyt9CisrdGVt cCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2N1cnJlbnRfcHJlc2V0X2luZCcs ICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA2KSB0aGVuIHRlbXAgPSAxIGVu ZAorK0dVSS5QcmVzZXRzLmN1cnJlbnRfcHJlc2V0ID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gn KXsKKysgICAgbGFiZWwgPSBfKCdhY3RpdmUgcHJlc2V0JyksCisrICAgIHRvb2x0aXAgPSBfKCdw cmVzZXQgdG8gYmUgbG9hZGVkIGZyb20gb3Igc2F2ZWQgdG8nKSwKKysgICAgdmFsdWUgPSB0ZW1w LAorKyAgICAnZHJpXzEnLCAnZHJpXzInLCAnZHJpXzMnLCAnZGZmXzEnLCAnZGZmXzInLCAnZGZm XzMnLAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAgIGR0 LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jdXJyZW50X3ByZXNldCcsICdzdHJpbmcn LCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2 ZV9jdXJyZW50X3ByZXNldF9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVu ZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYu c2VsZWN0ZWQgPSAxCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVf Y3VycmVudF9wcmVzZXQnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVm ZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY3VycmVudF9wcmVzZXRfaW5kJywgJ2ludGVnZXIn LCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQgCisrfQorK0dVSS5QcmVzZXRzLmxvYWQgPSBkdC5u ZXdfd2lkZ2V0KCdidXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdsb2FkIGZ1c2lvbiBwcmVzZXQn KSwKKysgICAgdG9vbHRpcCA9IF8oJ2xvYWQgY3VycmVudCBmdXNpb24gcGFyYW1ldGVycyBmcm9t IHNlbGVjdGVkIHByZXNldCcpLAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oKSBM b2FkRnJvbVByZWZlcmVuY2UoR1VJLlByZXNldHMuY3VycmVudF9wcmVzZXQudmFsdWUpIGVuZAor K30KKytHVUkuUHJlc2V0cy5zYXZlID0gZHQubmV3X3dpZGdldCgnYnV0dG9uJyl7CisrICAgIGxh YmVsID0gXygnc2F2ZSB0byBmdXNpb24gcHJlc2V0JyksCisrICAgIHRvb2x0aXAgPSBfKCdzYXZl IGN1cnJlbnQgZnVzaW9uIHBhcmFtZXRlcnMgdG8gc2VsZWN0ZWQgcHJlc2V0JyksCisrICAgIGNs aWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbigpIFNhdmVUb1ByZWZlcmVuY2UoR1VJLlByZXNldHMu Y3VycmVudF9wcmVzZXQudmFsdWUpIGVuZAorK30KKytHVUkuUHJlc2V0cy52YXJpYW50cyA9IGR0 Lm5ld193aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ2NyZWF0ZSBpbWFn ZSB2YXJpYW50cyBmcm9tIHByZXNldHMnKSwgCisrICAgIHZhbHVlID0gZHQucHJlZmVyZW5jZXMu cmVhZChtb2QsICdhY3RpdmVfdmFyaWFudHMnLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygn Y3JlYXRlIG11bHRpcGxlIGltYWdlIHZhcmlhbnRzIGJhc2VkIG9uIHRoZSB0aHJlZSBkaWZmZXJl bnQgcHJlc2V0cyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUnKSwgICAKKysgICAgY2xpY2tlZF9jYWxs YmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9k LCAnYWN0aXZlX3ZhcmlhbnRzJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKQorKyAgICAgICAgaWYgc2Vs Zi52YWx1ZSB0aGVuCisrICAgICAgICAgICAgR1VJLlRhcmdldC5vbl9jb25mbGljdC5zZWxlY3Rl ZCA9IDEKKysgICAgICAgICAgICBHVUkuVGFyZ2V0Lm9uX2NvbmZsaWN0LnNlbnNpdGl2ZSA9IGZh bHNlCisrICAgICAgICAgICAgR1VJLlByZXNldHMudmFyaWFudHNfdHlwZS5zZW5zaXRpdmUgPSB0 cnVlCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgR1VJLlRhcmdldC5vbl9jb25mbGljdC5z ZW5zaXRpdmUgPSB0cnVlCisrICAgICAgICAgICAgR1VJLlByZXNldHMudmFyaWFudHNfdHlwZS5z ZW5zaXRpdmUgPSBmYWxzZQorKyAgICAgICAgZW5kCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2Fs bGJhY2sgPSBmdW5jdGlvbihzZWxmKSBzZWxmLnZhbHVlID0gZmFsc2UgZW5kCisrfQorK3RlbXAg PSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV92YXJpYW50c190eXBlX2luZCcsICdp bnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCAyKSB0aGVuIHRlbXAgPSAxIGVuZAor K0dVSS5QcmVzZXRzLnZhcmlhbnRzX3R5cGUgPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2JveCcpewor KyAgICBsYWJlbCA9IF8oJ2NyZWF0ZSB2YXJpYW50cyB0eXBlJyksCisrICAgIHRvb2x0aXAgPSBf KCdwcmVzZXQgdHlwZSB0byBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgaW1hZ2UgdmFyaWFudHMnKSwK KysgICAgc2VsZWN0ZWQgPSB0ZW1wLAorKyAgICAnZHJpJywgJ2RmZicsCisrICAgIGNoYW5nZWRf Y2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUo bW9kLCAnYWN0aXZlX3ZhcmlhbnRzX3R5cGUnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisrICAg ICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfdmFyaWFudHNfdHlwZV9pbmQn LCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJh Y2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAg ICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfdmFyaWFudHNfdHlwZScsICdzdHJp bmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Fj dGl2ZV92YXJpYW50c190eXBlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAg ZW5kIAorK30KKytHVUkuUHJlc2V0cy52YXJpYW50c190eXBlLnNlbnNpdGl2ZSA9IEdVSS5QcmVz ZXRzLnZhcmlhbnRzLnZhbHVlCisrdGVtcCA9IGRmLmdldF9leGVjdXRhYmxlX3BhdGhfcHJlZmVy ZW5jZShBSVMubmFtZSkKKytHVUkuZXhlcy5hbGlnbl9pbWFnZV9zdGFjayA9IGR0Lm5ld193aWRn ZXQoJ2ZpbGVfY2hvb3Nlcl9idXR0b24nKXsKKysgICAgdGl0bGUgPSAnYWxpZ25faW1hZ2Vfc3Rh Y2sgJyAuLiBfKCdiaW5hcnkgcGF0aCcpLAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAgIHRvb2x0 aXAgPSB0ZW1wLAorKyAgICBpc19kaXJlY3RvcnkgPSBmYWxzZSwKKysgICAgY2hhbmdlZF9jYWxs YmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudG9vbHRpcCA9IHNlbGYudmFsdWUgZW5kCisrfQor K3RlbXAgPSBkZi5nZXRfZXhlY3V0YWJsZV9wYXRoX3ByZWZlcmVuY2UoRU5GLm5hbWUpCisrR1VJ LmV4ZXMuZW5mdXNlID0gZHQubmV3X3dpZGdldCgnZmlsZV9jaG9vc2VyX2J1dHRvbicpeworKyAg ICB0aXRsZSA9ICdlbmZ1c2UgJyAuLiBfKCdiaW5hcnkgcGF0aCcpLAorKyAgICB2YWx1ZSA9IHRl bXAsCisrICAgIHRvb2x0aXAgPSB0ZW1wLAorKyAgICBpc19kaXJlY3RvcnkgPSBmYWxzZSwKKysg ICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudG9vbHRpcCA9IHNlbGYu dmFsdWUgZW5kCisrfQorK3RlbXAgPSBkZi5nZXRfZXhlY3V0YWJsZV9wYXRoX3ByZWZlcmVuY2Uo RVhGLm5hbWUpCisrR1VJLmV4ZXMuZXhpZnRvb2wgPSBkdC5uZXdfd2lkZ2V0KCdmaWxlX2Nob29z ZXJfYnV0dG9uJyl7CisrICAgIHRpdGxlID0gJ2V4aWZ0b29sICcgLi4gXygnYmluYXJ5IHBhdGgn KSwKKysgICAgdmFsdWUgPSB0ZW1wLAorKyAgICB0b29sdGlwID0gdGVtcCwKKysgICAgaXNfZGly ZWN0b3J5ID0gZmFsc2UsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBz ZWxmLnRvb2x0aXAgPSBzZWxmLnZhbHVlIGVuZAorK30gCisrR1VJLmV4ZXMudXBkYXRlID0gZHQu bmV3X3dpZGdldCgnYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygndXBkYXRlJyksCisrICAgIHRv b2x0aXAgPSBfKCd1cGRhdGUgdGhlIGJpbmFyeSBwYXRocyB3aXRoIGN1cnJlbnQgdmFsdWVzJyks CisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbigpIEV4ZVVwZGF0ZSh7QUlTLEVORixF WEZ9KSBlbmQKKyt9CisrdGVtcCA9IEdVSS5UYXJnZXQuZm9ybWF0LnZhbHVlCisraWYgdGVtcCA9 PSAndGlmJyB0aGVuIHRlbXAgPSAxCisrZWxzZWlmIHRlbXAgPT0gJ2pwZycgdGhlbiB0ZW1wID0g MgorK2Vsc2UgdGVtcCA9IDMKKytlbmQKKytzdGFja19jb21wcmVzc2lvbi5hY3RpdmUgPSB0ZW1w CisrZm9yIF8sd2lkZ2V0IGluIHBhaXJzKEdVSS5BSVMpIGRvCisrICAgIHdpZGdldC5zZW5zaXRp dmUgPSBHVUkuYWxpZ24udmFsdWUKKytlbmQKKytHVUkuVGFyZ2V0LmFwcGx5X3N0eWxlLnNlbnNp dGl2ZSA9IEdVSS5UYXJnZXQuYXV0b19pbXBvcnQudmFsdWUKKytHVUkuVGFyZ2V0LmNvcHlfdGFn cy5zZW5zaXRpdmUgPSBHVUkuVGFyZ2V0LmF1dG9faW1wb3J0LnZhbHVlCisrR1VJLlRhcmdldC5h ZGRfdGFncy5zZW5zaXRpdmUgPSBHVUkuVGFyZ2V0LmF1dG9faW1wb3J0LnZhbHVlCisrCisrbG9j YWwgYm94X0FJUyA9IGR0Lm5ld193aWRnZXQoJ2JveCcpeworKyAgICBvcmllbnRhdGlvbiA9ICd2 ZXJ0aWNhbCcsCisrICAgIGxhYmVsX0FJU19vcHRpb25zLAorKyAgICBHVUkuYWxpZ24sCisrICAg IEdVSS5BSVMucmFkaWFsX2Rpc3RvcnRpb24sCisrICAgIEdVSS5BSVMub3B0aW1pemVfZmllbGQs CisrICAgIEdVSS5BSVMub3B0aW1pemVfaW1hZ2VfY2VudGVyLAorKyAgICBHVUkuQUlTLmF1dG9f Y3JvcCwKKysgICAgR1VJLkFJUy5kaXN0b3J0aW9uLAorKyAgICBHVUkuQUlTLmdwdSwKKysgICAg R1VJLkFJUy5ncmlkX3NpemUsCisrICAgIEdVSS5BSVMuY29udHJvbF9wb2ludHMsCisrICAgIEdV SS5BSVMuY29udHJvbF9wb2ludHNfcmVtb3ZlLAorKyAgICBHVUkuQUlTLmNvcnJlbGF0aW9uCisr fQorK2xvY2FsIGJveF9FTkYgPSBkdC5uZXdfd2lkZ2V0KCdib3gnKXsKKysgICAgb3JpZW50YXRp b24gPSAndmVydGljYWwnLAorKyAgICBsYWJlbF9FTkZfb3B0aW9ucywKKysgICAgR1VJLkVORi5l eHBvc3VyZV93ZWlnaHQsCisrICAgIEdVSS5FTkYuc2F0dXJhdGlvbl93ZWlnaHQsCisrICAgIEdV SS5FTkYuY29udHJhc3Rfd2VpZ2h0LAorKyAgICBHVUkuRU5GLmV4cG9zdXJlX29wdGltdW0sCisr ICAgIEdVSS5FTkYuZXhwb3N1cmVfd2lkdGgsCisrICAgIEdVSS5FTkYuaGFyZF9tYXNrcywKKysg ICAgR1VJLkVORi5zYXZlX21hc2tzLAorKyAgICBHVUkuRU5GLmNvbnRyYXN0X3dpbmRvd19zaXpl LAorKyAgICBHVUkuRU5GLmNvbnRyYXN0X2VkZ2Vfc2NhbGUsCisrICAgIEdVSS5FTkYuY29udHJh c3RfbWluX2N1cnZhdHVyZSwKKysgICAgR1VJLlByZXNldHMuY3VycmVudF9wcmVzZXQsCisrICAg IEdVSS5QcmVzZXRzLmxvYWQsCisrICAgIEdVSS5QcmVzZXRzLnNhdmUKKyt9CisrbG9jYWwgYm94 X1RhcmdldCA9IGR0Lm5ld193aWRnZXQoJ2JveCcpeworKyAgICBvcmllbnRhdGlvbiA9ICd2ZXJ0 aWNhbCcsCisrICAgIGxhYmVsX3RhcmdldF9vcHRpb25zLAorKyAgICBHVUkuVGFyZ2V0LmZvcm1h dCwKKysgICAgR1VJLlRhcmdldC5kZXB0aCwKKysgICAgc3RhY2tfY29tcHJlc3Npb24sCisrICAg IGxhYmVsX2RpcmVjdG9yeSwKKysgICAgR1VJLlRhcmdldC5vdXRwdXRfZGlyZWN0b3J5LAorKyAg ICBHVUkuVGFyZ2V0LnNvdXJjZV9sb2NhdGlvbiwKKysgICAgR1VJLlRhcmdldC5vbl9jb25mbGlj dCwKKysgICAgR1VJLlByZXNldHMudmFyaWFudHMsCisrICAgIEdVSS5QcmVzZXRzLnZhcmlhbnRz X3R5cGUsCisrICAgIEdVSS5UYXJnZXQuYXV0b19pbXBvcnQsCisrICAgIEdVSS5UYXJnZXQuYXBw bHlfc3R5bGUsCisrICAgIEdVSS5UYXJnZXQuY29weV90YWdzLAorKyAgICBHVUkuVGFyZ2V0LmFk ZF90YWdzCisrfQorK2xvY2FsIGJveF9leGVzID0gZHQubmV3X3dpZGdldCgnYm94Jyl7CisrICAg IG9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJywKKysgICAgR1VJLmV4ZXMuYWxpZ25faW1hZ2Vfc3Rh Y2ssCisrICAgIEdVSS5leGVzLmVuZnVzZSwKKysgICAgR1VJLmV4ZXMuZXhpZnRvb2wsCisrICAg IEdVSS5leGVzLnVwZGF0ZQorK30KKytHVUkub3B0aW9uc19jb250YWluID0gZHQubmV3X3dpZGdl dCgnc3RhY2snKXsKKysgICAgYm94X0FJUywKKysgICAgYm94X0VORiwKKysgICAgYm94X1Rhcmdl dCwKKysgICAgYm94X2V4ZXMsCisrICAgIGFjdGl2ZSA9IDIKKyt9CisrR1VJLnNob3dfb3B0aW9u cyA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnc2hvdyBvcHRp b25zJyksCisrICAgIHRvb2x0aXAgPSBfKCdzaG93IG9wdGlvbnMgZm9yIHNwZWNpZmllZCBhc3Bl Y3Qgb2Ygb3V0cHV0JyksCisrICAgIHNlbGVjdGVkID0gMiwKKysgICAgJ2FsaWduIGltYWdlIHN0 YWNrJywgJ2VuZnVzZS9lbmJsZW5kJywgJ3RhcmdldCBmaWxlJywKKysgICAgY2hhbmdlZF9jYWxs YmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBHVUkub3B0aW9uc19jb250YWluLmFjdGl2 ZSA9IHNlbGYuc2VsZWN0ZWQKKysgICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0 aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDEKKysgICAgICAgIGR0LnByZWZl cmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jdXJyZW50X3ByZXNldCcsICdzdHJpbmcnLCBzZWxm LnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jdXJy ZW50X3ByZXNldF9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9 CisrbG9jYWwgc3RvcmFnZV93aWRnZXQgPSBkdC5uZXdfd2lkZ2V0KCdib3gnKSB7CisrICAgIG9y aWVudGF0aW9uID0gJ3ZlcnRpY2FsJywKKysgICAgR1VJLnNob3dfb3B0aW9ucywKKysgICAgR1VJ Lm9wdGlvbnNfY29udGFpbgorK30gCisrCisrLS0gUmVnaXN0ZXIgbmV3IHN0b3JhZ2UgLS0KKytk dC5yZWdpc3Rlcl9zdG9yYWdlKAorKyAgICAnbW9kdWxlX2VuZnVzZUFkdmFuY2VkJywgLS1Nb2R1 bGUgbmFtZQorKyAgICBfKCdEUkkgb3IgREZGIGltYWdlJyksIC0tTmFtZQorKyAgICBzaG93X3N0 YXR1cywgLS1zdG9yZTogY2FsbGVkIG9uY2UgcGVyIGV4cG9ydGVkIGltYWdlCisrICAgIG1haW4s IC0tZmluYWxpemU6IGNhbGxlZCBvbmNlIHdoZW4gYWxsIGltYWdlcyBoYXZlIGZpbmlzaGVkIGV4 cG9ydGluZworKyAgICBzdXBwb3J0X2Zvcm1hdCwgLS1zdXBwb3J0ZWQKKysgICAgaW5pdGlhbCwg LS1pbml0aWFsaXplCisrICAgIHN0b3JhZ2Vfd2lkZ2V0CisrKQorKworK2lmIGR0LnByZWZlcmVu Y2VzLnJlYWQobW9kLCAnYmluX2V4aXN0cycsICdib29sJykgdGhlbiAKKysgICAgR1VJLm9wdGlv bnNfY29udGFpbi5hY3RpdmUgPSAyCisrICAgIEdVSS5zaG93X29wdGlvbnMuc2Vuc2l0aXZlID0g dHJ1ZQorK2Vsc2UKKysgICAgR1VJLm9wdGlvbnNfY29udGFpbi5hY3RpdmUgPSA0CisrICAgIEdV SS5zaG93X29wdGlvbnMuc2Vuc2l0aXZlID0gZmFsc2UKKytlbmQKKysKKytzY3JpcHRfZGF0YS5k ZXN0cm95ID0gZGVzdHJveQorKworK3JldHVybiBzY3JpcHRfZGF0YQorZGlmZiAtdXJOciBkYXJr dGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9mYWNlX3Jl Y29nbml0aW9uLmx1YSBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2Nv bnRyaWIvZmFjZV9yZWNvZ25pdGlvbi5sdWEKKy0tLSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMv ZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9mYWNlX3JlY29nbml0aW9uLmx1YQkyMDI2LTA2 LTEyIDA1OjA2OjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0 ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9mYWNlX3JlY29nbml0aW9uLmx1YQkyMDI2LTA5LTAx IDA5OjQyOjA0LjM3MTU1MjY4MSArMDIwMAorQEAgLTMxMSwyNSArMzExLDI2IEBACisgICAgICAg ICAgICAgaWYgaWdub3JlQnlUYWcgKGltZywgaWdub3JlVGFncykgdGhlbgorICAgICAgICAgICAg ICAgZHQucHJpbnRfbG9nKCJGYWNlIHJlY29nbml0aW9uOiBJZ25vcmluZyBpbWFnZSB3aXRoIElE ICIgLi4gaW1nLmlkKQorICAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgIGxvY2FsIHRh Z19uYW1lID0gdAorICAgICAgICAgICAgICAgLS0gQ2hlY2sgb2YgdW5yZWNvZ25pemVkIHVua25v d25fcGVyc29uCistICAgICAgICAgICAgICBpZiB0ID09ICJ1bmtub3duX3BlcnNvbiIgdGhlbgor LSAgICAgICAgICAgICAgICB0ID0gdW5rbm93blRhZworKyAgICAgICAgICAgICAgaWYgdGFnX25h bWUgPT0gInVua25vd25fcGVyc29uIiB0aGVuCisrICAgICAgICAgICAgICAgIHRhZ19uYW1lID0g dW5rbm93blRhZworICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAtLSBDaGVjayBv ZiB1bnJlY29nbml6ZWQgbm9fcGVyc29uc19mb3VuZAorLSAgICAgICAgICAgICAgaWYgdCA9PSAi bm9fcGVyc29uc19mb3VuZCIgdGhlbgorLSAgICAgICAgICAgICAgICB0ID0gbm9ucGVyc29uc2Zv dW5kVGFnCisrICAgICAgICAgICAgICBpZiB0YWdfbmFtZSA9PSAibm9fcGVyc29uc19mb3VuZCIg dGhlbgorKyAgICAgICAgICAgICAgICB0YWdfbmFtZSA9IG5vbnBlcnNvbnNmb3VuZFRhZworICAg ICAgICAgICAgICAgZW5kCistICAgICAgICAgICAgICBpZiB0IH49ICIiIGFuZCB0IH49IG5pbCB0 aGVuCistICAgICAgICAgICAgICAgIGlmIGNhdGVnb3J5VGFnU3RyaW5nIH49ICIiIGFuZCB0IH49 IG5vbnBlcnNvbnNmb3VuZFRhZyB0aGVuCistICAgICAgICAgICAgICAgICAgdCA9IGNhdGVnb3J5 VGFnU3RyaW5nIC4uICJ8IiAuLiB0CisrICAgICAgICAgICAgICBpZiB0YWdfbmFtZSB+PSAiIiBh bmQgdGFnX25hbWUgfj0gbmlsIHRoZW4KKysgICAgICAgICAgICAgICAgaWYgY2F0ZWdvcnlUYWdT dHJpbmcgfj0gIiIgYW5kIHRhZ19uYW1lIH49IG5vbnBlcnNvbnNmb3VuZFRhZyB0aGVuCisrICAg ICAgICAgICAgICAgICAgdGFnX25hbWUgPSBjYXRlZ29yeVRhZ1N0cmluZyAuLiAifCIgLi4gdGFn X25hbWUKKyAgICAgICAgICAgICAgICAgZW5kICAgICAgICAgICAgICAgICAgCistICAgICAgICAg ICAgICAgIGR0LnByaW50X2xvZyAoIkltZ0lkOiIgLi4gaW1nLmlkIC4uICIgVGFnOiIuLiB0KQor KyAgICAgICAgICAgICAgICBkdC5wcmludF9sb2cgKCJJbWdJZDoiIC4uIGltZy5pZCAuLiAiIFRh ZzoiLi4gdGFnX25hbWUpCisgICAgICAgICAgICAgICAgIC0tIENyZWF0ZSB0YWcgaWYgaXQgZG9l cyBub3QgZXhpc3QKKy0gICAgICAgICAgICAgICAgaWYgdGFnc19saXN0W3RdID09IG5pbCB0aGVu CistICAgICAgICAgICAgICAgICAgdGFnID0gZHQudGFncy5jcmVhdGUgKHQpCistICAgICAgICAg ICAgICAgICAgdGFnc19saXN0W3RdID0gdGFnCisrICAgICAgICAgICAgICAgIGlmIHRhZ3NfbGlz dFt0YWdfbmFtZV0gPT0gbmlsIHRoZW4KKysgICAgICAgICAgICAgICAgICB0YWcgPSBkdC50YWdz LmNyZWF0ZSAodGFnX25hbWUpCisrICAgICAgICAgICAgICAgICAgdGFnc19saXN0W3RhZ19uYW1l XSA9IHRhZworICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgdGFnID0g dGFnc19saXN0W3RdCisrICAgICAgICAgICAgICAgICAgdGFnID0gdGFnc19saXN0W3RhZ19uYW1l XQorICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgaW1nOmF0dGFjaF90YWcg KHRhZykKKyAgICAgICAgICAgICAgIGVuZAorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAtb3Jp Zy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9naW1wLmx1YSBkYXJrdGFibGUtNS42 LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZ2ltcC5sdWEKKy0tLSBkYXJrdGFi bGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9naW1wLmx1YQky MDI2LTA2LTEyIDA1OjA2OjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01LjYuMC9z cmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9naW1wLmx1YQkyMDI2LTA5LTAxIDA5OjQy OjA0LjM3MTkyNDM1OSArMDIwMAorQEAgLTE0Miw4ICsxNDIsOCBAQAorICAgaW1nX2xpc3QgPSAi IgorIAorICAgZm9yIF8sZXhwX2ltZyBpbiBwYWlycyhpbWFnZV90YWJsZSkgZG8KKy0gICAgZXhw X2ltZyA9IGRmLnNhbml0aXplX2ZpbGVuYW1lKGV4cF9pbWcpCistICAgIGltZ19saXN0ID0gaW1n X2xpc3QgLi5leHBfaW1nLi4gIiAiCisrICAgIGxvY2FsIHNhbml0aXplZCA9IGRmLnNhbml0aXpl X2ZpbGVuYW1lKGV4cF9pbWcpCisrICAgIGltZ19saXN0ID0gaW1nX2xpc3QgLi5zYW5pdGl6ZWQu LiAiICIKKyAgIGVuZAorIAorICAgZHQucHJpbnQoXygibGF1bmNoaW5nIEdJTVAuLi4iKSkKK2Rp ZmYgLXVyTnIgZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2Nv bnRyaWIvSERSTWVyZ2UubHVhIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlw dHMvY29udHJpYi9IRFJNZXJnZS5sdWEKKy0tLSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0 ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9IRFJNZXJnZS5sdWEJMjAyNi0wNi0xMiAwNTowNjoz OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1z Y3JpcHRzL2NvbnRyaWIvSERSTWVyZ2UubHVhCTIwMjYtMDktMDEgMDk6NDI6MDQuMzY5Mjg5MDI4 ICswMjAwCitAQCAtMjc3LDkgKzI3Nyw5IEBACisgICAgIGxvY2FsIHNldF90YWcgPSBHVUkuVGFy Z2V0LmFkZF90YWdzLnRleHQKKyAgICAgaWYgc2V0X3RhZyB+PSBuaWwgdGhlbiAtLSBhZGQgYWRk aXRpb25hbCB1c2VyLXNwZWNpZmllZCB0YWdzCisgICAgICAgZm9yIHRhZyBpbiBzdHJpbmcuZ21h dGNoKHNldF90YWcsICdbXixdKycpIGRvCistICAgICAgICB0YWcgPSBDbGVhblNwYWNlcyh0YWcp CistICAgICAgICB0YWcgPSBkdC50YWdzLmNyZWF0ZSh0YWcpCistICAgICAgICBkdC50YWdzLmF0 dGFjaCh0YWcsIGltcG9ydGVkKSAKKysgICAgICAgIGxvY2FsIGNsZWFuZWRfdGFnID0gQ2xlYW5T cGFjZXModGFnKQorKyAgICAgICAgY2xlYW5lZF90YWcgPSBkdC50YWdzLmNyZWF0ZShjbGVhbmVk X3RhZykKKysgICAgICAgIGR0LnRhZ3MuYXR0YWNoKGNsZWFuZWRfdGFnLCBpbXBvcnRlZCkgCisg ICAgICAgZW5kCisgICAgIGVuZAorICAgICBkdC5wcmludChfKCdIRFJNZXJnZSBjb21wbGV0ZWQg c3VjY2Vzc2Z1bGx5JykpCitkaWZmIC11ck5yIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRl cm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2ltYWdlX3N0YWNrLmx1YSBkYXJrdGFibGUtNS42LjAv c3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvaW1hZ2Vfc3RhY2subHVhCistLS0gZGFy a3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvaW1hZ2Vf c3RhY2subHVhCTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCisrKysgZGFya3Rh YmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2ltYWdlX3N0YWNrLmx1 YQkyMDI2LTA5LTAxIDA5OjQyOjA0LjM3MjI0NjU4NSArMDIwMAorQEAgLTMyMyw4ICszMjMsOCBA QAorICAgZHQucHJpbnRfbG9nKCJpbWFnZSBsaXN0IGlzICIgLi4gaW1nX2xpc3QpCisgICBmaWxl cyA9IGR1LnNwbGl0KGltZ19saXN0LCAiICIpCisgICBmb3IgXyxmIGluIGlwYWlycyhmaWxlcykg ZG8KKy0gICAgZiA9IHN0cmluZy5nc3ViKGYsICdbXCdcIl0nLCAiIikKKy0gICAgb3MucmVtb3Zl KGYpCisrICAgIGxvY2FsIGNsZWFuZWQgPSBzdHJpbmcuZ3N1YihmLCAnW1wnXCJdJywgIiIpCisr ICAgIG9zLnJlbW92ZShjbGVhbmVkKQorICAgZW5kCisgZW5kCisgCitkaWZmIC11ck5yIGRhcmt0 YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9nZXRfbGliZG9j Lmx1YSBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL2dldF9s aWJkb2MubHVhCistLS0gZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3Jp cHRzL3Rvb2xzL2dldF9saWJkb2MubHVhCTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICsw MjAwCisrKysgZGFya3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9n ZXRfbGliZG9jLmx1YQkyMDI2LTA5LTAxIDA5OjQyOjA0LjM3MjY5NjIzMCArMDIwMAorQEAgLTQw LDggKzQwLDggQEAKKyAtLSBsb29wIHRocm91Z2ggdGhlIGxpYnJhcmllcworIAorIGZvciBsaW5l IGluIG91dHB1dDpsaW5lcygpIGRvCistICBsaW5lID0gc3RyaW5nLmdzdWIobGluZSwgIi8iLCAi LiIpCistICBsb2NhbCBsaWJfbmFtZSA9IGxpbmU6c3ViKDMsLTUpCisrICBsb2NhbCBjbGVhbmVk X2xpbmUgPSBzdHJpbmcuZ3N1YihsaW5lLCAiLyIsICIuIikKKysgIGxvY2FsIGxpYl9uYW1lID0g Y2xlYW5lZF9saW5lOnN1YigzLC01KQorICAgaWYgbGliX25hbWU6bGVuKCkgPiAyIHRoZW4KKyAg ICAgbGliX25hbWUgPSAibGliLyIgLi4gbGliX25hbWUKKyAgICAgbG9jYWwgbGliID0gcmVxdWly ZShsaWJfbmFtZSkKK2RpZmYgLXVyTnIgZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFs L2x1YS1zY3JpcHRzL3Rvb2xzL2dldF9saWJfbWFucGFnZXMubHVhIGRhcmt0YWJsZS01LjYuMC9z cmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvZ2V0X2xpYl9tYW5wYWdlcy5sdWEKKy0tLSBk YXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvZ2V0X2xp Yl9tYW5wYWdlcy5sdWEJMjAyNi0wNi0xMiAwNTowNjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBk YXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL2dldF9saWJfbWFu cGFnZXMubHVhCTIwMjYtMDktMDEgMDk6NDI6MDQuMzcyNTMwNDM5ICswMjAwCitAQCAtNjMsOCAr NjMsOCBAQAorIC0tIGxvb3AgdGhyb3VnaCB0aGUgbGlicmFyaWVzCisgCisgZm9yIGxpbmUgaW4g b3V0cHV0OmxpbmVzKCkgZG8KKy0gIGxpbmUgPSBzdHJpbmcuZ3N1YihsaW5lLCAiLyIsICIuIikK Ky0gIGxvY2FsIGxpYl9uYW1lID0gbGluZTpzdWIoMywtNSkKKysgIGxvY2FsIGNsZWFuZWRfbGlu ZSA9IHN0cmluZy5nc3ViKGxpbmUsICIvIiwgIi4iKQorKyAgbG9jYWwgbGliX25hbWUgPSBjbGVh bmVkX2xpbmU6c3ViKDMsLTUpCisgICBpZiBsaWJfbmFtZTpsZW4oKSA+IDIgdGhlbgorICAgICBs aWJfbmFtZSA9ICJsaWIvIiAuLiBsaWJfbmFtZQorICAgICBsb2NhbCBsaWIgPSByZXF1aXJlKGxp Yl9uYW1lKQorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVh LXNjcmlwdHMvdG9vbHMvc2NyaXB0X21hbmFnZXIubHVhIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0 ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0X21hbmFnZXIubHVhCistLS0gZGFya3RhYmxl LTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL3NjcmlwdF9tYW5hZ2Vy Lmx1YQkyMDI2LTA2LTEyIDA1OjA2OjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01 LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0X21hbmFnZXIubHVhCTIw MjYtMDktMDEgMDk6NDI6MDQuMzcyODk3Njc5ICswMjAwCitAQCAtOTQ2LDcgKzk0Niw5IEBACisg ICAgICAgICAgIHNtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yLnNlbGVjdGVkID0gaQorICAgICAg ICAgICBicmVhaworICAgICAgICAgZW5kCistICAgICAgICBpID0gaSArIDEKKysgICAgICAgIC0t IEx1YSA1LjU6IGZvciBsb29wIGNvbnRyb2wgdmFyaWFibGVzIGFyZSByZWFkLW9ubHkuIFRoaXMg aW5jcmVtZW50CisrICAgICAgICAtLSB3YXMgYWx3YXlzIGEgbm8tb3Agc2luY2UgbnVtZXJpYyBm b3IgbG9vcHMgdXNlIGFuIGludGVybmFsIGNvdW50ZXIuCisrICAgICAgICAtLSBpID0gaSArIDEK KyAgICAgICBlbmQKKyAKKyAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImNsZWFyaW5nIHRleHQg ZmllbGRzIikKK2RpZmYgLXVyTnIgZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1 YS1zY3JpcHRzL3Rvb2xzL3NjcmlwdF9tYW5hZ2VyLmx1YS5vcmlnIGRhcmt0YWJsZS01LjYuMC9z cmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0X21hbmFnZXIubHVhLm9yaWcKKy0t LSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2Ny aXB0X21hbmFnZXIubHVhLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAK KysrKyBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL3Njcmlw dF9tYW5hZ2VyLmx1YS5vcmlnCTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCitA QCAtMCwwICsxLDE2NTQgQEAKKystLVtbCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBkYXJrdGFi bGUsCisrICBjb3B5cmlnaHQgKGMpIDIwMTgsIDIwMjAsIDIwMjMsIDIwMjQgQmlsbCBGZXJndXNv biA8d3BmZXJndXNvbkBnbWFpbC5jb20+CisrICAKKysgIGRhcmt0YWJsZSBpcyBmcmVlIHNvZnR3 YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr ICAKKysgIGRhcmt0YWJsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIGRh cmt0YWJsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKytd XQorKy0tW1sKKysgICAgc2NyaXB0X21hbmFnZXIubHVhIC0gYSB0b29sIGZvciBtYW5hZ2luZyB0 aGUgZGFya3RhYmxlIGx1YSBzY3JpcHRzCisrCisrICAgIHNjcmlwdF9tYW5hZ2VyIGlzIGRlc2ln bmVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSB1c2VycyBsdWFyYyBmaWxlIGFuZCB1c2VkIHRvCisr ICAgIG1hbmFnZSB0aGUgbHVhIHNjcmlwdHMuCisrCisrICAgIE9uIHN0YXJ0dXAgc2NyaXB0X21h bmFnZXIgc2NhbnMgdGhlIGx1YSBzY3JpcHRzIGRpcmVjdG9yeSB0byBzZWUgd2hhdCBzY3JpcHRz IGFyZSBwcmVzZW50LgorKyAgICBTY3JpcHRzIGFyZSBzb3J0ZWQgYnkgJ2ZvbGRlcicgYmFzZWQg b24gd2hhdCBzdWItZGlyZWN0b3J5IHRoZXkgYXJlIGluLiAgV2l0aCBubyAKKysgICAgYWRkaXRp b25hbCBzY3JpcHQgcmVwb3NpdG9yaWVzIGlpbnN0YWxsZWQsIHRoZSBmb2xkZXJzIGFyZSBjb250 cmliLCBleGFtcGxlcywgb2ZmaWNpYWwKKysgICAgYW5kIHRvb2xzLiAgV2hlbiBhIGZvbGRlciBp cyBzZWxlY3RlZCB0aGUgYnV0dG9ucyBzaG93IHRoZSBzY3JpcHQgbmFtZSBhbmQgd2hldGhlciB0 aGUKKysgICAgc2NyaXB0IGlzIHN0YXJ0ZWQgb3Igc3RvcHBlZC4gIFRoZSBidXR0b24gaXMgYSB0 b2dnbGUsIHNvIGlmIHRoZSBzY3JpcHQgaXMgc3RvcHBlZCBjbGljayAKKysgICAgdGhlIGJ1dHRv biB0byBzdGFydCBpdCBhbmQgdmljZSB2ZXJzYS4KKysKKysgICAgRmVhdHVyZXMKKysKKysgICAg KiB0aGUgbnVtYmVyIG9mIHNjcmlwdCBidXR0b25zIHNob3duIGNhbiBiZSBjaGFuZ2VkIHRvIGFu eSBudW1iZXIgYmV0d2VlbiA1IGFuZCAyMC4gIFRoZSAKKysgICAgICBkZWZhdWx0IGlzIDEwIGJ1 dHRvbnMuICBUaGlzIGNhbiBiZSBjaGFuZ2VkIGluIHRoZSBjb25maWd1cmF0aW9uIGFjdGlvbi4K KysKKysgICAgKiBhZGRpdGlvbmFsIHJlcG9zaXRvcmllcyBvZiBzY3JpcHRzIG1heSBiZSBpbnN0 YWxsZWQgdXNpbmcgZnJvbSB0aGUgaW5zdGFsbC91cGRhdGUgYWN0aW9uLgorKworKyAgICAqIGlu c3RhbGxlZCBzY3JpcHRzIGNhbiBiZSB1cGRhdGVkIGZyb20gdGhlIGluc3RhbGwvdXBkYXRlIGFj dGlvbi4gIFRoaXMgaW5jbHVkZXMgZXh0cmEKKysgICAgICByZXBvc2l0b3JpZXMgdGhhdCBoYXZl IGJlZW4gaW5zdGFsbGVkLgorKworKyAgICAqIHRoZSBzY3JpcHRzIGNhbiBiZSBkaXNhYmxlZCBp ZiBkZXNpcmVkIGZyb20gdGhlIGluc3RhbGwvdXBkYXRlIGFjdGlvbi4gIFRoaXMgY2FuIG9ubHkK KysgICAgICBiZSByZXZlcnNlZCBtYW51YWxseS4gIFRvIGVuYWJsZSB0aGUgIkRpc2FibGUgU2Ny aXB0cyIgYnV0dG9uLCBjaGVjayB0aGUgY2hlY2tib3ggdG8KKysgICAgICBlbmRhYmxlIGl0LiAg VGhpcyBpcyB0byBwcmV2ZW50IGFjY2lkZW50YWxseSBkaXNhYmxpbmcgdGhlIHNjcmlwdHMuICBD bGljayB0aGUgCisrICAgICAgIkRpc2FibGUgU2NyaXB0cyIgYnV0dG9uIGFuZCB0aGUgbHVhcmMg ZmlsZSBpcyByZW5hbWVkIHRvIGx1YXJjLmRpc2FibGUuICBJZiBhdAorKyAgICAgIGEgbGF0ZXIg dGltZSB5b3Ugd2FudCB0byBlbmFibGUgdGhlIHNjcmlwdHMgYWdhaW4sIHNpbXBseSByZW5hbWUg dGhlIGx1YXJjLmRpc2FibGVkIAorKyAgICAgIGZpbGUgdG8gbHVhcmMgYW5kIHRoZSBzY3JpcHRz IHdpbGwgcnVuLgorKworK11dCisrCisrCisrbG9jYWwgZHQgPSByZXF1aXJlICJkYXJrdGFibGUi CisrbG9jYWwgZHUgPSByZXF1aXJlICJsaWIvZHR1dGlscyIKKytsb2NhbCBkZiA9IHJlcXVpcmUg ImxpYi9kdHV0aWxzLmZpbGUiCisrbG9jYWwgZHMgPSByZXF1aXJlICJsaWIvZHR1dGlscy5zdHJp bmciCisrbG9jYWwgZHRzeXMgPSByZXF1aXJlICJsaWIvZHR1dGlscy5zeXN0ZW0iCisrbG9jYWwg bG9nID0gcmVxdWlyZSAibGliL2R0dXRpbHMubG9nIgorK2xvY2FsIGR0ZGVidWcgPSByZXF1aXJl ICJkYXJrdGFibGUuZGVidWciCisrCisrbG9jYWwgZ2V0dGV4dCA9IGR0LmdldHRleHQuZ2V0dGV4 dAorKworK2xvY2FsIGZ1bmN0aW9uIF8obXNnaWQpCisrICAgIHJldHVybiBnZXR0ZXh0KG1zZ2lk KQorK2VuZAorKworKy0tIGZpZ3VyZSBvdXQgd2hlcmUgd2UgYXJlIHJ1bm5pbmcgZnJvbQorKwor K2xvY2FsIGluZm8gPSBkZWJ1Zy5nZXRpbmZvKDEsICJTIikKKytsb2NhbCBzY3JpcHRzX3BhdGgg PSBpbmZvLnNvdXJjZTpzdWIoMikKKysKKystLSBhc3N1bWUgdXNlciBiYXNlZAorK2xvY2FsIHN5 c3RlbV9iYXNlZCA9IGZhbHNlCisrCisraWYgc3RyaW5nLm1hdGNoKHNjcmlwdHNfcGF0aCwgZHMu c2FuaXRpemVfbHVhKGR0LmNvbmZpZ3VyYXRpb24uZGF0YV9kaXIpKSB0aGVuCisrICBsb2cubXNn KGxvZy5pbmZvLCAic2NyaXB0X21hbmFnZXIgdXNpbmcgc3lzdGVtIGJhc2VkIHNjcmlwdHMiKQor KyAgc3lzdGVtX2Jhc2VkID0gdHJ1ZQorK2VuZAorKworKy0tIGFwaSBjaGVjaworKworKy0tIGR1 LmNoZWNrX21pbl9hcGlfdmVyc2lvbigiOS4zLjAiLCAic2NyaXB0X21hbmFnZXIiKQorKworKy0t IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBDIE8g TiBTIFQgQSBOIFQgUworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAKKysKKystLSBzY3JpcHRfbWFuYWdlciByZXF1aXJlZCBBUEkgdmVyc2lvbgorK2xv Y2FsIFNNX0FQSV9WRVJfUkVRRCA8Y29uc3Q+ID0gIjkuNy4wIgorKworKy0tIHBhdGggc2VwYXJh dG9yCisrbG9jYWwgUFMgPGNvbnN0PiA9IGR0LmNvbmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAi d2luZG93cyIgYW5kICJcXCIgb3IgIi8iCisrCisrLS0gY29tbWFuZCBzZXBhcmF0b3IKKytsb2Nh bCBDUyA8Y29uc3Q+ID0gZHQuY29uZmlndXJhdGlvbi5ydW5uaW5nX29zID09ICJ3aW5kb3dzIiBh bmQgIiYiIG9yICI7IgorKworK2xvY2FsIE1PRFVMRSA8Y29uc3Q+ID0gInNjcmlwdF9tYW5hZ2Vy IgorKworK2xvY2FsIE1JTl9CVVRUT05TX1BFUl9QQUdFIDxjb25zdD4gPSA1CisrbG9jYWwgTUFY X0JVVFRPTlNfUEVSX1BBR0UgPGNvbnN0PiA9IDIwCisrbG9jYWwgREVGQVVMVF9CVVRUT05TX1BF Ul9QQUdFIDxjb25zdD4gPSAxMAorKworK2xvY2FsIERFRkFVTFRfTE9HX0xFVkVMIDxjb25zdD4g PSBsb2cuaW5mbworKworK2xvY2FsIFVTRVJfTFVBX0RJUiA8Y29uc3Q+ID0gZHQuY29uZmlndXJh dGlvbi5jb25maWdfZGlyIC4uIFBTIC4uICJsdWEiCisrbG9jYWwgU1lTVEVNX0xVQV9ESVIgPGNv bnN0PiA9IGR0LmNvbmZpZ3VyYXRpb24uZGF0YV9kaXIgLi4gUFMgLi4gImx1YS1zY3JpcHRzIgor KworK2xvY2FsIExVQV9TQ1JJUFRfUkVQTyA8Y29uc3Q+ID0gImh0dHBzOi8vZ2l0aHViLmNvbS9k YXJrdGFibGUtb3JnL2x1YS1zY3JpcHRzLmdpdCIKKysKKytsb2NhbCBMVUFfQVBJX1ZFUiA8Y29u c3Q+ID0gIkFQSS0iIC4uIGR0LmNvbmZpZ3VyYXRpb24uYXBpX3ZlcnNpb25fc3RyaW5nCisrCisr LS0gbG9jYWwgUE9XRVJfSUNPTiA9IGR0LmNvbmZpZ3VyYXRpb24uY29uZmlnX2RpciAuLiAiL2x1 YS9kYXRhL2RhdGEvaWNvbnMvcG93ZXIucG5nIgorK2xvY2FsIFVTRVJfUE9XRVJfSUNPTiA8Y29u c3Q+ID0gZHQuY29uZmlndXJhdGlvbi5jb25maWdfZGlyIC4uICIvbHVhL2RhdGEvaWNvbnMvcGF0 aDIwLnBuZyIKKytsb2NhbCBVU0VSX0JMQU5LX0lDT04gPGNvbnN0PiA9IGR0LmNvbmZpZ3VyYXRp b24uY29uZmlnX2RpciAuLiAiL2x1YS9kYXRhL2ljb25zL2JsYW5rMjAucG5nIgorKworK2xvY2Fs IFNZU1RFTV9QT1dFUl9JQ09OIDxjb25zdD4gPSBkdC5jb25maWd1cmF0aW9uLmRhdGFfZGlyIC4u ICIvbHVhLXNjcmlwdHMvZGF0YS9pY29ucy9wYXRoMjAucG5nIgorK2xvY2FsIFNZU1RFTV9CTEFO S19JQ09OIDxjb25zdD4gPSBkdC5jb25maWd1cmF0aW9uLmRhdGFfZGlyIC4uICIvbHVhLXNjcmlw dHMvZGF0YS9pY29ucy9ibGFuazIwLnBuZyIKKysKKytsb2NhbCBMVUFfRElSID0gVVNFUl9MVUFf RElSCisrbG9jYWwgUE9XRVJfSUNPTiA9IFVTRVJfUE9XRVJfSUNPTgorK2xvY2FsIEJMQU5LX0lD T04gPSBVU0VSX0JMQU5LX0lDT04KKysKKytpZiBzeXN0ZW1fYmFzZWQgdGhlbgorKyAgTFVBX0RJ UiA9IFNZU1RFTV9MVUFfRElSCisrICBQT1dFUl9JQ09OID0gU1lTVEVNX1BPV0VSX0lDT04KKysg IEJMQU5LX0lDT04gPSBTWVNURU1fQkxBTktfSUNPTgorK2VuZAorKy0tIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBQIFIgRSBGIEUgUiBFIE4gQyBF IFMKKystLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisr CisrZHQucHJlZmVyZW5jZXMucmVnaXN0ZXIoTU9EVUxFLCAiZGlzYWJsZV9zY3JpcHRzIiwgImJv b2wiLAorKyAgXygiZGlzYWJsZSBMdWEgc2NyaXB0cyIpLAorKyAgXygiZG8gbm90IHJ1biB0aGUg THVhIHNjcmlwdHMiKSwKKysgICAgZmFsc2UpCisrCisrICBpZiBkdC5wcmVmZXJlbmNlcy5yZWFk KE1PRFVMRSwgImRpc2FibGVfc2NyaXB0cyIsICJib29sIikgdGhlbgorKyAgICByZXR1cm4KKysg IGVuZAorKworK2R0LnByZWZlcmVuY2VzLnJlZ2lzdGVyKE1PRFVMRSwgImNoZWNrX3VwZGF0ZSIs ICJib29sIiwKKysgIF8oImNoZWNrIGZvciB1cGRhdGVkIHNjcmlwdHMgb24gc3RhcnQgdXAiKSwg CisrICBfKCJhdXRvbWF0aWNhbGx5IHVwZGF0ZSBzY3JpcHRzIHRvIGNvcnJlY3QgdmVyc2lvbiIp LCAKKysgIHRydWUpCisrCisrbG9jYWwgY2hlY2tfZm9yX3VwZGF0ZXMgPSBkdC5wcmVmZXJlbmNl cy5yZWFkKE1PRFVMRSwgImNoZWNrX3VwZGF0ZSIsICJib29sIikKKysKKystLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrLS0gTCBPIEcgIEwgRSBWIEUg TAorKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKysK Kytsb2NhbCBvbGRfbG9nX2xldmVsID0gbG9nLmxvZ19sZXZlbCgpCisrCisrbG9nLmxvZ19sZXZl bChERUZBVUxUX0xPR19MRVZFTCkKKysKKystLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gCisrLS0gTiBBIE0gRSAgUyBQIEEgQyBFCisrLS0gLSAtIC0gLSAt IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIAorKworK2xvY2FsIHNjcmlwdF9t YW5hZ2VyID0ge30KKytsb2NhbCBzbSA9IHNjcmlwdF9tYW5hZ2VyCisrCisrc20uZXhlY3V0YWJs ZXMgPSB7fQorK3NtLmV4ZWN1dGFibGVzLmdpdCA9IGRmLmNoZWNrX2lmX2Jpbl9leGlzdHMoImdp dCIpCisrCisrc20ubW9kdWxlX2luc3RhbGxlZCA9IGZhbHNlCisrc20uZXZlbnRfcmVnaXN0ZXJl ZCA9IGZhbHNlCisrCisrLS0gc2V0IHVwIHRhYmxlcyB0byBjb250YWluIGFsbCB0aGUgd2lkZ2V0 cyBhbmQgY2hvaWNlcworKworK3NtLndpZGdldHMgPSB7fQorK3NtLmZvbGRlcnMgPSB7fQorK3Nt LnRyYW5zbGF0ZWRfZm9sZGVycyA9IHt9CisrCisrLS0gc2V0IGxvZyBsZXZlbCBmb3IgZnVuY3Rp b25zCisrCisrc20ubG9nX2xldmVsID0gREVGQVVMVF9MT0dfTEVWRUwKKysKKystLVtbCisrCisr ICBzbS5zY3JpcHRzIGlzIGEgdGFibGUgb2YgdGFibGVzIGZvciBjb250YWluaW5nIHRoZSBzY3Jp cHRzCisrICBJdCBpcyBvcmdhbml6ZWQgYXMgaW50byBmb2xkZXIgKGZvbGRlcikgc3VidGFibGVz IGNvbnRhaW5pbmcKKysgIGVhY2ggc2NyaXB0IGRlZmluaXRpb24sIHdoaWNoIGlzIGEgdGFibGUK KysKKysgIHNtLnNjcmlwdHMtCisrICAgICAgICAgICAgfAorKyAgICAgICAgICAgIC0gZm9sZGVy LS0tLS0tLS0tLS0tfAorKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAtIHNjcmlw dAorKyAgICAgICAgICAgIC0gZm9sZGVyLS0tLXwgICAgICAgfAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgLSBzY3JpcHR8CisrICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIC0g c2NyaXB0CisrICAgICAgICAgICAgICAgICAgICAgICAgICAtIHNjcmlwdHwKKysKKysgIGFuZCBh IHNjcmlwdCB0YWJsZSBsb29rcyBsaWtlCisrCisrICBuYW1lICAgICAgICAgIHRoZSBuYW1lIG9m IHRoZSBzY3JpcHQgZmlsZSB3aXRob3V0IHRoZSBsdWEgZXh0ZW5zaW9uCisrICBwYXRoICAgICAg ICAgIGZvbGRlciAoZm9sZGVyKSwgcGF0aCBzZXBhcmF0b3IsIHBhdGgsIG5hbWUgd2l0aG91dCB0 aGUgbHVhIGV4dGVuc2lvbgorKyAgZG9jICAgICAgICAgICB0aGUgaGVhZGVyIGNvbW1lbnRzIGZy b20gdGhlIHNjcmlwdCB0byBiZSB1c2VkIGFzIGEgdG9vbHRpcAorKyAgc2NyaXB0X25hbWUgICB0 aGUgZm9sZGVyLCBwYXRoIHNlcGFyYXRvciwgYW5kIG5hbWUgd2l0aG91dCB0aGUgbHVhIGV4dGVu c2lvbgorKyAgcnVubmluZyAgICAgICB0cnVlIGlmIHJ1bm5pbmcsIGZhbHNlIGlmIG5vdCwgaGlk ZGVuIGlmIHJ1bm5pbmcgYnV0IHRoZSAKKysgICAgICAgICAgICAgICAgbGliL3N0b3JhZ2UvYWN0 aW9uIGZvciB0aGUgc2NyaXB0IGlzIGhpZGRlbgorKyAgaGFzX2xpYiAgICAgICB0cnVlIGlmIGl0 IGNyZWF0ZXMgYSBtb2R1bGUKKysgIGxpYl9uYW1lICAgICAgbmFtZSBvZiB0aGUgY3JlYXRlZCBs aWIKKysgIGhhc19zdG9yYWdlICAgdHJ1ZSBpZiBpdCBjcmVhdGVzIGEgc3RvcmFnZSAoZXhwb3J0 ZXIpCisrICBzdG9yYWdlX25hbWUgIG5hbWUgb2YgdGhlIGV4cG9ydGVyIChpbiB0aGUgZXhwb3J0 ZXIgc3RvcmFnZSBtZW51KQorKyAgaGFzX2FjdGlvbiAgICB0cnVlIGlmIGl0IGNyZWF0ZXMgYW4g YWN0aW9uCisrICBhY3Rpb25fbmFtZSAgIG5hbWUgb24gdGhlIGJ1dHRvbgorKyAgaGFzX3NlbGVj dCAgICB0cnVlIGlmIGl0IGNyZWF0ZXMgYSBzZWxlY3QKKysgIHNlbGVjdF9uYW1lICAgbmFtZSBv biB0aGUgYnV0dG9uCisrICBoYXNfZXZlbnQgICAgIHRydWUgaWYgaXQgY3JlYXRlcyBhbiBldmVu dCBoYW5kbGVyCisrICBldmVudF90eXBlICAgIHR5cGUgb2YgZXZlbnQsIHNob3J0Y3V0LCBwb3N0 LXh4eCwgcHJlLXh4eAorKyAgY2FsbGJhY2sgICAgICBuYW1lIG9mIHRoZSBjYWxsYmFjayByb3V0 aW5lCisrICBpbml0aWFsaXplZCAgIGFsbCBvZiB0aGUgYWJvdmUgZGF0YSBoYXMgYmVlbiByZXRy ZWl2ZWQgYW5kIHNldC4gIElmIHRoZSAKKysgICAgICAgICAgICAgICAgc2NyaXB0IGlzIHVubG9h ZGVkIGFuZCByZWxvYWRlZCB3ZSBkb24ndCBoYXZlIHRvIHJlcGFyc2UgdGhlIGZpbGUKKysKKytd XQorKworK3NtLnNjcmlwdHMgPSB7fQorK3NtLnN0YXJ0X3F1ZXVlID0ge30KKytzbS5wYWdlX3N0 YXR1cyA9IHt9Cisrc20ucGFnZV9zdGF0dXMubnVtX2J1dHRvbnMgPSBERUZBVUxUX0JVVFRPTlNf UEVSX1BBR0UKKytzbS5wYWdlX3N0YXR1cy5idXR0b25zX2NyZWF0ZWQgPSAwCisrc20ucGFnZV9z dGF0dXMuY3VycmVudF9wYWdlID0gMAorK3NtLnBhZ2Vfc3RhdHVzLmZvbGRlciA9ICIiCisrCisr LS0gaW5zdGFsbGVkIHNjcmlwdCByZXBvc2l0b3JpZXMKKytzbS5pbnN0YWxsZWRfcmVwb3NpdG9y aWVzID0geworKyAge25hbWUgPSAibHVhLXNjcmlwdHMiLCBkaXJlY3RvcnkgPSBMVUFfRElSfSwK Kyt9CisrCisrCisrLS0gZG9uJ3QgbGV0IGl0IHJ1biB1bnRpbCBldmVyeXRoaW5nIGlzIGluIHBs YWNlCisrc20ucnVuID0gZmFsc2UKKysKKystLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gCisrLS0gRiBVIE4gQyBUIEkgTyBOIFMKKystLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrCisrLS0tLS0tLS0tLS0tLS0t LS0tLQorKy0tIGhlbHBlciBmdW5jdGlvbnMKKystLS0tLS0tLS0tLS0tLS0tLS0tCisrCisrbG9j YWwgZnVuY3Rpb24gc2V0X2xvZ19sZXZlbChsZXZlbCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwg PSBsb2cubG9nX2xldmVsKCkKKysgIGxvZy5sb2dfbGV2ZWwobGV2ZWwpCisrICByZXR1cm4gb2xk X2xvZ19sZXZlbAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHJlc3RvcmVfbG9nX2xldmVsKGxl dmVsKQorKyAgbG9nLmxvZ19sZXZlbChsZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBw cmVmX3JlYWQobmFtZSwgcHJlZl90eXBlKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9s b2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJuYW1lIGlz ICIgLi4gbmFtZSAuLiAiIGFuZCB0eXBlIGlzICIgLi4gcHJlZl90eXBlKQorKworKyAgbG9jYWwg dmFsID0gZHQucHJlZmVyZW5jZXMucmVhZChNT0RVTEUsIG5hbWUsIHByZWZfdHlwZSkKKysKKysg IGxvZy5tc2cobG9nLmRlYnVnLCAicmVhZCB2YWx1ZSAiIC4uIHRvc3RyaW5nKHZhbCkpCisrCisr ICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgcmV0dXJuIHZhbAorK2VuZAor KworK2xvY2FsIGZ1bmN0aW9uIHByZWZfd3JpdGUobmFtZSwgcHJlZl90eXBlLCB2YWx1ZSkKKysg IGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysg IGxvZy5tc2cobG9nLmRlYnVnLCAid3JpdGluZyB2YWx1ZSAiIC4uIHRvc3RyaW5nKHZhbHVlKSAu LiAiIGZvciBuYW1lICIgLi4gbmFtZSkKKysKKysgIGR0LnByZWZlcmVuY2VzLndyaXRlKE1PRFVM RSwgbmFtZSwgcHJlZl90eXBlLCB2YWx1ZSkKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9s b2dfbGV2ZWwpCisrZW5kCisrCisrLS0tLS0tLS0tLS0tLS0tLQorKy0tIGdpdCBpbnRlcmZhY2UK KystLS0tLS0tLS0tLS0tLS0tCisrCisrbG9jYWwgZnVuY3Rpb24gZ2V0X3JlcG9fc3RhdHVzKHJl cG8pCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwp CisrCisrICBsb2NhbCBwID0gaW8ucG9wZW4oImNkICIgLi4gcmVwbyAuLiBDUyAuLiAiZ2l0IHN0 YXR1cyIpCisrCisrICBpZiBwIHRoZW4KKysgICAgbG9jYWwgZGF0YSA9IHA6cmVhZCgiKmEiKQor KyAgICBwOmNsb3NlKCkKKysgICAgcmV0dXJuIGRhdGEKKysgIGVuZAorKworKyAgbG9nLm1zZyhs b2cuZXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN0YXR1cyBvZiAiIC4uIHJlcG8pCisrICByZXN0b3Jl X2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgcmV0dXJuIG5pbAorK2VuZAorKworK2xvY2Fs IGZ1bmN0aW9uIGdldF9jdXJyZW50X3JlcG9fYnJhbmNoKHJlcG8pCisrICBsb2NhbCBvbGRfbG9n X2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2NhbCBicmFuY2gg PSBuaWwKKysKKysgIGxvY2FsIHAgPSBpby5wb3BlbigiY2QgIiAuLiByZXBvIC4uIENTIC4uICJn aXQgYnJhbmNoIC0tYWxsIikKKysKKysgIGlmIHAgdGhlbgorKyAgICBsb2NhbCBkYXRhID0gcDpy ZWFkKCIqYSIpCisrICAgIHA6Y2xvc2UoKQorKyAgICBsb2NhbCBicmFuY2hlcyA9IGR1LnNwbGl0 KGRhdGEsICJcbiIpCisrICAgIGZvciBfLCBiIGluIGlwYWlycyhicmFuY2hlcykgZG8KKysgICAg ICBsb2cubXNnKGxvZy5kZWJ1ZywgImJyYW5jaCBmb3IgdGVzdGluZyBpcyAiIC4uIGIpCisrICAg ICAgYnJhbmNoID0gc3RyaW5nLm1hdGNoKGIsICJeJSogKC4tKSQiKQorKworKyAgICAgIGlmIGJy YW5jaCB0aGVuCisrICAgICAgICBsb2cubXNnKGxvZy5pbmZvLCAiY3VycmVudCByZXBvIGJyYW5j aCBpcyAiIC4uIGJyYW5jaCkKKysgICAgICAgIHJldHVybiBicmFuY2gKKysgICAgICBlbmQKKysK KysgICAgZW5kCisrICBlbmQKKysKKysgIGlmIG5vdCBicmFuY2ggdGhlbgorKyAgICBsb2cubXNn KGxvZy5lcnJvciwgIm5vIGN1cnJlbnQgYnJhbmNoIGRldGVjdGVkIGluIHJlcG9fZGF0YSIpCisr ICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4g bmlsCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gZ2V0X3JlcG9fYnJhbmNoZXMocmVwbykKKysg IGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysg IGxvY2FsIGJyYW5jaGVzID0ge30KKysgIGxvY2FsIHAgPSBpby5wb3BlbigiY2QgIiAuLiByZXBv IC4uIENTIC4uICJnaXQgcHVsbCAtLWFsbCIgLi4gQ1MgLi4gImdpdCBicmFuY2ggLS1hbGwiKQor KworKyAgaWYgcCB0aGVuCisrICAgIGxvY2FsIGRhdGEgPSBwOnJlYWQoIiphIikKKysgICAgcDpj bG9zZSgpCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiZGF0YSBpcyBcbiIgLi4gZGF0YSkKKysg ICAgbG9jYWwgYnJhbmNoX2RhdGEgPSBkdS5zcGxpdChkYXRhLCAiXG4iKQorKyAgICBmb3IgXywg bGluZSBpbiBpcGFpcnMoYnJhbmNoX2RhdGEpIGRvCisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcs ICJsaW5lIGlzICAiIC4uIGxpbmUpCisrICAgICAgbG9jYWwgYnJhbmNoID0gc3RyaW5nLmdzdWIo bGluZSwgIiVzK3JlbW90ZXMvJWErLyIsICIiKQorKyAgICAgIGlmIHN0cmluZy5tYXRjaChicmFu Y2gsICJBUEkiKSB0aGVuCisrICAgICAgICBsb2cubXNnKGxvZy5pbmZvLCAiZm91bmQgYnJhbmNo IC0gIiAuLiBicmFuY2gpCisrICAgICAgICB0YWJsZS5pbnNlcnQoYnJhbmNoZXMsIGJyYW5jaCkK KysgICAgICBlbmQKKysgICAgZW5kCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9s ZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gYnJhbmNoZXMgCisrZW5kCisrCisrbG9jYWwgZnVuY3Rp b24gaXNfcmVwb19jbGVhbihyZXBvX2RhdGEpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0 X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBpZiBzdHJpbmcubWF0Y2gocmVwb19kYXRh LCAiXG4lcy0lYS4tJWE6JXMtJWElZy1cbiIpIHRoZW4KKysgICAgbG9nLm1zZyhsb2cuaW5mbywg InJlcG8gaXMgZGlydHkiKQorKyAgICByZXR1cm4gZmFsc2UKKysgIGVsc2UKKysgICAgbG9nLm1z Zyhsb2cuaW5mbywgInJlcG8gaXMgY2xlYW4iKQorKyAgICByZXR1cm4gdHJ1ZQorKyAgZW5kCisr CisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIGNoZWNrb3V0X3JlcG9fYnJhbmNoKHJlcG8sIGJyYW5jaCkKKysgIGxvY2FsIG9sZF9s b2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvZy5tc2cobG9n LmluZm8sICJjaGVja291dCBvdXQgYnJhbmNoICIgLi4gYnJhbmNoIC4uICIgZnJvbSByZXBvc2l0 b3J5ICIgLi4gcmVwbykKKysKKysgIG9zLmV4ZWN1dGUoImNkICIgLi4gcmVwbyAuLiBDUyAuLiAi Z2l0IGNoZWNrb3V0ICIgLi4gYnJhbmNoKQorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xv Z19sZXZlbCkKKytlbmQKKysKKystLS0tLS0tLS0tLS0tLS0tLS0tLQorKy0tIHV0aWxpdHkgZnVu Y3Rpb25zCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysKKytsb2NhbCBmdW5jdGlvbiB1cGRhdGVf Y29tYm9ib3hfY2hvaWNlcyhjb21ib2JveCwgY2hvaWNlX3RhYmxlLCBzZWxlY3RlZCkKKysgIGxv Y2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxv Y2FsIGl0ZW1zID0gI2NvbWJvYm94CisrICBsb2NhbCBjaG9pY2VzID0gI2Nob2ljZV90YWJsZQor KworKyAgZm9yIGksIG5hbWUgaW4gaXBhaXJzKGNob2ljZV90YWJsZSkgZG8gCisrICAgIGNvbWJv Ym94W2ldID0gbmFtZQorKyAgZW5kCisrCisrICBpZiBjaG9pY2VzIDwgaXRlbXMgdGhlbgorKyAg ICBmb3IgaiA9IGl0ZW1zLCBjaG9pY2VzICsgMSwgLTEgZG8KKysgICAgICBjb21ib2JveFtqXSA9 IG5pbAorKyAgICBlbmQKKysgIGVuZAorKworKyAgaWYgbm90IHNlbGVjdGVkIHRoZW4KKysgICAg c2VsZWN0ZWQgPSAxCisrICBlbmQKKysKKysgIGNvbWJvYm94LnZhbHVlID0gc2VsZWN0ZWQKKysg IHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rp b24gc3RyaW5nX3RyaW0oc3RyKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2 ZWwoc20ubG9nX2xldmVsKQorKworKyAgbG9jYWwgcmVzdWx0ID0gc3RyaW5nLmdzdWIoc3RyLCAi XiVzKyIsICIiKSAtLSB0cmltIGxlYWRpbmcgc3BhY2VzCisrICByZXN1bHQgPSBzdHJpbmcuZ3N1 YihyZXN1bHQsICIlcyskIiwgIiIpICAgIC0tIHRyaW0gdHJhaWxpbmcgc3BhY2VzCisrICByZXN1 bHQgPSBzdHJpbmcuZ3N1YihyZXN1bHQsICIsPyVzKyUtJS0uKyQiLCAiIikgLS0gdHJpbSB0cmFp bGluZyBjb21tYSBhbmQgY29tbWVudHMKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2df bGV2ZWwpCisrICByZXR1cm4gcmVzdWx0CisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gc3RyaW5n X2RlcXVvdGUoc3RyKQorKyAgcmV0dXJuIHN0cmluZy5nc3ViKHN0ciwgIlsnXCJdIiwgIiIpCisr ZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gc3RyaW5nX2RlaTE4bihzdHIpCisrICByZXR1cm4gc3Ry aW5nLm1hdGNoKHN0ciwgIiVfJSgoLispJSkiKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHN0 cmluZ19jaG9wKHN0cikKKysgIHJldHVybiBzdHI6c3ViKDEsIC0yKQorK2VuZAorKworKy0tLS0t LS0tLS0tLS0tLS0tLQorKy0tIHNjcmlwdCBoYW5kbGluZworKy0tLS0tLS0tLS0tLS0tLS0tLQor KworK2xvY2FsIGZ1bmN0aW9uIGlzX2ZvbGRlcl9rbm93bihmb2xkZXJfdGFibGUsIG5hbWUpCisr ICBsb2NhbCBtYXRjaCA9IGZhbHNlCisrCisrICBmb3IgXywgZm9sZGVyX25hbWUgaW4gaXBhaXJz KGZvbGRlcl90YWJsZSkgZG8KKysgICAgaWYgbmFtZSA9PSBmb2xkZXJfbmFtZSB0aGVuCisrICAg ICAgbWF0Y2ggPSB0cnVlCisrICAgIGVuZAorKyAgZW5kCisrCisrICByZXR1cm4gbWF0Y2gKKytl bmQKKysKKytsb2NhbCBmdW5jdGlvbiBmaW5kX3RyYW5zbGF0ZWRfbmFtZShmb2xkZXIpCisrICBs b2NhbCB0cmFuc2xhdGVkX25hbWUgPSBuaWwKKysKKysgIGlmIGZvbGRlciA9PSAiY29udHJpYiIg dGhlbgorKyAgICB0cmFuc2xhdGVkX25hbWUgPSBfKCJjb250cmlidXRlZCIpCisrICBlbHNlaWYg Zm9sZGVyID09ICJleGFtcGxlcyIgdGhlbgorKyAgICB0cmFuc2xhdGVkX25hbWUgPSBfKCJleGFt cGxlcyIpCisrICBlbHNlaWYgZm9sZGVyID09ICJvZmZpY2lhbCIgdGhlbgorKyAgICB0cmFuc2xh dGVkX25hbWUgPSBfKCJvZmZpY2lhbCIpCisrICBlbHNlaWYgZm9sZGVyID09ICJ0b29scyIgdGhl bgorKyAgICB0cmFuc2xhdGVkX25hbWUgPSBfKCJ0b29scyIpCisrICBlbHNlCisrICAgIHRyYW5z bGF0ZWRfbmFtZSA9IF8oZm9sZGVyKSAtLSBpbiBjYXNlIHdlIGdldCBsdWNreSBhbmQgdGhlIHN0 cmluZyBnb3QgdHJhbnNsYXRlZCBlbHNld2hlcmUKKysgIGVuZAorKworKyAgcmV0dXJuIHRyYW5z bGF0ZWRfbmFtZQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGFkZF9zY3JpcHRfZm9sZGVyKGZv bGRlcikKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZl bCkKKysKKysgIGlmICNzbS5mb2xkZXJzID09IDAgb3Igbm90IGlzX2ZvbGRlcl9rbm93bihzbS5m b2xkZXJzLCBmb2xkZXIpIHRoZW4KKysgICAgdGFibGUuaW5zZXJ0KHNtLmZvbGRlcnMsIGZvbGRl cikKKysgICAgdGFibGUuaW5zZXJ0KHNtLnRyYW5zbGF0ZWRfZm9sZGVycywgZmluZF90cmFuc2xh dGVkX25hbWUoZm9sZGVyKSkKKysgICAgc20uc2NyaXB0c1tmb2xkZXJdID0ge30KKysgICAgbG9n Lm1zZyhsb2cuZGVidWcsICJjcmVhdGVkIGZvbGRlciAiIC4uIGZvbGRlcikKKysgIGVuZAorKwor KyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5j dGlvbiBnZXRfc2NyaXB0X21ldGFkYXRhKHNjcmlwdCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwg PSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysgIC0tIHNldF9sb2dfbGV2ZWwobG9nLmRl YnVnKQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJwcm9jZXNzaW5nIG1ldGF0ZGF0YSBmb3Ig IiAuLiBzY3JpcHQpCisrCisrICBsb2NhbCBtZXRhZGF0YV9ibG9jayA9IG5pbAorKyAgbG9jYWwg bWV0YWRhdGEgPSB7fQorKworKyAgZiA9IGlvLm9wZW4oTFVBX0RJUiAuLiBQUyAuLiBzY3JpcHQg Li4gIi5sdWEiKQorKyAgaWYgZiB0aGVuCisrICAgIC0tIHNsdXJwIHRoZSBmaWxlCisrICAgIGxv Y2FsIGNvbnRlbnQgPSBmOnJlYWQoIiphbGwiKQorKyAgICBmOmNsb3NlKCkKKysgICAgLS0gZ3Jh YiB0aGUgc2NyaXB0X2RhdGEubWV0YWRhdGEgdGFibGUKKysgICAgbWV0YWRhdGFfYmxvY2sgPSBz dHJpbmcubWF0Y2goY29udGVudCwgInNjcmlwdF9kYXRhJS5tZXRhZGF0YSA9ICV7XHI/XG4oLi0p XHI/XG4lfSIpCisrICBlbHNlCisrICAgIGxvZy5tc2cobG9nLmVycm9yLCAiY2FudCByZWFkIGZy b20gIiAuLiBzY3JpcHQpCisrICBlbmQKKysKKysgIGlmIG1ldGFkYXRhX2Jsb2NrIHRoZW4KKysg ICAgLS0gYnJlYWsgdXAgdGhlIGxpbmVzIGludG8ga2V5IHZhbHVlIHBhaXJzCisrICAgIGxvY2Fs IGxpbmVzID0gZHUuc3BsaXQobWV0YWRhdGFfYmxvY2ssICJcbiIpCisrICAgIGxvZy5tc2cobG9n LmRlYnVnLCAiZ290ICIgLi4gI2xpbmVzIC4uICIgbGluZXMiKQorKyAgICBmb3IgaSA9IDEsICNs aW5lcyBkbworKyAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAic3BsaXR0aW5nIGxpbmUgIiAuLiBs aW5lc1tpXSkKKysgICAgICBsb2NhbCBwYXJ0cyA9IGR1LnNwbGl0KGxpbmVzW2ldLCAiID0gIikK KysgICAgICBwYXJ0c1sxXSA9IHN0cmluZ190cmltKHBhcnRzWzFdKQorKyAgICAgIHBhcnRzWzJd ID0gc3RyaW5nX3RyaW0ocGFydHNbMl0pCisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJnb3Qg dmFsdWUgIiAuLiBwYXJ0c1sxXSAuLiAiIGFuZCBkYXRhICIgLi4gcGFydHNbMl0pCisrICAgICAg aWYgc3RyaW5nLm1hdGNoKHBhcnRzWzJdLCAiJV8lKCIpIHRoZW4KKysgICAgICAgIHBhcnRzWzJd ID0gXyhzdHJpbmdfZGVxdW90ZShzdHJpbmdfZGVpMThuKHBhcnRzWzJdKSkpCisrICAgICAgZWxz ZQorKyAgICAgICAgcGFydHNbMl0gPSBzdHJpbmdfZGVxdW90ZShwYXJ0c1syXSkKKysgICAgICBl bmQKKysgICAgICBpZiBzdHJpbmcubWF0Y2gocGFydHNbMl0sICIsJCIpIHRoZW4KKysgICAgICAg IHBhcnRzWzJdID0gc3RyaW5nX2Nob3AocGFydHNbMl0pCisrICAgICAgZW5kCisrICAgICAgbG9n Lm1zZyhsb2cuZGVidWcsICJwYXJ0cyAxIGlzICIgLi4gcGFydHNbMV0gLi4gIiBhbmQgcGFydHMg MiBpcyAiIC4uIHBhcnRzWzJdKQorKyAgICAgIG1ldGFkYXRhW3BhcnRzWzFdXSA9IHBhcnRzWzJd CisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJtZXRhZGF0YSAiIC4uIHBhcnRzWzFdIC4uICIg aXMgIiAuLiBtZXRhZGF0YVtwYXJ0c1sxXV0pCisrICAgIGVuZAorKyAgICBsb2cubXNnKGxvZy5k ZWJ1ZywgInNjcmlwdCBkYXRhIGZvdW5kIGZvciAiIC4uIG1ldGFkYXRhWyJuYW1lIl0pCisrICBl bmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gbWV0 YWRhdGFfYmxvY2sgYW5kIG1ldGFkYXRhIG9yIG5pbAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9u IGdldF9zY3JpcHRfZG9jKHNjcmlwdCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9n X2xldmVsKHNtLmxvZ19sZXZlbCkKKysgIGxvY2FsIGRlc2NyaXB0aW9uID0gbmlsCisrICBmID0g aW8ub3BlbihMVUFfRElSIC4uIFBTIC4uIHNjcmlwdCAuLiAiLmx1YSIpCisrICBpZiBmIHRoZW4K KysgICAgLS0gc2x1cnAgdGhlIGZpbGUKKysgICAgbG9jYWwgY29udGVudCA9IGY6cmVhZCgiKmFs bCIpCisrICAgIGY6Y2xvc2UoKQorKyAgICAtLSBhc3N1bWUgdGhhdCB0aGUgc2Vjb25kIGJsb2Nr IGNvbW1lbnQgaXMgdGhlIGRvY3VtZW50YXRpb24KKysgICAgZGVzY3JpcHRpb24gPSBzdHJpbmcu bWF0Y2goY29udGVudCwgIiUtJS0lWyVbLi0lXSVdLi0lLSUtJVslWyguLSklXSVdIikKKysgIGVs c2UKKysgICAgbG9nLm1zZyhsb2cuZXJyb3IsICJjYW4ndCByZWFkIGZyb20gIiAuLiBzY3JpcHQp CisrICBlbmQKKysgIGlmIGRlc2NyaXB0aW9uIHRoZW4KKysgICAgcmVzdG9yZV9sb2dfbGV2ZWwo b2xkX2xvZ19sZXZlbCkKKysgICAgcmV0dXJuIGRlc2NyaXB0aW9uCisrICBlbHNlCisrICAgIHJl c3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICAgIHJldHVybiBfKCJubyBkb2N1bWVu dGF0aW9uIGF2YWlsYWJsZSIpCisrICBlbmQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBhY3Rp dmF0ZShzY3JpcHQpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5s b2dfbGV2ZWwpCisrCisrICBsb2NhbCBzdGF0dXMgPSBuaWwgLS0gc3RhdHVzIG9mIHN0YXJ0IGZ1 bmN0aW9uCisrICBsb2NhbCBlcnIgPSBuaWwgICAgLS0gZXJyb3IgbWVzc2FnZSByZXR1cm5lZCBp ZiBtb2R1bGUgZG9lc24ndCBzdGFydAorKworKyAgbG9nLm1zZyhsb2cuaW5mbywgImFjdGl2YXRp bmcgIiAuLiBzY3JpcHQubmFtZSkKKysKKysgIGlmIHNjcmlwdC5ydW5uaW5nID09IGZhbHNlIHRo ZW4KKysKKysgICAgc2NyaXB0X21hbmFnZXJfcnVubmluZ19zY3JpcHQgPSBzY3JpcHQubmFtZQor KworKyAgICBzdGF0dXMsIGVyciA9IGR1LnByZXF1aXJlKHNjcmlwdC5wYXRoKQorKyAgICBsb2cu bXNnKGxvZy5kZWJ1ZywgInByZXF1aXJlIHJldHVybmVkICIgLi4gdG9zdHJpbmcoc3RhdHVzKSAu LiAiIGFuZCBmb3IgZXJyICIgLi4gdG9zdHJpbmcoZXJyKSkKKysKKysgICAgc2NyaXB0X21hbmFn ZXJfcnVubmluZ19zY3JpcHQgPSBuaWwKKysKKysgICAgaWYgc3RhdHVzIHRoZW4KKysgICAgICBw cmVmX3dyaXRlKHNjcmlwdC5zY3JpcHRfbmFtZSwgImJvb2wiLCB0cnVlKQorKyAgICAgIGxvZy5t c2cobG9nLnNjcmVlbiwgXyhzdHJpbmcuZm9ybWF0KCJsb2FkZWQgJXMiLCBzY3JpcHQuc2NyaXB0 X25hbWUpKSkKKysgICAgICBzY3JpcHQucnVubmluZyA9IHRydWUKKysKKysgICAgICBpZiBlcnIg fj0gdHJ1ZSB0aGVuCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImdvdCBsaWIgZGF0YSIp CisrICAgICAgICBzY3JpcHQuZGF0YSA9IGVycgorKyAgICAgICAgaWYgc2NyaXB0LmRhdGEuZGVz dHJveV9tZXRob2QgYW5kIHNjcmlwdC5kYXRhLmRlc3Ryb3lfbWV0aG9kID09ICJoaWRlIiBhbmQg c2NyaXB0LmRhdGEuc2hvdyBhbmQgZHQuZ3VpLmN1cnJlbnRfdmlldygpLmlkID09ICJsaWdodHRh YmxlIiB0aGVuCisrICAgICAgICAgIHNjcmlwdC5kYXRhLnNob3coKQorKyAgICAgICAgZW5kCisr ICAgICAgZWxzZQorKyAgICAgICAgc2NyaXB0LmRhdGEgPSBuaWwKKysgICAgICBlbmQKKysKKysg ICAgIGVsc2UKKysgICAgICBsb2cubXNnKGxvZy5zY3JlZW4sIF8oc3RyaW5nLmZvcm1hdCgiJXMg ZmFpbGVkIHRvIGxvYWQiLCBzY3JpcHQuc2NyaXB0X25hbWUpKSkKKysgICAgICBsb2cubXNnKGxv Zy5lcnJvciwgImVycm9yIGxvYWRpbmcgIiAuLiBzY3JpcHQuc2NyaXB0X25hbWUpCisrICAgICAg bG9nLm1zZyhsb2cuZXJyb3IsICJlcnJvciBtZXNzYWdlOiAiIC4uIGVycikKKysgICAgZW5kCisr CisrICBlbHNlIC0tIHNjcmlwdCBpcyBhIGxpYiBhbmQgbG9hZGVkIGJ1dCBoaWRkZW4gYW5kIHRo ZSB1c2VyIHdhbnRzIHRvIHJlbG9hZAorKyAgICBzY3JpcHQuZGF0YS5yZXN0YXJ0KCkKKysgICAg c2NyaXB0LnJ1bm5pbmcgPSB0cnVlCisrICAgIHN0YXR1cyA9IHRydWUKKysgICAgcHJlZl93cml0 ZShzY3JpcHQuc2NyaXB0X25hbWUsICJib29sIiwgdHJ1ZSkKKysgIGVuZAorKyAgc2NyaXB0X21h bmFnZXJfcnVubmluZ19zY3JpcHQgPSAic2NyaXB0X21hbmFnZXIiCisrCisrICByZXN0b3JlX2xv Z19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgcmV0dXJuIHN0YXR1cworK2VuZAorKworK2xvY2Fs IGZ1bmN0aW9uIGRlYWN0aXZhdGUoc2NyaXB0KQorKyAgLS0gcHJlc2VudGx5IHRoZSBsdWEgYXBp IGRvZXNuJ3Qgc3VwcG9ydCB1bmxvYWRpbmcgbGliIGVsZW1lbnRzIGhvd2V2ZXIsIHdlCisrICAt LSAgIGNhbiBoaWRlIGxpYnMsIHNvIHdlIGp1c3QgbWFyayB0aG9zZSBhcyBoaWRkZW4gYW5kIGhp ZGUgdGhlIGd1aQorKyAgLS0gICBjYW4gZGVsZXRlIHN0b3JhZ2VzCisrICAtLSAgIGNhbiBkZWxl dGUgYWN0aW9ucworKyAgLS0gICBjYW4gZGVsZXRlIHNlbGVjdHMKKysgIC0tICAgYW5kIG1hcmsg dGhlbSBpbmFjdGl2ZSBmb3IgdGhlIG5leHQgdGltZSBkYXJrdGFibGUgc3RhcnRzCisrCisrICAt LSBkZWFjdGl2YXRlIGl0Li4uLgorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2 ZWwoc20ubG9nX2xldmVsKQorKworKyAgcHJlZl93cml0ZShzY3JpcHQuc2NyaXB0X25hbWUsICJi b29sIiwgZmFsc2UpCisrCisrICBpZiBzY3JpcHQuZGF0YSB0aGVuCisrCisrICAgIHNjcmlwdC5k YXRhLmRlc3Ryb3koKQorKworKyAgICBpZiBzY3JpcHQuZGF0YS5kZXN0cm95X21ldGhvZCB0aGVu CisrICAgICAgaWYgc3RyaW5nLm1hdGNoKHNjcmlwdC5kYXRhLmRlc3Ryb3lfbWV0aG9kLCAiaGlk ZSIpIHRoZW4KKysgICAgICAgIHNjcmlwdC5ydW5uaW5nID0gImhpZGRlbiIKKysgICAgICBlbHNl CisrICAgICAgICBwYWNrYWdlLmxvYWRlZFtzY3JpcHQuc2NyaXB0X25hbWVdID0gbmlsCisrICAg ICAgICBzY3JpcHQucnVubmluZyA9IGZhbHNlCisrICAgICAgZW5kCisrICAgIGVsc2UKKysgICAg ICBwYWNrYWdlLmxvYWRlZFtzY3JpcHQuc2NyaXB0X25hbWVdID0gbmlsCisrICAgICAgc2NyaXB0 LnJ1bm5pbmcgPSBmYWxzZQorKyAgICBlbmQKKysKKysgICAgbG9nLm1zZyhsb2cuaW5mbywgInR1 cm5lZCBvZmYgIiAuLiBzY3JpcHQuc2NyaXB0X25hbWUpCisrICAgIGxvZy5tc2cobG9nLnNjcmVl biwgXyhzdHJpbmcuZm9ybWF0KCIlcyBzdG9wcGVkIiwgc2NyaXB0Lm5hbWUpKSkKKysKKysgIGVs c2UKKysgICAgc2NyaXB0LnJ1bm5pbmcgPSBmYWxzZQorKworKyAgICBsb2cubXNnKGxvZy5pbmZv LCAic2V0dGluZyAiIC4uIHNjcmlwdC5zY3JpcHRfbmFtZSAuLiAiIHRvIG5vdCBzdGFydCIpCisr ICAgIGxvZy5tc2cobG9nLnNjcmVlbiwgXyhzdHJpbmcuZm9ybWF0KCIlcyB3aWxsIG5vdCBzdGFy dCB3aGVuIGRhcmt0YWJsZSBpcyByZXN0YXJ0ZWQiLCBzY3JpcHQubmFtZSkpKQorKyAgZW5kCisr CisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIHN0YXJ0X3NjcmlwdHMoKQorKyAgZm9yIF8sIHNjcmlwdCBpbiBpcGFpcnMoc20uc3Rh cnRfcXVldWUpIGRvCisrICAgIGFjdGl2YXRlKHNjcmlwdCkKKysgICAgZm9yIGkgPSAxLCBzbS5w YWdlX3N0YXR1cy5udW1fYnV0dG9ucyBkbworKyAgICAgIGxvY2FsIG5hbWUgPSBzY3JpcHQubWV0 YWRhdGEgYW5kIHNjcmlwdC5tZXRhZGF0YS5uYW1lIG9yIHNjcmlwdC5uYW1lCisrICAgICAgaWYg c20ud2lkZ2V0cy5sYWJlbHNbaV0ubGFiZWwgPT0gbmFtZSB0aGVuCisrICAgICAgICBzbS53aWRn ZXRzLmJ1dHRvbnNbaV0ubmFtZSA9ICJwYl9vbiIKKysgICAgICAgIGJyZWFrCisrICAgICAgZW5k CisrICAgIGVuZAorKyAgZW5kCisrICBzbS5zdGFydF9xdWV1ZSA9IHt9CisrZW5kCisrCisrbG9j YWwgZnVuY3Rpb24gcXVldWVfc2NyaXB0X3RvX3N0YXJ0KHNjcmlwdCkKKysgIHRhYmxlLmluc2Vy dChzbS5zdGFydF9xdWV1ZSwgc2NyaXB0KQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGFkZF9z Y3JpcHRfbmFtZShuYW1lLCBwYXRoLCBmb2xkZXIpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0g c2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgImZv bGRlciBpcyAiIC4uIGZvbGRlcikKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAibmFtZSBpcyAiIC4u IG5hbWUpCisrCisrICBsb2NhbCBzY3JpcHQgPSB7IAorKyAgICBuYW1lID0gbmFtZSwgCisrICAg IHBhdGggPSBmb2xkZXIgLi4gIi8iIC4uIHBhdGggLi4gbmFtZSwKKysgICAgcnVubmluZyA9IGZh bHNlLAorKyAgICBkb2MgPSBnZXRfc2NyaXB0X2RvYyhmb2xkZXIgLi4gIi8iIC4uIHBhdGggLi4g bmFtZSksCisrICAgIG1ldGFkYXRhID0gZ2V0X3NjcmlwdF9tZXRhZGF0YShmb2xkZXIgLi4gIi8i IC4uIHBhdGggLi4gbmFtZSksCisrICAgIHNjcmlwdF9uYW1lID0gZm9sZGVyIC4uICIvIiAuLiBu YW1lLAorKyAgICBkYXRhID0gbmlsCisrICB9CisrCisrICB0YWJsZS5pbnNlcnQoc20uc2NyaXB0 c1tmb2xkZXJdLCBzY3JpcHQpCisrCisrICBpZiBwcmVmX3JlYWQoc2NyaXB0LnNjcmlwdF9uYW1l LCAiYm9vbCIpIHRoZW4KKysgICAgcXVldWVfc2NyaXB0X3RvX3N0YXJ0KHNjcmlwdCkKKysgIGVs c2UKKysgICAgcHJlZl93cml0ZShzY3JpcHQuc2NyaXB0X25hbWUsICJib29sIiwgZmFsc2UpCisr ICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisr bG9jYWwgZnVuY3Rpb24gcHJvY2Vzc19zY3JpcHRfZGF0YShzY3JpcHRfZmlsZSkKKysgIGxvY2Fs IG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIC0tIHRo ZSBzY3JpcHQgZmlsZSBzdXBwbGllZCBpcyBmb2xkZXIvZmlsZW5hbWUuZmlsZXR5cGUKKysgIC0t IHRoZSBmb2xsb3dpbmcgcGF0dGVybiBzcGxpdHMgdGhlIHN0cmluZyBpbnRvIGZvbGRlciwgcGF0 aCwgbmFtZSwgZmlsZWVuYW1lLCBhbmQgZmlsZXR5cGUKKysgIC0tIGZvciBleGFtcGxlIGNvbnRy aWIvZ2ltcC5sdWEgYmVjb21lcworKyAgLS0gZm9sZGVyIC0gY29udHJpYgorKyAgLS0gcGF0aCAt IAorKyAgLS0gbmFtZSAtIGdpbXAubHVhCisrICAtLSBmaWxlbmFtZSAtIGdpbXAKKysgIC0tIGZp bGV0eXBlIC0gbHVhCisrCisrICAtLSBUaGFua3MgVG9iaWFzIEpha29icyBmb3IgdGhlIGF3ZXNv bWUgcmVndWxhcnkgZXhwcmVzc2lvbgorKworKyAgbG9jYWwgcGF0dGVybiA9ICIoLi0pLyguLSko KFteXFwvXS0pJS4/KFteJS5cXC9dKikpJCIKKysgIGlmIGR0LmNvbmZpZ3VyYXRpb24ucnVubmlu Z19vcyA9PSAid2luZG93cyIgdGhlbgorKyAgICAtLSBjaGFuZ2UgdGhlIHBhdGggc2VwYXJhdG9y IGZyb20gLyB0byBcIGZvciB3aW5kb3dzCisrICAgIHBhdHRlcm4gPSAiKC4tKVxcKC4tKSgoW15c XF0tKSUuPyhbXiUuXFxdKikpJCIKKysgIGVuZAorKworKyAgbG9nLm1zZyhsb2cuaW5mbywgInBy b2Nlc3NpbmcgIiAuLiBzY3JpcHRfZmlsZSkKKysKKysgIC0tIGFkZCB0aGUgc2NyaXB0IGRhdGEK KysgIGxvY2FsIGZvbGRlcixwYXRoLG5hbWUsZmlsZW5hbWUsZmlsZXR5cGUgPSBzdHJpbmcubWF0 Y2goc2NyaXB0X2ZpbGUsIHBhdHRlcm4pCisrCisrICBpZiBmb2xkZXIgYW5kIG5hbWUgYW5kIHBh dGggdGhlbgorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImZvbGRlciBpcyAiIC4uIGZvbGRlcikK KysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJuYW1lIGlzICIgLi4gbmFtZSkKKysKKysgICAgYWRk X3NjcmlwdF9mb2xkZXIoZm9sZGVyKQorKyAgICBhZGRfc2NyaXB0X25hbWUobmFtZSwgcGF0aCwg Zm9sZGVyKQorKyAgZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQor K2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGVuc3VyZV9saWJfaW5fc2VhcmNoX3BhdGgobGluZSkK KysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysK KysgIGxvZy5tc2cobG9nLmRlYnVnLCAibGluZSBpcyAiIC4uIGxpbmUpCisrCisrICBpZiBzdHJp bmcubWF0Y2gobGluZSwgZHMuc2FuaXRpemVfbHVhKGR0LmNvbmZpZ3VyYXRpb24uY29uZmlnX2Rp ciAuLiBQUyAuLiAibHVhL2xpYiIpKSB0aGVuCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCBsaW5l IC4uICIgaXMgYWxyZWFkeSBpbiBzZWFyY2ggcGF0aCwgcmV0dXJuaW5nLi4uIikKKysgICAgcmV0 dXJuCisrICBlbmQKKysKKysgIGxvY2FsIHBhdHRlcm4gPSAgZHQuY29uZmlndXJhdGlvbi5ydW5u aW5nX29zID09ICJ3aW5kb3dzIiBhbmQgICIoLispXFxsaWJcXC4rbHVhIiBvciAgIiguKykvbGli Ly4rbHVhIgorKyAgbG9jYWwgcGF0aCA9IHN0cmluZy5tYXRjaChsaW5lLCBwYXR0ZXJuKQorKwor KyAgbG9nLm1zZyhsb2cuZGVidWcsICJleHRyYWN0ZWQgcGF0aCBpcyAiIC4uIHBhdGgpCisrICBs b2cubXNnKGxvZy5kZWJ1ZywgInBhY2thZ2UucGF0aCBpcyAiIC4uIHBhY2thZ2UucGF0aCkKKysK KysgIGlmIG5vdCBzdHJpbmcubWF0Y2gocGFja2FnZS5wYXRoLCBkcy5zYW5pdGl6ZV9sdWEocGF0 aCkpIHRoZW4KKysKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJwYXRoIGlzbid0IGluIHBhY2th Z2UucGF0aCwgYWRkaW5nLi4uIikKKysKKysgICAgcGFja2FnZS5wYXRoID0gcGFja2FnZS5wYXRo IC4uICI7IiAuLiBwYXRoIC4uICIvPy5sdWEiCisrCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAi bmV3IHBhY2thZ2UucGF0aCBpcyAiIC4uIHBhY2thZ2UucGF0aCkKKysgIGVuZAorKworKyAgcmVz dG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBz Y2FuX3NjcmlwdHMoc2NyaXB0X2RpcikKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9n X2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvY2FsIHNjcmlwdF9jb3VudCA9IDAKKysgIGxv Y2FsIGZpbmRfY21kID0gImZpbmQgLUwgIiAuLiBzY3JpcHRfZGlyIC4uICIgLW5hbWUgXFwqLmx1 YSAtcHJpbnQgfCBzb3J0IgorKworKyAgaWYgZHQuY29uZmlndXJhdGlvbi5ydW5uaW5nX29zID09 ICJ3aW5kb3dzIiB0aGVuCisrICAgIGZpbmRfY21kID0gImRpciAvYi9zIFwiIiAuLiBzY3JpcHRf ZGlyIC4uICJcXCoubHVhXCIgMj5udWwgfCBzb3J0IgorKyAgZW5kCisrCisrICBsb2cubXNnKGxv Zy5kZWJ1ZywgImZpbmQgY29tbWFuZCBpcyAiIC4uIGZpbmRfY21kKQorKworKyAgLS0gc2NhbiB0 aGUgc2NyaXB0cworKyAgbG9jYWwgb3V0cHV0ID0gaW8ucG9wZW4oZmluZF9jbWQpCisrICBmb3Ig bGluZSBpbiBvdXRwdXQ6bGluZXMoKSBkbworKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImxpbmUg aXMgIiAuLiBsaW5lKQorKyAgICBsb2NhbCBzY3JpcHRfZGlyID0gU1lTVEVNX0xVQV9ESVIKKysg ICAgaWYgc3RyaW5nLm1hdGNoKGxpbmUsIGRzLnNhbml0aXplX2x1YShVU0VSX0xVQV9ESVIpKSB0 aGVuCisrICAgICAgc2NyaXB0X2RpciA9IFVTRVJfTFVBX0RJUgorKyAgICBlbmQKKysgICAgLS0g YWRkIGEgc3RyaW5nLm1hdGNoIHRvIGZpZ3VyZSBvdXQgd2hpY2ggbHVhIGRpciB0byB1c2UKKysg ICAgbG9jYWwgbCA9IHN0cmluZy5nc3ViKGxpbmUsIGRzLnNhbml0aXplX2x1YShzY3JpcHRfZGly KSAuLiBQUywgIiIpICAgLS0gc3RyaXAgdGhlIGx1YSBkaXIgb2ZmCisrICAgIGxvY2FsIHNjcmlw dF9maWxlID0gbDpzdWIoMSwtNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t IHN0cmlwIG9mZiAubHVhXG4KKysgICAgaWYgbm90IHN0cmluZy5tYXRjaChzY3JpcHRfZmlsZSwg InNjcmlwdF9tYW5hZ2VyIikgdGhlbiAgICAgICAgICAgLS0gbGV0J3Mgbm90IGluY2x1ZGUgb3Vy c2VsZgorKyAgICAgIGlmIG5vdCBzdHJpbmcubWF0Y2goc2NyaXB0X2ZpbGUsICJwbHVnaW5zIikg dGhlbiAgICAgICAgICAgICAgICAtLSBza2lwIHBsdWdpbnMKKysgICAgICAgIGlmIG5vdCBzdHJp bmcubWF0Y2goc2NyaXB0X2ZpbGUsICJsaWIiIC4uIFBTKSB0aGVuICAgICAgICAgICAgLS0gbGV0 J3Mgbm90IHRyeSBhbmQgcnVuIGxpYnJhcmllcworKyAgICAgICAgICBpZiBub3Qgc3RyaW5nLm1h dGNoKHNjcmlwdF9maWxlLCAiJS5naXQiKSB0aGVuICAgICAgICAgICAgICAtLSBkb24ndCBtYXRj aCBmaWxlcyBpbiB0aGUgLmdpdCBkaXJlY3RvcnkKKysgICAgICAgICAgICBwcm9jZXNzX3Njcmlw dF9kYXRhKHNjcmlwdF9maWxlKQorKyAgICAgICAgICAgIHNjcmlwdF9jb3VudCA9IHNjcmlwdF9j b3VudCArIDEKKysgICAgICAgICAgZW5kCisrICAgICAgICBlbHNlCisrICAgICAgICAgIGVuc3Vy ZV9saWJfaW5fc2VhcmNoX3BhdGgobGluZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t IGJ1dCBsZXQncyBtYWtlIHN1cmUgbGlicmFyaWVzIGNhbiBiZSBmb3VuZAorKyAgICAgICAgZW5k CisrICAgICAgZW5kCisrICAgIGVuZAorKyAgZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChv bGRfbG9nX2xldmVsKQorKyAgcmV0dXJuIHNjcmlwdF9jb3VudAorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIHVwZGF0ZV9zY3JpcHRzKCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9n X2xldmVsKHNtLmxvZ19sZXZlbCkKKysgIGxvY2FsIHJlc3VsdCA9IGZhbHNlCisrCisrICBsb2Nh bCBnaXQgPSBzbS5leGVjdXRhYmxlcy5naXQKKysKKysgIGlmIG5vdCBnaXQgdGhlbgorKyAgICBs b2cubXNnKGxvZy5zY3JlZW4sIF8oIkVSUk9SOiBnaXQgbm90IGZvdW5kLiAgSW5zdGFsbCBvciBz cGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgZ2l0IGV4ZWN1dGFibGUuIikpCisrICAgIHJldHVy bgorKyAgZW5kCisrCisrICBsb2NhbCBnaXRfY29tbWFuZCA9ICJjZCAiIC4uIExVQV9ESVIgLi4g IiAiIC4uIENTIC4uICIgIiAuLiBnaXQgLi4gIiBwdWxsIgorKyAgbG9nLm1zZyhsb2cuZGVidWcs ICJ1cGRhdGUgZ2l0IGNvbW1hbmQgaXMgIiAuLiBnaXRfY29tbWFuZCkKKysKKysgIGlmIGR0LmNv bmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAid2luZG93cyIgdGhlbgorKyAgICByZXN1bHQgPSBk dHN5cy53aW5kb3dzX2NvbW1hbmQoZ2l0X2NvbW1hbmQpCisrICBlbHNlCisrICAgIHJlc3VsdCA9 IG9zLmV4ZWN1dGUoZ2l0X2NvbW1hbmQpCisrICBlbmQKKysKKysgIGlmIHJlc3VsdCA9PSAwIHRo ZW4KKysgICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBfKCJsdWEgc2NyaXB0cyBzdWNjZXNzZnVsbHkg dXBkYXRlZCIpKQorKyAgZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVs KQorKyAgcmV0dXJuIHJlc3VsdAorK2VuZAorKworKy0tLS0tLS0tLS0tLS0tCisrLS0gVUkgaGFu ZGxpbmcKKystLS0tLS0tLS0tLS0tLQorKworK2xvY2FsIGZ1bmN0aW9uIHVwZGF0ZV9zY3JpcHRf dXBkYXRlX2Nob2ljZXMoKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwo c20ubG9nX2xldmVsKQorKworKyAgbG9jYWwgaW5zdGFsbHMgPSB7fQorKyAgbG9jYWwgcHJlZl9z dHJpbmcgPSAiIgorKworKyAgZm9yIGksIHJlcG8gaW4gaXBhaXJzKHNtLmluc3RhbGxlZF9yZXBv c2l0b3JpZXMpIGRvCisrICAgIHRhYmxlLmluc2VydChpbnN0YWxscywgcmVwby5uYW1lKQorKyAg ICBpZiBub3Qgc3RyaW5nLm1hdGNoKHByZWZfc3RyaW5nLCBkcy5zYW5pdGl6ZV9sdWEocmVwby5u YW1lKSkgdGhlbgorKyAgICAgIHByZWZfc3RyaW5nID0gcHJlZl9zdHJpbmcgLi4gaSAuLiAiLCIg Li4gcmVwby5uYW1lIC4uICIsIiAuLiByZXBvLmRpcmVjdG9yeSAuLiAiLCIKKysgICAgZW5kCisr ICBlbmQKKysKKysgIHVwZGF0ZV9jb21ib2JveF9jaG9pY2VzKHNtLndpZGdldHMudXBkYXRlX3Nj cmlwdF9jaG9pY2VzLCBpbnN0YWxscywgMSkKKysKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAicmVw byBwcmVmIHN0cmluZyBpcyAiIC4uIHByZWZfc3RyaW5nKQorKyAgcHJlZl93cml0ZSgiaW5zdGFs bGVkX3JlcG9zIiwgInN0cmluZyIsIHByZWZfc3RyaW5nKQorKworKyAgcmVzdG9yZV9sb2dfbGV2 ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBzY2FuX3JlcG9zaXRv cmllcygpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2 ZWwpCisrCisrICBsb2NhbCBzY3JpcHRfY291bnQgPSAwCisrICBsb2NhbCBmaW5kX2NtZCA9ICJm aW5kIC1MICIgLi4gTFVBX0RJUiAuLiAiIC1uYW1lIFxcKi5naXQgLXByaW50IHwgc29ydCIKKysK KysgIGlmIGR0LmNvbmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAid2luZG93cyIgdGhlbgorKyAg ICBmaW5kX2NtZCA9ICJkaXIgL2IvcyAvYTpkICIgLi4gTFVBX0RJUiAuLiBQUyAuLiAiKi5naXQg Mj5udWwgfCBzb3J0IgorKyAgZW5kCisrCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgImZpbmQgY29t bWFuZCBpcyAiIC4uIGZpbmRfY21kKQorKworKyAgbG9jYWwgb3V0cHV0ID0gaW8ucG9wZW4oZmlu ZF9jbWQpCisrCisrICBmb3IgbGluZSBpbiBvdXRwdXQ6bGluZXMoKSBkbworKyAgICBsb2NhbCBs ID0gc3RyaW5nLmdzdWIobGluZSwgZHMuc2FuaXRpemVfbHVhKExVQV9ESVIpIC4uIFBTLCAiIikg ICAtLSBzdHJpcCB0aGUgbHVhIGRpciBvZmYKKysgICAgbG9jYWwgZm9sZGVyID0gc3RyaW5nLm1h dGNoKGwsICIoLi0pIiAuLiBQUykgICAgICAgICAgICAgICAgICAgICAgICAtLSBnZXQgZXZlcnl0 aGluZyB0byB0aGUgZmlyc3QgLworKworKyAgICBpZiBmb2xkZXIgdGhlbiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBpZiB3ZSBoYXZlIGEgZm9sZGVy ICguZ2l0IGRvZXNuJ3QpCisrCisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJmb3VuZCBmb2xk ZXIgIiAuLiBmb2xkZXIpCisrCisrICAgICAgaWYgbm90IHN0cmluZy5tYXRjaChmb2xkZXIsICJw bHVnaW5zIikgYW5kIG5vdCBzdHJpbmcubWF0Y2goZm9sZGVyLCAiJS5naXQiKSB0aGVuIC0tIHNr aXAgcGx1Z2lucworKworKyAgICAgICAgaWYgI3NtLmluc3RhbGxlZF9yZXBvc2l0b3JpZXMgPT0g MSB0aGVuCisrICAgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAib25seSAxIHJlcG8sIGFkZGlu ZyAiIC4uIGZvbGRlcikKKysgICAgICAgICAgdGFibGUuaW5zZXJ0KHNtLmluc3RhbGxlZF9yZXBv c2l0b3JpZXMsIHtuYW1lID0gZm9sZGVyLCBkaXJlY3RvcnkgPSBMVUFfRElSIC4uIFBTIC4uIGZv bGRlcn0pCisrICAgICAgICBlbHNlCisrICAgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAibW9y ZSB0aGFuIDEgcmVwbywgd2UgaGF2ZSB0byBzZWFyY2ggdGhlIHJlcG9zIHRvIG1ha2Ugc3VyZSBp dCdzIG5vdCB0aGVyZSIpCisrICAgICAgICAgIGxvY2FsIGZvdW5kID0gbmlsCisrCisrICAgICAg ICAgIGZvciBfLCByZXBvIGluIGlwYWlycyhzbS5pbnN0YWxsZWRfcmVwb3NpdG9yaWVzKSBkbwor KyAgICAgICAgICAgIGlmIHN0cmluZy5tYXRjaChyZXBvLm5hbWUsIGRzLnNhbml0aXplX2x1YShm b2xkZXIpKSB0aGVuCisrICAgICAgICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm1hdGNoZWQg IiAuLiByZXBvLm5hbWUpCisrICAgICAgICAgICAgICBmb3VuZCA9IHRydWUKKysgICAgICAgICAg ICAgIGJyZWFrCisrICAgICAgICAgICAgZW5kCisrICAgICAgICAgIGVuZAorKworKyAgICAgICAg ICBpZiBub3QgZm91bmQgdGhlbgorKyAgICAgICAgICAgIHRhYmxlLmluc2VydChzbS5pbnN0YWxs ZWRfcmVwb3NpdG9yaWVzLCB7bmFtZSA9IGZvbGRlciwgZGlyZWN0b3J5ID0gTFVBX0RJUiAuLiBQ UyAuLiBmb2xkZXJ9KQorKyAgICAgICAgICBlbmQKKysKKysgICAgICAgIGVuZAorKyAgICAgIGVu ZAorKyAgICBlbmQKKysgIGVuZAorKworKyAgdXBkYXRlX3NjcmlwdF91cGRhdGVfY2hvaWNlcygp CisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2Fs IGZ1bmN0aW9uIGluc3RhbGxfc2NyaXB0cygpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0 X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2NhbCB1cmwgPSBzbS53aWRnZXRzLnNj cmlwdF91cmwudGV4dAorKyAgbG9jYWwgZm9sZGVyID0gc20ud2lkZ2V0cy5uZXdfZm9sZGVyLnRl eHQKKysKKysgIGlmIG5vdCBkZi50ZXN0X2ZpbGUoVVNFUl9MVUFfRElSLCAiZCIpIHRoZW4KKysg ICAgZGYubWtkaXIoVVNFUl9MVUFfRElSKQorKyAgICBpZiBub3QgZGYudGVzdF9maWxlKFVTRVJf TFVBX0RJUiwgImQiKSB0aGVuCisrICAgICAgbG9nLm1zZyhsb2cuZXJyb3IsICJ1bmFibGUgdG8g Y3JlYXRlIHVzZXIgbHVhIGRpcmVjdG9yeSIpCisrICAgICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBf KCJ1bmFibGUgdG8gY3JlYXRlIHVzZXIgbHVhIGRpcmVjdG9yeSwgaW5zdGFsbGluZyBhZGRpdGlv bmFsIHNjcmlwdHMgZmFpbGVkIikpCisrICAgICAgcmV0dXJuCisrICAgIGVuZAorKyAgZW5kCisr CisrICBpZiBzdHJpbmcubWF0Y2goZHUuam9pbihzbS5mb2xkZXJzLCAiICIpLCBkcy5zYW5pdGl6 ZV9sdWEoZm9sZGVyKSkgdGhlbgorKyAgICBsb2cubXNnKGxvZy5zY3JlZW4sIHN0cmluZy5mb3Jt YXQoXygiZm9sZGVyICVzIGlzIGFscmVhZHkgaW4gdXNlLiBQbGVhc2Ugc3BlY2lmeSBhIGRpZmZl cmVudCBmb2xkZXIgbmFtZS4iKSwgZm9sZGVyKSkKKysgICAgbG9nLm1zZyhsb2cuZXJyb3IsICJm b2xkZXIgIiAuLiBmb2xkZXIgLi4gIiBhbHJlYWR5IGV4aXN0cywgcmV0dXJuaW5nLi4uIikKKysg ICAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKysgICAgcmV0dXJuCisrICBlbmQK KysKKysgIGxvY2FsIHJlc3VsdCA9IGZhbHNlCisrCisrICBsb2NhbCBnaXQgPSBzbS5leGVjdXRh Ymxlcy5naXQKKysKKysgIGlmIG5vdCBnaXQgdGhlbgorKyAgICBsb2cubXNnKGxvZy5zY3JlZW4s IF8oIkVSUk9SOiBnaXQgbm90IGZvdW5kLiAgSW5zdGFsbCBvciBzcGVjaWZ5IHRoZSBsb2NhdGlv biBvZiB0aGUgZ2l0IGV4ZWN1dGFibGUuIikpCisrICAgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9s b2dfbGV2ZWwpCisrICAgIHJldHVybgorKyAgZW5kCisrCisrICBsb2NhbCBnaXRfY29tbWFuZCA9 ICJjZCAiIC4uIFVTRVJfTFVBX0RJUiAuLiAiICIgLi4gQ1MgLi4gIiAiIC4uIGdpdCAuLiAiIGNs b25lICIgLi4gdXJsIC4uICIgIiAuLiBmb2xkZXIKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAidXBk YXRlIGdpdCBjb21tYW5kIGlzICIgLi4gZ2l0X2NvbW1hbmQpCisrCisrICBpZiBkdC5jb25maWd1 cmF0aW9uLnJ1bm5pbmdfb3MgPT0gIndpbmRvd3MiIHRoZW4KKysgICAgcmVzdWx0ID0gZHRzeXMu d2luZG93c19jb21tYW5kKGdpdF9jb21tYW5kKQorKyAgZWxzZQorKyAgICByZXN1bHQgPSBkdHN5 cy5leHRlcm5hbF9jb21tYW5kKGdpdF9jb21tYW5kKQorKyAgZW5kCisrCisrICBsb2cubXNnKGxv Zy5pbmZvLCAicmVzdWx0IGZyb20gaW1wb3J0IGlzICIgLi4gcmVzdWx0KQorKworKyAgaWYgcmVz dWx0ID09IDAgdGhlbgorKyAgICBsb2NhbCBjb3VudCA9IHNjYW5fc2NyaXB0cyhVU0VSX0xVQV9E SVIpCisrCisrICAgIGlmIGNvdW50ID4gMCB0aGVuCisrICAgICAgdXBkYXRlX2NvbWJvYm94X2No b2ljZXMoc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3IsIHNtLmZvbGRlcnMsIHNtLndpZGdldHMu Zm9sZGVyX3NlbGVjdG9yLnNlbGVjdGVkKQorKyAgICAgIGR0LnByaW50KHN0cmluZy5mb3JtYXQo Xygic2NyaXB0cyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGludG8gZm9sZGVyICVzIiksIGZvbGRl cikpCisrICAgICAgdGFibGUuaW5zZXJ0KHNtLmluc3RhbGxlZF9yZXBvc2l0b3JpZXMsIHtuYW1l ID0gZm9sZGVyLCBkaXJlY3RvcnkgPSBVU0VSX0xVQV9ESVIgLi4gUFMgLi4gZm9sZGVyfSkKKysg ICAgICB1cGRhdGVfc2NyaXB0X3VwZGF0ZV9jaG9pY2VzKCkKKysKKysgICAgICBmb3IgaSA9IDEs ICNzbS53aWRnZXRzLmZvbGRlcl9zZWxlY3RvciBkbworKyAgICAgICAgaWYgc3RyaW5nLm1hdGNo KHNtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yW2ldLCBkcy5zYW5pdGl6ZV9sdWEoZm9sZGVyKSkg dGhlbgorKyAgICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgInNldHRpbmcgZm9sZGVyIHNlbGVj dG9yIHRvICIgLi4gaSkKKysgICAgICAgICAgc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3Iuc2Vs ZWN0ZWQgPSBpCisrICAgICAgICAgIGJyZWFrCisrICAgICAgICBlbmQKKysgICAgICAgIGkgPSBp ICsgMQorKyAgICAgIGVuZAorKworKyAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiY2xlYXJpbmcg dGV4dCBmaWVsZHMiKQorKyAgICAgIHNtLndpZGdldHMuc2NyaXB0X3VybC50ZXh0ID0gIiIKKysg ICAgICBzbS53aWRnZXRzLm5ld19mb2xkZXIudGV4dCA9ICIiCisrICAgICAgc20ud2lkZ2V0cy5t YWluX21lbnUuc2VsZWN0ZWQgPSAzCisrICAgIGVsc2UKKysgICAgICBsb2cubXNnKGxvZy5zY3Jl ZW4sIF8oIm5vIHNjcmlwdHMgZm91bmQgdG8gaW5zdGFsbCIpKQorKyAgICAgIGxvZy5tc2cobG9n LmVycm9yLCAic2Nhbl9zY3JpcHRzIHJldHVybmVkICIgLi4gY291bnQgLi4gIiBzY3JpcHRzIGZv dW5kLiAgTm90IGFkZGluZyB0byBmb2xkZXJfc2VsZWN0b3IiKQorKyAgICBlbmQKKysKKysgIGVs c2UKKysgICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBfKCJmYWlsZWQgdG8gZG93bmxvYWQgc2NyaXB0 cyIpKQorKyAgZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAg cmV0dXJuIHJlc3VsdAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGNsZWFyX2J1dHRvbihudW1i ZXIpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwp CisrCisrICBsb2NhbCBidXR0b24gPSBzbS53aWRnZXRzLmJ1dHRvbnNbbnVtYmVyXQorKyAgbG9j YWwgbGFiZWwgPSBzbS53aWRnZXRzLmxhYmVsc1tudW1iZXJdCisrCisrICBidXR0b24uaW1hZ2Ug PSBCTEFOS19JQ09OCisrICBidXR0b24udG9vbHRpcCA9ICIiCisrICBidXR0b24uc2Vuc2l0aXZl ID0gZmFsc2UKKysgIGxhYmVsLmxhYmVsID0gIiIKKysgIGJ1dHRvbi5uYW1lID0gIiIKKysKKysg IHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rp b24gZmluZF9zY3JpcHQoZm9sZGVyLCBuYW1lKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNl dF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJsb29r aW5nIGZvciBzY3JpcHQgIiAuLiBuYW1lIC4uICIgaW4gZm9sZGVyICIgLi4gZm9sZGVyKQorKwor KyAgZm9yIF8sIHNjcmlwdCBpbiBpcGFpcnMoc20uc2NyaXB0c1tmb2xkZXJdKSBkbworKyAgICBp ZiBzdHJpbmcubWF0Y2goc2NyaXB0Lm5hbWUsICJeIiAuLiBkcy5zYW5pdGl6ZV9sdWEobmFtZSkg Li4gIiQiKSB0aGVuCisrICAgICAgcmV0dXJuIHNjcmlwdAorKyAgICBlbmQKKysgIGVuZAorKwor KyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKysgIHJldHVybiBuaWwKKytlbmQK KysKKytsb2NhbCBmdW5jdGlvbiBwb3B1bGF0ZV9idXR0b25zKGZvbGRlciwgZmlyc3QsIGxhc3Qp CisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisr CisrICBsb2cubXNnKGxvZy5kZWJ1ZywgImZvbGRlciBpcyAiIC4uIGZvbGRlciAuLiAiIGFuZCBm aXJzdCBpcyAiIC4uIGZpcnN0IC4uICIgYW5kIGxhc3QgaXMgIiAuLiBsYXN0KQorKworKyAgbG9j YWwgYnV0dG9uX251bSA9IDEKKysKKysgIGZvciBpID0gZmlyc3QsIGxhc3QgZG8KKysgICAgbG9j YWwgc2NyaXB0ID0gc20uc2NyaXB0c1tmb2xkZXJdW2ldCisrICAgIGxvY2FsIGJ1dHRvbiA9IHNt LndpZGdldHMuYnV0dG9uc1tidXR0b25fbnVtXQorKyAgICBsb2NhbCBsYWJlbCA9IHNtLndpZGdl dHMubGFiZWxzW2J1dHRvbl9udW1dCisrCisrICAgIGlmIHNjcmlwdC5ydW5uaW5nID09IHRydWUg dGhlbgorKyAgICAgIGJ1dHRvbi5uYW1lID0gInBiX29uIgorKyAgICBlbHNlCisrICAgICAgYnV0 dG9uLm5hbWUgPSAicGJfb2ZmIgorKyAgICBlbmQKKysKKysgICAgYnV0dG9uLmltYWdlID0gUE9X RVJfSUNPTgorKyAgICBsYWJlbC5sYWJlbCA9IHNjcmlwdC5tZXRhZGF0YSBhbmQgc2NyaXB0Lm1l dGFkYXRhLm5hbWUgb3Igc2NyaXB0Lm5hbWUKKysgICAgbGFiZWwubmFtZSA9ICJwYl9sYWJlbCIK KysgICAgYnV0dG9uLmVsbGlwc2l6ZSA9ICJlbmQiCisrICAgIGJ1dHRvbi5zZW5zaXRpdmUgPSB0 cnVlCisrICAgIGxhYmVsLnRvb2x0aXAgPSBzY3JpcHQubWV0YWRhdGEgYW5kIHNjcmlwdC5tZXRh ZGF0YS5wdXJwb3NlIG9yIHNjcmlwdC5kb2MKKysKKysgICAgYnV0dG9uLmNsaWNrZWRfY2FsbGJh Y2sgPSBmdW5jdGlvbiAodGhpcykKKysgICAgICBsb2NhbCBjYl9zY3JpcHQgPSBzY3JpcHQKKysg ICAgICBsb2NhbCBzdGF0ZSA9IG5pbAorKyAgICAgIGlmIGNiX3NjcmlwdCB0aGVuIAorKyAgICAg ICAgbG9nLm1zZyhsb2cuZGVidWcsICJmb3VuZCBzY3JpcHQgIiAuLiBjYl9zY3JpcHQubmFtZSAu LiAiIHdpdGggcGF0aCAiIC4uIGNiX3NjcmlwdC5wYXRoKQorKyAgICAgICAgaWYgY2Jfc2NyaXB0 LnJ1bm5pbmcgPT0gdHJ1ZSB0aGVuCisrICAgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiZGVh Y3RpdmF0aW5nICIgLi4gY2Jfc2NyaXB0Lm5hbWUgLi4gIiBvbiAiIC4uIGNiX3NjcmlwdC5wYXRo KQorKyAgICAgICAgICBkZWFjdGl2YXRlKGNiX3NjcmlwdCkKKysgICAgICAgICAgdGhpcy5uYW1l ID0gInBiX29mZiIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgbG9nLm1zZyhsb2cuZGVidWcs ICJhY3RpdmF0aW5nICIgLi4gY2Jfc2NyaXB0Lm5hbWUgLi4gIiBvbiAiIC4uIHNjcmlwdC5wYXRo KQorKyAgICAgICAgICBsb2NhbCByZXN1bHQgPSBhY3RpdmF0ZShjYl9zY3JpcHQpCisrICAgICAg ICAgIGlmIHJlc3VsdCB0aGVuCisrICAgICAgICAgICAgdGhpcy5uYW1lID0gInBiX29uIgorKyAg ICAgICAgICBlbmQKKysgICAgICAgIGVuZAorKyAgICAgIGVuZAorKyAgICBlbmQKKysKKysgICAg YnV0dG9uX251bSA9IGJ1dHRvbl9udW0gKyAxCisrICBlbmQKKysKKysgIGxvZy5tc2cobG9nLmRl YnVnLCAiYnV0dG9uIG51bSBpcyAiIC4uIGJ1dHRvbl9udW0gLi4gIiBhbmQgbnVtX2J1dHRvbnMg aXMgIiAuLiBzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucykKKysgIGlmIGJ1dHRvbl9udW0gPD0g c20ucGFnZV9zdGF0dXMubnVtX2J1dHRvbnMgdGhlbgorKyAgICBmb3IgaSA9IGJ1dHRvbl9udW0s IHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0b25zIGRvCisrICAgICAgY2xlYXJfYnV0dG9uKGkpCisr ICAgIGVuZAorKyAgZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQor K2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHBhZ2luYXRlKGRpcmVjdGlvbikKKysgIGxvY2FsIG9s ZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvY2FsIGZv bGRlciA9IHNtLnBhZ2Vfc3RhdHVzLmZvbGRlcgorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJmb2xk ZXIgaXMgIiAuLiBmb2xkZXIpCisrCisrICBsb2NhbCBudW1fc2NyaXB0cyA9ICNzbS5zY3JpcHRz W2ZvbGRlcl0KKysgIGxvZy5tc2cobG9nLmRlYnVnLCAibnVtX3NjcmlwdHMgaXMgIiAuLiBudW1f c2NyaXB0cykKKysKKysgIGxvY2FsIG1heF9wYWdlcyA9IG1hdGguY2VpbChudW1fc2NyaXB0cyAv IHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0b25zKQorKworKyAgbG9jYWwgY3VyX3BhZ2UgPSBzbS5w YWdlX3N0YXR1cy5jdXJyZW50X3BhZ2UKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAibWF4IHBhZ2Vz IGlzICIgLi4gbWF4X3BhZ2VzKQorKworKyAgbG9jYWwgYnV0dG9uc19uZWVkZWQgPSBuaWwKKysg IGxvY2FsIGZpcnN0ID0gbmlsCisrICBsb2NhbCBsYXN0ID0gbmlsCisrCisrICBpZiBkaXJlY3Rp b24gPT0gMCB0aGVuCisrICAgIGN1cl9wYWdlID0gY3VyX3BhZ2UgLSAxCisrICAgIGlmIGN1cl9w YWdlIDwgMSB0aGVuCisrICAgICAgY3VyX3BhZ2UgPSAxCisrICAgIGVuZAorKyAgZWxzZWlmIGRp cmVjdGlvbiA9PSAxIHRoZW4KKysgICAgY3VyX3BhZ2UgPSBjdXJfcGFnZSArIDEKKysgICAgaWYg Y3VyX3BhZ2UgPiBtYXhfcGFnZXMgdGhlbgorKyAgICAgIGN1cl9wYWdlID0gbWF4X3BhZ2VzCisr ICAgIGVuZAorKyAgZWxzZQorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgInRvb2sgcGF0aCAyIikK KysgICAgY3VyX3BhZ2UgPSAxCisrICBlbmQKKysKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAiY3Vy X3BhZ2UgaXMgIiAuLiBjdXJfcGFnZSAuLiAiIGFuZCBtYXhfcGFnZXMgaXMgIiAuLiBtYXhfcGFn ZXMpCisrCisrICBpZiBjdXJfcGFnZSA9PSBtYXhfcGFnZXMgYW5kIGN1cl9wYWdlID09IDEgdGhl bgorKyAgICBzbS53aWRnZXRzLnBhZ2VfZm9yd2FyZC5zZW5zaXRpdmUgPSBmYWxzZQorKyAgICBz bS53aWRnZXRzLnBhZ2VfYmFjay5zZW5zaXRpdmUgPSBmYWxzZQorKyAgZWxzZWlmIGN1cl9wYWdl ID09IG1heF9wYWdlcyB0aGVuCisrICAgIHNtLndpZGdldHMucGFnZV9mb3J3YXJkLnNlbnNpdGl2 ZSA9IGZhbHNlCisrICAgIHNtLndpZGdldHMucGFnZV9iYWNrLnNlbnNpdGl2ZSA9IHRydWUKKysg IGVsc2VpZiBjdXJfcGFnZSA9PSAxIHRoZW4KKysgICAgc20ud2lkZ2V0cy5wYWdlX2ZvcndhcmQu c2Vuc2l0aXZlID0gdHJ1ZQorKyAgICBzbS53aWRnZXRzLnBhZ2VfYmFjay5zZW5zaXRpdmUgPSBm YWxzZQorKyAgZWxzZQorKyAgICBzbS53aWRnZXRzLnBhZ2VfZm9yd2FyZC5zZW5zaXRpdmUgPSB0 cnVlCisrICAgIHNtLndpZGdldHMucGFnZV9iYWNrLnNlbnNpdGl2ZSA9IHRydWUKKysgIGVuZAor KworKyAgc20ucGFnZV9zdGF0dXMuY3VycmVudF9wYWdlID0gY3VyX3BhZ2UKKysKKysgIGZpcnN0 ID0gKGN1cl9wYWdlICogc20ucGFnZV9zdGF0dXMubnVtX2J1dHRvbnMpIC0gKHNtLnBhZ2Vfc3Rh dHVzLm51bV9idXR0b25zIC0gMSkKKysKKysgIGlmIGZpcnN0ICsgc20ucGFnZV9zdGF0dXMubnVt X2J1dHRvbnMgPiBudW1fc2NyaXB0cyB0aGVuCisrICAgIGxhc3QgPSBudW1fc2NyaXB0cworKyAg ZWxzZQorKyAgICBsYXN0ID0gZmlyc3QgKyBzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucyAtIDEK KysgIGVuZAorKworKyAgc20ud2lkZ2V0cy5wYWdlX3N0YXR1cy5sYWJlbCA9IHN0cmluZy5mb3Jt YXQoXygicGFnZSAlZCBvZiAlZCIpLCBjdXJfcGFnZSwgbWF4X3BhZ2VzKQorKworKyAgcG9wdWxh dGVfYnV0dG9ucyhmb2xkZXIsIGZpcnN0LCBsYXN0KQorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwo b2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBjaGFuZ2VfZm9sZGVyKGZv bGRlcikKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZl bCkKKysKKysgIGlmIG5vdCBmb2xkZXIgdGhlbgorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZyAic2V0 dGluZyBmb2xkZXIgdG8gc2VsZWN0b3IgdmFsdWUgIiAuLiAgc20ud2lkZ2V0cy5mb2xkZXJfc2Vs ZWN0b3IudmFsdWUpCisrICAgIHNtLnBhZ2Vfc3RhdHVzLmZvbGRlciA9IHNtLndpZGdldHMuZm9s ZGVyX3NlbGVjdG9yLnZhbHVlCisrICBlbHNlCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0 dGluZyBjYXRnb3J5IHRvIGFyZ3VtZW50ICIgLi4gZm9sZGVyKQorKyAgICBzbS5wYWdlX3N0YXR1 cy5mb2xkZXIgPSBmb2xkZXIKKysgIGVuZAorKworKyAgcGFnaW5hdGUoMikKKysKKysgIHJlc3Rv cmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gY2hh bmdlX251bV9idXR0b25zKCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVs KHNtLmxvZ19sZXZlbCkKKysKKysgIGN1cl9idXR0b25zID0gc20ucGFnZV9zdGF0dXMubnVtX2J1 dHRvbnMKKysgIG5ld19idXR0b25zID0gc20ud2lkZ2V0cy5udW1fYnV0dG9ucy52YWx1ZQorKwor KyAgcHJlZl93cml0ZSgibnVtX2J1dHRvbnMiLCAiaW50ZWdlciIsIG5ld19idXR0b25zKQorKwor KyAgaWYgbmV3X2J1dHRvbnMgPCBjdXJfYnV0dG9ucyB0aGVuCisrICAgIGxvZy5tc2cobG9nLmRl YnVnLCAidG9vayBuZXcgaXMgbGVzcyB0aGFuIGN1cnJlbnQgYnJhbmNoIikKKysKKysgICAgZm9y IGkgPSAxLCBjdXJfYnV0dG9ucyAtIG5ld19idXR0b25zIGRvCisrICAgICAgdGFibGUucmVtb3Zl KHNtLndpZGdldHMuc2NyaXB0cykKKysgICAgZW5kCisrCisrICAgIGxvZy5tc2cobG9nLmRlYnVn LCAiZmluaXNoZWQgcmVtb3Zpbmcgd2lkZ2V0cywgbm93IHRoZXJlIGFyZSAiIC4uICNzbS53aWRn ZXRzLmJ1dHRvbnMpCisrICBlbHNlaWYgbmV3X2J1dHRvbnMgPiBjdXJfYnV0dG9ucyB0aGVuCisr ICAgIGxvZy5tc2cobG9nLmRlYnVnLCAidG9vayBuZXcgaXMgZ3JlYXRlciB0aGFuIGN1cnJlbnQg YnJhbmNoIikKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJudW1iZXIgb2Ygc2NyaXB0cyBpcyAi IC4uICNzbS53aWRnZXRzLnNjcmlwdHMpCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAibnVtYmVy IG9mIGJ1dHRvbnMgaXMgIiAuLiAjc20ud2lkZ2V0cy5idXR0b25zKQorKyAgICBsb2cubXNnKGxv Zy5kZWJ1ZywgIm51bWJlciBvZiBsYWJlbHMgaXMgIiAuLiAjc20ud2lkZ2V0cy5sYWJlbHMpCisr ICAgIGxvZy5tc2cobG9nLmRlYnVnLCAibnVtYmVyIG9mIGJveGVzIGlzICIgLi4gI3NtLndpZGdl dHMuYm94ZXMpCisrCisrICAgIGlmIG5ld19idXR0b25zID4gc20ucGFnZV9zdGF0dXMuYnV0dG9u c19jcmVhdGVkIHRoZW4KKysKKysgICAgICBmb3IgaSA9IHNtLnBhZ2Vfc3RhdHVzLmJ1dHRvbnNf Y3JlYXRlZCArIDEsIG5ld19idXR0b25zIGRvCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1Zywg ImkgaXMgIiAuLiBpKQorKyAgICAgICAgdGFibGUuaW5zZXJ0KHNtLndpZGdldHMuYnV0dG9ucywg ZHQubmV3X3dpZGdldCgiYnV0dG9uIil7fSkKKysgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAi aW5zZXJ0ZWQgbmV3IGJ1dHRvbiIpCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm51bWJl ciBvZiBidXR0b25zIGlzICIgLi4gI3NtLndpZGdldHMuYnV0dG9ucykKKysgICAgICAgIHRhYmxl Lmluc2VydChzbS53aWRnZXRzLmxhYmVscywgZHQubmV3X3dpZGdldCgibGFiZWwiKXt9KQorKyAg ICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJpbnNlcnRlZCBuZXcgbGFiZWwiKQorKyAgICAgICAg bG9nLm1zZyhsb2cuZGVidWcsICJudW1iZXIgb2YgbGFiZWxzIGlzICIgLi4gI3NtLndpZGdldHMu bGFiZWxzKQorKyAgICAgICAgdGFibGUuaW5zZXJ0KHNtLndpZGdldHMuYm94ZXMsIGR0Lm5ld193 aWRnZXQoImJveCIpeyBvcmllbnRhdGlvbiA9ICJob3Jpem9udGFsIiwgZXhwYW5kID0gZmFsc2Us IGZpbGwgPSBmYWxzZSwgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNtLndpZGdldHMuYnV0dG9uc1tpXSwgc20ud2lkZ2V0cy5sYWJlbHNb aV19KQorKyAgICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJpbnNlcnRlZCBuZXcgYm94IikKKysg ICAgICAgIHNtLnBhZ2Vfc3RhdHVzLmJ1dHRvbnNfY3JlYXRlZCA9IHNtLnBhZ2Vfc3RhdHVzLmJ1 dHRvbnNfY3JlYXRlZCArIDEKKysgICAgICBlbmQKKysKKysgICAgZW5kCisrCisrICAgIGxvZy5t c2cobG9nLmRlYnVnLCAiY3VyX2J1dHRvbnMgaXMgIiAuLiBjdXJfYnV0dG9ucyAuLiAiIGFuZCBu ZXdfYnV0dG9ucyBpcyAiIC4uIG5ld19idXR0b25zKQorKyAgICBsb2cubXNnKGxvZy5kZWJ1Zywg I3NtLndpZGdldHMuYnV0dG9ucyAuLiAiIGJ1dHRvbnMgYXJlIGF2YWlsYWJsZSIpCisrCisrICAg IGZvciBpID0gY3VyX2J1dHRvbnMgKyAxLCBuZXdfYnV0dG9ucyBkbworKyAgICAgIGxvZy5tc2co bG9nLmRlYnVnLCAiaW5zZXJ0aW5nIGJ1dHRvbiAiIC4uIGkgLi4gIiBpbnRvIHNjcmlwdHMgd2lk Z2V0IikKKysgICAgICB0YWJsZS5pbnNlcnQoc20ud2lkZ2V0cy5zY3JpcHRzLCBzbS53aWRnZXRz LmJveGVzW2ldKQorKyAgICBlbmQKKysKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJmaW5pc2hl ZCBhZGRpbmcgd2lkZ2V0cywgbm93IHRoZXJlIGFyZSAiIC4uICNzbS53aWRnZXRzLmJ1dHRvbnMp CisrICBlbHNlIC0tIG5vIGNoYW5nZQorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm5vIGNoYW5n ZSwganVzdCByZXR1cm5pbmciKQorKyAgICByZXR1cm4KKysgIGVuZAorKworKyAgc20ucGFnZV9z dGF0dXMubnVtX2J1dHRvbnMgPSBuZXdfYnV0dG9ucworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJu dW1fYnV0dG9ucyBzZXQgdG8gIiAuLiBzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucykKKysgIHBh Z2luYXRlKDIpIC0tIGZvcmNlIHRoZSBidXR0b25zIHRvIHJlcG9wdWxhdGUKKysgIHNtLndpZGdl dHMubWFpbl9tZW51LnNlbGVjdGVkID0gMyAtLSBqdW1wIGJhY2sgdG8gc3RhcnQvc3RvcCBzY3Jp cHRzCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xv Y2FsIGZ1bmN0aW9uIGxvYWRfcHJlZmVyZW5jZXMoKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9 IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgLS0gbG9hZCB0aGUgcHJlZnMgYW5k IHVwZGF0ZSBzZXR0aW5ncworKyAgLS0gdXBkYXRlX3NjcmlwdF9jaG9pY2VzCisrCisrICBsb2Nh bCBwcmVmX3N0cmluZyA9IHByZWZfcmVhZCgiaW5zdGFsbGVkX3JlcG9zIiwgInN0cmluZyIpCisr ICBsb2NhbCBlbnRyaWVzID0gZHUuc3BsaXQocHJlZl9zdHJpbmcsICIsIikKKysKKysgIHdoaWxl ICAjZW50cmllcyA+IDIgZG8KKysgICAgbG9jYWwgbnVtID0gdGFibGUucmVtb3ZlKGVudHJpZXMs IDEpCisrICAgIGxvY2FsIG5hbWUgPSB0YWJsZS5yZW1vdmUoZW50cmllcywgMSkKKysgICAgbG9j YWwgZGlyZWN0b3J5ID0gdGFibGUucmVtb3ZlKGVudHJpZXMsIDEpCisrCisrICAgIGlmIG5vdCBz dHJpbmcubWF0Y2goc20uaW5zdGFsbGVkX3JlcG9zaXRvcmllc1sxXS5uYW1lLCAiXiIgLi4gZHMu c2FuaXRpemVfbHVhKG5hbWUpIC4uICIkIikgdGhlbgorKyAgICAgIHRhYmxlLmluc2VydChzbS5p bnN0YWxsZWRfcmVwb3NpdG9yaWVzLCB7bmFtZSA9IG5hbWUsIGRpcmVjdG9yeSA9IGRpcmVjdG9y eX0pCisrICAgIGVuZAorKworKyAgZW5kCisrCisrICB1cGRhdGVfc2NyaXB0X3VwZGF0ZV9jaG9p Y2VzKCkKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAidXBkYXRlZCBpbnN0YWxsZWQgc2NyaXB0cyIp CisrCisrICAtLSBmb2xkZXIgc2VsZWN0b3IKKysgIGxvY2FsIHZhbCA9IHByZWZfcmVhZCgiZm9s ZGVyX3NlbGVjdG9yIiwgImludGVnZXIiKQorKworKyAgaWYgdmFsID09IDAgdGhlbgorKyAgICB2 YWwgPSAxCisrICBlbmQKKysKKysgIHNtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yLnNlbGVjdGVk ID0gdmFsCisrICBzbS5wYWdlX3N0YXR1cy5mb2xkZXIgPSBzbS53aWRnZXRzLmZvbGRlcl9zZWxl Y3Rvci52YWx1ZQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJ1cGRhdGVkIGZvbGRlciBzZWxlY3Rv ciBhbmQgc2V0IGl0IHRvICIgLi4gc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3IudmFsdWUpCisr CisrICAtLSBudW1fYnV0dG9ucworKyAgbG9jYWwgdmFsID0gcHJlZl9yZWFkKCJudW1fYnV0dG9u cyIsICJpbnRlZ2VyIikKKysKKysgIGlmIHZhbCA9PSAwIHRoZW4KKysgICAgdmFsID0gREVGQVVM VF9CVVRUT05TX1BFUl9QQUdFCisrICBlbmQKKysKKysgIHNtLndpZGdldHMubnVtX2J1dHRvbnMu dmFsdWUgPSB2YWwKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0IHBhZ2UgYnV0dG9ucyB0byAi IC4uIHZhbCkKKysKKysgIGNoYW5nZV9udW1fYnV0dG9ucygpCisrICBsb2cubXNnKGxvZy5kZWJ1 ZywgInBhZ2luYXRlZCIpCisrCisrICAtLSBtYWluIG1lbnUKKysgIGxvY2FsIHZhbCA9IHByZWZf cmVhZCgibWFpbl9tZW51X2FjdGlvbiIsICJpbnRlZ2VyIikKKysgIGxvZy5tc2cobG9nLmRlYnVn LCAicmVhZCAiIC4uIHZhbCAuLiAiIGZvciBtYWluIG1lbnUiKQorKworKyAgaWYgdmFsID09IDAg dGhlbgorKyAgICB2YWwgPSAzCisrICBlbmQKKysKKysgIHNtLndpZGdldHMubWFpbl9tZW51LnNl bGVjdGVkID0gdmFsCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgInNldCBtYWluIG1lbnUgdG8gdmFs ICIgLi4gdmFsIC4uICIgd2hpY2ggaXMgIiAuLiBzbS53aWRnZXRzLm1haW5fbWVudS52YWx1ZSkK KysKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0IG1haW4gbWVudSB0byAiIC4uIHNtLndpZGdl dHMubWFpbl9tZW51LnZhbHVlKQorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZl bCkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBpbnN0YWxsX21vZHVsZSgpCisrICBsb2NhbCBv bGRfbG9nX2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBpZiBub3Qg c20ubW9kdWxlX2luc3RhbGxlZCB0aGVuCisrICAgIGR0LnJlZ2lzdGVyX2xpYigKKysgICAgICAi c2NyaXB0X21hbmFnZXIiLCAgICAgLS0gTW9kdWxlIG5hbWUKKysgICAgICBfKCJzY3JpcHRzIiks ICAgICAtLSBWaXNpYmxlIG5hbWUKKysgICAgICB0cnVlLCAgICAgICAgICAgICAgICAtLSBleHBh bmRhYmxlCisrICAgICAgZmFsc2UsICAgICAgICAgICAgICAgLS0gcmVzZXRhYmxlCisrICAgICAg e1tkdC5ndWkudmlld3MubGlnaHR0YWJsZV0gPSB7IkRUX1VJX0NPTlRBSU5FUl9QQU5FTF9MRUZU X0JPVFRPTSIsIDEwMH19LCAgIC0tIGNvbnRhaW5lcnMKKysgICAgICBzbS53aWRnZXRzLm1haW5f Ym94LAorKyAgICAgIG5pbCwtLSB2aWV3X2VudGVyCisrICAgICAgbmlsIC0tIHZpZXdfbGVhdmUK KysgICAgKQorKyAgICBzbS5tb2R1bGVfaW5zdGFsbGVkID0gdHJ1ZQorKyAgZW5kCisrCisrICBz bS5ydW4gPSB0cnVlCisrICBzbS51c2VfY29sb3IgPSBwcmVmX3JlYWQoInVzZV9jb2xvciIsICJi b29sIikKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0IHJ1biB0byB0cnVlLCBsb2FkaW5nIHBy ZWZlcmVuY2VzIikKKysgIGxvYWRfcHJlZmVyZW5jZXMoKQorKyAgc2Nhbl9yZXBvc2l0b3JpZXMo KQorKyAgc3RhcnRfc2NyaXB0cygpCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xl dmVsKQorK2VuZAorKworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAKKystLSBNIEEgSSBOICBQIFIgTyBHIFIgQSBNCisrLS0gLSAtIC0gLSAtIC0gLSAt IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIAorKworKy0tIGVuc3VyZSBzaG9ydGN1dHMg bW9kdWxlIGtub3dzIHdpZGdldHMgYmVsb25nIHRvIHNjcmlwdF9tYW5hZ2VyCisrCisrc2NyaXB0 X21hbmFnZXJfcnVubmluZ19zY3JpcHQgPSAic2NyaXB0X21hbmFnZXIiCisrCisraWYgKGNoZWNr X2Zvcl91cGRhdGVzIG9yIFNNX0FQSV9WRVJfUkVRRCA+IGR0LmNvbmZpZ3VyYXRpb24uYXBpX3Zl cnNpb25fc3RyaW5nKSBhbmQgbm90IHN5c3RlbV9iYXNlZCB0aGVuCisrICBsb2NhbCByZXBvX2Rh dGEgPSBnZXRfcmVwb19zdGF0dXMoTFVBX0RJUikKKysgIGxvY2FsIGN1cnJlbnRfYnJhbmNoID0g Z2V0X2N1cnJlbnRfcmVwb19icmFuY2goTFVBX0RJUikKKysgIGxvY2FsIGNsZWFuID0gaXNfcmVw b19jbGVhbihyZXBvX2RhdGEpCisrICBsb2NhbCByZXBvID0gTFVBX0RJUgorKworKyAgaWYgY3Vy cmVudF9icmFuY2ggdGhlbgorKworKyAgICBpZiBzbS5leGVjdXRhYmxlcy5naXQgYW5kIGNsZWFu IGFuZCAKKysKKysgICAgICAoY3VycmVudF9icmFuY2ggPT0gIm1hc3RlciIgb3Igc3RyaW5nLm1h dGNoKGN1cnJlbnRfYnJhbmNoLCAiXkFQSSUtIikpIHRoZW4gLS0gb25seSBtYWtlIGNoYW5nZXMg dG8gY2xlYW4gYnJhbmNoZXMKKysgICAgICBsb2NhbCBicmFuY2hlcyA9IGdldF9yZXBvX2JyYW5j aGVzKExVQV9ESVIpCisrCisrICAgICAgaWYgY3VycmVudF9icmFuY2ggfj0gTFVBX0FQSV9WRVIg YW5kIGN1cnJlbnRfYnJhbmNoIH49ICJtYXN0ZXIiIHRoZW4KKysgICAgICAgIC0tIHByb2JhYmx5 IHVwZ3JhZGVkIGZyb20gYW4gZWFybGllciBhcGkgdmVyc2lvbiBzbyBnZXQgYmFjayB0byBtYXN0 ZXIKKysgICAgICAgIC0tIHRvIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2Ygc2NyaXB0X21hbmFn ZXIgdG8gZ2V0IHRoZSBwcm9wZXIgQVBJCisrICAgICAgICBjaGVja291dF9yZXBvX2JyYW5jaChy ZXBvLCAibWFzdGVyIikKKysgICAgICAgIGxvZy5tc2cobG9nLnNjcmVlbiwgXygibHVhIEFQSSB2 ZXJzaW9uIHJlc2V0LCBwbGVhc2UgcmVzdGFydCBkYXJrdGFibGUiKSkKKysKKysgICAgICBlbHNl aWYgTFVBX0FQSV9WRVIgPT0gY3VycmVudF9icmFuY2ggdGhlbgorKyAgICAgICAgLS0gZG8gbm90 aGluZywgd2UgYXJlIGZpbmUKKysgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAidG9vayBlcXVh bCBicmFuY2gsIGRvaW5nIG5vdGhpbmciKQorKworKyAgICAgIGVsc2VpZiBzdHJpbmcubWF0Y2go TFVBX0FQSV9WRVIsICJkZXYiKSB0aGVuCisrICAgICAgICAtLSB3ZSBhcmUgb24gYSBkZXYgQVBJ IHZlcnNpb24sIHNvIGNoZWNrb3V0IHRoZSBkZXYKKysgICAgICAgIC0tIGFwaSB2ZXJzaW9uIG9y IGNoZWNrb3V0L3N0YXkgb24gbWFzdGVyCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgInRv b2sgdGhlIGRldiBicmFuY2giKQorKyAgICAgICAgbG9jYWwgbWF0Y2ggPSBmYWxzZQorKworKyAg ICAgICAgZm9yIF8sIGJyYW5jaCBpbiBpcGFpcnMoYnJhbmNoZXMpIGRvCisrICAgICAgICAgIGxv Zy5tc2cobG9nLmRlYnVnLCAiY2hlY2tpbmcgYnJhbmNoICIgLi4gYnJhbmNoIC4uICIgYWdhaW5z dCBBUEkgIiAuLiBMVUFfQVBJX1ZFUikKKysgICAgICAgICAgaWYgTFVBX0FQSV9WRVIgPT0gYnJh bmNoIHRoZW4KKysgICAgICAgICAgICBtYXRjaCA9IHRydWUKKysgICAgICAgICAgICBsb2cubXNn KGxvZy5pbmZvLCAiY2hlY2tpbmcgb3V0IHJlcG8gZGV2ZWxvcG1lbnQgYnJhbmNoICIgLi4gYnJh bmNoKQorKyAgICAgICAgICAgIGNoZWNrb3V0X3JlcG9fYnJhbmNoKHJlcG8sIGJyYW5jaCkKKysg ICAgICAgICAgZW5kCisrICAgICAgICBlbmQKKysKKysgICAgICAgIGlmIG5vdCBtYXRjaCB0aGVu CisrICAgICAgICAgIGlmIGN1cnJlbnRfYnJhbmNoID09ICJtYXN0ZXIiIHRoZW4KKysgICAgICAg ICAgICBsb2cubXNnKGxvZy5pbmZvLCAic3RheWluZyBvbiBtYXN0ZXIsIG5vIGRldiBicmFuY2gg eWV0IikKKysgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGxvZy5tc2cobG9nLmluZm8sICJu byBkZXYgYnJhbmNoIGF2YWlsYWJsZSwgY2hlY2tpbmcgb3V0IG1hc3RlciIpCisrICAgICAgICAg ICAgY2hlY2tvdXRfcmVwb19icmFuY2gocmVwbywgIm1hc3RlciIpCisrICAgICAgICAgIGVuZAor KyAgICAgICAgZW5kCisrCisrICAgICAgZWxzZWlmICNicmFuY2hlcyA+IDAgYW5kIExVQV9BUElf VkVSID4gYnJhbmNoZXNbI2JyYW5jaGVzXSB0aGVuCisrICAgICAgICBsb2cubXNnKGxvZy5pbmZv LCAibm8gbmV3ZXIgYnJhbmNoZXMsIHN0YXlpbmcgb24gbWFzdGVyIikKKysgICAgICAgIC0tIHN0 YXkgb24gbWFzdGVyCisrCisrICAgICAgZWxzZQorKyAgICAgICAgLS0gY2hlY2tvdXQgdGhlIGFw cHJvcHJpYXRlIGJyYW5jaCBmb3IgQVBJIHZlcnNpb24gaWYgaXQgZXhpc3RzCisrICAgICAgICBs b2cubXNnKGxvZy5pbmZvLCAiY2hlY2tpbmcgb3V0IHRoZSBhcHByb3ByaWF0ZSBBUEkgYnJhbmNo IikKKysKKysgICAgICAgIGxvY2FsIG1hdGNoID0gZmFsc2UKKysKKysgICAgICAgIGZvciBfeCwg YnJhbmNoIGluIGlwYWlycyhicmFuY2hlcykgZG8KKysgICAgICAgICAgbG9nLm1zZyhsb2cuZGVi dWcsICJjaGVja2luZyBicmFuY2ggIiAuLiBicmFuY2ggLi4gIiBhZ2FpbnN0IEFQSSAiIC4uIExV QV9BUElfVkVSKQorKworKyAgICAgICAgICBpZiBMVUFfQVBJX1ZFUiA9PSBicmFuY2ggdGhlbgor KyAgICAgICAgICAgIG1hdGNoID0gdHJ1ZQorKyAgICAgICAgICAgIGxvZy5tc2cobG9nLmluZm8s ICJjaGVja2luZyBvdXQgcmVwbyBicmFuY2ggIiAuLiBicmFuY2gpCisrICAgICAgICAgICAgY2hl Y2tvdXRfcmVwb19icmFuY2gocmVwbywgYnJhbmNoKQorKyAgICAgICAgICAgIGxvZy5tc2cobG9n LnNjcmVlbiwgXygieW91IG11c3QgcmVzdGFydCBkYXJrdGFibGUgdG8gdXNlIHRoZSBjb3JyZWN0 IHZlcnNpb24gb2YgdGhlIGx1YSBzY3JpcHRzIikpCisrICAgICAgICAgICAgcmV0dXJuCisrICAg ICAgICAgIGVuZAorKworKyAgICAgICAgZW5kCisrCisrICAgICAgICBpZiBub3QgbWF0Y2ggdGhl bgorKyAgICAgICAgICBsb2cubXNnKGxvZy53YXJuLCAibm8gbWF0Y2hpbmcgYnJhbmNoIGZvdW5k IGZvciAiIC4uIExVQV9BUElfVkVSKQorKyAgICAgICAgZW5kCisrCisrICAgICAgZW5kCisrICAg IGVuZAorKyAgZW5kCisrZW5kCisrCisrc2Nhbl9zY3JpcHRzKExVQV9ESVIpCisrbG9nLm1zZyhs b2cuaW5mbywgImZpbmlzaGVkIHByb2Nlc3Npbmcgc2NyaXB0cyIpCisrCisraWYgc3lzdGVtX2Jh c2VkIHRoZW4KKysgIC0tIGV4ZWMgdXNlciBsdWFyYyBmaWxlIGlmIGl0IGV4aXN0cworKyAgbG9j YWwgbHVhcmMgPSBsb2FkZmlsZShVU0VSX0xVQV9ESVIgLi4gInJjIikKKysgIGlmIGx1YXJjIHRo ZW4KKysgICAgbHVhcmMoKQorKyAgZW5kCisrCisrICBpZiBkZi50ZXN0X2ZpbGUoVVNFUl9MVUFf RElSLCAiZCIpIHRoZW4KKysgICAgTFVBX0RJUiA9IFVTRVJfTFVBX0RJUgorKyAgICBzY2FuX3Nj cmlwdHMoTFVBX0RJUikKKysgICAgTFVBX0RJUiA9IFNZU1RFTV9MVUFfRElSCisrICBlbmQKKysK KysgIGR0LmNvbmZpZ3VyYXRpb25bImx1YV9kaXIiXSA9IExVQV9ESVIKKysKKysgIGR0LnByaW50 X2xvZygibHVhIGRpciBpcyAiIC4uIGR0LmNvbmZpZ3VyYXRpb24ubHVhX2RpcikKKysgIC0tIHNj YW5fc2NyaXB0KFVTRVJfTFVBX0RJUikKKytlbmQKKysKKysKKystLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrLS0gVSBTIEUgUiAgSSBOIFQgRSBSIEYg QSBDIEUKKystLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g CisrCisrLS0gdXBkYXRlIHRoZSBzY3JpcHRzCisrCisrc20ud2lkZ2V0cy51cGRhdGVfc2NyaXB0 X2Nob2ljZXMgPSBkdC5uZXdfd2lkZ2V0KCJjb21ib2JveCIpeworKyAgbGFiZWwgPSBfKCJzY3Jp cHRzIHRvIHVwZGF0ZSIpLAorKyAgdG9vbHRpcCA9IF8oInNlbGVjdCB0aGUgc2NyaXB0cyBpbnN0 YWxsYXRpb24gdG8gdXBkYXRlIiksCisrICBzZWxlY3RlZCA9IDEsCisrICBjaGFuZ2VkX2NhbGxi YWNrID0gZnVuY3Rpb24odGhpcykKKysgICAgcHJlZl93cml0ZSgidXBkYXRlX3NjcmlwdF9jaG9p Y2VzIiwgImludGVnZXIiLCB0aGlzLnNlbGVjdGVkKQorKyAgZW5kLAorKyAgInBsYWNlaG9sZGVy IiwKKyt9CisrCisrc20ud2lkZ2V0cy51cGRhdGUgPSBkdC5uZXdfd2lkZ2V0KCJidXR0b24iKXsK KysgIGxhYmVsID0gXygidXBkYXRlIHNjcmlwdHMiKSwKKysgIHRvb2x0aXAgPSBfKCJ1cGRhdGUg dGhlIGx1YSBzY3JpcHRzIGZyb20gdGhlIHJlcG9zaXRvcnkiKSwKKysgIGNsaWNrZWRfY2FsbGJh Y2sgPSBmdW5jdGlvbih0aGlzKQorKyAgICB1cGRhdGVfc2NyaXB0cygpCisrICBlbmQKKyt9Cisr CisrLS0gYWRkIGFkZGl0aW9uYWwgc2NyaXB0cworKworK3NtLndpZGdldHMuc2NyaXB0X3VybCA9 IGR0Lm5ld193aWRnZXQoImVudHJ5Iil7CisrICB0ZXh0ID0gIiIsCisrICBwbGFjZWhvbGRlciA9 ICJodHRwczovLzxyZXBvc2l0b3J5IHVybD4iLAorKyAgdG9vbHRpcCA9IF8oImVudGVyIHRoZSBV Ukwgb2YgdGhlIGdpdCByZXBvc2l0b3J5IGNvbnRhaW5pbmcgdGhlIHNjcmlwdHMgeW91IHdpc2gg dG8gYWRkIikKKyt9CisrCisrc20ud2lkZ2V0cy5uZXdfZm9sZGVyID0gZHQubmV3X3dpZGdldCgi ZW50cnkiKXsKKysgIHRleHQgPSAiIiwKKysgIHBsYWNlaG9sZGVyID0gXygibmFtZSBvZiBuZXcg Zm9sZGVyIiksCisrICB0b29sdGlwID0gXygiZW50ZXIgYSBmb2xkZXIgbmFtZSBmb3IgdGhlIGFk ZGl0aW9uYWwgc2NyaXB0cyIpCisrfQorKworK3NtLndpZGdldHMuYWRkX3NjcmlwdHMgPSBkdC5u ZXdfd2lkZ2V0KCJib3giKXsKKysgIG9yaWVudGF0aW9uID0gdmVydGljYWwsCisrICBkdC5uZXdf d2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gXygiVVJMIHRvIGRvd25sb2FkIGFkZGl0aW9uYWwgc2Ny aXB0cyBmcm9tIil9LAorKyAgc20ud2lkZ2V0cy5zY3JpcHRfdXJsLAorKyAgZHQubmV3X3dpZGdl dCgibGFiZWwiKXtsYWJlbCA9IF8oIm5ldyBmb2xkZXIgdG8gcGxhY2Ugc2NyaXB0cyBpbiIpfSwK KysgIHNtLndpZGdldHMubmV3X2ZvbGRlciwKKysgIGR0Lm5ld193aWRnZXQoImJ1dHRvbiIpewor KyAgICBsYWJlbCA9IF8oImluc3RhbGwgYWRkaXRpb25hbCBzY3JpcHRzIiksCisrICAgIGNsaWNr ZWRfY2FsbGJhY2sgPSBmdW5jdGlvbih0aGlzKQorKyAgICAgIGluc3RhbGxfc2NyaXB0cygpCisr ICAgIGVuZAorKyAgfQorK30KKysKKytzbS53aWRnZXRzLmFsbG93X2Rpc2FibGUgPSBkdC5uZXdf d2lkZ2V0KCJjaGVja19idXR0b24iKXsKKysgIGxhYmVsID0gXygnZW5hYmxlICJkaXNhYmxlIHNj cmlwdHMiIGJ1dHRvbicpLAorKyAgdmFsdWUgPSBmYWxzZSwKKysgIGNsaWNrZWRfY2FsbGJhY2sg PSBmdW5jdGlvbih0aGlzKQorKyAgICBpZiB0aGlzLnZhbHVlID09IHRydWUgdGhlbgorKyAgICAg IHNtLndpZGdldHMuZGlzYWJsZV9zY3JpcHRzLnNlbnNpdGl2ZSA9IHRydWUKKysgICAgZWxzZQor KyAgICAgIHNtLndpZGdldHMuZGlzYWJsZV9zY3JpcHRzLnNlbnNpdGl2ZSA9IGZhbHNlCisrICAg IGVuZAorKyAgZW5kLAorK30KKysKKytzbS53aWRnZXRzLmRpc2FibGVfc2NyaXB0cyA9IGR0Lm5l d193aWRnZXQoImJ1dHRvbiIpeworKyAgbGFiZWwgPSBfKCJkaXNhYmxlIHNjcmlwdHMiKSwKKysg IHNlbnNpdGl2ZSA9IGZhbHNlLAorKyAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMp CisrICAgIGxvY2FsIExVQVJDID0gZHQuY29uZmlndXJhdGlvbi5jb25maWdfZGlyIC4uIFBTIC4u ICJsdWFyYyIKKysgICAgZGYuZmlsZV9tb3ZlKExVQVJDLCBMVUFSQyAuLiAiLmRpc2FibGVkIikK KysgICAgbG9nLm1zZyhsb2cuaW5mbywgImx1YSBzY3JpcHRzIGRpc2FibGVkIikKKysgICAgbG9n Lm1zZyhsb2cuc2NyZWVuLCBfKCJsdWEgc2NyaXB0cyB3aWxsIG5vdCBydW4gdGhlIG5leHQgdGlt ZSBkYXJrdGFibGUgaXMgc3RhcnRlZCIpKQorKyAgZW5kCisrfQorKworK3NtLndpZGdldHMuaW5z dGFsbF91cGRhdGUgPSBkdC5uZXdfd2lkZ2V0KCJib3giKXsKKysgIG9yaWVudGF0aW9uID0gInZl cnRpY2FsIiwKKysgIGR0Lm5ld193aWRnZXQoInNlY3Rpb25fbGFiZWwiKXtsYWJlbCA9ICIgIn0s CisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gIiAifSwKKysgIGR0Lm5ld193aWRn ZXQoImxhYmVsIil7bGFiZWwgPSBfKCJ1cGRhdGUgc2NyaXB0cyIpfSwKKysgIGR0Lm5ld193aWRn ZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgc20ud2lkZ2V0cy51cGRhdGVfc2NyaXB0X2No b2ljZXMsCisrICBzbS53aWRnZXRzLnVwZGF0ZSwKKysgIGR0Lm5ld193aWRnZXQoInNlY3Rpb25f bGFiZWwiKXtsYWJlbCA9ICIgICJ9LAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9 ICIgIn0sCisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gXygiYWRkIG1vcmUgc2Ny aXB0cyIpfSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgc20u d2lkZ2V0cy5hZGRfc2NyaXB0cywKKysgIGR0Lm5ld193aWRnZXQoInNlY3Rpb25fbGFiZWwiKXts YWJlbCA9ICIgIn0sCisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gIiAifSwKKysg IGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSBfKCJkaXNhYmxlIHNjcmlwdHMiKX0sCisr ICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gIiAifSwKKysgIHNtLndpZGdldHMuYWxs b3dfZGlzYWJsZSwKKysgIHNtLndpZGdldHMuZGlzYWJsZV9zY3JpcHRzLAorKyAgZHQubmV3X3dp ZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0sCisrfQorKworKy0tIG1hbmFnZSB0aGUgc2NyaXB0 cworKworK3NtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yID0gZHQubmV3X3dpZGdldCgiY29tYm9i b3giKXsKKysgIGxhYmVsID0gXygiZm9sZGVyIiksCisrICB0b29sdGlwID0gXyggInNlbGVjdCB0 aGUgc2NyaXB0IGZvbGRlciIpLAorKyAgc2VsZWN0ZWQgPSAxLAorKyAgY2hhbmdlZF9jYWxsYmFj ayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgIGlmIHNtLnJ1biB0aGVuCisrICAgICAgcHJlZl93cml0 ZSgiZm9sZGVyX3NlbGVjdG9yIiwgImludGVnZXIiLCBzZWxmLnNlbGVjdGVkKQorKyAgICAgIGNo YW5nZV9mb2xkZXIoc20uZm9sZGVyc1tzZWxmLnNlbGVjdGVkXSkKKysgICAgZW5kCisrICBlbmQs CisrICB0YWJsZS51bnBhY2soc20udHJhbnNsYXRlZF9mb2xkZXJzKSwKKyt9CisrCisrLS0gYSBz Y3JpcHQgImJ1dHRvbiIgY29uc2lzdHMgb2Y6CisrLS0gICAgICBhIGJ1dHRvbiB0byBzdGFydCBh bmQgc3RvcCB0aGUgc2NyaXB0CisrLS0gICAgICBhIGxhYmVsIHRoYXQgY29udGFpbnMgdGhlIG5h bWUgb2YgdGhlIHNjcmlwdAorKy0tICAgICAgYSBob3Jpem9udGFsIGJveCB0aGF0IGNvbnRhaW5z IHRoZSBidXR0b24gYW5kIHRoZSBsYWJlbAorKworK3NtLndpZGdldHMuYnV0dG9ucyA9e30KKytz bS53aWRnZXRzLmxhYmVscyA9IHt9Cisrc20ud2lkZ2V0cy5ib3hlcyA9IHt9CisrCisrZm9yIGkg PTEsIERFRkFVTFRfQlVUVE9OU19QRVJfUEFHRSBkbyAKKysgIHRhYmxlLmluc2VydChzbS53aWRn ZXRzLmJ1dHRvbnMsIGR0Lm5ld193aWRnZXQoImJ1dHRvbiIpe30pCisrICB0YWJsZS5pbnNlcnQo c20ud2lkZ2V0cy5sYWJlbHMsIGR0Lm5ld193aWRnZXQoImxhYmVsIil7fSkKKysgIHRhYmxlLmlu c2VydChzbS53aWRnZXRzLmJveGVzLCBkdC5uZXdfd2lkZ2V0KCJib3giKXsgb3JpZW50YXRpb24g PSAiaG9yaXpvbnRhbCIsIGV4cGFuZCA9IGZhbHNlLCBmaWxsID0gZmFsc2UsIAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbS53aWRnZXRz LmJ1dHRvbnNbaV0sIHNtLndpZGdldHMubGFiZWxzW2ldfSkKKysgIHNtLnBhZ2Vfc3RhdHVzLmJ1 dHRvbnNfY3JlYXRlZCA9IHNtLnBhZ2Vfc3RhdHVzLmJ1dHRvbnNfY3JlYXRlZCArIDEKKytlbmQK KysKKytsb2NhbCBwYWdlX2JhY2sgPSAiPCIKKytsb2NhbCBwYWdlX2ZvcndhcmQgPSAiPiIKKysK KytzbS53aWRnZXRzLnBhZ2Vfc3RhdHVzID0gZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9 IF8oInBhZ2UiKSAuLiAiOiJ9CisrCisrc20ud2lkZ2V0cy5wYWdlX2JhY2sgPSBkdC5uZXdfd2lk Z2V0KCJidXR0b24iKXsKKysgIGxhYmVsID0gcGFnZV9iYWNrLAorKyAgY2xpY2tlZF9jYWxsYmFj ayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgIGlmIHNtLnJ1biB0aGVuIAorKyAgICAgIHBhZ2luYXRl KDApCisrICAgIGVuZAorKyAgZW5kCisrfQorKworK3NtLndpZGdldHMucGFnZV9mb3J3YXJkID0g ZHQubmV3X3dpZGdldCgiYnV0dG9uIil7CisrICBsYWJlbCA9IHBhZ2VfZm9yd2FyZCwKKysgIGNs aWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbih0aGlzKQorKyAgICBpZiBzbS5ydW4gdGhlbgorKyAg ICAgIHBhZ2luYXRlKDEpCisrICAgIGVuZAorKyAgZW5kCisrfQorKworK3NtLndpZGdldHMucGFn ZV9jb250cm9sID0gZHQubmV3X3dpZGdldCgiYm94Iil7CisrICBvcmllbnRhdGlvbiA9ICJob3Jp em9udGFsIiwKKysgIHNtLndpZGdldHMucGFnZV9iYWNrLAorKyAgc20ud2lkZ2V0cy5wYWdlX3N0 YXR1cywKKysgIHNtLndpZGdldHMucGFnZV9mb3J3YXJkLAorK30KKysKKytzbS53aWRnZXRzLnNj cmlwdHMgPSBkdC5uZXdfd2lkZ2V0KCJib3giKXsKKysgIG9yaWVudGF0aW9uID0gdmVydGljYWws CisrICBkdC5uZXdfd2lkZ2V0KCJzZWN0aW9uX2xhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgZHQu bmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0sCisrICBkdC5uZXdfd2lkZ2V0KCJsYWJl bCIpe2xhYmVsID0gXygic2NyaXB0cyIpfSwKKysgIHNtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9y LAorKyAgc20ud2lkZ2V0cy5wYWdlX2NvbnRyb2wsCisrICB0YWJsZS51bnBhY2soc20ud2lkZ2V0 cy5ib3hlcyksCisrfQorKworKy0tIGNvbmZpZ3VyZSBvcHRpb25zCisrCisrc20ud2lkZ2V0cy5u dW1fYnV0dG9ucyA9IGR0Lm5ld193aWRnZXQoInNsaWRlciIpeworKyAgbGFiZWwgPSBfKCJzY3Jp cHRzIHBlciBwYWdlIiksCisrICB0b29sdGlwID0gXygic2VsZWN0IG51bWJlciBvZiBzdGFydC9z dG9wIGJ1dHRvbnMgdG8gZGlzcGxheSIpLAorKyAgc29mdF9taW4gPSBNSU5fQlVUVE9OU19QRVJf UEFHRSwKKysgIGhhcmRfbWluID0gTUlOX0JVVFRPTlNfUEVSX1BBR0UsCisrICBzb2Z0X21heCA9 IE1BWF9CVVRUT05TX1BFUl9QQUdFLAorKyAgaGFyZF9tYXggPSBNQVhfQlVUVE9OU19QRVJfUEFH RSwKKysgIHN0ZXAgPSAxLAorKyAgZGlnaXRzID0gMCwKKysgIHZhbHVlID0gMTAKKyt9CisrCisr c20ud2lkZ2V0cy5jaGFuZ2VfYnV0dG9ucyA9IGR0Lm5ld193aWRnZXQoImJ1dHRvbiIpeworKyAg bGFiZWwgPSBfKCJjaGFuZ2UgbnVtYmVyIG9mIGJ1dHRvbnMiKSwKKysgIGNsaWNrZWRfY2FsbGJh Y2sgPSBmdW5jdGlvbih0aGlzKQorKyAgICBjaGFuZ2VfbnVtX2J1dHRvbnMoKQorKyAgZW5kCisr fQorKworK3NtLndpZGdldHMuY29uZmlndXJlID0gZHQubmV3X3dpZGdldCgiYm94Iil7CisrICBv cmllbnRhdGlvbiA9ICJ2ZXJ0aWNhbCIsCisrICBkdC5uZXdfd2lkZ2V0KCJzZWN0aW9uX2xhYmVs Iil7bGFiZWwgPSAiICJ9LAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0s CisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gXygiY29uZmlndXJhdGlvbiIpfSwK KysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgc20ud2lkZ2V0cy5u dW1fYnV0dG9ucywKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAg c20ud2lkZ2V0cy5jaGFuZ2VfYnV0dG9ucywKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFi ZWwgPSAiICJ9LAorK30KKysKKystLSBzdGFjayBmb3IgdGhlIG9wdGlvbnMKKysKKytzbS53aWRn ZXRzLm1haW5fc3RhY2sgPSBkdC5uZXdfd2lkZ2V0KCJzdGFjayIpeworKyAgc20ud2lkZ2V0cy5p bnN0YWxsX3VwZGF0ZSwKKysgIHNtLndpZGdldHMuY29uZmlndXJlLAorKyAgc20ud2lkZ2V0cy5z Y3JpcHRzLAorK30KKysKKytzbS53aWRnZXRzLm1haW5fc3RhY2suaF9zaXplX2ZpeGVkID0gZmFs c2UKKytzbS53aWRnZXRzLm1haW5fc3RhY2sudl9zaXplX2ZpeGVkID0gZmFsc2UKKysKKystLSBt YWluIG1lbnUKKysKKytzbS53aWRnZXRzLm1haW5fbWVudSA9IGR0Lm5ld193aWRnZXQoImNvbWJv Ym94Iil7CisrICBsYWJlbCA9IF8oImFjdGlvbiIpLAorKyAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1 bmN0aW9uKHNlbGYpCisrICAgIHNtLndpZGdldHMubWFpbl9zdGFjay5hY3RpdmUgPSBzZWxmLnNl bGVjdGVkCisrICAgIHByZWZfd3JpdGUoIm1haW5fbWVudV9hY3Rpb24iLCAiaW50ZWdlciIsIHNl bGYuc2VsZWN0ZWQpCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAic2F2ZWQgIiAuLiBzZWxmLnNl bGVjdGVkIC4uICIgZm9yIG1haW4gbWVudSIpCisrICBlbmQsCisrICAgXygiaW5zdGFsbC91cGRh dGUgc2NyaXB0cyIpLCBfKCJjb25maWd1cmUiKSwgXygic3RhcnQvc3RvcCBzY3JpcHRzIikKKyt9 CisrCisrLS0gd2lkZ2V0IGZvciBtb2R1bGUgCisrCisrc20ud2lkZ2V0cy5tYWluX2JveCA9IGR0 Lm5ld193aWRnZXQoImJveCIpeworKyAgc20ud2lkZ2V0cy5tYWluX21lbnUsCisrICBzbS53aWRn ZXRzLm1haW5fc3RhY2sKKyt9CisrCisrc2NyaXB0X21hbmFnZXJfcnVubmluZ19zY3JpcHQgPSBu aWwKKysKKystLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g CisrLS0gRCBBIFIgSyBUIEEgQiBMIEUgIEkgTiBUIEUgRyBSIEEgVCBJIE8gTiAKKystLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrCisraWYgKGR0Lmd1 aS5jdXJyZW50X3ZpZXcoKS5pZCA9PSAibGlnaHR0YWJsZSIpIGFuZCBkYXJrdGFibGVfZ3VpX3Nh ZmUgdGhlbgorKyAgaW5zdGFsbF9tb2R1bGUoKQorK2Vsc2UKKysgIGlmIG5vdCBzbS5ldmVudF9y ZWdpc3RlcmVkIHRoZW4KKysgICAgZHQucmVnaXN0ZXJfZXZlbnQoCisrICAgICAgInNjcmlwdF9t YW5hZ2VyIiwgInZpZXctY2hhbmdlZCIsCisrICAgICAgZnVuY3Rpb24oZXZlbnQsIG9sZF92aWV3 LCBuZXdfdmlldykKKysgICAgICAgIGlmIG5ld192aWV3Lm5hbWUgPT0gImxpZ2h0dGFibGUiIGFu ZCBvbGRfdmlldy5uYW1lID09ICJkYXJrcm9vbSIgdGhlbgorKyAgICAgICAgICBpbnN0YWxsX21v ZHVsZSgpCisrICAgICAgICBlbmQKKysgICAgICBlbmQKKysgICAgKQorKyAgICBzbS5ldmVudF9y ZWdpc3RlcmVkID0gdHJ1ZQorKyAgZW5kCisrZW5kCisrCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBi L3NvdXJjZXMKaW5kZXggNzYwYzljZC4uNmM0NGE5MSAxMDA2NDQKLS0tIGEvc291cmNlcworKysg Yi9zb3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKGRhcmt0YWJsZS01LjQuMS50YXIueHopID0g ZDk1NmZkYWMyZDdhMTc4MmEyNDJjOGUwODM5YTZkMjZmYjNhMmE3ZDkwNzE2OTc4MjI3YjFjODg0 ZjRhY2YwZjUxZTU5OWE3MmIwOTE5ZjdiN2YyZWEyYjVkZjQwZmVjZDU2ZGZhOGU3YzgxMzU4N2Vm NDY5ZmY2ZTQyZmZlN2IKK1NIQTUxMiAoZGFya3RhYmxlLTUuNi4xLnRhci54eikgPSBiYjRlMWQy N2NiODc4MWNlZjRkZmQ1Y2IyYTU4MGY0Yzg4NzM5YTIzZTI4NTY3NWI1Y2ExNWYwMTBhZWZmZmM5 NjU0OTljZjg5NTc4ODAzNjFlMzM2MTZlYzQ5NDYxZDE0OTEyNmFmN2VmMWM5ODE4MzIyYWU4ZjQ3 ZGY3OGQ5ZQo=