ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggNDljOTU1ZC4uNDhjMWE3OCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBGZWIgMTcKKypldmFsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE3IE1hciAwNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yNjIzLDkgKzI2MjMsOSBAQAogPAkJCTIuMzU2MTk0CiAJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CiAKLWJhbGxvb25fc2hvdyh7bXNnfSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmJhbGxvb25fc2hvdygpKgotICAgICAgICAgICAgICAgIFNob3cge21zZ30gaW5zaWRlIHRoZSBiYWxsb29uLgotICAgICAgICAgICAgICAgIEV4YW1wbGU6ID4KK2JhbGxvb25fc2hvdyh7bXNnfSkJCQkJCSpiYWxsb29uX3Nob3coKSoKKwkJU2hvdyB7bXNnfSBpbnNpZGUgdGhlIGJhbGxvb24uCisJCUV4YW1wbGU6ID4KIAkJCWZ1bmMgR2V0QmFsbG9vbkNvbnRlbnQoKQogCQkJICAgIiBpbml0aWF0ZSBnZXR0aW5nIHRoZSBjb250ZW50CiAJCQkgICByZXR1cm4gJycKQEAgLTI2MzMsNyArMjYzMyw3IEBACiAJCQlzZXQgYmFsbG9vbmV4cHI9R2V0QmFsbG9vbkNvbnRlbnQoKQogCiAJCQlmdW5jIEJhbGxvb25DYWxsYmFjayhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgYmFsbG9vbl9zaG93KGE6cmVzdWx0KQorCQkJICBjYWxsIGJhbGxvb25fc2hvdyhhOnJlc3VsdCkKIAkJCWVuZGZ1bmMKIDwKIAkJVGhlIGludGVuZGVkIHVzZSBpcyB0aGF0IGZldGNoaW5nIHRoZSBjb250ZW50IG9mIHRoZSBiYWxsb29uCkBAIC0yNjQxLDcgKzI2NDEsMTAgQEAKIAkJYXN5bmNocm9ub3VzIG1ldGhvZCwgaW4gd2hpY2ggYSBjYWxsYmFjayBpbnZva2VzCiAJCWJhbGxvb25fc2hvdygpLiAgVGhlICdiYWxsb29uZXhwcicgaXRzZWxmIGNhbiByZXR1cm4gYW4KIAkJZW1wdHkgc3RyaW5nIG9yIGEgcGxhY2Vob2xkZXIuCi0gICAgICAgICAgICAgICAge29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgK2JldmFsIGZlYXR1cmV9CisKKwkJV2hlbiBzaG93aW5nIGEgYmFsbG9vbiBpcyBub3QgcG9zc2libGUgbm90aGluZyBoYXBwZW5zLCBubworCQllcnJvciBtZXNzYWdlLgorCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSArYmFsbG9vbl9ldmFsIGZlYXR1cmV9CiAKIAkJCQkJCQkqYnJvd3NlKCkqCiBicm93c2Uoe3NhdmV9LCB7dGl0bGV9LCB7aW5pdGRpcn0sIHtkZWZhdWx0fSkKQEAgLTI4MzcsMTc2ICsyODQwLDYgQEAKIDwJCQk0LjAKIAkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KIAotY2hhbmdlbnIoKQkJCQkJCSpjaGFuZ2VucigpKgotCQlSZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgbW9zdCByZWNlbnQgY2hhbmdlLiAgVGhpcyBpcyB0aGUgc2FtZQotCQludW1iZXIgYXMgd2hhdCBpcyBkaXNwbGF5ZWQgd2l0aCB8OnVuZG9saXN0fCBhbmQgY2FuIGJlIHVzZWQKLQkJd2l0aCB0aGUgfDp1bmRvfCBjb21tYW5kLgotCQlXaGVuIGEgY2hhbmdlIHdhcyBtYWRlIGl0IGlzIHRoZSBudW1iZXIgb2YgdGhhdCBjaGFuZ2UuICBBZnRlcgotCQlyZWRvIGl0IGlzIHRoZSBudW1iZXIgb2YgdGhlIHJlZG9uZSBjaGFuZ2UuICBBZnRlciB1bmRvIGl0IGlzCi0JCW9uZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiB0aGUgdW5kb25lIGNoYW5nZS4KLQotY2hhcjJucih7ZXhwcn1bLCB7dXRmOH1dKQkJCQkJKmNoYXIybnIoKSoKLQkJUmV0dXJuIG51bWJlciB2YWx1ZSBvZiB0aGUgZmlyc3QgY2hhciBpbiB7ZXhwcn0uICBFeGFtcGxlczogPgotCQkJY2hhcjJucigiICIpCQlyZXR1cm5zIDMyCi0JCQljaGFyMm5yKCJBQkMiKQkJcmV0dXJucyA2NQotPAkJV2hlbiB7dXRmOH0gaXMgb21pdHRlZCBvciB6ZXJvLCB0aGUgY3VycmVudCAnZW5jb2RpbmcnIGlzIHVzZWQuCi0JCUV4YW1wbGUgZm9yICJ1dGYtOCI6ID4KLQkJCWNoYXIybnIoIuEiKQkJcmV0dXJucyAyMjUKLQkJCWNoYXIybnIoIuEiWzBdKQkJcmV0dXJucyAxOTUKLTwJCVdpdGgge3V0Zjh9IHNldCB0byAxLCBhbHdheXMgdHJlYXQgYXMgdXRmLTggY2hhcmFjdGVycy4KLQkJQSBjb21iaW5pbmcgY2hhcmFjdGVyIGlzIGEgc2VwYXJhdGUgY2hhcmFjdGVyLgotCQl8bnIyY2hhcigpfCBkb2VzIHRoZSBvcHBvc2l0ZS4KLQotY2luZGVudCh7bG51bX0pCQkJCQkJKmNpbmRlbnQoKSoKLQkJR2V0IHRoZSBhbW91bnQgb2YgaW5kZW50IGZvciBsaW5lIHtsbnVtfSBhY2NvcmRpbmcgdGhlIEMKLQkJaW5kZW50aW5nIHJ1bGVzLCBhcyB3aXRoICdjaW5kZW50Jy4KLQkJVGhlIGluZGVudCBpcyBjb3VudGVkIGluIHNwYWNlcywgdGhlIHZhbHVlIG9mICd0YWJzdG9wJyBpcwotCQlyZWxldmFudC4gIHtsbnVtfSBpcyB1c2VkIGp1c3QgbGlrZSBpbiB8Z2V0bGluZSgpfC4KLQkJV2hlbiB7bG51bX0gaXMgaW52YWxpZCBvciBWaW0gd2FzIG5vdCBjb21waWxlZCB0aGUgfCtjaW5kZW50fAotCQlmZWF0dXJlLCAtMSBpcyByZXR1cm5lZC4KLQkJU2VlIHxDLWluZGVudGluZ3wuCi0KLWNsZWFybWF0Y2hlcygpCQkJCQkJKmNsZWFybWF0Y2hlcygpKgotCQlDbGVhcnMgYWxsIG1hdGNoZXMgcHJldmlvdXNseSBkZWZpbmVkIGJ5IHxtYXRjaGFkZCgpfCBhbmQgdGhlCi0JCXw6bWF0Y2h8IGNvbW1hbmRzLgotCi0JCQkJCQkJKmNvbCgpKgotY29sKHtleHByfSkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgdGhlIGJ5dGUgaW5kZXggb2YgdGhlIGNvbHVtbgotCQlwb3NpdGlvbiBnaXZlbiB3aXRoIHtleHByfS4gIFRoZSBhY2NlcHRlZCBwb3NpdGlvbnMgYXJlOgotCQkgICAgLgkgICAgdGhlIGN1cnNvciBwb3NpdGlvbgotCQkgICAgJAkgICAgdGhlIGVuZCBvZiB0aGUgY3Vyc29yIGxpbmUgKHRoZSByZXN1bHQgaXMgdGhlCi0JCQkgICAgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBjdXJzb3IgbGluZSBwbHVzIG9uZSkKLQkJICAgICd4CSAgICBwb3NpdGlvbiBvZiBtYXJrIHggKGlmIHRoZSBtYXJrIGlzIG5vdCBzZXQsIDAgaXMKLQkJCSAgICByZXR1cm5lZCkKLQkJICAgIHYgICAgICAgSW4gVmlzdWFsIG1vZGU6IHRoZSBzdGFydCBvZiB0aGUgVmlzdWFsIGFyZWEgKHRoZQotCQkJICAgIGN1cnNvciBpcyB0aGUgZW5kKS4gIFdoZW4gbm90IGluIFZpc3VhbCBtb2RlCi0JCQkgICAgcmV0dXJucyB0aGUgY3Vyc29yIHBvc2l0aW9uLiAgRGlmZmVycyBmcm9tIHwnPHwgaW4KLQkJCSAgICB0aGF0IGl0J3MgdXBkYXRlZCByaWdodCBhd2F5LgotCQlBZGRpdGlvbmFsbHkge2V4cHJ9IGNhbiBiZSBbbG51bSwgY29sXTogYSB8TGlzdHwgd2l0aCB0aGUgbGluZQotCQlhbmQgY29sdW1uIG51bWJlci4gTW9zdCB1c2VmdWwgd2hlbiB0aGUgY29sdW1uIGlzICIkIiwgdG8gZ2V0Ci0JCXRoZSBsYXN0IGNvbHVtbiBvZiBhIHNwZWNpZmljIGxpbmUuICBXaGVuICJsbnVtIiBvciAiY29sIiBpcwotCQlvdXQgb2YgcmFuZ2UgdGhlbiBjb2woKSByZXR1cm5zIHplcm8uCi0JCVRvIGdldCB0aGUgbGluZSBudW1iZXIgdXNlIHxsaW5lKCl8LiAgVG8gZ2V0IGJvdGggdXNlCi0JCXxnZXRwb3MoKXwuCi0JCUZvciB0aGUgc2NyZWVuIGNvbHVtbiBwb3NpdGlvbiB1c2UgfHZpcnRjb2woKXwuCi0JCU5vdGUgdGhhdCBvbmx5IG1hcmtzIGluIHRoZSBjdXJyZW50IGZpbGUgY2FuIGJlIHVzZWQuCi0JCUV4YW1wbGVzOiA+Ci0JCQljb2woIi4iKQkJY29sdW1uIG9mIGN1cnNvcgotCQkJY29sKCIkIikJCWxlbmd0aCBvZiBjdXJzb3IgbGluZSBwbHVzIG9uZQotCQkJY29sKCIndCIpCQljb2x1bW4gb2YgbWFyayB0Ci0JCQljb2woIiciIC4gbWFya25hbWUpCWNvbHVtbiBvZiBtYXJrIG1hcmtuYW1lCi08CQlUaGUgZmlyc3QgY29sdW1uIGlzIDEuICAwIGlzIHJldHVybmVkIGZvciBhbiBlcnJvci4KLQkJRm9yIGFuIHVwcGVyY2FzZSBtYXJrIHRoZSBjb2x1bW4gbWF5IGFjdHVhbGx5IGJlIGluIGFub3RoZXIKLQkJYnVmZmVyLgotCQlGb3IgdGhlIGN1cnNvciBwb3NpdGlvbiwgd2hlbiAndmlydHVhbGVkaXQnIGlzIGFjdGl2ZSwgdGhlCi0JCWNvbHVtbiBpcyBvbmUgaGlnaGVyIGlmIHRoZSBjdXJzb3IgaXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKLQkJbGluZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gb2J0YWluIHRoZSBjb2x1bW4gaW4gSW5zZXJ0IG1vZGU6ID4KLQkJCTppbWFwIDxGMj4gPEMtTz46bGV0IHNhdmVfdmUgPSAmdmU8Q1I+Ci0JCQkJXDxDLU8+OnNldCB2ZT1hbGw8Q1I+Ci0JCQkJXDxDLU8+OmVjaG8gY29sKCIuIikgLiAiXG4iIDxCYXI+Ci0JCQkJXGxldCAmdmUgPSBzYXZlX3ZlPENSPgotPAotCi1jb21wbGV0ZSh7c3RhcnRjb2x9LCB7bWF0Y2hlc30pCQkJKmNvbXBsZXRlKCkqICpFNzg1KgotCQlTZXQgdGhlIG1hdGNoZXMgZm9yIEluc2VydCBtb2RlIGNvbXBsZXRpb24uCi0JCUNhbiBvbmx5IGJlIHVzZWQgaW4gSW5zZXJ0IG1vZGUuICBZb3UgbmVlZCB0byB1c2UgYSBtYXBwaW5nCi0JCXdpdGggQ1RSTC1SID0gKHNlZSB8aV9DVFJMLVJ8KS4gIEl0IGRvZXMgbm90IHdvcmsgYWZ0ZXIgQ1RSTC1PCi0JCW9yIHdpdGggYW4gZXhwcmVzc2lvbiBtYXBwaW5nLgotCQl7c3RhcnRjb2x9IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgbGluZSB3aGVyZSB0aGUgY29tcGxldGVkCi0JCXRleHQgc3RhcnQuICBUaGUgdGV4dCB1cCB0byB0aGUgY3Vyc29yIGlzIHRoZSBvcmlnaW5hbCB0ZXh0Ci0JCXRoYXQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgbWF0Y2hlcy4gIFVzZSBjb2woJy4nKSBmb3IgYW4KLQkJZW1wdHkgc3RyaW5nLiAgImNvbCgnLicpIC0gMSIgd2lsbCByZXBsYWNlIG9uZSBjaGFyYWN0ZXIgYnkgYQotCQltYXRjaC4KLQkJe21hdGNoZXN9IG11c3QgYmUgYSB8TGlzdHwuICBFYWNoIHxMaXN0fCBpdGVtIGlzIG9uZSBtYXRjaC4KLQkJU2VlIHxjb21wbGV0ZS1pdGVtc3wgZm9yIHRoZSBraW5kIG9mIGl0ZW1zIHRoYXQgYXJlIHBvc3NpYmxlLgotCQlOb3RlIHRoYXQgdGhlIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB5b3UgbmVlZCB0byBhdm9pZAotCQlpbnNlcnRpbmcgYW55dGhpbmcgdGhhdCB3b3VsZCBjYXVzZSBjb21wbGV0aW9uIHRvIHN0b3AuCi0JCVRoZSBtYXRjaCBjYW4gYmUgc2VsZWN0ZWQgd2l0aCBDVFJMLU4gYW5kIENUUkwtUCBhcyB1c3VhbCB3aXRoCi0JCUluc2VydCBtb2RlIGNvbXBsZXRpb24uICBUaGUgcG9wdXAgbWVudSB3aWxsIGFwcGVhciBpZgotCQlzcGVjaWZpZWQsIHNlZSB8aW5zLWNvbXBsZXRpb24tbWVudXwuCi0JCUV4YW1wbGU6ID4KLQlpbm9yZW1hcCA8RjU+IDxDLVI+PUxpc3RNb250aHMoKTxDUj4KLQotCWZ1bmMhIExpc3RNb250aHMoKQotCSAgY2FsbCBjb21wbGV0ZShjb2woJy4nKSwgWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywKLQkJXCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywKLQkJXCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddKQotCSAgcmV0dXJuICcnCi0JZW5kZnVuYwotPAkJVGhpcyBpc24ndCB2ZXJ5IHVzZWZ1bCwgYnV0IGl0IHNob3dzIGhvdyBpdCB3b3Jrcy4gIE5vdGUgdGhhdAotCQlhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgdG8gYXZvaWQgYSB6ZXJvIGJlaW5nIGluc2VydGVkLgotCi1jb21wbGV0ZV9hZGQoe2V4cHJ9KQkJCQkqY29tcGxldGVfYWRkKCkqCi0JCUFkZCB7ZXhwcn0gdG8gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIE9ubHkgdG8gYmUgdXNlZCBieSB0aGUKLQkJZnVuY3Rpb24gc3BlY2lmaWVkIHdpdGggdGhlICdjb21wbGV0ZWZ1bmMnIG9wdGlvbi4KLQkJUmV0dXJucyAwIGZvciBmYWlsdXJlIChlbXB0eSBzdHJpbmcgb3Igb3V0IG9mIG1lbW9yeSksCi0JCTEgd2hlbiB0aGUgbWF0Y2ggd2FzIGFkZGVkLCAyIHdoZW4gdGhlIG1hdGNoIHdhcyBhbHJlYWR5IGluCi0JCXRoZSBsaXN0LgotCQlTZWUgfGNvbXBsZXRlLWZ1bmN0aW9uc3wgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHtleHByfS4gIEl0IGlzCi0JCXRoZSBzYW1lIGFzIG9uZSBpdGVtIGluIHRoZSBsaXN0IHRoYXQgJ29tbmlmdW5jJyB3b3VsZCByZXR1cm4uCi0KLWNvbXBsZXRlX2NoZWNrKCkJCQkJKmNvbXBsZXRlX2NoZWNrKCkqCi0JCUNoZWNrIGZvciBhIGtleSB0eXBlZCB3aGlsZSBsb29raW5nIGZvciBjb21wbGV0aW9uIG1hdGNoZXMuCi0JCVRoaXMgaXMgdG8gYmUgdXNlZCB3aGVuIGxvb2tpbmcgZm9yIG1hdGNoZXMgdGFrZXMgc29tZSB0aW1lLgotCQlSZXR1cm5zIHxUUlVFfCB3aGVuIHNlYXJjaGluZyBmb3IgbWF0Y2hlcyBpcyB0byBiZSBhYm9ydGVkLAotCQl6ZXJvIG90aGVyd2lzZS4KLQkJT25seSB0byBiZSB1c2VkIGJ5IHRoZSBmdW5jdGlvbiBzcGVjaWZpZWQgd2l0aCB0aGUKLQkJJ2NvbXBsZXRlZnVuYycgb3B0aW9uLgotCi0JCQkJCQkqY29uZmlybSgpKgotY29uZmlybSh7bXNnfSBbLCB7Y2hvaWNlc30gWywge2RlZmF1bHR9IFssIHt0eXBlfV1dXSkKLQkJQ29uZmlybSgpIG9mZmVycyB0aGUgdXNlciBhIGRpYWxvZywgZnJvbSB3aGljaCBhIGNob2ljZSBjYW4gYmUKLQkJbWFkZS4gIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgY2hvaWNlLiAgRm9yIHRoZSBmaXJzdAotCQljaG9pY2UgdGhpcyBpcyAxLgotCQlOb3RlOiBjb25maXJtKCkgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBjb21waWxlZCB3aXRoIGRpYWxvZwotCQlzdXBwb3J0LCBzZWUgfCtkaWFsb2dfY29ufCBhbmQgfCtkaWFsb2dfZ3VpfC4KLQotCQl7bXNnfSBpcyBkaXNwbGF5ZWQgaW4gYSB8ZGlhbG9nfCB3aXRoIHtjaG9pY2VzfSBhcyB0aGUKLQkJYWx0ZXJuYXRpdmVzLiAgV2hlbiB7Y2hvaWNlc30gaXMgbWlzc2luZyBvciBlbXB0eSwgIiZPSyIgaXMKLQkJdXNlZCAoYW5kIHRyYW5zbGF0ZWQpLgotCQl7bXNnfSBpcyBhIFN0cmluZywgdXNlICdcbicgdG8gaW5jbHVkZSBhIG5ld2xpbmUuICBPbmx5IG9uCi0JCXNvbWUgc3lzdGVtcyB0aGUgc3RyaW5nIGlzIHdyYXBwZWQgd2hlbiBpdCBkb2Vzbid0IGZpdC4KLQotCQl7Y2hvaWNlc30gaXMgYSBTdHJpbmcsIHdpdGggdGhlIGluZGl2aWR1YWwgY2hvaWNlcyBzZXBhcmF0ZWQKLQkJYnkgJ1xuJywgZS5nLiA+Ci0JCQljb25maXJtKCJTYXZlIGNoYW5nZXM/IiwgIiZZZXNcbiZOb1xuJkNhbmNlbCIpCi08CQlUaGUgbGV0dGVyIGFmdGVyIHRoZSAnJicgaXMgdGhlIHNob3J0Y3V0IGtleSBmb3IgdGhhdCBjaG9pY2UuCi0JCVRodXMgeW91IGNhbiB0eXBlICdjJyB0byBzZWxlY3QgIkNhbmNlbCIuICBUaGUgc2hvcnRjdXQgZG9lcwotCQlub3QgbmVlZCB0byBiZSB0aGUgZmlyc3QgbGV0dGVyOiA+Ci0JCQljb25maXJtKCJmaWxlIGhhcyBiZWVuIG1vZGlmaWVkIiwgIiZTYXZlXG5TYXZlICZBbGwiKQotPAkJRm9yIHRoZSBjb25zb2xlLCB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggY2hvaWNlIGlzIHVzZWQgYXMKLQkJdGhlIGRlZmF1bHQgc2hvcnRjdXQga2V5LgotCi0JCVRoZSBvcHRpb25hbCB7ZGVmYXVsdH0gYXJndW1lbnQgaXMgdGhlIG51bWJlciBvZiB0aGUgY2hvaWNlCi0JCXRoYXQgaXMgbWFkZSBpZiB0aGUgdXNlciBoaXRzIDxDUj4uICBVc2UgMSB0byBtYWtlIHRoZSBmaXJzdAotCQljaG9pY2UgdGhlIGRlZmF1bHQgb25lLiAgVXNlIDAgdG8gbm90IHNldCBhIGRlZmF1bHQuICBJZgotCQl7ZGVmYXVsdH0gaXMgb21pdHRlZCwgMSBpcyB1c2VkLgotCi0JCVRoZSBvcHRpb25hbCB7dHlwZX0gYXJndW1lbnQgZ2l2ZXMgdGhlIHR5cGUgb2YgZGlhbG9nLiAgVGhpcwotCQlpcyBvbmx5IHVzZWQgZm9yIHRoZSBpY29uIG9mIHRoZSBHVEssIE1hYywgTW90aWYgYW5kIFdpbjMyCi0JCUdVSS4gIEl0IGNhbiBiZSBvbmUgb2YgdGhlc2UgdmFsdWVzOiAiRXJyb3IiLCAiUXVlc3Rpb24iLAotCQkiSW5mbyIsICJXYXJuaW5nIiBvciAiR2VuZXJpYyIuICBPbmx5IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMKLQkJcmVsZXZhbnQuICBXaGVuIHt0eXBlfSBpcyBvbWl0dGVkLCAiR2VuZXJpYyIgaXMgdXNlZC4KLQotCQlJZiB0aGUgdXNlciBhYm9ydHMgdGhlIGRpYWxvZyBieSBwcmVzc2luZyA8RXNjPiwgQ1RSTC1DLAotCQlvciBhbm90aGVyIHZhbGlkIGludGVycnVwdCBrZXksIGNvbmZpcm0oKSByZXR1cm5zIDAuCi0KLQkJQW4gZXhhbXBsZTogPgotICAgOmxldCBjaG9pY2UgPSBjb25maXJtKCJXaGF0IGRvIHlvdSB3YW50PyIsICImQXBwbGVzXG4mT3Jhbmdlc1xuJkJhbmFuYXMiLCAyKQotICAgOmlmIGNob2ljZSA9PSAwCi0gICA6CWVjaG8gIm1ha2UgdXAgeW91ciBtaW5kISIKLSAgIDplbHNlaWYgY2hvaWNlID09IDMKLSAgIDoJZWNobyAidGFzdGVmdWwiCi0gICA6ZWxzZQotICAgOgllY2hvICJJIHByZWZlciBiYW5hbmFzIG15c2VsZi4iCi0gICA6ZW5kaWYKLTwJCUluIGEgR1VJIGRpYWxvZywgYnV0dG9ucyBhcmUgdXNlZC4gIFRoZSBsYXlvdXQgb2YgdGhlIGJ1dHRvbnMKLQkJZGVwZW5kcyBvbiB0aGUgJ3YnIGZsYWcgaW4gJ2d1aW9wdGlvbnMnLiAgSWYgaXQgaXMgaW5jbHVkZWQsCi0JCXRoZSBidXR0b25zIGFyZSBhbHdheXMgcHV0IHZlcnRpY2FsbHkuICBPdGhlcndpc2UsICBjb25maXJtKCkKLQkJdHJpZXMgdG8gcHV0IHRoZSBidXR0b25zIGluIG9uZSBob3Jpem9udGFsIGxpbmUuICBJZiB0aGV5Ci0JCWRvbid0IGZpdCwgYSB2ZXJ0aWNhbCBsYXlvdXQgaXMgdXNlZCBhbnl3YXkuICBGb3Igc29tZSBzeXN0ZW1zCi0JCXRoZSBob3Jpem9udGFsIGxheW91dCBpcyBhbHdheXMgdXNlZC4KLQogY2hfY2FucmVhZCh7aGFuZGxlfSkJCQkJCQkqY2hfY2FucmVhZCgpKgogCQlSZXR1cm4gbm9uLXplcm8gd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gcmVhZCBmcm9tIHtoYW5kbGV9LgogCQl7aGFuZGxlfSBjYW4gYmUgYSBDaGFubmVsIG9yIGEgSm9iIHRoYXQgaGFzIGEgQ2hhbm5lbC4KQEAgLTMxOTYsNiArMzAyOSwxNzYgQEAKIAkJImVyciIuICBGb3IgZXhhbXBsZSwgdG8gZ2V0IHRoZSBlcnJvciBzdGF0dXM6ID4KIAkJCWNoX3N0YXR1cyhqb2IsIHsicGFydCI6ICJlcnIifSkKIDwKK2NoYW5nZW5yKCkJCQkJCQkqY2hhbmdlbnIoKSoKKwkJUmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIG1vc3QgcmVjZW50IGNoYW5nZS4gIFRoaXMgaXMgdGhlIHNhbWUKKwkJbnVtYmVyIGFzIHdoYXQgaXMgZGlzcGxheWVkIHdpdGggfDp1bmRvbGlzdHwgYW5kIGNhbiBiZSB1c2VkCisJCXdpdGggdGhlIHw6dW5kb3wgY29tbWFuZC4KKwkJV2hlbiBhIGNoYW5nZSB3YXMgbWFkZSBpdCBpcyB0aGUgbnVtYmVyIG9mIHRoYXQgY2hhbmdlLiAgQWZ0ZXIKKwkJcmVkbyBpdCBpcyB0aGUgbnVtYmVyIG9mIHRoZSByZWRvbmUgY2hhbmdlLiAgQWZ0ZXIgdW5kbyBpdCBpcworCQlvbmUgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgdGhlIHVuZG9uZSBjaGFuZ2UuCisKK2NoYXIybnIoe2V4cHJ9Wywge3V0Zjh9XSkJCQkJCSpjaGFyMm5yKCkqCisJCVJldHVybiBudW1iZXIgdmFsdWUgb2YgdGhlIGZpcnN0IGNoYXIgaW4ge2V4cHJ9LiAgRXhhbXBsZXM6ID4KKwkJCWNoYXIybnIoIiAiKQkJcmV0dXJucyAzMgorCQkJY2hhcjJucigiQUJDIikJCXJldHVybnMgNjUKKzwJCVdoZW4ge3V0Zjh9IGlzIG9taXR0ZWQgb3IgemVybywgdGhlIGN1cnJlbnQgJ2VuY29kaW5nJyBpcyB1c2VkLgorCQlFeGFtcGxlIGZvciAidXRmLTgiOiA+CisJCQljaGFyMm5yKCLhIikJCXJldHVybnMgMjI1CisJCQljaGFyMm5yKCLhIlswXSkJCXJldHVybnMgMTk1Cis8CQlXaXRoIHt1dGY4fSBzZXQgdG8gMSwgYWx3YXlzIHRyZWF0IGFzIHV0Zi04IGNoYXJhY3RlcnMuCisJCUEgY29tYmluaW5nIGNoYXJhY3RlciBpcyBhIHNlcGFyYXRlIGNoYXJhY3Rlci4KKwkJfG5yMmNoYXIoKXwgZG9lcyB0aGUgb3Bwb3NpdGUuCisKK2NpbmRlbnQoe2xudW19KQkJCQkJCSpjaW5kZW50KCkqCisJCUdldCB0aGUgYW1vdW50IG9mIGluZGVudCBmb3IgbGluZSB7bG51bX0gYWNjb3JkaW5nIHRoZSBDCisJCWluZGVudGluZyBydWxlcywgYXMgd2l0aCAnY2luZGVudCcuCisJCVRoZSBpbmRlbnQgaXMgY291bnRlZCBpbiBzcGFjZXMsIHRoZSB2YWx1ZSBvZiAndGFic3RvcCcgaXMKKwkJcmVsZXZhbnQuICB7bG51bX0gaXMgdXNlZCBqdXN0IGxpa2UgaW4gfGdldGxpbmUoKXwuCisJCVdoZW4ge2xudW19IGlzIGludmFsaWQgb3IgVmltIHdhcyBub3QgY29tcGlsZWQgdGhlIHwrY2luZGVudHwKKwkJZmVhdHVyZSwgLTEgaXMgcmV0dXJuZWQuCisJCVNlZSB8Qy1pbmRlbnRpbmd8LgorCitjbGVhcm1hdGNoZXMoKQkJCQkJCSpjbGVhcm1hdGNoZXMoKSoKKwkJQ2xlYXJzIGFsbCBtYXRjaGVzIHByZXZpb3VzbHkgZGVmaW5lZCBieSB8bWF0Y2hhZGQoKXwgYW5kIHRoZQorCQl8Om1hdGNofCBjb21tYW5kcy4KKworCQkJCQkJCSpjb2woKSoKK2NvbCh7ZXhwcn0pCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGlzIHRoZSBieXRlIGluZGV4IG9mIHRoZSBjb2x1bW4KKwkJcG9zaXRpb24gZ2l2ZW4gd2l0aCB7ZXhwcn0uICBUaGUgYWNjZXB0ZWQgcG9zaXRpb25zIGFyZToKKwkJICAgIC4JICAgIHRoZSBjdXJzb3IgcG9zaXRpb24KKwkJICAgICQJICAgIHRoZSBlbmQgb2YgdGhlIGN1cnNvciBsaW5lICh0aGUgcmVzdWx0IGlzIHRoZQorCQkJICAgIG51bWJlciBvZiBieXRlcyBpbiB0aGUgY3Vyc29yIGxpbmUgcGx1cyBvbmUpCisJCSAgICAneAkgICAgcG9zaXRpb24gb2YgbWFyayB4IChpZiB0aGUgbWFyayBpcyBub3Qgc2V0LCAwIGlzCisJCQkgICAgcmV0dXJuZWQpCisJCSAgICB2ICAgICAgIEluIFZpc3VhbCBtb2RlOiB0aGUgc3RhcnQgb2YgdGhlIFZpc3VhbCBhcmVhICh0aGUKKwkJCSAgICBjdXJzb3IgaXMgdGhlIGVuZCkuICBXaGVuIG5vdCBpbiBWaXN1YWwgbW9kZQorCQkJICAgIHJldHVybnMgdGhlIGN1cnNvciBwb3NpdGlvbi4gIERpZmZlcnMgZnJvbSB8Jzx8IGluCisJCQkgICAgdGhhdCBpdCdzIHVwZGF0ZWQgcmlnaHQgYXdheS4KKwkJQWRkaXRpb25hbGx5IHtleHByfSBjYW4gYmUgW2xudW0sIGNvbF06IGEgfExpc3R8IHdpdGggdGhlIGxpbmUKKwkJYW5kIGNvbHVtbiBudW1iZXIuIE1vc3QgdXNlZnVsIHdoZW4gdGhlIGNvbHVtbiBpcyAiJCIsIHRvIGdldAorCQl0aGUgbGFzdCBjb2x1bW4gb2YgYSBzcGVjaWZpYyBsaW5lLiAgV2hlbiAibG51bSIgb3IgImNvbCIgaXMKKwkJb3V0IG9mIHJhbmdlIHRoZW4gY29sKCkgcmV0dXJucyB6ZXJvLgorCQlUbyBnZXQgdGhlIGxpbmUgbnVtYmVyIHVzZSB8bGluZSgpfC4gIFRvIGdldCBib3RoIHVzZQorCQl8Z2V0cG9zKCl8LgorCQlGb3IgdGhlIHNjcmVlbiBjb2x1bW4gcG9zaXRpb24gdXNlIHx2aXJ0Y29sKCl8LgorCQlOb3RlIHRoYXQgb25seSBtYXJrcyBpbiB0aGUgY3VycmVudCBmaWxlIGNhbiBiZSB1c2VkLgorCQlFeGFtcGxlczogPgorCQkJY29sKCIuIikJCWNvbHVtbiBvZiBjdXJzb3IKKwkJCWNvbCgiJCIpCQlsZW5ndGggb2YgY3Vyc29yIGxpbmUgcGx1cyBvbmUKKwkJCWNvbCgiJ3QiKQkJY29sdW1uIG9mIG1hcmsgdAorCQkJY29sKCInIiAuIG1hcmtuYW1lKQljb2x1bW4gb2YgbWFyayBtYXJrbmFtZQorPAkJVGhlIGZpcnN0IGNvbHVtbiBpcyAxLiAgMCBpcyByZXR1cm5lZCBmb3IgYW4gZXJyb3IuCisJCUZvciBhbiB1cHBlcmNhc2UgbWFyayB0aGUgY29sdW1uIG1heSBhY3R1YWxseSBiZSBpbiBhbm90aGVyCisJCWJ1ZmZlci4KKwkJRm9yIHRoZSBjdXJzb3IgcG9zaXRpb24sIHdoZW4gJ3ZpcnR1YWxlZGl0JyBpcyBhY3RpdmUsIHRoZQorCQljb2x1bW4gaXMgb25lIGhpZ2hlciBpZiB0aGUgY3Vyc29yIGlzIGFmdGVyIHRoZSBlbmQgb2YgdGhlCisJCWxpbmUuICBUaGlzIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aGUgY29sdW1uIGluIEluc2VydCBtb2RlOiA+CisJCQk6aW1hcCA8RjI+IDxDLU8+OmxldCBzYXZlX3ZlID0gJnZlPENSPgorCQkJCVw8Qy1PPjpzZXQgdmU9YWxsPENSPgorCQkJCVw8Qy1PPjplY2hvIGNvbCgiLiIpIC4gIlxuIiA8QmFyPgorCQkJCVxsZXQgJnZlID0gc2F2ZV92ZTxDUj4KKzwKKworY29tcGxldGUoe3N0YXJ0Y29sfSwge21hdGNoZXN9KQkJCSpjb21wbGV0ZSgpKiAqRTc4NSoKKwkJU2V0IHRoZSBtYXRjaGVzIGZvciBJbnNlcnQgbW9kZSBjb21wbGV0aW9uLgorCQlDYW4gb25seSBiZSB1c2VkIGluIEluc2VydCBtb2RlLiAgWW91IG5lZWQgdG8gdXNlIGEgbWFwcGluZworCQl3aXRoIENUUkwtUiA9IChzZWUgfGlfQ1RSTC1SfCkuICBJdCBkb2VzIG5vdCB3b3JrIGFmdGVyIENUUkwtTworCQlvciB3aXRoIGFuIGV4cHJlc3Npb24gbWFwcGluZy4KKwkJe3N0YXJ0Y29sfSBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIGxpbmUgd2hlcmUgdGhlIGNvbXBsZXRlZAorCQl0ZXh0IHN0YXJ0LiAgVGhlIHRleHQgdXAgdG8gdGhlIGN1cnNvciBpcyB0aGUgb3JpZ2luYWwgdGV4dAorCQl0aGF0IHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIG1hdGNoZXMuICBVc2UgY29sKCcuJykgZm9yIGFuCisJCWVtcHR5IHN0cmluZy4gICJjb2woJy4nKSAtIDEiIHdpbGwgcmVwbGFjZSBvbmUgY2hhcmFjdGVyIGJ5IGEKKwkJbWF0Y2guCisJCXttYXRjaGVzfSBtdXN0IGJlIGEgfExpc3R8LiAgRWFjaCB8TGlzdHwgaXRlbSBpcyBvbmUgbWF0Y2guCisJCVNlZSB8Y29tcGxldGUtaXRlbXN8IGZvciB0aGUga2luZCBvZiBpdGVtcyB0aGF0IGFyZSBwb3NzaWJsZS4KKwkJTm90ZSB0aGF0IHRoZSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24geW91IG5lZWQgdG8gYXZvaWQKKwkJaW5zZXJ0aW5nIGFueXRoaW5nIHRoYXQgd291bGQgY2F1c2UgY29tcGxldGlvbiB0byBzdG9wLgorCQlUaGUgbWF0Y2ggY2FuIGJlIHNlbGVjdGVkIHdpdGggQ1RSTC1OIGFuZCBDVFJMLVAgYXMgdXN1YWwgd2l0aAorCQlJbnNlcnQgbW9kZSBjb21wbGV0aW9uLiAgVGhlIHBvcHVwIG1lbnUgd2lsbCBhcHBlYXIgaWYKKwkJc3BlY2lmaWVkLCBzZWUgfGlucy1jb21wbGV0aW9uLW1lbnV8LgorCQlFeGFtcGxlOiA+CisJaW5vcmVtYXAgPEY1PiA8Qy1SPj1MaXN0TW9udGhzKCk8Q1I+CisKKwlmdW5jISBMaXN0TW9udGhzKCkKKwkgIGNhbGwgY29tcGxldGUoY29sKCcuJyksIFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsCisJCVwgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsCisJCVwgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXSkKKwkgIHJldHVybiAnJworCWVuZGZ1bmMKKzwJCVRoaXMgaXNuJ3QgdmVyeSB1c2VmdWwsIGJ1dCBpdCBzaG93cyBob3cgaXQgd29ya3MuICBOb3RlIHRoYXQKKwkJYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIHRvIGF2b2lkIGEgemVybyBiZWluZyBpbnNlcnRlZC4KKworY29tcGxldGVfYWRkKHtleHByfSkJCQkJKmNvbXBsZXRlX2FkZCgpKgorCQlBZGQge2V4cHJ9IHRvIHRoZSBsaXN0IG9mIG1hdGNoZXMuICBPbmx5IHRvIGJlIHVzZWQgYnkgdGhlCisJCWZ1bmN0aW9uIHNwZWNpZmllZCB3aXRoIHRoZSAnY29tcGxldGVmdW5jJyBvcHRpb24uCisJCVJldHVybnMgMCBmb3IgZmFpbHVyZSAoZW1wdHkgc3RyaW5nIG9yIG91dCBvZiBtZW1vcnkpLAorCQkxIHdoZW4gdGhlIG1hdGNoIHdhcyBhZGRlZCwgMiB3aGVuIHRoZSBtYXRjaCB3YXMgYWxyZWFkeSBpbgorCQl0aGUgbGlzdC4KKwkJU2VlIHxjb21wbGV0ZS1mdW5jdGlvbnN8IGZvciBhbiBleHBsYW5hdGlvbiBvZiB7ZXhwcn0uICBJdCBpcworCQl0aGUgc2FtZSBhcyBvbmUgaXRlbSBpbiB0aGUgbGlzdCB0aGF0ICdvbW5pZnVuYycgd291bGQgcmV0dXJuLgorCitjb21wbGV0ZV9jaGVjaygpCQkJCSpjb21wbGV0ZV9jaGVjaygpKgorCQlDaGVjayBmb3IgYSBrZXkgdHlwZWQgd2hpbGUgbG9va2luZyBmb3IgY29tcGxldGlvbiBtYXRjaGVzLgorCQlUaGlzIGlzIHRvIGJlIHVzZWQgd2hlbiBsb29raW5nIGZvciBtYXRjaGVzIHRha2VzIHNvbWUgdGltZS4KKwkJUmV0dXJucyB8VFJVRXwgd2hlbiBzZWFyY2hpbmcgZm9yIG1hdGNoZXMgaXMgdG8gYmUgYWJvcnRlZCwKKwkJemVybyBvdGhlcndpc2UuCisJCU9ubHkgdG8gYmUgdXNlZCBieSB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIHdpdGggdGhlCisJCSdjb21wbGV0ZWZ1bmMnIG9wdGlvbi4KKworCQkJCQkJKmNvbmZpcm0oKSoKK2NvbmZpcm0oe21zZ30gWywge2Nob2ljZXN9IFssIHtkZWZhdWx0fSBbLCB7dHlwZX1dXV0pCisJCUNvbmZpcm0oKSBvZmZlcnMgdGhlIHVzZXIgYSBkaWFsb2csIGZyb20gd2hpY2ggYSBjaG9pY2UgY2FuIGJlCisJCW1hZGUuICBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGNob2ljZS4gIEZvciB0aGUgZmlyc3QKKwkJY2hvaWNlIHRoaXMgaXMgMS4KKwkJTm90ZTogY29uZmlybSgpIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gY29tcGlsZWQgd2l0aCBkaWFsb2cKKwkJc3VwcG9ydCwgc2VlIHwrZGlhbG9nX2NvbnwgYW5kIHwrZGlhbG9nX2d1aXwuCisKKwkJe21zZ30gaXMgZGlzcGxheWVkIGluIGEgfGRpYWxvZ3wgd2l0aCB7Y2hvaWNlc30gYXMgdGhlCisJCWFsdGVybmF0aXZlcy4gIFdoZW4ge2Nob2ljZXN9IGlzIG1pc3Npbmcgb3IgZW1wdHksICImT0siIGlzCisJCXVzZWQgKGFuZCB0cmFuc2xhdGVkKS4KKwkJe21zZ30gaXMgYSBTdHJpbmcsIHVzZSAnXG4nIHRvIGluY2x1ZGUgYSBuZXdsaW5lLiAgT25seSBvbgorCQlzb21lIHN5c3RlbXMgdGhlIHN0cmluZyBpcyB3cmFwcGVkIHdoZW4gaXQgZG9lc24ndCBmaXQuCisKKwkJe2Nob2ljZXN9IGlzIGEgU3RyaW5nLCB3aXRoIHRoZSBpbmRpdmlkdWFsIGNob2ljZXMgc2VwYXJhdGVkCisJCWJ5ICdcbicsIGUuZy4gPgorCQkJY29uZmlybSgiU2F2ZSBjaGFuZ2VzPyIsICImWWVzXG4mTm9cbiZDYW5jZWwiKQorPAkJVGhlIGxldHRlciBhZnRlciB0aGUgJyYnIGlzIHRoZSBzaG9ydGN1dCBrZXkgZm9yIHRoYXQgY2hvaWNlLgorCQlUaHVzIHlvdSBjYW4gdHlwZSAnYycgdG8gc2VsZWN0ICJDYW5jZWwiLiAgVGhlIHNob3J0Y3V0IGRvZXMKKwkJbm90IG5lZWQgdG8gYmUgdGhlIGZpcnN0IGxldHRlcjogPgorCQkJY29uZmlybSgiZmlsZSBoYXMgYmVlbiBtb2RpZmllZCIsICImU2F2ZVxuU2F2ZSAmQWxsIikKKzwJCUZvciB0aGUgY29uc29sZSwgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIGNob2ljZSBpcyB1c2VkIGFzCisJCXRoZSBkZWZhdWx0IHNob3J0Y3V0IGtleS4KKworCQlUaGUgb3B0aW9uYWwge2RlZmF1bHR9IGFyZ3VtZW50IGlzIHRoZSBudW1iZXIgb2YgdGhlIGNob2ljZQorCQl0aGF0IGlzIG1hZGUgaWYgdGhlIHVzZXIgaGl0cyA8Q1I+LiAgVXNlIDEgdG8gbWFrZSB0aGUgZmlyc3QKKwkJY2hvaWNlIHRoZSBkZWZhdWx0IG9uZS4gIFVzZSAwIHRvIG5vdCBzZXQgYSBkZWZhdWx0LiAgSWYKKwkJe2RlZmF1bHR9IGlzIG9taXR0ZWQsIDEgaXMgdXNlZC4KKworCQlUaGUgb3B0aW9uYWwge3R5cGV9IGFyZ3VtZW50IGdpdmVzIHRoZSB0eXBlIG9mIGRpYWxvZy4gIFRoaXMKKwkJaXMgb25seSB1c2VkIGZvciB0aGUgaWNvbiBvZiB0aGUgR1RLLCBNYWMsIE1vdGlmIGFuZCBXaW4zMgorCQlHVUkuICBJdCBjYW4gYmUgb25lIG9mIHRoZXNlIHZhbHVlczogIkVycm9yIiwgIlF1ZXN0aW9uIiwKKwkJIkluZm8iLCAiV2FybmluZyIgb3IgIkdlbmVyaWMiLiAgT25seSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzCisJCXJlbGV2YW50LiAgV2hlbiB7dHlwZX0gaXMgb21pdHRlZCwgIkdlbmVyaWMiIGlzIHVzZWQuCisKKwkJSWYgdGhlIHVzZXIgYWJvcnRzIHRoZSBkaWFsb2cgYnkgcHJlc3NpbmcgPEVzYz4sIENUUkwtQywKKwkJb3IgYW5vdGhlciB2YWxpZCBpbnRlcnJ1cHQga2V5LCBjb25maXJtKCkgcmV0dXJucyAwLgorCisJCUFuIGV4YW1wbGU6ID4KKyAgIDpsZXQgY2hvaWNlID0gY29uZmlybSgiV2hhdCBkbyB5b3Ugd2FudD8iLCAiJkFwcGxlc1xuJk9yYW5nZXNcbiZCYW5hbmFzIiwgMikKKyAgIDppZiBjaG9pY2UgPT0gMAorICAgOgllY2hvICJtYWtlIHVwIHlvdXIgbWluZCEiCisgICA6ZWxzZWlmIGNob2ljZSA9PSAzCisgICA6CWVjaG8gInRhc3RlZnVsIgorICAgOmVsc2UKKyAgIDoJZWNobyAiSSBwcmVmZXIgYmFuYW5hcyBteXNlbGYuIgorICAgOmVuZGlmCis8CQlJbiBhIEdVSSBkaWFsb2csIGJ1dHRvbnMgYXJlIHVzZWQuICBUaGUgbGF5b3V0IG9mIHRoZSBidXR0b25zCisJCWRlcGVuZHMgb24gdGhlICd2JyBmbGFnIGluICdndWlvcHRpb25zJy4gIElmIGl0IGlzIGluY2x1ZGVkLAorCQl0aGUgYnV0dG9ucyBhcmUgYWx3YXlzIHB1dCB2ZXJ0aWNhbGx5LiAgT3RoZXJ3aXNlLCAgY29uZmlybSgpCisJCXRyaWVzIHRvIHB1dCB0aGUgYnV0dG9ucyBpbiBvbmUgaG9yaXpvbnRhbCBsaW5lLiAgSWYgdGhleQorCQlkb24ndCBmaXQsIGEgdmVydGljYWwgbGF5b3V0IGlzIHVzZWQgYW55d2F5LiAgRm9yIHNvbWUgc3lzdGVtcworCQl0aGUgaG9yaXpvbnRhbCBsYXlvdXQgaXMgYWx3YXlzIHVzZWQuCisKIAkJCQkJCQkqY29weSgpKgogY29weSh7ZXhwcn0pCU1ha2UgYSBjb3B5IG9mIHtleHByfS4gIEZvciBOdW1iZXJzIGFuZCBTdHJpbmdzIHRoaXMgaXNuJ3QKIAkJZGlmZmVyZW50IGZyb20gdXNpbmcge2V4cHJ9IGRpcmVjdGx5LgpAQCAtMzQ1Miw3ICszNDU1LDcgQEAKIAkJCSIiCQlubyBgOnNpbGVudGAgdXNlZAogCQkJInNpbGVudCIJYDpzaWxlbnRgIHVzZWQKIAkJCSJzaWxlbnQhIglgOnNpbGVudCFgIHVzZWQKLQkJVGhlIGRlZmF1bHQgaXMgJ3NpbGVudCcuICBOb3RlIHRoYXQgd2l0aCAic2lsZW50ISIsIHVubGlrZQorCQlUaGUgZGVmYXVsdCBpcyAic2lsZW50Ii4gIE5vdGUgdGhhdCB3aXRoICJzaWxlbnQhIiwgdW5saWtlCiAJCWA6cmVkaXJgLCBlcnJvciBtZXNzYWdlcyBhcmUgZHJvcHBlZC4gIFdoZW4gdXNpbmcgYW4gZXh0ZXJuYWwKIAkJY29tbWFuZCB0aGUgc2NyZWVuIG1heSBiZSBtZXNzZWQgdXAsIHVzZSBgc3lzdGVtKClgIGluc3RlYWQuCiAJCQkJCQkJKkU5MzAqCkBAIC00MDU0LDEwICs0MDU3LDEwIEBACiBnZXQoe2Z1bmN9LCB7d2hhdH0pCiAJCUdldCBhbiBpdGVtIHdpdGggZnJvbSBGdW5jcmVmIHtmdW5jfS4gIFBvc3NpYmxlIHZhbHVlcyBmb3IKIAkJe3doYXR9IGFyZToKLQkJCSduYW1lJwlUaGUgZnVuY3Rpb24gbmFtZQotCQkJJ2Z1bmMnCVRoZSBmdW5jdGlvbgotCQkJJ2RpY3QnCVRoZSBkaWN0aW9uYXJ5Ci0JCQknYXJncycJVGhlIGxpc3Qgd2l0aCBhcmd1bWVudHMKKwkJCSJuYW1lIglUaGUgZnVuY3Rpb24gbmFtZQorCQkJImZ1bmMiCVRoZSBmdW5jdGlvbgorCQkJImRpY3QiCVRoZSBkaWN0aW9uYXJ5CisJCQkiYXJncyIJVGhlIGxpc3Qgd2l0aCBhcmd1bWVudHMKIAogCQkJCQkJCSpnZXRidWZpbmZvKCkqCiBnZXRidWZpbmZvKFt7ZXhwcn1dKQpAQCAtNzczNSw3ICs3NzM4LDcgQEAKIAkJbWF5IGFwcGVhciwgdGhleSBnaXZlIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgdGhlIHRhZyBpcwogCQljb250YWluZWQgaW4uCiAKLQkJVGhlIGV4LWNvbW1hbmQgJ2NtZCcgY2FuIGJlIGVpdGhlciBhbiBleCBzZWFyY2ggcGF0dGVybiwgYQorCQlUaGUgZXgtY29tbWFuZCAiY21kIiBjYW4gYmUgZWl0aGVyIGFuIGV4IHNlYXJjaCBwYXR0ZXJuLCBhCiAJCWxpbmUgbnVtYmVyIG9yIGEgbGluZSBudW1iZXIgZm9sbG93ZWQgYnkgYSBieXRlIG51bWJlci4KIAogCQlJZiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgdGFncywgdGhlbiBhbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZm9sZC50eHQgYi9ydW50aW1lL2RvYy9mb2xkLnR4dAppbmRleCA2YTk5NDg4Li5jM2Y0MTMyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9mb2xkLnR4dAorKysgYi9ydW50aW1lL2RvYy9mb2xkLnR4dApAQCAtNjQsNyArNjQsNyBAQAogd2l0aCBhIGNoYXJhY3RlciBpbiAnZm9sZGlnbm9yZScuICBXaGl0ZSBzcGFjZSBpcyBza2lwcGVkIGJlZm9yZSBjaGVja2luZyBmb3IKIGNoYXJhY3RlcnMgaW4gJ2ZvbGRpZ25vcmUnLiAgRm9yIEMgdXNlICIjIiB0byBpZ25vcmUgcHJlcHJvY2Vzc29yIGxpbmVzLgogCi1XaGVuIHlvdSB3YW50IHRvIGlnbm9yZSBsaW5lcyBpbiBhbm90aGVyIHdheSwgdXNlIHRoZSAnZXhwcicgbWV0aG9kLiAgVGhlCitXaGVuIHlvdSB3YW50IHRvIGlnbm9yZSBsaW5lcyBpbiBhbm90aGVyIHdheSwgdXNlIHRoZSAiZXhwciIgbWV0aG9kLiAgVGhlCiB8aW5kZW50KCl8IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluICdmb2xkZXhwcicgdG8gZ2V0IHRoZSBpbmRlbnQgb2YgYSBsaW5lLgogCiAKQEAgLTEzOSw3ICsxMzksNyBAQAogeWV0LiAgQW5kIGl0IHJldHVybnMgdGhlIGxldmVsIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSwgd2hpbGUgYSBmb2xkIG1pZ2h0CiBlbmQgaW4gdGhhdCBsaW5lLgogCi1JdCBtYXkgaGFwcGVuZWQgdGhhdCBmb2xkcyBhcmUgbm90IHVwZGF0ZWQgcHJvcGVybHkuICBZb3UgY2FuIHVzZSB8enh8IG9yIHx6WHwKK0l0IG1heSBoYXBwZW4gdGhhdCBmb2xkcyBhcmUgbm90IHVwZGF0ZWQgcHJvcGVybHkuICBZb3UgY2FuIHVzZSB8enh8IG9yIHx6WHwKIHRvIGZvcmNlIHVwZGF0aW5nIGZvbGRzLgogCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hhbmd1bGluLnR4dCBiL3J1bnRpbWUvZG9jL2hhbmd1bGluLnR4dAppbmRleCA0MDkwMWE2Li4wMDkyNTAxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9oYW5ndWxpbi50eHQKKysrIGIvcnVudGltZS9kb2MvaGFuZ3VsaW4udHh0CkBAIC04MSw4ICs4MSw4IEBACiAnOnNldCBndWlmb250c2V0Jy4gIEl0IG1lYW5zIFZJTSBydW5zIHdpdGhvdXQgZm9udHNldCBzdXBwb3J0aW5nLgogU28sIHlvdSBjYW4gc2VlIG9ubHkgRW5nbGlzaC4gIEhhbmd1bCBkb2VzIG5vdCBiZSBjb3JyZWN0bHkgZGlzcGxheWVkLgogCi1BZnRlciAnZm9udHNldCcgZmVhdHVyZSBpcyBlbmFibGVkLCBWSU0gZG9lcyBub3QgYWxsb3cgdXNpbmcgZW5nbGlzaAotZm9udCBvbmx5IGluICdmb250JyBzZXR0aW5nIGZvciBzeW50YXguCitBZnRlciAiZm9udHNldCIgZmVhdHVyZSBpcyBlbmFibGVkLCBWSU0gZG9lcyBub3QgYWxsb3cgdXNpbmcgZW5nbGlzaAorZm9udCBvbmx5IGluICJmb250IiBzZXR0aW5nIGZvciBzeW50YXguCiBGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSA+CiAgICA6c2V0IGd1aWZvbnRzZXQ9ZW5nX2ZvbnQseW91cl9mb250CiBpbiB5b3VyIC5ndmltcmMsIHRoZW4geW91IHNob3VsZCBkbyBmb3Igc3ludGF4ID4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hlbHBoZWxwLnR4dCBiL3J1bnRpbWUvZG9jL2hlbHBoZWxwLnR4dAppbmRleCAzMjA1MWQ0Li4yMGYxZWQ4IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9oZWxwaGVscC50eHQKKysrIGIvcnVudGltZS9kb2MvaGVscGhlbHAudHh0CkBAIC0zMTQsNyArMzE0LDcgQEAKIGRhdGUgb2YgdGhlIGZpbGUuICBFYWNoIGZpZWxkIGlzIHNlcGFyYXRlZCBieSBhIHRhYi4KIAogQXQgdGhlIGJvdHRvbSBvZiB0aGUgaGVscCBmaWxlLCBwbGFjZSBhIFZpbSBtb2RlbGluZSB0byBzZXQgdGhlICd0ZXh0d2lkdGgnCi1hbmQgJ3RhYnN0b3AnIG9wdGlvbnMgYW5kIHRoZSAnZmlsZXR5cGUnIHRvICdoZWxwJy4gIE5ldmVyIHNldCBhIGdsb2JhbCBvcHRpb24KK2FuZCAndGFic3RvcCcgb3B0aW9ucyBhbmQgdGhlICdmaWxldHlwZScgdG8gImhlbHAiLiAgTmV2ZXIgc2V0IGEgZ2xvYmFsIG9wdGlvbgogaW4gc3VjaCBhIG1vZGVsaW5lLCB0aGF0IGNhbiBoYXZlIGNvbnNlcXVlbmNlcyB1bmRlc2lyZWQgYnkgd2hvZXZlciByZWFkcyB0aGF0CiBoZWxwLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9weXRoLnR4dCBiL3J1bnRpbWUvZG9jL2lmX3B5dGgudHh0CmluZGV4IDRmOWVjYmQuLjBiZThhMzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX3B5dGgudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX3B5dGgudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3B5dGgudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBGZWIgMTcKKyppZl9weXRoLnR4dCogICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTcgRmViIDE4CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IFBhdWwgTW9vcmUKQEAgLTE3NCw4ICsxNzQsOCBAQAogCiAJICAgIDpweSB0YWdMaXN0ID0gdmltLmV2YWwoJ3RhZ2xpc3QoImV2YWxfZXhwciIpJykKIDwJVGhlIGxhdHRlciB3aWxsIHJldHVybiBhIHB5dGhvbiBsaXN0IG9mIHB5dGhvbiBkaWN0cywgZm9yIGluc3RhbmNlOgotCVt7J2NtZCc6ICcvXmV2YWxfZXhwcihhcmcsIG5leHRjbWQpJC8nLCAnc3RhdGljJzogMCwgJ25hbWUnOgotCSdldmFsX2V4cHInLCAna2luZCc6ICdmJywgJ2ZpbGVuYW1lJzogJy4vc3JjL2V2YWwuYyd9XQorCVt7J2NtZCc6ICcvXmV2YWxfZXhwcihhcmcsIG5leHRjbWQpJC8nLCAnc3RhdGljJzogMCwgJ25hbWUnOiB+CisJJ2V2YWxfZXhwcicsICdraW5kJzogJ2YnLCAnZmlsZW5hbWUnOiAnLi9zcmMvZXZhbC5jJ31dIH4KIAogdmltLmJpbmRldmFsKHN0cikJCQkJCSpweXRob24tYmluZGV2YWwqCiAJTGlrZSB8cHl0aG9uLWV2YWx8LCBidXQgcmV0dXJucyBzcGVjaWFsIG9iamVjdHMgZGVzY3JpYmVkIGluIApAQCAtODE5LDcgKzgxOSw3IEBACiAxMS4gUHl0aG9uIFgJCQkJCQkqcHl0aG9uX3gqICpweXRob254KgogCiBCZWNhdXNlIG1vc3QgcHl0aG9uIGNvZGUgY2FuIGJlIHdyaXR0ZW4gc28gdGhhdCBpdCB3b3JrcyB3aXRoIHB5dGhvbiAyLjYrIGFuZAotcHl0aG9uIDMgdGhlIHB5eCogZnVuY3Rpb25zIGFuZCBjb21tYW5kcyBoYXZlIGJlZW4gd3JpdGVuLiAgVGhleSB3b3JrIGV4YWN0bHkKK3B5dGhvbiAzIHRoZSBweXgqIGZ1bmN0aW9ucyBhbmQgY29tbWFuZHMgaGF2ZSBiZWVuIHdyaXR0ZW4uICBUaGV5IHdvcmsgZXhhY3RseQogdGhlIHNhbWUgYXMgdGhlIFB5dGhvbiAyIGFuZCAzIHZhcmlhbnRzLCBidXQgc2VsZWN0IHRoZSBQeXRob24gdmVyc2lvbiB1c2luZwogdGhlICdweXh2ZXJzaW9uJyBzZXR0aW5nLgogCkBAIC04NjcsNyArODY3LDcgQEAKIGl0IGlzIG5vdCBhdmFpbGFibGUgdGhlbiBQeXRob24gMi4gIElmICdweXh2ZXJzaW9uJyBpcyAyIG9yIDMsIGl0IHRlc3RzIG9ubHkKIFB5dGhvbiAyIG9yIDMgcmVzcGVjdGl2ZWx5LgogCi1Ob3RlIHRoYXQgZm9yIGhhcygncHl0aG9ueCcpIHRvIHdvcmsgaXQgbWF5IHRyeSB0byBkeW5hbWljYWxseSBsb2FkIFB5dGhvbiAzCitOb3RlIHRoYXQgZm9yIGBoYXMoJ3B5dGhvbngnKWAgdG8gd29yayBpdCBtYXkgdHJ5IHRvIGR5bmFtaWNhbGx5IGxvYWQgUHl0aG9uIDMKIG9yIDIuICBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywgZXNwZWNpYWxseSB3aGVuIFZpbSBjYW4gb25seSBsb2FkIG9uZSBvZgogdGhlIHR3by4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfcnVieS50eHQgYi9ydW50aW1lL2RvYy9pZl9ydWJ5LnR4dAppbmRleCBiMDBkZDQ1Li5mNzllY2MxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pZl9ydWJ5LnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9ydWJ5LnR4dApAQCAtNzIsNyArNzIsNyBAQAogCiAJCQkJCQkJKjpydWJ5ZmlsZSogKjpydWJ5ZioKIDpydWJ5ZltpbGVdIHtmaWxlfQlFeGVjdXRlIHRoZSBSdWJ5IHNjcmlwdCBpbiB7ZmlsZX0uICBUaGlzIGlzIHRoZSBzYW1lIGFzCi0JCQkiOnJ1YnkgbG9hZCAnZmlsZSciLCBidXQgYWxsb3dzIGZpbGUgbmFtZSBjb21wbGV0aW9uLgorCQkJYDpydWJ5IGxvYWQgJ2ZpbGUnYCwgYnV0IGFsbG93cyBmaWxlIG5hbWUgY29tcGxldGlvbi4KIAogRXhlY3V0aW5nIFJ1YnkgY29tbWFuZHMgaXMgbm90IHBvc3NpYmxlIGluIHRoZSB8c2FuZGJveHwuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2luZGV4LnR4dCBiL3J1bnRpbWUvZG9jL2luZGV4LnR4dAppbmRleCA4MWIyZWI2Li5mNTczZjM4IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbmRleC50eHQKKysrIGIvcnVudGltZS9kb2MvaW5kZXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluZGV4LnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNiBTZXAgMjcKKyppbmRleC50eHQqICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTcgRmViIDIzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMDA0LDEwICsxMDA0LDEyIEBACiB8Y188Q1I+fAk8Q1I+CQlleGVjdXRlIGVudGVyZWQgY29tbWFuZAogfGNfQ1RSTC1NfAlDVFJMLU0JCXNhbWUgYXMgPENSPgogfGNfQ1RSTC1OfAlDVFJMLU4JCWFmdGVyIHVzaW5nICd3aWxkY2hhcicgd2l0aCBtdWx0aXBsZSBtYXRjaGVzOgotCQkJCWdvIHRvIG5leHQgbWF0Y2gsIG90aGVyd2lzZTogc2FtZSBhcyA8RG93bj4KKwkJCQlnbyB0byBuZXh0IG1hdGNoLCBvdGhlcndpc2U6IHJlY2FsbCBvbGRlcgorCQkJCWNvbW1hbmQtbGluZSBmcm9tIGhpc3RvcnkuCiAJCUNUUkwtTwkJbm90IHVzZWQKIHxjX0NUUkwtUHwJQ1RSTC1QCQlhZnRlciB1c2luZyAnd2lsZGNoYXInIHdpdGggbXVsdGlwbGUgbWF0Y2hlczoKLQkJCQlnbyB0byBwcmV2aW91cyBtYXRjaCwgb3RoZXJ3aXNlOiBzYW1lIGFzIDxVcD4KKwkJCQlnbyB0byBwcmV2aW91cyBtYXRjaCwgb3RoZXJ3aXNlOiByZWNhbGwgb2xkZXIKKwkJCQljb21tYW5kLWxpbmUgZnJvbSBoaXN0b3J5LgogfGNfQ1RSTC1RfAlDVFJMLVEJCXNhbWUgYXMgQ1RSTC1WLCB1bmxlc3MgaXQncyB1c2VkIGZvciB0ZXJtaW5hbAogCQkJCWNvbnRyb2wgZmxvdwogfGNfQ1RSTC1SfAlDVFJMLVIgezAtOWEteiIlIyo6PSBDVFJMLUYgQ1RSTC1QIENUUkwtVyBDVFJMLUF9CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0IGIvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAppbmRleCBkMjk1OWRmLi43YWRhN2IwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKQEAgLTExMDMsNyArMTEwMyw3IEBACiAJZW1wdHkJCXdoZW4gbm9uLXplcm8gdGhpcyBtYXRjaCB3aWxsIGJlIGFkZGVkIGV2ZW4gd2hlbiBpdCBpcwogCQkJYW4gZW1wdHkgc3RyaW5nCiAKLUFsbCBvZiB0aGVzZSBleGNlcHQgJ2ljYXNlJywgJ2R1cCcgYW5kICdlbXB0eScgbXVzdCBiZSBhIHN0cmluZy4gIElmIGFuIGl0ZW0KK0FsbCBvZiB0aGVzZSBleGNlcHQgImljYXNlIiwgImR1cCIgYW5kICJlbXB0eSIgbXVzdCBiZSBhIHN0cmluZy4gIElmIGFuIGl0ZW0KIGRvZXMgbm90IG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzIHRoZW4gYW4gZXJyb3IgbWVzc2FnZSBpcyBnaXZlbiBhbmQgZnVydGhlcgogaXRlbXMgaW4gdGhlIGxpc3QgYXJlIG5vdCB1c2VkLiAgWW91IGNhbiBtaXggc3RyaW5nIGFuZCBEaWN0aW9uYXJ5IGl0ZW1zIGluCiB0aGUgcmV0dXJuZWQgbGlzdC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21sYW5nLnR4dCBiL3J1bnRpbWUvZG9jL21sYW5nLnR4dAppbmRleCBhYTlhOTRjLi4yZDI3OTEyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tbGFuZy50eHQKKysrIGIvcnVudGltZS9kb2MvbWxhbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1sYW5nLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNiBKYW4gMTYKKyptbGFuZy50eHQqICAgICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTcgTWFyIDA0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNzksNiArMTc5LDcgQEAKIAkJCXNwZWNpYWwgY2hhcmFjdGVycyBsaWtlICImIiBhbmQgIjxUYWI+IiBuZWVkIHRvIGJlCiAJCQlpbmNsdWRlZC4gIFNwYWNlcyBhbmQgZG90cyBuZWVkIHRvIGJlIGVzY2FwZWQgd2l0aCBhCiAJCQliYWNrc2xhc2gsIGp1c3QgbGlrZSBpbiBvdGhlciB8Om1lbnV8IGNvbW1hbmRzLgorCQkJQ2FzZSBpbiB7ZW5nbGlzaH0gaXMgaWdub3JlZC4KIAogU2VlIHRoZSAkVklNUlVOVElNRS9sYW5nIGRpcmVjdG9yeSBmb3IgZXhhbXBsZXMuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0IGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKaW5kZXggMjE1MjE1Zi4uOTFjODY0ZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBGZWIgMDkKKypvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE3IE1hciAwNQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMTIwLDYgKzExMjAsOSBAQAogICAgIHNldCBiZXhwcj1NeUJhbGxvb25FeHByKCkKICAgICBzZXQgYmFsbG9vbmV2YWwKIDwKKwlBbHNvIHNlZSB8YmFsbG9vbl9zaG93KCl8LCBjYW4gYmUgdXNlZCBpZiB0aGUgY29udGVudCBvZiB0aGUgYmFsbG9vbgorCWlzIHRvIGJlIGZldGNoZWQgYXN5bmNocm9ub3VzbHkuCisKIAlOT1RFOiBUaGUgYmFsbG9vbiBpcyBkaXNwbGF5ZWQgb25seSBpZiB0aGUgY3Vyc29yIGlzIG9uIGEgdGV4dAogCWNoYXJhY3Rlci4gIElmIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyAnYmFsbG9vbmV4cHInIGlzIG5vdCBlbXB0eSwKIAlWaW0gZG9lcyBub3QgdHJ5IHRvIHNlbmQgYSBtZXNzYWdlIHRvIGFuIGV4dGVybmFsIGRlYnVnZ2VyIChOZXRiZWFucwpAQCAtMTcwMiwxMiArMTcwNSwxNCBAQAogCQkJe25vdCBpbiBWaX0KIAlUaGlzIG9wdGlvbiBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgVmltIGVpdGhlciBtb3JlIFZpLWNvbXBhdGlibGUsIG9yCiAJbWFrZSBWaW0gYmVoYXZlIGluIGEgbW9yZSB1c2VmdWwgd2F5LgorCiAJVGhpcyBpcyBhIHNwZWNpYWwga2luZCBvZiBvcHRpb24sIGJlY2F1c2Ugd2hlbiBpdCdzIHNldCBvciByZXNldCwKLQlvdGhlciBvcHRpb25zIGFyZSBhbHNvIGNoYW5nZWQgYXMgYSBzaWRlIGVmZmVjdC4gIENBUkVGVUw6IFNldHRpbmcgb3IKLQlyZXNldHRpbmcgdGhpcyBvcHRpb24gY2FuIGhhdmUgYSBsb3Qgb2YgdW5leHBlY3RlZCBlZmZlY3RzOiBNYXBwaW5ncwotCWFyZSBpbnRlcnByZXRlZCBpbiBhbm90aGVyIHdheSwgdW5kbyBiZWhhdmVzIGRpZmZlcmVudGx5LCBldGMuICBJZiB5b3UKLQlzZXQgdGhpcyBvcHRpb24gaW4geW91ciB2aW1yYyBmaWxlLCB5b3Ugc2hvdWxkIHByb2JhYmx5IHB1dCBpdCBhdCB0aGUKLQl2ZXJ5IHN0YXJ0LgorCW90aGVyIG9wdGlvbnMgYXJlIGFsc28gY2hhbmdlZCBhcyBhIHNpZGUgZWZmZWN0LgorCU5PVEU6IFNldHRpbmcgb3IgcmVzZXR0aW5nIHRoaXMgb3B0aW9uIGNhbiBoYXZlIGEgbG90IG9mIHVuZXhwZWN0ZWQKKwllZmZlY3RzOiBNYXBwaW5ncyBhcmUgaW50ZXJwcmV0ZWQgaW4gYW5vdGhlciB3YXksIHVuZG8gYmVoYXZlcworCWRpZmZlcmVudGx5LCBldGMuICBJZiB5b3Ugc2V0IHRoaXMgb3B0aW9uIGluIHlvdXIgdmltcmMgZmlsZSwgeW91CisJc2hvdWxkIHByb2JhYmx5IHB1dCBpdCBhdCB0aGUgdmVyeSBzdGFydC4KKwogCUJ5IGRlZmF1bHQgdGhpcyBvcHRpb24gaXMgb24gYW5kIHRoZSBWaSBkZWZhdWx0cyBhcmUgdXNlZCBmb3IgdGhlCiAJb3B0aW9ucy4gIFRoaXMgZGVmYXVsdCB3YXMgY2hvc2VuIGZvciB0aG9zZSBwZW9wbGUgd2hvIHdhbnQgdG8gdXNlIFZpbQogCWp1c3QgbGlrZSBWaSwgYW5kIGRvbid0IGV2ZW4gKHdhbnQgdG8pIGtub3cgYWJvdXQgdGhlICdjb21wYXRpYmxlJwpAQCAtMTcyMiw3MCArMTcyNyw5OCBAQAogCXxwb3NpeC1jb21wbGlhbmNlfC4KIAlZb3UgY2FuIGFsc28gc2V0IHRoaXMgb3B0aW9uIHdpdGggdGhlICItQyIgYXJndW1lbnQsIGFuZCByZXNldCBpdCB3aXRoCiAJIi1OIi4gIFNlZSB8LUN8IGFuZCB8LU58LgotCVN3aXRjaGluZyB0aGlzIG9wdGlvbiBvZmYgbWFrZXMgdGhlIFZpbSBkZWZhdWx0cyBiZSB1c2VkIGZvciBvcHRpb25zCi0JdGhhdCBoYXZlIGEgZGlmZmVyZW50IFZpIGFuZCBWaW0gZGVmYXVsdCB2YWx1ZS4gIFNlZSB0aGUgb3B0aW9ucwotCW1hcmtlZCB3aXRoIGEgJysnIGJlbG93LiAgT3RoZXIgb3B0aW9ucyBhcmUgbm90IG1vZGlmaWVkLgotCUF0IHRoZSBtb21lbnQgdGhpcyBvcHRpb24gaXMgc2V0LCBzZXZlcmFsIG90aGVyIG9wdGlvbnMgd2lsbCBiZSBzZXQKLQlvciByZXNldCB0byBtYWtlIFZpbSBhcyBWaS1jb21wYXRpYmxlIGFzIHBvc3NpYmxlLiAgU2VlIHRoZSB0YWJsZQotCWJlbG93LiAgVGhpcyBjYW4gYmUgdXNlZCBpZiB5b3Ugd2FudCB0byByZXZlcnQgdG8gVmkgY29tcGF0aWJsZQotCWVkaXRpbmcuCi0JU2VlIGFsc28gJ2Nwb3B0aW9ucycuCisJU2VlICdjcG9wdGlvbnMnIGZvciBtb3JlIGZpbmUgdHVuaW5nIG9mIFZpIGNvbXBhdGliaWxpdHkuCiAKLQlvcHRpb24JCSsgc2V0IHZhbHVlCWVmZmVjdAl+CisJV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQsIG51bWVyb3VzIG90aGVyIG9wdGlvbnMgYXJlIHNldCB0byBtYWtlIFZpbSBhcworCVZpLWNvbXBhdGlibGUgYXMgcG9zc2libGUuICBXaGVuIHRoaXMgb3B0aW9uIGlzIHVuc2V0LCB2YXJpb3VzIG9wdGlvbnMKKwlhcmUgc2V0IHRvIG1ha2UgVmltIG1vcmUgdXNlZnVsLiAgVGhlIHRhYmxlIGJlbG93IGxpc3RzIGFsbCB0aGUKKwlvcHRpb25zIGFmZmVjdGVkLgorCVRoZSB7P30gY29sdW1uIGluZGljYXRlcyB3aGVuIHRoZSBvcHRpb25zIGFyZSBhZmZlY3RlZDoKKwkrICBNZWFucyB0aGF0IHRoZSBvcHRpb24gaXMgc2V0IHRvIHRoZSB2YWx1ZSBnaXZlbiBpbiB7c2V0IHZhbHVlfSB3aGVuCisJICAgJ2NvbXBhdGlibGUnIGlzIHNldC4KKwkmICBNZWFucyB0aGF0IHRoZSBvcHRpb24gaXMgc2V0IHRvIHRoZSB2YWx1ZSBnaXZlbiBpbiB7c2V0IHZhbHVlfSB3aGVuCisJICAgJ2NvbXBhdGlibGUnIGlzIHNldCBBTkQgaXMgc2V0IHRvIGl0cyBWaW0gZGVmYXVsdCB2YWx1ZSB3aGVuCisJICAgJ2NvbXBhdGlibGUnIGlzIHVuc2V0LgorCS0gIE1lYW5zIHRoZSBvcHRpb24gaXMgTk9UIGNoYW5nZWQgd2hlbiBzZXR0aW5nICdjb21wYXRpYmxlJyBidXQgSVMKKwkgICBzZXQgdG8gaXRzIFZpbSBkZWZhdWx0IHdoZW4gJ2NvbXBhdGlibGUnIGlzIHVuc2V0LgorCVRoZSB7ZWZmZWN0fSBjb2x1bW4gc3VtbWFyaXNlcyB0aGUgY2hhbmdlIHdoZW4gJ2NvbXBhdGlibGUnIGlzIHNldC4KIAotCSdhbGxvd3JldmlucycJICBvZmYJCW5vIENUUkwtXyBjb21tYW5kCi0JJ2JhY2tzcGFjZScJICAiIgkJbm9ybWFsIGJhY2tzcGFjZQotCSdiYWNrdXBjb3B5JwkgIFVuaXg6ICJ5ZXMiCWJhY2t1cCBmaWxlIGlzIGEgY29weQotCQkJICBlbHNlOiAiYXV0byIgIGNvcHkgb3IgcmVuYW1lIGJhY2t1cCBmaWxlCi0JJ2JhY2t1cCcJICBvZmYJCW5vIGJhY2t1cCBmaWxlCi0JJ2NlZGl0JwkJKyAiIgkJbm8ga2V5IHRvIG9wZW4gdGhlIHxjbWR3aW58Ci0JJ2NpbmRlbnQnCSAgb2ZmCQlubyBDIGNvZGUgaW5kZW50YXRpb24KLQknY3BvcHRpb25zJwkrIChhbGwgZmxhZ3MpCVZpLWNvbXBhdGlibGUgZmxhZ3MKLQknY3Njb3BldGFnJwkgIG9mZgkJZG9uJ3QgdXNlIGNzY29wZSBmb3IgIjp0YWciCisJb3B0aW9uCQk/IHNldCB2YWx1ZQllZmZlY3QKKworCSdhbGxvd3JldmlucycJKyBvZmYJCW5vIENUUkwtXyBjb21tYW5kCisJJ2FudGlhbGlhcycJKyBvZmYJCWRvbid0IHVzZSBhbnRpYWxpYXNlZCBmb250cworCSdhcmFiaWMnCSsgb2ZmCSAJcmVzZXQgYXJhYmljLXJlbGF0ZWQgb3B0aW9ucworCSdhcmFiaWNzaGFwZScJKyBvbgkJY29ycmVjdCBjaGFyYWN0ZXIgc2hhcGVzCisJJ2JhY2tzcGFjZScJKyAiIgkJbm9ybWFsIGJhY2tzcGFjZQorCSdiYWNrdXAnCSsgb2ZmCQlubyBiYWNrdXAgZmlsZQorCSdiYWNrdXBjb3B5JwkmIFVuaXg6ICJ5ZXMiCWJhY2t1cCBmaWxlIGlzIGEgY29weQorCQkJICBlbHNlOiAiYXV0byIJY29weSBvciByZW5hbWUgYmFja3VwIGZpbGUKKwknYmFsbG9vbmV4cHInCSsgIiIJCXRleHQgdG8gc2hvdyBpbiBldmFsdWF0aW9uIGJhbGxvb24KKwknYnJlYWtpbmRlbnQnCSsgb2ZmCQlkb24ndCBpbmRlbnQgd2hlbiB3cmFwcGluZyBsaW5lcworCSdjZWRpdCcJCS0ge3VuY2hhbmdlZH0Je3NldCB2aW0gZGVmYXVsdCBvbmx5IG9uIHJlc2V0dGluZyAnY3AnfQorCSdjaW5kZW50JwkrIG9mZgkJbm8gQyBjb2RlIGluZGVudGF0aW9uCisJJ2NvbXBhdGlibGUnCS0ge3VuY2hhbmdlZH0Je3NldCB2aW0gZGVmYXVsdCBvbmx5IG9uIHJlc2V0dGluZyAnY3AnfQorCSdjb3B5aW5kZW50JwkrIG9mZgkJZG9uJ3QgY29weSBpbmRlbnQgc3RydWN0dXJlCisJJ2Nwb3B0aW9ucycJJiAoYWxsIGZsYWdzKQlWaS1jb21wYXRpYmxlIGZsYWdzCisJJ2NzY29wZXBhdGhjb21wJysgMAkJZG9uJ3Qgc2hvdyBkaXJlY3RvcmllcyBpbiB0YWdzIGxpc3QKKwknY3Njb3BlcmVsYXRpdmUnKyBvZmYJCQorCSdjc2NvcGV0YWcnCSsgb2ZmCQlkb24ndCB1c2UgY3Njb3BlIGZvciAiOnRhZyIKIAknY3Njb3BldGFnb3JkZXInICAwCQlzZWUgfGNzY29wZXRhZ29yZGVyfAotCSdjc2NvcGV2ZXJib3NlJwkgIG9mZgkJc2VlIHxjc2NvcGV2ZXJib3NlfAotCSdkaWdyYXBoJwkgIG9mZgkJbm8gZGlncmFwaHMKLQknZXNja2V5cycJKyBvZmYJCW5vIDxFc2M+LWtleXMgaW4gSW5zZXJ0IG1vZGUKLQknZXhwYW5kdGFiJwkgIG9mZgkJdGFicyBub3QgZXhwYW5kZWQgdG8gc3BhY2VzCi0JJ2ZpbGVmb3JtYXRzJwkrICIiCQlubyBhdXRvbWF0aWMgZmlsZSBmb3JtYXQgZGV0ZWN0aW9uLAorCSdjc2NvcGV2ZXJib3NlJwkrIG9mZgkJc2VlIHxjc2NvcGV2ZXJib3NlfAorCSdkZWxjb21iaW5lJwkrIG9mZgkJdW5pY29kZTogZGVsZXRlIHdob2xlIGNoYXIgY29tYmluYXRpb24KKwknZGlncmFwaCcJKyBvZmYJCW5vIGRpZ3JhcGhzCisJJ2VzY2tleXMnCSYgb2ZmCQlubyA8RXNjPi1rZXlzIGluIEluc2VydCBtb2RlCisJJ2V4cGFuZHRhYicJKyBvZmYJCXRhYnMgbm90IGV4cGFuZGVkIHRvIHNwYWNlcworCSdmaWxlZm9ybWF0cycJJiAiIgkJbm8gYXV0b21hdGljIGZpbGUgZm9ybWF0IGRldGVjdGlvbiwKIAkJCSAgImRvcyx1bml4IglleGNlcHQgZm9yIERPUywgV2luZG93cyBhbmQgT1MvMgotCSdmb3JtYXRvcHRpb25zJwkrICJ2dCIJCVZpIGNvbXBhdGlibGUgZm9ybWF0dGluZwotCSdnZGVmYXVsdCcJICBvZmYJCW5vIGRlZmF1bHQgJ2cnIGZsYWcgZm9yICI6cyIKLQknaGlzdG9yeScJKyAwCQlubyBjb21tYW5kbGluZSBoaXN0b3J5Ci0JJ2hrbWFwJwkJICBvZmYJCW5vIEhlYnJldyBrZXlib2FyZCBtYXBwaW5nCi0JJ2hrbWFwcCcJICBvZmYJCW5vIHBob25ldGljIEhlYnJldyBrZXlib2FyZCBtYXBwaW5nCi0JJ2hsc2VhcmNoJwkgIG9mZgkJbm8gaGlnaGxpZ2h0aW5nIG9mIHNlYXJjaCBtYXRjaGVzCi0JJ2luY3NlYXJjaCcJICBvZmYJCW5vIGluY3JlbWVudGFsIHNlYXJjaGluZwotCSdpbmRlbnRleHByJwkgICIiCQlubyBpbmRlbnRpbmcgYnkgZXhwcmVzc2lvbgotCSdpbnNlcnRtb2RlJwkgIG9mZgkJZG8gbm90IHN0YXJ0IGluIEluc2VydCBtb2RlCi0JJ2lza2V5d29yZCcJKyAiQCw0OC01NyxfIglrZXl3b3JkcyBjb250YWluIGFscGhhbnVtZXJpYworCSdmb3JtYXRleHByJwkrICIiCQl1c2UgJ2Zvcm1hdHByZycgZm9yIGF1dG8tZm9ybWF0dGluZworCSdmb3JtYXRvcHRpb25zJwkmICJ2dCIJCVZpIGNvbXBhdGlibGUgZm9ybWF0dGluZworCSdnZGVmYXVsdCcJKyBvZmYJCW5vIGRlZmF1bHQgJ2cnIGZsYWcgZm9yICI6cyIKKwknaGlzdG9yeScJJiAwCQlubyBjb21tYW5kbGluZSBoaXN0b3J5CisJJ2hrbWFwJwkJKyBvZmYJCW5vIEhlYnJldyBrZXlib2FyZCBtYXBwaW5nCisJJ2hrbWFwcCcJKyBvZmYJCW5vIHBob25ldGljIEhlYnJldyBrZXlib2FyZCBtYXBwaW5nCisJJ2hsc2VhcmNoJwkrIG9mZgkJbm8gaGlnaGxpZ2h0aW5nIG9mIHNlYXJjaCBtYXRjaGVzCisJJ2luY3NlYXJjaCcJKyBvZmYJCW5vIGluY3JlbWVudGFsIHNlYXJjaGluZworCSdpbmRlbnRleHByJwkrICIiCQlubyBpbmRlbnRpbmcgYnkgZXhwcmVzc2lvbgorCSdpbnNlcnRtb2RlJwkrIG9mZgkJZG8gbm90IHN0YXJ0IGluIEluc2VydCBtb2RlCisJJ2lza2V5d29yZCcJJiAiQCw0OC01NyxfIglrZXl3b3JkcyBjb250YWluIGFscGhhbnVtZXJpYwogCQkJCQkJY2hhcmFjdGVycyBhbmQgJ18nCi0JJ2pvaW5zcGFjZXMnCSAgb24JCWluc2VydCAyIHNwYWNlcyBhZnRlciBwZXJpb2QKLQknbW9kZWxpbmUnCSsgb2ZmCQlubyBtb2RlbGluZXMKLQknbW9yZScJCSsgb2ZmCQlubyBwYXVzZXMgaW4gbGlzdGluZ3MKLQkncmV2aW5zJwkgIG9mZgkJbm8gcmV2ZXJzZSBpbnNlcnQKLQkncnVsZXInCQkgIG9mZgkJbm8gcnVsZXIKLQknc2Nyb2xsanVtcCcJICAxCQlubyBqdW1wIHNjcm9sbAotCSdzY3JvbGxvZmYnCSAgMAkJbm8gc2Nyb2xsIG9mZnNldAotCSdzaGlmdHJvdW5kJwkgIG9mZgkJaW5kZW50IG5vdCByb3VuZGVkIHRvIHNoaWZ0d2lkdGgKLQknc2hvcnRtZXNzJwkrICIiCQlubyBzaG9ydGVuaW5nIG9mIG1lc3NhZ2VzCi0JJ3Nob3djbWQnCSsgb2ZmCQljb21tYW5kIGNoYXJhY3RlcnMgbm90IHNob3duCi0JJ3Nob3dtb2RlJwkrIG9mZgkJY3VycmVudCBtb2RlIG5vdCBzaG93bgotCSdzbWFydGNhc2UnCSAgb2ZmCQlubyBhdXRvbWF0aWMgaWdub3JlIGNhc2Ugc3dpdGNoCi0JJ3NtYXJ0aW5kZW50JwkgIG9mZgkJbm8gc21hcnQgaW5kZW50YXRpb24KLQknc21hcnR0YWInCSAgb2ZmCQlubyBzbWFydCB0YWIgc2l6ZQotCSdzb2Z0dGFic3RvcCcJICAwCQl0YWJzIGFyZSBhbHdheXMgJ3RhYnN0b3AnIHBvc2l0aW9ucwotCSdzdGFydG9mbGluZScJICBvbgkJZ290byBzdGFydG9mbGluZSB3aXRoIHNvbWUgY29tbWFuZHMKLQkndGFncmVsYXRpdmUnCSsgb2ZmCQl0YWcgZmlsZSBuYW1lcyBhcmUgbm90IHJlbGF0aXZlCi0JJ3RleHRhdXRvJwkrIG9mZgkJbm8gYXV0b21hdGljIHRleHRtb2RlIGRldGVjdGlvbgotCSd0ZXh0d2lkdGgnCSAgMAkJbm8gYXV0b21hdGljIGxpbmUgd3JhcAotCSd0aWxkZW9wJwkgIG9mZgkJdGlsZGUgaXMgbm90IGFuIG9wZXJhdG9yCi0JJ3R0aW1lb3V0JwkgIG9mZgkJbm8gdGVybWluYWwgdGltZW91dAotCSd2aW1pbmZvJyAgICAgICArIHt1bmNoYW5nZWR9CW5vIHZpbWluZm8gZmlsZQkKLQknd2hpY2h3cmFwJwkrICIiCQlsZWZ0LXJpZ2h0IG1vdmVtZW50cyBkb24ndCB3cmFwCi0JJ3dpbGRjaGFyJwkrIENUUkwtRQlvbmx5IHdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXMgPFRhYj4KKwknam9pbnNwYWNlcycJKyBvbgkJaW5zZXJ0IDIgc3BhY2VzIGFmdGVyIHBlcmlvZAorCSdtb2RlbGluZScJJiBvZmYJCW5vIG1vZGVsaW5lcworCSdtb3JlJwkJJiBvZmYJCW5vIHBhdXNlcyBpbiBsaXN0aW5ncworCSdtenF1YW50dW0nCS0ge3VuY2hhbmdlZH0Je3NldCB2aW0gZGVmYXVsdCBvbmx5IG9uIHJlc2V0dGluZyAnY3AnfQorCSdudW1iZXJ3aWR0aCcJJiA4CQltaW4gbnVtYmVyIG9mIGNvbHVtbnMgZm9yIGxpbmUgbnVtYmVyCisJJ3ByZXNlcnZlaW5kZW50Jysgb2ZmCQlkb24ndCBwcmVzZXJ2ZSBjdXJyZW50IGluZGVudCBzdHJ1Y3R1cmUKKwkJCQkJCXdoZW4gY2hhbmdpbmcgaXQKKwkncmV2aW5zJwkrIG9mZgkJbm8gcmV2ZXJzZSBpbnNlcnQKKwkncnVsZXInCQkrIG9mZgkJbm8gcnVsZXIKKwknc2Nyb2xsanVtcCcJKyAxCQlubyBqdW1wIHNjcm9sbAorCSdzY3JvbGxvZmYnCSsgMAkJbm8gc2Nyb2xsIG9mZnNldAorCSdzaGVsbHRlbXAnCS0ge3VuY2hhbmdlZH0Je3NldCB2aW0gZGVmYXVsdCBvbmx5IG9uIHJlc2V0dGluZyAnY3AnfQorCSdzaGlmdHJvdW5kJwkrIG9mZgkJaW5kZW50IG5vdCByb3VuZGVkIHRvIHNoaWZ0d2lkdGgKKwknc2hvcnRtZXNzJwkmICIiCQlubyBzaG9ydGVuaW5nIG9mIG1lc3NhZ2VzCisJJ3Nob3djbWQnCSYgb2ZmCQljb21tYW5kIGNoYXJhY3RlcnMgbm90IHNob3duCisJJ3Nob3dtb2RlJwkmIG9mZgkJY3VycmVudCBtb2RlIG5vdCBzaG93bgorCSdzaWRlc2Nyb2xsb2ZmJwkrIDAJCWN1cnNvciBtb3ZlcyB0byBlZGdlIG9mIHNjcmVlbiBpbiBzY3JvbGwKKwknc21hcnRjYXNlJwkrIG9mZgkJbm8gYXV0b21hdGljIGlnbm9yZSBjYXNlIHN3aXRjaAorCSdzbWFydGluZGVudCcJKyBvZmYJCW5vIHNtYXJ0IGluZGVudGF0aW9uCisJJ3NtYXJ0dGFiJwkrIG9mZgkJbm8gc21hcnQgdGFiIHNpemUKKwknc29mdHRhYnN0b3AnCSsgMAkJdGFicyBhcmUgYWx3YXlzICd0YWJzdG9wJyBwb3NpdGlvbnMKKwknc3RhcnRvZmxpbmUnCSsgb24JCWdvdG8gc3RhcnRvZmxpbmUgd2l0aCBzb21lIGNvbW1hbmRzCisJJ3RhZ2Nhc2UnCSYgImZvbGxvd2ljIgknaWdub3JlY2FzZScgd2hlbiBzZWFyY2hpbmcgdGFncyBmaWxlCisJJ3RhZ3JlbGF0aXZlJwkmIG9mZgkJdGFnIGZpbGUgbmFtZXMgYXJlIG5vdCByZWxhdGl2ZQorCSd0ZXJtZ3VpY29sb3JzJwkrIG9mZgkJZG9uJ3QgdXNlIGhpZ2hsaWdodC0oZ3VpZmd8Z3VpYmcpCisJJ3RleHRhdXRvJwkmIG9mZgkJbm8gYXV0b21hdGljIHRleHRtb2RlIGRldGVjdGlvbgorCSd0ZXh0d2lkdGgnCSsgMAkJbm8gYXV0b21hdGljIGxpbmUgd3JhcAorCSd0aWxkZW9wJwkrIG9mZgkJdGlsZGUgaXMgbm90IGFuIG9wZXJhdG9yCisJJ3R0aW1lb3V0JwkrIG9mZgkJbm8gdGVybWluYWwgdGltZW91dAorCSd1bmRvZmlsZScJKyBvZmYJCWRvbid0IHVzZSBhbiB1bmRvIGZpbGUKKwkndmltaW5mbycgICAgICAgLSB7dW5jaGFuZ2VkfQl7c2V0IHZpbSBkZWZhdWx0IG9ubHkgb24gcmVzZXR0aW5nICdjcCd9CisJJ3ZpcnR1YWxlZGl0JwkrICIiCQljdXJzb3IgY2FuIG9ubHkgYmUgcGxhY2VkIG9uIGNoYXJhY3RlcnMKKwknd2hpY2h3cmFwJwkmICIiCQlsZWZ0LXJpZ2h0IG1vdmVtZW50cyBkb24ndCB3cmFwCisJJ3dpbGRjaGFyJwkmIENUUkwtRQlvbmx5IHdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXMgPFRhYj4KIAkJCQkJdXNlIENUUkwtRSBmb3IgY21kbGluZSBjb21wbGV0aW9uCi0JJ3dyaXRlYmFja3VwJwkgIG9uIG9yIG9mZglkZXBlbmRzIG9uIHRoZSB8K3dyaXRlYmFja3VwfCBmZWF0dXJlCisJJ3dyaXRlYmFja3VwJwkrIG9uIG9yIG9mZglkZXBlbmRzIG9uIHRoZSB8K3dyaXRlYmFja3VwfCBmZWF0dXJlCiAKIAkJCQkJCSonY29tcGxldGUnKiAqJ2NwdCcqICpFNTM1KgogJ2NvbXBsZXRlJyAnY3B0JwlzdHJpbmcJKGRlZmF1bHQ6ICIuLHcsYix1LHQsaSIpCkBAIC0yODgzLDYgKzI5MTYsOCBAQAogCWRvbmUgd2hlbiB3cml0aW5nIHRoZSBmaWxlLiAgRm9yIHJlYWRpbmcgc2VlIGJlbG93LgogCVdoZW4gJ2ZpbGVlbmNvZGluZycgaXMgZW1wdHksIHRoZSBzYW1lIHZhbHVlIGFzICdlbmNvZGluZycgd2lsbCBiZQogCXVzZWQgKG5vIGNvbnZlcnNpb24gd2hlbiByZWFkaW5nIG9yIHdyaXRpbmcgYSBmaWxlKS4KKwlObyBlcnJvciB3aWxsIGJlIGdpdmVuIHdoZW4gdGhlIHZhbHVlIGlzIHNldCwgb25seSB3aGVuIGl0IGlzIHVzZWQsCisJb25seSB3aGVuIHdyaXRpbmcgYSBmaWxlLgogCUNvbnZlcnNpb24gd2lsbCBhbHNvIGJlIGRvbmUgd2hlbiAnZW5jb2RpbmcnIGFuZCAnZmlsZWVuY29kaW5nJyBhcmUKIAlib3RoIGEgVW5pY29kZSBlbmNvZGluZyBhbmQgJ2ZpbGVlbmNvZGluZycgaXMgbm90IHV0Zi04LiAgVGhhdCdzCiAJYmVjYXVzZSBpbnRlcm5hbGx5IFVuaWNvZGUgaXMgYWx3YXlzIHN0b3JlZCBhcyB1dGYtOC4KQEAgLTcwNDUsNyArNzA4MCw3IEBACiAJCQl3b3JkLiAgVGhlIGV4cHJlc3Npb24gbXVzdCBldmFsdWF0ZSB0byBhIExpc3Qgb2YKIAkJCUxpc3RzLCBlYWNoIHdpdGggYSBzdWdnZXN0aW9uIGFuZCBhIHNjb3JlLgogCQkJRXhhbXBsZToKLQkJCQlbWyd0aGUnLCAzM10sIFsndGhhdCcsIDQ0XV0KKwkJCQlbWyd0aGUnLCAzM10sIFsndGhhdCcsIDQ0XV0gfgogCQkJU2V0ICd2ZXJib3NlJyBhbmQgdXNlIHx6PXwgdG8gc2VlIHRoZSBzY29yZXMgdGhhdCB0aGUKIAkJCWludGVybmFsIG1ldGhvZHMgdXNlLiAgQSBsb3dlciBzY29yZSBpcyBiZXR0ZXIuCiAJCQlUaGlzIG1heSBpbnZva2UgfHNwZWxsc3VnZ2VzdCgpfCBpZiB5b3UgdGVtcG9yYXJpbHkKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3BhdHRlcm4udHh0IGIvcnVudGltZS9kb2MvcGF0dGVybi50eHQKaW5kZXggN2M4MzRiMy4uMDI3ZjQ3YiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGF0dGVybi50eHQKKysrIGIvcnVudGltZS9kb2MvcGF0dGVybi50eHQKQEAgLTEsNCArMSw0IEBACi0qcGF0dGVybi50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IFNlcCAxMQorKnBhdHRlcm4udHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBNYXIgMDUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTg2OSwxMCArODY5LDEzIEBACiBcJVYJTWF0Y2ggaW5zaWRlIHRoZSBWaXN1YWwgYXJlYS4gIFdoZW4gVmlzdWFsIG1vZGUgaGFzIGFscmVhZHkgYmVlbgogCXN0b3BwZWQgbWF0Y2ggaW4gdGhlIGFyZWEgdGhhdCB8Z3Z8IHdvdWxkIHJlc2VsZWN0LgogCVRoaXMgaXMgYSB8L3plcm8td2lkdGh8IG1hdGNoLiAgVG8gbWFrZSBzdXJlIHRoZSB3aG9sZSBwYXR0ZXJuIGlzCi0JaW5zaWRlIHRoZSBWaXN1YWwgYXJlYSBwdXQgaXQgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHBhdHRlcm4sCi0JZS5nLjogPgotCQkvXCVWZm9vLipiYXJcJVYKLTwJT25seSB3b3JrcyBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgorCWluc2lkZSB0aGUgVmlzdWFsIGFyZWEgcHV0IGl0IGF0IHRoZSBzdGFydCBhbmQganVzdCBiZWZvcmUgdGhlIGVuZCBvZgorCXRoZSBwYXR0ZXJuLCBlLmcuOiA+CisJCS9cJVZmb28uKmJhXCVWcgorPAlUaGlzIHdvcmtzIGlmICJmb28gYmFyIiAob3IgbW9yZSkgd2FzIFZpc3VhbGx5IHNlbGVjdGVkLiBUaGlzOiA+CisJCS9cJVZmb28uKmJhXCVWcgorPAl3b3VsZCBtYXRjaCAiZm9vIGJhciIgaWYgdGhlIFZpc3VhbCBzZWxlY3Rpb24gY29udGludWVzIGFmdGVyIHRoZSAiciIuCisJT25seSB3b3JrcyBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgogCiAJCQkJCQkqL1wlIyogKmN1cnNvci1wb3NpdGlvbioKIFwlIwlNYXRjaGVzIHdpdGggdGhlIGN1cnNvciBwb3NpdGlvbi4gIE9ubHkgd29ya3Mgd2hlbiBtYXRjaGluZyBpbiBhCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQgYi9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQKaW5kZXggMzlhMGI4Ni4uMmFkMWQyYSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dApAQCAtMTM5OSw3ICsxMzk5LDcgQEAKICAgIE1ha2luZyBhbGwgaW4gZGlyMgkJICAuL2RpcjEvZGlyMgogCiAgICBUaGlzIGNhbiBiZSBzb2x2ZWQgYnkgcHJpbnRpbmcgYWJzb2x1dGUgZGlyZWN0b3JpZXMgaW4gdGhlICJlbnRlciBkaXJlY3RvcnkiCi0gICBtZXNzYWdlIG9yIGJ5IHByaW50aW5nICJsZWF2ZSBkaXJlY3RvcnkiIG1lc3NhZ2VzLi4KKyAgIG1lc3NhZ2Ugb3IgYnkgcHJpbnRpbmcgImxlYXZlIGRpcmVjdG9yeSIgbWVzc2FnZXMuCiAKIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgZW5zdXJlIHRvIHByaW50IGFic29sdXRlIGRpcmVjdG9yeSBuYW1lcyBhbmQgImxlYXZlCiBkaXJlY3RvcnkiIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc2Nyb2xsLnR4dCBiL3J1bnRpbWUvZG9jL3Njcm9sbC50eHQKaW5kZXggOTQzNTMxZS4uMzUzMDFmNiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc2Nyb2xsLnR4dAorKysgYi9ydW50aW1lL2RvYy9zY3JvbGwudHh0CkBAIC0yMjEsNyArMjIxLDcgQEAKIEhvd2V2ZXIsIGlmIGEgJ3Njcm9sbGJpbmQnIHdpbmRvdyB0aGF0IGhhcyBhIHJlbGF0aXZlIG9mZnNldCB0aGF0IGlzIHBhc3QgaXRzCiBidWZmZXIncyBsaW1pdHMgaXMgZ2l2ZW4gdGhlIGN1cnNvciBmb2N1cywgdGhlIG90aGVyICdzY3JvbGxiaW5kJyB3aW5kb3dzIG11c3QKIGp1bXAgdG8gYSBsb2NhdGlvbiB3aGVyZSB0aGUgY3VycmVudCB3aW5kb3cncyByZWxhdGl2ZSBvZmZzZXQgaXMgdmFsaWQuICBUaGlzCi1iZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBieSBjbGVhcmluZyB0aGUgJ2p1bXAnIGZsYWcgZnJvbSB0aGUgJ3Njcm9sbG9wdCcKK2JlaGF2aW9yIGNhbiBiZSBjaGFuZ2VkIGJ5IGNsZWFyaW5nIHRoZSAianVtcCIgZmxhZyBmcm9tIHRoZSAnc2Nyb2xsb3B0Jwogb3B0aW9uLgogCiAJCQkJCQkqc3luY2JpbmQqICo6c3luY2JpbmQqICo6c3luYyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CmluZGV4IDllZjhkNjEuLjRhNDdjMzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKKysrIGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dApAQCAtMjY0Niw5ICsyNjQ2LDkgQEAKIAogUkVTVFJVQ1RVUkVEIFRFWFQJCQkqcnN0LnZpbSogKmZ0LXJzdC1zeW50YXgqCiAKLVlvdSBtYXkgc2V0IHdoYXQgc3ludGF4IGRlZmluaXRpb25zIHNob3VsZCBiZSB1c2VkIGZvciBjb2RlIGJsb2NrcyB2aWEKK1lvdSBtYXkgc2V0IHdoYXQgc3ludGF4IGRlZmluaXRpb25zIHNob3VsZCBiZSB1c2VkIGZvciBjb2RlIGJsb2NrcyB2aWEgPgogCWxldCByc3Rfc3ludGF4X2NvZGVfbGlzdCA9IFsndmltJywgJ2xpc3AnLCAuLi5dCi0KKzwKIAogUkVYWAkJCQkJCSpyZXh4LnZpbSogKmZ0LXJleHgtc3ludGF4KgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAwMjViMjk4Li41ZGMzYWM2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTk2NSw2ICs5NjUsOCBAQAogJ3RfS0onCXRlcm0udHh0CS8qJ3RfS0onKgogJ3RfS0snCXRlcm0udHh0CS8qJ3RfS0snKgogJ3RfS0wnCXRlcm0udHh0CS8qJ3RfS0wnKgorJ3RfUEUnCXRlcm0udHh0CS8qJ3RfUEUnKgorJ3RfUFMnCXRlcm0udHh0CS8qJ3RfUFMnKgogJ3RfUkInCXRlcm0udHh0CS8qJ3RfUkInKgogJ3RfUkknCXRlcm0udHh0CS8qJ3RfUkknKgogJ3RfUlYnCXRlcm0udHh0CS8qJ3RfUlYnKgpAQCAtNDUwMCw2ICs0NTAyLDcgQEAKIEU5MzgJZXZhbC50eHQJLypFOTM4KgogRTkzOQljaGFuZ2UudHh0CS8qRTkzOSoKIEU5NAl3aW5kb3dzLnR4dAkvKkU5NCoKK0U5NDAJZXZhbC50eHQJLypFOTQwKgogRTk1CW1lc3NhZ2UudHh0CS8qRTk1KgogRTk2CWRpZmYudHh0CS8qRTk2KgogRTk3CWRpZmYudHh0CS8qRTk3KgpAQCAtNTA3MSw2ICs1MDc0LDcgQEAKIGJhY2t1cC1leHRlbnNpb24JdmVyc2lvbjQudHh0CS8qYmFja3VwLWV4dGVuc2lvbioKIGJhY2t1cC10YWJsZQllZGl0aW5nLnR4dAkvKmJhY2t1cC10YWJsZSoKIGJhbGxvb24tZXZhbAlkZWJ1Z2dlci50eHQJLypiYWxsb29uLWV2YWwqCitiYWxsb29uX3Nob3coKQlldmFsLnR4dAkvKmJhbGxvb25fc2hvdygpKgogYmFyCW1vdGlvbi50eHQJLypiYXIqCiBiYXJzCWhlbHAudHh0CS8qYmFycyoKIGJhc2VfZm9udF9uYW1lX2xpc3QJbWJ5dGUudHh0CS8qYmFzZV9mb250X25hbWVfbGlzdCoKQEAgLTg3MzIsNyArODczNiw5IEBACiB0ZXJtY2FwLXRpdGxlCXRlcm0udHh0CS8qdGVybWNhcC10aXRsZSoKIHRlcm1pbmFsLWNvbG9ycwlvc191bml4LnR4dAkvKnRlcm1pbmFsLWNvbG9ycyoKIHRlcm1pbmFsLWluZm8JdGVybS50eHQJLyp0ZXJtaW5hbC1pbmZvKgordGVybWluYWwta2V5LWNvZGVzCXRlcm0udHh0CS8qdGVybWluYWwta2V5LWNvZGVzKgogdGVybWluYWwtb3B0aW9ucwl0ZXJtLnR4dAkvKnRlcm1pbmFsLW9wdGlvbnMqCit0ZXJtaW5hbC1vdXRwdXQtY29kZXMJdGVybS50eHQJLyp0ZXJtaW5hbC1vdXRwdXQtY29kZXMqCiB0ZXJtaW5mbwl0ZXJtLnR4dAkvKnRlcm1pbmZvKgogdGVybXJlc3BvbnNlLXZhcmlhYmxlCWV2YWwudHh0CS8qdGVybXJlc3BvbnNlLXZhcmlhYmxlKgogdGVzdC1mdW5jdGlvbnMJdXNyXzQxLnR4dAkvKnRlc3QtZnVuY3Rpb25zKgpAQCAtODc0MCw2ICs4NzQ2LDcgQEAKIHRlc3RfYXV0b2NoZGlyKCkJZXZhbC50eHQJLyp0ZXN0X2F1dG9jaGRpcigpKgogdGVzdF9kaXNhYmxlX2NoYXJfYXZhaWwoKQlldmFsLnR4dAkvKnRlc3RfZGlzYWJsZV9jaGFyX2F2YWlsKCkqCiB0ZXN0X2dhcmJhZ2Vjb2xsZWN0X25vdygpCWV2YWwudHh0CS8qdGVzdF9nYXJiYWdlY29sbGVjdF9ub3coKSoKK3Rlc3RfaWdub3JlX2Vycm9yKCkJZXZhbC50eHQJLyp0ZXN0X2lnbm9yZV9lcnJvcigpKgogdGVzdF9udWxsX2NoYW5uZWwoKQlldmFsLnR4dAkvKnRlc3RfbnVsbF9jaGFubmVsKCkqCiB0ZXN0X251bGxfZGljdCgpCWV2YWwudHh0CS8qdGVzdF9udWxsX2RpY3QoKSoKIHRlc3RfbnVsbF9qb2IoKQlldmFsLnR4dAkvKnRlc3RfbnVsbF9qb2IoKSoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Rlcm0udHh0IGIvcnVudGltZS9kb2MvdGVybS50eHQKaW5kZXggMGJmZTRlYi4uZTAxZjE1ZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGVybS50eHQKKysrIGIvcnVudGltZS9kb2MvdGVybS50eHQKQEAgLTI1Miw3ICsyNTIsNyBAQAogdGhhdCB0aGUgZmxhZyBpcyBub3Qgc2V0LiAgJ3RfQ1MnIHdvcmtzIGxpa2UgdGhpcyB0b28sIGJ1dCBpdCBpc24ndCBhIHRlcm1jYXAKIGZsYWcuCiAKLU9VVFBVVCBDT0RFUworT1VUUFVUIENPREVTCQkJCQkJKnRlcm1pbmFsLW91dHB1dC1jb2RlcyoKIAlvcHRpb24JbWVhbmluZwl+CiAKIAl0X0FCCXNldCBiYWNrZ3JvdW5kIGNvbG9yIChBTlNJKQkJCSp0X0FCKiAqJ3RfQUInKgpAQCAtMzMzLDcgKzMzMyw3IEBACiAJdF9CRAlkaXNhYmxlIGJyYWNrZXRlZCBwYXN0ZSBtb2RlCQkJKnRfQkQqICondF9CRCcqCiAJCXx4dGVybS1icmFja2V0ZWQtcGFzdGV8CiAKLUtFWSBDT0RFUworS0VZIENPREVTCQkJCQkJKnRlcm1pbmFsLWtleS1jb2RlcyoKIE5vdGU6IFVzZSB0aGUgPD4gZm9ybSBpZiBwb3NzaWJsZQogCiAJb3B0aW9uCW5hbWUJCW1lYW5pbmcJfgpAQCAtNDI0LDggKzQyNCw5IEBACiAJdF9LSwk8azg+CQlrZXlwYWQgOAkJICo8azg+KgkqdF9LSyogKid0X0tLJyoKIAl0X0tMCTxrOT4JCWtleXBhZCA5CQkgKjxrOT4qCSp0X0tMKiAqJ3RfS0wnKgogCQk8TW91c2U+CQlsZWFkZXIgb2YgbW91c2UgY29kZQkJKjxNb3VzZT4qCi0JdF9QUwlzdGFydCBvZiBicmFja2V0ZWQgcGFzdGUgfHh0ZXJtLWJyYWNrZXRlZC1wYXN0ZXwgICp0X1BTKiAndF9QUycKLQl0X1BFCWVuZCBvZiBicmFja2V0ZWQgcGFzdGUgfHh0ZXJtLWJyYWNrZXRlZC1wYXN0ZXwgICAgKnRfUEUqICd0X1BFJworCQkJCQkJCQkqdF9QUyogKid0X1BTJyoKKwl0X1BTCXN0YXJ0IG9mIGJyYWNrZXRlZCBwYXN0ZSB8eHRlcm0tYnJhY2tldGVkLXBhc3RlfAorCXRfUEUJZW5kIG9mIGJyYWNrZXRlZCBwYXN0ZSB8eHRlcm0tYnJhY2tldGVkLXBhc3RlfCAgKnRfUEUqICondF9QRScqCiAKIE5vdGUgYWJvdXQgdF9zbyBhbmQgdF9tcjogV2hlbiB0aGUgdGVybWNhcCBlbnRyeSAic28iIGlzIG5vdCBwcmVzZW50IHRoZQogZW50cnkgZm9yICJtciIgaXMgdXNlZC4gIEFuZCB2aWNlIHZlcnNhLiAgVGhlIHNhbWUgaXMgZG9uZSBmb3IgInNlIiBhbmQgIm1lIi4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggNWQxMjkwNC4uOTVhNWRkZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE3IEZlYiAxNworKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBNYXIgMDUKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzUsMTcgKzM1LDYgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QYXRjaCAxOTUgaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24gaW4gdGFnIHByaW9yaXR5LiAoQ2hhcmxlcyBDYW1wYmVsbCwgMjAxNyBGZWIKLTEwKQotCi1NZW1vcnkgbGVhayBpbiB0ZXN0OTc/Ci0KLWV4aXN0cygnJnRfazEnKSByZXR1cm5zIGZhbHNlIGV2ZW4gd2hlbiB0X2sxIHdhcyBzZXQuCi1Vc2UgaW4gdGVzdF9hc3NpZ24udmltIHRvIG9ubHkgZ2V0IHZhbHVlIG9mICZ0X2sxIGlmIGl0IGV4aXN0cy4gIzE0NTkKLQotdGVzdF9ndWkgZmFpbHMgd2l0aCBBdGhlbmE6Ci0gICBDYXVnaHQgZXhjZXB0aW9uIGluIFRlc3RfMV9zZXRfc2VjdXJlKCk6IFZpbShndWkpOkUyODU6IEZhaWxlZCB0byBjcmVhdGUgaW5wdXQgY29udGV4dCBAIGZ1bmN0aW9uIFJ1blRoZVRlc3RbMjFdLi5UZXN0XzFfc2V0X3NlY3VyZSwgbGluZSAyCi0KICtjaGFubmVsOgogLSBUcnkgb3V0IGJhY2tncm91bmQgbWFrZSBwbHVnaW46IAogICBodHRwczovL2dpdGh1Yi5jb20vQW5kcmV3Vm9zL3ZpbS1tYWtlLWJhY2tncm91bmQKQEAgLTExNiw2ICsxMDUsMTEgQEAKIC0gRGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBlbmdpbmVzOiAiLipcenNcL1xAPlwvIiBvbiB0ZXh0ICIvLy8iCiAgIChDaHJpcyBQYXVsLCAyMDE2IE5vdiAxMykgIE5ldyBlbmdpbmUgbm90IGdyZWVkeSBlbm91Z2g/CiAKK1J1bm5pbmcgdGVzdF9ndWkgYW5kIHRlc3RfZ3VpX2luaXQgd2l0aCBNb3RpZiBzb21ldGltZXMga2lsbHMgdGhlIHdpbmRvdworbWFuYWdlci4gIFByb2JsZW0gd2l0aCBNb3RpZj8KKworTWVtb3J5IGxlYWsgaW4gdGVzdDk3PyAgVGhlIHN0cmluZyBpcyBhY3R1YWxseSBmcmVlZC4gIFdlaXJkLgorCiBBZGQgYSB0b29sYmFyIGluIHRoZSB0ZXJtaW5hbC4gIENhbiBiZSBnbG9iYWwsIGFib3ZlIGFsbCB3aW5kb3dzLCBvciBzcGVjaWZpYwogZm9yIG9uZSB3aW5kb3cuCiBVc2UgdGJfc2V0KHdpbmlkLCBbeyd0ZXh0JzogJ3N0b3AnLCAnY2InOiBjYWxsYmFjaywgJ2hpJzogJ0dyZWVuJ31dKQpAQCAtMTI3LDY0ICsxMjEsMzEgQEAKIAogSnNvbiBzdHJpbmcgd2l0aCB0cmFpbGluZyBcdSBzaG91bGQgYmUgYW4gZXJyb3IuIChMY2QpCiAKLVBhdGNoIGZvciBkb3VibGUgZnJlZSBzZXR0aW5nICd0dHl0eXBlJyAoRG9taW5pcXVlLCAyMDE3IEZlYiAxMCwgIzE0NjEpCi0KLVBhdGNoIGZvciB1c2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSAoRG9taW5pcXVlLCAyMDE3IEZlYiAxMSwgIzE0NjQpCi0KLVBhdGNoIGZvciBjcmFzaCBzZXR0aW5nICdndWljdXJzb3InLiAoRG9taW5pcXVlLCAyMDE3IEZlYiAxMSwgIzE0NjUpCi0KIE11bHRpLWJ5dGUgYnVnOiBkdn0gc3BsaXRzIGNoYXIuIChVcnRpY2EgRGlvaWNhLCAyMDE3IEphbiA5KQogCi1QYXRjaCB0byBhZGQgdGVzdCBmb3IgJ251bWJlcicgYW5kICdyZWxhdGl2ZW51bWJlcicuIChPemFraSBLaWljaGksICMxNDQ3KQotTm93IG1lcmdlZCBpbiB0ZXN0ODkgKEZlYiAxMikKLQotUGF0Y2ggdG8gZml4IHRhYmxpbmUgcmVkcmF3LiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDE3IEZlYiAxMCkKLUJldHRlciB3YXkgdG8gZml4IHRoaXM/Ci0KIFdoZW4gc2Vzc2lvbiBmaWxlIGhhcyBuYW1lIGluIGFyZ3VtZW50IGxpc3QgYnV0IHRoZSBidWZmZXIgd2FzIGRlbGV0ZWQsIHRoZQogYnVmZmVyIGlzIG5vdCBkZWxldGVkIHdoZW4gdXNpbmcgdGhlIHNlc3Npb24gZmlsZS4gKCMxMzkzKQogU2hvdWxkIGFkZCB0aGUgYnVmZmVyIGluIGhpZGRlbiBzdGF0ZS4KIAotUGF0Y2ggdG8gY2hhbmdlIFZpbUwgdG8gIlZpbSBzY3JpcHQiLiAoSGlyb2hpdG8gSGlnYXNoaSwgMjAxNyBGZWIgMTQpCi0KLUludmFsaWQgbWVtb3J5IGFjY2VzcyB3aXRoIDpub3JtYWwgY29tbWFuZC4gKERvbWluaXF1ZSBQZWxsZSwgMjAxNyBGZWIgMTQpCi0KIFdoZW4gImdmIiBleGNsdWRlcyBmb2xsb3dpbmcgIjo5OSIsIGp1bXAgdG8gbGluZSA5OS4KIEFsc28gd2hlbiBlZGl0aW5nIGEgZmlsZSBmb28udHh0Ojk5ID8KIAogV2hlbiBhbiBpdGVtIGluIHRoZSBxdWlja2ZpeCBsaXN0IGhhcyBhIGZpbGUgbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0LCBiZWhhdmUKIGxpa2UgdGhlIGl0ZW0gd2FzIG5vdCBhIG1hdGNoIGZvciA6Y25leHQuCiAKLVBhdGNoIGZvciB3YXJuaW5nIGFib3V0IGludGVnZXIgb3ZlcmZsb3cgaW4gdW5kby5jIChLaW5nLCAyMDE3IEZlYiAxMikKLUFuZCBhbm90aGVyIHNpbWlsYXIgb25lLgotCi1QYXRjaCBmb3IgbnVsbCBwb2ludGVyIHVzZSBpbiB1bmRvLmMgKEtpbmcsIDIwMTcgRmViIDEyKQotCi1QYXRjaCB0byBhdm9pZCB1c2luZyBDVFJMLU8gd2hlbiBkb19jbWRsaW5lX2NtZCBpcyBjYWxsZWQuIChKYW1lcyBNY0NveSwgMjAxNwotRmViIDcsICMxNDUzKQotCi1QYXRjaCBmb3IgbXVsdGktYnl0ZSBsaW5lIHdyYXAuIChPemFraSBLaWljaGksIDIwMTcgRmViIDcsICMxNDU2KQotCi1QYXRjaCB0byBzaG93IGJhbGxvb24gd2l0aCBhIGZ1bmN0aW9uLiAoSnVzdWZhZGlzIEJha2Ftb3ZpYywgIzE0NDkpCi0KIFdyb25nIGRpZmYgaGlnaGxpZ2h0aW5nIHdpdGggdGhyZWUgZmlsZXMuICgyMDE2IE9jdCAyMCwgIzExODYpCiBBbHNvIGdldCBFNzQ5IG9uIGV4aXQuCiBBbm90aGVyIGV4YW1wbGUgaW4gIzEzMDkKIAorUGF0Y2ggdG8gY2hhbmdlIGFsbCB1c2Ugb2YgJnN3IHRvIHNoaWZ0d2lkdGgoKS4gKFR5cnUsIDIwMTcgRmViIDE5KQorV2FpdCB1bnRpbCBtYWludGFpbmVycyBpbnRlZ3JhdGUgaXQuCisKIENvbXBsZXRpb24gZm9yIHVzZXItZGVmaW5lZCBjb21tYW5kcyBkb2VzIG5vdCB3b3JrIGlmIGEgZmV3IGNoYXJhY3RlcnMgd2VyZQogYWxyZWFkeSB0eXBlZC4gKERvbWluaXF1ZSwgMjAxNyBKYW4gMjYpCiAKLVBhdGNoIGZvciBuc2lzIHNjcmlwdCB0byBhZGQgYSBkbGwgZmlsZS4gKENocmlzdGlhbiBCcmFiYW5kdCwgMjAxNyBGZWIgMTApCi1BbHNvIGluY2x1ZGUgdGhlIC5kbGwgZmlsZT8KLQotUGF0Y2ggZm9yIGNhcGl0YWxpemF0aW9ucyBpbiBtZW51cy4gKFpoZW4tSHVhbiBIdSwgMjAxNyBGZWIgOSkKLQogV2hlbiBkZWxldGluZyBhIG1hcmsgb3IgcmVnaXN0ZXIsIGxlYXZlIGEgdG9tYnN0b25lLCBzbyB0aGF0IGl0J3MgYWxzbyBkZWxldGVkCiB3aGVuIHdyaXRpbmcgdmltaW5mbyAoYW5kIHRoZSBkZWxldGUgd2FzIHRoZSBtb3N0IHJlY2VudCBhY3Rpb24pLiAjMTMzOQogCi1QYXRjaCBmb3IgYmV0dGVyIGV4cGxhbmF0aW9uIG9mICdjb21wYXRpYmxlJyBzaWRlIGVmZmVjdHMuCi1odHRwczovL2dpdGh1Yi5jb20vdmltL3ZpbS9wdWxsLzExNjEvZmlsZXMKLQogUGF0Y2ggdG8gYWRkICdtYWtlZW5jb2RpbmcnLCB1c2VmdWwgd2hlbiB0aGUgc3lzdGVtIGVuY29kaW5nIGRpZmZlcnMgZnJvbQogVmltJ3MgJ2VuY29kaW5nJyBzZXR0aW5nLiAoS2VuIFRha2F0YSwgMjAxNyBKYW4gMzEpCiAKQEAgLTIwMCw2ICsxNjEsMTIgQEAKIAogQ29tcGxldGlvbiBmb3IgOiFjbWQgc2hvd3MgZWFjaCBtYXRjaCB0d2ljZS4gIzE0MzUKIAorR1RLOiBXaGVuIGFkZGluZyBhIHRpbWVyIGZyb20gJ2JhbGxvb25leHByJyBpdCB3b24ndCBmaXJlLCBiZWNhdXNlCitnX21haW5fY29udGV4dF9pdGVyYXRpb24oKSBkb2Vzbid0IHJldHVybi4gIE5lZWQgdG8gdHJpZ2dlciBhbiBldmVudCB3aGVuIHRoZQordGltZXIgZXhwaXJlcy4KKworU2NyZWVuIHVwZGF0ZSBidWcgcmVsYXRlZCB0byBtYXRjaHBhcmVuLiAgKENocmlzIEhlYXRoLCAyMDE3IE1hciA0LCAjMTUzMikKKwogUnVsZSB0byB1c2UgIl4iIGZvciBzdGF0dXNsaW5lIGRvZXMgbm90IHdvcmsgaWYgYSBzcGFjZSBpcyBkZWZpbmVkIHdpdGgKIGhpZ2hsaWdodGluZyBmb3IgYm90aCBzdGwgYW5kIHN0bG5jLiAgUGF0Y2ggYnkgS2VuIEhhbWFkYSAoaXRjaHlueSwgMjAxNiBEZWMgMTEpCiAKQEAgLTI1NSw5ICsyMjIsMTUgQEAKIDIwMTcgRmViIDkpICBDYW4gd2UgZXhwYW5kIHdpbGRjYXJkcyBmaXJzdCBhbmQgc2VuZCB0aGUgcGF0aCBsaXRlcmFsbHkgdG8gdGhlCiByZWNlaXZpbmcgVmltPyAgT3IgbWFrZSBhbiBleGNlcHRpb24gZm9yICMsIGl0J3Mgbm90IHVzZWZ1bCByZW1vdGVseS4KIAorIjpzYnIiIGRvY3Mgc3RhdGUgaXQgcmVzcGVjdCAnc3dpdGNoYnVmJywgYnV0ICJ2c3BsaXQiIGRvZXMgbm90IGNhdXNlIGEKK3ZlcnRpY2FsIHNwbGl0LiAoSGFsZGVhbiBCcm93biwgMjAxNyBNYXIgMSkKKwogVXNlIEFERFJfT1RIRVIgaW5zdGVhZCBvZiBBRERSX0xJTkVTIGZvciBtYW55IG1vcmUgY29tbWFuZHMuCiBBZGQgdGVzdHMgZm9yIHVzaW5nIG51bWJlciBsYXJnZXIgdGhhbiBudW1iZXIgb2YgbGluZXMgaW4gYnVmZmVyLgogCitNaWdodCBiZSB1c2VmdWwgdG8gaGF2ZSBpc3JlYWRvbmx5KCksIGxpa2Ugd2UgaGF2ZSBpc2xvY2tlZCgpLgorQXZvaWRzIGV4Y2VwdGlvbnMsIGUuZy4gd2hlbiB1c2luZyB0aGUgYjogbmFtZXNwYWNlIGFzIGEgZGljdC4KKwogUGF0Y2ggdG8gbWFrZSB2OnNoZWxsX2Vycm9yIHdyaXRhYmxlLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDE2IFNlcCAyNykKIFVzZWZ1bCB0byByZXN0b3JlIGl0LiAgSXMgdGhlcmUgYW5vdGhlciBzb2x1dGlvbj8KIApAQCAtMjczLDYgKzI0Niw5IEBACiAKIFBhdGNoIGZvciAnY3Vyc29ybGluZW5yJyBvcHRpb24uIChPemFraSBLaWljaGksIDIwMTYgTm92IDMwKQogCitXaW5kb3cgcmVzaXppbmcgd2l0aCAnd2luZml4aGVpZ2h0JzogV2l0aCBhIHZlcnRpY2FsIHNwbGl0IHRoZSBoZWlnaHQgY2hhbmdlcworYW55d2F5LiAoVG9tbXkgYWxsZW4sIDIwMTcgRmViIDIxLCAjMTUwMikKKwogV2hlbiBhZGRpbmcgYW4gaXRlbSB0byBhIG5ldyBxdWlja2ZpeCBsaXN0IG1ha2UgIjpjbmV4dCIganVtcCB0byB0aGF0IGl0ZW0uCiBNYWtlIGEgZGlmZmVyZW5jZSBiZWluZyBhdCB0aGUgZmlyc3QgaXRlbSBhbmQgbm90IGhhdmluZyB1c2VkIDpjbmV4dCBhdCBhbGwuCiAoQWZhbmFzaXkgRmV0LCAyMDE3IEphbiAzKQpAQCAtNDYxLDYgKzQzNyw5IEBACiBodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtLwogUG9zc2libHkgaW5jbHVkZSB0aGUgbmVlZGVkIGNvZGUgc28gdGhhdCBpdCBjYW4gYmUgYnVpbGQgZXZlcnl3aGVyZS4KIAorQWRkIGEgd2F5IHRvIHJlc3RhcnQgYSB0aW1lci4gIEl0J3Mgc2ltaWxhciB0byB0aW1lcl9zdG9wKCkgYW5kIHRpbWVyX3N0YXJ0KCksCitidXQgdGhlIHJlZmVyZW5jZSByZW1haW5zIHZhbGlkLgorCiBQYXRjaCB0byBhZGQgc2V0YnVmbGluZSgpLiAoZW1haWwgZnJvbSBZYXN1aGlybyBNYXRzdW1vdG8sIHBhdGNoIGJ5IE96YWtpCiBLaWljaGksIDIwMTYgRmViIDI4KQogVXBkYXRlIE1hciA4OiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9tYXR0bi8yM2MxZjUwOTk5MDg0OTkyY2E5OApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzAyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8wMi50eHQKaW5kZXggM2M2ODk0My4uNTY2YTE5NyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzAyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMDIudHh0CkBAIC02NjMsNyArNjYzLDcgQEAKIDIyKSBBdXRvY29tbWFuZCBldmVudHMgY2FuIGJlIGZvdW5kIGJ5IHRoZWlyIG5hbWU6ID4KICAgICAgCTpoZWxwIEJ1ZldpbkxlYXZlCiA8ICAgIFRvIHNlZSBhbGwgcG9zc2libGUgZXZlbnRzOiA+Ci0JOmhlbHAgYXV0b2NvbW1hbmRzLWV2ZW50cworCTpoZWxwIGF1dG9jb21tYW5kLWV2ZW50cwogCiAyMykgQ29tbWFuZC1saW5lIHN3aXRjaGVzIGFsd2F5cyBzdGFydCB3aXRoICItIi4gIFNvIGZvciB0aGUgaGVscCBvZiB0aGUgLWYKICAgICBjb21tYW5kIHN3aXRjaCBvZiBWaW0gdXNlOiA+CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfNDEudHh0IGIvcnVudGltZS9kb2MvdXNyXzQxLnR4dAppbmRleCBkNDVhYjEzLi4zMmE4ZjZkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfNDEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzQxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IE5vdiAyOQorKnVzcl80MS50eHQqCUZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBNYXIgMDEKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTk1LDcgKzk1LDcgQEAKIHRvIHRoZSBzYW1lIHZhcmlhYmxlLgogCiBUaGUgZXhhbXBsZSB3YXMgZ2l2ZW4gdG8gZXhwbGFpbiB0aGUgY29tbWFuZHMsIGJ1dCB3b3VsZCB5b3UgcmVhbGx5IHdhbnQgdG8KLW1ha2Ugc3VjaCBhIGxvb3AgaXQgY2FuIGJlIHdyaXR0ZW4gbXVjaCBtb3JlIGNvbXBhY3Q6ID4KK21ha2Ugc3VjaCBhIGxvb3AsIGl0IGNhbiBiZSB3cml0dGVuIG11Y2ggbW9yZSBjb21wYWN0OiA+CiAKIAk6Zm9yIGkgaW4gcmFuZ2UoMSwgNCkKIAk6ICBlY2hvICJjb3VudCBpcyIgaQpAQCAtNjkzLDYgKzY5Myw3IEBACiBWYXJpYWJsZXM6CQkJCQkJKnZhci1mdW5jdGlvbnMqCiAJdHlwZSgpCQkJdHlwZSBvZiBhIHZhcmlhYmxlCiAJaXNsb2NrZWQoKQkJY2hlY2sgaWYgYSB2YXJpYWJsZSBpcyBsb2NrZWQKKwlmdW5jcmVmKCkJCWdldCBhIEZ1bmNyZWYgZm9yIGEgZnVuY3Rpb24gcmVmZXJlbmNlCiAJZnVuY3Rpb24oKQkJZ2V0IGEgRnVuY3JlZiBmb3IgYSBmdW5jdGlvbiBuYW1lCiAJZ2V0YnVmdmFyKCkJCWdldCBhIHZhcmlhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpYyBidWZmZXIKIAlzZXRidWZ2YXIoKQkJc2V0IGEgdmFyaWFibGUgaW4gYSBzcGVjaWZpYyBidWZmZXIKQEAgLTg4NCw2ICs4ODUsNyBAQAogCWdldGZvbnRuYW1lKCkJCWdldCBuYW1lIG9mIGN1cnJlbnQgZm9udCBiZWluZyB1c2VkCiAJZ2V0d2lucG9zeCgpCQlYIHBvc2l0aW9uIG9mIHRoZSBHVUkgVmltIHdpbmRvdwogCWdldHdpbnBvc3koKQkJWSBwb3NpdGlvbiBvZiB0aGUgR1VJIFZpbSB3aW5kb3cKKwliYWxsb29uX3Nob3coKQkJc2V0IHRoZSBiYWxsb29uIGNvbnRlbnQKIAogVmltIHNlcnZlcjoJCQkJCSpzZXJ2ZXItZnVuY3Rpb25zKgogCXNlcnZlcmxpc3QoKQkJcmV0dXJuIHRoZSBsaXN0IG9mIHNlcnZlciBuYW1lcwpAQCAtOTIyLDEyICs5MjQsMTQgQEAKIAl0ZXN0X2F1dG9jaGRpcigpCWVuYWJsZSAnYXV0b2NoZGlyJyBkdXJpbmcgc3RhcnR1cAogCXRlc3RfZGlzYWJsZV9jaGFyX2F2YWlsKCkJdGVzdCB3aXRob3V0IHR5cGVhaGVhZAogCXRlc3RfZ2FyYmFnZWNvbGxlY3Rfbm93KCkJZnJlZSBtZW1vcnkgcmlnaHQgbm93CisJdGVzdF9pZ25vcmVfZXJyb3IoKQlpZ25vcmUgYSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlCiAJdGVzdF9udWxsX2NoYW5uZWwoKQlyZXR1cm4gYSBudWxsIENoYW5uZWwKIAl0ZXN0X251bGxfZGljdCgpCXJldHVybiBhIG51bGwgRGljdAogCXRlc3RfbnVsbF9qb2IoKQkJcmV0dXJuIGEgbnVsbCBKb2IKIAl0ZXN0X251bGxfbGlzdCgpCXJldHVybiBhIG51bGwgTGlzdAogCXRlc3RfbnVsbF9wYXJ0aWFsKCkJcmV0dXJuIGEgbnVsbCBQYXJ0aWFsIGZ1bmN0aW9uCiAJdGVzdF9udWxsX3N0cmluZygpCXJldHVybiBhIG51bGwgU3RyaW5nCisJdGVzdF9zZXR0aW1lKCkJCXNldCB0aGUgdGltZSBWaW0gdXNlcyBpbnRlcm5hbGx5CiAKIEludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbjoJCSAgICAqY2hhbm5lbC1mdW5jdGlvbnMqCiAJY2hfY2FucmVhZCgpCQljaGVjayBpZiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gcmVhZApAQCAtMTU4OCw3ICsxNTkyLDcgQEAKIEJsYW5rIGxpbmVzIGFyZSBhbGxvd2VkIGFuZCBpZ25vcmVkLgogCiBMZWFkaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYmxhbmtzIGFuZCBUQUJzKSBhcmUgYWx3YXlzIGlnbm9yZWQuICBUaGUKLXdoaXRlc3BhY2VzIGJldHdlZW4gcGFyYW1ldGVycyAoZS5nLiBiZXR3ZWVuIHRoZSAnc2V0JyBhbmQgdGhlICdjcG9wdGlvbnMnIGluCit3aGl0ZXNwYWNlcyBiZXR3ZWVuIHBhcmFtZXRlcnMgKGUuZy4gYmV0d2VlbiB0aGUgInNldCIgYW5kIHRoZSAiY3BvcHRpb25zIiBpbgogdGhlIGV4YW1wbGUgYmVsb3cpIGFyZSByZWR1Y2VkIHRvIG9uZSBibGFuayBjaGFyYWN0ZXIgYW5kIHBsYXlzIHRoZSByb2xlIG9mIGEKIHNlcGFyYXRvciwgdGhlIHdoaXRlc3BhY2VzIGFmdGVyIHRoZSBsYXN0ICh2aXNpYmxlKSBjaGFyYWN0ZXIgbWF5IG9yIG1heSBub3QKIGJlIGlnbm9yZWQgZGVwZW5kaW5nIG9uIHRoZSBzaXR1YXRpb24sIHNlZSBiZWxvdy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZhcmlvdXMudHh0IGIvcnVudGltZS9kb2MvdmFyaW91cy50eHQKaW5kZXggMmJjYjFjYS4uYjNhYTRiNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmFyaW91cy50eHQKKysrIGIvcnVudGltZS9kb2MvdmFyaW91cy50eHQKQEAgLTEsNCArMSw0IEBACi0qdmFyaW91cy50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE2IFNlcCAwNgorKnZhcmlvdXMudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA4LjAuICBMYXN0IGNoYW5nZTogMjAxNyBGZWIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTUyNywxMiArNTI3LDE0IEBACiA6cmVkaVtyXSBFTkQJCUVuZCByZWRpcmVjdGluZyBtZXNzYWdlcy4gIHtub3QgaW4gVml9CiAKIAkJCQkJCQkqOmZpbHQqICo6ZmlsdGVyKgotOmZpbHRbZXJdIHtwYXR9IHtjb21tYW5kfQotOmZpbHRbZXJdIC97cGF0fS8ge2NvbW1hbmR9Ci0JCQlSZXN0cmljdCB0aGUgb3V0cHV0IG9mIHtjb21tYW5kfSB0byBtYXRjaGVzIHdpdGgge3BhdH0uCi0JCQlGb3IgZXhhbXBsZSwgdG8gbGlzdCBvbmx5IHhtbCBmaWxlczogPgorOmZpbHRbZXJdWyFdIHtwYXR9IHtjb21tYW5kfQorOmZpbHRbZXJdWyFdIC97cGF0fS8ge2NvbW1hbmR9CisJCQlSZXN0cmljdCB0aGUgb3V0cHV0IG9mIHtjb21tYW5kfSB0byBsaW5lcyBtYXRjaGluZworCQkJd2l0aCB7cGF0fS4gIEZvciBleGFtcGxlLCB0byBsaXN0IG9ubHkgeG1sIGZpbGVzOiA+CiAJCQkJOmZpbHRlciAvXC54bWwkLyBvbGRmaWxlcwotPAorPAkJCUlmIHRoZSBbIV0gaXMgZ2l2ZW4sIHJlc3RyaWN0IHRoZSBvdXRwdXQgb2Yge2NvbW1hbmR9CisJCQl0byBsaW5lcyB0aGF0IGRvIE5PVCBtYXRjaCB7cGF0fS4KKwogCQkJe3BhdH0gaXMgYSBWaW0gc2VhcmNoIHBhdHRlcm4uICBJbnN0ZWFkIG9mIGVuY2xvc2luZwogCQkJaXQgaW4gLyBhbnkgbm9uLUlEIGNoYXJhY3RlciAoc2VlIHwnaXNpZGVudCd8KSBjYW4gYmUKIAkJCXVzZWQsIHNvIGxvbmcgYXMgaXQgZG9lcyBub3QgYXBwZWFyIGluIHtwYXR9LiAgV2l0aG91dApAQCAtNjM0LDcgKzYzNiw3IEBACiAJCQl3aXRoIHRoZSBjb21tYW5kID4KIAkJCQk6IXtwcm9ncmFtfSB7a2V5d29yZH0KIDwJCQlUaGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgcHJvZ3JhbSB0byB1c2UgaW4gdGhlIHRvb2xzCi0JCQlkaXJlY3Rvcnkgb2YgVmltLiAgSXQgaXMgY2FsbGVkICdyZWYnIGFuZCBkb2VzIGEKKwkJCWRpcmVjdG9yeSBvZiBWaW0uICBJdCBpcyBjYWxsZWQgInJlZiIgYW5kIGRvZXMgYQogCQkJc2ltcGxlIHNwZWxsaW5nIGNoZWNrLgogCQkJU3BlY2lhbCBjYXNlczoKIAkJCS0gSWYgJ2tleXdvcmRwcmcnIGJlZ2lucyB3aXRoICI6IiBpdCBpcyBpbnZva2VkIGFzCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uOC50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uOC50eHQKaW5kZXggNGIwMjc1NS4uNWFmZTM4NSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb244LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uOC50eHQqICBGb3IgVmltIHZlcnNpb24gOC4wLiAgTGFzdCBjaGFuZ2U6IDIwMTcgSmFuIDE1CisqdmVyc2lvbjgudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDguMC4gIExhc3QgY2hhbmdlOiAyMDE3IEZlYiAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjAwLDkgKzIwMCw5IEBACiAncGVybGRsbCcJCW5hbWUgb2YgdGhlIFBlcmwgZHluYW1pYyBsaWJyYXJ5CiAncHl0aG9uZGxsJwkJbmFtZSBvZiB0aGUgUHl0aG9uIDIgZHluYW1pYyBsaWJyYXJ5CiAncHl0aG9udGhyZWVkbGwnCW5hbWUgb2YgdGhlIFB5dGhvbiAzIGR5bmFtaWMgbGlicmFyeQotJ3NpZ25jb2x1bW4nCQl3aGVuIHRvIGRpc3BsYXkgdGhlIHNpZ24gY29sdW1uCiAncmVuZGVyb3B0aW9ucycJCW9wdGlvbnMgZm9yIHRleHQgcmVuZGVyaW5nIG9uIFdpbmRvd3MKICdydWJ5ZGxsJwkJbmFtZSBvZiB0aGUgUnVieSBkeW5hbWljIGxpYnJhcnkKKydzaWduY29sdW1uJwkJd2hlbiB0byBkaXNwbGF5IHRoZSBzaWduIGNvbHVtbgogJ3RhZ2Nhc2UnCQlob3cgdG8gaGFuZGxlIGNhc2Ugd2hlbiBzZWFyY2hpbmcgaW4gdGFncyBmaWxlcwogJ3RjbGRsbCcJCW5hbWUgb2YgdGhlIFRjbCBkeW5hbWljIGxpYnJhcnkKICd0ZXJtZ3VpY29sb3JzJwkJdXNlIEdVSSBjb2xvcnMgZm9yIHRoZSB0ZXJtaW5hbApAQCAtMzQzNiw3ICszNDM2LDcgQEAKIFBhdGNoIDcuNC40OTggKGFmdGVyIDcuNC40OTcpCiBQcm9ibGVtOiAgICBUeXBvIGluIERPUyBtYWtlZmlsZS4KIFNvbHV0aW9uOiAgIENoYW5nZSBleGlzdHMgdG8gZXhpc3QuIChLZW4gVGFrYXRhKQotRmlsZXM6CSAgICBzcmMvdGVzdGRpck1ha2VfZG9zLm1haworRmlsZXM6CSAgICBzcmMvdGVzdGRpci9NYWtlX2Rvcy5tYWsKIAogUGF0Y2ggNy40LjQ5OQogUHJvYmxlbTogICAgc3Vic3RpdHV0ZSgpIGNhbiBiZSBzbG93IHdpdGggbG9uZyBzdHJpbmdzLgo=