ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL01ha2VmaWxlIGIvcnVudGltZS9kb2MvTWFrZWZpbGUKaW5kZXggMGU2NjA2Mi4uMzkyMDhhZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvTWFrZWZpbGUKKysrIGIvcnVudGltZS9kb2MvTWFrZWZpbGUKQEAgLTI1NCwxMCArMjU0LDIyIEBACiAJd2luZG93cy5odG1sIFwKIAl3b3Jrc2hvcC5odG1sCiAKK0NPTlZFUlRFRCA9IFwKKwl2aW0taXQuVVRGLTguMSBcCisJZXZpbS1pdC5VVEYtOC4xIFwKKwl2aW1kaWZmLWl0LlVURi04LjEgXAorCXZpbXR1dG9yLWl0LlVURi04LjEgXAorCXh4ZC1pdC5VVEYtOC4xIFwKKwl2aW0tcnUuVVRGLTguMSBcCisJZXZpbS1ydS5VVEYtOC4xIFwKKwl2aW1kaWZmLXJ1LlVURi04LjEgXAorCXZpbXR1dG9yLXJ1LlVURi04LjEgXAorCXh4ZC1ydS5VVEYtOC4xIFwKKwogLlNVRkZJWEVTOgogLlNVRkZJWEVTOiAuYyAubyAudHh0IC5odG1sCiAKLWFsbDogdGFncyB2aW0ubWFuIHZpbWRpZmYubWFuIHZpbXR1dG9yLm1hbiB4eGQubWFuCithbGw6IHRhZ3MgdmltLm1hbiB2aW1kaWZmLm1hbiB2aW10dXRvci5tYW4geHhkLm1hbiAkKENPTlZFUlRFRCkKIAogIyBVc2UgVmltIHRvIGdlbmVyYXRlIHRoZSB0YWdzIGZpbGUuICBDYW4gb25seSBiZSB1c2VkIHdoZW4gVmltIGhhcyBiZWVuCiAjIGNvbXBpbGVkIGFuZCBpbnN0YWxsZWQuICBTdXBwb3J0cyBtdWx0aXBsZSBsYW5ndWFnZXMuCkBAIC0zNjUsMyArMzc3LDMzIEBACiAKIG9zX3dpbjMyLnR4dDoKIAl0b3VjaCBvc193aW4zMi50eHQKKwordmltLWl0LlVURi04LjE6IHZpbS1pdC4xCisJaWNvbnYgLWYgbGF0aW4xIC10IHV0Zi04ICQ8ID4kQAorCitldmltLWl0LlVURi04LjE6IGV2aW0taXQuMQorCWljb252IC1mIGxhdGluMSAtdCB1dGYtOCAkPCA+JEAKKwordmltZGlmZi1pdC5VVEYtOC4xOiB2aW1kaWZmLWl0LjEKKwlpY29udiAtZiBsYXRpbjEgLXQgdXRmLTggJDwgPiRACisKK3ZpbXR1dG9yLWl0LlVURi04LjE6IHZpbXR1dG9yLWl0LjEKKwlpY29udiAtZiBsYXRpbjEgLXQgdXRmLTggJDwgPiRACisKK3h4ZC1pdC5VVEYtOC4xOiB4eGQtaXQuMQorCWljb252IC1mIGxhdGluMSAtdCB1dGYtOCAkPCA+JEAKKwordmltLXJ1LlVURi04LjE6IHZpbS1ydS4xCisJaWNvbnYgLWYgS09JOC1SIC10IHV0Zi04ICQ8ID4kQAorCitldmltLXJ1LlVURi04LjE6IGV2aW0tcnUuMQorCWljb252IC1mIEtPSTgtUiAtdCB1dGYtOCAkPCA+JEAKKwordmltZGlmZi1ydS5VVEYtOC4xOiB2aW1kaWZmLXJ1LjEKKwlpY29udiAtZiBLT0k4LVIgLXQgdXRmLTggJDwgPiRACisKK3ZpbXR1dG9yLXJ1LlVURi04LjE6IHZpbXR1dG9yLXJ1LjEKKwlpY29udiAtZiBLT0k4LVIgLXQgdXRmLTggJDwgPiRACisKK3h4ZC1ydS5VVEYtOC4xOiB4eGQtcnUuMQorCWljb252IC1mIEtPSTgtUiAtdCB1dGYtOCAkPCA+JEAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQgYi9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CmluZGV4IDdlZDI0OTkuLjdhNThjZDggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKKysrIGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBGZWIgMjMKKypjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTExNTUsMTMgKzExNTUsMTcgQEAKIAkJCWNvbXBpbGUgdGltZS4KIAogCQkJCQkJCSpncSoKLWdxe21vdGlvbn0JCUZvcm1hdCB0aGUgbGluZXMgdGhhdCB7bW90aW9ufSBtb3ZlcyBvdmVyLiAgVGhlCi0JCQkndGV4dHdpZHRoJyBvcHRpb24gY29udHJvbHMgdGhlIGxlbmd0aCBvZiBlYWNoCi0JCQlmb3JtYXR0ZWQgbGluZSAoc2VlIGJlbG93KS4gIElmIHRoZSAndGV4dHdpZHRoJyBvcHRpb24KLQkJCWlzIDAsIHRoZSBmb3JtYXR0ZWQgbGluZSBsZW5ndGggaXMgdGhlIHNjcmVlbiB3aWR0aAotCQkJKHdpdGggYSBtYXhpbXVtIHdpZHRoIG9mIDc5KS4gIHtub3QgaW4gVml9CitncXttb3Rpb259CQlGb3JtYXQgdGhlIGxpbmVzIHRoYXQge21vdGlvbn0gbW92ZXMgb3Zlci4KKwkJCUlmICdmb3JtYXRwcmcnIGlzIGVtcHR5IGZvcm1hdHRpbmcgaXMgZG9uZSBpbnRlcm5hbGx5CisJCQlhbmQgdGhlICd0ZXh0d2lkdGgnIG9wdGlvbiBjb250cm9scyB0aGUgbGVuZ3RoIG9mIGVhY2gKKwkJCWZvcm1hdHRlZCBsaW5lIChzZWUgYmVsb3cpLgorCQkJSWYgdGhlICd0ZXh0d2lkdGgnIG9wdGlvbiBpcyAwLCB0aGUgZm9ybWF0dGVkIGxpbmUKKwkJCWxlbmd0aCBpcyB0aGUgc2NyZWVuIHdpZHRoICh3aXRoIGEgbWF4aW11bSB3aWR0aCBvZgorCQkJNzkpLiAge25vdCBpbiBWaX0KIAkJCVRoZSAnZm9ybWF0b3B0aW9ucycgb3B0aW9uIGNvbnRyb2xzIHRoZSB0eXBlIG9mCiAJCQlmb3JtYXR0aW5nIHxmby10YWJsZXwuCisJCQlUaGUgY3Vyc29yIGlzIGxlZnQgb24gdGhlIGZpcnN0IG5vbi1ibGFuayBvZiB0aGUgbGFzdAorCQkJZm9ybWF0dGVkIGxpbmUuCiAJCQlOT1RFOiBUaGUgIlEiIGNvbW1hbmQgZm9ybWVybHkgcGVyZm9ybWVkIHRoaXMKIAkJCWZ1bmN0aW9uLiAgSWYgeW91IHN0aWxsIHdhbnQgdG8gdXNlICJRIiBmb3IKIAkJCWZvcm1hdHRpbmcsIHVzZSB0aGlzIG1hcHBpbmc6ID4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMGU4ZDNmYy4uOGZmNGJhYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDE1CisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDE3CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMzgzLDggKzIzODMsOSBAQAogCQlUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiBvcHRpb24gb3IgbG9jYWwgYnVmZmVyIHZhcmlhYmxlCiAJCXt2YXJuYW1lfSBpbiBidWZmZXIge2V4cHJ9LiAgTm90ZSB0aGF0IHRoZSBuYW1lIHdpdGhvdXQgImI6IgogCQltdXN0IGJlIHVzZWQuCi0JCVRoaXMgYWxzbyB3b3JrcyBmb3IgYSBnbG9iYWwgb3IgbG9jYWwgd2luZG93IG9wdGlvbiwgYnV0IGl0Ci0JCWRvZXNuJ3Qgd29yayBmb3IgYSBnbG9iYWwgb3IgbG9jYWwgd2luZG93IHZhcmlhYmxlLgorCQlUaGlzIGFsc28gd29ya3MgZm9yIGEgZ2xvYmFsIG9yIGJ1ZmZlci1sb2NhbCBvcHRpb24sIGJ1dCBpdAorCQlkb2Vzbid0IHdvcmsgZm9yIGEgZ2xvYmFsIHZhcmlhYmxlLCB3aW5kb3ctbG9jYWwgdmFyaWFibGUgb3IKKwkJd2luZG93LWxvY2FsIG9wdGlvbi4KIAkJRm9yIHRoZSB1c2Ugb2Yge2V4cHJ9LCBzZWUgfGJ1Zm5hbWUoKXwgYWJvdmUuCiAJCVdoZW4gdGhlIGJ1ZmZlciBvciB2YXJpYWJsZSBkb2Vzbid0IGV4aXN0IGFuIGVtcHR5IHN0cmluZyBpcwogCQlyZXR1cm5lZCwgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4KQEAgLTI1ODAsOCArMjU4MSw5IEBACiBnZXR3aW52YXIoe25yfSwge3Zhcm5hbWV9KQkJCQkqZ2V0d2ludmFyKCkqCiAJCVRoZSByZXN1bHQgaXMgdGhlIHZhbHVlIG9mIG9wdGlvbiBvciBsb2NhbCB3aW5kb3cgdmFyaWFibGUKIAkJe3Zhcm5hbWV9IGluIHdpbmRvdyB7bnJ9LgotCQlUaGlzIGFsc28gd29ya3MgZm9yIGEgZ2xvYmFsIG9yIGxvY2FsIGJ1ZmZlciBvcHRpb24sIGJ1dCBpdAotCQlkb2Vzbid0IHdvcmsgZm9yIGEgZ2xvYmFsIG9yIGxvY2FsIGJ1ZmZlciB2YXJpYWJsZS4KKwkJVGhpcyBhbHNvIHdvcmtzIGZvciBhIGdsb2JhbCBvcHRpb24sIGJ1ZmZlci1sb2NhbCBvcHRpb24gYW5kCisJCXdpbmRvdy1sb2NhbCBvcHRpb24sIGJ1dCBpdCBkb2Vzbid0IHdvcmsgZm9yIGEgZ2xvYmFsIHZhcmlhYmxlCisJCW9yIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZS4KIAkJTm90ZSB0aGF0IHRoZSBuYW1lIHdpdGhvdXQgInc6IiBtdXN0IGJlIHVzZWQuCiAJCUV4YW1wbGVzOiA+CiAJCQk6bGV0IGxpc3RfaXNfb24gPSBnZXR3aW52YXIoMiwgJyZsaXN0JykKQEAgLTM5MDgsMTIgKzM5MTAsMTYgQEAKIAkJCQkJdG9vbC4KIAkJCXN0YXRpYwkJYSBmaWxlIHNwZWNpZmljIHRhZy4gIFJlZmVyIHRvCiAJCQkJCXxzdGF0aWMtdGFnfCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQkJTW9yZSBlbnRyaWVzIG1heSBiZSBwcmVzZW50LCBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnQgb2YgdGhlCi0JCXRhZ3MgZmlsZTogYWNjZXNzLCBpbXBsZW1lbnRhdGlvbiwgaW5oZXJpdHMgYW5kIHNpZ25hdHVyZS4KLQkJUmVmZXIgdG8gdGhlIGN0YWdzIGRvY3VtZW50YXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlCi0JCWZpZWxkcy4gIEZvciBDIGNvZGUgdGhlIGZpZWxkcyAic3RydWN0IiwgImNsYXNzIiBhbmQgImVudW0iCi0JCW1heSBhcHBlYXIsIHRoZXkgZ2l2ZSB0aGUgbmFtZSBvZiB0aGUgZW50aXR5IHRoZSB0YWcgaXMKLQkJY29udGFpbmVkIGluLgorCQlUaGUgImtpbmQiIGVudHJ5IGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgRXh1YmVyYW50IGN0YWdzCisJCWdlbmVyYXRlZCB0YWdzIGZpbGUuICBNb3JlIGVudHJpZXMgbWF5IGJlIHByZXNlbnQsIGRlcGVuZGluZworCQlvbiB0aGUgY29udGVudCBvZiB0aGUgdGFncyBmaWxlOiBhY2Nlc3MsIGltcGxlbWVudGF0aW9uLAorCQlpbmhlcml0cyBhbmQgc2lnbmF0dXJlLiAgUmVmZXIgdG8gdGhlIGN0YWdzIGRvY3VtZW50YXRpb24gZm9yCisJCWluZm9ybWF0aW9uIGFib3V0IHRoZXNlIGZpZWxkcy4gIEZvciBDIGNvZGUgdGhlIGZpZWxkcworCQkic3RydWN0IiwgImNsYXNzIiBhbmQgImVudW0iIG1heSBhcHBlYXIsIHRoZXkgZ2l2ZSB0aGUgbmFtZSBvZgorCQl0aGUgZW50aXR5IHRoZSB0YWcgaXMgY29udGFpbmVkIGluLgorIAorCQlUaGUgZXgtY29tbWFuZCAnY21kJyBjYW4gYmUgZWl0aGVyIGFuIGV4IHNlYXJjaCBwYXR0ZXJuLCBhCisJCWxpbmUgbnVtYmVyIG9yIGEgbGluZSBudW1iZXIgZm9sbG93ZWQgYnkgYSBieXRlIG51bWJlci4KIAogCQlJZiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgdGFncywgdGhlbiBhbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmltLWl0LjEgYi9ydW50aW1lL2RvYy9ldmltLWl0LjEKaW5kZXggNjQ0Zjc5My4uNDhlOWE4MyAxMDA3NTUKLS0tIGEvcnVudGltZS9kb2MvZXZpbS1pdC4xCisrKyBiL3J1bnRpbWUvZG9jL2V2aW0taXQuMQpAQCAtMjUsNyArMjUsNyBAQAogTGEgbW9kaWZpY2EgZmlsZSBzYXLgIG1vbHRvIG1lbm8gZWZmaWNpZW50ZS4KIC5QUAogLkIgZXZpZXcKLWNvbWUgc29wcmEsIG1hIHBhcnRlIGluIG1vZGFsaXTgICJTb2xhIExldHR1cmEiLiAgRnVuemlvbmEgY29tZSBldmltIC1SLgorY29tZSBzb3ByYSwgbWEgcGFydGUgaW4gbW9kYWxpdOAgIlNvbGEgTGV0dHVyYSIuICBGdW56aW9uYSBjb21lIGV2aW0gXC1SLgogLlBQCiBWZWRlcmUgdmltKDEpIHBlciBkZXR0YWdsaSByaWd1YXJkbyBhIFZpbSwgb3B6aW9uaSwgZXRjLgogLlBQCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9ldmltLjEgYi9ydW50aW1lL2RvYy9ldmltLjEKaW5kZXggYmQyNWVkNi4uYmI4NTljZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZpbS4xCisrKyBiL3J1bnRpbWUvZG9jL2V2aW0uMQpAQCAtMjEsNyArMjEsNyBAQAogRWRpdGluZyB3aWxsIGJlIG11Y2ggbGVzcyBlZmZpY2llbnQuCiAuUFAKIC5CIGV2aWV3Ci1pcyB0aGUgc2FtZSwgYnV0IHN0YXJ0cyBpbiByZWFkLW9ubHkgbW9kZS4gIEl0IHdvcmtzIGp1c3QgbGlrZSBldmltIC1SLgoraXMgdGhlIHNhbWUsIGJ1dCBzdGFydHMgaW4gcmVhZC1vbmx5IG1vZGUuICBJdCB3b3JrcyBqdXN0IGxpa2UgZXZpbSBcLVIuCiAuUFAKIFNlZSB2aW0oMSkgZm9yIGRldGFpbHMgYWJvdXQgVmltLCBvcHRpb25zLCBldGMuCiAuUFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IDFjZmZmODQuLjg3OTUzZGMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtNjQ1OSw2ICs2NDU5LDcgQEAKIHRhZy1zZWN1cml0eQl0YWdzcmNoLnR4dAkvKnRhZy1zZWN1cml0eSoKIHRhZy1za2lwLWZpbGUJdGFnc3JjaC50eHQJLyp0YWctc2tpcC1maWxlKgogdGFnLXN0YWNrCXRhZ3NyY2gudHh0CS8qdGFnLXN0YWNrKgordGFnbGlzdCgpCWV2YWwudHh0CS8qdGFnbGlzdCgpKgogdGFncwl0YWdzcmNoLnR4dAkvKnRhZ3MqCiB0YWdzLWFuZC1zZWFyY2hlcwl0YWdzcmNoLnR4dAkvKnRhZ3MtYW5kLXNlYXJjaGVzKgogdGFncy1maWxlLWNoYW5nZWQJdmVyc2lvbjUudHh0CS8qdGFncy1maWxlLWNoYW5nZWQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92aW0uMSBiL3J1bnRpbWUvZG9jL3ZpbS4xCmluZGV4IDZmYTk0OWIuLmI5OGE5NmUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZpbS4xCisrKyBiL3J1bnRpbWUvZG9jL3ZpbS4xCkBAIC03LDcgKzcsNyBAQAogW29wdGlvbnNdIFtmaWxlIC4uXQogLmJyCiAuQiB2aW0KLVtvcHRpb25zXSAtCitbb3B0aW9uc10gXC0KIC5icgogLkIgdmltCiBbb3B0aW9uc10gXC10IHRhZwpAQCAtNjksMTMgKzY5LDEzIEBACiBUaGUgZmlyc3Qgb25lIHdpbGwgYmUgdGhlIGN1cnJlbnQgZmlsZSBhbmQgcmVhZCBpbnRvIHRoZSBidWZmZXIuCiBUaGUgY3Vyc29yIHdpbGwgYmUgcG9zaXRpb25lZCBvbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYnVmZmVyLgogWW91IGNhbiBnZXQgdG8gdGhlIG90aGVyIGZpbGVzIHdpdGggdGhlICI6bmV4dCIgY29tbWFuZC4KLVRvIGVkaXQgYSBmaWxlIHRoYXQgc3RhcnRzIHdpdGggYSBkYXNoLCBwcmVjZWRlIHRoZSBmaWxlbGlzdCB3aXRoICItLSIuCitUbyBlZGl0IGEgZmlsZSB0aGF0IHN0YXJ0cyB3aXRoIGEgZGFzaCwgcHJlY2VkZSB0aGUgZmlsZWxpc3Qgd2l0aCAiXC1cLSIuCiAuVFAKLS0KK1wtCiBUaGUgZmlsZSB0byBlZGl0IGlzIHJlYWQgZnJvbSBzdGRpbi4gIENvbW1hbmRzIGFyZSByZWFkIGZyb20gc3RkZXJyLCB3aGljaAogc2hvdWxkIGJlIGEgdHR5LgogLlRQCi0tdCB7dGFnfQorXC10IHt0YWd9CiBUaGUgZmlsZSB0byBlZGl0IGFuZCB0aGUgaW5pdGlhbCBjdXJzb3IgcG9zaXRpb24gZGVwZW5kcyBvbiBhICJ0YWciLCBhIHNvcnQKIG9mIGdvdG8gbGFiZWwuCiB7dGFnfSBpcyBsb29rZWQgdXAgaW4gdGhlIHRhZ3MgZmlsZSwgdGhlIGFzc29jaWF0ZWQgZmlsZSBiZWNvbWVzIHRoZSBjdXJyZW50CkBAIC04Niw3ICs4Niw3IEBACiBhbmQgdGhlIGN1cnNvciBpcyBwb3NpdGlvbmVkIG9uIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24uCiBTZWUgIjpoZWxwIHRhZy1jb21tYW5kcyIuCiAuVFAKLS1xIFtlcnJvcmZpbGVdCitcLXEgW2Vycm9yZmlsZV0KIFN0YXJ0IGluIHF1aWNrRml4IG1vZGUuCiBUaGUgZmlsZSBbZXJyb3JmaWxlXSBpcyByZWFkIGFuZCB0aGUgZmlyc3QgZXJyb3IgaXMgZGlzcGxheWVkLgogSWYgW2Vycm9yZmlsZV0gaXMgb21pdHRlZCwgdGhlIGZpbGVuYW1lIGlzIG9idGFpbmVkIGZyb20gdGhlICdlcnJvcmZpbGUnCkBAIC0xMDUsMjcgKzEwNSwyNyBAQAogZXgKIFN0YXJ0IGluIEV4IG1vZGUuCiBHbyB0byBOb3JtYWwgbW9kZSB3aXRoIHRoZSAiOnZpIiBjb21tYW5kLgotQ2FuIGFsc28gYmUgZG9uZSB3aXRoIHRoZSAiLWUiIGFyZ3VtZW50LgorQ2FuIGFsc28gYmUgZG9uZSB3aXRoIHRoZSAiXC1lIiBhcmd1bWVudC4KIC5UUAogdmlldwogU3RhcnQgaW4gcmVhZC1vbmx5IG1vZGUuICBZb3Ugd2lsbCBiZSBwcm90ZWN0ZWQgZnJvbSB3cml0aW5nIHRoZSBmaWxlcy4gIENhbgotYWxzbyBiZSBkb25lIHdpdGggdGhlICItUiIgYXJndW1lbnQuCithbHNvIGJlIGRvbmUgd2l0aCB0aGUgIlwtUiIgYXJndW1lbnQuCiAuVFAKIGd2aW0gZ3ZpZXcKIFRoZSBHVUkgdmVyc2lvbi4KIFN0YXJ0cyBhIG5ldyB3aW5kb3cuCi1DYW4gYWxzbyBiZSBkb25lIHdpdGggdGhlICItZyIgYXJndW1lbnQuCitDYW4gYWxzbyBiZSBkb25lIHdpdGggdGhlICJcLWciIGFyZ3VtZW50LgogLlRQCiBldmltIGV2aWV3CiBUaGUgR1VJIHZlcnNpb24gaW4gZWFzeSBtb2RlLgogU3RhcnRzIGEgbmV3IHdpbmRvdy4KLUNhbiBhbHNvIGJlIGRvbmUgd2l0aCB0aGUgIi15IiBhcmd1bWVudC4KK0NhbiBhbHNvIGJlIGRvbmUgd2l0aCB0aGUgIlwteSIgYXJndW1lbnQuCiAuVFAKIHJ2aW0gcnZpZXcgcmd2aW0gcmd2aWV3CiBMaWtlIHRoZSBhYm92ZSwgYnV0IHdpdGggcmVzdHJpY3Rpb25zLiAgSXQgd2lsbCBub3QgYmUgcG9zc2libGUgdG8gc3RhcnQgc2hlbGwKIGNvbW1hbmRzLCBvciBzdXNwZW5kCiAuQiBWaW0uCi1DYW4gYWxzbyBiZSBkb25lIHdpdGggdGhlICItWiIgYXJndW1lbnQuCitDYW4gYWxzbyBiZSBkb25lIHdpdGggdGhlICJcLVoiIGFyZ3VtZW50LgogLlNIIE9QVElPTlMKIFRoZSBvcHRpb25zIG1heSBiZSBnaXZlbiBpbiBhbnkgb3JkZXIsIGJlZm9yZSBvciBhZnRlciBmaWxlbmFtZXMuCiBPcHRpb25zIHdpdGhvdXQgYW4gYXJndW1lbnQgY2FuIGJlIGNvbWJpbmVkIGFmdGVyIGEgc2luZ2xlIGRhc2guCkBAIC0xNDEsNyArMTQxLDcgQEAKIC5UUAogK3tjb21tYW5kfQogLlRQCi0tYyB7Y29tbWFuZH0KK1wtYyB7Y29tbWFuZH0KIHtjb21tYW5kfSB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZQogZmlyc3QgZmlsZSBoYXMgYmVlbiByZWFkLgoge2NvbW1hbmR9IGlzIGludGVycHJldGVkIGFzIGFuIEV4IGNvbW1hbmQuCkBAIC0xNDksMjEgKzE0OSwyMSBAQAogZGVwZW5kcyBvbiB0aGUgc2hlbGwgdGhhdCBpcyB1c2VkKS4KIEV4YW1wbGU6IFZpbSAiK3NldCBzaSIgbWFpbi5jCiAuYnIKLU5vdGU6IFlvdSBjYW4gdXNlIHVwIHRvIDEwICIrIiBvciAiLWMiIGNvbW1hbmRzLgorTm90ZTogWW91IGNhbiB1c2UgdXAgdG8gMTAgIisiIG9yICJcLWMiIGNvbW1hbmRzLgogLlRQCi0tUyB7ZmlsZX0KK1wtUyB7ZmlsZX0KIHtmaWxlfSB3aWxsIGJlIHNvdXJjZWQgYWZ0ZXIgdGhlIGZpcnN0IGZpbGUgaGFzIGJlZW4gcmVhZC4KLVRoaXMgaXMgZXF1aXZhbGVudCB0byAtYyAic291cmNlIHtmaWxlfSIuCi17ZmlsZX0gY2Fubm90IHN0YXJ0IHdpdGggJy0nLgotSWYge2ZpbGV9IGlzIG9taXR0ZWQgIlNlc3Npb24udmltIiBpcyB1c2VkIChvbmx5IHdvcmtzIHdoZW4gLVMgaXMgdGhlIGxhc3QKK1RoaXMgaXMgZXF1aXZhbGVudCB0byBcLWMgInNvdXJjZSB7ZmlsZX0iLgore2ZpbGV9IGNhbm5vdCBzdGFydCB3aXRoICdcLScuCitJZiB7ZmlsZX0gaXMgb21pdHRlZCAiU2Vzc2lvbi52aW0iIGlzIHVzZWQgKG9ubHkgd29ya3Mgd2hlbiBcLVMgaXMgdGhlIGxhc3QKIGFyZ3VtZW50KS4KIC5UUAotLS1jbWQge2NvbW1hbmR9Ci1MaWtlIHVzaW5nICItYyIsIGJ1dCB0aGUgY29tbWFuZCBpcyBleGVjdXRlZCBqdXN0IGJlZm9yZQorXC1cLWNtZCB7Y29tbWFuZH0KK0xpa2UgdXNpbmcgIlwtYyIsIGJ1dCB0aGUgY29tbWFuZCBpcyBleGVjdXRlZCBqdXN0IGJlZm9yZQogcHJvY2Vzc2luZyBhbnkgdmltcmMgZmlsZS4KLVlvdSBjYW4gdXNlIHVwIHRvIDEwIG9mIHRoZXNlIGNvbW1hbmRzLCBpbmRlcGVuZGVudGx5IGZyb20gIi1jIiBjb21tYW5kcy4KK1lvdSBjYW4gdXNlIHVwIHRvIDEwIG9mIHRoZXNlIGNvbW1hbmRzLCBpbmRlcGVuZGVudGx5IGZyb20gIlwtYyIgY29tbWFuZHMuCiAuVFAKLS1BCitcLUEKIElmCiAuQiBWaW0KIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggQVJBQklDIHN1cHBvcnQgZm9yIGVkaXRpbmcgcmlnaHQtdG8tbGVmdApAQCAtMTc0LDQ1ICsxNzQsNDUgQEAKIC5CIFZpbQogYWJvcnRzLgogLlRQCi0tYgorXC1iCiBCaW5hcnkgbW9kZS4KIEEgZmV3IG9wdGlvbnMgd2lsbCBiZSBzZXQgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0byBlZGl0IGEgYmluYXJ5IG9yCiBleGVjdXRhYmxlIGZpbGUuCiAuVFAKLS1DCitcLUMKIENvbXBhdGlibGUuICBTZXQgdGhlICdjb21wYXRpYmxlJyBvcHRpb24uCiBUaGlzIHdpbGwgbWFrZQogLkIgVmltCiBiZWhhdmUgbW9zdGx5IGxpa2UgVmksIGV2ZW4gdGhvdWdoIGEgLnZpbXJjIGZpbGUgZXhpc3RzLgogLlRQCi0tZAorXC1kCiBTdGFydCBpbiBkaWZmIG1vZGUuCiBUaGVyZSBzaG91bGQgYmUgdHdvIG9yIHRocmVlIGZpbGUgbmFtZSBhcmd1bWVudHMuCiAuQiBWaW0KIHdpbGwgb3BlbiBhbGwgdGhlIGZpbGVzIGFuZCBzaG93IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlbS4KIFdvcmtzIGxpa2UgdmltZGlmZigxKS4KIC5UUAotLWQge2RldmljZX0KK1wtZCB7ZGV2aWNlfQogT3BlbiB7ZGV2aWNlfSBmb3IgdXNlIGFzIGEgdGVybWluYWwuCiBPbmx5IG9uIHRoZSBBbWlnYS4KIEV4YW1wbGU6CiAiXC1kIGNvbjoyMC8zMC82MDAvMTUwIi4KIC5UUAotLUQKK1wtRAogRGVidWdnaW5nLiAgR28gdG8gZGVidWdnaW5nIG1vZGUgd2hlbiBleGVjdXRpbmcgdGhlIGZpcnN0IGNvbW1hbmQgZnJvbSBhCiBzY3JpcHQuCiAuVFAKLS1lCitcLWUKIFN0YXJ0CiAuQiBWaW0KIGluIEV4IG1vZGUsIGp1c3QgbGlrZSB0aGUgZXhlY3V0YWJsZSB3YXMgY2FsbGVkICJleCIuCiAuVFAKLS1FCitcLUUKIFN0YXJ0CiAuQiBWaW0KIGluIGltcHJvdmVkIEV4IG1vZGUsIGp1c3QgbGlrZSB0aGUgZXhlY3V0YWJsZSB3YXMgY2FsbGVkICJleGltIi4KIC5UUAotLWYKK1wtZgogRm9yZWdyb3VuZC4gIEZvciB0aGUgR1VJIHZlcnNpb24sCiAuQiBWaW0KIHdpbGwgbm90IGZvcmsgYW5kIGRldGFjaCBmcm9tIHRoZSBzaGVsbCBpdCB3YXMgc3RhcnRlZCBpbi4KQEAgLTIyNSwxMiArMjI1LDEyIEBACiBzZXNzaW9uIHRvIGZpbmlzaCAoZS5nLiBtYWlsKS4KIE9uIHRoZSBBbWlnYSB0aGUgIjpzaCIgYW5kICI6ISIgY29tbWFuZHMgd2lsbCBub3Qgd29yay4KIC5UUAotLS1ub2ZvcmsKK1wtXC1ub2ZvcmsKIEZvcmVncm91bmQuICBGb3IgdGhlIEdVSSB2ZXJzaW9uLAogLkIgVmltCiB3aWxsIG5vdCBmb3JrIGFuZCBkZXRhY2ggZnJvbSB0aGUgc2hlbGwgaXQgd2FzIHN0YXJ0ZWQgaW4uCiAuVFAKLS1GCitcLUYKIElmCiAuQiBWaW0KIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggRktNQVAgc3VwcG9ydCBmb3IgZWRpdGluZyByaWdodC10by1sZWZ0CkBAIC0yNDEsNyArMjQxLDcgQEAKIC5CIFZpbQogYWJvcnRzLgogLlRQCi0tZworXC1nCiBJZgogLkIgVmltCiBoYXMgYmVlbiBjb21waWxlZCB3aXRoIEdVSSBzdXBwb3J0LCB0aGlzIG9wdGlvbiBlbmFibGVzIHRoZSBHVUkuCkBAIC0yNDksMTMgKzI0OSwxMyBAQAogLkIgVmltCiBhYm9ydHMuCiAuVFAKLS1oCitcLWgKIEdpdmUgYSBiaXQgb2YgaGVscCBhYm91dCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgb3B0aW9ucy4KIEFmdGVyIHRoaXMKIC5CIFZpbQogZXhpdHMuCiAuVFAKLS1ICitcLUgKIElmCiAuQiBWaW0KIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggUklHSFRMRUZUIHN1cHBvcnQgZm9yIGVkaXRpbmcgcmlnaHQtdG8tbGVmdApAQCAtMjY2LDg3ICsyNjYsODcgQEAKIC5CIFZpbQogYWJvcnRzLgogLlRQCi0taSB7dmltaW5mb30KK1wtaSB7dmltaW5mb30KIFdoZW4gdXNpbmcgdGhlIHZpbWluZm8gZmlsZSBpcyBlbmFibGVkLCB0aGlzIG9wdGlvbiBzZXRzIHRoZSBmaWxlbmFtZSB0byB1c2UsCiBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICJ+Ly52aW1pbmZvIi4KIFRoaXMgY2FuIGFsc28gYmUgdXNlZCB0byBza2lwIHRoZSB1c2Ugb2YgdGhlIC52aW1pbmZvIGZpbGUsIGJ5IGdpdmluZyB0aGUgbmFtZQogIk5PTkUiLgogLlRQCi0tTAotU2FtZSBhcyAtci4KK1wtTAorU2FtZSBhcyBcLXIuCiAuVFAKLS1sCitcLWwKIExpc3AgbW9kZS4KIFNldHMgdGhlICdsaXNwJyBhbmQgJ3Nob3dtYXRjaCcgb3B0aW9ucyBvbi4KIC5UUAotLW0KK1wtbQogTW9kaWZ5aW5nIGZpbGVzIGlzIGRpc2FibGVkLgogUmVzZXRzIHRoZSAnd3JpdGUnIG9wdGlvbi4KIFlvdSBjYW4gc3RpbGwgbW9kaWZ5IHRoZSBidWZmZXIsIGJ1dCB3cml0aW5nIGEgZmlsZSBpcyBub3QgcG9zc2libGUuCiAuVFAKLS1NCitcLU0KIE1vZGlmaWNhdGlvbnMgbm90IGFsbG93ZWQuICBUaGUgJ21vZGlmaWFibGUnIGFuZCAnd3JpdGUnIG9wdGlvbnMgd2lsbCBiZSB1bnNldCwKIHNvIHRoYXQgY2hhbmdlcyBhcmUgbm90IGFsbG93ZWQgYW5kIGZpbGVzIGNhbiBub3QgYmUgd3JpdHRlbi4gIE5vdGUgdGhhdCB0aGVzZQogb3B0aW9ucyBjYW4gYmUgc2V0IHRvIGVuYWJsZSBtYWtpbmcgbW9kaWZpY2F0aW9ucy4KIC5UUAotLU4KK1wtTgogTm8tY29tcGF0aWJsZSBtb2RlLiAgUmVzZXQgdGhlICdjb21wYXRpYmxlJyBvcHRpb24uCiBUaGlzIHdpbGwgbWFrZQogLkIgVmltCiBiZWhhdmUgYSBiaXQgYmV0dGVyLCBidXQgbGVzcyBWaSBjb21wYXRpYmxlLCBldmVuIHRob3VnaCBhIC52aW1yYyBmaWxlIGRvZXMKIG5vdCBleGlzdC4KIC5UUAotLW4KK1wtbgogTm8gc3dhcCBmaWxlIHdpbGwgYmUgdXNlZC4KIFJlY292ZXJ5IGFmdGVyIGEgY3Jhc2ggd2lsbCBiZSBpbXBvc3NpYmxlLgogSGFuZHkgaWYgeW91IHdhbnQgdG8gZWRpdCBhIGZpbGUgb24gYSB2ZXJ5IHNsb3cgbWVkaXVtIChlLmcuIGZsb3BweSkuCiBDYW4gYWxzbyBiZSBkb25lIHdpdGggIjpzZXQgdWM9MCIuCiBDYW4gYmUgdW5kb25lIHdpdGggIjpzZXQgdWM9MjAwIi4KIC5UUAotLW5iCitcLW5iCiBCZWNvbWUgYW4gZWRpdG9yIHNlcnZlciBmb3IgTmV0QmVhbnMuICBTZWUgdGhlIGRvY3MgZm9yIGRldGFpbHMuCiAuVFAKLS1vW05dCitcLW9bTl0KIE9wZW4gTiB3aW5kb3dzIHN0YWNrZWQuCiBXaGVuIE4gaXMgb21pdHRlZCwgb3BlbiBvbmUgd2luZG93IGZvciBlYWNoIGZpbGUuCiAuVFAKLS1PW05dCitcLU9bTl0KIE9wZW4gTiB3aW5kb3dzIHNpZGUgYnkgc2lkZS4KIFdoZW4gTiBpcyBvbWl0dGVkLCBvcGVuIG9uZSB3aW5kb3cgZm9yIGVhY2ggZmlsZS4KIC5UUAotLVIKK1wtUgogUmVhZC1vbmx5IG1vZGUuCiBUaGUgJ3JlYWRvbmx5JyBvcHRpb24gd2lsbCBiZSBzZXQuCiBZb3UgY2FuIHN0aWxsIGVkaXQgdGhlIGJ1ZmZlciwgYnV0IHdpbGwgYmUgcHJldmVudGVkIGZyb20gYWNjaWRlbnRseQogb3ZlcndyaXRpbmcgYSBmaWxlLgogSWYgeW91IGRvIHdhbnQgdG8gb3ZlcndyaXRlIGEgZmlsZSwgYWRkIGFuIGV4Y2xhbWF0aW9uIG1hcmsgdG8gdGhlIEV4IGNvbW1hbmQsCiBhcyBpbiAiOnchIi4KLVRoZSAtUiBvcHRpb24gYWxzbyBpbXBsaWVzIHRoZSAtbiBvcHRpb24gKHNlZSBiZWxvdykuCitUaGUgXC1SIG9wdGlvbiBhbHNvIGltcGxpZXMgdGhlIFwtbiBvcHRpb24gKHNlZSBiZWxvdykuCiBUaGUgJ3JlYWRvbmx5JyBvcHRpb24gY2FuIGJlIHJlc2V0IHdpdGggIjpzZXQgbm9ybyIuCiBTZWUgIjpoZWxwICdyZWFkb25seSciLgogLlRQCi0tcgorXC1yCiBMaXN0IHN3YXAgZmlsZXMsIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgdGhlbSBmb3IgcmVjb3ZlcnkuCiAuVFAKLS1yIHtmaWxlfQorXC1yIHtmaWxlfQogUmVjb3ZlcnkgbW9kZS4KIFRoZSBzd2FwIGZpbGUgaXMgdXNlZCB0byByZWNvdmVyIGEgY3Jhc2hlZCBlZGl0aW5nIHNlc3Npb24uCiBUaGUgc3dhcCBmaWxlIGlzIGEgZmlsZSB3aXRoIHRoZSBzYW1lIGZpbGVuYW1lIGFzIHRoZSB0ZXh0IGZpbGUgd2l0aCAiLnN3cCIKIGFwcGVuZGVkLgogU2VlICI6aGVscCByZWNvdmVyeSIuCiAuVFAKLS1zCi1TaWxlbnQgbW9kZS4gIE9ubHkgd2hlbiBzdGFydGVkIGFzICJFeCIgb3Igd2hlbiB0aGUgIi1lIiBvcHRpb24gd2FzIGdpdmVuCi1iZWZvcmUgdGhlICItcyIgb3B0aW9uLgorXC1zCitTaWxlbnQgbW9kZS4gIE9ubHkgd2hlbiBzdGFydGVkIGFzICJFeCIgb3Igd2hlbiB0aGUgIlwtZSIgb3B0aW9uIHdhcyBnaXZlbgorYmVmb3JlIHRoZSAiXC1zIiBvcHRpb24uCiAuVFAKLS1zIHtzY3JpcHRpbn0KK1wtcyB7c2NyaXB0aW59CiBUaGUgc2NyaXB0IGZpbGUge3NjcmlwdGlufSBpcyByZWFkLgogVGhlIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgYXJlIGludGVycHJldGVkIGFzIGlmIHlvdSBoYWQgdHlwZWQgdGhlbS4KIFRoZSBzYW1lIGNhbiBiZSBkb25lIHdpdGggdGhlIGNvbW1hbmQgIjpzb3VyY2UhIHtzY3JpcHRpbn0iLgogSWYgdGhlIGVuZCBvZiB0aGUgZmlsZSBpcyByZWFjaGVkIGJlZm9yZSB0aGUgZWRpdG9yIGV4aXRzLCBmdXJ0aGVyIGNoYXJhY3RlcnMKIGFyZSByZWFkIGZyb20gdGhlIGtleWJvYXJkLgogLlRQCi0tVCB7dGVybWluYWx9CitcLVQge3Rlcm1pbmFsfQogVGVsbHMKIC5CIFZpbQogdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIHlvdSBhcmUgdXNpbmcuCkBAIC0zNTYsNDkgKzM1Niw0OSBAQAogLkIgVmltCiAoYnVpbHRpbikgb3IgZGVmaW5lZCBpbiB0aGUgdGVybWNhcCBvciB0ZXJtaW5mbyBmaWxlLgogLlRQCi0tdSB7dmltcmN9CitcLXUge3ZpbXJjfQogVXNlIHRoZSBjb21tYW5kcyBpbiB0aGUgZmlsZSB7dmltcmN9IGZvciBpbml0aWFsaXphdGlvbnMuCiBBbGwgdGhlIG90aGVyIGluaXRpYWxpemF0aW9ucyBhcmUgc2tpcHBlZC4KIFVzZSB0aGlzIHRvIGVkaXQgYSBzcGVjaWFsIGtpbmQgb2YgZmlsZXMuCiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIHNraXAgYWxsIGluaXRpYWxpemF0aW9ucyBieSBnaXZpbmcgdGhlIG5hbWUgIk5PTkUiLgogU2VlICI6aGVscCBpbml0aWFsaXphdGlvbiIgd2l0aGluIHZpbSBmb3IgbW9yZSBkZXRhaWxzLgogLlRQCi0tVSB7Z3ZpbXJjfQorXC1VIHtndmltcmN9CiBVc2UgdGhlIGNvbW1hbmRzIGluIHRoZSBmaWxlIHtndmltcmN9IGZvciBHVUkgaW5pdGlhbGl6YXRpb25zLgogQWxsIHRoZSBvdGhlciBHVUkgaW5pdGlhbGl6YXRpb25zIGFyZSBza2lwcGVkLgogSXQgY2FuIGFsc28gYmUgdXNlZCB0byBza2lwIGFsbCBHVUkgaW5pdGlhbGl6YXRpb25zIGJ5IGdpdmluZyB0aGUgbmFtZSAiTk9ORSIuCiBTZWUgIjpoZWxwIGd1aS1pbml0IiB3aXRoaW4gdmltIGZvciBtb3JlIGRldGFpbHMuCiAuVFAKLS1WW05dCitcLVZbTl0KIFZlcmJvc2UuICBHaXZlIG1lc3NhZ2VzIGFib3V0IHdoaWNoIGZpbGVzIGFyZSBzb3VyY2VkIGFuZCBmb3IgcmVhZGluZyBhbmQKIHdyaXRpbmcgYSB2aW1pbmZvIGZpbGUuICBUaGUgb3B0aW9uYWwgbnVtYmVyIE4gaXMgdGhlIHZhbHVlIGZvciAndmVyYm9zZScuCiBEZWZhdWx0IGlzIDEwLgogLlRQCi0tdgorXC12CiBTdGFydAogLkIgVmltCiBpbiBWaSBtb2RlLCBqdXN0IGxpa2UgdGhlIGV4ZWN1dGFibGUgd2FzIGNhbGxlZCAidmkiLiAgVGhpcyBvbmx5IGhhcyBlZmZlY3QKIHdoZW4gdGhlIGV4ZWN1dGFibGUgaXMgY2FsbGVkICJleCIuCiAuVFAKLS13IHtzY3JpcHRvdXR9CitcLXcge3NjcmlwdG91dH0KIEFsbCB0aGUgY2hhcmFjdGVycyB0aGF0IHlvdSB0eXBlIGFyZSByZWNvcmRlZCBpbiB0aGUgZmlsZQoge3NjcmlwdG91dH0sIHVudGlsIHlvdSBleGl0CiAuQiBWaW0uCi1UaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBzY3JpcHQgZmlsZSB0byBiZSB1c2VkIHdpdGggInZpbSAtcyIgb3IKK1RoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIGNyZWF0ZSBhIHNjcmlwdCBmaWxlIHRvIGJlIHVzZWQgd2l0aCAidmltIFwtcyIgb3IKICI6c291cmNlISIuCiBJZiB0aGUge3NjcmlwdG91dH0gZmlsZSBleGlzdHMsIGNoYXJhY3RlcnMgYXJlIGFwcGVuZGVkLgogLlRQCi0tVyB7c2NyaXB0b3V0fQotTGlrZSAtdywgYnV0IGFuIGV4aXN0aW5nIGZpbGUgaXMgb3ZlcndyaXR0ZW4uCitcLVcge3NjcmlwdG91dH0KK0xpa2UgXC13LCBidXQgYW4gZXhpc3RpbmcgZmlsZSBpcyBvdmVyd3JpdHRlbi4KIC5UUAotLXgKK1wteAogVXNlIGVuY3J5cHRpb24gd2hlbiB3cml0aW5nIGZpbGVzLiAgV2lsbCBwcm9tcHQgZm9yIGEgY3J5cHQga2V5LgogLlRQCi0tWAorXC1YCiBEb24ndCBjb25uZWN0IHRvIHRoZSBYIHNlcnZlci4gIFNob3J0ZW5zIHN0YXJ0dXAgdGltZSBpbiBhIHRlcm1pbmFsLCBidXQgdGhlCiB3aW5kb3cgdGl0bGUgYW5kIGNsaXBib2FyZCB3aWxsIG5vdCBiZSB1c2VkLgogLlRQCi0teQorXC15CiBTdGFydAogLkIgVmltCiBpbiBlYXN5IG1vZGUsIGp1c3QgbGlrZSB0aGUgZXhlY3V0YWJsZSB3YXMgY2FsbGVkICJldmltIiBvciAiZXZpZXciLgpAQCAtNDA2LDU4ICs0MDYsNTggQEAKIC5CIFZpbQogYmVoYXZlIGxpa2UgYSBjbGljay1hbmQtdHlwZSBlZGl0b3IuCiAuVFAKLS1aCitcLVoKIFJlc3RyaWN0ZWQgbW9kZS4gIFdvcmtzIGxpa2UgdGhlIGV4ZWN1dGFibGUgc3RhcnRzIHdpdGggInIiLgogLlRQCi0tLQorXC1cLQogRGVub3RlcyB0aGUgZW5kIG9mIHRoZSBvcHRpb25zLgogQXJndW1lbnRzIGFmdGVyIHRoaXMgd2lsbCBiZSBoYW5kbGVkIGFzIGEgZmlsZSBuYW1lLgotVGhpcyBjYW4gYmUgdXNlZCB0byBlZGl0IGEgZmlsZW5hbWUgdGhhdCBzdGFydHMgd2l0aCBhICctJy4KK1RoaXMgY2FuIGJlIHVzZWQgdG8gZWRpdCBhIGZpbGVuYW1lIHRoYXQgc3RhcnRzIHdpdGggYSAnXC0nLgogLlRQCi0tLWVjaG8td2lkCitcLVwtZWNob1wtd2lkCiBHVEsgR1VJIG9ubHk6IEVjaG8gdGhlIFdpbmRvdyBJRCBvbiBzdGRvdXQuCiAuVFAKLS0taGVscAotR2l2ZSBhIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCwganVzdCBsaWtlICItaCIuCitcLVwtaGVscAorR2l2ZSBhIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCwganVzdCBsaWtlICJcLWgiLgogLlRQCi0tLWxpdGVyYWwKK1wtXC1saXRlcmFsCiBUYWtlIGZpbGUgbmFtZSBhcmd1bWVudHMgbGl0ZXJhbGx5LCBkbyBub3QgZXhwYW5kIHdpbGRjYXJkcy4gIFRoaXMgaGFzIG5vCiBlZmZlY3Qgb24gVW5peCB3aGVyZSB0aGUgc2hlbGwgZXhwYW5kcyB3aWxkY2FyZHMuCiAuVFAKLS0tbm9wbHVnaW4KLVNraXAgbG9hZGluZyBwbHVnaW5zLiAgSW1wbGllZCBieSAtdSBOT05FLgorXC1cLW5vcGx1Z2luCitTa2lwIGxvYWRpbmcgcGx1Z2lucy4gIEltcGxpZWQgYnkgXC11IE5PTkUuCiAuVFAKLS0tcmVtb3RlCitcLVwtcmVtb3RlCiBDb25uZWN0IHRvIGEgVmltIHNlcnZlciBhbmQgbWFrZSBpdCBlZGl0IHRoZSBmaWxlcyBnaXZlbiBpbiB0aGUgcmVzdCBvZiB0aGUKIGFyZ3VtZW50cy4gIElmIG5vIHNlcnZlciBpcyBmb3VuZCBhIHdhcm5pbmcgaXMgZ2l2ZW4gYW5kIHRoZSBmaWxlcyBhcmUgZWRpdGVkCiBpbiB0aGUgY3VycmVudCBWaW0uCiAuVFAKLS0tcmVtb3RlLWV4cHIge2V4cHJ9CitcLVwtcmVtb3RlXC1leHByIHtleHByfQogQ29ubmVjdCB0byBhIFZpbSBzZXJ2ZXIsIGV2YWx1YXRlIHtleHByfSBpbiBpdCBhbmQgcHJpbnQgdGhlIHJlc3VsdCBvbiBzdGRvdXQuCiAuVFAKLS0tcmVtb3RlLXNlbmQge2tleXN9CitcLVwtcmVtb3RlXC1zZW5kIHtrZXlzfQogQ29ubmVjdCB0byBhIFZpbSBzZXJ2ZXIgYW5kIHNlbmQge2tleXN9IHRvIGl0LgogLlRQCi0tLXJlbW90ZS1zaWxlbnQKLUFzIC0tcmVtb3RlLCBidXQgd2l0aG91dCB0aGUgd2FybmluZyB3aGVuIG5vIHNlcnZlciBpcyBmb3VuZC4KK1wtXC1yZW1vdGVcLXNpbGVudAorQXMgXC1cLXJlbW90ZSwgYnV0IHdpdGhvdXQgdGhlIHdhcm5pbmcgd2hlbiBubyBzZXJ2ZXIgaXMgZm91bmQuCiAuVFAKLS0tcmVtb3RlLXdhaXQKLUFzIC0tcmVtb3RlLCBidXQgVmltIGRvZXMgbm90IGV4aXQgdW50aWwgdGhlIGZpbGVzIGhhdmUgYmVlbiBlZGl0ZWQuCitcLVwtcmVtb3RlXC13YWl0CitBcyBcLVwtcmVtb3RlLCBidXQgVmltIGRvZXMgbm90IGV4aXQgdW50aWwgdGhlIGZpbGVzIGhhdmUgYmVlbiBlZGl0ZWQuCiAuVFAKLS0tcmVtb3RlLXdhaXQtc2lsZW50Ci1BcyAtLXJlbW90ZS13YWl0LCBidXQgd2l0aG91dCB0aGUgd2FybmluZyB3aGVuIG5vIHNlcnZlciBpcyBmb3VuZC4KK1wtXC1yZW1vdGVcLXdhaXRcLXNpbGVudAorQXMgXC1cLXJlbW90ZVwtd2FpdCwgYnV0IHdpdGhvdXQgdGhlIHdhcm5pbmcgd2hlbiBubyBzZXJ2ZXIgaXMgZm91bmQuCiAuVFAKLS0tc2VydmVybGlzdAorXC1cLXNlcnZlcmxpc3QKIExpc3QgdGhlIG5hbWVzIG9mIGFsbCBWaW0gc2VydmVycyB0aGF0IGNhbiBiZSBmb3VuZC4KIC5UUAotLS1zZXJ2ZXJuYW1lIHtuYW1lfQorXC1cLXNlcnZlcm5hbWUge25hbWV9CiBVc2Uge25hbWV9IGFzIHRoZSBzZXJ2ZXIgbmFtZS4gIFVzZWQgZm9yIHRoZSBjdXJyZW50IFZpbSwgdW5sZXNzIHVzZWQgd2l0aCBhCi0tLXJlbW90ZSBhcmd1bWVudCwgdGhlbiBpdCdzIHRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXIgdG8gY29ubmVjdCB0by4KK1wtXC1yZW1vdGUgYXJndW1lbnQsIHRoZW4gaXQncyB0aGUgbmFtZSBvZiB0aGUgc2VydmVyIHRvIGNvbm5lY3QgdG8uCiAuVFAKLS0tc29ja2V0aWQge2lkfQorXC1cLXNvY2tldGlkIHtpZH0KIEdUSyBHVUkgb25seTogVXNlIHRoZSBHdGtQbHVnIG1lY2hhbmlzbSB0byBydW4gZ3ZpbSBpbiBhbm90aGVyIHdpbmRvdy4KIC5UUAotLS12ZXJzaW9uCitcLVwtdmVyc2lvbgogUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdC4KIC5TSCBPTi1MSU5FIEhFTFAKIFR5cGUgIjpoZWxwIiBpbgpAQCAtNDY1LDcgKzQ2NSw3IEBACiB0byBnZXQgc3RhcnRlZC4KIFR5cGUgIjpoZWxwIHN1YmplY3QiIHRvIGdldCBoZWxwIG9uIGEgc3BlY2lmaWMgc3ViamVjdC4KIEZvciBleGFtcGxlOiAiOmhlbHAgWloiIHRvIGdldCBoZWxwIGZvciB0aGUgIlpaIiBjb21tYW5kLgotVXNlIDxUYWI+IGFuZCBDVFJMLUQgdG8gY29tcGxldGUgc3ViamVjdHMgKCI6aGVscCBjbWRsaW5lLWNvbXBsZXRpb24iKS4KK1VzZSA8VGFiPiBhbmQgQ1RSTC1EIHRvIGNvbXBsZXRlIHN1YmplY3RzICgiOmhlbHAgY21kbGluZVwtY29tcGxldGlvbiIpLgogVGFncyBhcmUgcHJlc2VudCB0byBqdW1wIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIgKHNvcnQgb2YgaHlwZXJ0ZXh0IGxpbmtzLAogc2VlICI6aGVscCIpLgogQWxsIGRvY3VtZW50YXRpb24gZmlsZXMgY2FuIGJlIHZpZXdlZCBpbiB0aGlzIHdheSwgZm9yIGV4YW1wbGUKQEAgLTQ3Niw3ICs0NzYsNyBAQAogVGhlCiAuQiBWaW0KIGRvY3VtZW50YXRpb24gZmlsZXMuCi1Vc2UgIjpoZWxwIGRvYy1maWxlLWxpc3QiIHRvIGdldCB0aGUgY29tcGxldGUgbGlzdC4KK1VzZSAiOmhlbHAgZG9jXC1maWxlXC1saXN0IiB0byBnZXQgdGhlIGNvbXBsZXRlIGxpc3QuCiAuVFAKIC91c3IvbG9jYWwvbGliL3ZpbS9kb2MvdGFncwogVGhlIHRhZ3MgZmlsZSB1c2VkIGZvciBmaW5kaW5nIGluZm9ybWF0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uIGZpbGVzLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmltZGlmZi1pdC4xIGIvcnVudGltZS9kb2MvdmltZGlmZi1pdC4xCmluZGV4IDk0MTdiOTAuLjhkODEyMjggMTAwNzU1Ci0tLSBhL3J1bnRpbWUvZG9jL3ZpbWRpZmYtaXQuMQorKysgYi9ydW50aW1lL2RvYy92aW1kaWZmLWl0LjEKQEAgLTM0LDggKzM0LDggQEAKIGxpbmVlIHVndWFsaSBmcmEgaSBkaXZlcnNpIGZpbGUgaW4gdW5hIHBpZWdhdHVyYS4gJ2ZvbGRjb2x1bW4nIOggaW1wb3N0YXRvCiBhIGR1ZSBwZXIgcG90ZXIgZmFjaWxtZW50ZSB2aXN1YWxpenphcmUgbGUgcGllZ2F0dXJlLCBhcHJpcmxlIGUgY2hpdWRlcmxlLgogLlNIIE9QWklPTkkKLUxvIHNjaGVybW8g6CBkaXZpc28gdmVydGljYWxtZW50ZSwgY29tZSBzZSBhdmVzdGUgdXNhdG8gbCdvcHppb25lICItTyIuCi1QZXIgZGl2aWRlcmxvIG9yaXp6b250YWxtZW50ZSwgdXNhcmUgbCdvcHppb25lICItbyIuCitMbyBzY2hlcm1vIOggZGl2aXNvIHZlcnRpY2FsbWVudGUsIGNvbWUgc2UgYXZlc3RlIHVzYXRvIGwnb3B6aW9uZSAiXC1PIi4KK1BlciBkaXZpZGVybG8gb3JpenpvbnRhbG1lbnRlLCB1c2FyZSBsJ29wemlvbmUgIlwtbyIuCiAuUFAKIFBlciB0dXR0ZSBsZSBhbHRyZSBvcHppb25pLCB2ZWRlcmUgdmltKDEpLgogLlNIIFZFREVSRSBBTkNIRQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MveHhkLjEgYi9ydW50aW1lL2RvYy94eGQuMQppbmRleCBjY2FlYjIyLi4zMDQ2Mjc1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy94eGQuMQorKysgYi9ydW50aW1lL2RvYy94eGQuMQpAQCAtMjEsOSArMjEsOSBAQAogY3JlYXRlcyBhIGhleCBkdW1wIG9mIGEgZ2l2ZW4gZmlsZSBvciBzdGFuZGFyZCBpbnB1dC4KIEl0IGNhbiBhbHNvIGNvbnZlcnQgYSBoZXggZHVtcCBiYWNrIHRvIGl0cyBvcmlnaW5hbCBiaW5hcnkgZm9ybS4KIExpa2UKLS5CUiB1dWVuY29kZSgxKQorLkJSIHV1ZW5jb2RlICgxKQogYW5kCi0uQlIgdXVkZWNvZGUoMSkKKy5CUiB1dWRlY29kZSAoMSkKIGl0IGFsbG93cyB0aGUgdHJhbnNtaXNzaW9uIG9mIGJpbmFyeSBkYXRhIGluIGEgYG1haWwtc2FmZScgQVNDSUkgcmVwcmVzZW50YXRpb24sCiBidXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgZGVjb2RpbmcgdG8gc3RhbmRhcmQgb3V0cHV0LgogTW9yZW92ZXIsIGl0IGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gYmluYXJ5IGZpbGUgcGF0Y2hpbmcuCkBAIC0xMTQsMTkgKzExNCwxOSBAQAogLlRQCiAuSSBcLXNlZWsgb2Zmc2V0CiBXaGVuIHVzZWQgYWZ0ZXIKLS5JIFwtcgotOiByZXZlcnQgd2l0aAorLklSIFwtciA6CityZXZlcnQgd2l0aAogLlJJIDwgb2Zmc2V0ID4KIGFkZGVkIHRvIGZpbGUgcG9zaXRpb25zIGZvdW5kIGluIGhleGR1bXAuCiAuVFAKLS5JIFwtcyBbXCtdW1wtXXNlZWsKKy5JIFwtcyBbK11bXC1dc2Vlawogc3RhcnQgYXQKIC5SSSA8IHNlZWsgPgogYnl0ZXMgYWJzLiAob3IgcmVsLikgaW5maWxlIG9mZnNldC4KLVxmSVwrIFxmUmluZGljYXRlcyB0aGF0IHRoZSBzZWVrIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHN0ZGluIGZpbGUgcG9zaXRpb24KK1xmSSsgZlJpbmRpY2F0ZXMgdGhhdCB0aGUgc2VlayBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBzdGRpbiBmaWxlIHBvc2l0aW9uCiAobWVhbmluZ2xlc3Mgd2hlbiBub3QgcmVhZGluZyBmcm9tIHN0ZGluKS4gIFxmSVwtIFxmUmluZGljYXRlcyB0aGF0IHRoZSBzZWVrCiBzaG91bGQgYmUgdGhhdCBtYW55IGNoYXJhY3RlcnMgZnJvbSB0aGUgZW5kIG9mIHRoZSBpbnB1dCAob3IgaWYgY29tYmluZWQgd2l0aAotXGZJIFwrIFxmUjogYmVmb3JlIHRoZSBjdXJyZW50IHN0ZGluIGZpbGUgcG9zaXRpb24pLgorXGZJK1xmUjogYmVmb3JlIHRoZSBjdXJyZW50IHN0ZGluIGZpbGUgcG9zaXRpb24pLgogV2l0aG91dCBcLXMgb3B0aW9uLCB4eGQgc3RhcnRzIGF0IHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uCiAuVFAKIC5JIFwtdQpAQCAtMTU5LDEyICsxNTksMTIgQEAKIC5icgogYW5kCiAuYnIKLVxmSSUgeHhkIFwtaSBcPCBmaWxlXGZSCitcZkklIHh4ZCBcLWkgPCBmaWxlXGZSCiAuUFAKIC5JIHh4ZCBcLXMgXCtzZWVrCiBtYXkgYmUgZGlmZmVyZW50IGZyb20KLS5JIHh4ZCBcLXMgc2VlawotLCBhcyBsc2VlaygyKSBpcyB1c2VkIHRvICJyZXdpbmQiIGlucHV0LiAgQSAnKycKKy5JUiAieHhkIFwtcyBzZWVrIiAsCithcyBsc2VlaygyKSBpcyB1c2VkIHRvICJyZXdpbmQiIGlucHV0LiAgQSAnKycKIG1ha2VzIGEgZGlmZmVyZW5jZSBpZiB0aGUgaW5wdXQgc291cmNlIGlzIHN0ZGluLCBhbmQgaWYgc3RkaW4ncyBmaWxlIHBvc2l0aW9uCiBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIGJ5IHRoZSB0aW1lIHh4ZCBpcyBzdGFydGVkIGFuZCBnaXZlbiBpdHMgaW5wdXQuCiBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIG1heSBoZWxwIHRvIGNsYXJpZnkgKG9yIGZ1cnRoZXIgY29uZnVzZSEpLi4uCkBAIC0xODAsNyArMTgwLDcgQEAKIC5icgogXGZJJSBzaCBcLWMgJ2RkIG9mPXBsYWluX3NuaXBwZXQgYnM9MWsgY291bnQ9MTsgeHhkIFwtcyArMTI4ID4gaGV4X3NuaXBwZXQnIDwgZmlsZQogLlBQCi1IZXhkdW1wIGZyb20gZmlsZSBwb3NpdGlvbiAweDEwMCAoID0gMTAyNC03NjgpIG9uLgorSGV4ZHVtcCBmcm9tIGZpbGUgcG9zaXRpb24gMHgxMDAgKCA9IDEwMjRcLTc2OCkgb24uCiAuYnIKIFxmSSUgc2ggXC1jICdkZCBvZj1wbGFpbl9zbmlwcGV0IGJzPTFrIGNvdW50PTE7IHh4ZCBcLXMgKy03NjggPiBoZXhfc25pcHBldCcgPCBmaWxlCiAuUFAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZmlsZXR5cGUudmltIGIvcnVudGltZS9maWxldHlwZS52aW0KaW5kZXggNzY4ZmQ1ZC4uNjAyMGE2NyAxMDA2NDQKLS0tIGEvcnVudGltZS9maWxldHlwZS52aW0KKysrIGIvcnVudGltZS9maWxldHlwZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzdXBwb3J0IGZpbGUgdG8gZGV0ZWN0IGZpbGUgdHlwZXMKICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDUgTWFyIDA2CisiIExhc3QgQ2hhbmdlOgkyMDA1IE1hciAxNwogCiAiIExpc3RlbiB2ZXJ5IGNhcmVmdWxseSwgSSB3aWxsIHNheSB0aGlzIG9ubHkgb25jZQogaWYgZXhpc3RzKCJkaWRfbG9hZF9maWxldHlwZXMiKQpAQCAtMzcsMTAgKzM3LDE4IEBACiAgIGxldCBnOmZ0X2lnbm9yZV9wYXQgPSAnXC5cKFpcfGd6XHxiejJcfHppcFx8dGd6XCkkJwogZW5kaWYKIAotIiBBYmFxdXMgb3IgVHJhc3lzCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5pbnAJCQljYWxsIEZUQ2hlY2tfaW5wKCkKKyIgRnVuY3Rpb24gdXNlZCBmb3IgcGF0dGVybnMgdGhhdCBlbmQgaW4gYSBzdGFyOiBkb24ndCBzZXQgdGhlIGZpbGV0eXBlIGlmIHRoZQorIiBmaWxlIG5hbWUgbWF0Y2hlcyBmdF9pZ25vcmVfcGF0LgorZnVuISBzOlN0YXJTZXRmKGZ0KQorICBpZiBleHBhbmQoIjxhbWF0Y2g+IikgIX4gZzpmdF9pZ25vcmVfcGF0CisgICAgZXhlICdzZXRmICcgLiBhOmZ0CisgIGVuZGlmCitlbmRmdW4KIAotZnVuISBGVENoZWNrX2lucCgpCisiIEFiYXF1cyBvciBUcmFzeXMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmlucAkJCWNhbGwgczpDaGVja19pbnAoKQorCitmdW4hIHM6Q2hlY2tfaW5wKCkKICAgaWYgZ2V0bGluZSgxKSA9fiAnXlwqJwogICAgIHNldGYgYWJhcXVzCiAgIGVsc2UKQEAgLTg4LDEwICs5NiwxMSBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGJ1aWxkLnhtbAkJCXNldGYgYW50CiAKICIgQXBhY2hlIHN0eWxlIGNvbmZpZyBmaWxlCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgcHJvZnRwZC5jb25mKgkJc2V0ZiBhcGFjaGVzdHlsZQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHByb2Z0cGQuY29uZioJCWNhbGwgczpTdGFyU2V0ZignYXBhY2hlc3R5bGUnKQogCiAiIEFwYWNoZSBjb25maWcgZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGh0dHBkLmNvbmYqLHNybS5jb25mKixhY2Nlc3MuY29uZiosLmh0YWNjZXNzLGFwYWNoZS5jb25mKixhcGFjaGUyLmNvbmYqLC9ldGMvYXBhY2hlMi8qLmNvbmYqIHNldGYgYXBhY2hlCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmh0YWNjZXNzCQkJIHNldGYgYXBhY2hlCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgaHR0cGQuY29uZiosc3JtLmNvbmYqLGFjY2Vzcy5jb25mKixhcGFjaGUuY29uZiosYXBhY2hlMi5jb25mKiwvZXRjL2FwYWNoZTIvKi5jb25mKiBjYWxsIHM6U3RhclNldGYoJ2FwYWNoZScpCiAKICIgWEE2NSBNT1M2NTEwIGNyb3NzIGFzc2VtYmxlcgogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYTY1CQkJc2V0ZiBhNjUKQEAgLTEzOCwxOCArMTQ3LDE4IEBACiAKICIgQXNzZW1ibHkgKGFsbCBraW5kcykKICIgKi5sc3QgaXMgbm90IHB1cmUgYXNzZW1ibHksIGl0IGhhcyB0d28gZXh0cmEgY29sdW1ucyAoYWRkcmVzcywgYnl0ZSBjb2RlcykKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmFzbSwqLltzU10sKi5bYUFdLCoubWFjLCoubHN0CWNhbGwgPFNJRD5GVGFzbSgpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5hc20sKi5bc1NdLCouW2FBXSwqLm1hYywqLmxzdAljYWxsIHM6RlRhc20oKQogCiAiIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciB0aGUga2luZCBvZiBhc3NlbWJseSB0aGF0IGlzIHdhbnRlZCBieSB0aGUgdXNlciwgb3IKICIgY2FuIGJlIGRldGVjdGVkIGZyb20gdGhlIGZpcnN0IGZpdmUgbGluZXMgb2YgdGhlIGZpbGUuCi1mdW4hIDxTSUQ+RlRhc20oKQorZnVuISBzOkZUYXNtKCkKICAgIiBtYWtlIHN1cmUgYjphc21zeW50YXggZXhpc3RzCiAgIGlmICFleGlzdHMoImI6YXNtc3ludGF4IikKICAgICBsZXQgYjphc21zeW50YXggPSAiIgogICBlbmRpZgogCiAgIGlmIGI6YXNtc3ludGF4ID09ICIiCi0gICAgY2FsbCBGVENoZWNrX2FzbXN5bnRheCgpCisgICAgY2FsbCBzOkZUYXNtc3ludGF4KCkKICAgZW5kaWYKIAogICAiIGlmIGI6YXNtc3ludGF4IHN0aWxsIGlzbid0IHNldCwgZGVmYXVsdCB0byBhc21zeW50YXggb3IgR05VCkBAIC0xNjQsNyArMTczLDcgQEAKICAgZXhlICJzZXRmICIgLiBiOmFzbXN5bnRheAogZW5kZnVuCiAKLWZ1biEgRlRDaGVja19hc21zeW50YXgoKQorZnVuISBzOkZUYXNtc3ludGF4KCkKICAgIiBzZWUgaWYgZmlsZSBjb250YWlucyBhbnkgYXNtc3ludGF4PWZvbyBvdmVycmlkZXMuIElmIHNvLCBjaGFuZ2UKICAgIiBiOmFzbXN5bnRheCBhcHByb3ByaWF0ZWx5CiAgIGxldCBoZWFkID0gIiAiLmdldGxpbmUoMSkuIiAiLmdldGxpbmUoMikuIiAiLmdldGxpbmUoMykuIiAiLmdldGxpbmUoNCkuCkBAIC0xOTUsMTEgKzIwNCwxMSBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubWNoLCoucmVmLCouaW1wCQlzZXRmIGIKIAogIiBCQVNJQyBvciBWaXN1YWwgQmFzaWMKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmJhcwkJCWNhbGwgPFNJRD5GVFZCKCJiYXNpYyIpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5iYXMJCQljYWxsIHM6RlRWQigiYmFzaWMiKQogCiAiIENoZWNrIGlmIG9uZSBvZiB0aGUgZmlyc3QgZml2ZSBsaW5lcyBjb250YWlucyAiVkJfTmFtZSIuICBJbiB0aGF0IGNhc2UgaXQgaXMKICIgcHJvYmFibHkgYSBWaXN1YWwgQmFzaWMgZmlsZS4gIE90aGVyd2lzZSBpdCdzIGFzc3VtZWQgdG8gYmUgImFsdCIgZmlsZXR5cGUuCi1mdW4hIDxTSUQ+RlRWQihhbHQpCitmdW4hIHM6RlRWQihhbHQpCiAgIGlmIGdldGxpbmUoMSkuZ2V0bGluZSgyKS5nZXRsaW5lKDMpLmdldGxpbmUoNCkuZ2V0bGluZSg1KSA9fj8gJ1ZCX05hbWVcfEJlZ2luIFZCXC5cKEZvcm1cfE1ESUZvcm1cfFVzZXJDb250cm9sXCknCiAgICAgc2V0ZiB2YgogICBlbHNlCkBAIC0yMTcsOCArMjI2LDggQEAKIAlcIGlmIGdldGxpbmUoMSkgPX4gJ14vXConIHwgc2V0ZiByZXh4IHwgZWxzZSB8IHNldGYgZG9zYmF0Y2ggfCBlbmRpZgogCiAiIEJhdGNoIGZpbGUgZm9yIDRET1MKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmJ0bQkJCWNhbGwgPFNJRD5GVGJ0bSgpCi1mdW4hIDxTSUQ+RlRidG0oKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYnRtCQkJY2FsbCBzOkZUYnRtKCkKK2Z1biEgczpGVGJ0bSgpCiAgIGlmIGV4aXN0cygiZzpkb3NiYXRjaF9zeW50YXhfZm9yX2J0bSIpICYmIGc6ZG9zYmF0Y2hfc3ludGF4X2Zvcl9idG0KICAgICBzZXRmIGRvc2JhdGNoCiAgIGVsc2UKQEAgLTI0NSw5ICsyNTQsOSBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYmwJCQlzZXRmIGJsYW5rCiAKICIgQyBvciBscGMKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmMJCQljYWxsIDxTSUQ+RlRscGMoKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouYwkJCWNhbGwgczpGVGxwYygpCiAKLWZ1biEgPFNJRD5GVGxwYygpCitmdW4hIHM6RlRscGMoKQogICBpZiBleGlzdHMoImc6bHBjX3N5bnRheF9mb3JfYyIpCiAgICAgbGV0IGxudW0gPSAxCiAgICAgd2hpbGUgbG51bSA8PSAxMgpAQCAtMjYyLDkgKzI3MSwxMCBAQAogZW5kZnVuCiAKICIgQ2FsZW5kYXIKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBjYWxlbmRhciwqLy5jYWxlbmRhci8qLAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGNhbGVuZGFyCQkJc2V0ZiBjYWxlbmRhcgorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovLmNhbGVuZGFyLyosCiAJXCovc2hhcmUvY2FsZW5kYXIvKi9jYWxlbmRhci4qLCovc2hhcmUvY2FsZW5kYXIvY2FsZW5kYXIuKgotCVwJCQkJCXNldGYgY2FsZW5kYXIKKwlcCQkJCQljYWxsIHM6U3RhclNldGYoJ2NhbGVuZGFyJykKIAogIiBDIwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouY3MJCQlzZXRmIGNzCkBAIC0zMjAsMTQgKzMzMCwxNCBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouLmNoCQkJc2V0ZiBjaGlsbAogCiAiIENoYW5nZXMgZm9yIFdFQiBhbmQgQ1dFQiBvciBDSElMTAotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouY2gJCQljYWxsIDxTSUQ+RlRjaGFuZ2UoKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouY2gJCQljYWxsIHM6RlRjaGFuZ2UoKQogCiAiIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIG9uZSBvZiB0aGUgZmlyc3QgdGVuIGxpbmVzIHN0YXJ0IHdpdGggYSAnQCcuICBJbgogIiB0aGF0IGNhc2UgaXQgaXMgcHJvYmFibHkgYSBjaGFuZ2UgZmlsZS4KICIgSWYgdGhlIGZpcnN0IGxpbmUgc3RhcnRzIHdpdGggIyBvciAhIGl0J3MgcHJvYmFibHkgYSBjaCBmaWxlLgogIiBJZiBhIGxpbmUgaGFzICJtYWluIiwgImluY2x1ZGUiLCAiLy8iIGlyICIvKiIgaXQncyBwcm9iYWJseSBjaC4KICIgT3RoZXJ3aXNlIENISUxMIGlzIGFzc3VtZWQuCi1mdW4hIDxTSUQ+RlRjaGFuZ2UoKQorZnVuISBzOkZUY2hhbmdlKCkKICAgbGV0IGxudW0gPSAxCiAgIHdoaWxlIGxudW0gPD0gMTAKICAgICBpZiBnZXRsaW5lKGxudW0pWzBdID09ICdAJwpAQCAtMzU4LDkgKzM2OCw5IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5lbmkJCQlzZXRmIGNsCiAKICIgQ2xldmVyIG9yIGR0ZAotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouZW50CQkJY2FsbCA8U0lEPkZUZW50KCkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmVudAkJCWNhbGwgczpGVGVudCgpCiAKLWZ1biEgPFNJRD5GVGVudCgpCitmdW4hIHM6RlRlbnQoKQogICAiIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGZvciB2YWxpZCBjbCBzeW50YXggaW4gdGhlIGZpcnN0IGZpdmUgbGluZXMuCiAgICIgTG9vayBmb3IgZWl0aGVyIGFuIG9wZW5pbmcgY29tbWVudCwgJyMnLCBvciBhIGJsb2NrIHN0YXJ0LCAneyIuCiAgICIgSWYgbm90IGZvdW5kLCBhc3N1bWUgU0dNTC4KQEAgLTQ4OSwxMiArNDk5LDEyIEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5lY2QJCQlzZXRmIGVjZAogCiAiIEVpZmZlbCBvciBTcGVjbWFuCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5lLCouRQkJCWNhbGwgRlRDaGVja19lKCkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmUsKi5FCQkJY2FsbCBzOkZUZSgpCiAKICIgRWxpbmtzIGNvbmZpZ3VyYXRpb24KIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9lbGlua3MuY29uZiwqLy5lbGlua3MvZWxpbmtzLmNvbmYJc2V0ZiBlbGlua3MKIAotZnVuISBGVENoZWNrX2UoKQorZnVuISBzOkZUZSgpCiAgIGxldCBuID0gMQogICB3aGlsZSBuIDwgMTAwICYmIG4gPCBsaW5lKCIkIikKICAgICBpZiBnZXRsaW5lKG4pID1+ICJeXFxzKlxcKDwnXFx8Jz5cXClcXHMqJCIKQEAgLTU5OSwxMCArNjA5LDEwIEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi50Lmh0bWwJCQlzZXRmIHRpbGRlCiAKICIgSFRNTCAoLnNodG1sIGFuZCAuc3RtIGZvciBzZXJ2ZXIgc2lkZSwgLnJodG1sIGZvciBSdWJ5IGh0bWwpCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5odG1sLCouaHRtLCouc2h0bWwsKi5yaHRtbCwqLnN0bSAgY2FsbCA8U0lEPkZUQ2hlY2tfaHRtbCgpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5odG1sLCouaHRtLCouc2h0bWwsKi5yaHRtbCwqLnN0bSAgY2FsbCBzOkZUaHRtbCgpCiAKICIgRGlzdGluZ3Vpc2ggYmV0d2VlbiBIVE1MIGFuZCBYSFRNTAotZnVuISA8U0lEPkZUQ2hlY2tfaHRtbCgpCitmdW4hIHM6RlRodG1sKCkKICAgbGV0IG4gPSAxCiAgIHdoaWxlIG4gPCAxMCAmJiBuIDwgbGluZSgiJCIpCiAgICAgaWYgZ2V0bGluZShuKSA9fiAnXDxEVERcc1wrWEhUTUxccycKQEAgLTYyOCwxMCArNjM4LDEwIEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5pY24JCQlzZXRmIGljb24KIAogIiBJREwgKEludGVyZmFjZSBEZXNjcmlwdGlvbiBMYW5ndWFnZSkKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmlkbAkJCWNhbGwgPFNJRD5GVENoZWNrX2lkbCgpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5pZGwJCQljYWxsIHM6RlRpZGwoKQogCiAiIERpc3Rpbmd1aXNoIGJldHdlZW4gc3RhbmRhcmQgSURMIGFuZCBNUy1JREwKLWZ1biEgPFNJRD5GVENoZWNrX2lkbCgpCitmdW4hIHM6RlRpZGwoKQogICBsZXQgbiA9IDEKICAgd2hpbGUgbiA8IDUwICYmIG4gPCBsaW5lKCIkIikKICAgICBpZiBnZXRsaW5lKG4pID1+ICdeXHMqaW1wb3J0XHNcKyJcKHVua253blx8b2JqaWRsXClcLmlkbCInCkBAIC02OTMsNyArNzAzLDggQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmpzcAkJCXNldGYganNwCiAKICIgSmF2YSBQcm9wZXJ0aWVzIHJlc291cmNlIGZpbGUgKG5vdGU6IGRvZXNuJ3QgY2F0Y2ggZm9udC5wcm9wZXJ0aWVzLnBsKQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucHJvcGVydGllcywqLnByb3BlcnRpZXNfPz8sKi5wcm9wZXJ0aWVzXz8/Xz8/LCoucHJvcGVydGllc18/P18/P18qCXNldGYganByb3BlcnRpZXMKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnByb3BlcnRpZXMsKi5wcm9wZXJ0aWVzXz8/LCoucHJvcGVydGllc18/P18/PwlzZXRmIGpwcm9wZXJ0aWVzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5wcm9wZXJ0aWVzXz8/Xz8/XyoJY2FsbCBzOlN0YXJTZXRmKCdqcHJvcGVydGllcycpCiAKICIgSmVzcwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouY2xwCQkJc2V0ZiBqZXNzCkBAIC03MzUsNyArNzQ2LDcgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmxsCQkJc2V0ZiBsaWZlbGluZXMKIAogIiBMaWxvOiBMaW51eCBsb2FkZXIKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBsaWxvLmNvbmYqCQlzZXRmIGxpbG8KK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBsaWxvLmNvbmYqCQljYWxsIHM6U3RhclNldGYoJ2xpbG8nKQogCiAiIExpc3AgKCouZWwgPSBFTGlzcCwgKi5jbCA9IENvbW1vbiBMaXNwLCAqLmpsID0gbGlicmVwIExpc3ApCiBpZiBoYXMoImZuYW1lX2Nhc2UiKQpAQCAtNzkxLDkgKzgwMiw5IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tYXNvbiwqLm1odG1sCQlzZXRmIG1hc29uCiAKICIgTWF0bGFiIG9yIE9iamVjdGl2ZSBDCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tCQkJY2FsbCBGVENoZWNrX20oKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubQkJCWNhbGwgczpGVG0oKQogCi1mdW4hIEZUQ2hlY2tfbSgpCitmdW4hIHM6RlRtKCkKICAgbGV0IG4gPSAxCiAgIHdoaWxlIG4gPCAxMAogICAgIGxldCBsaW5lID0gZ2V0bGluZShuKQpAQCAtODI0LDkgKzgzNSw5IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tcAkJCXNldGYgbXAKIAogIiBNTUlYIG9yIFZNUyBtYWtlZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubW1zCQkJY2FsbCBGVENoZWNrX21tcygpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tbXMJCQljYWxsIHM6RlRtbXMoKQogCi1mdW4hIEZUQ2hlY2tfbW1zKCkKK2Z1biEgczpGVG1tcygpCiAgIGxldCBuID0gMQogICB3aGlsZSBuIDwgMTAKICAgICBsZXQgbGluZSA9IGdldGxpbmUobikKQEAgLTg2Nyw3ICs4NzgsOSBAQAogIiBNb2Rjb25mCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9tb2R1bGVzLmNvbmYsL2V0Yy9jb25mLm1vZHVsZXMJc2V0ZiBtb2Rjb25mCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9tb2R1dGlscy8qCi0JXCBpZiBleGVjdXRhYmxlKGV4cGFuZCgiPGFmaWxlPiIpKSAhPSAxIHwgc2V0ZiBtb2Rjb25mIHwgZW5kaWYKKwlcIGlmIGV4ZWN1dGFibGUoZXhwYW5kKCI8YWZpbGU+IikpICE9IDEKKwlcfCAgY2FsbCBzOlN0YXJTZXRmKCdtb2Rjb25mJykKKwlcfGVuZGlmCiAKICIgTXBsYXllciBjb25maWcKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBtcGxheWVyLmNvbmYsKi8ubXBsYXllci9jb25maWcJc2V0ZiBtcGxheWVyY29uZgpAQCAtODkxLDcgKzkwNCw4IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5tdXNoCQkJc2V0ZiBtdXNoCiAKICIgTXV0dCBzZXR1cCBmaWxlCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLm11dHRyYyosKi8ubXV0dC9tdXR0cmMqLE11dHRyYwlzZXRmIG11dHRyYworYXUgQnVmTmV3RmlsZSxCdWZSZWFkIE11dHRyYwkJCXNldGYgbXV0dHJjCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLm11dHRyYyosKi8ubXV0dC9tdXR0cmMqCWNhbGwgczpTdGFyU2V0ZignbXV0dHJjJykKIAogIiBOYXN0cmFuIGlucHV0L0RNQVAKICJhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5kYXQJCQlzZXRmIG5hc3RyYW4KQEAgLTkxMSwxMSArOTI1LDExIEBACiAJXCAgIHNldGYgbnJvZmYgfAogCVwgZW5kaWYKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnRyLCoubnIsKi5yb2ZmLCoudG1hYywqLm1vbQlzZXRmIG5yb2ZmCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5bMS05XQkJCWNhbGwgPFNJRD5GVG5yb2ZmKCkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLlsxLTldCQkJY2FsbCBzOkZUbnJvZmYoKQogCiAiIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIG9uZSBvZiB0aGUgZmlyc3QgZml2ZSBsaW5lcyBzdGFydCB3aXRoIGEgZG90LiAgSW4KICIgdGhhdCBjYXNlIGl0IGlzIHByb2JhYmx5IGFuIG5yb2ZmIGZpbGU6ICdmaWxldHlwZScgaXMgc2V0IGFuZCAxIGlzIHJldHVybmVkLgotZnVuISA8U0lEPkZUbnJvZmYoKQorZnVuISBzOkZUbnJvZmYoKQogICBpZiBnZXRsaW5lKDEpWzBdIC4gZ2V0bGluZSgyKVswXSAuIGdldGxpbmUoMylbMF0gLiBnZXRsaW5lKDQpWzBdIC4gZ2V0bGluZSg1KVswXSA9fiAnXC4nCiAgICAgc2V0ZiBucm9mZgogICAgIHJldHVybiAxCkBAIC05MjQsOSArOTM4LDkgQEAKIGVuZGZ1bgogCiAiIE5yb2ZmIG9yIE9iamVjdGl2ZSBDKysKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLm1tCQkJY2FsbCA8U0lEPkZUY2hlY2tfbW0oKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubW0JCQljYWxsIHM6RlRtbSgpCiAKLWZ1biEgPFNJRD5GVGNoZWNrX21tKCkKK2Z1biEgczpGVG1tKCkKICAgbGV0IG4gPSAxCiAgIHdoaWxlIG4gPCAxMAogICAgIGxldCBsaW5lID0gZ2V0bGluZShuKQpAQCAtOTc3LDEzICs5OTEsMTMgQEAKIAogIiBQZXJsCiBpZiBoYXMoImZuYW1lX2Nhc2UiKQotICBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5wbCwqLlBMCQljYWxsIEZUQ2hlY2tfcGwoKQorICBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5wbCwqLlBMCQljYWxsIHM6RlRwbCgpCiBlbHNlCi0gIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnBsCQkJY2FsbCBGVENoZWNrX3BsKCkKKyAgYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucGwJCQljYWxsIHM6RlRwbCgpCiBlbmRpZgogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoucGx4CQkJc2V0ZiBwZXJsCiAKLWZ1biEgRlRDaGVja19wbCgpCitmdW4hIHM6RlRwbCgpCiAgIGlmIGV4aXN0cygiZzpmaWxldHlwZV9wbCIpCiAgICAgZXhlICJzZXRmICIgLiBnOmZpbGV0eXBlX3BsCiAgIGVsc2UKQEAgLTEwNTcsOSArMTA3MSw5IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLnBvdnJheXJjCQkJc2V0ZiBwb3ZpbmkKIAogIiBQb3ZyYXksIFBIUCBvciBhc3NlbWJseQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouaW5jCQkJY2FsbCBGVENoZWNrX2luYygpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5pbmMJCQljYWxsIHM6RlRpbmMoKQogCi1mdW4hIEZUQ2hlY2tfaW5jKCkKK2Z1biEgczpGVGluYygpCiAgIGlmIGV4aXN0cygiZzpmaWxldHlwZV9pbmMiKQogICAgIGV4ZSAic2V0ZiAiIC4gZzpmaWxldHlwZV9pbmMKICAgZWxzZQpAQCAtMTA3MSw3ICsxMDg1LDcgQEAKICAgICBlbHNlaWYgbGluZXMgPX4gIjw/IgogICAgICAgc2V0ZiBwaHAKICAgICBlbHNlCi0gICAgICBjYWxsIEZUQ2hlY2tfYXNtc3ludGF4KCkKKyAgICAgIGNhbGwgczpGVGFzbXN5bnRheCgpCiAgICAgICBpZiBleGlzdHMoImI6YXNtc3ludGF4IikKIAlleGUgInNldGYgIiAuIGI6YXNtc3ludGF4CiAgICAgICBlbHNlCkBAIC0xMTAxLDkgKzExMTUsOSBAQAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5wcm9jbWFpbCwucHJvY21haWxyYwlzZXRmIHByb2NtYWlsCiAKICIgUHJvZ3Jlc3Mgb3IgQ1dFQgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudwkJCWNhbGwgPFNJRD5GVHByb2dyZXNzX2N3ZWIoKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudwkJCWNhbGwgczpGVHByb2dyZXNzX2N3ZWIoKQogCi1mdW5jdGlvbiEgPFNJRD5GVHByb2dyZXNzX2N3ZWIoKQorZnVuY3Rpb24hIHM6RlRwcm9ncmVzc19jd2ViKCkKICAgaWYgZXhpc3RzKCJnOmZpbGV0eXBlX3ciKQogICAgIGV4ZSAic2V0ZiAiIC4gZzpmaWxldHlwZV93CiAgICAgcmV0dXJuCkBAIC0xMTE2LDkgKzExMzAsOSBAQAogZW5kZnVuCiAKICIgUHJvZ3Jlc3Mgb3IgYXNzZW1ibHkKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmkJCQljYWxsIDxTSUQ+RlRwcm9ncmVzc19hc20oKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouaQkJCWNhbGwgczpGVHByb2dyZXNzX2FzbSgpCiAKLWZ1bmN0aW9uISA8U0lEPkZUcHJvZ3Jlc3NfYXNtKCkKK2Z1bmN0aW9uISBzOkZUcHJvZ3Jlc3NfYXNtKCkKICAgaWYgZXhpc3RzKCJnOmZpbGV0eXBlX2kiKQogICAgIGV4ZSAic2V0ZiAiIC4gZzpmaWxldHlwZV9pCiAgICAgcmV0dXJuCkBAIC0xMTI5LDcgKzExNDMsNyBAQAogICB3aGlsZSBsbnVtIDw9IDEwCiAgICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCiAgICAgaWYgbGluZSA9fiAnXlxzKjsnIHx8IGxpbmUgPX4gJ15cKicKLSAgICAgIGNhbGwgRlRDaGVja19hc20oKQorICAgICAgY2FsbCBzOkZUYXNtKCkKICAgICAgIHJldHVybgogICAgIGVsc2VpZiBsaW5lICF+ICdeXHMqJCcgfHwgbGluZSA9fiAnXi9cKicKICAgICAgICIgTm90IGFuIGVtcHR5IGxpbmU6IERvZXNuJ3QgbG9vayBsaWtlIHZhbGlkIGFzc2VtYmx5IGNvZGUuCkBAIC0xMTQyLDkgKzExNTYsOSBAQAogZW5kZnVuCiAKICIgUHJvZ3Jlc3Mgb3IgUGFzY2FsCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5wCQkJY2FsbCA8U0lEPkZUcHJvZ3Jlc3NfcGFzY2FsKCkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnAJCQljYWxsIHM6RlRwcm9ncmVzc19wYXNjYWwoKQogCi1mdW5jdGlvbiEgPFNJRD5GVHByb2dyZXNzX3Bhc2NhbCgpCitmdW5jdGlvbiEgczpGVHByb2dyZXNzX3Bhc2NhbCgpCiAgIGlmIGV4aXN0cygiZzpmaWxldHlwZV9wIikKICAgICBleGUgInNldGYgIiAuIGc6ZmlsZXR5cGVfcAogICAgIHJldHVybgpAQCAtMTIxMiw5ICsxMjI2LDkgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnMsKi5TCQkJc2V0ZiByCiAKICIgUmV4eCwgUmVib2wgb3IgUgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouciwqLlIJCQljYWxsIDxTSUQ+RlRDaGVja19yKCkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnIsKi5SCQkJY2FsbCBzOkZUcigpCiAKLWZ1biEgPFNJRD5GVENoZWNrX3IoKQorZnVuISBzOkZUcigpCiAgIGlmIGdldGxpbmUoMSkgPX4gJ15SRUJPTCcKICAgICBzZXRmIHJlYm9sCiAgIGVsc2UKQEAgLTEyNDMsNyArMTI1Nyw3IEBACiBlbmRmdW4KIAogIiBSZW1pbmQKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAucmVtaW5kZXJzKgkJc2V0ZiByZW1pbmQKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAucmVtaW5kZXJzKgkJY2FsbCBzOlN0YXJTZXRmKCdyZW1pbmQnKQogCiAiIFJlc29sdi5jb25mCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgcmVzb2x2LmNvbmYJCXNldGYgcmVzb2x2CkBAIC0xMzE3LDcgKzEzMzEsOCBAQAogCVwgZW5kaWYKIAogIiBTR01MIGNhdGFsb2cgZmlsZQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHNnbWwuY2F0YWxvZyosY2F0YWxvZwlzZXRmIGNhdGFsb2cKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBjYXRhbG9nCQkJc2V0ZiBjYXRhbG9nCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgc2dtbC5jYXRhbG9nKgkJY2FsbCBzOlN0YXJTZXRmKCdjYXRhbG9nJykKIAogIiBTaGVsbCBzY3JpcHRzIChzaCwga3NoLCBiYXNoLCBiYXNoMiwgY3NoKTsgQWxsb3cgLnByb2ZpbGVfZm9vIGV0Yy4KICIgR2VudG9vIGVidWlsZHMgYXJlIGFjdHVhbGx5IGJhc2ggc2NyaXB0cwpAQCAtMTMyNSw3ICsxMzQwLDExIEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmtzaHJjKiwqLmtzaCBjYWxsIFNldEZpbGVUeXBlU0goImtzaCIpCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL2V0Yy9wcm9maWxlLC5wcm9maWxlKiwqLnNoLCouZW52IGNhbGwgU2V0RmlsZVR5cGVTSChnZXRsaW5lKDEpKQogCisiIEFsc28gY2FsbGVkIGZyb20gc2NyaXB0cy52aW0uCiBmdW4hIFNldEZpbGVUeXBlU0gobmFtZSkKKyAgaWYgZXhwYW5kKCI8YW1hdGNoPiIpID1+IGc6ZnRfaWdub3JlX3BhdAorICAgIHJldHVybgorICBlbmRpZgogICBpZiBhOm5hbWUgPX4gJ1w8a3NoXD4nCiAgICAgbGV0IGI6aXNfa29ybnNoZWxsID0gMQogICAgIGlmIGV4aXN0cygiYjppc19iYXNoIikKQEAgLTEzNTYsNyArMTM3NSwxMSBAQAogCiAiIEZvciBzaGVsbC1saWtlIGZpbGUgdHlwZXMsIGNoZWNrIGZvciBhbiAiZXhlYyIgY29tbWFuZCBoaWRkZW4gaW4gYSBjb21tZW50LAogIiBhcyB1c2VkIGZvciBUY2wuCisiIEFsc28gY2FsbGVkIGZyb20gc2NyaXB0cy52aW0sIHRodXMgY2FuJ3QgYmUgbG9jYWwgdG8gdGhpcyBzY3JpcHQuCiBmdW4hIFNldEZpbGVUeXBlU2hlbGwobmFtZSkKKyAgaWYgZXhwYW5kKCI8YW1hdGNoPiIpID1+IGc6ZnRfaWdub3JlX3BhdAorICAgIHJldHVybgorICBlbmRpZgogICBsZXQgbCA9IDIKICAgd2hpbGUgbCA8IDIwICYmIGwgPCBsaW5lKCIkIikgJiYgZ2V0bGluZShsKSA9fiAnXlxzKlwoI1x8JFwpJwogICAgICIgU2tpcCBlbXB0eSBhbmQgY29tbWVudCBsaW5lcy4KQEAgLTEzNzcsOSArMTQwMCw5IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLnRjc2hyYyosKi50Y3NoLHRjc2gudGNzaHJjLHRjc2gubG9naW4JY2FsbCBTZXRGaWxlVHlwZVNoZWxsKCJ0Y3NoIikKIAogIiBjc2ggc2NyaXB0cywgYnV0IG1pZ2h0IGFsc28gYmUgdGNzaCBzY3JpcHRzIChvbiBzb21lIHN5c3RlbXMgY3NoIGlzIHRjc2gpCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLmxvZ2luKiwuY3NocmMqLGNzaC5jc2hyYyxjc2gubG9naW4sY3NoLmxvZ291dCwqLmNzaCwuYWxpYXMgIGNhbGwgU2V0RmlsZVR5cGVDU0goKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5sb2dpbiosLmNzaHJjKixjc2guY3NocmMsY3NoLmxvZ2luLGNzaC5sb2dvdXQsKi5jc2gsLmFsaWFzICBjYWxsIHM6Q1NIKCkKIAotZnVuISBTZXRGaWxlVHlwZUNTSCgpCitmdW4hIHM6Q1NIKCkKICAgaWYgZXhpc3RzKCJnOmZpbGV0eXBlX2NzaCIpCiAgICAgY2FsbCBTZXRGaWxlVHlwZVNoZWxsKGc6ZmlsZXR5cGVfY3NoKQogICBlbHNlaWYgJnNoZWxsID1+ICJ0Y3NoIgpAQCAtMTM5MCw3ICsxNDEzLDggQEAKIGVuZGZ1bgogCiAiIFotU2hlbGwgc2NyaXB0Ci1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLnpzaCosLnpsb2cqLC56cHJvZmlsZSwvZXRjL3pwcm9maWxlLC56ZmJmbWFya3MsLnpjb21wZHVtcCogIHNldGYgenNoCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgLnpwcm9maWxlLC9ldGMvenByb2ZpbGUsLnpmYmZtYXJrcyAgc2V0ZiB6c2gKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAuenNoKiwuemxvZyosLnpjb21wZHVtcCogIGNhbGwgczpTdGFyU2V0ZignenNoJykKIAogIiBTY2hlbWUKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnNjbSwqLnNzCQlzZXRmIHNjaGVtZQpAQCAtMTQ2Nyw5ICsxNDkxLDkgQEAKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLnR5YiwqLnR5cCwqLnR5YywqLnBrYiwqLnBrcwlzZXRmIHNxbAogCiAiIFNRTAotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc3FsCQkJY2FsbCBTZXRGaWxlVHlwZVNRTCgpCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5zcWwJCQljYWxsIHM6U1FMKCkKIAotZnVuISBTZXRGaWxlVHlwZVNRTCgpCitmdW4hIHM6U1FMKCkKICAgaWYgZXhpc3RzKCJnOmZpbGV0eXBlX3NxbCIpCiAgICAgZXhlICJzZXRmICIgLiBnOmZpbGV0eXBlX3NxbAogICBlbHNlCkBAIC0xNTAwLDcgKzE1MjQsNyBAQAogCiAiIFRhZHMgKG9yIE5yb2ZmKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudAotCVwgaWYgITxTSUQ+RlRucm9mZigpIHwgc2V0ZiB0YWRzIHwgZW5kaWYKKwlcIGlmICFzOkZUbnJvZmYoKSB8IHNldGYgdGFkcyB8IGVuZGlmCiAKICIgVGFncwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHRhZ3MJCQlzZXRmIHRhZ3MKQEAgLTE1NTcsNyArMTU4MSw4IEBACiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi52CQkJc2V0ZiB2ZXJpbG9nCiAKICIgVkhETAotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouaGRsLCoudmhkLCoudmhkbCwqLnZoZGxfWzAtOV0qLCoudmJlLCoudnN0ICBzZXRmIHZoZGwKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLmhkbCwqLnZoZCwqLnZoZGwsKi52YmUsKi52c3QgIHNldGYgdmhkbAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoudmhkbF9bMC05XSogIAkJY2FsbCBzOlN0YXJTZXRmKCd2aGRsJykKIAogIiBWaW0gc2NyaXB0CiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi52aW0sLmV4cmMsX2V4cmMJCXNldGYgdmltCkBAIC0xNTY5LDcgKzE1OTQsNyBAQAogYXUgQnVmUmVhZCxCdWZOZXdGaWxlICouaHcsKi5tb2R1bGUsKi5wa2cJc2V0ZiB2aXJhdGEKIAogIiBWaXN1YWwgQmFzaWMgKGFsc28gdXNlcyAqLmJhcykgb3IgRk9STQotYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouZnJtCQkJY2FsbCA8U0lEPkZUVkIoImZvcm0iKQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouZnJtCQkJY2FsbCBzOkZUVkIoImZvcm0iKQogCiAiIFNheEJhc2ljIGlzIGNsb3NlIHRvIFZpc3VhbCBCYXNpYwogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICouc2JhCQkJc2V0ZiB2YgpAQCAtMTY0MSw3ICsxNjY2LDcgQEAKICIgWG1hdGgKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqLm1zYywqLm1zZgkJc2V0ZiB4bWF0aAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICoubXMKLQlcIGlmICE8U0lEPkZUbnJvZmYoKSB8IHNldGYgeG1hdGggfCBlbmRpZgorCVwgaWYgIXM6RlRucm9mZigpIHwgc2V0ZiB4bWF0aCB8IGVuZGlmCiAKICIgWE1MCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi54bWwKQEAgLTE2ODEsNyArMTcwNiw3IEBACiAKICIgU291cmNlIHRoZSB1c2VyLXNwZWNpZmllZCBmaWxldHlwZSBmaWxlLCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAogIiBWaW0gNS54LgotaWYgZXhpc3RzKCJteWZpbGV0eXBlZmlsZSIpICYmIGZpbGVfcmVhZGFibGUoZXhwYW5kKG15ZmlsZXR5cGVmaWxlKSkKK2lmIGV4aXN0cygibXlmaWxldHlwZWZpbGUiKSAmJiBmaWxlcmVhZGFibGUoZXhwYW5kKG15ZmlsZXR5cGVmaWxlKSkKICAgZXhlY3V0ZSAic291cmNlICIgLiBteWZpbGV0eXBlZmlsZQogZW5kaWYKIApAQCAtMTY5OSw4MCArMTcyNCw5MyBAQAogIiBFeHRyYSBjaGVja3MgZm9yIHdoZW4gbm8gZmlsZXR5cGUgaGFzIGJlZW4gZGV0ZWN0ZWQgbm93LiAgTW9zdGx5IHVzZWQgZm9yCiAiIHBhdHRlcm5zIHRoYXQgZW5kIGluICIqIi4gIEUuZy4sICJ6c2gqIiBtYXRjaGVzICJ6c2gudmltIiwgYnV0IHRoYXQncyBhIFZpbQogIiBzY3JpcHQgZmlsZS4KKyIgTW9zdCBvZiB0aGVzZSBzaG91bGQgY2FsbCBzOlN0YXJTZXRmKCkgdG8gYXZvaWQgbmFtZXMgZW5kaW5nIGluIC5neiBhbmQgdGhlCisiIGxpa2UgYXJlIHVzZWQuCiAKICIgQklORCB6b25lCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL3Zhci9uYW1lZC8qCQlzZXRmIGJpbmR6b25lCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgL3Zhci9uYW1lZC8qCQljYWxsIHM6U3RhclNldGYoJ2JpbmR6b25lJykKIAogIiBDaGFuZ2Vsb2cKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBbY0NdaGFuZ2VbbExdb2cqCQlpZiBnZXRsaW5lKDEpID1+ICc7IHVyZ2VuY3k9JwotCVx8IHNldGYgZGViY2hhbmdlbG9nIHwgZWxzZSB8IHNldGYgY2hhbmdlbG9nIHwgZW5kaWYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBbY0NdaGFuZ2VbbExdb2cqCisJXCBpZiBnZXRsaW5lKDEpID1+ICc7IHVyZ2VuY3k9JworCVx8ICBjYWxsIHM6U3RhclNldGYoJ2RlYmNoYW5nZWxvZycpCisJXHxlbHNlCisJXHwgIGNhbGwgczpTdGFyU2V0ZignY2hhbmdlbG9nJykKKwlcfGVuZGlmCiAKICIgQ3JvbnRhYgotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGNyb250YWIsY3JvbnRhYi4qCQlzZXRmIGNyb250YWIKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBjcm9udGFiLGNyb250YWIuKgkJY2FsbCBzOlN0YXJTZXRmKCdjcm9udGFiJykKIAogIiBEcmFjdWxhCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgZHJhYy4qCQkJc2V0ZiBkcmFjdWxhCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgZHJhYy4qCQkJY2FsbCBzOlN0YXJTZXRmKCdkcmFjdWxhJykKIAogIiBGdndtCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKmZ2d21yYyosKmZ2d205NSouaG9vawotCVwgbGV0IGI6ZnZ3bV92ZXJzaW9uID0gMSB8IHNldGYgZnZ3bQorCVwgbGV0IGI6ZnZ3bV92ZXJzaW9uID0gMSB8IGNhbGwgczpTdGFyU2V0ZignZnZ3bScpCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKmZ2d20ycmMqCi0JXCBpZiBleHBhbmQoIjxhZmlsZT46ZSIpID09ICJtNCIgfCBzZXRmIGZ2d20ybTQgfCBlbHNlIHwKLQlcIGxldCBiOmZ2d21fdmVyc2lvbiA9IDIgfCBzZXRmIGZ2d20gfCBlbmRpZgorCVwgaWYgZXhwYW5kKCI8YWZpbGU+OmUiKSA9PSAibTQiCisJXHwgIGNhbGwgczpTdGFyU2V0ZignZnZ3bTJtNCcpCisJXHxlbHNlCisJXHwgIGxldCBiOmZ2d21fdmVyc2lvbiA9IDIgfCBjYWxsIHM6U3RhclNldGYoJ2Z2d20nKQorCVx8ZW5kaWYKIAogIiBHVEsgUkMKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAuZ3RrcmMqLGd0a3JjKgkJc2V0ZiBndGtyYworYXUgQnVmTmV3RmlsZSxCdWZSZWFkIC5ndGtyYyosZ3RrcmMqCQljYWxsIHM6U3RhclNldGYoJ2d0a3JjJykKIAogIiBKYW0KLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBQcmwqLiosSkFNKi4qCQlzZXRmIGphbQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIFBybCouKixKQU0qLioJCWNhbGwgczpTdGFyU2V0ZignamFtJykKIAogIiBKYXJnb24KIGF1ISBCdWZOZXdGaWxlLEJ1ZlJlYWQgKmphcmcqCi0JXCBpZiBnZXRsaW5lKDEpLmdldGxpbmUoMikuZ2V0bGluZSgzKS5nZXRsaW5lKDQpLmdldGxpbmUoNSkgPX4/ICdUSElTIElTIFRIRSBKQVJHT04gRklMRScgfAotCVwgICBzZXRmIGphcmdvbiB8Ci0JXCBlbmRpZgorCVwgaWYgZ2V0bGluZSgxKS5nZXRsaW5lKDIpLmdldGxpbmUoMykuZ2V0bGluZSg0KS5nZXRsaW5lKDUpID1+PyAnVEhJUyBJUyBUSEUgSkFSR09OIEZJTEUnCisJXHwgIGNhbGwgczpTdGFyU2V0ZignamFyZ29uJykKKwlcfGVuZGlmCiAKICIgTWFrZWZpbGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBbbU1dYWtlZmlsZSoJCXNldGYgbWFrZQorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIFttTV1ha2VmaWxlKgkJY2FsbCBzOlN0YXJTZXRmKCdtYWtlJykKIAogIiBSdWJ5IE1ha2VmaWxlCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgW3JSXWFrZWZpbGUqCQlzZXRmIHJ1YnkKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBbclJdYWtlZmlsZSoJCWNhbGwgczpTdGFyU2V0ZigncnVieScpCiAKICIgTXV0dCBzZXR1cCBmaWxlCi1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgbXV0dHJjKixNdXR0cmMqCQlzZXRmIG11dHRyYworYXUgQnVmTmV3RmlsZSxCdWZSZWFkIG11dHRyYyosTXV0dHJjKgkJY2FsbCBzOlN0YXJTZXRmKCdtdXR0cmMnKQogCiAiIE5yb2ZmIG1hY3JvcwotYXUgQnVmTmV3RmlsZSxCdWZSZWFkIHRtYWMuKgkJCXNldGYgbnJvZmYKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB0bWFjLioJCQljYWxsIHM6U3RhclNldGYoJ25yb2ZmJykKIAogIiBQcmludGNhcCBhbmQgVGVybWNhcAogYXUgQnVmTmV3RmlsZSxCdWZSZWFkICpwcmludGNhcCoKLQlcIGlmICFkaWRfZmlsZXR5cGUoKSB8IGxldCBiOnB0Y2FwX3R5cGUgPSAicHJpbnQiIHwgc2V0ZiBwdGNhcCB8IGVuZGlmCisJXCBpZiAhZGlkX2ZpbGV0eXBlKCkKKwlcfCAgbGV0IGI6cHRjYXBfdHlwZSA9ICJwcmludCIgfCBjYWxsIHM6U3RhclNldGYoJ3B0Y2FwJykKKwlcfGVuZGlmCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKnRlcm1jYXAqCi0JXCBpZiAhZGlkX2ZpbGV0eXBlKCkgfCBsZXQgYjpwdGNhcF90eXBlID0gInRlcm0iIHwgc2V0ZiBwdGNhcCB8IGVuZGlmCisJXCBpZiAhZGlkX2ZpbGV0eXBlKCkKKwlcfCAgbGV0IGI6cHRjYXBfdHlwZSA9ICJ0ZXJtIiB8IGNhbGwgczpTdGFyU2V0ZigncHRjYXAnKQorCVx8ZW5kaWYKIAogIiBWaW0gc2NyaXB0Ci1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKnZpbXJjKgkJCXNldGYgdmltCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKnZpbXJjKgkJCWNhbGwgczpTdGFyU2V0ZigndmltJykKIAogIiBTdWJ2ZXJzaW9uIGNvbW1pdCBmaWxlCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgc3ZuLWNvbW1pdCoudG1wCQlzZXRmIHN2bgogCiAiIFggcmVzb3VyY2VzIGZpbGUKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBYcmVzb3VyY2VzKiwqL2FwcC1kZWZhdWx0cy8qLCovWHJlc291cmNlcy8qIHNldGYgeGRlZmF1bHRzCithdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgWHJlc291cmNlcyosKi9hcHAtZGVmYXVsdHMvKiwqL1hyZXNvdXJjZXMvKiBjYWxsIHM6U3RhclNldGYoJ3hkZWZhdWx0cycpCiAKICIgWEZyZWU4NiBjb25maWcKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCBYRjg2Q29uZmlnLTQqCi0JXCBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSA0IHwgc2V0ZiB4Zjg2Y29uZgorCVwgbGV0IGI6eGY4NmNfeGZyZWU4Nl92ZXJzaW9uID0gNCB8IGNhbGwgczpTdGFyU2V0ZigneGY4NmNvbmYnKQogYXUgQnVmTmV3RmlsZSxCdWZSZWFkIFhGODZDb25maWcqCi0JXCBpZiBnZXRsaW5lKDEpID1+ICdcPFhDb25maWd1cmF0b3JcPicgfAotCVwgICBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSAzIHwKLQlcIGVuZGlmIHwKLQlcIHNldGYgeGY4NmNvbmYKKwlcIGlmIGdldGxpbmUoMSkgPX4gJ1w8WENvbmZpZ3VyYXRvclw+JworCVx8ICBsZXQgYjp4Zjg2Y194ZnJlZTg2X3ZlcnNpb24gPSAzCisJXHxlbmRpZgorCVx8Y2FsbCBzOlN0YXJTZXRmKCd4Zjg2Y29uZicpCiAKICIgWDExIHhtb2RtYXAKLWF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqeG1vZG1hcCoJCQlzZXRmIHhtb2RtYXAKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqeG1vZG1hcCoJCQljYWxsIHM6U3RhclNldGYoJ3htb2RtYXAnKQogCiAiIFotU2hlbGwgc2NyaXB0Ci1hdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgenNoKix6bG9nKgkJc2V0ZiB6c2gKK2F1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCB6c2gqLHpsb2cqCQljYWxsIHM6U3RhclNldGYoJ3pzaCcpCiAKIAogIiBHZW5lcmljIGNvbmZpZ3VyYXRpb24gZmlsZSAoY2hlY2sgdGhpcyBsYXN0LCBpdCdzIGp1c3QgZ3Vlc3NpbmchKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9sYW5nL21lbnVfaXRfaXQubGF0aW4xLnZpbSBiL3J1bnRpbWUvbGFuZy9tZW51X2l0X2l0LmxhdGluMS52aW0KaW5kZXggN2RhNThlMS4uYzhkNmJiMSAxMDA2NDQKLS0tIGEvcnVudGltZS9sYW5nL21lbnVfaXRfaXQubGF0aW4xLnZpbQorKysgYi9ydW50aW1lL2xhbmcvbWVudV9pdF9pdC5sYXRpbjEudmltCkBAIC0xLDcgKzEsNyBAQAogIiBNZW51IFRyYW5zbGF0aW9uczoJSXRhbGlhbiAvIEl0YWxpYW5vCi0iIE1haW50YWluZXI6CQlBbnRvbmlvIENvbG9tYm8gPGFudG9uaW8uY29sb21ib0BqcmMuaXQ+CisiIE1haW50YWluZXI6CQlBbnRvbmlvIENvbG9tYm8gPGF6YzEwQHlhaG9vLmNvbT4KICIJCQlWbGFkIFNhbmRyaW5pIDxzYXRvcjcyQGxpYmVyby5pdD4KLSIgTGFzdCBDaGFuZ2U6CTIwMDQgTWFyIDMKKyIgTGFzdCBDaGFuZ2U6CTIwMDUgTWFyIDE2CiAKICIgUXVpdCB3aGVuIG1lbnUgdHJhbnNsYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUuCiBpZiBleGlzdHMoImRpZF9tZW51X3RyYW5zIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2F3ay52aW0gYi9ydW50aW1lL3N5bnRheC9hd2sudmltCmluZGV4IDAwYTY4OWQuLjhjMWYxODIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2F3ay52aW0KKysrIGIvcnVudGltZS9zeW50YXgvYXdrLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglhd2ssIG5hd2ssIGdhd2ssIG1hd2sKLSIgTWFpbnRhaW5lcjoJQW50b25pbyBDb2xvbWJvIDxhbnRvbmlvLmNvbG9tYm9AanJjLml0PgotIiBMYXN0IENoYW5nZToJMjAwMiBKdW4gMjMKKyIgTWFpbnRhaW5lcjoJQW50b25pbyBDb2xvbWJvIDxhemMxMEB5YWhvby5jb20+CisiIExhc3QgQ2hhbmdlOgkyMDA1IE1hciAxNgogCiAiIEFXSyAgcmVmLiAgaXM6IEFsZnJlZCBWLiBBaG8sIEJyaWFuIFcuIEtlcm5pZ2hhbiwgUGV0ZXIgSi4gV2VpbmJlcmdlcgogIiBUaGUgQVdLIFByb2dyYW1taW5nIExhbmd1YWdlLCBBZGRpc29uLVdlc2xleSwgMTk4OApkaWZmIC0tZ2l0IGEvcnVudGltZS90dXRvci90dXRvci5pdCBiL3J1bnRpbWUvdHV0b3IvdHV0b3IuaXQKaW5kZXggYjdiNzBkZS4uZDJhNDY1ZSAxMDA2NDQKLS0tIGEvcnVudGltZS90dXRvci90dXRvci5pdAorKysgYi9ydW50aW1lL3R1dG9yL3R1dG9yLml0CkBAIC04MDEsNSArODAxLDUgQEAKICAgQ29sb3JhZG8gU2Nob29sIG9mIE1pbmVzLCB1c2FuZG8gaWRlZSBmb3JuaXRlIGRhIENoYXJsZXMgU21pdGgsCiAgIENvbG9yYWRvIFN0YXRlIFVuaXZlcnNpdHkgLSBFLW1haWw6IGJ3YXJlQG1pbmVzLmNvbG9yYWRvLmVkdQogICBNb2RpZmljYXRvIHBlciBWaW0gZGEgQnJhbSBNb29sZW5hYXIuCi0gIFNlZ25hbGFyZSByZWZ1c2kgYWQgQW50b25pbyBDb2xvbWJvIC0gRS1tYWlsOiBhbnRvbmlvLmNvbG9tYm9AanJjLml0CisgIFNlZ25hbGFyZSByZWZ1c2kgYWQgQW50b25pbyBDb2xvbWJvIC0gRS1tYWlsOiBhemMxMEB5YWhvby5jb20KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo=