ZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29sb3JzL1JFQURNRS50eHQgYi9ydW50aW1lL2NvbG9ycy9SRUFETUUudHh0CmluZGV4IDQ1MTE3NDguLjA1N2JiZWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvY29sb3JzL1JFQURNRS50eHQKKysrIGIvcnVudGltZS9jb2xvcnMvUkVBRE1FLnR4dApAQCAtNzMsNyArNzMsOCBAQAogSWYgeW91IHRoaW5rIHlvdSBoYXZlIGEgY29sb3Igc2NoZW1lIHRoYXQgaXMgZ29vZCBlbm91Z2ggdG8gYmUgdXNlZCBieSBvdGhlcnMsCiBwbGVhc2UgY2hlY2sgdGhlIGZvbGxvd2luZyBpdGVtczoKIAotLSBTb3VyY2UgdGhlIHRvb2xzL2NoZWNrX2NvbG9ycy52aW0gc2NyaXB0IHRvIGNoZWNrIGZvciBjb21tb24gbWlzdGFrZXMuCistIFNvdXJjZSB0aGUgJFZJTVJVTlRJTUUvY29sb3JzL3Rvb2xzL2NoZWNrX2NvbG9ycy52aW0gc2NyaXB0IHRvIGNoZWNrIGZvcgorICBjb21tb24gbWlzdGFrZXMuCiAtIERvZXMgaXQgd29yayBpbiBhIGNvbG9yIHRlcm1pbmFsIGFzIHdlbGwgYXMgaW4gdGhlIEdVST8KIC0gSXMgImc6Y29sb3JzX25hbWUiIHNldCB0byBhIG1lYW5pbmdmdWwgdmFsdWU/ICBJbiBjYXNlIG9mIGRvdWJ0IHlvdSBjYW4gZG8KICAgaXQgdGhpcyB3YXk6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9hdXRvY21kLnR4dCBiL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0CmluZGV4IDE0Y2Y2YzQuLjcwZGQ0M2EgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmF1dG9jbWQudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBBcHIgMzAKKyphdXRvY21kLnR4dCogICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTggTWF5IDAzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0IGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dAppbmRleCBmZTQ1N2M5Li5hYjgyMGIwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IEFwciAxNworKmNoYW5nZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBNYXkgMDYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTExMCw3ICsxMTAsNyBAQAogSgkJCUpvaW4gW2NvdW50XSBsaW5lcywgd2l0aCBhIG1pbmltdW0gb2YgdHdvIGxpbmVzLgogCQkJUmVtb3ZlIHRoZSBpbmRlbnQgYW5kIGluc2VydCB1cCB0byB0d28gc3BhY2VzIChzZWUKIAkJCWJlbG93KS4gIEZhaWxzIHdoZW4gb24gdGhlIGxhc3QgbGluZSBvZiB0aGUgYnVmZmVyLgotCQkJSWYgW2NvdW50XSBpcyB0b28gYmlnIGl0IGlzIHJlZHVjZSB0byB0aGUgbnVtYmVyIG9mCisJCQlJZiBbY291bnRdIGlzIHRvbyBiaWcgaXQgaXMgcmVkdWNlZCB0byB0aGUgbnVtYmVyIG9mCiAJCQlsaW5lcyBhdmFpbGFibGUuCiAKIAkJCQkJCQkqdl9KKgpAQCAtNDQ2LDcgKzQ0Niw3IEBACiAKIEZvciBkZWNpbWFscyBhIGxlYWRpbmcgbmVnYXRpdmUgc2lnbiBpcyBjb25zaWRlcmVkIGZvciBpbmNyZW1lbnRpbmcvCiBkZWNyZW1lbnRpbmcsIGZvciBiaW5hcnksIG9jdGFsIGFuZCBoZXggdmFsdWVzLCBpdCB3b24ndCBiZSBjb25zaWRlcmVkLiAgVG8KLWlnbm9yZSB0aGUgc2lnbiBWaXN1YWxseSBzZWxlY3QgdGhlIG51bWJlciBiZWZvcmUgdXNpbmcgQ1RSTC1BIG9yIENUUkwtWC4gCitpZ25vcmUgdGhlIHNpZ24gVmlzdWFsbHkgc2VsZWN0IHRoZSBudW1iZXIgYmVmb3JlIHVzaW5nIENUUkwtQSBvciBDVFJMLVguCiAKIEZvciBudW1iZXJzIHdpdGggbGVhZGluZyB6ZXJvcyAoaW5jbHVkaW5nIGFsbCBvY3RhbCBhbmQgaGV4YWRlY2ltYWwgbnVtYmVycyksCiBWaW0gcHJlc2VydmVzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgbnVtYmVyIHdoZW4gcG9zc2libGUuICBDVFJMLUEgb24KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2RldmVsb3AudHh0IGIvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKaW5kZXggZTljMGVlOS4uMjhiYTdjZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKKysrIGIvcnVudGltZS9kb2MvZGV2ZWxvcC50eHQKQEAgLTEsNCArMSw0IEBACi0qZGV2ZWxvcC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IEFwciAyMworKmRldmVsb3AudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBNYXkgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE4LDcgKzE4LDggQEAKIGNvZGUuCiAKIFZpbSBpcyBvcGVuIHNvdXJjZSBzb2Z0d2FyZS4gIEV2ZXJ5Ym9keSBpcyBlbmNvdXJhZ2VkIHRvIGNvbnRyaWJ1dGUgdG8gaGVscAotaW1wcm92aW5nIFZpbS4gIEZvciBzZW5kaW5nIHBhdGNoZXMgYSBjb250ZXh0IGRpZmYgImRpZmYgLWMiIGlzIHByZWZlcnJlZC4KK2ltcHJvdmluZyBWaW0uICBGb3Igc2VuZGluZyBwYXRjaGVzIGEgdW5pZmllZCBkaWZmICJkaWZmIC11IiBpcyBwcmVmZXJyZWQuCitZb3UgY2FuIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiBnaXRodWIsIGJ1dCBpdCdzIG5vdCByZXF1aXJlZC4KIEFsc28gc2VlIGh0dHA6Ly92aW0ud2lraWEuY29tL3dpa2kvSG93X3RvX21ha2VfYW5kX3N1Ym1pdF9hX3BhdGNoLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2d1aV94MTEudHh0IGIvcnVudGltZS9kb2MvZ3VpX3gxMS50eHQKaW5kZXggMmJmNzMwMi4uYjFjMmNjNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZ3VpX3gxMS50eHQKKysrIGIvcnVudGltZS9kb2MvZ3VpX3gxMS50eHQKQEAgLTEsNCArMSw0IEBACi0qZ3VpX3gxMS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE3IEp1bCAyOAorKmd1aV94MTEudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBNYXkgMDYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTUzLDYgKzUzLDkgQEAKICI6Z3VpIC1iIi4KIAogImd2aW0gLS1ub2ZvcmsiIGRvZXMgdGhlIHNhbWUgYXMgImd2aW0gLWYiLgorCitXaGVuIHRoZXJlIGFyZSBydW5uaW5nIGpvYnMgVmltIHdpbGwgbm90IGZvcmssIGJlY2F1c2UgdGhlIHByb2Nlc3NlcyB3b3VsZCBubworbG9uZ2VyIGJlIGNoaWxkIHByb2Nlc3Nlcy4KIAkJCQkJCQkJKkU4NTEqICpFODUyKgogV2hlbiBzdGFydGluZyB0aGUgR1VJIGZhaWxzIFZpbSB3aWxsIHRyeSB0byBjb250aW51ZSBydW5uaW5nIGluIHRoZSB0ZXJtaW5hbC4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbWFwLnR4dCBiL3J1bnRpbWUvZG9jL21hcC50eHQKaW5kZXggMTg3NjNmNC4uZTNmZjcyYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvbWFwLnR4dAorKysgYi9ydW50aW1lL2RvYy9tYXAudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1hcC50eHQqICAgICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBTZXAgMjMKKyptYXAudHh0KiAgICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTggTWF5IDA2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC01NDIsOSArNTQyLDkgQEAKIAk6aW1hcCA8TS1DPiBmb28KIAk6c2V0IGVuY29kaW5nPXV0Zi04CiBUaGUgbWFwcGluZyBmb3IgPE0tQz4gaXMgZGVmaW5lZCB3aXRoIHRoZSBsYXRpbjEgZW5jb2RpbmcsIHJlc3VsdGluZyBpbiBhIDB4YzMKLWJ5dGUuICBJZiB5b3UgdHlwZSB0aGUgY2hhcmFjdGVyIOEgKDB4ZTEgPE0tYT4pIGluIFVURi04IGVuY29kaW5nIHRoaXMgaXMgdGhlCitieXRlLiAgSWYgeW91IHR5cGUgdGhlIGNoYXJhY3RlciDDoSAoMHhlMSA8TS1hPikgaW4gVVRGLTggZW5jb2RpbmcgdGhpcyBpcyB0aGUKIHR3byBieXRlcyAweGMzIDB4YTEuICBZb3UgZG9uJ3Qgd2FudCB0aGUgMHhjMyBieXRlIHRvIGJlIG1hcHBlZCB0aGVuIG9yCi1vdGhlcndpc2UgaXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byB0eXBlIHRoZSDhIGNoYXJhY3Rlci4KK290aGVyd2lzZSBpdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHR5cGUgdGhlIMOhIGNoYXJhY3Rlci4KIAogCQkJCQkqPExlYWRlcj4qICptYXBsZWFkZXIqCiBUbyBkZWZpbmUgYSBtYXBwaW5nIHdoaWNoIHVzZXMgdGhlICJtYXBsZWFkZXIiIHZhcmlhYmxlLCB0aGUgc3BlY2lhbCBzdHJpbmcKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21sYW5nLnR4dCBiL3J1bnRpbWUvZG9jL21sYW5nLnR4dAppbmRleCAyZDI3OTEyLi44ZGVkOWNkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tbGFuZy50eHQKKysrIGIvcnVudGltZS9kb2MvbWxhbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1sYW5nLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBNYXIgMDQKKyptbGFuZy50eHQqICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTggTWF5IDA2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xOTAsOCArMTkwLDggQEAKIAk6c291cmNlICRWSU1SVU5USU1FL21lbnUudmltCiAKIEVhY2ggcGFydCBvZiBhIG1lbnUgcGF0aCBpcyB0cmFuc2xhdGVkIHNlcGFyYXRlbHkuICBUaGUgcmVzdWx0IGlzIHRoYXQgd2hlbgotIkhlbHAiIGlzIHRyYW5zbGF0ZWQgdG8gIkhpbGZlIiBhbmQgIk92ZXJ2aWV3IiB0byAi3GJlcmJsaWNrIiB0aGVuCi0iSGVscC5PdmVydmlldyIgd2lsbCBiZSB0cmFuc2xhdGVkIHRvICJIaWxmZS7cYmVyYmxpY2siLgorIkhlbHAiIGlzIHRyYW5zbGF0ZWQgdG8gIkhpbGZlIiBhbmQgIk92ZXJ2aWV3IiB0byAiw5xiZXJibGljayIgdGhlbgorIkhlbHAuT3ZlcnZpZXciIHdpbGwgYmUgdHJhbnNsYXRlZCB0byAiSGlsZmUuw5xiZXJibGljayIuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMy4gU2NyaXB0cwkJCQkJCSptdWx0aWxhbmctc2NyaXB0cyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQgYi9ydW50aW1lL2RvYy9vc192bXMudHh0CmluZGV4IDVjZjIzNzguLjVhMDY4MTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3Nfdm1zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc192bXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTQgQXVnIDI5Cisqb3Nfdm1zLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IE1heSAwNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTApAQCAtNzAyLDEzICs3MDIsMTMgQEAKICRzaG93IGNsdXN0ZXIKIFZpZXcgb2YgQ2x1c3RlciBmcm9tIHN5c3RlbSBJRCAxMTY1NSAgbm9kZTogVE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgtQVVHLTIwMDggMTE6NTg6MzEKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi2mICAgICAgICBTWVNURU1TICAgICAgICCmIE1FTUJFUlMgpgotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLaYKLaYgIE5PREUgIKYgICBTT0ZUV0FSRSAgIKYgIFNUQVRVUyCmCi0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tpgotpiBUT1IgICAgpiBWTVMgVjcuMy0yICAgpiBNRU1CRVIgIKYKLaYgVElUQU4yIKYgVk1TIFY4LjMgICAgIKYgTUVNQkVSICCmCi2mIE9ESU4gICCmIFZNUyBWNy4zLTIgICCmIE1FTUJFUiAgpgorfCAgICAgICAgU1lTVEVNUyAgICAgICAgfCBNRU1CRVJTIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS18Cit8ICBOT0RFICB8ICAgU09GVFdBUkUgICB8ICBTVEFUVVMgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLXwKK3wgVE9SICAgIHwgVk1TIFY3LjMtMiAgIHwgTUVNQkVSICB8Cit8IFRJVEFOMiB8IFZNUyBWOC4zICAgICB8IE1FTUJFUiAgfAorfCBPRElOICAgfCBWTVMgVjcuMy0yICAgfCBNRU1CRVIgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIEl0IGlzIGNvbnZlbmllbnQgdG8gaGF2ZSBhIGNvbW1vbiBWSU0gZGlyZWN0b3J5IGJ1dCBleGVjdXRlIGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0IGIvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0CmluZGV4IDk2MDg1ZDIuLjgzMzc5YjggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dAorKysgYi9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQKQEAgLTEsNCArMSw0IEBACi0qcXVpY2tmaXgudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IEFwciAyOAorKnF1aWNrZml4LnR4dCogIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBNYXkgMDEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEyNTcsNyArMTI1Nyw3IEBACiB0byBpbmRpY2F0ZSB0aGUgY29sdW1uIG9mIHRoZSBlcnJvci4gIFRoaXMgaXMgdG8gYmUgdXNlZCBpbiBhIG11bHRpLWxpbmUgZXJyb3IKIG1lc3NhZ2UuICBTZWUgfGVycm9yZm9ybWF0LWphdmFjfCBmb3IgYSAgdXNlZnVsIGV4YW1wbGUuCiAKLVRoZSAiJXMiIGNvbnZlcnNpb24gc3BlY2lmaWVzIHRoZSB0ZXh0IHRvIHNlYXJjaCBmb3IgdG8gbG9jYXRlIHRoZSBlcnJvciBsaW5lLgorVGhlICIlcyIgY29udmVyc2lvbiBzcGVjaWZpZXMgdGhlIHRleHQgdG8gc2VhcmNoIGZvciwgdG8gbG9jYXRlIHRoZSBlcnJvciBsaW5lLgogVGhlIHRleHQgaXMgdXNlZCBhcyBhIGxpdGVyYWwgc3RyaW5nLiAgVGhlIGFuY2hvcnMgIl4iIGFuZCAiJCIgYXJlIGFkZGVkIHRvCiB0aGUgdGV4dCB0byBsb2NhdGUgdGhlIGVycm9yIGxpbmUgZXhhY3RseSBtYXRjaGluZyB0aGUgc2VhcmNoIHRleHQgYW5kIHRoZQogdGV4dCBpcyBwcmVmaXhlZCB3aXRoIHRoZSAiXFYiIGF0b20gdG8gbWFrZSBpdCAidmVyeSBub21hZ2ljIi4gIFRoZSAiJXMiCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zdGFydGluZy50eHQgYi9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKaW5kZXggODI1NjE1Mi4uMjFhNjkwNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpzdGFydGluZy50eHQqICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTggTWFyIDE0Cisqc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IE1heSAwNQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTI3LDcgKzEyNyw4IEBACiBPbiBWTVMgYWxsIG9wdGlvbiBhcmd1bWVudHMgYXJlIGFzc3VtZWQgdG8gYmUgbG93ZXJjYXNlLCB1bmxlc3MgcHJlY2VkZWQgd2l0aAogYSBzbGFzaC4gIFRodXMgIi1SIiBtZWFucyByZWNvdmVyeSBhbmQgIi0vUiIgcmVhZG9ubHkuCiAKLS0taGVscAkJCQkJCQkqLWgqICotLWhlbHAqCistLWhlbHAJCQkJCQkJKi1oKiAqLS1oZWxwKiAqLT8qCistPwogLWgJCUdpdmUgdXNhZ2UgKGhlbHApIG1lc3NhZ2UgYW5kIGV4aXQuICB7bm90IGluIFZpfQogCQlTZWUgfGluZm8tbWVzc2FnZXwgYWJvdXQgY2FwdHVyaW5nIHRoZSB0ZXh0LgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAyNTk5YzUxLi5lNjQyNGRhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTE0MDgsNiArMTQwOCw3IEBACiAtLXR0eWZhaWwJc3RhcnRpbmcudHh0CS8qLS10dHlmYWlsKgogLS12ZXJzaW9uCXN0YXJ0aW5nLnR4dAkvKi0tdmVyc2lvbioKIC0td2luZG93aWQJc3RhcnRpbmcudHh0CS8qLS13aW5kb3dpZCoKKy0/CXN0YXJ0aW5nLnR4dAkvKi0/KgogLUEJc3RhcnRpbmcudHh0CS8qLUEqCiAtQwlzdGFydGluZy50eHQJLyotQyoKIC1ECXN0YXJ0aW5nLnR4dAkvKi1EKgpAQCAtNTI4NSw2ICs1Mjg2LDcgQEAKIGNfPEMtUj4JY21kbGluZS50eHQJLypjXzxDLVI+KgogY188Qy1SPl88Qy1BPgljbWRsaW5lLnR4dAkvKmNfPEMtUj5fPEMtQT4qCiBjXzxDLVI+XzxDLUY+CWNtZGxpbmUudHh0CS8qY188Qy1SPl88Qy1GPioKK2NfPEMtUj5fPEMtTD4JY21kbGluZS50eHQJLypjXzxDLVI+XzxDLUw+KgogY188Qy1SPl88Qy1PPgljbWRsaW5lLnR4dAkvKmNfPEMtUj5fPEMtTz4qCiBjXzxDLVI+XzxDLVA+CWNtZGxpbmUudHh0CS8qY188Qy1SPl88Qy1QPioKIGNfPEMtUj5fPEMtUj4JY21kbGluZS50eHQJLypjXzxDLVI+XzxDLVI+KgpAQCAtNTMzMyw2ICs1MzM1LDcgQEAKIGNfQ1RSTC1SXz0JY21kbGluZS50eHQJLypjX0NUUkwtUl89KgogY19DVFJMLVJfQ1RSTC1BCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1BKgogY19DVFJMLVJfQ1RSTC1GCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1GKgorY19DVFJMLVJfQ1RSTC1MCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1MKgogY19DVFJMLVJfQ1RSTC1PCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1PKgogY19DVFJMLVJfQ1RSTC1QCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1QKgogY19DVFJMLVJfQ1RSTC1SCWNtZGxpbmUudHh0CS8qY19DVFJMLVJfQ1RSTC1SKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFnc3JjaC50eHQgYi9ydW50aW1lL2RvYy90YWdzcmNoLnR4dAppbmRleCBjM2RhOTBkLi42ZjAwNmMwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzcmNoLnR4dAorKysgYi9ydW50aW1lL2RvYy90YWdzcmNoLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0YWdzcmNoLnR4dCogICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTcgT2N0IDIwCisqdGFnc3JjaC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE4IE1heSAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzYsMTIgKzM2LDEyIEBACiBiZWxvdy4KIAogCQkJCQkJKjp0YSogKjp0YWcqICpFNDI2KiAqRTQyOSoKLTpbY291bnRddGFbZ11bIV0ge2lkZW50fQotCQkJSnVtcCB0byB0aGUgZGVmaW5pdGlvbiBvZiB7aWRlbnR9LCB1c2luZyB0aGUKLQkJCWluZm9ybWF0aW9uIGluIHRoZSB0YWdzIGZpbGUocykuICBQdXQge2lkZW50fSBpbiB0aGUKKzpbY291bnRddGFbZ11bIV0ge25hbWV9CisJCQlKdW1wIHRvIHRoZSBkZWZpbml0aW9uIG9mIHtuYW1lfSwgdXNpbmcgdGhlCisJCQlpbmZvcm1hdGlvbiBpbiB0aGUgdGFncyBmaWxlKHMpLiAgUHV0IHtuYW1lfSBpbiB0aGUKIAkJCXRhZyBzdGFjay4gIFNlZSB8dGFnLSF8IGZvciBbIV0uCi0JCQl7aWRlbnR9IGNhbiBiZSBhIHJlZ2V4cCBwYXR0ZXJuLCBzZWUgfHRhZy1yZWdleHB8LgotCQkJV2hlbiB0aGVyZSBhcmUgc2V2ZXJhbCBtYXRjaGluZyB0YWdzIGZvciB7aWRlbnR9LCBqdW1wCisJCQl7bmFtZX0gY2FuIGJlIGEgcmVnZXhwIHBhdHRlcm4sIHNlZSB8dGFnLXJlZ2V4cHwuCisJCQlXaGVuIHRoZXJlIGFyZSBzZXZlcmFsIG1hdGNoaW5nIHRhZ3MgZm9yIHtuYW1lfSwganVtcAogCQkJdG8gdGhlIFtjb3VudF0gb25lLiAgV2hlbiBbY291bnRdIGlzIG9taXR0ZWQgdGhlCiAJCQlmaXJzdCBvbmUgaXMganVtcGVkIHRvLiBTZWUgfHRhZy1tYXRjaGxpc3R8IGZvcgogCQkJanVtcGluZyB0byBvdGhlciBtYXRjaGluZyB0YWdzLgpAQCAtNDksMTYgKzQ5LDE2IEBACiBnPExlZnRNb3VzZT4JCQkJCQkqZzxMZWZ0TW91c2U+KgogPEMtTGVmdE1vdXNlPgkJCQkJKjxDLUxlZnRNb3VzZT4qICpDVFJMLV0qCiBDVFJMLV0JCQlKdW1wIHRvIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBrZXl3b3JkIHVuZGVyIHRoZQotCQkJY3Vyc29yLiAgU2FtZSBhcyAiOnRhZyB7aWRlbnR9Iiwgd2hlcmUge2lkZW50fSBpcyB0aGUKKwkJCWN1cnNvci4gIFNhbWUgYXMgIjp0YWcge25hbWV9Iiwgd2hlcmUge25hbWV9IGlzIHRoZQogCQkJa2V5d29yZCB1bmRlciBvciBhZnRlciBjdXJzb3IuCi0JCQlXaGVuIHRoZXJlIGFyZSBzZXZlcmFsIG1hdGNoaW5nIHRhZ3MgZm9yIHtpZGVudH0sIGp1bXAKKwkJCVdoZW4gdGhlcmUgYXJlIHNldmVyYWwgbWF0Y2hpbmcgdGFncyBmb3Ige25hbWV9LCBqdW1wCiAJCQl0byB0aGUgW2NvdW50XSBvbmUuICBXaGVuIG5vIFtjb3VudF0gaXMgZ2l2ZW4gdGhlCiAJCQlmaXJzdCBvbmUgaXMganVtcGVkIHRvLiBTZWUgfHRhZy1tYXRjaGxpc3R8IGZvcgogCQkJanVtcGluZyB0byBvdGhlciBtYXRjaGluZyB0YWdzLgogCQkJe1ZpOiBpZGVudGlmaWVyIGFmdGVyIHRoZSBjdXJzb3J9CiAKIAkJCQkJCQkqdl9DVFJMLV0qCi17VmlzdWFsfUNUUkwtXQkJU2FtZSBhcyAiOnRhZyB7aWRlbnR9Iiwgd2hlcmUge2lkZW50fSBpcyB0aGUgdGV4dCB0aGF0Cit7VmlzdWFsfUNUUkwtXQkJU2FtZSBhcyAiOnRhZyB7bmFtZX0iLCB3aGVyZSB7bmFtZX0gaXMgdGhlIHRleHQgdGhhdAogCQkJaXMgaGlnaGxpZ2h0ZWQuICB7bm90IGluIFZpfQogCiAJCQkJCQkJKnRlbG5ldC1DVFJMLV0qCkBAIC04Miw3ICs4Miw3IEBACiAKIE5vdGUgdGhhdCB3aGVuIHRoZSBjdXJyZW50IGZpbGUgY2hhbmdlcywgdGhlIHByaW9yaXR5IGxpc3QgaXMgbW9zdGx5IG5vdAogY2hhbmdlZCwgdG8gYXZvaWQgY29uZnVzaW9uIHdoZW4gdXNpbmcgIjp0bmV4dCIuICBJdCBpcyBjaGFuZ2VkIHdoZW4gdXNpbmcKLSI6dGFnIHtpZGVudH0iLgorIjp0YWcge25hbWV9Ii4KIAogVGhlIGlnbm9yZS1jYXNlIG1hdGNoZXMgYXJlIG5vdCBmb3VuZCBmb3IgYSAiOnRhZyIgY29tbWFuZCB3aGVuOgogLSB0aGUgJ2lnbm9yZWNhc2UnIG9wdGlvbiBpcyBvZmYgYW5kICd0YWdjYXNlJyBpcyAiZm9sbG93aWMiCkBAIC0xNjcsNyArMTY3LDcgQEAKIHlvdSBjYW4gQ1RSTC1dIHRvIGdldCB0byBGdW5jQy4gIElmIHlvdSBub3cgd2FudCB0byBnbyBiYWNrIHRvIG1haW4geW91IGNhbgogdXNlIENUUkwtVCB0d2ljZS4gIFRoZW4geW91IGNhbiBDVFJMLV0gdG8gRnVuY0IuCiAKLUlmIHlvdSBpc3N1ZSBhICI6dGEge2lkZW50fSIgb3IgQ1RSTC1dIGNvbW1hbmQsIHRoaXMgdGFnIGlzIGluc2VydGVkIGF0IHRoZQorSWYgeW91IGlzc3VlIGEgIjp0YSB7bmFtZX0iIG9yIENUUkwtXSBjb21tYW5kLCB0aGlzIHRhZyBpcyBpbnNlcnRlZCBhdCB0aGUKIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0YWNrLiAgSWYgdGhlIHN0YWNrIHdhcyBmdWxsIChpdCBjYW4gaG9sZCB1cCB0byAyMAogZW50cmllcyksIHRoZSBvbGRlc3QgZW50cnkgaXMgZGVsZXRlZCBhbmQgdGhlIG9sZGVyIGVudHJpZXMgc2hpZnQgb25lCiBwb3NpdGlvbiB1cCAodGhlaXIgaW5kZXggbnVtYmVyIGlzIGRlY3JlbWVudGVkIGJ5IG9uZSkuICBJZiB0aGUgbGFzdCB1c2VkCkBAIC0xOTEsMTQgKzE5MSwxNCBAQAogdGhlIHNhbWUgZW50cnkuCiAKIAkJCQkJCQkqOnRzKiAqOnRzZWxlY3QqCi06dHNbZWxlY3RdWyFdIFtpZGVudF0JTGlzdCB0aGUgdGFncyB0aGF0IG1hdGNoIFtpZGVudF0sIHVzaW5nIHRoZQorOnRzW2VsZWN0XVshXSBbbmFtZV0JTGlzdCB0aGUgdGFncyB0aGF0IG1hdGNoIFtuYW1lXSwgdXNpbmcgdGhlCiAJCQlpbmZvcm1hdGlvbiBpbiB0aGUgdGFncyBmaWxlKHMpLgotCQkJV2hlbiBbaWRlbnRdIGlzIG5vdCBnaXZlbiwgdGhlIGxhc3QgdGFnIG5hbWUgZnJvbSB0aGUKKwkJCVdoZW4gW25hbWVdIGlzIG5vdCBnaXZlbiwgdGhlIGxhc3QgdGFnIG5hbWUgZnJvbSB0aGUKIAkJCXRhZyBzdGFjayBpcyB1c2VkLgogCQkJU2VlIHx0YWctIXwgZm9yIFshXS4KIAkJCVdpdGggYSAnPicgaW4gdGhlIGZpcnN0IGNvbHVtbiBpcyBpbmRpY2F0ZWQgd2hpY2ggaXMKIAkJCXRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBsaXN0IChpZiB0aGVyZSBpcyBvbmUpLgotCQkJW2lkZW50XSBjYW4gYmUgYSByZWdleHAgcGF0dGVybiwgc2VlIHx0YWctcmVnZXhwfC4KKwkJCVtuYW1lXSBjYW4gYmUgYSByZWdleHAgcGF0dGVybiwgc2VlIHx0YWctcmVnZXhwfC4KIAkJCVNlZSB8dGFnLXByaW9yaXR5fCBmb3IgdGhlIHByaW9yaXRpZXMgdXNlZCBpbiB0aGUKIAkJCWxpc3RpbmcuICB7bm90IGluIFZpfQogCQkJRXhhbXBsZSBvdXRwdXQ6CkBAIC0yMjYsNyArMjI2LDcgQEAKIAkJCXR5cGUgJ3EnIGFuZCBlbnRlciB0aGUgbnVtYmVyLgogCiAJCQkJCQkJKjpzdHMqICo6c3RzZWxlY3QqCi06c3RzW2VsZWN0XVshXSBbaWRlbnRdCURvZXMgIjp0c2VsZWN0WyFdIFtpZGVudF0iIGFuZCBzcGxpdHMgdGhlIHdpbmRvdyBmb3IKKzpzdHNbZWxlY3RdWyFdIFtuYW1lXQlEb2VzICI6dHNlbGVjdFshXSBbbmFtZV0iIGFuZCBzcGxpdHMgdGhlIHdpbmRvdyBmb3IKIAkJCXRoZSBzZWxlY3RlZCB0YWcuICB7bm90IGluIFZpfQogCiAJCQkJCQkJKmddKgpAQCAtMjM4LDExICsyMzgsMTEgQEAKIAkJCWlkZW50aWZpZXIuICB7bm90IGluIFZpfQogCiAJCQkJCQkJKjp0aiogKjp0anVtcCoKLTp0alt1bXBdWyFdIFtpZGVudF0JTGlrZSAiOnRzZWxlY3QiLCBidXQganVtcCB0byB0aGUgdGFnIGRpcmVjdGx5IHdoZW4KKzp0alt1bXBdWyFdIFtuYW1lXQlMaWtlICI6dHNlbGVjdCIsIGJ1dCBqdW1wIHRvIHRoZSB0YWcgZGlyZWN0bHkgd2hlbgogCQkJdGhlcmUgaXMgb25seSBvbmUgbWF0Y2guICB7bm90IGluIFZpfQogCiAJCQkJCQkJKjpzdGoqICo6c3RqdW1wKgotOnN0alt1bXBdWyFdIFtpZGVudF0JRG9lcyAiOnRqdW1wWyFdIFtpZGVudF0iIGFuZCBzcGxpdHMgdGhlIHdpbmRvdyBmb3IgdGhlCis6c3RqW3VtcF1bIV0gW25hbWVdCURvZXMgIjp0anVtcFshXSBbbmFtZV0iIGFuZCBzcGxpdHMgdGhlIHdpbmRvdyBmb3IgdGhlCiAJCQlzZWxlY3RlZCB0YWcuICB7bm90IGluIFZpfQogCiAJCQkJCQkJKmdfQ1RSTC1dKgpAQCAtMjc3LDkgKzI3Nyw5IEBACiAJCQlpbiBWaX0KIAogCQkJCQkJCSo6bHQqICo6bHRhZyoKLTpsdFthZ11bIV0gW2lkZW50XQlKdW1wIHRvIHRhZyBbaWRlbnRdIGFuZCBhZGQgdGhlIG1hdGNoaW5nIHRhZ3MgdG8gYSBuZXcKLQkJCWxvY2F0aW9uIGxpc3QgZm9yIHRoZSBjdXJyZW50IHdpbmRvdy4gIFtpZGVudF0gY2FuIGJlCi0JCQlhIHJlZ2V4cCBwYXR0ZXJuLCBzZWUgfHRhZy1yZWdleHB8LiAgV2hlbiBbaWRlbnRdIGlzCis6bHRbYWddWyFdIFtuYW1lXQlKdW1wIHRvIHRhZyBbbmFtZV0gYW5kIGFkZCB0aGUgbWF0Y2hpbmcgdGFncyB0byBhIG5ldworCQkJbG9jYXRpb24gbGlzdCBmb3IgdGhlIGN1cnJlbnQgd2luZG93LiAgW25hbWVdIGNhbiBiZQorCQkJYSByZWdleHAgcGF0dGVybiwgc2VlIHx0YWctcmVnZXhwfC4gIFdoZW4gW25hbWVdIGlzCiAJCQlub3QgZ2l2ZW4sIHRoZSBsYXN0IHRhZyBuYW1lIGZyb20gdGhlIHRhZyBzdGFjayBpcwogCQkJdXNlZC4gIFRoZSBzZWFyY2ggcGF0dGVybiB0byBsb2NhdGUgdGhlIHRhZyBsaW5lIGlzCiAJCQlwcmVmaXhlZCB3aXRoICJcViIgdG8gZXNjYXBlIGFsbCB0aGUgc3BlY2lhbApAQCAtMzExLDEyICszMTEsMTIgQEAKIHtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgfCtxdWlja2ZpeHwgZmVhdHVyZX0KIAogCQkJCQkJCSo6cHRzKiAqOnB0c2VsZWN0KgotOnB0c1tlbGVjdF1bIV0gW2lkZW50XQlEb2VzICI6dHNlbGVjdFshXSBbaWRlbnRdIiBhbmQgc2hvd3MgdGhlIG5ldyB0YWcgaW4gYQorOnB0c1tlbGVjdF1bIV0gW25hbWVdCURvZXMgIjp0c2VsZWN0WyFdIFtuYW1lXSIgYW5kIHNob3dzIHRoZSBuZXcgdGFnIGluIGEKIAkJCSJQcmV2aWV3IiB3aW5kb3cuICBTZWUgfDpwdGFnfCBmb3IgbW9yZSBpbmZvLgogCQkJe25vdCBpbiBWaX0KIAogCQkJCQkJCSo6cHRqKiAqOnB0anVtcCoKLTpwdGpbdW1wXVshXSBbaWRlbnRdCURvZXMgIjp0anVtcFshXSBbaWRlbnRdIiBhbmQgc2hvd3MgdGhlIG5ldyB0YWcgaW4gYQorOnB0alt1bXBdWyFdIFtuYW1lXQlEb2VzICI6dGp1bXBbIV0gW25hbWVdIiBhbmQgc2hvd3MgdGhlIG5ldyB0YWcgaW4gYQogCQkJIlByZXZpZXciIHdpbmRvdy4gIFNlZSB8OnB0YWd8IGZvciBtb3JlIGluZm8uCiAJCQl7bm90IGluIFZpfQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90ZXJtaW5hbC50eHQgYi9ydW50aW1lL2RvYy90ZXJtaW5hbC50eHQKaW5kZXggNTlhZWI5Ny4uMmRhNjkwNCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGVybWluYWwudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Rlcm1pbmFsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0ZXJtaW5hbC50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBBcHIgMjAKKyp0ZXJtaW5hbC50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBNYXkgMDQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNDY2LDYgKzQ2Niw4IEBACiAJCUxldCBWaW0gb3BlbiBhIGZpbGUsIGxpa2UgdGhlIGA6ZHJvcGAgY29tbWFuZC4gIElmIHtmaWxlbmFtZX0KIAkJaXMgYWxyZWFkeSBvcGVuIGluIGEgd2luZG93LCBzd2l0Y2ggdG8gdGhhdCB3aW5kb3cuICBPdGhlcndpc2UKIAkJb3BlbiBhIG5ldyB3aW5kb3cgdG8gZWRpdCB7ZmlsZW5hbWV9LgorCQlOb3RlIHRoYXQgYm90aCB0aGUgam9iIGFuZCBWaW0gbWF5IGNoYW5nZSB0aGUgY3VycmVudAorCQlkaXJlY3RvcnksIHRodXMgaXQncyBiZXN0IHRvIHVzZSB0aGUgZnVsbCBwYXRoLgogCiAJCVtvcHRpb25zXSBpcyBvbmx5IHVzZWQgd2hlbiBvcGVuaW5nIGEgbmV3IHdpbmRvdy4gIElmIHByZXNlbnQsCiAJCWl0IG11c3QgYmUgYSBEaWN0LiAgU2ltaWxhcmx5IHRvIHwrK29wdHwsIFRoZXNlIGVudHJpZXMgYXJlIHJlY29nbml6ZWQ6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGI5YzYxY2QuLmU1ZTY5OWUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxOCBBcHIgMzAKKyp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTggTWF5IDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQwLDYgKzQwLDEwIEBACiAKIFByb2JsZW0gd2l0aCBzdWRvLiAjMjc1OAogCitMb29rcyBsaWtlIGFuIGVycm9yIGZvciBpbnNlcnRpbmcgcmVnaXN0ZXIgbWFrZXMgIjpmaWxlIG90aGVyIiBub3Qgd29yay4KKyhUb20gTSwgMjAxOCBNYXIgMjgpICBSZXNldCBkaWRfZW1zZyBhZnRlciBpbnNlcnRpbmcgYSByZWdpc3Rlci4KK09yIGF0IHRoZSB0b3Agb2YgdGhlIGxvb3A/IChBcHIgNCkKKwogTWFrZSBhc3NlcnRfZnVuY3Rpb25zIHJldHVybiBub24temVybyBvbiBmYWlsdXJlLiAgTWFrZSBzdXJlIHRoZXkgYWRkIG9uZQogZW50cnkgdG8gdjplcnJvcnMgdGhlbi4KIFVzZSBXYWl0Rm9yQXNzZXJ0KCkgaW4gdGVzdHM6IGdpdmUgZXJyb3Igd2hlbiBmYWlsZWQuCkBAIC01MiwyMyArNTYsMTkgQEAKIEVycm9ycyBmb3VuZCB3aXRoIHJhbmRvbSBkYXRhOgogICAgIGhlYXAtYnVmZmVyLW92ZXJmbG93IGluIGFsaXN0X2FkZCAoIzI0NzIpCiAKLVBhdGNoIHRvIHNob3J0ZW4gZmlsZW5hbWVzIGluIHF1aWNrZml4IHdpbmRvdy4gKFllZ2FwcGFuLCAyMDE4IEFwciAyOCwgIzI4NTEsCi1jbG9zZXMgIzI4NDYpCi0KIE1vcmUgd2FybmluZ3MgZnJvbSBzdGF0aWMgYW5hbHlzaXM6CiBodHRwczovL2xndG0uY29tL3Byb2plY3RzL2cvdmltL3ZpbS9hbGVydHMvP21vZGU9bGlzdAogCi1Mb29rcyBsaWtlIGFuIGVycm9yIGZvciBpbnNlcnRpbmcgcmVnaXN0ZXIgbWFrZXMgIjpmaWxlIG90aGVyIiBub3Qgd29yay4KLShUb20gTSwgMjAxOCBNYXIgMjgpICBSZXNldCBkaWRfZW1zZyBhZnRlciBpbnNlcnRpbmcgYSByZWdpc3Rlci4KLU9yIGF0IHRoZSB0b3Agb2YgdGhlIGxvb3A/IChBcHIgNCkKLQotUGF0Y2ggdG8gYWRkICJtb2R1bGUiIHRvIHF1aWNrZml4IGVudHJpZXMuIChNYXJjaW4gU3phbW90dWxza2ksIENvb3QsIDIwMTcgSnVuCi04LCAjMTc1NykgIE5vdyBwYXJ0IG9mICMyMzIyLiAgT3IgIzIzMjc/ICAjMTc1NyB3YXMgcmUtb3BlbmVkLCBpbmNsdWRlIHRoYXQKLWZpcnN0LgotCiBXaGVuIG9wZW5pbmcgZm9vL3gudHh0IGFuZCBiYXIveC50eHQgZ2V0IHN3YXAgZmlsZSB3YXJuaW5nLiAgU2hvdWxkIGNoZWNrIHRoZQogZmlsZSBuYW1lLiAoSnVlcmdlbiBXZWlnZXJ0KQogCitTY3JpcHQgZ2VuZXJhdGVkIGJ5IDpta3Nlc3Npb24gZG9lcyBub3Qgd29yayB3ZWxsIGlmIHRoZXJlIGFyZSB3aW5kb3dzIHdpdGgKK21vZGlmaWVkIGJ1ZmZlcnMKKyAgY2hhbmdlICJzaWxlbnQgb25seSIgaW50byAic2lsZW50IG9ubHkhIgorICBjaGFuZ2UgImVkaXQgZm5hbWUiIG9mIGZpcnN0IGJ1ZmZlciB0byAiaGlkZSBlZGl0IGZuYW1lIgorICBza2lwICJiYWRkIGZuYW1lIiBpZiAiZm5hbWUiIGlzIGFscmVhZHkgaW4gdGhlIGJ1ZmZlciBsaXN0CisgIHJlbW92ZSByZW1hcmsgYWJvdXQgdW5sb2FkaW5nIGJ1ZmZlcnMgZnJvbSBkb2N1bWVudGF0aW9uCisKIENvbXBpbGVyIHdhcm5pbmdzIChnZWVrbmlrLCAyMDE3IE9jdCAyNik6CiAtIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IGluIGRvX3N1YigpICgjMjI0OSkKIC0gc2lnbmVkIGludGVnZXIgb3ZlcmZsb3cgaW4gZ2V0X2FkZHJlc3MoKSAoIzIyNDgpCkBAIC04Nyw5ICs4Nyw2IEBACiBBZGQgYSBNb2RlQ2hhbmdlZCBhdXRvY29tbWFuZCB0aGF0IGhhcyBhbiBhcmd1bWVudCBpbmRpY2F0aW5nIHRoZSBvbGQgYW5kIG5ldwogbW9kZS4gIEFsc28gdXNlZCBmb3Igc3dpdGNoaW5nIFRlcm1pbmFsIG1vZGUuCiAKLVBhdGNoIHRvIHNob3J0ZW4gZmlsZW5hbWVzIGluIHF1aWNrZml4IHdpbmRvdy4gKFllZ2FwcGFuIExha3NobWFuYW4sIDIwMTgKLUFwciAyNykKLQogQWRkIGFuIG9wdGlvbiB3aXRoIGZpbGUgcGF0dGVybnMsIHRvIGJlIHVzZWQgd2hlbiB1bmxvYWRpbmcgYSBidWZmZXI6IElmIHRoZXJlCiBpcyBhIG1hdGNoLCByZW1vdmUgZW50cmllcyBmb3IgdGhlIGJ1ZmZlciBmcm9tIG1hcmtzLCBqdW1wbGlzdCwgZXRjLiAgVG8gYmUKIHVzZWQgZm9yIGdpdCB0ZW1wIGZpbGVzLgpAQCAtOTksOSArOTYsMjggQEAKIEFkZCBhbiBvcHRpb24gc2ltaWxhciB0byAnbGF6eXJlZHJhdycgdG8gc2tpcCByZWRyYXdpbmcgd2hpbGUgZXhlY3V0aW5nIGEKIHNjcmlwdCBvciBmdW5jdGlvbi4KIAotQWx0ZXJuYXRpdmUgbWFucGFnZXIudmltLiAoRW5ubywgMjAxOCBKYW4gNSwgIzI1MjkpCitNUy1XaW5kb3dzOiB3cml0ZSBtYXkgZmFpbCBpZiBhbm90aGVyIHByb2dyYW0gaXMgcmVhZGluZyB0aGUgZmlsZS4KK0lmICdyZWFkb25seScgaXMgbm90IHNldCBidXQgdGhlIGZpbGUgYXBwZWFycyB0byBiZSByZWFkb25seSBsYXRlciwgdHJ5IGFnYWluCisod2FpdCBhIGxpdHRsZSB3aGlsZSkuCitDcmVhdGVGaWxlKCkgcmV0dXJucyBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTiAoTGlud2VpLCAyMDE4IE1heSA1KQogCi1QYXRjaCB0byBhZGQgbW9yZSBmbGFncyB0byA6bHMuIChNYXJjaW4gU3phbW90dWxza2ksICMyNzUxKQorU2hvdWxkIGFkZCBhIHRlc3QgZm9yIGV2ZXJ5IGNvbW1hbmQgbGluZSBhcmd1bWVudC4gIENoZWNrIGNvdmVyYWdlIGZvciB3aGF0IGlzCittaXNzaW5nOiAtLW5vZm9yaywgLUEgLCAtYiwgLWgsIGV0Yy4KKworSW1wcm92ZSB0aGUgaW5zdGFsbGVyIGZvciBNUy1XaW5kb3dzLiAgVGhlcmUgYXJlIGEgZmV3IGFsdGVybmF0aXZlczoKKy0gQWRkIHNpbGVudCBpbnN0YWxsIG9wdGlvbi4gKFNoYW5lIExlZSwgIzc1MSkKKy0gSW5zdGFsbGVyIGZyb20gQ3JlYW0gKFN0ZXZlIEhhbGwpLgorLSBNb2Rlcm4gVUkgMi4wIGZvciB0aGUgTnNpcyBpbnN0YWxsZXIuIChHdW9wZW5nIFdlbikKKyAgICBodHRwczovL2dpdGh1Yi5jb20vZ3B3ZW4vdmltLWluc3RhbGxlci1tdWkyCistICBtYWtlIGl0IHBvc3NpYmxlIHRvIGRvIGEgc2lsZW50IGluc3RhbGwsIHNlZQorICAgIGh0dHA6Ly9uc2lzLnNvdXJjZWZvcmdlLm5ldC9Eb2NzL0NoYXB0ZXI0Lmh0bWwjNC4xMgorICAgIFZlcnNpb24gZnJvbSBHdW9wZW5nIFdlbiBkb2VzIHRoaXMuCistIE1TSSBpbnN0YWxsZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRya2xlL3ZpbS1tc2kvCistIFRoZSBvbmUgb24gSXNzdWUgMjc5LgorUHJvYmxlbTogdGhleSBhbGwgd29yayBzbGlnaHRseSBkaWZmZXJlbnQgKGUuZy4gZG9uJ3QgaW5zdGFsbCB2aW1ydW4uZXhlKS4KK0hvdyB0byB0ZXN0IHRoYXQgaXQgd29ya3Mgd2VsbCBmb3IgYWxsIFZpbSB1c2Vycz8KKworQWx0ZXJuYXRpdmUgbWFucGFnZXIudmltLiAoRW5ubywgMjAxOCBKYW4gNSwgIzI1MjkpCiAKIERvZXMgc2V0dGluZyAnY3Vyc29ybGluZScgY2F1c2Ugc3ludGF4IGhpZ2hsaWdodGluZyB0byBzbG93IGRvd24/ICBQZXJoYXBzIGlzCiBtZXNzIHVwIHRoZSBjYWNoZT8gIChNaWtlIExlZSBXaWxsaWFtcywgMjAxOCBKYW4gMjcsICMyNTM5KQpAQCAtMTEwLDYgKzEyNiw4IEBACiBXaGVuIHVzaW5nIDpwYWNrYWRkIGZpbGVzIHVuZGVyICJsYXRlciIgYXJlIG5vdCB1c2VkLCB3aGljaCBpcyBpbmNvbnNpc3RlbnQKIHdpdGggcGFja2FnZXMgdW5kZXIgInN0YXJ0Ii4gKHh0YWw4LCAjMTk5NCkKIAorUGF0Y2ggdG8gc3VwcG9ydCAieHhkIC1wcyIuIChFcmlrIEF1ZXJzd2FsZCwgMjAxOCBNYXkgMSkKKwogQ29sdW1uIG51bWJlciBpcyB3cm9uZyB3aGVuIHVzaW5nICdsaW5lYnJlYWsnIGFuZCAnd3JhcCcuIChLZWl0aCBTbWlsZXksIDIwMTgKIEphbiAxNSwgIzI1NTUpCiAKQEAgLTExNyw4ICsxMzUsOSBAQAogCiBDaGVjayBhcmd1bWVudCBvZiBzeXN0ZW1saXN0KCkuIChQYXZsb3YpCiAKLVBhdGNoIHRvIHN1cHBvcnQgMjU2IGNvbG9ycyBpbiBXaW5kb3dzIGNvbnNvbGUuIChOb2J1aGlybyBUYWthc2FraSwgMjAxOCBBcHIKLTI1LCAjMjgyMSkKK0NhbiB3ZSBtYWtlICI6dW5sZXQgJFZBUiIgdXNlIHVuc2V0ZW52KCkgdG8gZGVsZXRlIHRoZSBlbnYgdmFyPworV2hhdCBmb3Igc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdW5zZXRlbnYoKT8gIChJc3N1ZSAjMTExNikKK1BhdGNoIGluICMyODU1LCAoWWFzdWhpcm8gTWF0c3Vtb3RvKQogCiBQYXRjaCB0byBhZGQgcmVnX2V4ZWN1dGluZygpIGFuZCByZWdfcmVjb3JkaW5nKCkuIChIaXJvaGl0byBIaWdhc2hpLCAjMjc0NSkKIApAQCAtMTIxNiw5ICsxMjM1LDYgQEAKIHJpZ2h0LW1vdXNlLWRyYWcgb24gdGhlIHN0YXR1cyBsaW5lIHRvIG1vdmUgYSB3aW5kb3cgdXAvZG93biB3aXRob3V0IGNoYW5naW5nCiBpdHMgaGVpZ2h0PyAgSXQncyBsaWtlIGRyYWdnaW5nIHRoZSBzdGF0dXMgYmFyIGFib3ZlIGl0IGF0IHRoZSBzYW1lIHRpbWUuCiAKLUNhbiB3ZSBtYWtlICI6dW5sZXQgJFZBUiIgdXNlIHVuc2V0ZW52KCkgdG8gZGVsZXRlIHRoZSBlbnYgdmFyPwotV2hhdCBmb3Igc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdW5zZXRlbnYoKT8gIChJc3N1ZSAjMTExNikKLQogUGF0Y2ggdG8gYWRkIGEgOmRvbW9kZWxpbmUgY29tbWFuZC4gKENocmlzdGlhbiBCcmFiYW5kdCwgMjAxNCBPY3QgMjEpCiAKIFRoaXMgZG9lcyBub3QgZ2l2ZSBhbiBlcnJvcjogKEFuZHJlIFNpaGVyYSwgMjAxNCBNYXIgMjEpCkBAIC0xMzgzLDE5ICsxMzk5LDYgQEAKIAogRGlhbG9nIGlzIHRvbyBiaWcgb24gTGludXggdG9vLiAoRGF2aWQgRmlzaGJ1cm4sIDIwMTMgU2VwIDIpCiAKLUltcHJvdmUgdGhlIGluc3RhbGxlciBmb3IgTVMtV2luZG93cy4gIFRoZXJlIGFyZSBhIGZldyBhbHRlcm5hdGl2ZXM6Ci0tIEFkZCBzaWxlbnQgaW5zdGFsbCBvcHRpb24uIChTaGFuZSBMZWUsICM3NTEpCi0tIEluc3RhbGxlciBmcm9tIENyZWFtIChTdGV2ZSBIYWxsKS4KLS0gTW9kZXJuIFVJIDIuMCBmb3IgdGhlIE5zaXMgaW5zdGFsbGVyLiAoR3VvcGVuZyBXZW4pCi0gICAgaHR0cHM6Ly9naXRodWIuY29tL2dwd2VuL3ZpbS1pbnN0YWxsZXItbXVpMgotLSAgbWFrZSBpdCBwb3NzaWJsZSB0byBkbyBhIHNpbGVudCBpbnN0YWxsLCBzZWUKLSAgICBodHRwOi8vbnNpcy5zb3VyY2Vmb3JnZS5uZXQvRG9jcy9DaGFwdGVyNC5odG1sIzQuMTIKLSAgICBWZXJzaW9uIGZyb20gR3VvcGVuZyBXZW4gZG9lcyB0aGlzLgotLSBNU0kgaW5zdGFsbGVyOiBodHRwczovL2dpdGh1Yi5jb20vcGV0cmtsZS92aW0tbXNpLwotLSBUaGUgb25lIG9uIElzc3VlIDI3OS4KLVByb2JsZW06IHRoZXkgYWxsIHdvcmsgc2xpZ2h0bHkgZGlmZmVyZW50IChlLmcuIGRvbid0IGluc3RhbGwgdmltcnVuLmV4ZSkuCi1Ib3cgdG8gdGVzdCB0aGF0IGl0IHdvcmtzIHdlbGwgZm9yIGFsbCBWaW0gdXNlcnM/Ci0KIFBhdGNoIHRvIG1ha2UgZm9sZCB1cGRhdGVzIG11Y2ggZmFzdGVyLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIERlYykKIAogLSAgIEFkZCByZWdleCBmb3IgJ3BhcmFncmFwaHMnIGFuZCAnc2VjdGlvbnMnOiAncGFyYXJlJyBhbmQgJ3NlY3RyZScuICBDb21iaW5lCmRpZmYgLS1naXQgYS9ydW50aW1lL2ZpbGV0eXBlLnZpbSBiL3J1bnRpbWUvZmlsZXR5cGUudmltCmluZGV4IDdhMzFhMTAuLjU0MWY2MTMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZmlsZXR5cGUudmltCisrKyBiL3J1bnRpbWUvZmlsZXR5cGUudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIGRldGVjdCBmaWxlIHR5cGVzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDE4IEphbiAyOAorIiBMYXN0IENoYW5nZToJMjAxOCBNYXkgMDQKIAogIiBMaXN0ZW4gdmVyeSBjYXJlZnVsbHksIEkgd2lsbCBzYXkgdGhpcyBvbmx5IG9uY2UKIGlmIGV4aXN0cygiZGlkX2xvYWRfZmlsZXR5cGVzIikKQEAgLTQyOSw2ICs0MjksMTMgQEAKIAlcfCAgIHNldGYgZGViY29udHJvbAogCVx8IGVuZGlmCiAKKyIgRGViaWFuIENvcHlyaWdodAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkICovZGViaWFuL2NvcHlyaWdodAlzZXRmIGRlYmNvcHlyaWdodAorYXUgQnVmTmV3RmlsZSxCdWZSZWFkIGNvcHlyaWdodAorCVwgIGlmIGdldGxpbmUoMSkgPX4gJ15Gb3JtYXQ6JworCVx8ICAgc2V0ZiBkZWJjb3B5cmlnaHQKKwlcfCBlbmRpZgorCiAiIERlYmlhbiBTb3VyY2VzLmxpc3QKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9hcHQvc291cmNlcy5saXN0CQlzZXRmIGRlYnNvdXJjZXMKIGF1IEJ1Zk5ld0ZpbGUsQnVmUmVhZCAqL2V0Yy9hcHQvc291cmNlcy5saXN0LmQvKi5saXN0CXNldGYgZGVic291cmNlcwpkaWZmIC0tZ2l0IGEvcnVudGltZS9mdHBsdWdpbi9kZWJjaGFuZ2Vsb2cudmltIGIvcnVudGltZS9mdHBsdWdpbi9kZWJjaGFuZ2Vsb2cudmltCmluZGV4IDMyZjY4MzEuLmE3OGY3ODEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZnRwbHVnaW4vZGViY2hhbmdlbG9nLnZpbQorKysgYi9ydW50aW1lL2Z0cGx1Z2luL2RlYmNoYW5nZWxvZy52aW0KQEAgLTMsMjAgKzMsMjAgQEAKICIgTWFpbnRhaW5lcjogICBEZWJpYW4gVmltIE1haW50YWluZXJzCiAiIEZvcm1lciBNYWludGFpbmVyczogICBNaWNoYWVsIFBpZWZlbCA8cGllZmVsQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgogIiAgICAgICAgICAgICAgICAgICAgICAgU3RlZmFubyBaYWNjaGlyb2xpIDx6YWNrQGRlYmlhbi5vcmc+Ci0iIExhc3QgQ2hhbmdlOiAgMjAxOC0wMS0wNgorIiBMYXN0IENoYW5nZTogIDIwMTgtMDEtMjgKICIgTGljZW5zZTogICAgICBWaW0gTGljZW5zZQogIiBVUkw6ICAgICAgICAgIGh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy92aW0tdGVhbS92aW0tZGViaWFuL2Jsb2IvbWFzdGVyL2Z0cGx1Z2luL2RlYmNoYW5nZWxvZy52aW0KIAogIiBCdWcgY29tcGxldGlvbiByZXF1aXJlcyBhcHQtbGlzdGJ1Z3MgaW5zdGFsbGVkIGZvciBEZWJpYW4gcGFja2FnZXMgb3IKICIgcHl0aG9uLWxhdW5jaHBhZGxpYiBpbnN0YWxsZWQgZm9yIFVidW50dSBwYWNrYWdlcwogCi1pZiBleGlzdHMoImI6ZGlkX2Z0cGx1Z2luIikKK2lmIGV4aXN0cygnYjpkaWRfZnRwbHVnaW4nKQogICBmaW5pc2gKIGVuZGlmCiBsZXQgYjpkaWRfZnRwbHVnaW49MQogCiAiIHt7ezEgTG9jYWwgc2V0dGluZ3MgKGRvIG9uIGV2ZXJ5IGxvYWQpCi1pZiBleGlzdHMoImc6ZGViY2hhbmdlbG9nX2ZvbGRfZW5hYmxlIikKK2lmIGV4aXN0cygnZzpkZWJjaGFuZ2Vsb2dfZm9sZF9lbmFibGUnKQogICBzZXRsb2NhbCBmb2xkbWV0aG9kPWV4cHIKICAgc2V0bG9jYWwgZm9sZGV4cHI9RGViR2V0Q2hhbmdlbG9nRm9sZCh2OmxudW0pCiAgIHNldGxvY2FsIGZvbGR0ZXh0PURlYkNoYW5nZWxvZ0ZvbGRUZXh0KCkKQEAgLTI4LDEwICsyOCwxMCBAQAogc2V0bG9jYWwgY29tbWVudHM9ZjoqIAogCiAiIENsZWFuIHVubG9hZGluZwotbGV0IGI6dW5kb19mdHBsdWdpbiA9ICJzZXRsb2NhbCB0dzwgY29tbWVudHM8IGZvbGRtZXRob2Q8IGZvbGRleHByPCBmb2xkdGV4dDwiCitsZXQgYjp1bmRvX2Z0cGx1Z2luID0gJ3NldGxvY2FsIHR3PCBjb21tZW50czwgZm9sZG1ldGhvZDwgZm9sZGV4cHI8IGZvbGR0ZXh0PCcKICIgfX19MQogCi1pZiBleGlzdHMoImc6ZGlkX2NoYW5nZWxvZ19mdHBsdWdpbiIpCitpZiBleGlzdHMoJ2c6ZGlkX2NoYW5nZWxvZ19mdHBsdWdpbicpCiAgIGZpbmlzaAogZW5kaWYKIApAQCAtNDQsNDEgKzQ0LDQxIEBACiAiIFJldHVybnMgZnVsbCBuYW1lLCBlaXRoZXIgZnJvbSAkREVCRlVMTE5BTUUgb3IgZGViaWFuZnVsbG5hbWUuCiAiIFRPRE8gSXMgdGhlcmUgYSB3YXkgdG8gZGV0ZXJtaW5lIG5hbWUgZnJvbSBhbnl3aGVyZSBlbHNlPwogZnVuY3Rpb24gPFNJRD5GdWxsTmFtZSgpCi0gICAgaWYgZXhpc3RzKCIkREVCRlVMTE5BTUUiKQorICAgIGlmIGV4aXN0cygnJERFQkZVTExOQU1FJykKIAlyZXR1cm4gJERFQkZVTExOQU1FCi0gICAgZWxzZWlmIGV4aXN0cygiZzpkZWJpYW5mdWxsbmFtZSIpCisgICAgZWxzZWlmIGV4aXN0cygnZzpkZWJpYW5mdWxsbmFtZScpCiAJcmV0dXJuIGc6ZGViaWFuZnVsbG5hbWUKICAgICBlbHNlCi0JcmV0dXJuICJZb3VyIE5hbWUiCisJcmV0dXJuICdZb3VyIE5hbWUnCiAgICAgZW5kaWYKIGVuZGZ1bmN0aW9uCiAKICIgUmV0dXJucyBlbWFpbCBhZGRyZXNzLCBmcm9tICRERUJFTUFJTCwgJEVNQUlMIG9yIGRlYmlhbmVtYWlsLgogZnVuY3Rpb24gPFNJRD5FbWFpbCgpCi0gICAgaWYgZXhpc3RzKCIkREVCRU1BSUwiKQorICAgIGlmIGV4aXN0cygnJERFQkVNQUlMJykKIAlyZXR1cm4gJERFQkVNQUlMCi0gICAgZWxzZWlmIGV4aXN0cygiJEVNQUlMIikKKyAgICBlbHNlaWYgZXhpc3RzKCckRU1BSUwnKQogCXJldHVybiAkRU1BSUwKLSAgICBlbHNlaWYgZXhpc3RzKCJnOmRlYmlhbmVtYWlsIikKKyAgICBlbHNlaWYgZXhpc3RzKCdnOmRlYmlhbmVtYWlsJykKIAlyZXR1cm4gZzpkZWJpYW5lbWFpbAogICAgIGVsc2UKLQlyZXR1cm4gInlvdXJAZW1haWwuYWRkcmVzcyIKKwlyZXR1cm4gJ3lvdXJAZW1haWwuYWRkcmVzcycKICAgICBlbmRpZgogZW5kZnVuY3Rpb24KIAogIiBSZXR1cm5zIGRhdGUgaW4gUkZDODIyIGZvcm1hdC4KIGZ1bmN0aW9uIDxTSUQ+RGF0ZSgpCiAgICAgbGV0IHNhdmVsYW5nID0gdjpsY190aW1lCi0gICAgZXhlY3V0ZSAibGFuZ3VhZ2UgdGltZSBDIgotICAgIGxldCBkYXRlYW5kdGltZSA9IHN0cmZ0aW1lKCIlYSwgJWQgJWIgJVkgJVggJXoiKQotICAgIGV4ZWN1dGUgImxhbmd1YWdlIHRpbWUgIiAuIHNhdmVsYW5nCisgICAgZXhlY3V0ZSAnbGFuZ3VhZ2UgdGltZSBDJworICAgIGxldCBkYXRlYW5kdGltZSA9IHN0cmZ0aW1lKCclYSwgJWQgJWIgJVkgJVggJXonKQorICAgIGV4ZWN1dGUgJ2xhbmd1YWdlIHRpbWUgJyAuIHNhdmVsYW5nCiAgICAgcmV0dXJuIGRhdGVhbmR0aW1lCiBlbmRmdW5jdGlvbgogCiBmdW5jdGlvbiA8U0lEPldhcm5JZk5vdFVuZmluYWxpc2VkKCkKLSAgICBpZiBtYXRjaChnZXRsaW5lKCIuIiksICIgLS0gW1s6YWxwaGE6XV1bWzphbG51bTpdLl0iKSE9LTEKKyAgICBpZiBtYXRjaChnZXRsaW5lKCcuJyksICcgLS0gW1s6YWxwaGE6XV1bWzphbG51bTpdLl0nKSE9LTEKIAllY2hvaGwgV2FybmluZ01zZwotCWVjaG8gIlRoZSBlbnRyeSBoYXMgbm90IGJlZW4gdW5maW5hbGlzZWQgYmVmb3JlIGVkaXRpbmcuIgorCWVjaG8gJ1RoZSBlbnRyeSBoYXMgbm90IGJlZW4gdW5maW5hbGlzZWQgYmVmb3JlIGVkaXRpbmcuJwogCWVjaG9obCBOb25lCiAJcmV0dXJuIDEKICAgICBlbmRpZgpAQCAtODYsMTAgKzg2LDEwIEBACiBlbmRmdW5jdGlvbgogCiBmdW5jdGlvbiA8U0lEPkZpbmFsaXNlZCgpCi0gICAgbGV0IHNhdmVsaW5lbnVtID0gbGluZSgiLiIpCi0gICAgbm9ybWFsIDFHCi0gICAgY2FsbCBzZWFyY2goIl4gLS0gIikKLSAgICBpZiBtYXRjaChnZXRsaW5lKCIuIiksICIgLS0gW1s6YWxwaGE6XV1bWzphbG51bTpdLl0iKSE9LTEKKyAgICBsZXQgc2F2ZWxpbmVudW0gPSBsaW5lKCcuJykKKyAgICAxCisgICAgY2FsbCBzZWFyY2goJ14gLS0gJykKKyAgICBpZiBtYXRjaChnZXRsaW5lKCcuJyksICcgLS0gW1s6YWxwaGE6XV1bWzphbG51bTpdLl0nKSE9LTEKIAlsZXQgcmV0dXJudmFsdWUgPSAxCiAgICAgZWxzZQogCWxldCByZXR1cm52YWx1ZSA9IDAKQEAgLTEwOSw1NCArMTA5LDU0IEBACiAgICAgYW1lbnUgZGlzYWJsZSBDaGFuZ2Vsb2cuVW5maW5hbGlzZQogICAgIGFtZW51IGVuYWJsZSBDaGFuZ2Vsb2cuRmluYWxpc2UKICAgICBjYWxsIGFwcGVuZCgwLCBzdWJzdGl0dXRlKGdldGxpbmUoMSksICctXChbWzpkaWdpdDpdXVwrXCkpJywgJy0kJFwxKScsICcnKSkKLSAgICBjYWxsIGFwcGVuZCgxLCAiIikKLSAgICBjYWxsIGFwcGVuZCgyLCAiIikKLSAgICBjYWxsIGFwcGVuZCgzLCAiIC0tICIpCi0gICAgY2FsbCBhcHBlbmQoNCwgIiIpCi0gICAgY2FsbCBVcmdlbmN5KCJsb3ciKQotICAgIG5vcm1hbCAxRzAKLSAgICBjYWxsIHNlYXJjaCgiKSIpCi0gICAgbm9ybWFsIGgKLSAgICBub3JtYWwgAQorICAgIGNhbGwgYXBwZW5kKDEsICcnKQorICAgIGNhbGwgYXBwZW5kKDIsICcnKQorICAgIGNhbGwgYXBwZW5kKDMsICcgLS0gJykKKyAgICBjYWxsIGFwcGVuZCg0LCAnJykKKyAgICBjYWxsIFVyZ2VuY3koJ2xvdycpCisgICAgbm9ybWFsISAxRzAKKyAgICBjYWxsIHNlYXJjaCgnKScpCisgICAgbm9ybWFsISBoCisgICAgbm9ybWFsISABCiAgICAgY2FsbCBzZXRsaW5lKDEsIHN1YnN0aXR1dGUoZ2V0bGluZSgxKSwgJy1cJFwkJywgJy0nLCAnJykpCi0gICAgaWYgZXhpc3RzKCJnOmRlYmNoYW5nZWxvZ19mb2xkX2VuYWJsZSIpCisgICAgaWYgZXhpc3RzKCdnOmRlYmNoYW5nZWxvZ19mb2xkX2VuYWJsZScpCiAgICAgICAgIGZvbGRvcGVuCiAgICAgZW5kaWYKICAgICBjYWxsIEFkZEVudHJ5KCkKIGVuZGZ1bmN0aW9uCiAKIGZ1bmN0aW9uIEFkZEVudHJ5KCkKLSAgICBub3JtYWwgMUcKLSAgICBjYWxsIHNlYXJjaCgiXiAtLSAiKQotICAgIG5vcm1hbCBrawotICAgIGNhbGwgYXBwZW5kKCIuIiwgIiAgKiAiKQotICAgIG5vcm1hbCBqamoKKyAgICAxCisgICAgY2FsbCBzZWFyY2goJ14gLS0gJykKKyAgICAuLTIKKyAgICBjYWxsIGFwcGVuZCgnLicsICcgICogJykKKyAgICAuKzMKICAgICBsZXQgd2Fybj08U0lEPldhcm5JZk5vdFVuZmluYWxpc2VkKCkKLSAgICBub3JtYWwga2sKKyAgICAuLTIKICAgICBpZiB3YXJuCiAJZWNob2hsIE1vcmVNc2cKLQljYWxsIGlucHV0KCJIaXQgRU5URVIiKQorCWNhbGwgaW5wdXQoJ0hpdCBFTlRFUicpCiAJZWNob2hsIE5vbmUKICAgICBlbmRpZgogICAgIHN0YXJ0aW5zZXJ0IQogZW5kZnVuY3Rpb24KIAogZnVuY3Rpb24gQ2xvc2VCdWcoKQotICAgIG5vcm1hbCAxRwotICAgIGNhbGwgc2VhcmNoKCJeIC0tICIpCisgICAgMQorICAgIGNhbGwgc2VhcmNoKCdeIC0tICcpCiAgICAgbGV0IHdhcm49PFNJRD5XYXJuSWZOb3RVbmZpbmFsaXNlZCgpCi0gICAgbm9ybWFsIGtrCi0gICAgY2FsbCBhcHBlbmQoIi4iLCAiICAqICAoY2xvc2VzOiAjIiAuIGlucHV0KCJCdWcgbnVtYmVyIHRvIGNsb3NlOiAiKSAuICIpIikKLSAgICBub3JtYWwgal5sbAorICAgIC4tMgorICAgIGNhbGwgYXBwZW5kKCcuJywgJyAgKiAgKGNsb3NlczogIycgLiBpbnB1dCgnQnVnIG51bWJlciB0byBjbG9zZTogJykgLiAnKScpCisgICAgbm9ybWFsISBqXmxsCiAgICAgc3RhcnRpbnNlcnQKIGVuZGZ1bmN0aW9uCiAKIGZ1bmN0aW9uIERpc3RyaWJ1dGlvbihkaXN0KQotICAgIGNhbGwgc2V0bGluZSgxLCBzdWJzdGl0dXRlKGdldGxpbmUoMSksICcpICAqXCUoVU5SRUxFQVNFRFx8XGxcK1wpOycsICIpICIgLiBhOmRpc3QgLiAiOyIsICIiKSkKKyAgICBjYWxsIHNldGxpbmUoMSwgc3Vic3RpdHV0ZShnZXRsaW5lKDEpLCAnKSAgKlwlKFVOUkVMRUFTRURcfFxsXCtcKTsnLCAnKSAnIC4gYTpkaXN0IC4gJzsnLCAnJykpCiBlbmRmdW5jdGlvbgogCiBmdW5jdGlvbiBVcmdlbmN5KHVyZykKLSAgICBjYWxsIHNldGxpbmUoMSwgc3Vic3RpdHV0ZShnZXRsaW5lKDEpLCAidXJnZW5jeT0uKiQiLCAidXJnZW5jeT0iIC4gYTp1cmcsICIiKSkKKyAgICBjYWxsIHNldGxpbmUoMSwgc3Vic3RpdHV0ZShnZXRsaW5lKDEpLCAndXJnZW5jeT0uKiQnLCAndXJnZW5jeT0nIC4gYTp1cmcsICcnKSkKIGVuZGZ1bmN0aW9uCiAKIGZ1bmN0aW9uIDxTSUQ+VW5maW5hbGlzZU1lbnUoKQpAQCAtMTcyLDkgKzE3Miw5IEBACiAKIGZ1bmN0aW9uIFVuZmluYWxpc2UoKQogICAgIGNhbGwgPFNJRD5VbmZpbmFsaXNlTWVudSgpCi0gICAgbm9ybWFsIDFHCi0gICAgY2FsbCBzZWFyY2goIl4gLS0gIikKLSAgICBjYWxsIHNldGxpbmUoIi4iLCAiIC0tICIpCisgICAgMQorICAgIGNhbGwgc2VhcmNoKCdeIC0tICcpCisgICAgY2FsbCBzZXRsaW5lKCcuJywgJyAtLSAnKQogZW5kZnVuY3Rpb24KIAogZnVuY3Rpb24gPFNJRD5GaW5hbGlzZU1lbnUoKQpAQCAtMTkwLDkgKzE5MCw5IEBACiAKIGZ1bmN0aW9uIEZpbmFsaXNlKCkKICAgICBjYWxsIDxTSUQ+RmluYWxpc2VNZW51KCkKLSAgICBub3JtYWwgMUcKLSAgICBjYWxsIHNlYXJjaCgiXiAtLSAiKQotICAgIGNhbGwgc2V0bGluZSgiLiIsICIgLS0gIiAuIDxTSUQ+RnVsbE5hbWUoKSAuICIgPCIgLiA8U0lEPkVtYWlsKCkgLiAiPiAgIiAuIDxTSUQ+RGF0ZSgpKQorICAgIDEKKyAgICBjYWxsIHNlYXJjaCgnXiAtLSAnKQorICAgIGNhbGwgc2V0bGluZSgnLicsICcgLS0gJyAuIDxTSUQ+RnVsbE5hbWUoKSAuICcgPCcgLiA8U0lEPkVtYWlsKCkgLiAnPiAgJyAuIDxTSUQ+RGF0ZSgpKQogZW5kZnVuY3Rpb24KIAogCkBAIC0yMzksNyArMjM5LDcgQEAKICAgbGV0IGxpbmVwb3MgPSBhOnpvbmVlbmQKICAgd2hpbGUgbGluZXBvcyA+PSBhOnpvbmVzdGFydAogICAgIGxldCBsaW5lID0gZ2V0bGluZShsaW5lcG9zKQotICAgIGlmIGxpbmUgPX4gJ14gLS0nCisgICAgaWYgbGluZSA9fiMgJ14gLS0nCiAgICAgICByZXR1cm4gc3Vic3RpdHV0ZShsaW5lLCAnXiAtLVxzKlwoW148XVwrXClccyouKicsICdcMScsICcnKQogICAgIGVuZGlmCiAgICAgbGV0IGxpbmVwb3MgLT0gMQpAQCAtMjU0LDcgKzI1NCw3IEBACiAgIGxldCBwa2duYW1lID0gJycKICAgd2hpbGUgbGluZWlkeCA+IDAKICAgICBsZXQgY3VybGluZSA9IGdldGxpbmUobGluZWlkeCkKLSAgICBpZiBjdXJsaW5lID1+ICdeXFMnCisgICAgaWYgY3VybGluZSA9fiMgJ15cUycKICAgICAgIGxldCBwa2duYW1lID0gbWF0Y2hsaXN0KGN1cmxpbmUsICdeXChcU1wrXCkuKiQnKVsxXQogICAgICAgYnJlYWsKICAgICBlbmRpZgpAQCAtMjY0LDcgKzI2NCw3IEBACiBlbmRmdW5jdGlvbgogCiBmdW5jdGlvbiEgRGViQ2hhbmdlbG9nRm9sZFRleHQoKQotICBpZiB2OmZvbGRkYXNoZXMgPT0gJy0nICAiIGNoYW5nZWxvZyBlbnRyeSBmb2xkCisgIGlmIHY6Zm9sZGRhc2hlcyA9PSMgJy0nICAiIGNoYW5nZWxvZyBlbnRyeSBmb2xkCiAgICAgcmV0dXJuIGZvbGR0ZXh0KCkgLiAnIC0tICcgLiBzOmdldEF1dGhvcih2OmZvbGRzdGFydCwgdjpmb2xkZW5kKSAuICcgJwogICBlbmRpZgogICByZXR1cm4gZm9sZHRleHQoKQpAQCAtMjcyLDE5ICsyNzIsMTkgQEAKIAogZnVuY3Rpb24hIERlYkdldENoYW5nZWxvZ0ZvbGQobG51bSkKICAgbGV0IGxpbmUgPSBnZXRsaW5lKGE6bG51bSkKLSAgaWYgbGluZSA9fiAnXlx3XCsnCisgIGlmIGxpbmUgPX4jICdeXHdcKycKICAgICByZXR1cm4gJz4xJyAiIGJlZ2lubmluZyBvZiBhIGNoYW5nZWxvZyBlbnRyeQogICBlbmRpZgotICBpZiBsaW5lID1+ICdeXHNcK1xbLipcXScKKyAgaWYgbGluZSA9fiMgJ15cc1wrXFsuKlxdJwogICAgIHJldHVybiAnPjInICIgYmVnaW5uaW5nIG9mIGFuIGF1dGhvci1zcGVjaWZpYyBjaHVuawogICBlbmRpZgotICBpZiBsaW5lID1+ICdeIC0tJworICBpZiBsaW5lID1+IyAnXiAtLScKICAgICByZXR1cm4gJzEnCiAgIGVuZGlmCiAgIHJldHVybiAnPScKIGVuZGZ1bmN0aW9uCiAKLWlmIGV4aXN0cygiZzpkZWJjaGFuZ2Vsb2dfZm9sZF9lbmFibGUiKQoraWYgZXhpc3RzKCdnOmRlYmNoYW5nZWxvZ19mb2xkX2VuYWJsZScpCiAgIHNpbGVudCEgZm9sZG9wZW4hICAgIiB1bmZvbGQgdGhlIGVudHJ5IHRoZSBjdXJzb3IgaXMgb24gKHVzdWFsbHkgdGhlIGZpcnN0IG9uZSkKIGVuZGlmCiAKQEAgLTMwNSwxMyArMzA1LDEzIEBACiAgICAgbGV0IHRyeV9jb2xpZHggPSBjb2woJy4nKSAtIDEKICAgICBsZXQgY29saWR4ID0gLTEgIiBkZWZhdWx0IHRvIG5vLWNvbXBsZXRpb24tcG9zc2libGUKIAotICAgIHdoaWxlIHRyeV9jb2xpZHggPiAwICYmIGxpbmVbdHJ5X2NvbGlkeCAtIDFdID1+ICdcc1x8XGRcfCNcfCxcfDonCisgICAgd2hpbGUgdHJ5X2NvbGlkeCA+IDAgJiYgbGluZVt0cnlfY29saWR4IC0gMV0gPX4jICdcc1x8XGRcfCNcfCxcfDonCiAgICAgICBsZXQgdHJ5X2NvbGlkeCA9IHRyeV9jb2xpZHggLSAxCi0gICAgICBpZiBsaW5lW3RyeV9jb2xpZHhdID09ICcjJyAmJiBjb2xpZHggPT0gLTEKKyAgICAgIGlmIGxpbmVbdHJ5X2NvbGlkeF0gPT0jICcjJyAmJiBjb2xpZHggPT0gLTEKICAgICAgICAgIiBmb3VuZCBoYXNoLCB3aGVyZSB3ZSBjb21wbGV0ZSBmcm9tOgogICAgICAgICBsZXQgY29saWR4ID0gdHJ5X2NvbGlkeAotICAgICAgZWxzZWlmIGxpbmVbdHJ5X2NvbGlkeF0gPT0gJzonCi0gICAgICAgIGlmIHRyeV9jb2xpZHggPiAxICYmIHN0cnBhcnQobGluZSwgdHJ5X2NvbGlkeCAtIDIsIDMpID1+ICdcY2xwOicKKyAgICAgIGVsc2VpZiBsaW5lW3RyeV9jb2xpZHhdID09IyAnOicKKyAgICAgICAgaWYgdHJ5X2NvbGlkeCA+IDEgJiYgc3RycGFydChsaW5lLCB0cnlfY29saWR4IC0gMiwgMykgPX4/ICdcY2xwOicKICAgICAgICAgICBsZXQgZzpkZWJjaGFuZ2Vsb2dfY29tcGxldGVfbW9kZSA9ICdscCcKICAgICAgICAgZW5kaWYKICAgICAgICAgYnJlYWsKQEAgLTMyMCw3ICszMjAsNyBAQAogICAgIHJldHVybiBjb2xpZHgKICAgZWxzZSAiIHJldHVybiBtYXRjaGVzOgogICAgIGxldCBidWdfbGluZXMgPSBbXQotICAgIGlmIGc6ZGViY2hhbmdlbG9nX2NvbXBsZXRlX21vZGUgPT0gJ2xwJworICAgIGlmIGc6ZGViY2hhbmdlbG9nX2NvbXBsZXRlX21vZGUgPT0/ICdscCcKICAgICAgIGlmICEgaGFzKCdweXRob24nKQogICAgICAgICBlY2hvZXJyICd2aW0gbXVzdCBiZSBidWlsdCB3aXRoIFB5dGhvbiBzdXBwb3J0IHRvIHVzZSBMUCBidWcgY29tcGxldGlvbicKICAgICAgICAgcmV0dXJuCkBAIC0zNjMsNyArMzYzLDcgQEAKICAgICBmb3IgbGluZSBpbiBidWdfbGluZXMKICAgICAgIGxldCBwYXJ0cyA9IG1hdGNobGlzdChsaW5lLCAnXlxzKlwoI1xTXCtcKVxzKi1ccypcKC4qXCkkJykKICAgICAgICIgZmlsdGVyIG9ubHkgdGhvc2Ugd2hpY2ggbWF0Y2ggYTpiYXNlOgotICAgICAgaWYgcGFydHNbMV0gIX4gIl4iIC4gYTpiYXNlCisgICAgICBpZiBwYXJ0c1sxXSAhfiAnXicgLiBhOmJhc2UKICAgICAgICAgY29udGludWUKICAgICAgIGVuZGlmCiAgICAgICBsZXQgY29tcGxldGlvbiA9IHt9CmRpZmYgLS1naXQgYS9ydW50aW1lL2Z0cGx1Z2luL2RlYmNvbnRyb2wudmltIGIvcnVudGltZS9mdHBsdWdpbi9kZWJjb250cm9sLnZpbQppbmRleCA5NjQzZDE2Li4zYTZlMzlhIDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL2RlYmNvbnRyb2wudmltCisrKyBiL3J1bnRpbWUvZnRwbHVnaW4vZGViY29udHJvbC52aW0KQEAgLTIsMTcgKzIsMTcgQEAKICIgTGFuZ3VhZ2U6ICAgICBEZWJpYW4gY29udHJvbCBmaWxlcwogIiBNYWludGFpbmVyOiAgIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMKICIgRm9ybWVyIE1haW50YWluZXI6ICAgIFBpZXJyZSBIYWJvdXppdCA8bWFkY29kZXJAZGViaWFuLm9yZz4KLSIgTGFzdCBDaGFuZ2U6ICAyMDE4LTAxLTA2CisiIExhc3QgQ2hhbmdlOiAgMjAxOC0wMS0yOAogIiBVUkw6ICAgICAgICAgIGh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy92aW0tdGVhbS92aW0tZGViaWFuL2Jsb2IvbWFzdGVyL2Z0cGx1Z2luL2RlYmNvbnRyb2wudmltCiAKICIgRG8gdGhlc2Ugc2V0dGluZ3Mgb25jZSBwZXIgYnVmZmVyCi1pZiBleGlzdHMoImI6ZGlkX2Z0cGx1Z2luIikKK2lmIGV4aXN0cygnYjpkaWRfZnRwbHVnaW4nKQogICBmaW5pc2gKIGVuZGlmCiBsZXQgYjpkaWRfZnRwbHVnaW49MQogCiAiIHt7ezEgTG9jYWwgc2V0dGluZ3MgKGRvIG9uIGV2ZXJ5IGxvYWQpCi1pZiBleGlzdHMoImc6ZGViY29udHJvbF9mb2xkX2VuYWJsZSIpCitpZiBleGlzdHMoJ2c6ZGViY29udHJvbF9mb2xkX2VuYWJsZScpCiAgIHNldGxvY2FsIGZvbGRtZXRob2Q9ZXhwcgogICBzZXRsb2NhbCBmb2xkZXhwcj1EZWJDb250cm9sRm9sZCh2OmxudW0pCiAgIHNldGxvY2FsIGZvbGR0ZXh0PURlYkNvbnRyb2xGb2xkVGV4dCgpCkBAIC0yMCw3ICsyMCw3IEBACiBzZXRsb2NhbCB0ZXh0d2lkdGg9MAogCiAiIENsZWFuIHVubG9hZGluZwotbGV0IGI6dW5kb19mdHBsdWdpbiA9ICJzZXRsb2NhbCB0dzwgZm9sZG1ldGhvZDwgZm9sZGV4cHI8IGZvbGR0ZXh0PCIKK2xldCBiOnVuZG9fZnRwbHVnaW4gPSAnc2V0bG9jYWwgdHc8IGZvbGRtZXRob2Q8IGZvbGRleHByPCBmb2xkdGV4dDwnCiAKICIgfX19MQogCkBAIC0zMiw3ICszMiw3IEBACiAgIHdoaWxlIGxpbmUgIX4gJ14nLmE6Zi4nOicKICAgICBsZXQgZndkc3RlcHMgKz0gMQogICAgIGxldCBsaW5lID0gZ2V0bGluZShhOmxudW0gKyBmd2RzdGVwcykKLSAgICBpZiBsaW5lID09ICcnCisgICAgaWYgbGluZSA9PSMgJycKICAgICAgIHJldHVybiAndW5rbm93bicKICAgICBlbmRpZgogICBlbmR3aGlsZQpAQCAtNDAsOSArNDAsOSBAQAogZW5kZnVuY3Rpb24KIAogZnVuY3Rpb24hIERlYkNvbnRyb2xGb2xkVGV4dCgpCi0gIGlmIHY6Zm9sZGRhc2hlcyA9PSAnLScgICIgZGViY29udHJvbCBlbnRyeSBmb2xkCisgIGlmIHY6Zm9sZGRhc2hlcyA9PSMgJy0nICAiIGRlYmNvbnRyb2wgZW50cnkgZm9sZAogICAgIGxldCB0eXBlID0gc3Vic3RpdHV0ZShnZXRsaW5lKHY6Zm9sZHN0YXJ0KSwgJzouKicsICcnLCAnJykKLSAgICBpZiB0eXBlID09ICdTb3VyY2UnCisgICAgaWYgdHlwZSA9PSMgJ1NvdXJjZScKICAgICAgIGxldCBmdGV4dCA9IHN1YnN0aXR1dGUoZm9sZHRleHQoKSwgJyAqU291cmNlOiAqJywgJyAnLCAnJykKICAgICAgIHJldHVybiBmdGV4dCAuICcgLS0gJyAuIHM6Z2V0RmllbGQoJ01haW50YWluZXInLCB2OmZvbGRzdGFydCkgLiAnICcKICAgICBlbmRpZgpAQCAtNTYsMTEgKzU2LDExIEBACiBmdW5jdGlvbiEgRGViQ29udHJvbEZvbGQobCkKIAogICAiIFRoaXMgaXMgZm9yIG5vdCBtZXJnaW5nIGJsYW5rIGxpbmVzIGFyb3VuZCBmb2xkcyB0byB0aGVtCi0gIGlmIGdldGxpbmUoYTpsKSA9fiAnXlNvdXJjZTonCisgIGlmIGdldGxpbmUoYTpsKSA9fiMgJ15Tb3VyY2U6JwogICAgIHJldHVybiAnPjEnCiAgIGVuZGlmCiAKLSAgaWYgZ2V0bGluZShhOmwpID1+ICdeUGFja2FnZTonCisgIGlmIGdldGxpbmUoYTpsKSA9fiMgJ15QYWNrYWdlOicKICAgICByZXR1cm4gJz4xJwogICBlbmRpZgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2Z0cGx1Z2luL21hbi52aW0gYi9ydW50aW1lL2Z0cGx1Z2luL21hbi52aW0KaW5kZXggOWU5NzE1Ni4uZWEzZjlhYyAxMDA2NDQKLS0tIGEvcnVudGltZS9mdHBsdWdpbi9tYW4udmltCisrKyBiL3J1bnRpbWUvZnRwbHVnaW4vbWFuLnZpbQpAQCAtMSw3ICsxLDcgQEAKICIgVmltIGZpbGV0eXBlIHBsdWdpbiBmaWxlCiAiIExhbmd1YWdlOgltYW4KICIgTWFpbnRhaW5lcjoJU3VuZ0h5dW4gTmFtIDxnb3dlb2xAZ21haWwuY29tPgotIiBMYXN0IENoYW5nZTogCTIwMTggSmFuIDE1CisiIExhc3QgQ2hhbmdlOiAJMjAxOCBNYXkgMgogCiAiIFRvIG1ha2UgdGhlICI6TWFuIiBjb21tYW5kIGF2YWlsYWJsZSBiZWZvcmUgZWRpdGluZyBhIG1hbnVhbCBwYWdlLCBzb3VyY2UKICIgdGhpcyBzY3JpcHQgZnJvbSB5b3VyIHN0YXJ0dXAgdmltcmMgZmlsZS4KQEAgLTE2NCw3ICsxNjQsNyBAQAogICBzZXRsIGJ1ZnR5cGU9bm9maWxlIG5vc3dhcGZpbGUKIAogICBzZXRsIG1hIG5vbnUgbm9ybnUgbm9mZW4KLSAgc2lsZW50IGV4ZWMgIm5vcm0gMUdkRyIKKyAgc2lsZW50IGV4ZWMgIm5vcm0hIDFHZEciCiAgIGxldCB1bnNldHdpZHRoID0gMAogICBpZiBlbXB0eSgkTUFOV0lEVEgpCiAgICAgbGV0ICRNQU5XSURUSCA9IHdpbndpZHRoKDApCkBAIC0xODgsMTAgKzE4OCwxMCBAQAogICBlbmRpZgogICAiIFJlbW92ZSBibGFuayBsaW5lcyBmcm9tIHRvcCBhbmQgYm90dG9tLgogICB3aGlsZSBnZXRsaW5lKDEpID1+ICdeXHMqJCcKLSAgICBzaWxlbnQga2VlcGogbm9ybSBnZ2RkCisgICAgc2lsZW50IGtlZXBqIG5vcm0hIGdnZGQKICAgZW5kd2hpbGUKICAgd2hpbGUgZ2V0bGluZSgnJCcpID1+ICdeXHMqJCcKLSAgICBzaWxlbnQga2VlcGogbm9ybSBHZGQKKyAgICBzaWxlbnQga2VlcGogbm9ybSEgR2RkCiAgIGVuZHdoaWxlCiAgIDEKICAgc2V0bCBmdD1tYW4gbm9tb2QKQEAgLTIwOCw3ICsyMDgsNyBAQAogICAgIGV4ZWMgImxldCBzOm1hbl90YWdfY29sPXM6bWFuX3RhZ19jb2xfIi5zOm1hbl90YWdfZGVwdGgKICAgICBleGVjIHM6bWFuX3RhZ19idWYuImIiCiAgICAgZXhlYyBzOm1hbl90YWdfbGluCi0gICAgZXhlYyAibm9ybSAiLnM6bWFuX3RhZ19jb2wuInwiCisgICAgZXhlYyAibm9ybSEgIi5zOm1hbl90YWdfY29sLiJ8IgogICAgIGV4ZWMgInVubGV0IHM6bWFuX3RhZ19idWZfIi5zOm1hbl90YWdfZGVwdGgKICAgICBleGVjICJ1bmxldCBzOm1hbl90YWdfbGluXyIuczptYW5fdGFnX2RlcHRoCiAgICAgZXhlYyAidW5sZXQgczptYW5fdGFnX2NvbF8iLnM6bWFuX3RhZ19kZXB0aApkaWZmIC0tZ2l0IGEvcnVudGltZS9vcHR3aW4udmltIGIvcnVudGltZS9vcHR3aW4udmltCmluZGV4IGQzNmRkZWEuLmYyNzk1MjkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvb3B0d2luLnZpbQorKysgYi9ydW50aW1lL29wdHdpbi52aW0KQEAgLTEsNyArMSw3IEBACiAiIFRoZXNlIGNvbW1hbmRzIGNyZWF0ZSB0aGUgb3B0aW9uIHdpbmRvdy4KICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMTggRmViIDI3CisiIExhc3QgQ2hhbmdlOgkyMDE4IEFwciAxOAogCiAiIElmIHRoZXJlIGFscmVhZHkgaXMgYW4gb3B0aW9uIHdpbmRvdywganVtcCB0byB0aGF0IG9uZS4KIGxldCBidWYgPSBidWZucignb3B0aW9uLXdpbmRvdycpCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9jcy52aW0gYi9ydW50aW1lL3N5bnRheC9jcy52aW0KaW5kZXggMmJhNjI5Zi4uMTExYmM4NSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvY3MudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2NzLnZpbQpAQCAtMSwxMCArMSwxMiBAQAogIiBWaW0gc3ludGF4IGZpbGUKLSIgTGFuZ3VhZ2U6CUMjCi0iIE1haW50YWluZXI6CUFuZHVpbiBXaXRoZXJzIDxhd2l0aGVyc0BhbmR1aW4uY29tPgorIiBMYW5ndWFnZToJCUMjCisiIE1haW50YWluZXI6CQlOaWNrIEplbnNlbiA8bmlja3Nwb29uQGdtYWlsLmNvbT4KKyIgRm9ybWVyIE1haW50YWluZXI6CUFuZHVpbiBXaXRoZXJzIDxhd2l0aGVyc0BhbmR1aW4uY29tPgogIiBGb3JtZXIgTWFpbnRhaW5lcjoJSm9oYW5uZXMgWmVsbG5lciA8am9oYW5uZXNAemVsbG5lci5vcmc+Ci0iIExhc3QgQ2hhbmdlOglGcmkgQXVnIDE0IDEzOjU2OjM3IFBEVCAyMDA5Ci0iIEZpbGVuYW1lczoJKi5jcwotIiAkSWQ6IGNzLnZpbSx2IDEuNCAyMDA2LzA1LzAzIDIxOjIwOjAyIHZpbWJvc3MgRXhwICQKKyIgTGFzdCBDaGFuZ2U6CQkyMDE4LTA1LTAyCisiIEZpbGVuYW1lczoJCSouY3MKKyIgTGljZW5zZToJCVZpbSAoc2VlIDpoIGxpY2Vuc2UpCisiIFJlcG9zaXRvcnk6CQlodHRwczovL2dpdGh1Yi5jb20vbmlja3Nwb29ucy92aW0tY3MKICIKICIgUkVGRVJFTkNFUzoKICIgWzFdIEVDTUEgVEMzOTogQyMgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbiAoV0QxM09jdDAxLmRvYykKQEAgLTE3LDExICsxOSw4IEBACiBzZXQgY3BvJnZpbQogCiAKLSIgdHlwZQotc3luIGtleXdvcmQgY3NUeXBlCQkJYm9vbCBieXRlIGNoYXIgZGVjaW1hbCBkb3VibGUgZmxvYXQgaW50IGxvbmcgb2JqZWN0IHNieXRlIHNob3J0IHN0cmluZyB1aW50IHVsb25nIHVzaG9ydCB2b2lkCi0iIHN0b3JhZ2UKLXN5biBrZXl3b3JkIGNzU3RvcmFnZQkJCWNsYXNzIGRlbGVnYXRlIGVudW0gaW50ZXJmYWNlIG5hbWVzcGFjZSBzdHJ1Y3QKLSIgcmVwZWF0IC8gY29uZGl0aW9uIC8gbGFiZWwKK3N5biBrZXl3b3JkIGNzVHlwZQkJCWJvb2wgYnl0ZSBjaGFyIGRlY2ltYWwgZG91YmxlIGZsb2F0IGludCBsb25nIG9iamVjdCBzYnl0ZSBzaG9ydCBzdHJpbmcgVCB1aW50IHVsb25nIHVzaG9ydCB2YXIgdm9pZCBkeW5hbWljCitzeW4ga2V5d29yZCBjc1N0b3JhZ2UJCQlkZWxlZ2F0ZSBlbnVtIGludGVyZmFjZSBuYW1lc3BhY2Ugc3RydWN0CiBzeW4ga2V5d29yZCBjc1JlcGVhdAkJCWJyZWFrIGNvbnRpbnVlIGRvIGZvciBmb3JlYWNoIGdvdG8gcmV0dXJuIHdoaWxlCiBzeW4ga2V5d29yZCBjc0NvbmRpdGlvbmFsCQllbHNlIGlmIHN3aXRjaAogc3luIGtleXdvcmQgY3NMYWJlbAkJCWNhc2UgZGVmYXVsdApAQCAtMjksMjEgKzI4LDE2IEBACiBzeW4gbWF0Y2ggY3NPcGVyYXRvckVycm9yCQlkaXNwbGF5ICs6OisKICIgdXNlciBsYWJlbHMgKHNlZSBbMV0gOC42IFN0YXRlbWVudHMpCiBzeW4gbWF0Y2ggICBjc0xhYmVsCQkJZGlzcGxheSArXlxzKlxJXGkqXHMqOlwoW146XVwpXEA9KwotIiBtb2RpZmllcgogc3luIGtleXdvcmQgY3NNb2RpZmllcgkJCWFic3RyYWN0IGNvbnN0IGV4dGVybiBpbnRlcm5hbCBvdmVycmlkZSBwcml2YXRlIHByb3RlY3RlZCBwdWJsaWMgcmVhZG9ubHkgc2VhbGVkIHN0YXRpYyB2aXJ0dWFsIHZvbGF0aWxlCi0iIGNvbnN0YW50CiBzeW4ga2V5d29yZCBjc0NvbnN0YW50CQkJZmFsc2UgbnVsbCB0cnVlCi0iIGV4Y2VwdGlvbgotc3luIGtleXdvcmQgY3NFeGNlcHRpb24JCQl0cnkgY2F0Y2ggZmluYWxseSB0aHJvdworc3luIGtleXdvcmQgY3NFeGNlcHRpb24JCQl0cnkgY2F0Y2ggZmluYWxseSB0aHJvdyB3aGVuCitzeW4ga2V5d29yZCBjc0xpbnEJCQlhc2NlbmRpbmcgYnkgZGVzY2VuZGluZyBlcXVhbHMgZnJvbSBncm91cCBpbiBpbnRvIGpvaW4gbGV0IG9uIG9yZGVyYnkgc2VsZWN0IHdoZXJlCitzeW4ga2V5d29yZCBjc0FzeW5jCQkJYXN5bmMgYXdhaXQKIAotIiBUT0RPOgotc3luIGtleXdvcmQgY3NVbnNwZWNpZmllZFN0YXRlbWVudAlhcyBiYXNlIGNoZWNrZWQgZXZlbnQgZml4ZWQgaW4gaXMgbG9jayBuZXcgb3BlcmF0b3Igb3V0IHBhcmFtcyByZWYgc2l6ZW9mIHN0YWNrYWxsb2MgdGhpcyB0eXBlb2YgdW5jaGVja2VkIHVuc2FmZSB1c2luZwotIiBUT0RPOgorc3luIGtleXdvcmQgY3NVbnNwZWNpZmllZFN0YXRlbWVudAlhcyBiYXNlIGNoZWNrZWQgZXZlbnQgZml4ZWQgZ2V0IGluIGlzIGxvY2sgbmFtZW9mIG9wZXJhdG9yIG91dCBwYXJhbXMgcmVmIHNldCBzaXplb2Ygc3RhY2thbGxvYyB0aGlzIHR5cGVvZiB1bmNoZWNrZWQgdW5zYWZlIHVzaW5nCiBzeW4ga2V5d29yZCBjc1Vuc3VwcG9ydGVkU3RhdGVtZW50CWFkZCByZW1vdmUgdmFsdWUKLSIgVE9ETzoKIHN5biBrZXl3b3JkIGNzVW5zcGVjaWZpZWRLZXl3b3JkCWV4cGxpY2l0IGltcGxpY2l0CiAKLQogIiBDb250ZXh0dWFsIEtleXdvcmRzCiBzeW4gbWF0Y2ggY3NDb250ZXh0dWFsU3RhdGVtZW50CS9cPHlpZWxkW1s6c3BhY2U6XVxuXVwrXChyZXR1cm5cfGJyZWFrXCkvbWU9cys1CiBzeW4gbWF0Y2ggY3NDb250ZXh0dWFsU3RhdGVtZW50CS9cPHBhcnRpYWxbWzpzcGFjZTpdXG5dXCtcKGNsYXNzXHxzdHJ1Y3RcfGludGVyZmFjZVwpL21lPXMrNwpAQCAtNTYsNyArNTAsNyBAQAogIgogIiBUT0RPOiBpbmNsdWRlIHN0cmluZ3MgPwogIgotc3luIGtleXdvcmQgY3NUb2RvCQljb250YWluZWQgVE9ETyBGSVhNRSBYWFggTk9URQorc3luIGtleXdvcmQgY3NUb2RvCQljb250YWluZWQgVE9ETyBGSVhNRSBYWFggTk9URSBIQUNLCiBzeW4gcmVnaW9uICBjc0NvbW1lbnQJCXN0YXJ0PSIvXCoiICBlbmQ9IlwqLyIgY29udGFpbnM9QGNzQ29tbWVudEhvb2ssY3NUb2RvLEBTcGVsbAogc3luIG1hdGNoICAgY3NDb21tZW50CQkiLy8uKiQiIGNvbnRhaW5zPUBjc0NvbW1lbnRIb29rLGNzVG9kbyxAU3BlbGwKIApAQCAtODksOCArODMsMTUgQEAKICAgICBcIHNraXA9IlxcJCIgZW5kPSIkIiBjb250YWlucz1jc0NvbW1lbnQga2VlcGVuZAogc3luIHJlZ2lvbgljc1JlZ2lvbiBtYXRjaGdyb3VwPWNzUHJlQ29uZGl0IHN0YXJ0PSJeXHMqI1xzKnJlZ2lvbi4qJCIKICAgICBcIGVuZD0iXlxzKiNccyplbmRyZWdpb24iIHRyYW5zcGFyZW50IGZvbGQgY29udGFpbnM9VE9QCitzeW4gcmVnaW9uCWNzU3VtbWFyeSBzdGFydD0iXlxzKi8vLyA8c3VtbWFyeSIgZW5kPSJeXChccyovLy9cKVxAISIgdHJhbnNwYXJlbnQgZm9sZCBrZWVwZW5kCiAKIAorc3luIHJlZ2lvbgljc0NsYXNzVHlwZSBzdGFydD0iXChAXClcQDwhY2xhc3NcPiJocz1zKzYgZW5kPSJbOlxue10iaGU9ZS0xIGNvbnRhaW5zPWNzQ2xhc3MKK3N5biByZWdpb24JY3NOZXdUeXBlIHN0YXJ0PSJcKEBcKVxAPCFuZXdcPiJocz1zKzQgZW5kPSJbXChcPHtcW10iaGU9ZS0xIGNvbnRhaW5zPWNzTmV3IGNvbnRhaW5zPWNzTmV3VHlwZQorc3luIHJlZ2lvbgljc0lzVHlwZSBzdGFydD0iXHYgKGlzfGFzKSAiaHM9cys0IGVuZD0iXHZbQS1aYS16MC05XSsiIG9uZWxpbmUgY29udGFpbnM9Y3NJc0FzCitzeW4ga2V5d29yZAljc05ldyBuZXcgY29udGFpbmVkCitzeW4ga2V5d29yZAljc0NsYXNzIGNsYXNzIGNvbnRhaW5lZAorc3luIGtleXdvcmQJY3NJc0FzIGlzIGFzCiAKICIgU3RyaW5ncyBhbmQgY29uc3RhbnRzCiBzeW4gbWF0Y2ggICBjc1NwZWNpYWxFcnJvcgljb250YWluZWQgIlxcLiIKQEAgLTExMyw3ICsxMTQsMTEgQEAKIAogIiBUaGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCiBoaSBkZWYgbGluayBjc1R5cGUJCQlUeXBlCitoaSBkZWYgbGluayBjc05ld1R5cGUJCQlUeXBlCitoaSBkZWYgbGluayBjc0NsYXNzVHlwZQkJCVR5cGUKK2hpIGRlZiBsaW5rIGNzSXNUeXBlCQkJVHlwZQogaGkgZGVmIGxpbmsgY3NTdG9yYWdlCQkJU3RvcmFnZUNsYXNzCitoaSBkZWYgbGluayBjc0NsYXNzCQkJU3RvcmFnZUNsYXNzCiBoaSBkZWYgbGluayBjc1JlcGVhdAkJCVJlcGVhdAogaGkgZGVmIGxpbmsgY3NDb25kaXRpb25hbAkJQ29uZGl0aW9uYWwKIGhpIGRlZiBsaW5rIGNzTGFiZWwJCQlMYWJlbApAQCAtMTIzLDggKzEyOCwxMyBAQAogaGkgZGVmIGxpbmsgY3NVbnNwZWNpZmllZFN0YXRlbWVudAlTdGF0ZW1lbnQKIGhpIGRlZiBsaW5rIGNzVW5zdXBwb3J0ZWRTdGF0ZW1lbnQJU3RhdGVtZW50CiBoaSBkZWYgbGluayBjc1Vuc3BlY2lmaWVkS2V5d29yZAlLZXl3b3JkCitoaSBkZWYgbGluayBjc05ldwkJCVN0YXRlbWVudAoraGkgZGVmIGxpbmsgY3NMaW5xCQkJU3RhdGVtZW50CitoaSBkZWYgbGluayBjc0lzQXMgCQkJS2V5d29yZAoraGkgZGVmIGxpbmsgY3NBc3luYwkJCUtleXdvcmQKIGhpIGRlZiBsaW5rIGNzQ29udGV4dHVhbFN0YXRlbWVudAlTdGF0ZW1lbnQKIGhpIGRlZiBsaW5rIGNzT3BlcmF0b3JFcnJvcgkJRXJyb3IKK2hpIGRlZiBsaW5rIGNzSW50ZXJmYWNlRGVjbGFyYXRpb24JSW5jbHVkZQogCiBoaSBkZWYgbGluayBjc1RvZG8JCQlUb2RvCiBoaSBkZWYgbGluayBjc0NvbW1lbnQJCQlDb21tZW50CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9kZWJjaGFuZ2Vsb2cudmltIGIvcnVudGltZS9zeW50YXgvZGViY2hhbmdlbG9nLnZpbQppbmRleCBlNzlmYzlhLi5lZGFhZjYxIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9kZWJjaGFuZ2Vsb2cudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2RlYmNoYW5nZWxvZy52aW0KQEAgLTMsMTEgKzMsMTEgQEAKICIgTWFpbnRhaW5lcjogIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMKICIgRm9ybWVyIE1haW50YWluZXJzOiBHZXJmcmllZCBGdWNocyA8YWxmaWVAaXN0Lm9yZz4KICIgICAgICAgICAgICAgICAgICAgICBXaWNoZXJ0IEFra2VybWFuIDx3YWtrZXJtYUBkZWJpYW4ub3JnPgotIiBMYXN0IENoYW5nZTogMjAxOCBKYW4gMDYKKyIgTGFzdCBDaGFuZ2U6IDIwMTggTWF5IDAzCiAiIFVSTDogaHR0cHM6Ly9zYWxzYS5kZWJpYW4ub3JnL3ZpbS10ZWFtL3ZpbS1kZWJpYW4vYmxvYi9tYXN0ZXIvc3ludGF4L2RlYmNoYW5nZWxvZy52aW0KIAogIiBTdGFuZGFyZCBzeW50YXggaW5pdGlhbGl6YXRpb24KLWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCitpZiBleGlzdHMoJ2I6Y3VycmVudF9zeW50YXgnKQogICBmaW5pc2gKIGVuZGlmCiAKQEAgLTIxLDcgKzIxLDcgQEAKIHN5biBtYXRjaCBkZWJjaGFuZ2Vsb2dOYW1lCWNvbnRhaW5lZCAiXltbOmFsbnVtOl1dW1s6YWxudW06XS4rLV1cKyAiCiBleGUgJ3N5biBtYXRjaCBkZWJjaGFuZ2Vsb2dGaXJzdEtWCWNvbnRhaW5lZCAiOyBcKCcuczp1cmdlbmN5LidcfCcuczpiaW5OTVUuJ1wpIicKIGV4ZSAnc3luIG1hdGNoIGRlYmNoYW5nZWxvZ090aGVyS1YJY29udGFpbmVkICIsIFwoJy5zOnVyZ2VuY3kuJ1x8Jy5zOmJpbk5NVS4nXCkiJwotc3luIG1hdGNoIGRlYmNoYW5nZWxvZ1RhcmdldAljb250YWluZWQgIlx2ICUoZnJvemVufHVuc3RhYmxlfHNpZHwlKHRlc3Rpbmd8JShvbGQpPXN0YWJsZSklKC1wcm9wb3NlZC11cGRhdGVzfC1zZWN1cml0eSk9fGV4cGVyaW1lbnRhbHxzcXVlZXplLSUoYmFja3BvcnRzJSgtc2xvcHB5KT18dm9sYXRpbGV8bHRzfHNlY3VyaXR5KXwlKHdoZWV6eXxqZXNzaWUpJSgtYmFja3BvcnRzJSgtc2xvcHB5KT18LXNlY3VyaXR5KT18c3RyZXRjaCUoLWJhY2twb3J0c3wtc2VjdXJpdHkpPXwlKGRldmVsfHByZWNpc2V8dHJ1c3R5fHZpdmlkfHdpbHl8eGVuaWFsfHlha2tldHl8emVzdHl8YXJ0ZnVsfGJpb25pYyklKC0lKHNlY3VyaXR5fHByb3Bvc2VkfHVwZGF0ZXN8YmFja3BvcnRzfGNvbW1lcmNpYWx8cGFydG5lcikpPSkrIgorc3luIG1hdGNoIGRlYmNoYW5nZWxvZ1RhcmdldAljb250YWluZWQgIlx2ICUoZnJvemVufHVuc3RhYmxlfHNpZHwlKHRlc3Rpbmd8JShvbGQpPXN0YWJsZSklKC1wcm9wb3NlZC11cGRhdGVzfC1zZWN1cml0eSk9fGV4cGVyaW1lbnRhbHxzcXVlZXplLSUoYmFja3BvcnRzJSgtc2xvcHB5KT18dm9sYXRpbGV8bHRzfHNlY3VyaXR5KXwlKHdoZWV6eXxqZXNzaWUpJSgtYmFja3BvcnRzJSgtc2xvcHB5KT18LXNlY3VyaXR5KT18c3RyZXRjaCUoLWJhY2twb3J0c3wtc2VjdXJpdHkpPXwlKGRldmVsfHByZWNpc2V8dHJ1c3R5fHZpdmlkfHdpbHl8eGVuaWFsfHlha2tldHl8emVzdHl8YXJ0ZnVsfGJpb25pY3xjb3NtaWMpJSgtJShzZWN1cml0eXxwcm9wb3NlZHx1cGRhdGVzfGJhY2twb3J0c3xjb21tZXJjaWFsfHBhcnRuZXIpKT0pKyIKIHN5biBtYXRjaCBkZWJjaGFuZ2Vsb2dWZXJzaW9uCWNvbnRhaW5lZCAiKC5cey19KSIKIHN5biBtYXRjaCBkZWJjaGFuZ2Vsb2dDbG9zZXMJY29udGFpbmVkICJjbG9zZXM6XF9zKlwoYnVnXClcPSNcPVxfc1w9XGRcK1woLFxfcypcKGJ1Z1wpXD0jXD1cX3NcPVxkXCtcKSoiCiBzeW4gbWF0Y2ggZGViY2hhbmdlbG9nTFAJY29udGFpbmVkICJcY2xwOlxzXCsjXGRcK1woLFxzKiNcZFwrXCkqIgpAQCAtNDYsNiArNDYsNiBAQAogaGkgZGVmIGxpbmsgZGViY2hhbmdlbG9nVGFyZ2V0ICBJZGVudGlmaWVyCiBoaSBkZWYgbGluayBkZWJjaGFuZ2Vsb2dFbWFpbCAgIFNwZWNpYWwKIAotbGV0IGI6Y3VycmVudF9zeW50YXggPSAiZGViY2hhbmdlbG9nIgorbGV0IGI6Y3VycmVudF9zeW50YXggPSAnZGViY2hhbmdlbG9nJwogCiAiIHZpbTogdHM9OCBzdz0yCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9kZWJjb250cm9sLnZpbSBiL3J1bnRpbWUvc3ludGF4L2RlYmNvbnRyb2wudmltCmluZGV4IDk0NTgxMmYuLjM1MDQ3ODAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2RlYmNvbnRyb2wudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2RlYmNvbnRyb2wudmltCkBAIC0zLDExICszLDExIEBACiAiIE1haW50YWluZXI6ICBEZWJpYW4gVmltIE1haW50YWluZXJzCiAiIEZvcm1lciBNYWludGFpbmVyczogR2VyZnJpZWQgRnVjaHMgPGFsZmllQGlzdC5vcmc+CiAiICAgICAgICAgICAgICAgICAgICAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KLSIgTGFzdCBDaGFuZ2U6IDIwMTggSmFuIDA2CisiIExhc3QgQ2hhbmdlOiAyMDE4IEphbiAyOAogIiBVUkw6IGh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy92aW0tdGVhbS92aW0tZGViaWFuL2Jsb2IvbWFzdGVyL3N5bnRheC9kZWJjb250cm9sLnZpbQogCiAiIFN0YW5kYXJkIHN5bnRheCBpbml0aWFsaXphdGlvbgotaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKK2lmIGV4aXN0cygnYjpjdXJyZW50X3N5bnRheCcpCiAgIGZpbmlzaAogZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBACiBoaSBkZWYgbGluayBkZWJjb250cm9sQ29tbWVudCAgICAgICBDb21tZW50CiBoaSBkZWYgbGluayBkZWJjb250cm9sRWxzZSAgICAgICAgICBTcGVjaWFsCiAKLWxldCBiOmN1cnJlbnRfc3ludGF4ID0gImRlYmNvbnRyb2wiCitsZXQgYjpjdXJyZW50X3N5bnRheCA9ICdkZWJjb250cm9sJwogCiBsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKIHVubGV0IHM6Y3BvX3NhdmUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2RlYmNvcHlyaWdodC52aW0gYi9ydW50aW1lL3N5bnRheC9kZWJjb3B5cmlnaHQudmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NWNhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3N5bnRheC9kZWJjb3B5cmlnaHQudmltCkBAIC0wLDAgKzEsMzMgQEAKKyIgVmltIHN5bnRheCBmaWxlCisiIExhbmd1YWdlOiAgICBEZWJpYW4gY29weXJpZ2h0IGZpbGUKKyIgTWFpbnRhaW5lcjogIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMKKyIgTGFzdCBDaGFuZ2U6IDIwMTggRmViIDA1CisiIFVSTDogaHR0cHM6Ly9zYWxzYS5kZWJpYW4ub3JnL3ZpbS10ZWFtL3ZpbS1kZWJpYW4vYmxvYi9tYXN0ZXIvc3ludGF4L2RlYmNvcHlyaWdodC52aW0KKworIiBTdGFuZGFyZCBzeW50YXggaW5pdGlhbGl6YXRpb24KK2lmIGV4aXN0cygnYjpjdXJyZW50X3N5bnRheCcpCisgIGZpbmlzaAorZW5kaWYKKworbGV0IHM6Y3BvX3NhdmUgPSAmY3BvCitzZXQgY3BvJnZpbQorCitzeW4gY2FzZSBtYXRjaAorCitzeW4gbWF0Y2ggZGViY29weXJpZ2h0VXJsICAgICAgICJcdmh0dHBzPzovL1tbOmFsbnVtOl1dWy1bOmFsbnVtOl1dKltbOmFsbnVtOl1dPyhcLltbOmFsbnVtOl1dWy1bOmFsbnVtOl1dKltbOmFsbnVtOl1dPykqXC5bWzphbHBoYTpdXVstWzphbG51bTpdXSpbWzphbHBoYTpdXT8oOlxkKyk/KC9bXls6c3BhY2U6XV0qKT8kIgorc3luIG1hdGNoIGRlYmNvcHlyaWdodEtleSAgICAgICAiXlwlKEZvcm1hdFx8VXBzdHJlYW0tTmFtZVx8VXBzdHJlYW0tQ29udGFjdFx8RGlzY2xhaW1lclx8U291cmNlXHxDb21tZW50XHxGaWxlc1x8Q29weXJpZ2h0XHxMaWNlbnNlXCk6ICoiCitzeW4gbWF0Y2ggZGViY29weXJpZ2h0RW1haWwgICAgICJbXz1bOmFsbnVtOl1cListXVwrQFtbOmFsbnVtOl1cLi9cLV1cKyIKK3N5biBtYXRjaCBkZWJjb3B5cmlnaHRFbWFpbCAgICAgIjwuXHstfT4iCitzeW4gbWF0Y2ggZGViY29weXJpZ2h0Q29tbWVudCAgICJeIy4qJCIgY29udGFpbnM9QFNwZWxsCisKK2hpIGRlZiBsaW5rIGRlYmNvcHlyaWdodFVybCAgICAgSWRlbnRpZmllcgoraGkgZGVmIGxpbmsgZGViY29weXJpZ2h0S2V5ICAgICBLZXl3b3JkCitoaSBkZWYgbGluayBkZWJjb3B5cmlnaHRFbWFpbCAgIElkZW50aWZpZXIKK2hpIGRlZiBsaW5rIGRlYmNvcHlyaWdodENvbW1lbnQgQ29tbWVudAorCitsZXQgYjpjdXJyZW50X3N5bnRheCA9ICdkZWJjb3B5cmlnaHQnCisKK2xldCAmY3BvID0gczpjcG9fc2F2ZQordW5sZXQgczpjcG9fc2F2ZQorCisiIHZpbTogdHM9OCBzdz0yCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9kZWJzb3VyY2VzLnZpbSBiL3J1bnRpbWUvc3ludGF4L2RlYnNvdXJjZXMudmltCmluZGV4IDRlMTM2ZmEuLmM3OTYwYzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2RlYnNvdXJjZXMudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2RlYnNvdXJjZXMudmltCkBAIC0yLDExICsyLDExIEBACiAiIExhbmd1YWdlOiAgICAgRGViaWFuIHNvdXJjZXMubGlzdAogIiBNYWludGFpbmVyOiAgIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMKICIgRm9ybWVyIE1haW50YWluZXI6IE1hdHRoaWpzIE1vaGxtYW5uIDxtYXR0aGlqc0BjYWNob2xvbmcubmw+Ci0iIExhc3QgQ2hhbmdlOiAyMDE4IEphbiAwNgorIiBMYXN0IENoYW5nZTogMjAxOCBNYXkgMDMKICIgVVJMOiBodHRwczovL3NhbHNhLmRlYmlhbi5vcmcvdmltLXRlYW0vdmltLWRlYmlhbi9ibG9iL21hc3Rlci9zeW50YXgvZGVic291cmNlcy52aW0KIAogIiBTdGFuZGFyZCBzeW50YXggaW5pdGlhbGl6YXRpb24KLWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCitpZiBleGlzdHMoJ2I6Y3VycmVudF9zeW50YXgnKQogICBmaW5pc2gKIGVuZGlmCiAKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgIFwgJ29sZHN0YWJsZScsICdzdGFibGUnLCAndGVzdGluZycsICd1bnN0YWJsZScsICdleHBlcmltZW50YWwnLAogICAgICAgXCAnd2hlZXp5JywgJ2plc3NpZScsICdzdHJldGNoJywgJ3NpZCcsICdyYy1idWdneScsCiAgICAgICBcCi0gICAgICBcICd0cnVzdHknLCAneGVuaWFsJywgJ3plc3R5JywgJ2FydGZ1bCcsICdiaW9uaWMnLCAnZGV2ZWwnCisgICAgICBcICd0cnVzdHknLCAneGVuaWFsJywgJ2FydGZ1bCcsICdiaW9uaWMnLCAnY29zbWljJywgJ2RldmVsJwogICAgICAgXCBdCiBsZXQgczp1bnN1cHBvcnRlZCA9IFsKICAgICAgIFwgJ2J1enonLCAncmV4JywgJ2JvJywgJ2hhbW0nLCAnc2xpbmsnLCAncG90YXRvJywKQEAgLTM0LDEyICszNCwxMiBAQAogICAgICAgXCAnd2FydHknLCAnaG9hcnknLCAnYnJlZXp5JywgJ2RhcHBlcicsICdlZGd5JywgJ2ZlaXN0eScsCiAgICAgICBcICdndXRzeScsICdoYXJkeScsICdpbnRyZXBpZCcsICdqYXVudHknLCAna2FybWljJywgJ2x1Y2lkJywKICAgICAgIFwgJ21hdmVyaWNrJywgJ25hdHR5JywgJ29uZWlyaWMnLCAncHJlY2lzZScsICdxdWFudGFsJywgJ3JhcmluZycsICdzYXVjeScsCi0gICAgICBcICd1dG9waWMnLCAndml2aWQnLCAnd2lseScsICd5YWtrZXR5JworICAgICAgXCAndXRvcGljJywgJ3ZpdmlkJywgJ3dpbHknLCAneWFra2V0eScsICd6ZXN0eScKICAgICAgIFwgXQogbGV0ICZjcG89czpjcG8KIAogIiBNYXRjaCB1cmkncwotc3luIG1hdGNoIGRlYnNvdXJjZXNVcmkgICAgICAgICAgICArXChodHRwc1w/Oi8vXHxmdHA6Ly9cfFtyc11zaDovL1x8ZGVidG9ycmVudDovL1x8XChjZHJvbVx8Y29weVx8ZmlsZVwpOlwpW14nIAk8PiJdXCsrCitzeW4gbWF0Y2ggZGVic291cmNlc1VyaSAgICAgICAgICAgICdcKGh0dHBzXD86Ly9cfGZ0cDovL1x8W3JzXXNoOi8vXHxkZWJ0b3JyZW50Oi8vXHxcKGNkcm9tXHxjb3B5XHxmaWxlXCk6XClbXicgCTw+Il1cKycKIGV4ZSAnc3luIG1hdGNoIGRlYnNvdXJjZXNEaXN0cktleXdvcmQgICArXChbWzphbG51bTpdXy4vXSpcKVw8XCgnLiBqb2luKHM6c3VwcG9ydGVkLCAnXHwnKS4gJ1wpXD5cKFstWzphbG51bTpdXy4vXSpcKSsnCiBleGUgJ3N5biBtYXRjaCBkZWJzb3VyY2VzVW5zdXBwb3J0ZWREaXN0cktleXdvcmQgK1woW1s6YWxudW06XV8uL10qXClcPFwoJy4gam9pbihzOnVuc3VwcG9ydGVkLCAnXHwnKSAuJ1wpXD5cKFstWzphbG51bTpdXy4vXSpcKSsnCiAKQEAgLTUxLDQgKzUxLDQgQEAKIGhpIGRlZiBsaW5rIGRlYnNvdXJjZXNDb21tZW50ICAgICAgICAgICAgICAgICBDb21tZW50CiBoaSBkZWYgbGluayBkZWJzb3VyY2VzVXJpICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnQKIAotbGV0IGI6Y3VycmVudF9zeW50YXggPSAiZGVic291cmNlcyIKK2xldCBiOmN1cnJlbnRfc3ludGF4ID0gJ2RlYnNvdXJjZXMnCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC92aGRsLnZpbSBiL3J1bnRpbWUvc3ludGF4L3ZoZGwudmltCmluZGV4IGY0YjExZmYuLmVmY2I4NDAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3ZoZGwudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3ZoZGwudmltCkBAIC0zLDcgKzMsNyBAQAogIiBNYWludGFpbmVyOgkJRGFuaWVsIEtobyA8ZGFuaWVsLmtob0B0YXVob3AuY29tPgogIiBQcmV2aW91cyBNYWludGFpbmVyOglDem8gPE9saXZpZXIuU2lyb2xAbGlwNi5mcj4KICIgQ3JlZGl0czoJCVN0ZXBoYW4gSGVnZWwgPHN0ZXBoYW4uaGVnZWxAc25jLnNpZW1lbnMuY29tLmNuPgotIiBMYXN0IENoYW5nZWQ6CQkyMDE2IE1hciAwNSBieSBEYW5pZWwgS2hvCisiIExhc3QgQ2hhbmdlZDoJCTIwMTggTWF5IDA2IGJ5IERhbmllbCBLaG8KIAogIiBxdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKIGlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCkBAIC00Myw2ICs0Myw4IEBACiBzeW4ga2V5d29yZCAJdmhkbFN0YXRlbWVudAl0aGVuIHRvIHRyYW5zcG9ydCB0eXBlCiBzeW4ga2V5d29yZCAJdmhkbFN0YXRlbWVudAl1bmFmZmVjdGVkIHVuaXRzIHVudGlsIHVzZQogc3luIGtleXdvcmQgCXZoZGxTdGF0ZW1lbnQJdmFyaWFibGUKKyIgVkhETC0yMDE3IGludGVyZmFjZQorc3luIGtleXdvcmQgCXZoZGxTdGF0ZW1lbnQJdmlldwogc3luIGtleXdvcmQgCXZoZGxTdGF0ZW1lbnQJdm1vZGUgdnByb3AgdnVuaXQKIHN5biBrZXl3b3JkIAl2aGRsU3RhdGVtZW50CXdhaXQgd2hlbiB3aGlsZSB3aXRoCiBzeW4ga2V5d29yZCAJdmhkbFN0YXRlbWVudAlub3RlIHdhcm5pbmcgZXJyb3IgZmFpbHVyZQpAQCAtNjksOSArNzEsNyBAQAogCiBzeW4gbWF0Y2gJdmhkbFR5cGUJIlw8Y2hhcmFjdGVyXD5cJ1w9Igogc3luIG1hdGNoCXZoZGxUeXBlCSJcPHN0cmluZ1w+XCdcPSIKLSJzeW4ga2V5d29yZAl2aGRsVHlwZQlzZXZlcml0eV9sZXZlbAotc3luIGtleXdvcmQJdmhkbFR5cGUJbGluZQotc3luIGtleXdvcmQJdmhkbFR5cGUJdGV4dAorc3luIGtleXdvcmQJdmhkbFR5cGUJbGluZSB0ZXh0IHNpZGUgd2lkdGgKIAogIiBQcmVkZWZpbmVkIHN0YW5kYXJkIElFRUUgVkhETCB0eXBlcwogc3luIG1hdGNoCXZoZGxUeXBlCSJcPHN0ZF91bG9naWNcPlwnXD0iCkBAIC0xMjQsNiArMTI0LDggQEAKIHN5biBtYXRjaCAgIAl2aGRsQXR0cmlidXRlCSJcJ3ZhbCIKIHN5biBtYXRjaCAgIAl2aGRsQXR0cmlidXRlCSJcJ2ltYWdlIgogc3luIG1hdGNoICAgCXZoZGxBdHRyaWJ1dGUJIlwndmFsdWUiCisiIFZIREwtMjAxNyBpbnRlcmZhY2UgYXR0cmlidXRlCitzeW4gbWF0Y2ggICAJdmhkbEF0dHJpYnV0ZQkiXCdjb252ZXJzZSIKIAogc3luIGtleXdvcmQJdmhkbEJvb2xlYW4JdHJ1ZSBmYWxzZQogCkBAIC0xNjUsNiArMTY3LDkgQEAKIHN5biBtYXRjaAl2aGRsT3BlcmF0b3IJIjw9XHw6PSIKIHN5biBtYXRjaAl2aGRsT3BlcmF0b3IJIj0+IgogCisiIFZIREwtMjAxNyBjb25jdXJyZW50IHNpZ25hbCBhc3NvY2lhdGlvbiAoc3BhY2VzaGlwKSBvcGVyYXRvcgorc3luIG1hdGNoCXZoZGxPcGVyYXRvcgkiPD0+IgorCiAiIFZIREwtMjAwOCBjb252ZXJzaW9uLCBtYXRjaGluZyBlcXVhbGl0eS9ub24tZXF1YWxpdHkgb3BlcmF0b3JzCiBzeW4gbWF0Y2gJdmhkbE9wZXJhdG9yCSI/P1x8Pz1cfD9cLz1cfD88XHw/PD1cfD8+XHw/Pj0iCiAKQEAgLTE4Myw4ICsxODgsMTEgQEAKIHN5biBtYXRjaAl2aGRsRXJyb3IJIls+PSYrXC1cL1xcXVwrXCg8XCkiCiAiIENvdmVycyBtb3N0IG9wZXJhdG9ycwogIiBzdXBwb3J0IG5lZ2F0aXZlIHNpZ24gYWZ0ZXIgb3BlcmF0b3JzLiBFLmcuIHE8PS1iOwotc3luIG1hdGNoCXZoZGxFcnJvcgkiXCgmXHwrXHxcLVx8XCpcKlx8XC89XHw/P1x8Pz1cfD9cLz1cfD88PVx8Pz49XHw+PVx8PD1cfDo9XHw9PlwpWzw+PSYrXCpcXD86XVwrIgotc3luIG1hdGNoCXZoZGxFcnJvcgkiWzw+PSYrXC1cKlxcOl1cK1woJlx8K1x8XCpcKlx8XC89XHw/P1x8Pz1cfD9cLz1cfD88XHw/PD1cfD8+XHw/Pj1cfD49XHw8PVx8Oj1cfD0+XCkiCisiIFN1cHBvcnRzIFZIREwtMjAxNyBzcGFjZXNoaXAgKGNvbmN1cnJlbnQgc2ltcGxlIHNpZ25hbCBhc3NvY2lhdGlvbikuCitzeW4gbWF0Y2gJdmhkbEVycm9yCSJcKDw9XClbPD0mK1wqXFw/Ol1cKyIKK3N5biBtYXRjaAl2aGRsRXJyb3IJIls+PSYrXC1cKlxcOl1cK1woPT5cKSIKK3N5biBtYXRjaAl2aGRsRXJyb3IJIlwoJlx8K1x8XC1cfFwqXCpcfFwvPVx8Pz9cfD89XHw/XC89XHw/PD1cfD8+PVx8Pj1cfDo9XHw9PlwpWzw+PSYrXCpcXD86XVwrIgorc3luIG1hdGNoCXZoZGxFcnJvcgkiWzw+PSYrXC1cKlxcOl1cK1woJlx8K1x8XCpcKlx8XC89XHw/P1x8Pz1cfD9cLz1cfD88XHw/PD1cfD8+XHw/Pj1cfD49XHw8PVx8Oj1cKSIKIHN5biBtYXRjaAl2aGRsRXJyb3IJIlwoPzxcfD8+XClbPD4mK1wqXC9cXD86XVwrIgogc3luIG1hdGNoCXZoZGxFcnJvcgkiXCg8PFx8Pj5cKVs8PiYrXCpcL1xcPzpdXCsiCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdG9vbHMvY2NmaWx0ZXJfUkVBRE1FLnR4dCBiL3J1bnRpbWUvdG9vbHMvY2NmaWx0ZXJfUkVBRE1FLnR4dAppbmRleCAzYzEyYThjLi5lYTk4OWYyIDEwMDY0NAotLS0gYS9ydW50aW1lL3Rvb2xzL2NjZmlsdGVyX1JFQURNRS50eHQKKysrIGIvcnVudGltZS90b29scy9jY2ZpbHRlcl9SRUFETUUudHh0CkBAIC0xLDMgKzEsMTMgQEAKK1JFQUQgVEhJUyBGSVJTVAorPT09PT09PT09PT09PT09CisKK2NjZmlsdGVyIGlzIGEgQyBwcm9ncmFtIHRvIGZpbHRlciB0aGUgb3V0cHV0IG9mIGEgZmV3IGNvbXBpbGVycyB0byBhIGNvbW1vbgorUXVpY2tGaXggZm9ybWF0LiAgSXQgaXMgcHJvdmlkZWQgd2l0aCBWaW0gdG8gbWFrZSBxdWlja2ZpeCB1c2VmdWwgZm9yIG1vcmUKK2NvbXBpbGVycy4KKworY2NmaWx0ZXIgV0lMTCBGQUlMIHdpdGggbG9uZyBsaW5lcyAobW9yZSB0aGFuIDIwNDcgYnl0ZXMpLgorCisKIENPTVBJTElORyBBTkQgSU5TVEFMTElORzoKID09PT09PT09PT09PT09PT09PT09PT09PT0KIAo=