ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2F1dG9jbWQudHh0IGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKaW5kZXggOTc4Njg2YS4uODAwMzJlMCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKKysrIGIvcnVudGltZS9kb2MvYXV0b2NtZC50eHQKQEAgLTEsNCArMSw0IEBACi0qYXV0b2NtZC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA3IE1hciAyNworKmF1dG9jbWQudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDggSnVuIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMDQsNyArMTA0LDcgQEAKIHRyaWdnZXJlZCBhbmQgdGhlIGNvbW1hbmQgZXhlY3V0ZWQsIGl0IHdpbGwgcnVuIGluIHRoZSBjb250ZXh0IG9mIHRoZSBzY3JpcHQKIGl0IHdhcyBkZWZpbmVkIGluLiAgVGhpcyBtYXR0ZXJzIGlmIHw8U0lEPnwgaXMgdXNlZCBpbiBhIGNvbW1hbmQuCiAKLVdoZW4gZXhlY3V0aW5nIHRoZSBjb21tYW5kcywgdGhlIG1lc3NhZ2VzIGZyb20gb25lIGNvbW1hbmQgb3ZlcndyaXRlcyBhCitXaGVuIGV4ZWN1dGluZyB0aGUgY29tbWFuZHMsIHRoZSBtZXNzYWdlIGZyb20gb25lIGNvbW1hbmQgb3ZlcndyaXRlcyBhCiBwcmV2aW91cyBtZXNzYWdlLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGVuIGV4ZWN1dGluZyB0aGUgY29tbWFuZHMKIG1hbnVhbGx5LiAgTW9zdGx5IHRoZSBzY3JlZW4gd2lsbCBub3Qgc2Nyb2xsIHVwLCB0aHVzIHRoZXJlIGlzIG5vIGhpdC1lbnRlcgogcHJvbXB0LiAgV2hlbiBvbmUgY29tbWFuZCBvdXRwdXRzIHR3byBtZXNzYWdlcyB0aGlzIGNhbiBoYXBwZW4gYW55d2F5LgpAQCAtMzM0LDcgKzMzNCw3IEBACiAJCQkJbGlzdCBpcyByZW5hbWVkLgogCQkJCU5PVEU6IFdoZW4gdGhpcyBhdXRvY29tbWFuZCBpcyBleGVjdXRlZCwgdGhlCiAJCQkJY3VycmVudCBidWZmZXIgIiUiIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUKLQkJCQlidWZmZXIgYmVpbmcgZGVsZXRlZCAiPGFmaWxlPiIuCisJCQkJYnVmZmVyIGJlaW5nIGRlbGV0ZWQgIjxhZmlsZT4iIGFuZCAiPGFidWY+Ii4KIAkJCQkJCQkqQnVmRW50ZXIqCiBCdWZFbnRlcgkJCUFmdGVyIGVudGVyaW5nIGEgYnVmZmVyLiAgVXNlZnVsIGZvciBzZXR0aW5nCiAJCQkJb3B0aW9ucyBmb3IgYSBmaWxlIHR5cGUuICBBbHNvIGV4ZWN1dGVkIHdoZW4KQEAgLTQwMCwxMCArNDAwLDE1IEBACiAJCQkJCQkJKkJ1ZldpbkVudGVyKgogQnVmV2luRW50ZXIJCQlBZnRlciBhIGJ1ZmZlciBpcyBkaXNwbGF5ZWQgaW4gYSB3aW5kb3cuICBUaGlzCiAJCQkJY2FuIGJlIHdoZW4gdGhlIGJ1ZmZlciBpcyBsb2FkZWQgKGFmdGVyCi0JCQkJcHJvY2Vzc2luZyB0aGUgbW9kZWxpbmVzKSwgd2hlbiBhIGhpZGRlbgorCQkJCXByb2Nlc3NpbmcgdGhlIG1vZGVsaW5lcykgb3Igd2hlbiBhIGhpZGRlbgogCQkJCWJ1ZmZlciBpcyBkaXNwbGF5ZWQgaW4gYSB3aW5kb3cgKGFuZCBpcyBubwotCQkJCWxvbmdlciBoaWRkZW4pIG9yIGEgYnVmZmVyIGFscmVhZHkgdmlzaWJsZSBpbgotCQkJCWEgd2luZG93IGlzIGFsc28gZGlzcGxheWVkIGluIGFub3RoZXIgd2luZG93LgorCQkJCWxvbmdlciBoaWRkZW4pLgorCQkJCURvZXMgbm90IGhhcHBlbiBmb3IgfDpzcGxpdHwgd2l0aG91dAorCQkJCWFyZ3VtZW50cywgc2luY2UgeW91IGtlZXAgZWRpdGluZyB0aGUgc2FtZQorCQkJCWJ1ZmZlciwgb3IgIjpzcGxpdCIgd2l0aCBhIGZpbGUgdGhhdCdzIGFscmVhZHkKKwkJCQlvcGVuIGluIGEgd2luZG93LiAgQnV0IGl0IGRvZXMgaGFwcGVuIGZvcgorCQkJCWEgIjpzcGxpdCIgd2l0aCB0aGUgbmFtZSBvZiB0aGUgY3VycmVudAorCQkJCWJ1ZmZlciwgc2luY2UgaXQgcmVsb2FkcyB0aGF0IGJ1ZmZlci4KIAkJCQkJCQkqQnVmV2luTGVhdmUqCiBCdWZXaW5MZWF2ZQkJCUJlZm9yZSBhIGJ1ZmZlciBpcyByZW1vdmVkIGZyb20gYSB3aW5kb3cuCiAJCQkJTm90IHdoZW4gaXQncyBzdGlsbCB2aXNpYmxlIGluIGFub3RoZXIgd2luZG93LgpAQCAtNjc3LDcgKzY4Miw3IEBACiAJCQkJCQkJKlF1aWNrRml4Q21kUG9zdCoKIFF1aWNrRml4Q21kUG9zdAkJCUxpa2UgUXVpY2tGaXhDbWRQcmUsIGJ1dCBhZnRlciBhIHF1aWNrZml4CiAJCQkJY29tbWFuZCBpcyBydW4sIGJlZm9yZSBqdW1waW5nIHRvIHRoZSBmaXJzdAotCQkJCWxvY2F0aW9uLgorCQkJCWxvY2F0aW9uLiAgU2VlIHxRdWlja0ZpeENtZFBvc3QtZXhhbXBsZXwuCiAJCQkJCQkJKlJlbW90ZVJlcGx5KgogUmVtb3RlUmVwbHkJCQlXaGVuIGEgcmVwbHkgZnJvbSBhIFZpbSB0aGF0IGZ1bmN0aW9ucyBhcwogCQkJCXNlcnZlciB3YXMgcmVjZWl2ZWQgfHNlcnZlcjJjbGllbnQoKXwuICBUaGUKQEAgLTg0OCw3ICs4NTMsNyBAQAogCiAKIFRoZSBmaWxlIG5hbWUgdGhhdCB0aGUgcGF0dGVybiBpcyBtYXRjaGVkIGFnYWluc3QgaXMgYWZ0ZXIgZXhwYW5kaW5nCi13aWxkY2FyZHMuICBUaHVzIGlzIHlvdSBpc3N1ZSB0aGlzIGNvbW1hbmQ6ID4KK3dpbGRjYXJkcy4gIFRodXMgaWYgeW91IGlzc3VlIHRoaXMgY29tbWFuZDogPgogCTplICRST09URElSL21haW4uJEVYVAogVGhlIGFyZ3VtZW50IGlzIGZpcnN0IGV4cGFuZGVkIHRvOiA+CiAJL3Vzci9yb290L21haW4ucHkKQEAgLTkyNyw3ICs5MzIsNyBAQAogCQkJCSAgICAgIiBjdXJyZW50IGJ1ZmZlcgogICAgIDphdSEgKiA8YnVmZmVyPTMzPgkJICAgICAiIHJlbW92ZSBidWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzIGZvcgogCQkJCSAgICAgIiBidWZmZXIgIzMzCi0gICAgOmRvYnVmIDphdSEgQ3Vyc29ySG9sZCA8YnVmZmVyPiAgIiByZW1vdmUgYXV0b2NtZCBmb3IgZ2l2ZW4gZXZlbnQgZm9yIGFsbAorICAgIDpidWZkbyA6YXUhIEN1cnNvckhvbGQgPGJ1ZmZlcj4gICIgcmVtb3ZlIGF1dG9jbWQgZm9yIGdpdmVuIGV2ZW50IGZvciBhbGwKIAkJCQkgICAgICIgYnVmZmVycwogICAgIDphdSAqIDxidWZmZXI+CQkgICAgICIgbGlzdCBidWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzIGZvcgogCQkJCSAgICAgIiBjdXJyZW50IGJ1ZmZlcgpAQCAtMTAzMSw4ICsxMDM2LDkgQEAKIAkJCXVuZGVmaW5lZCBncm91cCBuYW1lLCBWaW0gZ2l2ZXMgeW91IGFuIGVycm9yIG1lc3NhZ2UuCiAKIAkJCUFmdGVyIGFwcGx5aW5nIHRoZSBhdXRvY29tbWFuZHMgdGhlIG1vZGVsaW5lcyBhcmUKLQkJCXByb2Nlc3NlZCwgc28gdGhhdCB0aGVpciBvdmVycnVsZSB0aGUgc2V0dGluZ3MgZnJvbQotCQkJYXV0b2NvbW1hbmRzLCBsaWtlIHdoYXQgaGFwcGVucyB3aGVuIGVkaXRpbmcgYSBmaWxlLgorCQkJcHJvY2Vzc2VkLCBzbyB0aGF0IHRoZWlyIHNldHRpbmdzIG92ZXJydWxlIHRoZQorCQkJc2V0dGluZ3MgZnJvbSBhdXRvY29tbWFuZHMsIGxpa2Ugd2hhdCBoYXBwZW5zIHdoZW4KKwkJCWVkaXRpbmcgYSBmaWxlLgogCiAJCQkJCQkqOmRvYXV0b2EqICo6ZG9hdXRvYWxsKgogOmRvYXV0b2FbbGxdIFtncm91cF0ge2V2ZW50fSBbZm5hbWVdCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0IGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dAppbmRleCBjMWVlZDJjLi4yNGNmM2ZlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA3IEphbiAwNworKmNoYW5nZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDggSnVuIDIyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMjksMTYgKzIyOSwxOCBAQAogUmVwbGFjZSBtb2RlIiB8bW9kZS1pbnMtcmVwbHwpLgogCiAJCQkJCQkqY3cqICpjVyoKLVNwZWNpYWwgY2FzZTogImN3IiBhbmQgImNXIiB3b3JrIHRoZSBzYW1lIGFzICJjZSIgYW5kICJjRSIgaWYgdGhlIGN1cnNvciBpcwotb24gYSBub24tYmxhbmsuICBUaGlzIGlzIGJlY2F1c2UgVmltIGludGVycHJldHMgImN3IiBhcyBjaGFuZ2Utd29yZCwgYW5kIGEKLXdvcmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHdoaXRlIHNwYWNlLiAge1ZpOiAiY3ciIHdoZW4gb24gYSBibGFuawotZm9sbG93ZWQgYnkgb3RoZXIgYmxhbmtzIGNoYW5nZXMgb25seSB0aGUgZmlyc3QgYmxhbms7IHRoaXMgaXMgcHJvYmFibHkgYQotYnVnLCBiZWNhdXNlICJkdyIgZGVsZXRlcyBhbGwgdGhlIGJsYW5rczsgdXNlIHRoZSAndycgZmxhZyBpbiAnY3BvcHRpb25zJyB0bwotbWFrZSBpdCB3b3JrIGxpa2UgVmkgYW55d2F5fQorU3BlY2lhbCBjYXNlOiBXaGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLCAiY3ciIGFuZCAiY1ciIGRvIG5vdCBpbmNsdWRlIHRoZQord2hpdGUgc3BhY2UgYWZ0ZXIgYSB3b3JkLCB0aGV5IG9ubHkgY2hhbmdlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIHdvcmQuICBUaGlzIGlzCitiZWNhdXNlIFZpbSBpbnRlcnByZXRzICJjdyIgYXMgY2hhbmdlLXdvcmQsIGFuZCBhIHdvcmQgZG9lcyBub3QgaW5jbHVkZSB0aGUKK2ZvbGxvd2luZyB3aGl0ZSBzcGFjZS4KK3tWaTogImN3IiB3aGVuIG9uIGEgYmxhbmsgZm9sbG93ZWQgYnkgb3RoZXIgYmxhbmtzIGNoYW5nZXMgb25seSB0aGUgZmlyc3QKK2JsYW5rOyB0aGlzIGlzIHByb2JhYmx5IGEgYnVnLCBiZWNhdXNlICJkdyIgZGVsZXRlcyBhbGwgdGhlIGJsYW5rczsgdXNlIHRoZQorJ3cnIGZsYWcgaW4gJ2Nwb3B0aW9ucycgdG8gbWFrZSBpdCB3b3JrIGxpa2UgVmkgYW55d2F5fQogCiBJZiB5b3UgcHJlZmVyICJjdyIgdG8gaW5jbHVkZSB0aGUgc3BhY2UgYWZ0ZXIgYSB3b3JkLCB1c2UgdGhpcyBtYXBwaW5nOiA+CiAJOm1hcCBjdyBkd2kKLTwKK09yIHVzZSAiY2F3IiAoc2VlIHxhd3wpLgorCiAJCQkJCQkJKjpjKiAqOmNoKiAqOmNoYW5nZSoKIDp7cmFuZ2V9Y1toYW5nZV1bIV0JUmVwbGFjZSBsaW5lcyBvZiB0ZXh0IHdpdGggc29tZSBkaWZmZXJlbnQgdGV4dC4KIAkJCVR5cGUgYSBsaW5lIGNvbnRhaW5pbmcgb25seSAiLiIgdG8gc3RvcCByZXBsYWNpbmcuCkBAIC0zNDUsNiArMzQ3LDEwIEBACiBnP2c/CQkJCQkJCSpnP2c/KiAqZz8/KgogZz8/CQkJUm90MTMgZW5jb2RlIGN1cnJlbnQgbGluZS4ge25vdCBpbiBWaX0uCiAKK1RvIHR1cm4gb25lIGxpbmUgaW50byB0aXRsZSBjYXBzLCBtYWtlIGV2ZXJ5IGZpcnN0IGxldHRlciBvZiBhIHdvcmQKK3VwcGVyY2FzZTogPgorCTpzL1x2PCguKShcdyopL1x1XDFcTFwyL2cKKwogCiBBZGRpbmcgYW5kIHN1YnRyYWN0aW5nIH4KIAkJCQkJCQkqQ1RSTC1BKgpAQCAtNDc0LDcgKzQ4MCw3IEBACiAKIEEgZmlsdGVyIGlzIGEgcHJvZ3JhbSB0aGF0IGFjY2VwdHMgdGV4dCBhdCBzdGFuZGFyZCBpbnB1dCwgY2hhbmdlcyBpdCBpbiBzb21lCiB3YXksIGFuZCBzZW5kcyBpdCB0byBzdGFuZGFyZCBvdXRwdXQuICBZb3UgY2FuIHVzZSB0aGUgY29tbWFuZHMgYmVsb3cgdG8gc2VuZAotc29tZSB0ZXh0IHRocm91Z2ggYSBmaWx0ZXIsIHNvIHRoYXQgaXQgaXMgcmVwbGFjZSBieSB0aGUgZmlsdGVyIG91dHB1dC4KK3NvbWUgdGV4dCB0aHJvdWdoIGEgZmlsdGVyLCBzbyB0aGF0IGl0IGlzIHJlcGxhY2VkIGJ5IHRoZSBmaWx0ZXIgb3V0cHV0LgogRXhhbXBsZXMgb2YgZmlsdGVycyBhcmUgInNvcnQiLCB3aGljaCBzb3J0cyBsaW5lcyBhbHBoYWJldGljYWxseSwgYW5kCiAiaW5kZW50Iiwgd2hpY2ggZm9ybWF0cyBDIHByb2dyYW0gZmlsZXMgKHlvdSBuZWVkIGEgdmVyc2lvbiBvZiBpbmRlbnQgdGhhdAogd29ya3MgbGlrZSBhIGZpbHRlcjsgbm90IGFsbCB2ZXJzaW9ucyBkbykuICBUaGUgJ3NoZWxsJyBvcHRpb24gc3BlY2lmaWVzIHRoZQpAQCAtNjYxLDkgKzY2Nyw5IEBACiAJe25vdCBpbiBWaX0KIAogTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGZsYWcgdG8gY2hhbmdlIHRoZSAibWFnaWNuZXNzIiBvZiB0aGUgcGF0dGVybi4gIEEKLWRpZmZlcmVudCBjb21tYW5kIGlzIHVzZWQgaW5zdGVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgZmxhZ3MgY2FuIG9ubHkgYmUKLWZvdW5kIGJ5IHNraXBwaW5nIHRoZSBwYXR0ZXJuLCBhbmQgaW4gb3JkZXIgdG8gc2tpcCB0aGUgcGF0dGVybiB0aGUKLSJtYWdpY25lc3MiIG11c3QgYmUga25vd24uICBDYXRjaCAyMiEKK2RpZmZlcmVudCBjb21tYW5kIGlzIHVzZWQgaW5zdGVhZCwgb3IgeW91IGNhbiB1c2UgfC9cdnwgYW5kIGZyaWVuZHMuICBUaGUKK3JlYXNvbiBpcyB0aGF0IHRoZSBmbGFncyBjYW4gb25seSBiZSBmb3VuZCBieSBza2lwcGluZyB0aGUgcGF0dGVybiwgYW5kIGluCitvcmRlciB0byBza2lwIHRoZSBwYXR0ZXJuIHRoZSAibWFnaWNuZXNzIiBtdXN0IGJlIGtub3duLiAgQ2F0Y2ggMjIhCiAKIElmIHRoZSB7cGF0dGVybn0gZm9yIHRoZSBzdWJzdGl0dXRlIGNvbW1hbmQgaXMgZW1wdHksIHRoZSBjb21tYW5kIHVzZXMgdGhlCiBwYXR0ZXJuIGZyb20gdGhlIGxhc3Qgc3Vic3RpdHV0ZSBvciAiOmdsb2JhbCIgY29tbWFuZC4gIFdpdGggdGhlIFtyXSBmbGFnLCB0aGUKQEAgLTY4Niw3ICs2OTIsOSBAQAogcGF0dGVybiBvciByZXBsYWNlbWVudCBzdHJpbmcuICBFeGFtcGxlOiA+CiAJOnMrLysvLysKIAotRm9yIHRoZSBkZWZpbml0aW9uIG9mIGEgcGF0dGVybiwgc2VlIHxwYXR0ZXJufC4KK0ZvciB0aGUgZGVmaW5pdGlvbiBvZiBhIHBhdHRlcm4sIHNlZSB8cGF0dGVybnwuICBJbiBWaXN1YWwgYmxvY2sgbW9kZSwgdXNlCit8L1wlVnwgaW4gdGhlIHBhdHRlcm4gdG8gaGF2ZSB0aGUgc3Vic3RpdHV0ZSB3b3JrIGluIHRoZSBibG9jayBvbmx5LgorT3RoZXJ3aXNlIGl0IHdvcmtzIG9uIHdob2xlIGxpbmVzIGFueXdheS4KIAogCQkJCQkqc3ViLXJlcGxhY2Utc3BlY2lhbCogKjpzXD0qCiBXaGVuIHRoZSB7c3RyaW5nfSBzdGFydHMgd2l0aCAiXD0iIGl0IGlzIGV2YWx1YXRlZCBhcyBhbiBleHByZXNzaW9uLCBzZWUKQEAgLTExMjgsNyArMTEzNiwxMCBAQAogQ29udGFpbnMgdGhlIG1vc3QgcmVjZW50IHNlYXJjaC1wYXR0ZXJuLiAgVGhpcyBpcyB1c2VkIGZvciAibiIgYW5kICdobHNlYXJjaCcuCiBJdCBpcyB3cml0YWJsZSB3aXRoICI6bGV0IiwgeW91IGNhbiBjaGFuZ2UgaXQgdG8gaGF2ZSAnaGxzZWFyY2gnIGhpZ2hsaWdodAogb3RoZXIgbWF0Y2hlcyB3aXRob3V0IGFjdHVhbGx5IHNlYXJjaGluZy4gIFlvdSBjYW4ndCB5YW5rIG9yIGRlbGV0ZSBpbnRvIHRoaXMKLXJlZ2lzdGVyLiAge25vdCBpbiBWaX0KK3JlZ2lzdGVyLiAgVGhlIHNlYXJjaCBkaXJlY3Rpb24gaXMgYXZhaWxhYmxlIGluIHx2OnNlYXJjaGZvcndhcmR8LgorTm90ZSB0aGF0IHRoZSB2YWx1ZWQgaXMgcmVzdG9yZWQgd2hlbiByZXR1cm5pbmcgZnJvbSBhIGZ1bmN0aW9uCit8ZnVuY3Rpb24tc2VhcmNoLXVuZG98Lgore25vdCBpbiBWaX0KIAogCQkJCQkJCSpALyoKIFlvdSBjYW4gd3JpdGUgdG8gYSByZWdpc3RlciB3aXRoIGEgIjpsZXQiIGNvbW1hbmQgfDpsZXQtQHwuICBFeGFtcGxlOiA+CkBAIC0xMjUzLDkgKzEyNjQsMTEgQEAKIHBhcmFncmFwaCkgb3Igc2V0ICdmb3JtYXRwcmcnIHRvICJwYXIiLgogCiAJCQkJCQkJKmZvcm1hdC1jb21tZW50cyoKLVZpbSBjYW4gZm9ybWF0IGNvbW1lbnRzIGluIGEgc3BlY2lhbCB3YXkuICBWaW0gcmVjb2duaXplcyBhIGNvbW1lbnQgYnkgYQotc3BlY2lmaWMgc3RyaW5nIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSAoaWdub3Jpbmcgd2hpdGUgc3BhY2UpLiAgVGhyZWUgdHlwZXMKLW9mIGNvbW1lbnRzIGNhbiBiZSB1c2VkOgorQW4gb3ZlcnZpZXcgb2YgY29tbWVudCBmb3JtYXR0aW5nIGlzIGluIHNlY3Rpb24gfDMwLjZ8IG9mIHRoZSB1c2VyIG1hbnVhbC4KKworVmltIGNhbiBhdXRvbWF0aWNhbGx5IGluc2VydCBhbmQgZm9ybWF0IGNvbW1lbnRzIGluIGEgc3BlY2lhbCB3YXkuICBWaW0KK3JlY29nbml6ZXMgYSBjb21tZW50IGJ5IGEgc3BlY2lmaWMgc3RyaW5nIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSAoaWdub3JpbmcKK3doaXRlIHNwYWNlKS4gIFRocmVlIHR5cGVzIG9mIGNvbW1lbnRzIGNhbiBiZSB1c2VkOgogCiAtIEEgY29tbWVudCBzdHJpbmcgdGhhdCByZXBlYXRzIGF0IHRoZSBzdGFydCBvZiBlYWNoIGxpbmUuICBBbiBleGFtcGxlIGlzIHRoZQogICB0eXBlIG9mIGNvbW1lbnQgdXNlZCBpbiBzaGVsbCBzY3JpcHRzLCBzdGFydGluZyB3aXRoICIjIi4KQEAgLTEyNjMsNyArMTI3Niw3IEBACiAgIGxpbmVzLiAgQW4gZXhhbXBsZSBpcyB0aGlzIGxpc3Qgd2l0aCBkYXNoZXMuCiAtIFRocmVlLXBpZWNlIGNvbW1lbnRzIHRoYXQgaGF2ZSBhIHN0YXJ0IHN0cmluZywgYW4gZW5kIHN0cmluZywgYW5kIG9wdGlvbmFsCiAgIGxpbmVzIGluIGJldHdlZW4uICBUaGUgc3RyaW5ncyBmb3IgdGhlIHN0YXJ0LCBtaWRkbGUgYW5kIGVuZCBhcmUgZGlmZmVyZW50LgotICBBbiBleGFtcGxlIGlzIHRoZSBDLXN0eWxlIGNvbW1lbnQ6CisgIEFuIGV4YW1wbGUgaXMgdGhlIEMgc3R5bGUgY29tbWVudDoKIAkvKgogCSAqIHRoaXMgaXMgYSBDIGNvbW1lbnQKIAkgKi8KQEAgLTEyODksMjMgKzEzMDIsMjQgQEAKIAogICBlCUVuZCBvZiBhIHRocmVlLXBpZWNlIGNvbW1lbnQKIAotICBsCUxlZnQgYWRqdXN0IG1pZGRsZSB3aXRoIHN0YXJ0IG9yIGVuZCAoZGVmYXVsdCkuICBPbmx5IHJlY29nbml6ZWQgd2hlbgotCXVzZWQgdG9nZXRoZXIgd2l0aCAncycgb3IgJ2UnLgorICBsCUxlZnQgYWxpZ24uIFVzZWQgdG9nZXRoZXIgd2l0aCAncycgb3IgJ2UnLCB0aGUgbGVmdG1vc3QgY2hhcmFjdGVyIG9mCisJc3RhcnQgb3IgZW5kIHdpbGwgbGluZSB1cCB3aXRoIHRoZSBsZWZ0bW9zdCBjaGFyYWN0ZXIgZnJvbSB0aGUgbWlkZGxlLgorCVRoaXMgaXMgdGhlIGRlZmF1bHQgYW5kIGNhbiBiZSBvbWl0dGVkLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KIAotICByCVJpZ2h0IGFkanVzdCBtaWRkbGUgd2l0aCBzdGFydCBvciBlbmQuICBPbmx5IHJlY29nbml6ZWQgd2hlbiB1c2VkCi0JdG9nZXRoZXIgd2l0aCAncycgb3IgJ2UnLgorICByCVJpZ2h0IGFsaWduLiBTYW1lIGFzIGFib3ZlIGJ1dCByaWdodG1vc3QgaW5zdGVhZCBvZiBsZWZ0bW9zdC4gU2VlCisJYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KIAotICBPCURvbid0IHVzZSB0aGlzIG9uZSBmb3IgdGhlICJPIiBjb21tYW5kLgorICBPCURvbid0IGNvbnNpZGVyIHRoaXMgY29tbWVudCBmb3IgdGhlICJPIiBjb21tYW5kLgogCiAgIHgJQWxsb3dzIHRocmVlLXBpZWNlIGNvbW1lbnRzIHRvIGJlIGVuZGVkIGJ5IGp1c3QgdHlwaW5nIHRoZSBsYXN0Ci0JY2hhcmFjdGVyIG9mIHRoZSBlbmQtY29tbWVudCBzdHJpbmcgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiBhIG5ldwotCWxpbmUsIHdoZW4gdGhlIG1pZGRsZS1jb21tZW50IHN0cmluZyBoYXMgYWxyZWFkeSBiZWVuIGluc2VydGVkCi0JYXV0b21hdGljYWxseS4gIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCWNoYXJhY3RlciBvZiB0aGUgZW5kLWNvbW1lbnQgc3RyaW5nIGFzIHRoZSBmaXJzdCBhY3Rpb24gb24gYSBuZXcKKwlsaW5lIHdoZW4gdGhlIG1pZGRsZS1jb21tZW50IHN0cmluZyBoYXMgYmVlbiBpbnNlcnRlZCBhdXRvbWF0aWNhbGx5LgorCVNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgogCiAgIHtkaWdpdHN9Ci0JV2hlbiB0b2dldGhlciB3aXRoICdzJyBvciAnZSc6IGFkZCBleHRyYSBpbmRlbnQgZm9yIHRoZSBtaWRkbGUgcGFydC4KLQlUaGlzIGNhbiBiZSB1c2VkIHRvIGxlZnQtYWxpZ24gdGhlIG1pZGRsZSBwYXJ0IHdpdGggdGhlIHN0YXJ0IG9yIGVuZAotCWFuZCB0aGVuIGFkZCBhbiBvZmZzZXQuCisJV2hlbiB0b2dldGhlciB3aXRoICdzJyBvciAnZSc6IGFkZCB7ZGlnaXR9IGFtb3VudCBvZiBvZmZzZXQgdG8gYW4KKwlhdXRvbWF0aWNhbGx5IGluc2VydGVkIG1pZGRsZSBvciBlbmQgY29tbWVudCBsZWFkZXIuIFRoZSBvZmZzZXQgYmVnaW5zCisJZnJvbSBhIGxlZnQgYWxpZ25tZW50LiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KIAogICAte2RpZ2l0c30KIAlMaWtlIHtkaWdpdHN9IGJ1dCByZWR1Y2UgdGhlIGluZGVudC4gIFRoaXMgb25seSB3b3JrcyB3aGVuIHRoZXJlIGlzCkBAIC0xMzM0LDEyICsxMzQ4LDQyIEBACiAKIE5vdGljZSB0aGUgdXNlIG9mIHRoZSAieCIgZmxhZyBpbiB0aGUgYWJvdmUgdGhyZWUtcGllY2UgY29tbWVudCBkZWZpbml0aW9uLgogV2hlbiB5b3UgaGl0IFJldHVybiBpbiBhIEMtY29tbWVudCwgVmltIHdpbGwgaW5zZXJ0IHRoZSBtaWRkbGUgY29tbWVudCBsZWFkZXIKLWZvciB0aGUgbmV3IGxpbmUsIGUuZy4gIiAqICIuICBUbyBjbG9zZSB0aGlzIGNvbW1lbnQgeW91IGp1c3QgaGF2ZSB0byB0eXBlICIvIgorZm9yIHRoZSBuZXcgbGluZTogIiAqICIuICBUbyBjbG9zZSB0aGlzIGNvbW1lbnQgeW91IGp1c3QgaGF2ZSB0byB0eXBlICIvIgogYmVmb3JlIHR5cGluZyBhbnl0aGluZyBlbHNlIG9uIHRoZSBuZXcgbGluZS4gIFRoaXMgd2lsbCByZXBsYWNlIHRoZQotbWlkZGxlLWNvbW1lbnQgbGVhZGVyIHdpdGggdGhlIGVuZC1jb21tZW50IGxlYWRlciwgbGVhdmluZyBqdXN0ICIgKi8iLiAgVGhlcmUKLWlzIG5vIG5lZWQgdG8gaGl0IEJhY2tTcGFjZSBmaXJzdC4KK21pZGRsZS1jb21tZW50IGxlYWRlciB3aXRoIHRoZSBlbmQtY29tbWVudCBsZWFkZXIgYW5kIGFwcGx5IGFueSBzcGVjaWZpZWQKK2FsaWdubWVudCwgbGVhdmluZyBqdXN0ICIgKi8iLiAgVGhlcmUgaXMgbm8gbmVlZCB0byBoaXQgQmFja1NwYWNlIGZpcnN0LgogCi1FeGFtcGxlczogPgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYWxpZ25tZW50IGZsYWdzIGF0IHdvcmsgdG8gbWFrZSBhIGNvbW1lbnQgc3RhbmQgb3V0Cisoa2luZCBvZiBsb29rcyBsaWtlIGEgMSB0b28pLiBDb25zaWRlciBjb21tZW50IHN0cmluZyA+CisJc3I6LyoqKixtOioqLGV4MjoqKioqKiovCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqPC0tcmlnaHQgYWxpZ25lZCBmcm9tICJyIiBmbGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioKK29mZnNldCAyIHNwYWNlcyBmcm9tIHRoZSAiMiIgZmxhZy0tLT4qKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioqKiovCitJbiB0aGlzIGNhc2UsIHRoZSBmaXJzdCBjb21tZW50IHdhcyB0eXBlZCwgdGhlbiByZXR1cm4gd2FzIHByZXNzZWQgNCB0aW1lcywKK3RoZW4gIi8iIHdhcyBwcmVzc2VkIHRvIGVuZCB0aGUgY29tbWVudC4KKworSGVyZSBhcmUgc29tZSBmaW5lciBwb2ludHMgb2YgdGhyZWUgcGFydCBjb21tZW50cy4gVGhlcmUgYXJlIHRocmVlIHRpbWVzIHdoZW4KK2FsaWdubWVudCBhbmQgb2Zmc2V0IGZsYWdzIGFyZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb246IG9wZW5pbmcgYSBuZXcgbGluZQorYWZ0ZXIgYSBzdGFydC1jb21tZW50LCBvcGVuaW5nIGEgbmV3IGxpbmUgYmVmb3JlIGFuIGVuZC1jb21tZW50LCBhbmQKK2F1dG9tYXRpY2FsbHkgZW5kaW5nIGEgdGhyZWUtcGllY2UgY29tbWVudC4gIFRoZSBlbmQgYWxpZ25tZW50IGZsYWcgaGFzIGEKK2JhY2t3YXJkcyBwZXJzcGVjdGl2ZTsgdGhlIHJlc3VsdCBpcyB0aGF0IHRoZSBzYW1lIGFsaWdubWVudCBmbGFnIHVzZWQgd2l0aAorInMiIGFuZCAiZSIgd2lsbCByZXN1bHQgaW4gdGhlIHNhbWUgaW5kZW50IGZvciB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBwaWVjZXMuCitPbmx5IG9uZSBhbGlnbm1lbnQgcGVyIGNvbW1lbnQgcGFydCBpcyBtZWFudCB0byBiZSB1c2VkLCBidXQgYW4gb2Zmc2V0IG51bWJlcgord2lsbCBvdmVycmlkZSB0aGUgInIiIGFuZCAibCIgZmxhZy4KKworRW5hYmxpbmcgJ2NpbmRlbnQnIHdpbGwgb3ZlcnJpZGUgdGhlIGFsaWdubWVudCBmbGFncyBpbiBtYW55IGNhc2VzLgorUmVpbmRlbnRpbmcgdXNpbmcgYSBkaWZmZXJlbnQgbWV0aG9kIGxpa2UgfGdxfCBvciB8PXwgd2lsbCBub3QgY29uc3VsdAorYWxpZ25tZW50IGZsYWdzIGVpdGhlci4gVGhlIHNhbWUgYmVoYXZpb3VyIGNhbiBiZSBkZWZpbmVkIGluIHRob3NlIG90aGVyCitmb3JtYXR0aW5nIG9wdGlvbnMuIE9uZSBjb25zaWRlcmF0aW9uIGlzIHRoYXQgJ2NpbmRlbnQnIGhhcyBhZGRpdGlvbmFsIG9wdGlvbnMKK2ZvciBjb250ZXh0IGJhc2VkIGluZGVudGluZyBvZiBjb21tZW50cyBidXQgY2Fubm90IHJlcGxpY2F0ZSBtYW55IHRocmVlIHBpZWNlCitpbmRlbnQgYWxpZ25tZW50cy4gIEhvd2V2ZXIsICdpbmRlbnRleHByJyBpcyBoYXMgdGhlIGFiaWxpdHkgdG8gd29yayBiZXR0ZXIKK3dpdGggdGhyZWUgcGllY2UgY29tbWVudHMuCisKK090aGVyIGV4YW1wbGVzOiA+CiAgICAiYjoqIglJbmNsdWRlcyBsaW5lcyBzdGFydGluZyB3aXRoICIqIiwgYnV0IG5vdCBpZiB0aGUgIioiIGlzCiAJCWZvbGxvd2VkIGJ5IGEgbm9uLWJsYW5rLiAgVGhpcyBhdm9pZHMgYSBwb2ludGVyIGRlcmVmZXJlbmNlCiAJCWxpa2UgIipzdHIiIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBjb21tZW50LgpAQCAtMTM1MCwxNyArMTM5NCw2IEBACiAiI2luY2x1ZGUiIGlzIG5vdCByZWNvZ25pemVkIGFzIGEgY29tbWVudCBsaW5lLiAgQnV0IGEgbGluZSB0aGF0IHN0YXJ0cyB3aXRoCiAiIyBkZWZpbmUiIGlzIHJlY29nbml6ZWQuICBUaGlzIGlzIGEgY29tcHJvbWlzZS4KIAotT2Z0ZW4gdGhlIGFsaWdubWVudCBjYW4gYmUgY2hhbmdlZCBmcm9tIHJpZ2h0IGFsaWdubWVudCB0byBhIGxlZnQgYWxpZ25tZW50Ci13aXRoIGFuIGFkZGl0aW9uYWwgc3BhY2UuICBGb3IgZXhhbXBsZSwgZm9yIEphdmFkb2MgY29tbWVudHMsIHRoaXMgY2FuIGJlCi11c2VkIChpbnNlcnQgYSBiYWNrc2xhc2ggYmVmb3JlIHRoZSBzcGFjZSB3aGVuIHVzaW5nICI6c2V0Iik6ID4KLQlzMTovKixtYjoqLGV4OiovCi1Ob3RlIHRoYXQgYW4gb2Zmc2V0IGlzIGluY2x1ZGVkIHdpdGggc3RhcnQsIHNvIHRoYXQgdGhlIG1pZGRsZSBwYXJ0IGlzIGxlZnQKLWFsaWduZWQgd2l0aCB0aGUgc3RhcnQgYW5kIHRoZW4gYW4gb2Zmc2V0IG9mIG9uZSBjaGFyYWN0ZXIgYWRkZWQuICBUaGlzIG1ha2VzCi1pdCBwb3NzaWJsZSB0byBsZWZ0IGFsaWduIHRoZSBzdGFydCBhbmQgbWlkZGxlIGZvciB0aGlzIGNvbnN0cnVjdGlvbjogPgotCS8qKgotCSAqIGNvbW1lbnQKLQkgKi8KLQoge25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZSB8K2NvbW1lbnRzfCBmZWF0dXJlfQogCiAJCQkJCQkJKmZvLXRhYmxlKgpAQCAtMTM5MSw3ICsxNDI0LDcgQEAKIG4JV2hlbiBmb3JtYXR0aW5nIHRleHQsIHJlY29nbml6ZSBudW1iZXJlZCBsaXN0cy4gIFRoaXMgYWN0dWFsbHkgdXNlcwogCXRoZSAnZm9ybWF0bGlzdHBhdCcgb3B0aW9uLCB0aHVzIGFueSBraW5kIG9mIGxpc3QgY2FuIGJlIHVzZWQuICBUaGUKIAlpbmRlbnQgb2YgdGhlIHRleHQgYWZ0ZXIgdGhlIG51bWJlciBpcyB1c2VkIGZvciB0aGUgbmV4dCBsaW5lLiAgVGhlCi0JZGVmYXVsdCBpcyB0byBmaW5kIGEgbnVtYmVyLCBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5ICcuJywgJzonLCAnKScsCisJZGVmYXVsdCBpcyB0byBmaW5kIGEgbnVtYmVyLCBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5ICcuJywgJzonLCAnKScsCiAJJ10nIG9yICd9Jy4gIE5vdGUgdGhhdCAnYXV0b2luZGVudCcgbXVzdCBiZSBzZXQgdG9vLiAgRG9lc24ndCB3b3JrCiAJd2VsbCB0b2dldGhlciB3aXRoICIyIi4KIAlFeGFtcGxlOiA+CkBAIC0xNTU1LDkgKzE1ODgsMTAgQEAKIAkJCQk6c29ydCAvLipcJTEwdi8KIDwJCQlUbyBzb3J0IG9uIHRoZSBmaXJzdCBudW1iZXIgaW4gdGhlIGxpbmUsIG5vIG1hdHRlcgogCQkJd2hhdCBpcyBpbiBmcm9udCBvZiBpdDogPgotCQkJCTpzb3J0IC8uKlx6ZVxkLwotCi08CQkJV2l0aCBbcl0gc29ydGluZyBpcyBkb25lIG9uIHRoZSBtYXRjaGluZyB7cGF0dGVybn0KKwkJCQk6c29ydCAvLlx7LX1cemVcZC8KKzwJCQkoRXhwbGFuYXRpb246ICIuXHstfSIgbWF0Y2hlcyBhbnkgdGV4dCwgIlx6ZSIgc2V0cyB0aGUKKwkJCWVuZCBvZiB0aGUgbWF0Y2ggYW5kIFxkIG1hdGNoZXMgYSBkaWdpdC4pCisJCQlXaXRoIFtyXSBzb3J0aW5nIGlzIGRvbmUgb24gdGhlIG1hdGNoaW5nIHtwYXR0ZXJufQogCQkJaW5zdGVhZCBvZiBza2lwcGluZyBwYXN0IGl0IGFzIGRlc2NyaWJlZCBhYm92ZS4KIAkJCUZvciBleGFtcGxlLCB0byBzb3J0IG9uIG9ubHkgdGhlIGZpcnN0IHRocmVlIGxldHRlcnMKIAkJCW9mIGVhY2ggbGluZTogPgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZGVidWcudHh0IGIvcnVudGltZS9kb2MvZGVidWcudHh0CmluZGV4IGZmYzE3OGQuLjBlODNlYzcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2RlYnVnLnR4dAorKysgYi9ydW50aW1lL2RvYy9kZWJ1Zy50eHQKQEAgLTEsNCArMSw0IEBACi0qZGVidWcudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA2IE1heSAwMQorKmRlYnVnLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWF5IDAxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9kaWZmLnR4dCBiL3J1bnRpbWUvZG9jL2RpZmYudHh0CmluZGV4IDEwODcwZjcuLjFhZGVmNjAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2RpZmYudHh0CisrKyBiL3J1bnRpbWUvZG9jL2RpZmYudHh0CkBAIC0xLDQgKzEsNCBAQAotKmRpZmYudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBPY3QgMDIKKypkaWZmLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IE9jdCAwMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZXZhbC50eHQgYi9ydW50aW1lL2RvYy9ldmFsLnR4dAppbmRleCAxMjZiOThiLi4zNDlkZjJmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ldmFsLnR4dAorKysgYi9ydW50aW1lL2RvYy9ldmFsLnR4dApAQCAtMSw3ICsxLDcgQEAKLSpldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDggTWF5IDI4CisqZXZhbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDggSnVuIDI0CiAKIAotCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCisJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgogCiAKIEV4cHJlc3Npb24gZXZhbHVhdGlvbgkJCSpleHByZXNzaW9uKiAqZXhwciogKkUxNSogKmV2YWwqCkBAIC05LDcgKzksNyBAQAogVXNpbmcgZXhwcmVzc2lvbnMgaXMgaW50cm9kdWNlZCBpbiBjaGFwdGVyIDQxIG9mIHRoZSB1c2VyIG1hbnVhbCB8dXNyXzQxLnR4dHwuCiAKIE5vdGU6IEV4cHJlc3Npb24gZXZhbHVhdGlvbiBjYW4gYmUgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLiAgSWYgdGhpcyBoYXMgYmVlbgotZG9uZSwgdGhlIGZlYXR1cmVzIGluIHRoaXMgZG9jdW1lbnQgYXJlIG5vdCBhdmFpbGFibGUuICBTZWUgfCtldmFsfCBhbmQKK2RvbmUsIHRoZSBmZWF0dXJlcyBpbiB0aGlzIGRvY3VtZW50IGFyZSBub3QgYXZhaWxhYmxlLglTZWUgfCtldmFsfCBhbmQKIHxuby1ldmFsLWZlYXR1cmV8LgogCiAxLiAgVmFyaWFibGVzCQkJfHZhcmlhYmxlc3wKQEAgLTM3LDEzICszNywxNyBAQAogCiAxLjEgVmFyaWFibGUgdHlwZXMgfgogCQkJCQkJCSpFNzEyKgotVGhlcmUgYXJlIGZpdmUgdHlwZXMgb2YgdmFyaWFibGVzOgorVGhlcmUgYXJlIHNpeCB0eXBlcyBvZiB2YXJpYWJsZXM6CiAKLU51bWJlcgkJQSAzMiBiaXQgc2lnbmVkIG51bWJlci4KK051bWJlcgkJQSAzMiBiaXQgc2lnbmVkIG51bWJlci4gIHxleHByLW51bWJlcnwgKk51bWJlcioKIAkJRXhhbXBsZXM6ICAtMTIzICAweDEwICAwMTc3CiAKK0Zsb2F0CQlBIGZsb2F0aW5nIHBvaW50IG51bWJlci4gfGZsb2F0aW5nLXBvaW50LWZvcm1hdHwgKkZsb2F0KgorCQl7b25seSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CisJCUV4YW1wbGVzOiAxMjMuNDU2ICAxLjE1ZS02ICAtMS4xZTMKKwogU3RyaW5nCQlBIE5VTCB0ZXJtaW5hdGVkIHN0cmluZyBvZiA4LWJpdCB1bnNpZ25lZCBjaGFyYWN0ZXJzIChieXRlcykuCi0JCUV4YW1wbGVzOiAiYWJcdHh4XCItLSIgICd4LXonJ2EsYycKKwkJfGV4cHItc3RyaW5nfCBFeGFtcGxlczogImFiXHR4eFwiLS0iICAneC16JydhLGMnCiAKIEZ1bmNyZWYJCUEgcmVmZXJlbmNlIHRvIGEgZnVuY3Rpb24gfEZ1bmNyZWZ8LgogCQlFeGFtcGxlOiBmdW5jdGlvbigic3RybGVuIikKQEAgLTkyLDE4ICs5NiwyNiBAQAogPAkJCQkqRTc0NSogKkU3MjgqICpFNzAzKiAqRTcyOSogKkU3MzAqICpFNzMxKgogTGlzdCwgRGljdGlvbmFyeSBhbmQgRnVuY3JlZiB0eXBlcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgY29udmVydGVkLgogCi0JCQkJCQkJCSpFNzA2KgorCQkJCQkJCSpFODA1KiAqRTgwNiogKkU4MDgqCitXaGVuIG1peGluZyBOdW1iZXIgYW5kIEZsb2F0IHRoZSBOdW1iZXIgaXMgY29udmVydGVkIHRvIEZsb2F0LglPdGhlcndpc2UKK3RoZXJlIGlzIG5vIGF1dG9tYXRpYyBjb252ZXJzaW9uIG9mIEZsb2F0LiAgWW91IGNhbiB1c2Ugc3RyMmZsb2F0KCkgZm9yIFN0cmluZwordG8gRmxvYXQsIHByaW50ZigpIGZvciBGbG9hdCB0byBTdHJpbmcgYW5kIGZsb2F0Mm5yKCkgZm9yIEZsb2F0IHRvIE51bWJlci4KKworCQkJCQkJKkU3MDYqICpzdGlja3ktdHlwZS1jaGVja2luZyoKIFlvdSB3aWxsIGdldCBhbiBlcnJvciBpZiB5b3UgdHJ5IHRvIGNoYW5nZSB0aGUgdHlwZSBvZiBhIHZhcmlhYmxlLiAgWW91IG5lZWQKIHRvIHw6dW5sZXR8IGl0IGZpcnN0IHRvIGF2b2lkIHRoaXMgZXJyb3IuICBTdHJpbmcgYW5kIE51bWJlciBhcmUgY29uc2lkZXJlZAotZXF1aXZhbGVudCB0aG91Z2guICBDb25zaWRlciB0aGlzIHNlcXVlbmNlIG9mIGNvbW1hbmRzOiA+CitlcXVpdmFsZW50IHRob3VnaCwgYXMgd2VsbCBhcmUgRmxvYXQgYW5kIE51bWJlci4gIENvbnNpZGVyIHRoaXMgc2VxdWVuY2Ugb2YKK2NvbW1hbmRzOiA+CiAJOmxldCBsID0gInN0cmluZyIKIAk6bGV0IGwgPSA0NAkJIiBjaGFuZ2VzIHR5cGUgZnJvbSBTdHJpbmcgdG8gTnVtYmVyCi0JOmxldCBsID0gWzEsIDIsIDNdCSIgZXJyb3IhCisJOmxldCBsID0gWzEsIDIsIDNdCSIgZXJyb3IhICBsIGlzIHN0aWxsIGEgTnVtYmVyCisJOmxldCBsID0gNC40CQkiIGNoYW5nZXMgdHlwZSBmcm9tIE51bWJlciB0byBGbG9hdAorCTpsZXQgbCA9ICJzdHJpbmciCSIgZXJyb3IhCiAKIAogMS4yIEZ1bmN0aW9uIHJlZmVyZW5jZXMgfgogCQkJCQkqRnVuY3JlZiogKkU2OTUqICpFNzE4KgotQSBGdW5jcmVmIHZhcmlhYmxlIGlzIG9idGFpbmVkIHdpdGggdGhlIHxmdW5jdGlvbigpfCBmdW5jdGlvbi4gIEl0IGNhbiBiZSB1c2VkCitBIEZ1bmNyZWYgdmFyaWFibGUgaXMgb2J0YWluZWQgd2l0aCB0aGUgfGZ1bmN0aW9uKCl8IGZ1bmN0aW9uLglJdCBjYW4gYmUgdXNlZAogaW4gYW4gZXhwcmVzc2lvbiBpbiB0aGUgcGxhY2Ugb2YgYSBmdW5jdGlvbiBuYW1lLCBiZWZvcmUgdGhlIHBhcmVudGhlc2lzCiBhcm91bmQgdGhlIGFyZ3VtZW50cywgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiBpdCByZWZlcnMgdG8uICBFeGFtcGxlOiA+CiAKQEAgLTEzNyw3ICsxNDksNyBAQAogMS4zIExpc3RzIH4KIAkJCQkJCQkqTGlzdCogKkxpc3RzKiAqRTY4NioKIEEgTGlzdCBpcyBhbiBvcmRlcmVkIHNlcXVlbmNlIG9mIGl0ZW1zLiAgQW4gaXRlbSBjYW4gYmUgb2YgYW55IHR5cGUuICBJdGVtcwotY2FuIGJlIGFjY2Vzc2VkIGJ5IHRoZWlyIGluZGV4IG51bWJlci4gIEl0ZW1zIGNhbiBiZSBhZGRlZCBhbmQgcmVtb3ZlZCBhdCBhbnkKK2NhbiBiZSBhY2Nlc3NlZCBieSB0aGVpciBpbmRleCBudW1iZXIuCUl0ZW1zIGNhbiBiZSBhZGRlZCBhbmQgcmVtb3ZlZCBhdCBhbnkKIHBvc2l0aW9uIGluIHRoZSBzZXF1ZW5jZS4KIAogCkBAIC0xNDgsNyArMTYwLDcgQEAKIAk6bGV0IG15bGlzdCA9IFsxLCB0d28sIDMsICJmb3VyIl0KIAk6bGV0IGVtcHR5bGlzdCA9IFtdCiAKLUFuIGl0ZW0gY2FuIGJlIGFueSBleHByZXNzaW9uLiAgVXNpbmcgYSBMaXN0IGZvciBhbiBpdGVtIGNyZWF0ZXMgYQorQW4gaXRlbSBjYW4gYmUgYW55IGV4cHJlc3Npb24uCVVzaW5nIGEgTGlzdCBmb3IgYW4gaXRlbSBjcmVhdGVzIGEKIExpc3Qgb2YgTGlzdHM6ID4KIAk6bGV0IG5lc3RsaXN0ID0gW1sxMSwgMTJdLCBbMjEsIDIyXSwgWzMxLCAzMl1dCiAKQEAgLTIwNyw3ICsyMTksNyBAQAogCTplY2hvIG15bGlzdFsyOjhdCQkiIHJlc3VsdDogWzIsIDNdCiAKIE5PVEU6IG15bGlzdFtzOmVdIG1lYW5zIHVzaW5nIHRoZSB2YXJpYWJsZSAiczplIiBhcyBpbmRleC4gIFdhdGNoIG91dCBmb3IKLXVzaW5nIGEgc2luZ2xlIGxldHRlciB2YXJpYWJsZSBiZWZvcmUgdGhlICI6Ii4gIEluc2VydCBhIHNwYWNlIHdoZW4gbmVlZGVkOgordXNpbmcgYSBzaW5nbGUgbGV0dGVyIHZhcmlhYmxlIGJlZm9yZSB0aGUgIjoiLglJbnNlcnQgYSBzcGFjZSB3aGVuIG5lZWRlZDoKIG15bGlzdFtzIDogZV0uCiAKIApAQCAtMjU4LDEzICsyNzAsMTMgQEAKIDwJMAogCiBUaHVzIGNvbXBhcmluZyBMaXN0cyBpcyBtb3JlIHN0cmljdCB0aGFuIGNvbXBhcmluZyBudW1iZXJzIGFuZCBzdHJpbmdzLiAgWW91Ci1jYW4gY29tcGFyZSBzaW1wbGUgdmFsdWVzIHRoaXMgd2F5IHRvbyBieSBwdXR0aW5nIHRoZW0gaW4gYSBzdHJpbmc6ID4KK2NhbiBjb21wYXJlIHNpbXBsZSB2YWx1ZXMgdGhpcyB3YXkgdG9vIGJ5IHB1dHRpbmcgdGhlbSBpbiBhIGxpc3Q6ID4KIAogCTpsZXQgYSA9IDUKIAk6bGV0IGIgPSAiNSIKLQllY2hvIGEgPT0gYgorCTplY2hvIGEgPT0gYgogPAkxID4KLQllY2hvIFthXSA9PSBbYl0KKwk6ZWNobyBbYV0gPT0gW2JdCiA8CTAKIAogCkBAIC0zMzksNyArMzUxLDcgQEAKIElmIGFsbCB5b3Ugd2FudCB0byBkbyBpcyBtb2RpZnkgZWFjaCBpdGVtIGluIHRoZSBsaXN0IHRoZW4gdGhlIHxtYXAoKXwKIGZ1bmN0aW9uIHdpbGwgYmUgYSBzaW1wbGVyIG1ldGhvZCB0aGFuIGEgZm9yIGxvb3AuCiAKLUp1c3QgbGlrZSB0aGUgfDpsZXR8IGNvbW1hbmQsIHw6Zm9yfCBhbHNvIGFjY2VwdHMgYSBsaXN0IG9mIHZhcmlhYmxlcy4gIFRoaXMKK0p1c3QgbGlrZSB0aGUgfDpsZXR8IGNvbW1hbmQsIHw6Zm9yfCBhbHNvIGFjY2VwdHMgYSBsaXN0IG9mIHZhcmlhYmxlcy4JVGhpcwogcmVxdWlyZXMgdGhlIGFyZ3VtZW50IHRvIGJlIGEgbGlzdCBvZiBsaXN0cy4gPgogCTpmb3IgW2xudW0sIGNvbF0gaW4gW1sxLCAzXSwgWzIsIDhdLCBbMywgMF1dCiAJOiAgIGNhbGwgRG9pdChsbnVtLCBjb2wpCkBAIC0zOTYsMTAgKzQwOCwxMCBAQAogPAkJCQkJCQkqRTcxMyogKkU3MTYqICpFNzE3KgogQSBrZXkgaXMgYWx3YXlzIGEgU3RyaW5nLiAgWW91IGNhbiB1c2UgYSBOdW1iZXIsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEKIFN0cmluZyBhdXRvbWF0aWNhbGx5LiAgVGh1cyB0aGUgU3RyaW5nICc0JyBhbmQgdGhlIG51bWJlciA0IHdpbGwgZmluZCB0aGUgc2FtZQotZW50cnkuICBOb3RlIHRoYXQgdGhlIFN0cmluZyAnMDQnIGFuZCB0aGUgTnVtYmVyIDA0IGFyZSBkaWZmZXJlbnQsIHNpbmNlIHRoZQorZW50cnkuCU5vdGUgdGhhdCB0aGUgU3RyaW5nICcwNCcgYW5kIHRoZSBOdW1iZXIgMDQgYXJlIGRpZmZlcmVudCwgc2luY2UgdGhlCiBOdW1iZXIgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIFN0cmluZyAnNCcuCiAKLUEgdmFsdWUgY2FuIGJlIGFueSBleHByZXNzaW9uLiAgVXNpbmcgYSBEaWN0aW9uYXJ5IGZvciBhIHZhbHVlIGNyZWF0ZXMgYQorQSB2YWx1ZSBjYW4gYmUgYW55IGV4cHJlc3Npb24uCVVzaW5nIGEgRGljdGlvbmFyeSBmb3IgYSB2YWx1ZSBjcmVhdGVzIGEKIG5lc3RlZCBEaWN0aW9uYXJ5OiA+CiAJOmxldCBuZXN0ZGljdCA9IHsxOiB7MTE6ICdhJywgMTI6ICdiJ30sIDI6IHsyMTogJ2MnfX0KIApAQCAtNDI2LDcgKzQzOCw3IEBACiAKIERpY3Rpb25hcnkgdG8gTGlzdCBjb252ZXJzaW9uIH4KIAotWW91IG1heSB3YW50IHRvIGxvb3Agb3ZlciB0aGUgZW50cmllcyBpbiBhIGRpY3Rpb25hcnkuICBGb3IgdGhpcyB5b3UgbmVlZCB0bworWW91IG1heSB3YW50IHRvIGxvb3Agb3ZlciB0aGUgZW50cmllcyBpbiBhIGRpY3Rpb25hcnkuCUZvciB0aGlzIHlvdSBuZWVkIHRvCiB0dXJuIHRoZSBEaWN0aW9uYXJ5IGludG8gYSBMaXN0IGFuZCBwYXNzIGl0IHRvIHw6Zm9yfC4KIAogTW9zdCBvZnRlbiB5b3Ugd2FudCB0byBsb29wIG92ZXIgdGhlIGtleXMsIHVzaW5nIHRoZSB8a2V5cygpfCBmdW5jdGlvbjogPgpAQCAtNDQzLDcgKzQ1NSw3IEBACiAJOmVuZGZvcgogCiBJZiB5b3Ugd2FudCBib3RoIHRoZSBrZXkgYW5kIHRoZSB2YWx1ZSB1c2UgdGhlIHxpdGVtcygpfCBmdW5jdGlvbi4gIEl0IHJldHVybnMKLWEgTGlzdCBpbiB3aGljaCBlYWNoIGl0ZW0gaXMgYSAgTGlzdCB3aXRoIHR3byBpdGVtcywgdGhlIGtleSBhbmQgdGhlIHZhbHVlOiA+CithIExpc3QgaW4gd2hpY2ggZWFjaCBpdGVtIGlzIGEJTGlzdCB3aXRoIHR3byBpdGVtcywgdGhlIGtleSBhbmQgdGhlIHZhbHVlOiA+CiAJOmZvciBba2V5LCB2YWx1ZV0gaW4gaXRlbXMobXlkaWN0KQogCTogICBlY2hvIGtleSAuICc6ICcgLiB2YWx1ZQogCTplbmRmb3IKQEAgLTQ5Myw3ICs1MDUsNyBAQAogRGljdGlvbmFyeSBmdW5jdGlvbiB+CiAJCQkJCSpEaWN0aW9uYXJ5LWZ1bmN0aW9uKiAqc2VsZiogKkU3MjUqCiBXaGVuIGEgZnVuY3Rpb24gaXMgZGVmaW5lZCB3aXRoIHRoZSAiZGljdCIgYXR0cmlidXRlIGl0IGNhbiBiZSB1c2VkIGluIGEKLXNwZWNpYWwgd2F5IHdpdGggYSBkaWN0aW9uYXJ5LiAgRXhhbXBsZTogPgorc3BlY2lhbCB3YXkgd2l0aCBhIGRpY3Rpb25hcnkuCUV4YW1wbGU6ID4KIAk6ZnVuY3Rpb24gTXlsZW4oKSBkaWN0CiAJOiAgIHJldHVybiBsZW4oc2VsZi5kYXRhKQogCTplbmRmdW5jdGlvbgpAQCAtNTE3LDcgKzUyOSw3IEBACiAJOmVjaG8gbXlkaWN0LmxlbigpCiAKIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gZ2V0IGEgbnVtYmVyIGFuZCB0aGUgdmFsdWUgb2YgZGljdC5sZW4gaXMgYSB8RnVuY3JlZnwKLXRoYXQgcmVmZXJlbmNlcyB0aGlzIGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgdGhyb3VnaCBhCit0aGF0IHJlZmVyZW5jZXMgdGhpcyBmdW5jdGlvbi4JVGhlIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgdGhyb3VnaCBhCiB8RnVuY3JlZnwuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGVsZXRlZCB3aGVuIHRoZXJlIGlzIG5vIHxGdW5jcmVmfAogcmVtYWluaW5nIHRoYXQgcmVmZXJzIHRvIGl0LgogCkBAIC02OTksNyArNzExLDcgQEAKIENvbXBhcmUgdHdvIGV4cHI1IGV4cHJlc3Npb25zLCByZXN1bHRpbmcgaW4gYSAwIGlmIGl0IGV2YWx1YXRlcyB0byBmYWxzZSwgb3IgMQogaWYgaXQgZXZhbHVhdGVzIHRvIHRydWUuCiAKLQkJCSpleHByLT09KiAgKmV4cHItIT0qICAqZXhwci0+KiAgICpleHByLT49KgorCQkJKmV4cHItPT0qICAqZXhwci0hPSogICpleHByLT4qCSAqZXhwci0+PSoKIAkJCSpleHByLTwqICAgKmV4cHItPD0qICAqZXhwci09fiogICpleHByLSF+KgogCQkJKmV4cHItPT0jKiAqZXhwci0hPSMqICpleHByLT4jKiAgKmV4cHItPj0jKgogCQkJKmV4cHItPCMqICAqZXhwci08PSMqICpleHByLT1+IyogKmV4cHItIX4jKgpAQCAtNzM4LDIxICs3NTAsMjEgQEAKIGVxdWFsIiBjYW4gYmUgdXNlZC4gIENhc2UgaXMgbmV2ZXIgaWdub3JlZC4KIAogV2hlbiB1c2luZyAiaXMiIG9yICJpc25vdCIgd2l0aCBhIHxMaXN0fCB0aGlzIGNoZWNrcyBpZiB0aGUgZXhwcmVzc2lvbnMgYXJlCi1yZWZlcnJpbmcgdG8gdGhlIHNhbWUgfExpc3R8IGluc3RhbmNlLiAgQSBjb3B5IG9mIGEgfExpc3R8IGlzIGRpZmZlcmVudCBmcm9tCityZWZlcnJpbmcgdG8gdGhlIHNhbWUgfExpc3R8IGluc3RhbmNlLglBIGNvcHkgb2YgYSB8TGlzdHwgaXMgZGlmZmVyZW50IGZyb20KIHRoZSBvcmlnaW5hbCB8TGlzdHwuICBXaGVuIHVzaW5nICJpcyIgd2l0aG91dCBhIHxMaXN0fCBpdCBpcyBlcXVpdmFsZW50IHRvCiB1c2luZyAiZXF1YWwiLCB1c2luZyAiaXNub3QiIGVxdWl2YWxlbnQgdG8gdXNpbmcgIm5vdCBlcXVhbCIuICBFeGNlcHQgdGhhdCBhCi1kaWZmZXJlbnQgdHlwZSBtZWFucyB0aGUgdmFsdWVzIGFyZSBkaWZmZXJlbnQuICAiNCA9PSAnNCciIGlzIHRydWUsICI0IGlzICc0JyIKK2RpZmZlcmVudCB0eXBlIG1lYW5zIHRoZSB2YWx1ZXMgYXJlIGRpZmZlcmVudC4JIjQgPT0gJzQnIiBpcyB0cnVlLCAiNCBpcyAnNCciCiBpcyBmYWxzZS4KIAogV2hlbiBjb21wYXJpbmcgYSBTdHJpbmcgd2l0aCBhIE51bWJlciwgdGhlIFN0cmluZyBpcyBjb252ZXJ0ZWQgdG8gYSBOdW1iZXIsCi1hbmQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSBvbiBOdW1iZXJzLiAgVGhpcyBtZWFucyB0aGF0ICIwID09ICd4JyIgaXMgVFJVRSwKK2FuZCB0aGUgY29tcGFyaXNvbiBpcyBkb25lIG9uIE51bWJlcnMuCVRoaXMgbWVhbnMgdGhhdCAiMCA9PSAneCciIGlzIFRSVUUsCiBiZWNhdXNlICd4JyBjb252ZXJ0ZWQgdG8gYSBOdW1iZXIgaXMgemVyby4KIAogV2hlbiBjb21wYXJpbmcgdHdvIFN0cmluZ3MsIHRoaXMgaXMgZG9uZSB3aXRoIHN0cmNtcCgpIG9yIHN0cmljbXAoKS4gIFRoaXMKIHJlc3VsdHMgaW4gdGhlIG1hdGhlbWF0aWNhbCBkaWZmZXJlbmNlIChjb21wYXJpbmcgYnl0ZSB2YWx1ZXMpLCBub3QKIG5lY2Vzc2FyaWx5IHRoZSBhbHBoYWJldGljYWwgZGlmZmVyZW5jZSBpbiB0aGUgbG9jYWwgbGFuZ3VhZ2UuCiAKLVdoZW4gdXNpbmcgdGhlIG9wZXJhdG9ycyB3aXRoIGEgdHJhaWxpbmcgJyMiLCBvciB0aGUgc2hvcnQgdmVyc2lvbiBhbmQKK1doZW4gdXNpbmcgdGhlIG9wZXJhdG9ycyB3aXRoIGEgdHJhaWxpbmcgJyMnLCBvciB0aGUgc2hvcnQgdmVyc2lvbiBhbmQKICdpZ25vcmVjYXNlJyBpcyBvZmYsIHRoZSBjb21wYXJpbmcgaXMgZG9uZSB3aXRoIHN0cmNtcCgpOiBjYXNlIG1hdHRlcnMuCiAKIFdoZW4gdXNpbmcgdGhlIG9wZXJhdG9ycyB3aXRoIGEgdHJhaWxpbmcgJz8nLCBvciB0aGUgc2hvcnQgdmVyc2lvbiBhbmQKQEAgLTc5MiwxMSArODA0LDMwIEBACiAJIjEyMyIgKyAiNDU2IiA9IDU3OQogCSIxMjMiIC4gIjQ1NiIgPSAiMTIzNDU2IgogCi1XaGVuIHRoZSByaWdodGhhbmQgc2lkZSBvZiAnLycgaXMgemVybywgdGhlIHJlc3VsdCBpcyAweDdmZmZmZmZmLgorU2luY2UgJy4nIGhhcyB0aGUgc2FtZSBwcmVjZWRlbmNlIGFzICcrJyBhbmQgJy0nLCB5b3UgbmVlZCB0byByZWFkOiA+CisJMSAuIDkwICsgOTAuMAorQXM6ID4KKwkoMSAuIDkwKSArIDkwLjAKK1RoYXQgd29ya3MsIHNpbmNlIHRoZSBTdHJpbmcgIjE5MCIgaXMgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIE51bWJlcgorMTkwLCB3aGljaCBjYW4gYmUgYWRkZWQgdG8gdGhlIEZsb2F0IDkwLjAuICBIb3dldmVyOiA+CisJMSAuIDkwICogOTAuMAorU2hvdWxkIGJlIHJlYWQgYXM6ID4KKwkxIC4gKDkwICogOTAuMCkKK1NpbmNlICcuJyBoYXMgbG93ZXIgcHJlY2VkZW5jZSB0aGFuICcqJy4gIFRoaXMgZG9lcyBOT1Qgd29yaywgc2luY2UgdGhpcworYXR0ZW1wdHMgdG8gY29uY2F0ZW5hdGUgYSBGbG9hdCBhbmQgYSBTdHJpbmcuCisKK1doZW4gZGl2aWRpbmcgYSBOdW1iZXIgYnkgemVybyB0aGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHZhbHVlOgorCSAgMCAvIDAgID0gLTB4ODAwMDAwMDAJKGxpa2UgTmFOIGZvciBGbG9hdCkKKwkgPjAgLyAwICA9ICAweDdmZmZmZmZmCShsaWtlIHBvc2l0aXZlIGluZmluaXR5KQorCSA8MCAvIDAgID0gLTB4N2ZmZmZmZmYJKGxpa2UgbmVnYXRpdmUgaW5maW5pdHkpCisJKGJlZm9yZSBWaW0gNy4yIGl0IHdhcyBhbHdheXMgMHg3ZmZmZmZmZikKKwogV2hlbiB0aGUgcmlnaHRoYW5kIHNpZGUgb2YgJyUnIGlzIHplcm8sIHRoZSByZXN1bHQgaXMgMC4KIAogTm9uZSBvZiB0aGVzZSB3b3JrIGZvciB8RnVuY3JlZnxzLgogCisuIGFuZCAlIGRvIG5vdCB3b3JrIGZvciBGbG9hdC4gKkU4MDQqCisKIAogZXhwcjcJCQkJCQkJKmV4cHI3KgogLS0tLS0KQEAgLTgxMCw3ICs4NDEsNyBAQAogCiBBIFN0cmluZyB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIE51bWJlciBmaXJzdC4KIAotVGhlc2UgdGhyZWUgY2FuIGJlIHJlcGVhdGVkIGFuZCBtaXhlZC4gIEV4YW1wbGVzOgorVGhlc2UgdGhyZWUgY2FuIGJlIHJlcGVhdGVkIGFuZCBtaXhlZC4JRXhhbXBsZXM6CiAJIS0xCSAgICA9PSAwCiAJISE4CSAgICA9PSAxCiAJLS05CSAgICA9PSA5CkBAIC04MzUsNyArODY2LDcgQEAKIAogSWYgZXhwcjggaXMgYSB8TGlzdHwgdGhlbiBpdCByZXN1bHRzIHRoZSBpdGVtIGF0IGluZGV4IGV4cHIxLiAgU2VlIHxsaXN0LWluZGV4fAogZm9yIHBvc3NpYmxlIGluZGV4IHZhbHVlcy4gIElmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UgdGhpcyByZXN1bHRzIGluIGFuCi1lcnJvci4gIEV4YW1wbGU6ID4KK2Vycm9yLglFeGFtcGxlOiA+CiAJOmxldCBpdGVtID0gbXlsaXN0Wy0xXQkJIiBnZXQgbGFzdCBpdGVtCiAKIEdlbmVyYWxseSwgaWYgYSB8TGlzdHwgaW5kZXggaXMgZXF1YWwgdG8gb3IgaGlnaGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUKQEAgLTg2Niw3ICs4OTcsNyBAQAogCTpsZXQgcyA9IHNbOi0zXQkJCSIgcmVtb3ZlIGxhc3QgdHdvIGJ5dGVzCiAKIElmIGV4cHI4IGlzIGEgfExpc3R8IHRoaXMgcmVzdWx0cyBpbiBhIG5ldyB8TGlzdHwgd2l0aCB0aGUgaXRlbXMgaW5kaWNhdGVkIGJ5Ci10aGUgaW5kZXhlcyBleHByMWEgYW5kIGV4cHIxYi4gIFRoaXMgd29ya3MgbGlrZSB3aXRoIGEgU3RyaW5nLCBhcyBleHBsYWluZWQKK3RoZSBpbmRleGVzIGV4cHIxYSBhbmQgZXhwcjFiLglUaGlzIHdvcmtzIGxpa2Ugd2l0aCBhIFN0cmluZywgYXMgZXhwbGFpbmVkCiBqdXN0IGFib3ZlLCBleGNlcHQgdGhhdCBpbmRleGVzIG91dCBvZiByYW5nZSBjYXVzZSBhbiBlcnJvci4gIEV4YW1wbGVzOiA+CiAJOmxldCBsID0gbXlsaXN0WzozXQkJIiBmaXJzdCBmb3VyIGl0ZW1zCiAJOmxldCBsID0gbXlsaXN0WzQ6NF0JCSIgTGlzdCB3aXRoIG9uZSBpdGVtCkBAIC05MDksNiArOTQwLDUzIEBACiAKIERlY2ltYWwsIEhleGFkZWNpbWFsIChzdGFydGluZyB3aXRoIDB4IG9yIDBYKSwgb3IgT2N0YWwgKHN0YXJ0aW5nIHdpdGggMCkuCiAKKwkJCQkJCSpmbG9hdGluZy1wb2ludC1mb3JtYXQqCitGbG9hdGluZyBwb2ludCBudW1iZXJzIGNhbiBiZSB3cml0dGVuIGluIHR3byBmb3JtczoKKworCVstK117Tn0ue019CisJWy0rXXtOfS57TX1lWy0rXXtleHB9CisKK3tOfSBhbmQge019IGFyZSBudW1iZXJzLiAgQm90aCB7Tn0gYW5kIHtNfSBtdXN0IGJlIHByZXNlbnQgYW5kIGNhbiBvbmx5Citjb250YWluIGRpZ2l0cy4KK1stK10gbWVhbnMgdGhlcmUgaXMgYW4gb3B0aW9uYWwgcGx1cyBvciBtaW51cyBzaWduLgore2V4cH0gaXMgdGhlIGV4cG9uZW50LCBwb3dlciBvZiAxMC4KK09ubHkgYSBkZWNpbWFsIHBvaW50IGlzIGFjY2VwdGVkLCBub3QgYSBjb21tYS4JTm8gbWF0dGVyIHdoYXQgdGhlIGN1cnJlbnQKK2xvY2FsZSBpcy4KK3tvbmx5IHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKworRXhhbXBsZXM6CisJMTIzLjQ1NgorCSswLjAwMDEKKwk1NS4wCisJLTAuMTIzCisJMS4yMzRlMDMKKwkxLjBFLTYKKwktMy4xNDE2ZSs4OAorCitUaGVzZSBhcmUgSU5WQUxJRDoKKwkzLgkJZW1wdHkge019CisJMWU0MAkJbWlzc2luZyAue019CisKK1JhdGlvbmFsZToKK0JlZm9yZSBmbG9hdGluZyBwb2ludCB3YXMgaW50cm9kdWNlZCwgdGhlIHRleHQgIjEyMy40NTYiIHdhcyBpbnRlcnByZXRlZCBhcwordGhlIHR3byBudW1iZXJzICIxMjMiIGFuZCAiNDU2IiwgYm90aCBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgYW5kIGNvbmNhdGVuYXRlZCwKK3Jlc3VsdGluZyBpbiB0aGUgc3RyaW5nICIxMjM0NTYiLiAgU2luY2UgdGhpcyB3YXMgY29uc2lkZXJlZCBwb2ludGxlc3MsIGFuZCB3ZQorY291bGQgbm90IGZpbmQgaXQgYWN0dWFsbHkgYmVpbmcgdXNlZCBpbiBWaW0gc2NyaXB0cywgdGhpcyBiYWNrd2FyZHMKK2luY29tcGF0aWJpbGl0eSB3YXMgYWNjZXB0ZWQgaW4gZmF2b3Igb2YgYmVpbmcgYWJsZSB0byB1c2UgdGhlIG5vcm1hbCBub3RhdGlvbgorZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuCisKKwkJCQkJCSpmbG9hdGluZy1wb2ludC1wcmVjaXNpb24qCitUaGUgcHJlY2lzaW9uIGFuZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludHMgbnVtYmVycyBkZXBlbmRzIG9uIHdoYXQgImRvdWJsZSIKK21lYW5zIGluIHRoZSBsaWJyYXJ5IFZpbSB3YXMgY29tcGlsZWQgd2l0aC4gIFRoZXJlIGlzIG5vIHdheSB0byBjaGFuZ2UgdGhpcyBhdAorcnVudGltZS4KKworVGhlIGRlZmF1bHQgZm9yIGRpc3BsYXlpbmcgYSB8RmxvYXR8IGlzIHRvIHVzZSA2IGRlY2ltYWwgcGxhY2VzLCBsaWtlIHVzaW5nCitwcmludGYoIiVnIiwgZikuICBZb3UgY2FuIHNlbGVjdCBzb21ldGhpbmcgZWxzZSB3aGVuIHVzaW5nIHRoZSB8cHJpbnRmKCl8CitmdW5jdGlvbi4gIEV4YW1wbGU6ID4KKwk6ZWNobyBwcmludGYoJyUuMTVlJywgYXRhbigxKSkKKzwJNy44NTM5ODE2MzM5NzQ0ODNlLTAxCisKKwogCiBzdHJpbmcJCQkJCQkJKmV4cHItc3RyaW5nKiAqRTExNCoKIC0tLS0tLQpAQCAtOTI0LDcgKzEwMDIsNyBAQAogXHguCWJ5dGUgc3BlY2lmaWVkIHdpdGggb25lIGhleCBudW1iZXIgKG11c3QgYmUgZm9sbG93ZWQgYnkgbm9uLWhleCBjaGFyKQogXFguLglzYW1lIGFzIFx4Li4KIFxYLglzYW1lIGFzIFx4LgotXHUuLi4uICBjaGFyYWN0ZXIgc3BlY2lmaWVkIHdpdGggdXAgdG8gNCBoZXggbnVtYmVycywgc3RvcmVkIGFjY29yZGluZyB0byB0aGUKK1x1Li4uLgljaGFyYWN0ZXIgc3BlY2lmaWVkIHdpdGggdXAgdG8gNCBoZXggbnVtYmVycywgc3RvcmVkIGFjY29yZGluZyB0byB0aGUKIAljdXJyZW50IHZhbHVlIG9mICdlbmNvZGluZycgKGUuZy4sICJcdTAyYTQiKQogXFUuLi4uCXNhbWUgYXMgXHUuLi4uCiBcYgliYWNrc3BhY2UgPEJTPgpAQCAtOTUwLDExICsxMDI4LDExIEBACiAKIE5vdGUgdGhhdCBzaW5nbGUgcXVvdGVzIGFyZSB1c2VkLgogCi1UaGlzIHN0cmluZyBpcyB0YWtlbiBhcyBpdCBpcy4gIE5vIGJhY2tzbGFzaGVzIGFyZSByZW1vdmVkIG9yIGhhdmUgYSBzcGVjaWFsCitUaGlzIHN0cmluZyBpcyB0YWtlbiBhcyBpdCBpcy4JTm8gYmFja3NsYXNoZXMgYXJlIHJlbW92ZWQgb3IgaGF2ZSBhIHNwZWNpYWwKIG1lYW5pbmcuICBUaGUgb25seSBleGNlcHRpb24gaXMgdGhhdCB0d28gcXVvdGVzIHN0YW5kIGZvciBvbmUgcXVvdGUuCiAKIFNpbmdsZSBxdW90ZWQgc3RyaW5ncyBhcmUgdXNlZnVsIGZvciBwYXR0ZXJucywgc28gdGhhdCBiYWNrc2xhc2hlcyBkbyBub3QgbmVlZAotdG8gYmUgZG91YmxlZC4gIFRoZXNlIHR3byBjb21tYW5kcyBhcmUgZXF1aXZhbGVudDogPgordG8gYmUgZG91YmxlZC4JVGhlc2UgdHdvIGNvbW1hbmRzIGFyZSBlcXVpdmFsZW50OiA+CiAJaWYgYSA9fiAiXFxzKiIKIAlpZiBhID1+ICdccyonCiAKQEAgLTk4MCw3ICsxMDU4LDcgQEAKIAogVGhlIHJlc3VsdCBpcyB0aGUgY29udGVudHMgb2YgdGhlIG5hbWVkIHJlZ2lzdGVyLCBhcyBhIHNpbmdsZSBzdHJpbmcuCiBOZXdsaW5lcyBhcmUgaW5zZXJ0ZWQgd2hlcmUgcmVxdWlyZWQuICBUbyBnZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSB1bm5hbWVkCi1yZWdpc3RlciB1c2UgQCIgb3IgQEAuICBTZWUgfHJlZ2lzdGVyc3wgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBhdmFpbGFibGUKK3JlZ2lzdGVyIHVzZSBAIiBvciBAQC4JU2VlIHxyZWdpc3RlcnN8IGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgYXZhaWxhYmxlCiByZWdpc3RlcnMuCiAKIFdoZW4gdXNpbmcgdGhlICc9JyByZWdpc3RlciB5b3UgZ2V0IHRoZSBleHByZXNzaW9uIGl0c2VsZiwgbm90IHdoYXQgaXQKQEAgLTEwNDcsNyArMTEyNSw3IEBACiB8bG9jYWwtdmFyaWFibGV8ICAgICBsOgkgIExvY2FsIHRvIGEgZnVuY3Rpb24uCiB8c2NyaXB0LXZhcmlhYmxlfCAgICBzOgkgIExvY2FsIHRvIGEgfDpzb3VyY2V8J2VkIFZpbSBzY3JpcHQuCiB8ZnVuY3Rpb24tYXJndW1lbnR8ICBhOgkgIEZ1bmN0aW9uIGFyZ3VtZW50IChvbmx5IGluc2lkZSBhIGZ1bmN0aW9uKS4KLXx2aW0tdmFyaWFibGV8ICAgICAgIHY6CSAgR2xvYmFsLCBwcmVkZWZpbmVkIGJ5IFZpbS4KK3x2aW0tdmFyaWFibGV8CSAgICAgdjoJICBHbG9iYWwsIHByZWRlZmluZWQgYnkgVmltLgogCiBUaGUgc2NvcGUgbmFtZSBieSBpdHNlbGYgY2FuIGJlIHVzZWQgYXMgYSB8RGljdGlvbmFyeXwuICBGb3IgZXhhbXBsZSwgdG8KIGRlbGV0ZSBhbGwgc2NyaXB0LWxvY2FsIHZhcmlhYmxlczogPgpAQCAtMTA2OCw4ICsxMTQ2LDggQEAKIAkJaW4gdGhpcyBjYXNlLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIGFuIGFjdGlvbiBvbmx5IHdoZW4KIAkJdGhlIGJ1ZmZlciBoYXMgY2hhbmdlZC4gIEV4YW1wbGU6ID4KIAkJICAgIDppZiBteV9jaGFuZ2VkdGljayAhPSBiOmNoYW5nZWR0aWNrCi0JCSAgICA6ICAgbGV0IG15X2NoYW5nZWR0aWNrID0gYjpjaGFuZ2VkdGljawotCQkgICAgOiAgIGNhbGwgTXlfVXBkYXRlKCkKKwkJICAgIDoJbGV0IG15X2NoYW5nZWR0aWNrID0gYjpjaGFuZ2VkdGljaworCQkgICAgOgljYWxsIE15X1VwZGF0ZSgpCiAJCSAgICA6ZW5kaWYKIDwKIAkJCQkJCSp3aW5kb3ctdmFyaWFibGUqICp3OnZhcioKQEAgLTEwODMsNyArMTE2MSw3IEBACiAKIAkJCQkJCSpnbG9iYWwtdmFyaWFibGUqICpnOnZhcioKIEluc2lkZSBmdW5jdGlvbnMgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgYWNjZXNzZWQgd2l0aCAiZzoiLiAgT21pdHRpbmcgdGhpcyB3aWxsCi1hY2Nlc3MgYSB2YXJpYWJsZSBsb2NhbCB0byBhIGZ1bmN0aW9uLiAgQnV0ICJnOiIgY2FuIGFsc28gYmUgdXNlZCBpbiBhbnkgb3RoZXIKK2FjY2VzcyBhIHZhcmlhYmxlIGxvY2FsIHRvIGEgZnVuY3Rpb24uCUJ1dCAiZzoiIGNhbiBhbHNvIGJlIHVzZWQgaW4gYW55IG90aGVyCiBwbGFjZSBpZiB5b3UgbGlrZS4KIAogCQkJCQkJKmxvY2FsLXZhcmlhYmxlKiAqbDp2YXIqCkBAIC0xMjE2LDcgKzEyOTQsNyBAQAogCQkgICBzZXQgYmVmb3JlIGFuIGF1dG9jb21tYW5kIGV2ZW50IGZvciBhIGZpbGUgcmVhZC93cml0ZQogCQkgICBjb21tYW5kIGlzIHRyaWdnZXJlZC4gIFRoZXJlIGlzIGEgbGVhZGluZyBzcGFjZSB0byBtYWtlIGl0CiAJCSAgIHBvc3NpYmxlIHRvIGFwcGVuZCB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5IGFmdGVyIHRoZQotCQkgICByZWFkL3dyaXRlIGNvbW1hbmQuICBOb3RlOiBUaGUgIitjbWQiIGFyZ3VtZW50IGlzbid0CisJCSAgIHJlYWQvd3JpdGUgY29tbWFuZC4JTm90ZTogVGhlICIrY21kIiBhcmd1bWVudCBpc24ndAogCQkgICBpbmNsdWRlZCBoZXJlLCBiZWNhdXNlIGl0IHdpbGwgYmUgZXhlY3V0ZWQgYW55d2F5LgogCQkyLiBXaGVuIHByaW50aW5nIGEgUG9zdFNjcmlwdCBmaWxlIHdpdGggIjpoYXJkY29weSIgdGhpcyBpcwogCQkgICB0aGUgYXJndW1lbnQgZm9yIHRoZSAiOmhhcmRjb3B5IiBjb21tYW5kLiAgVGhpcyBjYW4gYmUgdXNlZApAQCAtMTIzMCw3ICsxMzA4LDcgQEAKIAogCQkJCQkqdjpjb3VudCogKmNvdW50LXZhcmlhYmxlKgogdjpjb3VudAkJVGhlIGNvdW50IGdpdmVuIGZvciB0aGUgbGFzdCBOb3JtYWwgbW9kZSBjb21tYW5kLiAgQ2FuIGJlIHVzZWQKLQkJdG8gZ2V0IHRoZSBjb3VudCBiZWZvcmUgYSBtYXBwaW5nLiAgUmVhZC1vbmx5LiAgRXhhbXBsZTogPgorCQl0byBnZXQgdGhlIGNvdW50IGJlZm9yZSBhIG1hcHBpbmcuICBSZWFkLW9ubHkuCUV4YW1wbGU6ID4KIAk6bWFwIF94IDo8Qy1VPmVjaG8gInRoZSBjb3VudCBpcyAiIC4gdjpjb3VudDxDUj4KIDwJCU5vdGU6IFRoZSA8Qy1VPiBpcyByZXF1aXJlZCB0byByZW1vdmUgdGhlIGxpbmUgcmFuZ2UgdGhhdCB5b3UKIAkJZ2V0IHdoZW4gdHlwaW5nICc6JyBhZnRlciBhIGNvdW50LgpAQCAtMTI1MSw3ICsxMzI5LDcgQEAKIAkJU2VlIHxtdWx0aS1sYW5nfC4KIAogCQkJCQkqdjpkeWluZyogKmR5aW5nLXZhcmlhYmxlKgotdjpkeWluZwkJTm9ybWFsbHkgemVyby4gIFdoZW4gYSBkZWFkbHkgc2lnbmFsIGlzIGNhdWdodCBpdCdzIHNldCB0bwordjpkeWluZwkJTm9ybWFsbHkgemVyby4JV2hlbiBhIGRlYWRseSBzaWduYWwgaXMgY2F1Z2h0IGl0J3Mgc2V0IHRvCiAJCW9uZS4gIFdoZW4gbXVsdGlwbGUgc2lnbmFscyBhcmUgY2F1Z2h0IHRoZSBudW1iZXIgaW5jcmVhc2VzLgogCQlDYW4gYmUgdXNlZCBpbiBhbiBhdXRvY29tbWFuZCB0byBjaGVjayBpZiBWaW0gZGlkbid0CiAJCXRlcm1pbmF0ZSBub3JtYWxseS4ge29ubHkgd29ya3Mgb24gVW5peH0KQEAgLTEzMjEsNyArMTM5OSw3IEBACiAJCQknZGlmZmV4cHInCW91dHB1dCBvZiBkaWZmCiAJCQkncGF0Y2hleHByJwlyZXN1bHRpbmcgcGF0Y2hlZCBmaWxlCiAJCSgqKSBXaGVuIGRvaW5nIGNvbnZlcnNpb24gZm9yIGEgd3JpdGUgY29tbWFuZCAoZS5nLiwgIjp3Ci0JCWZpbGUiKSBpdCB3aWxsIGJlIGVxdWFsIHRvIHY6Zm5hbWVfaW4uICBXaGVuIGRvaW5nIGNvbnZlcnNpb24KKwkJZmlsZSIpIGl0IHdpbGwgYmUgZXF1YWwgdG8gdjpmbmFtZV9pbi4JV2hlbiBkb2luZyBjb252ZXJzaW9uCiAJCWZvciBhIHJlYWQgY29tbWFuZCAoZS5nLiwgIjplIGZpbGUiKSBpdCB3aWxsIGJlIGEgdGVtcG9yYXJ5CiAJCWZpbGUgYW5kIGRpZmZlcmVudCBmcm9tIHY6Zm5hbWVfaW4uCiAKQEAgLTE0MjMsNyArMTUwMSw3IEBACiA8CQlSZWFkLW9ubHkuCiAKIAkJCQkJKnY6cHJvZmlsaW5nKiAqcHJvZmlsaW5nLXZhcmlhYmxlKgotdjpwcm9maWxpbmcJTm9ybWFsbHkgemVyby4gIFNldCB0byBvbmUgYWZ0ZXIgdXNpbmcgIjpwcm9maWxlIHN0YXJ0Ii4KK3Y6cHJvZmlsaW5nCU5vcm1hbGx5IHplcm8uCVNldCB0byBvbmUgYWZ0ZXIgdXNpbmcgIjpwcm9maWxlIHN0YXJ0Ii4KIAkJU2VlIHxwcm9maWxpbmd8LgogCiAJCQkJCSp2OnByb2duYW1lKiAqcHJvZ25hbWUtdmFyaWFibGUqCkBAIC0xNDQ4LDYgKzE1MjYsMTUgQEAKIHY6c2VydmVybmFtZQlUaGUgcmVzdWx0aW5nIHJlZ2lzdGVyZWQgfHgxMS1jbGllbnRzZXJ2ZXJ8IG5hbWUgaWYgYW55LgogCQlSZWFkLW9ubHkuCiAKKwkJCit2OnNlYXJjaGZvcndhcmQJCQkqdjpzZWFyY2hmb3J3YXJkKiAqc2VhcmNoZm9yd2FyZC12YXJpYWJsZSoKKwkJU2VhcmNoIGRpcmVjdGlvbjogIDEgYWZ0ZXIgYSBmb3J3YXJkIHNlYXJjaCwgMCBhZnRlciBhCisJCWJhY2t3YXJkIHNlYXJjaC4gIEl0IGlzIHJlc2V0IHRvIGZvcndhcmQgd2hlbiBkaXJlY3RseSBzZXR0aW5nCisJCXRoZSBsYXN0IHNlYXJjaCBwYXR0ZXJuLCBzZWUgfHF1b3RlL3wuCisJCU5vdGUgdGhhdCB0aGUgdmFsdWUgaXMgcmVzdG9yZWQgd2hlbiByZXR1cm5pbmcgZnJvbSBhCisJCWZ1bmN0aW9uLiB8ZnVuY3Rpb24tc2VhcmNoLXVuZG98LgorCQlSZWFkLXdyaXRlLgorCiAJCQkJCSp2OnNoZWxsX2Vycm9yKiAqc2hlbGxfZXJyb3ItdmFyaWFibGUqCiB2OnNoZWxsX2Vycm9yCVJlc3VsdCBvZiB0aGUgbGFzdCBzaGVsbCBjb21tYW5kLiAgV2hlbiBub24temVybywgdGhlIGxhc3QKIAkJc2hlbGwgY29tbWFuZCBoYWQgYW4gZXJyb3IuICBXaGVuIHplcm8sIHRoZXJlIHdhcyBubyBwcm9ibGVtLgpAQCAtMTQ3NywyMCArMTU2NCwyMCBAQAogCQkJJ2QnCURlbGV0ZSBzd2FwZmlsZQogCQkJJ3EnCVF1aXQKIAkJCSdhJwlBYm9ydAotCQlUaGUgdmFsdWUgc2hvdWxkIGJlIGEgc2luZ2xlLWNoYXJhY3RlciBzdHJpbmcuICBBbiBlbXB0eSB2YWx1ZQorCQlUaGUgdmFsdWUgc2hvdWxkIGJlIGEgc2luZ2xlLWNoYXJhY3RlciBzdHJpbmcuCUFuIGVtcHR5IHZhbHVlCiAJCXJlc3VsdHMgaW4gdGhlIHVzZXIgYmVpbmcgYXNrZWQsIGFzIHdvdWxkIGhhcHBlbiB3aGVuIHRoZXJlIGlzCiAJCW5vIFN3YXBFeGlzdHMgYXV0b2NvbW1hbmQuICBUaGUgZGVmYXVsdCBpcyBlbXB0eS4KIAogCQkJCQkqdjpzd2FwY29tbWFuZCogKnN3YXBjb21tYW5kLXZhcmlhYmxlKgogdjpzd2FwY29tbWFuZAlOb3JtYWwgbW9kZSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIGEgZmlsZSBoYXMgYmVlbgogCQlvcGVuZWQuICBDYW4gYmUgdXNlZCBmb3IgYSB8U3dhcEV4aXN0c3wgYXV0b2NvbW1hbmQgdG8gaGF2ZQotCQlhbm90aGVyIFZpbSBvcGVuIHRoZSBmaWxlIGFuZCBqdW1wIHRvIHRoZSByaWdodCBwbGFjZS4gIEZvcgorCQlhbm90aGVyIFZpbSBvcGVuIHRoZSBmaWxlIGFuZCBqdW1wIHRvIHRoZSByaWdodCBwbGFjZS4JRm9yCiAJCWV4YW1wbGUsIHdoZW4ganVtcGluZyB0byBhIHRhZyB0aGUgdmFsdWUgaXMgIjp0YWcgdGFnbmFtZVxyIi4KIAkJRm9yICI6ZWRpdCArY21kIGZpbGUiIHRoZSB2YWx1ZSBpcyAiOmNtZFxyIi4KIAogCQkJCSp2OnRlcm1yZXNwb25zZSogKnRlcm1yZXNwb25zZS12YXJpYWJsZSoKIHY6dGVybXJlc3BvbnNlCVRoZSBlc2NhcGUgc2VxdWVuY2UgcmV0dXJuZWQgYnkgdGhlIHRlcm1pbmFsIGZvciB0aGUgfHRfUlZ8Ci0JCXRlcm1jYXAgZW50cnkuICBJdCBpcyBzZXQgd2hlbiBWaW0gcmVjZWl2ZXMgYW4gZXNjYXBlIHNlcXVlbmNlCisJCXRlcm1jYXAgZW50cnkuCUl0IGlzIHNldCB3aGVuIFZpbSByZWNlaXZlcyBhbiBlc2NhcGUgc2VxdWVuY2UKIAkJdGhhdCBzdGFydHMgd2l0aCBFU0MgWyBvciBDU0kgYW5kIGVuZHMgaW4gYSAnYycsIHdpdGggb25seQogCQlkaWdpdHMsICc7JyBhbmQgJy4nIGluIGJldHdlZW4uCiAJCVdoZW4gdGhpcyBvcHRpb24gaXMgc2V0LCB0aGUgVGVybVJlc3BvbnNlIGF1dG9jb21tYW5kIGV2ZW50IGlzCkBAIC0xNTEwLDcgKzE1OTcsNyBAQAogCiAJCQkJCSp2OnRocm93cG9pbnQqICp0aHJvd3BvaW50LXZhcmlhYmxlKgogdjp0aHJvd3BvaW50CVRoZSBwb2ludCB3aGVyZSB0aGUgZXhjZXB0aW9uIG1vc3QgcmVjZW50bHkgY2F1Z2h0IGFuZCBub3QKLQkJZmluaXNoZWQgd2FzIHRocm93bi4gIE5vdCBzZXQgd2hlbiBjb21tYW5kcyBhcmUgdHlwZWQuICBTZWUKKwkJZmluaXNoZWQgd2FzIHRocm93bi4gIE5vdCBzZXQgd2hlbiBjb21tYW5kcyBhcmUgdHlwZWQuCVNlZQogCQlhbHNvIHx2OmV4Y2VwdGlvbnwgYW5kIHx0aHJvdy12YXJpYWJsZXN8LgogCQlFeGFtcGxlOiA+CiAJOnRyeQpAQCAtMTUyMSw3ICsxNjA4LDcgQEAKIDwJCU91dHB1dDogIkV4Y2VwdGlvbiBmcm9tIHRlc3QudmltLCBsaW5lIDIiCiAKIAkJCQkJCSp2OnZhbCogKnZhbC12YXJpYWJsZSoKLXY6dmFsCQlWYWx1ZSBvZiB0aGUgY3VycmVudCBpdGVtIG9mIGEgfExpc3R8IG9yIHxEaWN0aW9uYXJ5fC4gIE9ubHkKK3Y6dmFsCQlWYWx1ZSBvZiB0aGUgY3VycmVudCBpdGVtIG9mIGEgfExpc3R8IG9yIHxEaWN0aW9uYXJ5fC4JT25seQogCQl2YWxpZCB3aGlsZSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIHVzZWQgd2l0aCB8bWFwKCl8IGFuZAogCQl8ZmlsdGVyKCl8LiAgUmVhZC1vbmx5LgogCkBAIC0xNTQ4LDYgKzE2MzUsNyBAQAogCiBVU0FHRQkJCQlSRVNVTFQJREVTQ1JJUFRJT04JfgogCithYnMoIHtleHByfSkJCQlGbG9hdCBvciBOdW1iZXIgIGFic29sdXRlIHZhbHVlIG9mIHtleHByfQogYWRkKCB7bGlzdH0sIHtpdGVtfSkJCUxpc3QJYXBwZW5kIHtpdGVtfSB0byB8TGlzdHwge2xpc3R9CiBhcHBlbmQoIHtsbnVtfSwge3N0cmluZ30pCU51bWJlcglhcHBlbmQge3N0cmluZ30gYmVsb3cgbGluZSB7bG51bX0KIGFwcGVuZCgge2xudW19LCB7bGlzdH0pCQlOdW1iZXIJYXBwZW5kIGxpbmVzIHtsaXN0fSBiZWxvdyBsaW5lIHtsbnVtfQpAQCAtMTU1NSw5ICsxNjQzLDEwIEBACiBhcmdpZHgoKQkJCU51bWJlcgljdXJyZW50IGluZGV4IGluIHRoZSBhcmd1bWVudCBsaXN0CiBhcmd2KCB7bnJ9KQkJCVN0cmluZwl7bnJ9IGVudHJ5IG9mIHRoZSBhcmd1bWVudCBsaXN0CiBhcmd2KCApCQkJCUxpc3QJdGhlIGFyZ3VtZW50IGxpc3QKK2F0YW4oIHtleHByfSkJCQlGbG9hdAlhcmMgdGFuZ2VudCBvZiB7ZXhwcn0KIGJyb3dzZSgge3NhdmV9LCB7dGl0bGV9LCB7aW5pdGRpcn0sIHtkZWZhdWx0fSkKIAkJCQlTdHJpbmcJcHV0IHVwIGEgZmlsZSByZXF1ZXN0ZXIKLWJyb3dzZWRpcigge3RpdGxlfSwge2luaXRkaXJ9KSAgU3RyaW5nCXB1dCB1cCBhIGRpcmVjdG9yeSByZXF1ZXN0ZXIKK2Jyb3dzZWRpcigge3RpdGxlfSwge2luaXRkaXJ9KQlTdHJpbmcJcHV0IHVwIGEgZGlyZWN0b3J5IHJlcXVlc3RlcgogYnVmZXhpc3RzKCB7ZXhwcn0pCQlOdW1iZXIJVFJVRSBpZiBidWZmZXIge2V4cHJ9IGV4aXN0cwogYnVmbGlzdGVkKCB7ZXhwcn0pCQlOdW1iZXIJVFJVRSBpZiBidWZmZXIge2V4cHJ9IGlzIGxpc3RlZAogYnVmbG9hZGVkKCB7ZXhwcn0pCQlOdW1iZXIJVFJVRSBpZiBidWZmZXIge2V4cHJ9IGlzIGxvYWRlZApAQCAtMTU2OCwxNyArMTY1NywxOSBAQAogYnl0ZWlkeCgge2V4cHJ9LCB7bnJ9KQkJTnVtYmVyCWJ5dGUgaW5kZXggb2Yge25yfSd0aCBjaGFyIGluIHtleHByfQogY2FsbCgge2Z1bmN9LCB7YXJnbGlzdH0gWywge2RpY3R9XSkKIAkJCQlhbnkJY2FsbCB7ZnVuY30gd2l0aCBhcmd1bWVudHMge2FyZ2xpc3R9Ci1jaGFuZ2VucigpCQkJTnVtYmVyICBjdXJyZW50IGNoYW5nZSBudW1iZXIKK2NlaWwoIHtleHByfSkJCQlGbG9hdAlyb3VuZCB7ZXhwcn0gdXAKK2NoYW5nZW5yKCkJCQlOdW1iZXIJY3VycmVudCBjaGFuZ2UgbnVtYmVyCiBjaGFyMm5yKCB7ZXhwcn0pCQlOdW1iZXIJQVNDSUkgdmFsdWUgb2YgZmlyc3QgY2hhciBpbiB7ZXhwcn0KIGNpbmRlbnQoIHtsbnVtfSkJCU51bWJlcglDIGluZGVudCBmb3IgbGluZSB7bG51bX0KIGNsZWFybWF0Y2hlcygpCQkJTm9uZQljbGVhciBhbGwgbWF0Y2hlcwogY29sKCB7ZXhwcn0pCQkJTnVtYmVyCWNvbHVtbiBuciBvZiBjdXJzb3Igb3IgbWFyawotY29tcGxldGUoe3N0YXJ0Y29sfSwge21hdGNoZXN9KQlTdHJpbmcgIHNldCBJbnNlcnQgbW9kZSBjb21wbGV0aW9uCitjb21wbGV0ZSh7c3RhcnRjb2x9LCB7bWF0Y2hlc30pCVN0cmluZwlzZXQgSW5zZXJ0IG1vZGUgY29tcGxldGlvbgogY29tcGxldGVfYWRkKCB7ZXhwcn0pCQlOdW1iZXIJYWRkIGNvbXBsZXRpb24gbWF0Y2gKLWNvbXBsZXRlX2NoZWNrKCkJCU51bWJlciAgY2hlY2sgZm9yIGtleSB0eXBlZCBkdXJpbmcgY29tcGxldGlvbgorY29tcGxldGVfY2hlY2soKQkJTnVtYmVyCWNoZWNrIGZvciBrZXkgdHlwZWQgZHVyaW5nIGNvbXBsZXRpb24KIGNvbmZpcm0oIHttc2d9IFssIHtjaG9pY2VzfSBbLCB7ZGVmYXVsdH0gWywge3R5cGV9XV1dKQogCQkJCU51bWJlcgludW1iZXIgb2YgY2hvaWNlIHBpY2tlZCBieSB1c2VyCiBjb3B5KCB7ZXhwcn0pCQkJYW55CW1ha2UgYSBzaGFsbG93IGNvcHkgb2Yge2V4cHJ9Citjb3MoIHtleHByfSkJCQlGbG9hdAljb3NpbmUgb2Yge2V4cHJ9CiBjb3VudCgge2xpc3R9LCB7ZXhwcn0gWywge3N0YXJ0fSBbLCB7aWN9XV0pCiAJCQkJTnVtYmVyCSBjb3VudCBob3cgbWFueSB7ZXhwcn0gYXJlIGluIHtsaXN0fQogY3Njb3BlX2Nvbm5lY3Rpb24oIFt7bnVtfSAsIHtkYnBhdGh9IFssIHtwcmVwZW5kfV1dKQpAQCAtMTYwMCw3ICsxNjkxLDcgQEAKIGV4dGVuZCh7ZXhwcjF9LCB7ZXhwcjJ9IFssIHtleHByM31dKQogCQkJCUxpc3QvRGljdCBpbnNlcnQgaXRlbXMgb2Yge2V4cHIyfSBpbnRvIHtleHByMX0KIGV4cGFuZCgge2V4cHJ9KQkJCVN0cmluZwlleHBhbmQgc3BlY2lhbCBrZXl3b3JkcyBpbiB7ZXhwcn0KLWZlZWRrZXlzKCB7c3RyaW5nfSBbLCB7bW9kZX1dKQlOdW1iZXIgIGFkZCBrZXkgc2VxdWVuY2UgdG8gdHlwZWFoZWFkIGJ1ZmZlcgorZmVlZGtleXMoIHtzdHJpbmd9IFssIHttb2RlfV0pCU51bWJlcglhZGQga2V5IHNlcXVlbmNlIHRvIHR5cGVhaGVhZCBidWZmZXIKIGZpbGVyZWFkYWJsZSgge2ZpbGV9KQkJTnVtYmVyCVRSVUUgaWYge2ZpbGV9IGlzIGEgcmVhZGFibGUgZmlsZQogZmlsZXdyaXRhYmxlKCB7ZmlsZX0pCQlOdW1iZXIJVFJVRSBpZiB7ZmlsZX0gaXMgYSB3cml0YWJsZSBmaWxlCiBmaWx0ZXIoIHtleHByfSwge3N0cmluZ30pCUxpc3QvRGljdCAgcmVtb3ZlIGl0ZW1zIGZyb20ge2V4cHJ9IHdoZXJlCkBAIC0xNjA5LDYgKzE3MDAsOCBAQAogCQkJCVN0cmluZwlmaW5kIGRpcmVjdG9yeSB7bmFtZX0gaW4ge3BhdGh9CiBmaW5kZmlsZSgge25hbWV9Wywge3BhdGh9Wywge2NvdW50fV1dKQogCQkJCVN0cmluZwlmaW5kIGZpbGUge25hbWV9IGluIHtwYXRofQorZmxvYXQybnIoIHtleHByfSkJCU51bWJlcgljb252ZXJ0IEZsb2F0IHtleHByfSB0byBhIE51bWJlcgorZmxvb3IoIHtleHByfSkJCQlGbG9hdAlyb3VuZCB7ZXhwcn0gZG93bgogZm5hbWVlc2NhcGUoIHtmbmFtZX0pCQlTdHJpbmcJZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB7Zm5hbWV9CiBmbmFtZW1vZGlmeSgge2ZuYW1lfSwge21vZHN9KQlTdHJpbmcJbW9kaWZ5IGZpbGUgbmFtZQogZm9sZGNsb3NlZCgge2xudW19KQkJTnVtYmVyCWZpcnN0IGxpbmUgb2YgZm9sZCBhdCB7bG51bX0gaWYgY2xvc2VkCkBAIC0xNjg3LDYgKzE3ODAsNyBAQAogbGluZTJieXRlKCB7bG51bX0pCQlOdW1iZXIJYnl0ZSBjb3VudCBvZiBsaW5lIHtsbnVtfQogbGlzcGluZGVudCgge2xudW19KQkJTnVtYmVyCUxpc3AgaW5kZW50IGZvciBsaW5lIHtsbnVtfQogbG9jYWx0aW1lKCkJCQlOdW1iZXIJY3VycmVudCB0aW1lCitsb2cxMCgge2V4cHJ9KQkJCUZsb2F0CWxvZ2FyaXRobSBvZiBGbG9hdCB7ZXhwcn0gdG8gYmFzZSAxMAogbWFwKCB7ZXhwcn0sIHtzdHJpbmd9KQkJTGlzdC9EaWN0ICBjaGFuZ2UgZWFjaCBpdGVtIGluIHtleHByfSB0byB7ZXhwcn0KIG1hcGFyZygge25hbWV9Wywge21vZGV9IFssIHthYmJyfV1dKQogCQkJCVN0cmluZwlyaHMgb2YgbWFwcGluZyB7bmFtZX0gaW4gbW9kZSB7bW9kZX0KQEAgLTE3MDgsMTMgKzE4MDIsMTQgQEAKIG1pbih7bGlzdH0pCQkJTnVtYmVyCW1pbmltdW0gdmFsdWUgb2YgaXRlbXMgaW4ge2xpc3R9CiBta2Rpcih7bmFtZX0gWywge3BhdGh9IFssIHtwcm90fV1dKQogCQkJCU51bWJlcgljcmVhdGUgZGlyZWN0b3J5IHtuYW1lfQotbW9kZSgpCQkJCVN0cmluZwljdXJyZW50IGVkaXRpbmcgbW9kZQorbW9kZSggW2V4cHJdKQkJCVN0cmluZwljdXJyZW50IGVkaXRpbmcgbW9kZQogbmV4dG5vbmJsYW5rKCB7bG51bX0pCQlOdW1iZXIJbGluZSBuciBvZiBub24tYmxhbmsgbGluZSA+PSB7bG51bX0KIG5yMmNoYXIoIHtleHByfSkJCVN0cmluZwlzaW5nbGUgY2hhciB3aXRoIEFTQ0lJIHZhbHVlIHtleHByfQogcGF0aHNob3J0ZW4oIHtleHByfSkJCVN0cmluZwlzaG9ydGVuIGRpcmVjdG9yeSBuYW1lcyBpbiBhIHBhdGgKK3Bvdygge3h9LCB7eX0pCQkJRmxvYXQJe3h9IHRvIHRoZSBwb3dlciBvZiB7eX0KIHByZXZub25ibGFuaygge2xudW19KQkJTnVtYmVyCWxpbmUgbnIgb2Ygbm9uLWJsYW5rIGxpbmUgPD0ge2xudW19Ci1wcmludGYoIHtmbXR9LCB7ZXhwcjF9Li4uKQlTdHJpbmcgIGZvcm1hdCB0ZXh0Ci1wdW12aXNpYmxlKCkJCQlOdW1iZXIgIHdoZXRoZXIgcG9wdXAgbWVudSBpcyB2aXNpYmxlCitwcmludGYoIHtmbXR9LCB7ZXhwcjF9Li4uKQlTdHJpbmcJZm9ybWF0IHRleHQKK3B1bXZpc2libGUoKQkJCU51bWJlcgl3aGV0aGVyIHBvcHVwIG1lbnUgaXMgdmlzaWJsZQogcmFuZ2UoIHtleHByfSBbLCB7bWF4fSBbLCB7c3RyaWRlfV1dKQogCQkJCUxpc3QJaXRlbXMgZnJvbSB7ZXhwcn0gdG8ge21heH0KIHJlYWRmaWxlKHtmbmFtZX0gWywge2JpbmFyeX0gWywge21heH1dXSkKQEAgLTE3MzUsMTAgKzE4MzAsMTEgQEAKIHJlcGVhdCgge2V4cHJ9LCB7Y291bnR9KQlTdHJpbmcJcmVwZWF0IHtleHByfSB7Y291bnR9IHRpbWVzCiByZXNvbHZlKCB7ZmlsZW5hbWV9KQkJU3RyaW5nCWdldCBmaWxlbmFtZSBhIHNob3J0Y3V0IHBvaW50cyB0bwogcmV2ZXJzZSgge2xpc3R9KQkJTGlzdAlyZXZlcnNlIHtsaXN0fSBpbi1wbGFjZQorcm91bmQoIHtleHByfSkJCQlGbG9hdAlyb3VuZCBvZmYge2V4cHJ9CiBzZWFyY2goIHtwYXR0ZXJufSBbLCB7ZmxhZ3N9IFssIHtzdG9wbGluZX0gWywge3RpbWVvdXR9XV1dKQogCQkJCU51bWJlcglzZWFyY2ggZm9yIHtwYXR0ZXJufQogc2VhcmNoZGVjbCh7bmFtZX0gWywge2dsb2JhbH0gWywge3RoaXNibG9ja31dXSkKLQkJCQlOdW1iZXIgIHNlYXJjaCBmb3IgdmFyaWFibGUgZGVjbGFyYXRpb24KKwkJCQlOdW1iZXIJc2VhcmNoIGZvciB2YXJpYWJsZSBkZWNsYXJhdGlvbgogc2VhcmNocGFpcigge3N0YXJ0fSwge21pZGRsZX0sIHtlbmR9IFssIHtmbGFnc30gWywge3NraXB9IFsuLi5dXV0pCiAJCQkJTnVtYmVyCXNlYXJjaCBmb3Igb3RoZXIgZW5kIG9mIHN0YXJ0L2VuZCBwYWlyCiBzZWFyY2hwYWlycG9zKCB7c3RhcnR9LCB7bWlkZGxlfSwge2VuZH0gWywge2ZsYWdzfSBbLCB7c2tpcH0gWy4uLl1dXSkKQEAgLTE3NjMsNiArMTg1OSw3IEBACiBzaGVsbGVzY2FwZSgge3N0cmluZ30pCQlTdHJpbmcJZXNjYXBlIHtzdHJpbmd9IGZvciB1c2UgYXMgc2hlbGwKIAkJCQkJY29tbWFuZCBhcmd1bWVudAogc2ltcGxpZnkoIHtmaWxlbmFtZX0pCQlTdHJpbmcJc2ltcGxpZnkgZmlsZW5hbWUgYXMgbXVjaCBhcyBwb3NzaWJsZQorc2luKCB7ZXhwcn0pCQkJRmxvYXQJc2luZSBvZiB7ZXhwcn0KIHNvcnQoIHtsaXN0fSBbLCB7ZnVuY31dKQlMaXN0CXNvcnQge2xpc3R9LCB1c2luZyB7ZnVuY30gdG8gY29tcGFyZQogc291bmRmb2xkKCB7d29yZH0pCQlTdHJpbmcJc291bmQtZm9sZCB7d29yZH0KIHNwZWxsYmFkd29yZCgpCQkJU3RyaW5nCWJhZGx5IHNwZWxsZWQgd29yZCBhdCBjdXJzb3IKQEAgLTE3NzAsNyArMTg2Nyw5IEBACiAJCQkJTGlzdAlzcGVsbGluZyBzdWdnZXN0aW9ucwogc3BsaXQoIHtleHByfSBbLCB7cGF0fSBbLCB7a2VlcGVtcHR5fV1dKQogCQkJCUxpc3QJbWFrZSB8TGlzdHwgZnJvbSB7cGF0fSBzZXBhcmF0ZWQge2V4cHJ9Ci1zdHIybnIoIHtleHByfSBbLCB7YmFzZX1dKQlOdW1iZXIJY29udmVydCBzdHJpbmcgdG8gbnVtYmVyCitzcXJ0KCB7ZXhwcn0JCQlGbG9hdAlzcXVhciByb290IG9mIHtleHByfQorc3RyMmZsb2F0KCB7ZXhwcn0pCQlGbG9hdAljb252ZXJ0IFN0cmluZyB0byBGbG9hdAorc3RyMm5yKCB7ZXhwcn0gWywge2Jhc2V9XSkJTnVtYmVyCWNvbnZlcnQgU3RyaW5nIHRvIE51bWJlcgogc3RyZnRpbWUoIHtmb3JtYXR9Wywge3RpbWV9XSkJU3RyaW5nCXRpbWUgaW4gc3BlY2lmaWVkIGZvcm1hdAogc3RyaWR4KCB7aGF5c3RhY2t9LCB7bmVlZGxlfVssIHtzdGFydH1dKQogCQkJCU51bWJlcglpbmRleCBvZiB7bmVlZGxlfSBpbiB7aGF5c3RhY2t9CkBAIC0xNzg4LDE5ICsxODg3LDIwIEBACiBzeW5JRGF0dHIoIHtzeW5JRH0sIHt3aGF0fSBbLCB7bW9kZX1dKQogCQkJCVN0cmluZwlhdHRyaWJ1dGUge3doYXR9IG9mIHN5bnRheCBJRCB7c3luSUR9CiBzeW5JRHRyYW5zKCB7c3luSUR9KQkJTnVtYmVyCXRyYW5zbGF0ZWQgc3ludGF4IElEIG9mIHtzeW5JRH0KLXN5bnN0YWNrKHtsbnVtfSwge2NvbH0pCQlMaXN0ICAgIHN0YWNrIG9mIHN5bnRheCBJRHMgYXQge2xudW19IGFuZCB7Y29sfQorc3luc3RhY2soe2xudW19LCB7Y29sfSkJCUxpc3QJc3RhY2sgb2Ygc3ludGF4IElEcyBhdCB7bG51bX0gYW5kIHtjb2x9CiBzeXN0ZW0oIHtleHByfSBbLCB7aW5wdXR9XSkJU3RyaW5nCW91dHB1dCBvZiBzaGVsbCBjb21tYW5kL2ZpbHRlciB7ZXhwcn0KIHRhYnBhZ2VidWZsaXN0KCBbe2FyZ31dKQlMaXN0CWxpc3Qgb2YgYnVmZmVyIG51bWJlcnMgaW4gdGFiIHBhZ2UKIHRhYnBhZ2VuciggW3thcmd9XSkJCU51bWJlcgludW1iZXIgb2YgY3VycmVudCBvciBsYXN0IHRhYiBwYWdlCiB0YWJwYWdld2lubnIoIHt0YWJhcmd9Wywge2FyZ31dKQogCQkJCU51bWJlcgludW1iZXIgb2YgY3VycmVudCB3aW5kb3cgaW4gdGFiIHBhZ2UKIHRhZ2xpc3QoIHtleHByfSkJCUxpc3QJbGlzdCBvZiB0YWdzIG1hdGNoaW5nIHtleHByfQotdGFnZmlsZXMoKQkJCUxpc3QgICAgdGFncyBmaWxlcyB1c2VkCit0YWdmaWxlcygpCQkJTGlzdAl0YWdzIGZpbGVzIHVzZWQKIHRlbXBuYW1lKCkJCQlTdHJpbmcJbmFtZSBmb3IgYSB0ZW1wb3JhcnkgZmlsZQogdG9sb3dlcigge2V4cHJ9KQkJU3RyaW5nCXRoZSBTdHJpbmcge2V4cHJ9IHN3aXRjaGVkIHRvIGxvd2VyY2FzZQogdG91cHBlcigge2V4cHJ9KQkJU3RyaW5nCXRoZSBTdHJpbmcge2V4cHJ9IHN3aXRjaGVkIHRvIHVwcGVyY2FzZQogdHIoIHtzcmN9LCB7ZnJvbXN0cn0sIHt0b3N0cn0pCVN0cmluZwl0cmFuc2xhdGUgY2hhcnMgb2Yge3NyY30gaW4ge2Zyb21zdHJ9CiAJCQkJCXRvIGNoYXJzIGluIHt0b3N0cn0KK3RydW5jKCB7ZXhwcn0JCQlGbG9hdAl0cnVuY2F0ZSBGbG9hdCB7ZXhwcn0KIHR5cGUoIHtuYW1lfSkJCQlOdW1iZXIJdHlwZSBvZiB2YXJpYWJsZSB7bmFtZX0KIHZhbHVlcygge2RpY3R9KQkJCUxpc3QJdmFsdWVzIGluIHtkaWN0fQogdmlydGNvbCgge2V4cHJ9KQkJTnVtYmVyCXNjcmVlbiBjb2x1bW4gb2YgY3Vyc29yIG9yIG1hcmsKQEAgLTE4MTcsNiArMTkxNywyMCBAQAogd3JpdGVmaWxlKHtsaXN0fSwge2ZuYW1lfSBbLCB7YmluYXJ5fV0pCiAJCQkJTnVtYmVyCXdyaXRlIGxpc3Qgb2YgbGluZXMgdG8gZmlsZSB7Zm5hbWV9CiAKK2Ficyh7ZXhwcn0pCQkJCQkJCSphYnMoKSoKKwkJUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB7ZXhwcn0uICBXaGVuIHtleHByfSBldmFsdWF0ZXMgdG8KKwkJYSB8RmxvYXR8IGFicygpIHJldHVybnMgYSB8RmxvYXR8LiAgV2hlbiB7ZXhwcn0gY2FuIGJlCisJCWNvbnZlcnRlZCB0byBhIHxOdW1iZXJ8IGFicygpIHJldHVybnMgYSB8TnVtYmVyfC4gIE90aGVyd2lzZQorCQlhYnMoKSBnaXZlcyBhbiBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm5zIC0xLgorCQlFeGFtcGxlczogPgorCQkJZWNobyBhYnMoMS40NTYpCis8CQkJMS40NTYgID4KKwkJCWVjaG8gYWJzKC01LjQ1NikKKzwJCQk1LjQ1NiAgPgorCQkJZWNobyBhYnMoLTQpCis8CQkJNAorCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K2Zsb2F0fCBmZWF0dXJlfQorCiBhZGQoe2xpc3R9LCB7ZXhwcn0pCQkJCQkqYWRkKCkqCiAJCUFwcGVuZCB0aGUgaXRlbSB7ZXhwcn0gdG8gfExpc3R8IHtsaXN0fS4gIFJldHVybnMgdGhlCiAJCXJlc3VsdGluZyB8TGlzdHwuICBFeGFtcGxlczogPgpAQCAtMTgzNCw3ICsxOTQ4LDcgQEAKIAkJdGhlIGN1cnJlbnQgYnVmZmVyLgogCQl7bG51bX0gY2FuIGJlIHplcm8gdG8gaW5zZXJ0IGEgbGluZSBiZWZvcmUgdGhlIGZpcnN0IG9uZS4KIAkJUmV0dXJucyAxIGZvciBmYWlsdXJlICh7bG51bX0gb3V0IG9mIHJhbmdlIG9yIG91dCBvZiBtZW1vcnkpLAotCQkwIGZvciBzdWNjZXNzLiAgRXhhbXBsZTogPgorCQkwIGZvciBzdWNjZXNzLglFeGFtcGxlOiA+CiAJCQk6bGV0IGZhaWxlZCA9IGFwcGVuZChsaW5lKCckJyksICIjIFRIRSBFTkQiKQogCQkJOmxldCBmYWlsZWQgPSBhcHBlbmQoMCwgWyJDaGFwdGVyIDEiLCAidGhlIGJlZ2lubmluZyJdKQogPApAQCAtMTg1MiwxMyArMTk2NiwyNCBAQAogCQlFeGFtcGxlOiA+CiAJOmxldCBpID0gMAogCTp3aGlsZSBpIDwgYXJnYygpCi0JOiAgbGV0IGYgPSBlc2NhcGUoYXJndihpKSwgJy4gJykKKwk6ICBsZXQgZiA9IGVzY2FwZShmbmFtZWVzY2FwZShhcmd2KGkpKSwgJy4nKQogCTogIGV4ZSAnYW1lbnUgQXJnLicgLiBmIC4gJyA6ZSAnIC4gZiAuICc8Q1I+JwogCTogIGxldCBpID0gaSArIDEKIAk6ZW5kd2hpbGUKIDwJCVdpdGhvdXQgdGhlIHtucn0gYXJndW1lbnQgYSB8TGlzdHwgd2l0aCB0aGUgd2hvbGUgfGFyZ2xpc3R8IGlzCiAJCXJldHVybmVkLgogCithdGFuKHtleHByfSkJCQkJCQkqYXRhbigpKgorCQlSZXR1cm4gdGhlIHByaW5jaXBhbCB2YWx1ZSBvZiB0aGUgYXJjIHRhbmdlbnQgb2Yge2V4cHJ9LCBpbgorCQl0aGUgcmFuZ2UgWy1waS8yLCArcGkvMl0gcmFkaWFucywgYXMgYSB8RmxvYXR8LgorCQl7ZXhwcn0gbXVzdCBldmFsdWF0ZSB0byBhIHxGbG9hdHwgb3IgYSB8TnVtYmVyfC4KKwkJRXhhbXBsZXM6ID4KKwkJCTplY2hvIGF0YW4oMTAwKQorPAkJCTEuNTYwNzk3ID4KKwkJCTplY2hvIGF0YW4oLTQuMDEpCis8CQkJLTEuMzI2NDA1CisJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CisKIAkJCQkJCQkqYnJvd3NlKCkqCiBicm93c2Uoe3NhdmV9LCB7dGl0bGV9LCB7aW5pdGRpcn0sIHtkZWZhdWx0fSkKIAkJUHV0IHVwIGEgZmlsZSByZXF1ZXN0ZXIuICBUaGlzIG9ubHkgd29ya3Mgd2hlbiAiaGFzKCJicm93c2UiKSIKQEAgLTE4OTIsMTIgKzIwMTcsMTUgQEAKIAkJZXhhY3RseS4gIFRoZSBuYW1lIGNhbiBiZToKIAkJLSBSZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAJCS0gQSBmdWxsIHBhdGguCi0JCS0gVGhlIG5hbWUgb2YgYSBidWZmZXIgd2l0aCAnZmlsZXR5cGUnIHNldCB0byAibm9maWxlIi4KKwkJLSBUaGUgbmFtZSBvZiBhIGJ1ZmZlciB3aXRoICdidWZ0eXBlJyBzZXQgdG8gIm5vZmlsZSIuCiAJCS0gQSBVUkwgbmFtZS4KIAkJVW5saXN0ZWQgYnVmZmVycyB3aWxsIGJlIGZvdW5kLgogCQlOb3RlIHRoYXQgaGVscCBmaWxlcyBhcmUgbGlzdGVkIGJ5IHRoZWlyIHNob3J0IG5hbWUgaW4gdGhlCiAJCW91dHB1dCBvZiB8OmJ1ZmZlcnN8LCBidXQgYnVmZXhpc3RzKCkgcmVxdWlyZXMgdXNpbmcgdGhlaXIKIAkJbG9uZyBuYW1lIHRvIGJlIGFibGUgdG8gZmluZCB0aGVtLgorCQlidWZleGlzdHMoKSBtYXkgcmVwb3J0IGEgYnVmZmVyIGV4aXN0cywgYnV0IHRvIHVzZSB0aGUgbmFtZQorCQl3aXRoIGEgfDpidWZmZXJ8IGNvbW1hbmQgeW91IG1heSBuZWVkIHRvIHVzZSB8ZXhwYW5kKCl8LiAgRXNwCisJCWZvciBNUy1XaW5kb3dzIDguMyBuYW1lcyBpbiB0aGUgZm9ybSAiYzpcRE9DVU1FfjEiCiAJCVVzZSAiYnVmZXhpc3RzKDApIiB0byB0ZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIGFsdGVybmF0ZQogCQlmaWxlIG5hbWUuCiAJCQkJCQkJKmJ1ZmZlcl9leGlzdHMoKSoKQEAgLTE5MTksNyArMjA0Nyw3IEBACiAJCUlmIHtleHByfSBpcyBhIE51bWJlciwgdGhhdCBidWZmZXIgbnVtYmVyJ3MgbmFtZSBpcyBnaXZlbi4KIAkJTnVtYmVyIHplcm8gaXMgdGhlIGFsdGVybmF0ZSBidWZmZXIgZm9yIHRoZSBjdXJyZW50IHdpbmRvdy4KIAkJSWYge2V4cHJ9IGlzIGEgU3RyaW5nLCBpdCBpcyB1c2VkIGFzIGEgfGZpbGUtcGF0dGVybnwgdG8gbWF0Y2gKLQkJd2l0aCB0aGUgYnVmZmVyIG5hbWVzLiAgVGhpcyBpcyBhbHdheXMgZG9uZSBsaWtlICdtYWdpYycgaXMKKwkJd2l0aCB0aGUgYnVmZmVyIG5hbWVzLglUaGlzIGlzIGFsd2F5cyBkb25lIGxpa2UgJ21hZ2ljJyBpcwogCQlzZXQgYW5kICdjcG9wdGlvbnMnIGlzIGVtcHR5LiAgV2hlbiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lCiAJCW1hdGNoIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KIAkJIiIgb3IgIiUiIGNhbiBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBidWZmZXIsICIjIiBmb3IgdGhlCkBAIC0xOTY1LDcgKzIwOTMsNyBAQAogYnVmd2lubnIoe2V4cHJ9KQkJCQkJKmJ1Zndpbm5yKCkqCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgdGhlIGZpcnN0CiAJCXdpbmRvdyBhc3NvY2lhdGVkIHdpdGggYnVmZmVyIHtleHByfS4gIEZvciB0aGUgdXNlIG9mIHtleHByfSwKLQkJc2VlIHxidWZuYW1lKCl8IGFib3ZlLiAgSWYgYnVmZmVyIHtleHByfSBkb2Vzbid0IGV4aXN0IG9yCisJCXNlZSB8YnVmbmFtZSgpfCBhYm92ZS4JSWYgYnVmZmVyIHtleHByfSBkb2Vzbid0IGV4aXN0IG9yCiAJCXRoZXJlIGlzIG5vIHN1Y2ggd2luZG93LCAtMSBpcyByZXR1cm5lZC4gIEV4YW1wbGU6ID4KIAogCWVjaG8gIkEgd2luZG93IGNvbnRhaW5pbmcgYnVmZmVyIDEgaXMgIiAuIChidWZ3aW5ucigxKSkKQEAgLTIwMTAsNiArMjEzOCwxOSBAQAogCQl7ZGljdH0gaXMgZm9yIGZ1bmN0aW9ucyB3aXRoIHRoZSAiZGljdCIgYXR0cmlidXRlLiAgSXQgd2lsbCBiZQogCQl1c2VkIHRvIHNldCB0aGUgbG9jYWwgdmFyaWFibGUgInNlbGYiLiB8RGljdGlvbmFyeS1mdW5jdGlvbnwKIAorY2VpbCh7ZXhwcn0pCQkJCQkJCSpjZWlsKCkqCisJCVJldHVybiB0aGUgc21hbGxlc3QgaW50ZWdyYWwgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCisJCXtleHByfSBhcyBhIHxGbG9hdHwgKHJvdW5kIHVwKS4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuCisJCUV4YW1wbGVzOiA+CisJCQllY2hvIGNlaWwoMS40NTYpCis8CQkJMi4wICA+CisJCQllY2hvIGNlaWwoLTUuNDU2KQorPAkJCS01LjAgID4KKwkJCWVjaG8gY2VpbCg0LjApCis8CQkJNC4wCisJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CisKIGNoYW5nZW5yKCkJCQkJCQkqY2hhbmdlbnIoKSoKIAkJUmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIG1vc3QgcmVjZW50IGNoYW5nZS4gIFRoaXMgaXMgdGhlIHNhbWUKIAkJbnVtYmVyIGFzIHdoYXQgaXMgZGlzcGxheWVkIHdpdGggfDp1bmRvbGlzdHwgYW5kIGNhbiBiZSB1c2VkCkBAIC0yMDI1LDcgKzIxNjYsNyBAQAogPAkJVGhlIGN1cnJlbnQgJ2VuY29kaW5nJyBpcyB1c2VkLiAgRXhhbXBsZSBmb3IgInV0Zi04IjogPgogCQkJY2hhcjJucigi4SIpCQlyZXR1cm5zIDIyNQogCQkJY2hhcjJucigi4SJbMF0pCQlyZXR1cm5zIDE5NQotPAkJbnIyY2hhcigpIGRvZXMgdGhlIG9wcG9zaXRlLgorPAkJfG5yMmNoYXIoKXwgZG9lcyB0aGUgb3Bwb3NpdGUuCiAKIGNpbmRlbnQoe2xudW19KQkJCQkJCSpjaW5kZW50KCkqCiAJCUdldCB0aGUgYW1vdW50IG9mIGluZGVudCBmb3IgbGluZSB7bG51bX0gYWNjb3JkaW5nIHRoZSBDCkBAIC0yMDUwLDcgKzIxOTEsNyBAQAogCQkJICAgIHJldHVybmVkKQogCQlBZGRpdGlvbmFsbHkge2V4cHJ9IGNhbiBiZSBbbG51bSwgY29sXTogYSB8TGlzdHwgd2l0aCB0aGUgbGluZQogCQlhbmQgY29sdW1uIG51bWJlci4gTW9zdCB1c2VmdWwgd2hlbiB0aGUgY29sdW1uIGlzICIkIiwgdG8gZ2V0Ci0JCXRoZSBsYXMgY29sdW1uIG9mIGEgc3BlY2lmaWMgbGluZS4gIFdoZW4gImxudW0iIG9yICJjb2wiIGlzCisJCXRoZSBsYXN0IGNvbHVtbiBvZiBhIHNwZWNpZmljIGxpbmUuICBXaGVuICJsbnVtIiBvciAiY29sIiBpcwogCQlvdXQgb2YgcmFuZ2UgdGhlbiBjb2woKSByZXR1cm5zIHplcm8uCiAJCVRvIGdldCB0aGUgbGluZSBudW1iZXIgdXNlIHxsaW5lKCl8LiAgVG8gZ2V0IGJvdGggdXNlCiAJCXxnZXRwb3MoKXwuCkBAIC0yMDYxLDcgKzIyMDIsNyBAQAogCQkJY29sKCIkIikJCWxlbmd0aCBvZiBjdXJzb3IgbGluZSBwbHVzIG9uZQogCQkJY29sKCIndCIpCQljb2x1bW4gb2YgbWFyayB0CiAJCQljb2woIiciIC4gbWFya25hbWUpCWNvbHVtbiBvZiBtYXJrIG1hcmtuYW1lCi08CQlUaGUgZmlyc3QgY29sdW1uIGlzIDEuICAwIGlzIHJldHVybmVkIGZvciBhbiBlcnJvci4KKzwJCVRoZSBmaXJzdCBjb2x1bW4gaXMgMS4JMCBpcyByZXR1cm5lZCBmb3IgYW4gZXJyb3IuCiAJCUZvciBhbiB1cHBlcmNhc2UgbWFyayB0aGUgY29sdW1uIG1heSBhY3R1YWxseSBiZSBpbiBhbm90aGVyCiAJCWJ1ZmZlci4KIAkJRm9yIHRoZSBjdXJzb3IgcG9zaXRpb24sIHdoZW4gJ3ZpcnR1YWxlZGl0JyBpcyBhY3RpdmUsIHRoZQpAQCAtMjEwOCw3ICsyMjQ5LDcgQEAKIAkJUmV0dXJucyAwIGZvciBmYWlsdXJlIChlbXB0eSBzdHJpbmcgb3Igb3V0IG9mIG1lbW9yeSksCiAJCTEgd2hlbiB0aGUgbWF0Y2ggd2FzIGFkZGVkLCAyIHdoZW4gdGhlIG1hdGNoIHdhcyBhbHJlYWR5IGluCiAJCXRoZSBsaXN0LgotCQlTZWUgfGNvbXBsZXRlLWZ1bmN0aW9uc3wgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHtleHByfS4gIEl0IGlzCisJCVNlZSB8Y29tcGxldGUtZnVuY3Rpb25zfCBmb3IgYW4gZXhwbGFuYXRpb24gb2Yge2V4cHJ9LglJdCBpcwogCQl0aGUgc2FtZSBhcyBvbmUgaXRlbSBpbiB0aGUgbGlzdCB0aGF0ICdvbW5pZnVuYycgd291bGQgcmV0dXJuLgogCiBjb21wbGV0ZV9jaGVjaygpCQkJCSpjb21wbGV0ZV9jaGVjaygpKgpAQCAtMjE0NCw3ICsyMjg1LDcgQEAKIAkJdGhhdCBpcyBtYWRlIGlmIHRoZSB1c2VyIGhpdHMgPENSPi4gIFVzZSAxIHRvIG1ha2UgdGhlIGZpcnN0CiAJCWNob2ljZSB0aGUgZGVmYXVsdCBvbmUuICBVc2UgMCB0byBub3Qgc2V0IGEgZGVmYXVsdC4gIElmCiAJCXtkZWZhdWx0fSBpcyBvbWl0dGVkLCAxIGlzIHVzZWQuCi0JCVRoZSBvcHRpb25hbCB7dHlwZX0gYXJndW1lbnQgZ2l2ZXMgdGhlIHR5cGUgb2YgZGlhbG9nLiAgVGhpcworCQlUaGUgb3B0aW9uYWwge3R5cGV9IGFyZ3VtZW50IGdpdmVzIHRoZSB0eXBlIG9mIGRpYWxvZy4JVGhpcwogCQlpcyBvbmx5IHVzZWQgZm9yIHRoZSBpY29uIG9mIHRoZSBXaW4zMiBHVUkuICBJdCBjYW4gYmUgb25lIG9mCiAJCXRoZXNlIHZhbHVlczogIkVycm9yIiwgIlF1ZXN0aW9uIiwgIkluZm8iLCAiV2FybmluZyIgb3IKIAkJIkdlbmVyaWMiLiAgT25seSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIHJlbGV2YW50LiAgV2hlbiB7dHlwZX0KQEAgLTIxNjMsMjAgKzIzMDQsMzEgQEAKICAgIDplbmRpZgogPAkJSW4gYSBHVUkgZGlhbG9nLCBidXR0b25zIGFyZSB1c2VkLiAgVGhlIGxheW91dCBvZiB0aGUgYnV0dG9ucwogCQlkZXBlbmRzIG9uIHRoZSAndicgZmxhZyBpbiAnZ3Vpb3B0aW9ucycuICBJZiBpdCBpcyBpbmNsdWRlZCwKLQkJdGhlIGJ1dHRvbnMgYXJlIGFsd2F5cyBwdXQgdmVydGljYWxseS4gIE90aGVyd2lzZSwgIGNvbmZpcm0oKQorCQl0aGUgYnV0dG9ucyBhcmUgYWx3YXlzIHB1dCB2ZXJ0aWNhbGx5LglPdGhlcndpc2UsICBjb25maXJtKCkKIAkJdHJpZXMgdG8gcHV0IHRoZSBidXR0b25zIGluIG9uZSBob3Jpem9udGFsIGxpbmUuICBJZiB0aGV5CiAJCWRvbid0IGZpdCwgYSB2ZXJ0aWNhbCBsYXlvdXQgaXMgdXNlZCBhbnl3YXkuICBGb3Igc29tZSBzeXN0ZW1zCiAJCXRoZSBob3Jpem9udGFsIGxheW91dCBpcyBhbHdheXMgdXNlZC4KIAogCQkJCQkJCSpjb3B5KCkqCi1jb3B5KHtleHByfSkJTWFrZSBhIGNvcHkgb2Yge2V4cHJ9LiAgRm9yIE51bWJlcnMgYW5kIFN0cmluZ3MgdGhpcyBpc24ndAorY29weSh7ZXhwcn0pCU1ha2UgYSBjb3B5IG9mIHtleHByfS4JRm9yIE51bWJlcnMgYW5kIFN0cmluZ3MgdGhpcyBpc24ndAogCQlkaWZmZXJlbnQgZnJvbSB1c2luZyB7ZXhwcn0gZGlyZWN0bHkuCiAJCVdoZW4ge2V4cHJ9IGlzIGEgfExpc3R8IGEgc2hhbGxvdyBjb3B5IGlzIGNyZWF0ZWQuICBUaGlzIG1lYW5zCiAJCXRoYXQgdGhlIG9yaWdpbmFsIHxMaXN0fCBjYW4gYmUgY2hhbmdlZCB3aXRob3V0IGNoYW5naW5nIHRoZQotCQljb3B5LCBhbmQgdmlzZSB2ZXJzYS4gIEJ1dCB0aGUgaXRlbXMgYXJlIGlkZW50aWNhbCwgdGh1cwotCQljaGFuZ2luZyBhbiBpdGVtIGNoYW5nZXMgdGhlIGNvbnRlbnRzIG9mIGJvdGggfExpc3RzfC4gIEFsc28KKwkJY29weSwgYW5kIHZpY2UgdmVyc2EuICBCdXQgdGhlIGl0ZW1zIGFyZSBpZGVudGljYWwsIHRodXMKKwkJY2hhbmdpbmcgYW4gaXRlbSBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBib3RoIHxMaXN0c3wuCUFsc28KIAkJc2VlIHxkZWVwY29weSgpfC4KIAorY29zKHtleHByfSkJCQkJCQkqY29zKCkqCisJCVJldHVybiB0aGUgY29zaW5lIG9mIHtleHByfSwgbWVhc3VyZWQgaW4gcmFkaWFucywgYXMgYSB8RmxvYXR8LgorCQl7ZXhwcn0gbXVzdCBldmFsdWF0ZSB0byBhIHxGbG9hdHwgb3IgYSB8TnVtYmVyfC4KKwkJRXhhbXBsZXM6ID4KKwkJCTplY2hvIGNvcygxMDApCis8CQkJMC44NjIzMTkgPgorCQkJOmVjaG8gY29zKC00LjAxKQorPAkJCS0wLjY0NjA0MworCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K2Zsb2F0fCBmZWF0dXJlfQorCisJCQogY291bnQoe2NvbXB9LCB7ZXhwcn0gWywge2ljfSBbLCB7c3RhcnR9XV0pCQkJKmNvdW50KCkqCiAJCVJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVzIGFuIGl0ZW0gd2l0aCB2YWx1ZSB7ZXhwcn0gYXBwZWFycwogCQlpbiB8TGlzdHwgb3IgfERpY3Rpb25hcnl8IHtjb21wfS4KQEAgLTIyNDcsMTEgKzIzOTksMTEgQEAKIAogCiBkZWVwY29weSh7ZXhwcn1bLCB7bm9yZWZ9XSkJCQkJKmRlZXBjb3B5KCkqICpFNjk4KgotCQlNYWtlIGEgY29weSBvZiB7ZXhwcn0uICBGb3IgTnVtYmVycyBhbmQgU3RyaW5ncyB0aGlzIGlzbid0CisJCU1ha2UgYSBjb3B5IG9mIHtleHByfS4JRm9yIE51bWJlcnMgYW5kIFN0cmluZ3MgdGhpcyBpc24ndAogCQlkaWZmZXJlbnQgZnJvbSB1c2luZyB7ZXhwcn0gZGlyZWN0bHkuCiAJCVdoZW4ge2V4cHJ9IGlzIGEgfExpc3R8IGEgZnVsbCBjb3B5IGlzIGNyZWF0ZWQuICBUaGlzIG1lYW5zCiAJCXRoYXQgdGhlIG9yaWdpbmFsIHxMaXN0fCBjYW4gYmUgY2hhbmdlZCB3aXRob3V0IGNoYW5naW5nIHRoZQotCQljb3B5LCBhbmQgdmlzZSB2ZXJzYS4gIFdoZW4gYW4gaXRlbSBpcyBhIHxMaXN0fCwgYSBjb3B5IGZvciBpdAorCQljb3B5LCBhbmQgdmljZSB2ZXJzYS4gIFdoZW4gYW4gaXRlbSBpcyBhIHxMaXN0fCwgYSBjb3B5IGZvciBpdAogCQlpcyBtYWRlLCByZWN1cnNpdmVseS4gIFRodXMgY2hhbmdpbmcgYW4gaXRlbSBpbiB0aGUgY29weSBkb2VzCiAJCW5vdCBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCB8TGlzdHwuCiAJCVdoZW4ge25vcmVmfSBpcyBvbWl0dGVkIG9yIHplcm8gYSBjb250YWluZWQgfExpc3R8IG9yCkBAIC0yMzA1LDcgKzI0NTcsNyBAQAogZW1wdHkoe2V4cHJ9KQkJCQkJCSplbXB0eSgpKgogCQlSZXR1cm4gdGhlIE51bWJlciAxIGlmIHtleHByfSBpcyBlbXB0eSwgemVybyBvdGhlcndpc2UuCiAJCUEgfExpc3R8IG9yIHxEaWN0aW9uYXJ5fCBpcyBlbXB0eSB3aGVuIGl0IGRvZXMgbm90IGhhdmUgYW55Ci0JCWl0ZW1zLiAgQSBOdW1iZXIgaXMgZW1wdHkgd2hlbiBpdHMgdmFsdWUgaXMgemVyby4KKwkJaXRlbXMuCUEgTnVtYmVyIGlzIGVtcHR5IHdoZW4gaXRzIHZhbHVlIGlzIHplcm8uCiAJCUZvciBhIGxvbmcgfExpc3R8IHRoaXMgaXMgbXVjaCBmYXN0ZXIgdGhlbiBjb21wYXJpbmcgdGhlCiAJCWxlbmd0aCB3aXRoIHplcm8uCiAKQEAgLTIzMTUsMTIgKzI0NjcsMTQgQEAKIAkJCTplY2hvIGVzY2FwZSgnYzpccHJvZ3JhbSBmaWxlc1x2aW0nLCAnIFwnKQogPAkJcmVzdWx0cyBpbjogPgogCQkJYzpcXHByb2dyYW1cIGZpbGVzXFx2aW0KKzwJCUFsc28gc2VlIHxzaGVsbGVzY2FwZSgpfC4KIAotPAkJCQkJCQkqZXZhbCgpKgorCQkJCQkJCSpldmFsKCkqCiBldmFsKHtzdHJpbmd9KQlFdmFsdWF0ZSB7c3RyaW5nfSBhbmQgcmV0dXJuIHRoZSByZXN1bHQuICBFc3BlY2lhbGx5IHVzZWZ1bCB0bwogCQl0dXJuIHRoZSByZXN1bHQgb2YgfHN0cmluZygpfCBiYWNrIGludG8gdGhlIG9yaWdpbmFsIHZhbHVlLgotCQlUaGlzIHdvcmtzIGZvciBOdW1iZXJzLCBTdHJpbmdzIGFuZCBjb21wb3NpdGVzIG9mIHRoZW0uCi0JCUFsc28gd29ya3MgZm9yIHxGdW5jcmVmfHMgdGhhdCByZWZlciB0byBleGlzdGluZyBmdW5jdGlvbnMuCisJCVRoaXMgd29ya3MgZm9yIE51bWJlcnMsIEZsb2F0cywgU3RyaW5ncyBhbmQgY29tcG9zaXRlcyBvZgorCQl0aGVtLiAgQWxzbyB3b3JrcyBmb3IgfEZ1bmNyZWZ8cyB0aGF0IHJlZmVyIHRvIGV4aXN0aW5nCisJCWZ1bmN0aW9ucy4KIAogZXZlbnRoYW5kbGVyKCkJCQkJCQkqZXZlbnRoYW5kbGVyKCkqCiAJCVJldHVybnMgMSB3aGVuIGluc2lkZSBhbiBldmVudCBoYW5kbGVyLiAgVGhhdCBpcyB0aGF0IFZpbSBnb3QKQEAgLTIzMzYsMTAgKzI0OTAsMTAgQEAKIAkJc2VhcmNocGF0aCBmb3IgcHJvZ3JhbXMuCQkqUEFUSEVYVCoKIAkJT24gTVMtRE9TIGFuZCBNUy1XaW5kb3dzIHRoZSAiLmV4ZSIsICIuYmF0IiwgZXRjLiBjYW4KIAkJb3B0aW9uYWxseSBiZSBpbmNsdWRlZC4gIFRoZW4gdGhlIGV4dGVuc2lvbnMgaW4gJFBBVEhFWFQgYXJlCi0JCXRyaWVkLiAgVGh1cyBpZiAiZm9vLmV4ZSIgZG9lcyBub3QgZXhpc3QsICJmb28uZXhlLmJhdCIgY2FuIGJlCi0JCWZvdW5kLiAgSWYgJFBBVEhFWFQgaXMgbm90IHNldCB0aGVuICIuZXhlOy5jb207LmJhdDsuY21kIiBpcworCQl0cmllZC4JVGh1cyBpZiAiZm9vLmV4ZSIgZG9lcyBub3QgZXhpc3QsICJmb28uZXhlLmJhdCIgY2FuIGJlCisJCWZvdW5kLglJZiAkUEFUSEVYVCBpcyBub3Qgc2V0IHRoZW4gIi5leGU7LmNvbTsuYmF0Oy5jbWQiIGlzCiAJCXVzZWQuICBBIGRvdCBieSBpdHNlbGYgY2FuIGJlIHVzZWQgaW4gJFBBVEhFWFQgdG8gdHJ5IHVzaW5nCi0JCXRoZSBuYW1lIHdpdGhvdXQgYW4gZXh0ZW5zaW9uLiAgV2hlbiAnc2hlbGwnIGxvb2tzIGxpa2UgYQorCQl0aGUgbmFtZSB3aXRob3V0IGFuIGV4dGVuc2lvbi4JV2hlbiAnc2hlbGwnIGxvb2tzIGxpa2UgYQogCQlVbml4IHNoZWxsLCB0aGVuIHRoZSBuYW1lIGlzIGFsc28gdHJpZWQgd2l0aG91dCBhZGRpbmcgYW4KIAkJZXh0ZW5zaW9uLgogCQlPbiBNUy1ET1MgYW5kIE1TLVdpbmRvd3MgaXQgb25seSBjaGVja3MgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZApAQCAtMjM2Niw3ICsyNTIwLDcgQEAKIAkJCQkJb3IgdXNlciBkZWZpbmVkIGZ1bmN0aW9uIChzZWUKIAkJCQkJfHVzZXItZnVuY3Rpb25zfCkuCiAJCQl2YXJuYW1lCQlpbnRlcm5hbCB2YXJpYWJsZSAoc2VlCi0JCQkJCXxpbnRlcm5hbC12YXJpYWJsZXN8KS4gIEFsc28gd29ya3MKKwkJCQkJfGludGVybmFsLXZhcmlhYmxlc3wpLglBbHNvIHdvcmtzCiAJCQkJCWZvciB8Y3VybHktYnJhY2VzLW5hbWVzfCwgfERpY3Rpb25hcnl8CiAJCQkJCWVudHJpZXMsIHxMaXN0fCBpdGVtcywgZXRjLiAgQmV3YXJlCiAJCQkJCXRoYXQgdGhpcyBtYXkgY2F1c2UgZnVuY3Rpb25zIHRvIGJlCkBAIC0yNDM1LDcgKzI1ODksNyBAQAogCQljaGFyYWN0ZXJzLiAgW05vdGU6IGluIHZlcnNpb24gNS4wIGEgc3BhY2Ugd2FzIHVzZWQsIHdoaWNoCiAJCWNhdXNlZCBwcm9ibGVtcyB3aGVuIGEgZmlsZSBuYW1lIGNvbnRhaW5zIGEgc3BhY2VdCiAKLQkJSWYgdGhlIGV4cGFuc2lvbiBmYWlscywgdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBzdHJpbmcuICBBIG5hbWUKKwkJSWYgdGhlIGV4cGFuc2lvbiBmYWlscywgdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBzdHJpbmcuCUEgbmFtZQogCQlmb3IgYSBub24tZXhpc3RpbmcgZmlsZSBpcyBub3QgaW5jbHVkZWQuCiAKIAkJV2hlbiB7ZXhwcn0gc3RhcnRzIHdpdGggJyUnLCAnIycgb3IgJzwnLCB0aGUgZXhwYW5zaW9uIGlzIGRvbmUKQEAgLTI0OTQsOSArMjY0OCw5IEBACiA8CiAJCUV4cGFuZCgpIGNhbiBhbHNvIGJlIHVzZWQgdG8gZXhwYW5kIHZhcmlhYmxlcyBhbmQgZW52aXJvbm1lbnQKIAkJdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkga25vd24gaW4gYSBzaGVsbC4gIEJ1dCB0aGlzIGNhbiBiZQotCQlzbG93LCBiZWNhdXNlIGEgc2hlbGwgbXVzdCBiZSBzdGFydGVkLiAgU2VlIHxleHByLWVudi1leHBhbmR8LgorCQlzbG93LCBiZWNhdXNlIGEgc2hlbGwgbXVzdCBiZSBzdGFydGVkLglTZWUgfGV4cHItZW52LWV4cGFuZHwuCiAJCVRoZSBleHBhbmRlZCB2YXJpYWJsZSBpcyBzdGlsbCBoYW5kbGVkIGxpa2UgYSBsaXN0IG9mIGZpbGUKLQkJbmFtZXMuICBXaGVuIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbm5vdCBiZSBleHBhbmRlZCwgaXQgaXMKKwkJbmFtZXMuCVdoZW4gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgY2Fubm90IGJlIGV4cGFuZGVkLCBpdCBpcwogCQlsZWZ0IHVuY2hhbmdlZC4gIFRodXMgIjplY2hvIGV4cGFuZCgnJEZPT0JBUicpIiByZXN1bHRzIGluCiAJCSIkRk9PQkFSIi4KIApAQCAtMjUxNSw3ICsyNjY5LDcgQEAKIAkJRXhhbXBsZXM6ID4KIAkJCTplY2hvIHNvcnQoZXh0ZW5kKG15bGlzdCwgWzcsIDVdKSkKIAkJCTpjYWxsIGV4dGVuZChteWxpc3QsIFsyLCAzXSwgMSkKLTwJCVVzZSB8YWRkKCl8IHRvIGNvbmNhdGVuYXRlIG9uZSBpdGVtIHRvIGEgbGlzdC4gIFRvIGNvbmNhdGVuYXRlCis8CQlVc2UgfGFkZCgpfCB0byBjb25jYXRlbmF0ZSBvbmUgaXRlbSB0byBhIGxpc3QuCVRvIGNvbmNhdGVuYXRlCiAJCXR3byBsaXN0cyBpbnRvIGEgbmV3IGxpc3QgdXNlIHRoZSArIG9wZXJhdG9yOiA+CiAJCQk6bGV0IG5ld2xpc3QgPSBbMSwgMiwgM10gKyBbNCwgNV0KIDwKQEAgLTI1MzYsNyArMjY5MCw3IEBACiAKIGZlZWRrZXlzKHtzdHJpbmd9IFssIHttb2RlfV0pCQkJCSpmZWVka2V5cygpKgogCQlDaGFyYWN0ZXJzIGluIHtzdHJpbmd9IGFyZSBxdWV1ZWQgZm9yIHByb2Nlc3NpbmcgYXMgaWYgdGhleQotCQljb21lIGZyb20gYSBtYXBwaW5nIG9yIHdlcmUgdHlwZWQgYnkgdGhlIHVzZXIuICBUaGV5IGFyZSBhZGRlZAorCQljb21lIGZyb20gYSBtYXBwaW5nIG9yIHdlcmUgdHlwZWQgYnkgdGhlIHVzZXIuCVRoZXkgYXJlIGFkZGVkCiAJCXRvIHRoZSBlbmQgb2YgdGhlIHR5cGVhaGVhZCBidWZmZXIsIHRodXMgaWYgYSBtYXBwaW5nIGlzIHN0aWxsCiAJCWJlaW5nIGV4ZWN1dGVkIHRoZXNlIGNoYXJhY3RlcnMgY29tZSBhZnRlciB0aGVtLgogCQlUaGUgZnVuY3Rpb24gZG9lcyBub3Qgd2FpdCBmb3IgcHJvY2Vzc2luZyBvZiBrZXlzIGNvbnRhaW5lZCBpbgpAQCAtMjU2OCw3ICsyNzIyLDcgQEAKIGZpbGV3cml0YWJsZSh7ZmlsZX0pCQkJCQkqZmlsZXdyaXRhYmxlKCkqCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGlzIDEgd2hlbiBhIGZpbGUgd2l0aCB0aGUKIAkJbmFtZSB7ZmlsZX0gZXhpc3RzLCBhbmQgY2FuIGJlIHdyaXR0ZW4uICBJZiB7ZmlsZX0gZG9lc24ndAotCQlleGlzdCwgb3IgaXMgbm90IHdyaXRhYmxlLCB0aGUgcmVzdWx0IGlzIDAuICBJZiAoZmlsZSkgaXMgYQorCQlleGlzdCwgb3IgaXMgbm90IHdyaXRhYmxlLCB0aGUgcmVzdWx0IGlzIDAuICBJZiB7ZmlsZX0gaXMgYQogCQlkaXJlY3RvcnksIGFuZCB3ZSBjYW4gd3JpdGUgdG8gaXQsIHRoZSByZXN1bHQgaXMgMi4KIAogCkBAIC0yNjIxLDEzICsyNzc1LDQ3IEBACiA8CQlTZWFyY2hlcyBmcm9tIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgZmlsZSB1cHdhcmRzIHVudGlsCiAJCWl0IGZpbmRzIHRoZSBmaWxlICJ0YWdzLnZpbSIuCiAKK2Zsb2F0Mm5yKHtleHByfSkJCQkJCSpmbG9hdDJucigpKgorCQlDb252ZXJ0IHtleHByfSB0byBhIE51bWJlciBieSBvbWl0dGluZyB0aGUgcGFydCBhZnRlciB0aGUKKwkJZGVjaW1hbCBwb2ludC4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgTnVtYmVyLgorCQlXaGVuIHRoZSB2YWx1ZSBvZiB7ZXhwcn0gaXMgb3V0IG9mIHJhbmdlIGZvciBhIHxOdW1iZXJ8IHRoZQorCQlyZXN1bHQgaXMgdHJ1bmNhdGVkIHRvIDB4N2ZmZmZmZmYgb3IgLTB4N2ZmZmZmZmYuICBOYU4gcmVzdWx0cworCQlpbiAtMHg4MDAwMDAwMC4KKwkJRXhhbXBsZXM6ID4KKwkJCWVjaG8gZmxvYXQybnIoMy45NSkKKzwJCQkzICA+CisJCQllY2hvIGZsb2F0Mm5yKC0yMy40NSkKKzwJCQktMjMgID4KKwkJCWVjaG8gZmxvYXQybnIoMS4wZTEwMCkKKzwJCQkyMTQ3NDgzNjQ3ICA+CisJCQllY2hvIGZsb2F0Mm5yKC0xLjBlMTUwKQorPAkJCS0yMTQ3NDgzNjQ3ICA+CisJCQllY2hvIGZsb2F0Mm5yKDEuMGUtMTAwKQorPAkJCTAKKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKworCitmbG9vcih7ZXhwcn0pCQkJCQkJCSpmbG9vcigpKgorCQlSZXR1cm4gdGhlIGxhcmdlc3QgaW50ZWdyYWwgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCisJCXtleHByfSBhcyBhIHxGbG9hdHwgKHJvdW5kIGRvd24pLgorCQl7ZXhwcn0gbXVzdCBldmFsdWF0ZSB0byBhIHxGbG9hdHwgb3IgYSB8TnVtYmVyfC4KKwkJRXhhbXBsZXM6ID4KKwkJCWVjaG8gZmxvb3IoMS44NTYpCis8CQkJMS4wICA+CisJCQllY2hvIGZsb29yKC01LjQ1NikKKzwJCQktNi4wICA+CisJCQllY2hvIGZsb29yKDQuMCkKKzwJCQk0LjAKKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKwkJCiBmbmFtZWVzY2FwZSh7c3RyaW5nfSkJCQkJCSpmbmFtZWVzY2FwZSgpKgotCQlFc2NhcGUge3N0cmluZ30gZm9yIHVzZSBhcyBmaWxlIG5hbWUgY29tbWFuZCBhcmd1bWVudC4gIEFsbAorCQlFc2NhcGUge3N0cmluZ30gZm9yIHVzZSBhcyBmaWxlIG5hbWUgY29tbWFuZCBhcmd1bWVudC4JQWxsCiAJCWNoYXJhY3RlcnMgdGhhdCBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzICclJyBhbmQgJ3wnCiAJCWFyZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2guCi0JCUZvciBtb3N0IHN5c3RlbXMgdGhlIGNoYXJhY3RlcnMgZXNjYXBlZCBhcmUgIiIuICBGb3Igc3lzdGVtcwotCQl3aGVyZSBhIGJhY2tzbGFzaCBhcHBlYXJzIGluIGEgZmlsZW5hbWUsIGl0IGRlcGVuZHMgb24gdGhlCi0JCXZhbHVlIG9mICdpc2ZuYW1lJy4KKwkJRm9yIG1vc3Qgc3lzdGVtcyB0aGUgY2hhcmFjdGVycyBlc2NhcGVkIGFyZQorCQkiIFx0XG4qP1t7YCRcXCUjJ1wifCE8Ii4gIEZvciBzeXN0ZW1zIHdoZXJlIGEgYmFja3NsYXNoCisJCWFwcGVhcnMgaW4gYSBmaWxlbmFtZSwgaXQgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgJ2lzZm5hbWUnLgogCQlFeGFtcGxlOiA+CiAJCQk6bGV0IGZuYW1lID0gJ3NvbWUgc3RyJW5nZXxuYW1lJwogCQkJOmV4ZSAiZWRpdCAiIC4gZm5hbWVlc2NhcGUoZm5hbWUpCkBAIC0yNjQyLDcgKzI4MzAsNyBAQAogCQkJOmVjaG8gZm5hbWVtb2RpZnkoIm1haW4uYyIsICI6cDpoIikKIDwJCXJlc3VsdHMgaW46ID4KIAkJCS9ob21lL21vb2wvdmltL3ZpbS9zcmMKLTwJCU5vdGU6IEVudmlyb25tZW50IHZhcmlhYmxlcyBhbmQgIn4iIGRvbid0IHdvcmsgaW4ge2ZuYW1lfSwgdXNlCis8CQlOb3RlOiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgZG9uJ3Qgd29yayBpbiB7Zm5hbWV9LCB1c2UKIAkJfGV4cGFuZCgpfCBmaXJzdCB0aGVuLgogCiBmb2xkY2xvc2VkKHtsbnVtfSkJCQkJCSpmb2xkY2xvc2VkKCkqCkBAIC0yNjU3LDcgKzI4NDUsNyBAQAogCiBmb2xkbGV2ZWwoe2xudW19KQkJCQkJKmZvbGRsZXZlbCgpKgogCQlUaGUgcmVzdWx0IGlzIGEgTnVtYmVyLCB3aGljaCBpcyB0aGUgZm9sZGxldmVsIG9mIGxpbmUge2xudW19Ci0JCWluIHRoZSBjdXJyZW50IGJ1ZmZlci4gIEZvciBuZXN0ZWQgZm9sZHMgdGhlIGRlZXBlc3QgbGV2ZWwgaXMKKwkJaW4gdGhlIGN1cnJlbnQgYnVmZmVyLglGb3IgbmVzdGVkIGZvbGRzIHRoZSBkZWVwZXN0IGxldmVsIGlzCiAJCXJldHVybmVkLiAgSWYgdGhlcmUgaXMgbm8gZm9sZCBhdCBsaW5lIHtsbnVtfSwgemVybyBpcwogCQlyZXR1cm5lZC4gIEl0IGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSBmb2xkcyBhcmUgb3BlbiBvciBjbG9zZWQuCiAJCVdoZW4gdXNlZCB3aGlsZSB1cGRhdGluZyBmb2xkcyAoZnJvbSAnZm9sZGV4cHInKSAtMSBpcwpAQCAtMjY3Miw3ICsyODYwLDcgQEAKIAkJfHY6Zm9sZHN0YXJ0fCwgfHY6Zm9sZGVuZHwgYW5kIHx2OmZvbGRkYXNoZXN8IHZhcmlhYmxlcy4KIAkJVGhlIHJldHVybmVkIHN0cmluZyBsb29rcyBsaWtlIHRoaXM6ID4KIAkJCSstLSA0NSBsaW5lczogYWJjZGVmCi08CQlUaGUgbnVtYmVyIG9mIGRhc2hlcyBkZXBlbmRzIG9uIHRoZSBmb2xkbGV2ZWwuICBUaGUgIjQ1IiBpcworPAkJVGhlIG51bWJlciBvZiBkYXNoZXMgZGVwZW5kcyBvbiB0aGUgZm9sZGxldmVsLglUaGUgIjQ1IiBpcwogCQl0aGUgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBmb2xkLiAgImFiY2RlZiIgaXMgdGhlIHRleHQgaW4gdGhlCiAJCWZpcnN0IG5vbi1ibGFuayBsaW5lIG9mIHRoZSBmb2xkLiAgTGVhZGluZyB3aGl0ZSBzcGFjZSwgIi8vIgogCQlvciAiLyoiIGFuZCB0aGUgdGV4dCBmcm9tIHRoZSAnZm9sZG1hcmtlcicgYW5kICdjb21tZW50c3RyaW5nJwpAQCAtMjY5MCw3ICsyODc4LDcgQEAKIAkJe25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRob3V0IHRoZSB8K2ZvbGRpbmd8IGZlYXR1cmV9CiAKIAkJCQkJCQkqZm9yZWdyb3VuZCgpKgotZm9yZWdyb3VuZCgpCU1vdmUgdGhlIFZpbSB3aW5kb3cgdG8gdGhlIGZvcmVncm91bmQuICBVc2VmdWwgd2hlbiBzZW50IGZyb20KK2ZvcmVncm91bmQoKQlNb3ZlIHRoZSBWaW0gd2luZG93IHRvIHRoZSBmb3JlZ3JvdW5kLglVc2VmdWwgd2hlbiBzZW50IGZyb20KIAkJYSBjbGllbnQgdG8gYSBWaW0gc2VydmVyLiB8cmVtb3RlX3NlbmQoKXwKIAkJT24gV2luMzIgc3lzdGVtcyB0aGlzIG1pZ2h0IG5vdCB3b3JrLCB0aGUgT1MgZG9lcyBub3QgYWx3YXlzCiAJCWFsbG93IGEgd2luZG93IHRvIGJyaW5nIGl0c2VsZiB0byB0aGUgZm9yZWdyb3VuZC4gIFVzZQpAQCAtMjc5Myw3ICsyOTgxLDcgQEAKIAkJfHY6bW91c2VfbG51bXwgYW5kIHx2Om1vdXNlX3dpbnwuICBUaGlzIGV4YW1wbGUgcG9zaXRpb25zIHRoZQogCQltb3VzZSBhcyBpdCB3b3VsZCBub3JtYWxseSBoYXBwZW46ID4KIAkJCWxldCBjID0gZ2V0Y2hhcigpCi0JCSAgCWlmIGMgPT0gIlw8TGVmdE1vdXNlPiIgJiYgdjptb3VzZV93aW4gPiAwCisJCQlpZiBjID09ICJcPExlZnRNb3VzZT4iICYmIHY6bW91c2Vfd2luID4gMAogCQkJICBleGUgdjptb3VzZV93aW4gLiAid2luY21kIHciCiAJCQkgIGV4ZSB2Om1vdXNlX2xudW0KIAkJCSAgZXhlICJub3JtYWwgIiAuIHY6bW91c2VfY29sIC4gInwiCkBAIC0yODMxLDcgKzMwMTksNyBAQAogCQkJNjQJbW91c2UgcXVhZHJ1cGxlIGNsaWNrCiAJCQkxMjgJTWFjaW50b3NoIG9ubHk6IGNvbW1hbmQKIAkJT25seSB0aGUgbW9kaWZpZXJzIHRoYXQgaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUKLQkJY2hhcmFjdGVyIGl0c2VsZiBhcmUgb2J0YWluZWQuICBUaHVzIFNoaWZ0LWEgcmVzdWx0cyBpbiAiQSIKKwkJY2hhcmFjdGVyIGl0c2VsZiBhcmUgb2J0YWluZWQuCVRodXMgU2hpZnQtYSByZXN1bHRzIGluICJBIgogCQl3aXRoIG5vIG1vZGlmaWVyLgogCiBnZXRjbWRsaW5lKCkJCQkJCQkqZ2V0Y21kbGluZSgpKgpAQCAtMzA1OCw3ICszMjQ2LDcgQEAKIAogCQkJCQkJCSpnZXR3aW5wb3N5KCkqCiBnZXR3aW5wb3N5KCkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgdGhlIFkgY29vcmRpbmF0ZSBpbiBwaXhlbHMgb2YKLQkJdGhlIHRvcCBvZiB0aGUgR1VJIFZpbSB3aW5kb3cuICBUaGUgcmVzdWx0IHdpbGwgYmUgLTEgaWYgdGhlCisJCXRoZSB0b3Agb2YgdGhlIEdVSSBWaW0gd2luZG93LglUaGUgcmVzdWx0IHdpbGwgYmUgLTEgaWYgdGhlCiAJCWluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAKIGdldHdpbnZhcih7d2lubnJ9LCB7dmFybmFtZX0pCQkJCSpnZXR3aW52YXIoKSoKQEAgLTMwNzMsNiArMzI2MSw4IEBACiAJCVRoZSByZXN1bHQgaXMgYSBTdHJpbmcuCiAJCVdoZW4gdGhlcmUgYXJlIHNldmVyYWwgbWF0Y2hlcywgdGhleSBhcmUgc2VwYXJhdGVkIGJ5IDxOTD4KIAkJY2hhcmFjdGVycy4KKwkJVGhlICd3aWxkaWdub3JlJyBvcHRpb24gYXBwbGllczogTmFtZXMgbWF0Y2hpbmcgb25lIG9mIHRoZQorCQlwYXR0ZXJucyBpbiAnd2lsZGlnbm9yZScgd2lsbCBiZSBza2lwcGVkLgogCQlJZiB0aGUgZXhwYW5zaW9uIGZhaWxzLCB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IHN0cmluZy4KIAkJQSBuYW1lIGZvciBhIG5vbi1leGlzdGluZyBmaWxlIGlzIG5vdCBpbmNsdWRlZC4KIApAQCAtMzA4MSw3ICszMjcxLDcgQEAKIAkJCTpsZXQgdGFnZmlsZXMgPSBnbG9iKCJgZmluZCAuIC1uYW1lIHRhZ3MgLXByaW50YCIpCiAJCQk6bGV0ICZ0YWdzID0gc3Vic3RpdHV0ZSh0YWdmaWxlcywgIlxuIiwgIiwiLCAiZyIpCiA8CQlUaGUgcmVzdWx0IG9mIHRoZSBwcm9ncmFtIGluc2lkZSB0aGUgYmFja3RpY2tzIHNob3VsZCBiZSBvbmUKLQkJaXRlbSBwZXIgbGluZS4gIFNwYWNlcyBpbnNpZGUgYW4gaXRlbSBhcmUgYWxsb3dlZC4KKwkJaXRlbSBwZXIgbGluZS4JU3BhY2VzIGluc2lkZSBhbiBpdGVtIGFyZSBhbGxvd2VkLgogCiAJCVNlZSB8ZXhwYW5kKCl8IGZvciBleHBhbmRpbmcgc3BlY2lhbCBWaW0gdmFyaWFibGVzLiAgU2VlCiAJCXxzeXN0ZW0oKXwgZm9yIGdldHRpbmcgdGhlIHJhdyBvdXRwdXQgb2YgYW4gZXh0ZXJuYWwgY29tbWFuZC4KQEAgLTMxMTksNyArMzMwOSw3IEBACiAKIGhhc2xvY2FsZGlyKCkJCQkJCQkqaGFzbG9jYWxkaXIoKSoKIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgMSB3aGVuIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgd2luZG93IGhhcyBzZXQgYSBsb2NhbCBwYXRoIHZpYSB8OmxjZHwsIGFuZCAwIG90aGVyd2lzZS4KKwkJd2luZG93IGhhcyBzZXQgYSBsb2NhbCBwYXRoIHZpYSB8OmxjZHwsIGFuZCAwIG90aGVyd2lzZS4KIAogaGFzbWFwdG8oe3doYXR9IFssIHttb2RlfSBbLCB7YWJicn1dXSkJCQkqaGFzbWFwdG8oKSoKIAkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgd2hpY2ggaXMgMSBpZiB0aGVyZSBpcyBhIG1hcHBpbmcgdGhhdApAQCAtMzE0Miw3ICszMzMyLDcgQEAKIAkJV2hlbiB7bW9kZX0gaXMgb21pdHRlZCwgIm52byIgaXMgdXNlZC4KIAogCQlUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB0byBjaGVjayBpZiBhIG1hcHBpbmcgYWxyZWFkeSBleGlzdHMKLQkJdG8gYSBmdW5jdGlvbiBpbiBhIFZpbSBzY3JpcHQuICBFeGFtcGxlOiA+CisJCXRvIGEgZnVuY3Rpb24gaW4gYSBWaW0gc2NyaXB0LglFeGFtcGxlOiA+CiAJCQk6aWYgIWhhc21hcHRvKCdcQUJDZG9pdCcpCiAJCQk6ICAgbWFwIDxMZWFkZXI+ZCBcQUJDZG9pdAogCQkJOmVuZGlmCkBAIC0zMTU0LDcgKzMzNDQsNyBAQAogCQlvbmUgb2Y6CQkJCQkqaGlzdC1uYW1lcyoKIAkJCSJjbWQiCSBvciAiOiIJICBjb21tYW5kIGxpbmUgaGlzdG9yeQogCQkJInNlYXJjaCIgb3IgIi8iICAgc2VhcmNoIHBhdHRlcm4gaGlzdG9yeQotCQkJImV4cHIiICAgb3IgIj0iICAgdHlwZWQgZXhwcmVzc2lvbiBoaXN0b3J5CisJCQkiZXhwciIJIG9yICI9IiAgIHR5cGVkIGV4cHJlc3Npb24gaGlzdG9yeQogCQkJImlucHV0IiAgb3IgIkAiCSAgaW5wdXQgbGluZSBoaXN0b3J5CiAJCUlmIHtpdGVtfSBkb2VzIGFscmVhZHkgZXhpc3QgaW4gdGhlIGhpc3RvcnksIGl0IHdpbGwgYmUKIAkJc2hpZnRlZCB0byBiZWNvbWUgdGhlIG5ld2VzdCBlbnRyeS4KQEAgLTMxNzEsNyArMzM2MSw3IEBACiAJCWZvciB0aGUgcG9zc2libGUgdmFsdWVzIG9mIHtoaXN0b3J5fS4KIAogCQlJZiB0aGUgcGFyYW1ldGVyIHtpdGVtfSBpcyBnaXZlbiBhcyBTdHJpbmcsIHRoaXMgaXMgc2VlbgotCQlhcyByZWd1bGFyIGV4cHJlc3Npb24uICBBbGwgZW50cmllcyBtYXRjaGluZyB0aGF0IGV4cHJlc3Npb24KKwkJYXMgcmVndWxhciBleHByZXNzaW9uLglBbGwgZW50cmllcyBtYXRjaGluZyB0aGF0IGV4cHJlc3Npb24KIAkJd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGhpc3RvcnkgKGlmIHRoZXJlIGFyZSBhbnkpLgogCQlVcHBlci9sb3dlcmNhc2UgbXVzdCBtYXRjaCwgdW5sZXNzICJcYyIgaXMgdXNlZCB8L1xjfC4KIAkJSWYge2l0ZW19IGlzIGEgTnVtYmVyLCBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGluZGV4LCBzZWUKQEAgLTMyMzUsNyArMzQyNSw3IEBACiAJCXdpdGggbmFtZSB7bmFtZX0uICBXaGVuIHRoZSBoaWdobGlnaHQgZ3JvdXAgZG9lc24ndCBleGlzdCwKIAkJemVybyBpcyByZXR1cm5lZC4KIAkJVGhpcyBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaGlnaGxpZ2h0Ci0JCWdyb3VwLiAgRm9yIGV4YW1wbGUsIHRvIGdldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUKKwkJZ3JvdXAuCUZvciBleGFtcGxlLCB0byBnZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlCiAJCSJDb21tZW50IiBncm91cDogPgogCTplY2hvIHN5bklEYXR0cihzeW5JRHRyYW5zKGhsSUQoIkNvbW1lbnQiKSksICJiZyIpCiA8CQkJCQkJCSpoaWdobGlnaHRJRCgpKgpAQCAtMzI5Miw3ICszNDgyLDcgQEAKIAkJcHJvbXB0IHRvIHN0YXJ0IGEgbmV3IGxpbmUuCiAJCVRoZSBoaWdobGlnaHRpbmcgc2V0IHdpdGggfDplY2hvaGx8IGlzIHVzZWQgZm9yIHRoZSBwcm9tcHQuCiAJCVRoZSBpbnB1dCBpcyBlbnRlcmVkIGp1c3QgbGlrZSBhIGNvbW1hbmQtbGluZSwgd2l0aCB0aGUgc2FtZQotCQllZGl0aW5nIGNvbW1hbmRzIGFuZCBtYXBwaW5ncy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUgaGlzdG9yeQorCQllZGl0aW5nIGNvbW1hbmRzIGFuZCBtYXBwaW5ncy4JVGhlcmUgaXMgYSBzZXBhcmF0ZSBoaXN0b3J5CiAJCWZvciBsaW5lcyB0eXBlZCBmb3IgaW5wdXQoKS4KIAkJRXhhbXBsZTogPgogCQkJOmlmIGlucHV0KCJDb2ZmZWUgb3IgYmVlcj8gIikgPT0gImJlZXIiCkBAIC0zMzA1LDkgKzM0OTUsOSBAQAogCiA8CQlUaGUgb3B0aW9uYWwge2NvbXBsZXRpb259IGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgdHlwZSBvZgogCQljb21wbGV0aW9uIHN1cHBvcnRlZCBmb3IgdGhlIGlucHV0LiAgV2l0aG91dCBpdCBjb21wbGV0aW9uIGlzCi0JCW5vdCBwZXJmb3JtZWQuICBUaGUgc3VwcG9ydGVkIGNvbXBsZXRpb24gdHlwZXMgYXJlIHRoZSBzYW1lIGFzCisJCW5vdCBwZXJmb3JtZWQuCVRoZSBzdXBwb3J0ZWQgY29tcGxldGlvbiB0eXBlcyBhcmUgdGhlIHNhbWUgYXMKIAkJdGhhdCBjYW4gYmUgc3VwcGxpZWQgdG8gYSB1c2VyLWRlZmluZWQgY29tbWFuZCB1c2luZyB0aGUKLQkJIi1jb21wbGV0ZT0iIGFyZ3VtZW50LiAgUmVmZXIgdG8gfDpjb21tYW5kLWNvbXBsZXRpb258IGZvcgorCQkiLWNvbXBsZXRlPSIgYXJndW1lbnQuCVJlZmVyIHRvIHw6Y29tbWFuZC1jb21wbGV0aW9ufCBmb3IKIAkJbW9yZSBpbmZvcm1hdGlvbi4gIEV4YW1wbGU6ID4KIAkJCWxldCBmbmFtZSA9IGlucHV0KCJGaWxlOiAiLCAiIiwgImZpbGUiKQogPApAQCAtMzM0OCwxMiArMzUzOCwxMiBAQAogCQlkaXNwbGF5ZWQsIG9uZSBzdHJpbmcgcGVyIGxpbmUuICBUaGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvCiAJCWVudGVyIGEgbnVtYmVyLCB3aGljaCBpcyByZXR1cm5lZC4KIAkJVGhlIHVzZXIgY2FuIGFsc28gc2VsZWN0IGFuIGl0ZW0gYnkgY2xpY2tpbmcgb24gaXQgd2l0aCB0aGUKLQkJbW91c2UuICBGb3IgdGhlIGZpcnN0IHN0cmluZyAwIGlzIHJldHVybmVkLiAgV2hlbiBjbGlja2luZworCQltb3VzZS4JRm9yIHRoZSBmaXJzdCBzdHJpbmcgMCBpcyByZXR1cm5lZC4gIFdoZW4gY2xpY2tpbmcKIAkJYWJvdmUgdGhlIGZpcnN0IGl0ZW0gYSBuZWdhdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQuICBXaGVuCiAJCWNsaWNraW5nIG9uIHRoZSBwcm9tcHQgb25lIG1vcmUgdGhhbiB0aGUgbGVuZ3RoIG9mIHt0ZXh0bGlzdH0KIAkJaXMgcmV0dXJuZWQuCiAJCU1ha2Ugc3VyZSB7dGV4dGxpc3R9IGhhcyBsZXNzIHRoZW4gJ2xpbmVzJyBlbnRyaWVzLCBvdGhlcndpc2UKLQkJaXQgd29uJ3Qgd29yay4gIEl0J3MgYSBnb29kIGlkZWEgdG8gcHV0IHRoZSBlbnRyeSBudW1iZXIgYXQKKwkJaXQgd29uJ3Qgd29yay4JSXQncyBhIGdvb2QgaWRlYSB0byBwdXQgdGhlIGVudHJ5IG51bWJlciBhdAogCQl0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy4gIEFuZCBwdXQgYSBwcm9tcHQgaW4gdGhlIGZpcnN0IGl0ZW0uCiAJCUV4YW1wbGU6ID4KIAkJCWxldCBjb2xvciA9IGlucHV0bGlzdChbJ1NlbGVjdCBjb2xvcjonLCAnMS4gcmVkJywKQEAgLTMzODcsNyArMzU3Nyw3IEBACiBpbnNlcnQoe2xpc3R9LCB7aXRlbX0gWywge2lkeH1dKQkJCSppbnNlcnQoKSoKIAkJSW5zZXJ0IHtpdGVtfSBhdCB0aGUgc3RhcnQgb2YgfExpc3R8IHtsaXN0fS4KIAkJSWYge2lkeH0gaXMgc3BlY2lmaWVkIGluc2VydCB7aXRlbX0gYmVmb3JlIHRoZSBpdGVtIHdpdGggaW5kZXgKLQkJe2lkeH0uICBJZiB7aWR4fSBpcyB6ZXJvIGl0IGdvZXMgYmVmb3JlIHRoZSBmaXJzdCBpdGVtLCBqdXN0CisJCXtpZHh9LglJZiB7aWR4fSBpcyB6ZXJvIGl0IGdvZXMgYmVmb3JlIHRoZSBmaXJzdCBpdGVtLCBqdXN0CiAJCWxpa2Ugb21pdHRpbmcge2lkeH0uICBBIG5lZ2F0aXZlIHtpZHh9IGlzIGFsc28gcG9zc2libGUsIHNlZQogCQl8bGlzdC1pbmRleHwuICAtMSBpbnNlcnRzIGp1c3QgYmVmb3JlIHRoZSBsYXN0IGl0ZW0uCiAJCVJldHVybnMgdGhlIHJlc3VsdGluZyB8TGlzdHwuICBFeGFtcGxlczogPgpAQCAtMzQ4Myw3ICszNjczLDcgQEAKIAkJaXQncyB0aGVuIGZyZWVkIHdoZW4gdGhlIERMTCBpcyB1bmxvYWRlZC4KIAogCQlXQVJOSU5HOiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG5vbi12YWxpZCBwb2ludGVyLCBWaW0gbWF5Ci0JCWNyYXNoISAgVGhpcyBhbHNvIGhhcHBlbnMgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBudW1iZXIsCisJCWNyYXNoIQlUaGlzIGFsc28gaGFwcGVucyBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG51bWJlciwKIAkJYmVjYXVzZSBWaW0gdGhpbmtzIGl0J3MgYSBwb2ludGVyLgogCQlGb3IgV2luMzIgc3lzdGVtcywge2xpYm5hbWV9IHNob3VsZCBiZSB0aGUgZmlsZW5hbWUgb2YgdGhlIERMTAogCQl3aXRob3V0IHRoZSAiLkRMTCIgc3VmZml4LiAgQSBmdWxsIHBhdGggaXMgb25seSByZXF1aXJlZCBpZgpAQCAtMzQ5NCw3ICszNjg0LDYgQEAKIAkJZmVhdHVyZSBpcyBwcmVzZW50fQogCQlFeGFtcGxlczogPgogCQkJOmVjaG8gbGliY2FsbCgibGliYy5zbyIsICJnZXRlbnYiLCAiSE9NRSIpCi0JCQk6ZWNobyBsaWJjYWxsbnIoIi91c3IvbGliL2xpYmMuc28iLCAiZ2V0cGlkIiwgIiIpCiA8CiAJCQkJCQkJKmxpYmNhbGxucigpKgogbGliY2FsbG5yKHtsaWJuYW1lfSwge2Z1bmNuYW1lfSwge2FyZ3VtZW50fSkKQEAgLTM1MDIsNyArMzY5MSw4IEBACiAJCWludCBpbnN0ZWFkIG9mIGEgc3RyaW5nLgogCQl7b25seSBpbiBXaW4zMiBvbiBzb21lIFVuaXggdmVyc2lvbnMsIHdoZW4gdGhlIHwrbGliY2FsbHwKIAkJZmVhdHVyZSBpcyBwcmVzZW50fQotCQlFeGFtcGxlIChub3QgdmVyeSB1c2VmdWwuLi4pOiA+CisJCUV4YW1wbGVzOiA+CisJCQk6ZWNobyBsaWJjYWxsbnIoIi91c3IvbGliL2xpYmMuc28iLCAiZ2V0cGlkIiwgIiIpCiAJCQk6Y2FsbCBsaWJjYWxsbnIoImxpYmMuc28iLCAicHJpbnRmIiwgIkhlbGxvIFdvcmxkIVxuIikKIAkJCTpjYWxsIGxpYmNhbGxucigibGliYy5zbyIsICJzbGVlcCIsIDEwKQogPApAQCAtMzUzMCw3ICszNzIwLDcgQEAKIDwJCQkJCQkJKmxhc3QtcG9zaXRpb24tanVtcCoKIAkJVGhpcyBhdXRvY29tbWFuZCBqdW1wcyB0byB0aGUgbGFzdCBrbm93biBwb3NpdGlvbiBpbiBhIGZpbGUKIAkJanVzdCBhZnRlciBvcGVuaW5nIGl0LCBpZiB0aGUgJyIgbWFyayBpcyBzZXQ6ID4KLQk6YXUgQnVmUmVhZFBvc3QgKiBpZiBsaW5lKCInXCIiKSA+IDAgJiYgbGluZSgiJ1wiIikgPD0gbGluZSgiJCIpIHwgZXhlICJub3JtYWwgZydcIiIgfCBlbmRpZgorCTphdSBCdWZSZWFkUG9zdCAqIGlmIGxpbmUoIidcIiIpID4gMSAmJiBsaW5lKCInXCIiKSA8PSBsaW5lKCIkIikgfCBleGUgIm5vcm1hbCEgZydcIiIgfCBlbmRpZgogCiBsaW5lMmJ5dGUoe2xudW19KQkJCQkJKmxpbmUyYnl0ZSgpKgogCQlSZXR1cm4gdGhlIGJ5dGUgY291bnQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBmb3IgbGluZQpAQCAtMzU1OCw2ICszNzQ4LDE2IEBACiAJCTE5NzAuICBTZWUgYWxzbyB8c3RyZnRpbWUoKXwgYW5kIHxnZXRmdGltZSgpfC4KIAogCitsb2cxMCh7ZXhwcn0pCQkJCQkJKmxvZzEwKCkqCisJCVJldHVybiB0aGUgbG9nYXJpdGhtIG9mIEZsb2F0IHtleHByfSB0byBiYXNlIDEwIGFzIGEgfEZsb2F0fC4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuCisJCUV4YW1wbGVzOiA+CisJCQk6ZWNobyBsb2cxMCgxMDAwKQorPAkJCTMuMCA+CisJCQk6ZWNobyBsb2cxMCgwLjAxKQorPAkJCS0yLjAKKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKwkJCiBtYXAoe2V4cHJ9LCB7c3RyaW5nfSkJCQkJCSptYXAoKSoKIAkJe2V4cHJ9IG11c3QgYmUgYSB8TGlzdHwgb3IgYSB8RGljdGlvbmFyeXwuCiAJCVJlcGxhY2UgZWFjaCBpdGVtIGluIHtleHByfSB3aXRoIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZwpAQCAtMzYxNSw3ICszODE1LDcgQEAKIAkJQSBtYXRjaCBoYXBwZW5zIHdpdGggYSBtYXBwaW5nIHRoYXQgc3RhcnRzIHdpdGgge25hbWV9IGFuZAogCQl3aXRoIGEgbWFwcGluZyB3aGljaCBpcyBlcXVhbCB0byB0aGUgc3RhcnQgb2Yge25hbWV9LgogCi0JCQltYXRjaGVzIG1hcHBpbmcgImEiICAgICAiYWIiICAgICJhYmMiIH4KKwkJCW1hdGNoZXMgbWFwcGluZyAiYSIJImFiIgkiYWJjIiB+CiAJCSAgIG1hcGNoZWNrKCJhIikJeWVzCXllcwkgeWVzCiAJCSAgIG1hcGNoZWNrKCJhYmMiKQl5ZXMJeWVzCSB5ZXMKIAkJICAgbWFwY2hlY2soImF4IikJeWVzCW5vCSBubwpAQCAtMzY0Miw3ICszODQyLDcgQEAKIAkJV2hlbiB7ZXhwcn0gaXMgYSB8TGlzdHwgdGhlbiB0aGlzIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZQogCQlmaXJzdCBpdGVtIHdoZXJlIHtwYXR9IG1hdGNoZXMuICBFYWNoIGl0ZW0gaXMgdXNlZCBhcyBhCiAJCVN0cmluZywgfExpc3RzfCBhbmQgfERpY3Rpb25hcmllc3wgYXJlIHVzZWQgYXMgZWNob2VkLgotCQlPdGhlcndpc2UsIHtleHByfSBpcyB1c2VkIGFzIGEgU3RyaW5nLiAgVGhlIHJlc3VsdCBpcyBhCisJCU90aGVyd2lzZSwge2V4cHJ9IGlzIHVzZWQgYXMgYSBTdHJpbmcuCVRoZSByZXN1bHQgaXMgYQogCQlOdW1iZXIsIHdoaWNoIGdpdmVzIHRoZSBpbmRleCAoYnl0ZSBvZmZzZXQpIGluIHtleHByfSB3aGVyZQogCQl7cGF0fSBtYXRjaGVzLgogCQlBIG1hdGNoIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb3IgfExpc3R8IGl0ZW0gcmV0dXJucyB6ZXJvLgpAQCAtMzY1Miw3ICszODUyLDcgQEAKIAkJCTplY2hvIG1hdGNoKFsxLCAneCddLCAnXGEnKQkiIHJlc3VsdHMgaW4gMQogPAkJU2VlIHxzdHJpbmctbWF0Y2h8IGZvciBob3cge3BhdH0gaXMgdXNlZC4KIAkJCQkJCQkJKnN0cnBicmsoKSoKLQkJVmltIGRvZXNuJ3QgaGF2ZSBhIHN0cnBicmsoKSBmdW5jdGlvbi4gIEJ1dCB5b3UgY2FuIGRvOiA+CisJCVZpbSBkb2Vzbid0IGhhdmUgYSBzdHJwYnJrKCkgZnVuY3Rpb24uCUJ1dCB5b3UgY2FuIGRvOiA+CiAJCQk6bGV0IHNlcGlkeCA9IG1hdGNoKGxpbmUsICdbLiw7OiBcdF0nKQogPAkJCQkJCQkJKnN0cmNhc2VzdHIoKSoKIAkJVmltIGRvZXNuJ3QgaGF2ZSBhIHN0cmNhc2VzdHIoKSBmdW5jdGlvbi4gIEJ1dCB5b3UgY2FuIGFkZApAQCAtMzY4OSw3ICszODg5LDcgQEAKIAogCQlTZWUgfHBhdHRlcm58IGZvciB0aGUgcGF0dGVybnMgdGhhdCBhcmUgYWNjZXB0ZWQuCiAJCVRoZSAnaWdub3JlY2FzZScgb3B0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBpZ25vcmUtY2FzZW5lc3Mgb2YKLQkJdGhlIHBhdHRlcm4uICAnc21hcnRjYXNlJyBpcyBOT1QgdXNlZC4gIFRoZSBtYXRjaGluZyBpcyBhbHdheXMKKwkJdGhlIHBhdHRlcm4uICAnc21hcnRjYXNlJyBpcyBOT1QgdXNlZC4JVGhlIG1hdGNoaW5nIGlzIGFsd2F5cwogCQlkb25lIGxpa2UgJ21hZ2ljJyBpcyBzZXQgYW5kICdjcG9wdGlvbnMnIGlzIGVtcHR5LgogCiAJCQkJCSptYXRjaGFkZCgpKiAqRTc5OCogKkU3OTkqICpFODAxKgpAQCAtMzcwMCw3ICszOTAwLDcgQEAKIAkJbWF0Y2ggdXNpbmcgfG1hdGNoZGVsZXRlKCl8LgogCiAJCVRoZSBvcHRpb25hbCB7cHJpb3JpdHl9IGFyZ3VtZW50IGFzc2lnbnMgYSBwcmlvcml0eSB0byB0aGUKLQkJbWF0Y2guICBBIG1hdGNoIHdpdGggYSBoaWdoIHByaW9yaXR5IHdpbGwgaGF2ZSBpdHMKKwkJbWF0Y2guCUEgbWF0Y2ggd2l0aCBhIGhpZ2ggcHJpb3JpdHkgd2lsbCBoYXZlIGl0cwogCQloaWdobGlnaHRpbmcgb3ZlcnJ1bGUgdGhhdCBvZiBhIG1hdGNoIHdpdGggYSBsb3dlciBwcmlvcml0eS4KIAkJQSBwcmlvcml0eSBpcyBzcGVjaWZpZWQgYXMgYW4gaW50ZWdlciAobmVnYXRpdmUgbnVtYmVycyBhcmUgbm8KIAkJZXhjZXB0aW9uKS4gIElmIHRoZSB7cHJpb3JpdHl9IGFyZ3VtZW50IGlzIG5vdCBzcGVjaWZpZWQsIHRoZQpAQCAtMzcyOCw3ICszOTI4LDcgQEAKIAkJCTpjYWxsIG1hdGNoZGVsZXRlKG0pCiAKIDwJCUEgbGlzdCBvZiBtYXRjaGVzIGRlZmluZWQgYnkgfG1hdGNoYWRkKCl8IGFuZCB8Om1hdGNofCBhcmUKLQkJYXZhaWxhYmxlIGZyb20gfGdldG1hdGNoZXMoKXwuICBBbGwgbWF0Y2hlcyBjYW4gYmUgZGVsZXRlZCBpbgorCQlhdmFpbGFibGUgZnJvbSB8Z2V0bWF0Y2hlcygpfC4JQWxsIG1hdGNoZXMgY2FuIGJlIGRlbGV0ZWQgaW4KIAkJb25lIG9wZXJhdGlvbiBieSB8Y2xlYXJtYXRjaGVzKCl8LgogCiBtYXRjaGFyZyh7bnJ9KQkJCQkJCQkqbWF0Y2hhcmcoKSoKQEAgLTM3NDUsNyArMzk0NSw3IEBACiAKIG1hdGNoZGVsZXRlKHtpZH0pCQkJICAgICAgICptYXRjaGRlbGV0ZSgpKiAqRTgwMiogKkU4MDMqCiAJCURlbGV0ZXMgYSBtYXRjaCB3aXRoIElEIHtpZH0gcHJldmlvdXNseSBkZWZpbmVkIGJ5IHxtYXRjaGFkZCgpfAotCQlvciBvbmUgb2YgdGhlIHw6bWF0Y2h8IGNvbW1hbmRzLiAgUmV0dXJucyAwIGlmIHN1Y2Nlc2Z1bGwsCisJCW9yIG9uZSBvZiB0aGUgfDptYXRjaHwgY29tbWFuZHMuICBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCwKIAkJb3RoZXJ3aXNlIC0xLiAgU2VlIGV4YW1wbGUgZm9yIHxtYXRjaGFkZCgpfC4gIEFsbCBtYXRjaGVzIGNhbgogCQliZSBkZWxldGVkIGluIG9uZSBvcGVyYXRpb24gYnkgfGNsZWFybWF0Y2hlcygpfC4KIApAQCAtMzc3OSw3ICszOTc5LDcgQEAKIAkJV2hlbiB0aGVyZSBpcyBubyBtYXRjaCBhbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkLgogCiBtYXRjaHN0cih7ZXhwcn0sIHtwYXR9Wywge3N0YXJ0fVssIHtjb3VudH1dXSkJCQkqbWF0Y2hzdHIoKSoKLQkJU2FtZSBhcyBtYXRjaCgpLCBidXQgcmV0dXJuIHRoZSBtYXRjaGVkIHN0cmluZy4gIEV4YW1wbGU6ID4KKwkJU2FtZSBhcyB8bWF0Y2goKXwsIGJ1dCByZXR1cm4gdGhlIG1hdGNoZWQgc3RyaW5nLiAgRXhhbXBsZTogPgogCQkJOmVjaG8gbWF0Y2hzdHIoInRlc3RpbmciLCAiaW5nIikKIDwJCXJlc3VsdHMgaW4gImluZyIuCiAJCVdoZW4gdGhlcmUgaXMgbm8gbWF0Y2ggIiIgaXMgcmV0dXJuZWQuCkBAIC0zODEwLDE1ICs0MDEwLDIxIEBACiAJCW5lY2Vzc2FyeS4gIE90aGVyd2lzZSBpdCBtdXN0IGJlICIiLgogCQlJZiB7cHJvdH0gaXMgZ2l2ZW4gaXQgaXMgdXNlZCB0byBzZXQgdGhlIHByb3RlY3Rpb24gYml0cyBvZgogCQl0aGUgbmV3IGRpcmVjdG9yeS4gIFRoZSBkZWZhdWx0IGlzIDA3NTUgKHJ3eHIteHIteDogci93IGZvcgotCQl0aGUgdXNlciByZWFkYWJsZSBmb3Igb3RoZXJzKS4gIFVzZSAwNzAwIHRvIG1ha2UgaXQgdW5yZWFkYWJsZQorCQl0aGUgdXNlciByZWFkYWJsZSBmb3Igb3RoZXJzKS4JVXNlIDA3MDAgdG8gbWFrZSBpdCB1bnJlYWRhYmxlCiAJCWZvciBvdGhlcnMuCiAJCVRoaXMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgfHNhbmRib3h8LgogCQlOb3QgYXZhaWxhYmxlIG9uIGFsbCBzeXN0ZW1zLiAgVG8gY2hlY2sgdXNlOiA+CiAJCQk6aWYgZXhpc3RzKCIqbWtkaXIiKQogPAogCQkJCQkJCSptb2RlKCkqCi1tb2RlKCkJCVJldHVybiBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgY3VycmVudCBtb2RlOgorbW9kZShbZXhwcl0pCVJldHVybiBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgY3VycmVudCBtb2RlLgorCQlJZiBbZXhwcl0gaXMgc3VwcGxpZWQgYW5kIGl0IGV2YWx1YXRlcyB0byBhIG5vbi16ZXJvIG51bWJlciBvcgorCQlhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZW4gdGhlIGZ1bGwgbW9kZSBpcyByZXR1cm5lZCwgb3RoZXJ3aXNlCisJCW9ubHkgdGhlIGZpcnN0IGxldHRlciBpcyByZXR1cm5lZC4gIE5vdGUgdGhhdCAiICIgYW5kICIwIiBhcmUKKwkJYWxzbyBub24tZW1wdHkgc3RyaW5ncy4KKwogCQkJbglOb3JtYWwKKwkJCW5vCU9wZXJhdG9yLXBlbmRpbmcKIAkJCXYJVmlzdWFsIGJ5IGNoYXJhY3RlcgogCQkJVglWaXN1YWwgYnkgbGluZQogCQkJQ1RSTC1WCVZpc3VhbCBibG9ja3dpc2UKQEAgLTM4MjYsMTEgKzQwMzIsMTkgQEAKIAkJCVMJU2VsZWN0IGJ5IGxpbmUKIAkJCUNUUkwtUwlTZWxlY3QgYmxvY2t3aXNlCiAJCQlpCUluc2VydAotCQkJUglSZXBsYWNlCisJCQlSCVJlcGxhY2UgfFJ8CisJCQlSdglWaXJ0dWFsIFJlcGxhY2UgfGdSfAogCQkJYwlDb21tYW5kLWxpbmUKKwkJCWN2CVZpbSBFeCBtb2RlIHxnUXwKKwkJCWNlCU5vcm1hbCBFeCBtb2RlIHxRfAogCQkJcglIaXQtZW50ZXIgcHJvbXB0Ci0JCVRoaXMgaXMgdXNlZnVsIGluIHRoZSAnc3RhdHVzbGluZScgb3B0aW9uLiAgSW4gbW9zdCBvdGhlcgotCQlwbGFjZXMgaXQgYWx3YXlzIHJldHVybnMgImMiIG9yICJuIi4KKwkJCXJtCVRoZSAtLSBtb3JlIC0tIHByb21wdAorCQkJcj8JQSB8OmNvbmZpcm18IHF1ZXJ5IG9mIHNvbWUgc29ydAorCQkJIQlTaGVsbCBvciBleHRlcm5hbCBjb21tYW5kIGlzIGV4ZWN1dGluZworCQlUaGlzIGlzIHVzZWZ1bCBpbiB0aGUgJ3N0YXR1c2xpbmUnIG9wdGlvbiBvciB3aGVuIHVzZWQKKwkJd2l0aCB8cmVtb3RlX2V4cHIoKXwgSW4gbW9zdCBvdGhlciBwbGFjZXMgaXQgYWx3YXlzIHJldHVybnMKKwkJImMiIG9yICJuIi4KKwkJQWxzbyBzZWUgfHZpc3VhbG1vZGUoKXwuCiAKIG5leHRub25ibGFuayh7bG51bX0pCQkJCQkqbmV4dG5vbmJsYW5rKCkqCiAJCVJldHVybiB0aGUgbGluZSBudW1iZXIgb2YgdGhlIGZpcnN0IGxpbmUgYXQgb3IgYmVsb3cge2xudW19CkBAIC0zODU0LDcgKzQwNjgsOCBAQAogCiAJCQkJCQkJKmdldHBpZCgpKgogZ2V0cGlkKCkJUmV0dXJuIGEgTnVtYmVyIHdoaWNoIGlzIHRoZSBwcm9jZXNzIElEIG9mIHRoZSBWaW0gcHJvY2Vzcy4KLQkJT24gVW5peCB0aGlzIGlzIGEgdW5pcXVlIG51bWJlci4gIE9uIE1TLURPUyBpdCdzIGFsd2F5cyB6ZXJvLgorCQlPbiBVbml4IGFuZCBNUy1XaW5kb3dzIHRoaXMgaXMgYSB1bmlxdWUgbnVtYmVyLCB1bnRpbCBWaW0KKwkJZXhpdHMuCU9uIE1TLURPUyBpdCdzIGFsd2F5cyB6ZXJvLgogCiAJCQkJCQkJKmdldHBvcygpKgogZ2V0cG9zKHtleHByfSkJR2V0IHRoZSBwb3NpdGlvbiBmb3Ige2V4cHJ9LiAgRm9yIHBvc3NpYmxlIHZhbHVlcyBvZiB7ZXhwcn0KQEAgLTM4ODQsNiArNDA5OSwxOCBAQAogPAkJCX4vLnYvYS9teWZpbGUudmltIH4KIAkJSXQgZG9lc24ndCBtYXR0ZXIgaWYgdGhlIHBhdGggZXhpc3RzIG9yIG5vdC4KIAorcG93KHt4fSwge3l9KQkJCQkJCSpwb3coKSoKKwkJUmV0dXJuIHRoZSBwb3dlciBvZiB7eH0gdG8gdGhlIGV4cG9uZW50IHt5fSBhcyBhIHxGbG9hdHwuCisJCXt4fSBhbmQge3l9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuCisJCUV4YW1wbGVzOiA+CisJCQk6ZWNobyBwb3coMywgMykKKzwJCQkyNy4wID4KKwkJCTplY2hvIHBvdygyLCAxNikKKzwJCQk2NTUzNi4wID4KKwkJCTplY2hvIHBvdygzMiwgMC4yMCkKKzwJCQkyLjAKKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKwkJCiBwcmV2bm9uYmxhbmsoe2xudW19KQkJCQkJKnByZXZub25ibGFuaygpKgogCQlSZXR1cm4gdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBmaXJzdCBsaW5lIGF0IG9yIGFib3ZlIHtsbnVtfQogCQl0aGF0IGlzIG5vdCBibGFuay4gIEV4YW1wbGU6ID4KQEAgLTM5MDMsMTUgKzQxMzAsMjAgQEAKIAkJT2Z0ZW4gdXNlZCBpdGVtcyBhcmU6CiAJCSAgJXMJc3RyaW5nCiAJCSAgJTZzCXN0cmluZyByaWdodC1hbGlnbmVkIGluIDYgYnl0ZXMKLQkJICAlLjlzICBzdHJpbmcgdHJ1bmNhdGVkIHRvIDkgYnl0ZXMKLQkJICAlYyAgICBzaW5nbGUgYnl0ZQotCQkgICVkICAgIGRlY2ltYWwgbnVtYmVyCi0JCSAgJTVkICAgZGVjaW1hbCBudW1iZXIgcGFkZGVkIHdpdGggc3BhY2VzIHRvIDUgY2hhcmFjdGVycwotCQkgICV4ICAgIGhleCBudW1iZXIKLQkJICAlMDR4ICBoZXggbnVtYmVyIHBhZGRlZCB3aXRoIHplcm9zIHRvIGF0IGxlYXN0IDQgY2hhcmFjdGVycwotCQkgICVYICAgIGhleCBudW1iZXIgdXNpbmcgdXBwZXIgY2FzZSBsZXR0ZXJzCi0JCSAgJW8gICAgb2N0YWwgbnVtYmVyCi0JCSAgJSUgICAgdGhlICUgY2hhcmFjdGVyIGl0c2VsZgorCQkgICUuOXMJc3RyaW5nIHRydW5jYXRlZCB0byA5IGJ5dGVzCisJCSAgJWMJc2luZ2xlIGJ5dGUKKwkJICAlZAlkZWNpbWFsIG51bWJlcgorCQkgICU1ZAlkZWNpbWFsIG51bWJlciBwYWRkZWQgd2l0aCBzcGFjZXMgdG8gNSBjaGFyYWN0ZXJzCisJCSAgJXgJaGV4IG51bWJlcgorCQkgICUwNHgJaGV4IG51bWJlciBwYWRkZWQgd2l0aCB6ZXJvcyB0byBhdCBsZWFzdCA0IGNoYXJhY3RlcnMKKwkJICAlWAloZXggbnVtYmVyIHVzaW5nIHVwcGVyIGNhc2UgbGV0dGVycworCQkgICVvCW9jdGFsIG51bWJlcgorCQkgICVmCWZsb2F0aW5nIHBvaW50IG51bWJlciBpbiB0aGUgZm9ybSAxMjMuNDU2CisJCSAgJWUJZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGluIHRoZSBmb3JtIDEuMjM0ZTMKKwkJICAlRQlmbG9hdGluZyBwb2ludCBudW1iZXIgaW4gdGhlIGZvcm0gMS4yMzRFMworCQkgICVnCWZsb2F0aW5nIHBvaW50IG51bWJlciwgYXMgJWYgb3IgJWUgZGVwZW5kaW5nIG9uIHZhbHVlCisJCSAgJUcJZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBhcyAlZiBvciAlRSBkZXBlbmRpbmcgb24gdmFsdWUKKwkJICAlJQl0aGUgJSBjaGFyYWN0ZXIgaXRzZWxmCiAKIAkJQ29udmVyc2lvbiBzcGVjaWZpY2F0aW9ucyBzdGFydCB3aXRoICclJyBhbmQgZW5kIHdpdGggdGhlCiAJCWNvbnZlcnNpb24gdHlwZS4gIEFsbCBvdGhlciBjaGFyYWN0ZXJzIGFyZSBjb3BpZWQgdW5jaGFuZ2VkIHRvCkBAIC0zOTUyLDcgKzQxODQsNyBAQAogCQkJICAgICAgbnVtYmVyIHByb2R1Y2VkIGJ5IGEgc2lnbmVkIGNvbnZlcnNpb24gKGQpLgogCiAJCSAgICArCSAgICAgIEEgc2lnbiBtdXN0IGFsd2F5cyBiZSBwbGFjZWQgYmVmb3JlIGEgbnVtYmVyCi0JCQkgICAgICBwcm9kdWNlZCBieSBhIHNpZ25lZCBjb252ZXJzaW9uLiAgQSArIG92ZXJyaWRlcworCQkJICAgICAgcHJvZHVjZWQgYnkgYSBzaWduZWQgY29udmVyc2lvbi4JQSArIG92ZXJyaWRlcwogCQkJICAgICAgYSBzcGFjZSBpZiBib3RoIGFyZSB1c2VkLgogCiAJCWZpZWxkLXdpZHRoCkBAIC0zOTY5LDYgKzQyMDEsOCBAQAogCQkJVGhpcyBnaXZlcyB0aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIHRvIGFwcGVhciBmb3IKIAkJCWQsIG8sIHgsIGFuZCBYIGNvbnZlcnNpb25zLCBvciB0aGUgbWF4aW11bSBudW1iZXIgb2YKIAkJCWJ5dGVzIHRvIGJlIHByaW50ZWQgZnJvbSBhIHN0cmluZyBmb3IgcyBjb252ZXJzaW9ucy4KKwkJCUZvciBmbG9hdGluZyBwb2ludCBpdCBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlcgorCQkJdGhlIGRlY2ltYWwgcG9pbnQuCiAKIAkJdHlwZQogCQkJQSBjaGFyYWN0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgY29udmVyc2lvbiB0bwpAQCAtMzk3Niw3ICs0MjEwLDcgQEAKIAogCQlBIGZpZWxkIHdpZHRoIG9yIHByZWNpc2lvbiwgb3IgYm90aCwgbWF5IGJlIGluZGljYXRlZCBieSBhbgogCQlhc3RlcmlzayAnKicgaW5zdGVhZCBvZiBhIGRpZ2l0IHN0cmluZy4gIEluIHRoaXMgY2FzZSwgYQotCQlOdW1iZXIgYXJndW1lbnQgc3VwcGxpZXMgdGhlIGZpZWxkIHdpZHRoIG9yIHByZWNpc2lvbi4gIEEKKwkJTnVtYmVyIGFyZ3VtZW50IHN1cHBsaWVzIHRoZSBmaWVsZCB3aWR0aCBvciBwcmVjaXNpb24uCUEKIAkJbmVnYXRpdmUgZmllbGQgd2lkdGggaXMgdHJlYXRlZCBhcyBhIGxlZnQgYWRqdXN0bWVudCBmbGFnCiAJCWZvbGxvd2VkIGJ5IGEgcG9zaXRpdmUgZmllbGQgd2lkdGg7IGEgbmVnYXRpdmUgcHJlY2lzaW9uIGlzCiAJCXRyZWF0ZWQgYXMgdGhvdWdoIGl0IHdlcmUgbWlzc2luZy4gIEV4YW1wbGU6ID4KQEAgLTM5ODYsNyArNDIyMCw4IEBACiAKIAkJVGhlIGNvbnZlcnNpb24gc3BlY2lmaWVycyBhbmQgdGhlaXIgbWVhbmluZ3MgYXJlOgogCi0JCWRveFggICAgVGhlIE51bWJlciBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gc2lnbmVkIGRlY2ltYWwKKwkJCQkqcHJpbnRmLWQqICpwcmludGYtbyogKnByaW50Zi14KiAqcHJpbnRmLVgqCisJCWRveFgJVGhlIE51bWJlciBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgdG8gc2lnbmVkIGRlY2ltYWwKIAkJCShkKSwgdW5zaWduZWQgb2N0YWwgKG8pLCBvciB1bnNpZ25lZCBoZXhhZGVjaW1hbCAoeAogCQkJYW5kIFgpIG5vdGF0aW9uLiAgVGhlIGxldHRlcnMgImFiY2RlZiIgYXJlIHVzZWQgZm9yCiAJCQl4IGNvbnZlcnNpb25zOyB0aGUgbGV0dGVycyAiQUJDREVGIiBhcmUgdXNlZCBmb3IgWApAQCAtNDAwMCwxOCArNDIzNSw1MCBAQAogCQkJYSBjb252ZXJzaW9uIGlzIHdpZGVyIHRoYW4gdGhlIGZpZWxkIHdpZHRoLCB0aGUgZmllbGQKIAkJCWlzIGV4cGFuZGVkIHRvIGNvbnRhaW4gdGhlIGNvbnZlcnNpb24gcmVzdWx0LgogCisJCQkJCQkJKnByaW50Zi1jKgogCQljCVRoZSBOdW1iZXIgYXJndW1lbnQgaXMgY29udmVydGVkIHRvIGEgYnl0ZSwgYW5kIHRoZQogCQkJcmVzdWx0aW5nIGNoYXJhY3RlciBpcyB3cml0dGVuLgogCisJCQkJCQkJKnByaW50Zi1zKgogCQlzCVRoZSB0ZXh0IG9mIHRoZSBTdHJpbmcgYXJndW1lbnQgaXMgdXNlZC4gIElmIGEKIAkJCXByZWNpc2lvbiBpcyBzcGVjaWZpZWQsIG5vIG1vcmUgYnl0ZXMgdGhhbiB0aGUgbnVtYmVyCiAJCQlzcGVjaWZpZWQgYXJlIHVzZWQuCiAKKwkJCQkJCQkqcHJpbnRmLWYqICpFODA3KgorCQlmCVRoZSBGbG9hdCBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyBvZiB0aGUgCisJCQlmb3JtIDEyMy40NTYuICBUaGUgcHJlY2lzaW9uIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisJCQlkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICBXaGVuIHRoZSBwcmVjaXNpb24gaXMKKwkJCXplcm8gdGhlIGRlY2ltYWwgcG9pbnQgaXMgb21pdHRlZC4gIFdoZW4gdGhlIHByZWNpc2lvbgorCQkJaXMgbm90IHNwZWNpZmllZCA2IGlzIHVzZWQuICBBIHJlYWxseSBiaWcgbnVtYmVyCisJCQkob3V0IG9mIHJhbmdlIG9yIGRpdmlkaW5nIGJ5IHplcm8pIHJlc3VsdHMgaW4gImluZiIuCisJCQkiMC4wIC8gMC4wIiByZXN1bHRzIGluICJuYW4iLgorCQkJRXhhbXBsZTogPgorCQkJCWVjaG8gcHJpbnRmKCIlLjJmIiwgMTIuMTE1KQorPAkJCQkxMi4xMgorCQkJTm90ZSB0aGF0IHJvdW5kb2ZmIGRlcGVuZHMgb24gdGhlIHN5c3RlbSBsaWJyYXJpZXMuCisJCQlVc2UgfHJvdW5kKCl8IHdoZW4gaW4gZG91YnQuCisKKwkJCQkJCQkqcHJpbnRmLWUqICpwcmludGYtRSoKKwkJZSBFCVRoZSBGbG9hdCBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyBvZiB0aGUKKwkJCWZvcm0gMS4yMzRlKzAzIG9yIDEuMjM0RSswMyB3aGVuIHVzaW5nICdFJy4gIFRoZQorCQkJcHJlY2lzaW9uIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUKKwkJCWRlY2ltYWwgcG9pbnQsIGxpa2Ugd2l0aCAnZicuCisKKwkJCQkJCQkqcHJpbnRmLWcqICpwcmludGYtRyoKKwkJZyBHCVRoZSBGbG9hdCBhcmd1bWVudCBpcyBjb252ZXJ0ZWQgbGlrZSB3aXRoICdmJyBpZiB0aGUKKwkJCXZhbHVlIGlzIGJldHdlZW4gMC4wMDEgKGluY2x1c2l2ZSkgYW5kIDEwMDAwMDAwLjAKKwkJCShleGNsdXNpdmUpLiAgT3RoZXJ3aXNlICdlJyBpcyB1c2VkIGZvciAnZycgYW5kICdFJworCQkJZm9yICdHJy4gIFdoZW4gbm8gcHJlY2lzaW9uIGlzIHNwZWNpZmllZCBzdXBlcmZsdW91cworCQkJemVyb2VzIGFuZCAnKycgc2lnbnMgYXJlIHJlbW92ZWQsIGV4Y2VwdCBmb3IgdGhlIHplcm8KKwkJCWltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAgVGh1cyAxMDAwMDAwMC4wCisJCQlyZXN1bHRzIGluIDEuMGU3LgorCisJCQkJCQkJKnByaW50Zi0lKgogCQklCUEgJyUnIGlzIHdyaXR0ZW4uICBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQuICBUaGUKIAkJCWNvbXBsZXRlIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbiBpcyAiJSUiLgogCiAJCUVhY2ggYXJndW1lbnQgY2FuIGJlIE51bWJlciBvciBTdHJpbmcgYW5kIGlzIGNvbnZlcnRlZAotCQlhdXRvbWF0aWNhbGx5IHRvIGZpdCB0aGUgY29udmVyc2lvbiBzcGVjaWZpZXIuICBBbnkgb3RoZXIKKwkJYXV0b21hdGljYWxseSB0byBmaXQgdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVyLglBbnkgb3RoZXIKIAkJYXJndW1lbnQgdHlwZSByZXN1bHRzIGluIGFuIGVycm9yIG1lc3NhZ2UuCiAKIAkJCQkJCQkqRTc2NiogKkU3NjcqCkBAIC00MTA1LDcgKzQzNzIsNyBAQAogCiAJCQkJCQkJKnJlbW90ZV9leHByKCkqICpFNDQ5KgogcmVtb3RlX2V4cHIoe3NlcnZlcn0sIHtzdHJpbmd9IFssIHtpZHZhcn1dKQotCQlTZW5kIHRoZSB7c3RyaW5nfSB0byB7c2VydmVyfS4gIFRoZSBzdHJpbmcgaXMgc2VudCBhcyBhbgorCQlTZW5kIHRoZSB7c3RyaW5nfSB0byB7c2VydmVyfS4JVGhlIHN0cmluZyBpcyBzZW50IGFzIGFuCiAJCWV4cHJlc3Npb24gYW5kIHRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYWZ0ZXIgZXZhbHVhdGlvbi4KIAkJVGhlIHJlc3VsdCBtdXN0IGJlIGEgU3RyaW5nIG9yIGEgfExpc3R8LiAgQSB8TGlzdHwgaXMgdHVybmVkCiAJCWludG8gYSBTdHJpbmcgYnkgam9pbmluZyB0aGUgaXRlbXMgd2l0aCBhIGxpbmUgYnJlYWsgaW4KQEAgLTQxNDAsNyArNDQwNyw3IEBACiByZW1vdGVfcGVlayh7c2VydmVyaWR9IFssIHtyZXR2YXJ9XSkJCSpyZW1vdGVfcGVlaygpKgogCQlSZXR1cm5zIGEgcG9zaXRpdmUgbnVtYmVyIGlmIHRoZXJlIGFyZSBhdmFpbGFibGUgc3RyaW5ncwogCQlmcm9tIHtzZXJ2ZXJpZH0uICBDb3BpZXMgYW55IHJlcGx5IHN0cmluZyBpbnRvIHRoZSB2YXJpYWJsZQotCQl7cmV0dmFyfSBpZiBzcGVjaWZpZWQuICB7cmV0dmFyfSBtdXN0IGJlIGEgc3RyaW5nIHdpdGggdGhlCisJCXtyZXR2YXJ9IGlmIHNwZWNpZmllZC4Je3JldHZhcn0gbXVzdCBiZSBhIHN0cmluZyB3aXRoIHRoZQogCQluYW1lIG9mIGEgdmFyaWFibGUuCiAJCVJldHVybnMgemVybyBpZiBub25lIGFyZSBhdmFpbGFibGUuCiAJCVJldHVybnMgLTEgaWYgc29tZXRoaW5nIGlzIHdyb25nLgpAQCAtNDE2Miw3ICs0NDI5LDcgQEAKIDwKIAkJCQkJCQkqcmVtb3RlX3NlbmQoKSogKkUyNDEqCiByZW1vdGVfc2VuZCh7c2VydmVyfSwge3N0cmluZ30gWywge2lkdmFyfV0pCi0JCVNlbmQgdGhlIHtzdHJpbmd9IHRvIHtzZXJ2ZXJ9LiAgVGhlIHN0cmluZyBpcyBzZW50IGFzIGlucHV0CisJCVNlbmQgdGhlIHtzdHJpbmd9IHRvIHtzZXJ2ZXJ9LglUaGUgc3RyaW5nIGlzIHNlbnQgYXMgaW5wdXQKIAkJa2V5cyBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgaW1tZWRpYXRlbHkuICBBdCB0aGUgVmltIHNlcnZlcgogCQl0aGUga2V5cyBhcmUgbm90IG1hcHBlZCB8Om1hcHwuCiAJCUlmIHtpZHZhcn0gaXMgcHJlc2VudCwgaXQgaXMgdGFrZW4gYXMgdGhlIG5hbWUgb2YgYSB2YXJpYWJsZQpAQCAtNDIxMyw3ICs0NDgwLDcgQEAKIAkJCTpsZXQgc2VwYXJhdG9yID0gcmVwZWF0KCctJywgODApCiA8CQlXaGVuIHtjb3VudH0gaXMgemVybyBvciBuZWdhdGl2ZSB0aGUgcmVzdWx0IGlzIGVtcHR5LgogCQlXaGVuIHtleHByfSBpcyBhIHxMaXN0fCB0aGUgcmVzdWx0IGlzIHtleHByfSBjb25jYXRlbmF0ZWQKLQkJe2NvdW50fSB0aW1lcy4gIEV4YW1wbGU6ID4KKwkJe2NvdW50fSB0aW1lcy4JRXhhbXBsZTogPgogCQkJOmxldCBsb25nbGlzdCA9IHJlcGVhdChbJ2EnLCAnYiddLCAzKQogPAkJUmVzdWx0cyBpbiBbJ2EnLCAnYicsICdhJywgJ2InLCAnYScsICdiJ10uCiAKQEAgLTQyMzIsMTggKzQ0OTksMzMgQEAKIAkJcGF0aCBuYW1lKSBhbmQgYWxzbyBrZWVwcyBhIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yLgogCiAJCQkJCQkJKnJldmVyc2UoKSoKLXJldmVyc2Uoe2xpc3R9KQlSZXZlcnNlIHRoZSBvcmRlciBvZiBpdGVtcyBpbiB7bGlzdH0gaW4tcGxhY2UuICBSZXR1cm5zCityZXZlcnNlKHtsaXN0fSkJUmV2ZXJzZSB0aGUgb3JkZXIgb2YgaXRlbXMgaW4ge2xpc3R9IGluLXBsYWNlLglSZXR1cm5zCiAJCXtsaXN0fS4KIAkJSWYgeW91IHdhbnQgYSBsaXN0IHRvIHJlbWFpbiB1bm1vZGlmaWVkIG1ha2UgYSBjb3B5IGZpcnN0OiA+CiAJCQk6bGV0IHJldmxpc3QgPSByZXZlcnNlKGNvcHkobXlsaXN0KSkKIAorcm91bmQoe2V4cHJ9KQkJCQkJCQkqcm91bmQoKSoKKwkJUm91bmQgb2ZmIHtleHByfSB0byBhIHRoZSBuZWFyZXN0IGludGVncmFsIHZhbHVlIGFuZCByZXR1cm4gaXQKKwkJYXMgYSB8RmxvYXR8LiAgSWYge2V4cHJ9IGxpZXMgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ3JhbAorCQl2YWx1ZXMsIHRoZW4gdXNlIHRoZSBsYXJnZXIgb25lIChhd2F5IGZyb20gemVybykuCisJCXtleHByfSBtdXN0IGV2YWx1YXRlIHRvIGEgfEZsb2F0fCBvciBhIHxOdW1iZXJ8LgorCQlFeGFtcGxlczogPgorCQkJZWNobyByb3VuZCgwLjQ1NikKKzwJCQkwLjAgID4KKwkJCWVjaG8gcm91bmQoNC41KQorPAkJCTUuMCA+CisJCQllY2hvIHJvdW5kKC00LjUpCis8CQkJLTUuMAorCQl7b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K2Zsb2F0fCBmZWF0dXJlfQorCQkKKwkJCiBzZWFyY2goe3BhdHRlcm59IFssIHtmbGFnc30gWywge3N0b3BsaW5lfSBbLCB7dGltZW91dH1dXV0pCSpzZWFyY2goKSoKIAkJU2VhcmNoIGZvciByZWdleHAgcGF0dGVybiB7cGF0dGVybn0uICBUaGUgc2VhcmNoIHN0YXJ0cyBhdCB0aGUKIAkJY3Vyc29yIHBvc2l0aW9uICh5b3UgY2FuIHVzZSB8Y3Vyc29yKCl8IHRvIHNldCBpdCkuCiAKIAkJe2ZsYWdzfSBpcyBhIFN0cmluZywgd2hpY2ggY2FuIGNvbnRhaW4gdGhlc2UgY2hhcmFjdGVyIGZsYWdzOgogCQknYicJc2VhcmNoIGJhY2t3YXJkIGluc3RlYWQgb2YgZm9yd2FyZAotCQknYycgICAgIGFjY2VwdCBhIG1hdGNoIGF0IHRoZSBjdXJzb3IgcG9zaXRpb24KKwkJJ2MnCWFjY2VwdCBhIG1hdGNoIGF0IHRoZSBjdXJzb3IgcG9zaXRpb24KIAkJJ2UnCW1vdmUgdG8gdGhlIEVuZCBvZiB0aGUgbWF0Y2gKIAkJJ24nCWRvIE5vdCBtb3ZlIHRoZSBjdXJzb3IKIAkJJ3AnCXJldHVybiBudW1iZXIgb2YgbWF0Y2hpbmcgc3ViLXBhdHRlcm4gKHNlZSBiZWxvdykKQEAgLTQyNjgsNyArNDU1MCw3IEBACiAJCUEgemVybyB2YWx1ZSBpcyBlcXVhbCB0byBub3QgZ2l2aW5nIHRoZSBhcmd1bWVudC4KIAogCQlXaGVuIHRoZSB7dGltZW91dH0gYXJndW1lbnQgaXMgZ2l2ZW4gdGhlIHNlYXJjaCBzdG9wcyB3aGVuCi0JCW1vcmUgdGhhbiB0aGlzIG1hbnkgbWlsbGkgc2Vjb25kcyBoYXZlIHBhc3NlZC4gIFRodXMgd2hlbgorCQltb3JlIHRoYW4gdGhpcyBtYW55IG1pbGxpIHNlY29uZHMgaGF2ZSBwYXNzZWQuCVRodXMgd2hlbgogCQl7dGltZW91dH0gaXMgNTAwIHRoZSBzZWFyY2ggc3RvcHMgYWZ0ZXIgaGFsZiBhIHNlY29uZC4KIAkJVGhlIHZhbHVlIG11c3Qgbm90IGJlIG5lZ2F0aXZlLiAgQSB6ZXJvIHZhbHVlIGlzIGxpa2Ugbm90CiAJCWdpdmluZyB0aGUgYXJndW1lbnQuCkBAIC00Mjk1LDcgKzQ1NzcsNyBAQAogCQkgICAgOiAgbm9ybWFsIEckCiAJCSAgICA6ICBsZXQgZmxhZ3MgPSAidyIKIAkJICAgIDogIHdoaWxlIHNlYXJjaCgiZm9vIiwgZmxhZ3MpID4gMAotCQkgICAgOiAgICBzL2Zvby9iYXIvZworCQkgICAgOgkgcy9mb28vYmFyL2cKIAkJICAgIDoJIGxldCBmbGFncyA9ICJXIgogCQkgICAgOiAgZW5kd2hpbGUKIAkJICAgIDogIHVwZGF0ZQkJICAgICIgd3JpdGUgdGhlIGZpbGUgaWYgbW9kaWZpZWQKQEAgLTQzNTgsOSArNDY0MCwxMSBAQAogCQl7ZmxhZ3N9ICdiJywgJ2MnLCAnbicsICdzJywgJ3cnIGFuZCAnVycgYXJlIHVzZWQgbGlrZSB3aXRoCiAJCXxzZWFyY2goKXwuICBBZGRpdGlvbmFsbHk6CiAJCSdyJwlSZXBlYXQgdW50aWwgbm8gbW9yZSBtYXRjaGVzIGZvdW5kOyB3aWxsIGZpbmQgdGhlCi0JCQlvdXRlciBwYWlyCi0JCSdtJwlyZXR1cm4gbnVtYmVyIG9mIE1hdGNoZXMgaW5zdGVhZCBvZiBsaW5lIG51bWJlciB3aXRoCisJCQlvdXRlciBwYWlyLiAgSW1wbGllcyB0aGUgJ1cnIGZsYWcuCisJCSdtJwlSZXR1cm4gbnVtYmVyIG9mIG1hdGNoZXMgaW5zdGVhZCBvZiBsaW5lIG51bWJlciB3aXRoCiAJCQl0aGUgbWF0Y2g7IHdpbGwgYmUgPiAxIHdoZW4gJ3InIGlzIHVzZWQuCisJCU5vdGU6IGl0J3MgbmVhcmx5IGFsd2F5cyBhIGdvb2QgaWRlYSB0byB1c2UgdGhlICdXJyBmbGFnLCB0bworCQlhdm9pZCB3cmFwcGluZyBhcm91bmQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KIAogCQlXaGVuIGEgbWF0Y2ggZm9yIHtzdGFydH0sIHttaWRkbGV9IG9yIHtlbmR9IGlzIGZvdW5kLCB0aGUKIAkJe3NraXB9IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIHdpdGggdGhlIGN1cnNvciBwb3NpdGlvbmVkIG9uCkBAIC00Mzg2LDcgKzQ2NzAsNyBAQAogPAkJV2hlbiBzdGFydGluZyBhdCB0aGUgImlmIDIiLCB3aXRoIHRoZSBjdXJzb3Igb24gdGhlICJpIiwgYW5kCiAJCXNlYXJjaGluZyBmb3J3YXJkcywgdGhlICJlbmRpZiAyIiBpcyBmb3VuZC4gIFdoZW4gc3RhcnRpbmcgb24KIAkJdGhlIGNoYXJhY3RlciBqdXN0IGJlZm9yZSB0aGUgImlmIDIiLCB0aGUgImVuZGlmIDEiIHdpbGwgYmUKLQkJZm91bmQuICBUaGF0J3MgYmVjYXVzZSB0aGUgImlmIDIiIHdpbGwgYmUgZm91bmQgZmlyc3QsIGFuZAorCQlmb3VuZC4JVGhhdCdzIGJlY2F1c2UgdGhlICJpZiAyIiB3aWxsIGJlIGZvdW5kIGZpcnN0LCBhbmQKIAkJdGhlbiB0aGlzIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSBuZXN0ZWQgaWYvZW5kaWYgZnJvbSAiaWYgMiIgdG8KIAkJImVuZGlmIDIiLgogCQlXaGVuIHNlYXJjaGluZyBiYWNrd2FyZHMgYW5kIHtlbmR9IGlzIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyLApAQCAtNDQ3OSw3ICs0NzYzLDcgQEAKIAogc2V0Y21kcG9zKHtwb3N9KQkJCQkJKnNldGNtZHBvcygpKgogCQlTZXQgdGhlIGN1cnNvciBwb3NpdGlvbiBpbiB0aGUgY29tbWFuZCBsaW5lIHRvIGJ5dGUgcG9zaXRpb24KLQkJe3Bvc30uICBUaGUgZmlyc3QgcG9zaXRpb24gaXMgMS4KKwkJe3Bvc30uCVRoZSBmaXJzdCBwb3NpdGlvbiBpcyAxLgogCQlVc2UgfGdldGNtZHBvcygpfCB0byBvYnRhaW4gdGhlIGN1cnJlbnQgcG9zaXRpb24uCiAJCU9ubHkgd29ya3Mgd2hpbGUgZWRpdGluZyB0aGUgY29tbWFuZCBsaW5lLCB0aHVzIHlvdSBtdXN0IHVzZQogCQl8Y19DVFJMLVxfZXwsIHxjX0NUUkwtUl89fCBvciB8Y19DVFJMLVJfQ1RSTC1SfCB3aXRoICc9Jy4gIEZvcgpAQCAtNDQ5MiwxNSArNDc3NiwxNSBAQAogCQlSZXR1cm5zIDAgd2hlbiBzdWNjZXNzZnVsLCAxIHdoZW4gbm90IGVkaXRpbmcgdGhlIGNvbW1hbmQKIAkJbGluZS4KIAotc2V0bGluZSh7bG51bX0sIHtsaW5lfSkJCQkJCSpzZXRsaW5lKCkqCi0JCVNldCBsaW5lIHtsbnVtfSBvZiB0aGUgY3VycmVudCBidWZmZXIgdG8ge2xpbmV9Lgorc2V0bGluZSh7bG51bX0sIHt0ZXh0fSkJCQkJCSpzZXRsaW5lKCkqCisJCVNldCBsaW5lIHtsbnVtfSBvZiB0aGUgY3VycmVudCBidWZmZXIgdG8ge3RleHR9LgogCQl7bG51bX0gaXMgdXNlZCBsaWtlIHdpdGggfGdldGxpbmUoKXwuCi0JCVdoZW4ge2xudW19IGlzIGp1c3QgYmVsb3cgdGhlIGxhc3QgbGluZSB0aGUge2xpbmV9IHdpbGwgYmUKKwkJV2hlbiB7bG51bX0gaXMganVzdCBiZWxvdyB0aGUgbGFzdCBsaW5lIHRoZSB7dGV4dH0gd2lsbCBiZQogCQlhZGRlZCBhcyBhIG5ldyBsaW5lLgogCQlJZiB0aGlzIHN1Y2NlZWRzLCAwIGlzIHJldHVybmVkLiAgSWYgdGhpcyBmYWlscyAobW9zdCBsaWtlbHkKIAkJYmVjYXVzZSB7bG51bX0gaXMgaW52YWxpZCkgMSBpcyByZXR1cm5lZC4gIEV4YW1wbGU6ID4KIAkJCTpjYWxsIHNldGxpbmUoNSwgc3RyZnRpbWUoIiVjIikpCi08CQlXaGVuIHtsaW5lfSBpcyBhIHxMaXN0fCB0aGVuIGxpbmUge2xudW19IGFuZCBmb2xsb3dpbmcgbGluZXMKKzwJCVdoZW4ge3RleHR9IGlzIGEgfExpc3R8IHRoZW4gbGluZSB7bG51bX0gYW5kIGZvbGxvd2luZyBsaW5lcwogCQl3aWxsIGJlIHNldCB0byB0aGUgaXRlbXMgaW4gdGhlIGxpc3QuICBFeGFtcGxlOiA+CiAJCQk6Y2FsbCBzZXRsaW5lKDUsIFsnYWFhJywgJ2JiYicsICdjY2MnXSkKIDwJCVRoaXMgaXMgZXF1aXZhbGVudCB0bzogPgpAQCAtNDUxOSw3ICs0ODAzLDcgQEAKIAogc2V0bWF0Y2hlcyh7bGlzdH0pCQkJCQkqc2V0bWF0Y2hlcygpKgogCQlSZXN0b3JlcyBhIGxpc3Qgb2YgbWF0Y2hlcyBzYXZlZCBieSB8Z2V0bWF0Y2hlcygpfC4gIFJldHVybnMgMAotCQlpZiBzdWNjZXNmdWxsLCBvdGhlcndpc2UgLTEuICBBbGwgY3VycmVudCBtYXRjaGVzIGFyZSBjbGVhcmVkCisJCWlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSAtMS4gIEFsbCBjdXJyZW50IG1hdGNoZXMgYXJlIGNsZWFyZWQKIAkJYmVmb3JlIHRoZSBsaXN0IGlzIHJlc3RvcmVkLiAgU2VlIGV4YW1wbGUgZm9yIHxnZXRtYXRjaGVzKCl8LgogCiAJCQkJCQkJKnNldHBvcygpKgpAQCAtNDUzMSw3ICs0ODE1LDcgQEAKIAkJe2xpc3R9IG11c3QgYmUgYSB8TGlzdHwgd2l0aCBmb3VyIG51bWJlcnM6CiAJCSAgICBbYnVmbnVtLCBsbnVtLCBjb2wsIG9mZl0KIAotCQkiYnVmbnVtIiBpcyB0aGUgYnVmZmVyIG51bWJlci4gIFplcm8gY2FuIGJlIHVzZWQgZm9yIHRoZQorCQkiYnVmbnVtIiBpcyB0aGUgYnVmZmVyIG51bWJlci4JWmVybyBjYW4gYmUgdXNlZCBmb3IgdGhlCiAJCWN1cnJlbnQgYnVmZmVyLiAgU2V0dGluZyB0aGUgY3Vyc29yIGlzIG9ubHkgcG9zc2libGUgZm9yCiAJCXRoZSBjdXJyZW50IGJ1ZmZlci4gIFRvIHNldCBhIG1hcmsgaW4gYW5vdGhlciBidWZmZXIgeW91IGNhbgogCQl1c2UgdGhlIHxidWZucigpfCBmdW5jdGlvbiB0byB0dXJuIGEgZmlsZSBuYW1lIGludG8gYSBidWZmZXIKQEAgLTQ1NjIsOSArNDg0Niw5IEBACiAJCWl0ZW0gY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBlbnRyaWVzOgogCiAJCSAgICBidWZucglidWZmZXIgbnVtYmVyOyBtdXN0IGJlIHRoZSBudW1iZXIgb2YgYSB2YWxpZAotCQkgICAgCQlidWZmZXIKKwkJCQlidWZmZXIKIAkJICAgIGZpbGVuYW1lCW5hbWUgb2YgYSBmaWxlOyBvbmx5IHVzZWQgd2hlbiAiYnVmbnIiIGlzIG5vdAotCQkgICAgCQlwcmVzZW50IG9yIGl0IGlzIGludmFsaWQuCisJCQkJcHJlc2VudCBvciBpdCBpcyBpbnZhbGlkLgogCQkgICAgbG51bQlsaW5lIG51bWJlciBpbiB0aGUgZmlsZQogCQkgICAgcGF0dGVybglzZWFyY2ggcGF0dGVybiB1c2VkIHRvIGxvY2F0ZSB0aGUgZXJyb3IKIAkJICAgIGNvbAkJY29sdW1uIG51bWJlcgpAQCAtNDY4OCw2ICs0OTcyLDE3IEBACiAJCWxpbmtzIGJlZm9yZSBzaW1wbGlmeWluZyB0aGUgcGF0aCBuYW1lLCB1c2UgfHJlc29sdmUoKXwuCiAKIAorc2luKHtleHByfSkJCQkJCQkqc2luKCkqCisJCVJldHVybiB0aGUgc2luZSBvZiB7ZXhwcn0sIG1lYXN1cmVkIGluIHJhZGlhbnMsIGFzIGEgfEZsb2F0fC4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuCisJCUV4YW1wbGVzOiA+CisJCQk6ZWNobyBzaW4oMTAwKQorPAkJCS0wLjUwNjM2NiA+CisJCQk6ZWNobyBzaW4oLTQuMDEpCis8CQkJMC43NjMzMDEKKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKwkJCisKIHNvcnQoe2xpc3R9IFssIHtmdW5jfV0pCQkJCQkqc29ydCgpKiAqRTcwMioKIAkJU29ydCB0aGUgaXRlbXMgaW4ge2xpc3R9IGluLXBsYWNlLiAgUmV0dXJucyB7bGlzdH0uICBJZiB5b3UKIAkJd2FudCBhIGxpc3QgdG8gcmVtYWluIHVubW9kaWZpZWQgbWFrZSBhIGNvcHkgZmlyc3Q6ID4KQEAgLTQ3MTAsNyArNTAwNSw3IEBACiAJCQkJCQkJKnNvdW5kZm9sZCgpKgogc291bmRmb2xkKHt3b3JkfSkKIAkJUmV0dXJuIHRoZSBzb3VuZC1mb2xkZWQgZXF1aXZhbGVudCBvZiB7d29yZH0uICBVc2VzIHRoZSBmaXJzdAotCQlsYW5ndWFnZSBpbiAnc3BlbGxhbmcnIGZvciB0aGUgY3VycmVudCB3aW5kb3cgdGhhdCBzdXBwb3J0cworCQlsYW5ndWFnZSBpbiAnc3BlbGxsYW5nJyBmb3IgdGhlIGN1cnJlbnQgd2luZG93IHRoYXQgc3VwcG9ydHMKIAkJc291bmRmb2xkaW5nLiAgJ3NwZWxsJyBtdXN0IGJlIHNldC4gIFdoZW4gbm8gc291bmQgZm9sZGluZyBpcwogCQlwb3NzaWJsZSB0aGUge3dvcmR9IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCiAJCVRoaXMgY2FuIGJlIHVzZWQgZm9yIG1ha2luZyBzcGVsbGluZyBzdWdnZXN0aW9ucy4gIE5vdGUgdGhhdApAQCAtNDc4OCw2ICs1MDgzLDM0IEBACiA8CQlUaGUgb3Bwb3NpdGUgZnVuY3Rpb24gaXMgfGpvaW4oKXwuCiAKIAorc3FydCh7ZXhwcn0pCQkJCQkJKnNxcnQoKSoKKwkJUmV0dXJuIHRoZSBub24tbmVnYXRpdmUgc3F1YXJlIHJvb3Qgb2YgRmxvYXQge2V4cHJ9IGFzIGEKKwkJfEZsb2F0fC4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuICBXaGVuIHtleHByfQorCQlpcyBuZWdhdGl2ZSB0aGUgcmVzdWx0IGlzIE5hTiAoTm90IGEgTnVtYmVyKS4KKwkJRXhhbXBsZXM6ID4KKwkJCTplY2hvIHNxcnQoMTAwKQorPAkJCTEwLjAgPgorCQkJOmVjaG8gc3FydCgtNC4wMSkKKzwJCQluYW4KKwkJe29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtmbG9hdHwgZmVhdHVyZX0KKwkJCisKK3N0cjJmbG9hdCgge2V4cHJ9KQkJCQkJKnN0cjJmbG9hdCgpKgorCQlDb252ZXJ0IFN0cmluZyB7ZXhwcn0gdG8gYSBGbG9hdC4gIFRoaXMgbW9zdGx5IHdvcmtzIHRoZSBzYW1lCisJCWFzIHdoZW4gdXNpbmcgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgaW4gYW4gZXhwcmVzc2lvbiwgc2VlCisJCXxmbG9hdGluZy1wb2ludC1mb3JtYXR8LiAgQnV0IGl0J3MgYSBiaXQgbW9yZSBwZXJtaXNzaXZlLgorCQlFLmcuLCAiMWU0MCIgaXMgYWNjZXB0ZWQsIHdoaWxlIGluIGFuIGV4cHJlc3Npb24geW91IG5lZWQgdG8KKwkJd3JpdGUgIjEuMGU0MCIuCisJCVRleHQgYWZ0ZXIgdGhlIG51bWJlciBpcyBzaWxlbnRseSBpZ25vcmVkLgorCQlUaGUgZGVjaW1hbCBwb2ludCBpcyBhbHdheXMgJy4nLCBubyBtYXR0ZXIgd2hhdCB0aGUgbG9jYWxlIGlzCisJCXNldCB0by4gIEEgY29tbWEgZW5kcyB0aGUgbnVtYmVyOiAiMTIsMzQ1LjY3IiBpcyBjb252ZXJ0ZWQgdG8KKwkJMTIuMC4gIFlvdSBjYW4gc3RyaXAgb3V0IHRob3VzYW5kcyBzZXBhcmF0b3JzIHdpdGgKKwkJfHN1YnN0aXR1dGUoKXw6ID4KKwkJCWxldCBmID0gc3RyMmZsb2F0KHN1YnN0aXR1dGUodGV4dCwgJywnLCAnJywgJ2cnKSkKKzwJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CisKKwogc3RyMm5yKCB7ZXhwcn0gWywge2Jhc2V9XSkJCQkJKnN0cjJucigpKgogCQlDb252ZXJ0IHN0cmluZyB7ZXhwcn0gdG8gYSBudW1iZXIuCiAJCXtiYXNlfSBpcyB0aGUgY29udmVyc2lvbiBiYXNlLCBpdCBjYW4gYmUgOCwgMTAgb3IgMTYuCkBAIC00ODM5LDExICs1MTYyLDEyIEBACiAKIAkJCQkJCQkqc3RyaW5nKCkqCiBzdHJpbmcoe2V4cHJ9KQlSZXR1cm4ge2V4cHJ9IGNvbnZlcnRlZCB0byBhIFN0cmluZy4gIElmIHtleHByfSBpcyBhIE51bWJlciwKLQkJU3RyaW5nIG9yIGEgY29tcG9zaXRpb24gb2YgdGhlbSwgdGhlbiB0aGUgcmVzdWx0IGNhbiBiZSBwYXJzZWQKLQkJYmFjayB3aXRoIHxldmFsKCl8LgorCQlGbG9hdCwgU3RyaW5nIG9yIGEgY29tcG9zaXRpb24gb2YgdGhlbSwgdGhlbiB0aGUgcmVzdWx0IGNhbiBiZQorCQlwYXJzZWQgYmFjayB3aXRoIHxldmFsKCl8LgogCQkJe2V4cHJ9IHR5cGUJcmVzdWx0IH4KIAkJCVN0cmluZwkJJ3N0cmluZycKIAkJCU51bWJlcgkJMTIzCisJCQlGbG9hdAkJMTIzLjEyMzQ1NiBvciAxLjEyMzQ1NmU4CiAJCQlGdW5jcmVmCQlmdW5jdGlvbignbmFtZScpCiAJCQlMaXN0CQlbaXRlbSwgaXRlbV0KIAkJCURpY3Rpb25hcnkJe2tleTogdmFsdWUsIGtleTogdmFsdWV9CkBAIC00ODcyLDcgKzUxOTYsNyBAQAogCQkJc3RycGFydCgiYWJjZGVmZyIsIDMsIDIpICAgID09ICJkZSIKIAkJCXN0cnBhcnQoImFiY2RlZmciLCAtMiwgNCkgICA9PSAiYWIiCiAJCQlzdHJwYXJ0KCJhYmNkZWZnIiwgNSwgNCkgICAgPT0gImZnIgotCQkJc3RycGFydCgiYWJjZGVmZyIsIDMpICAgICAgID09ICJkZWZnIgorCQkJc3RycGFydCgiYWJjZGVmZyIsIDMpCSAgICA9PSAiZGVmZyIKIDwJCU5vdGU6IFRvIGdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB7c3RhcnR9IG11c3QgYmUgMC4gIEZvcgogCQlleGFtcGxlLCB0byBnZXQgdGhyZWUgYnl0ZXMgdW5kZXIgYW5kIGFmdGVyIHRoZSBjdXJzb3I6ID4KIAkJCXN0cnBhcnQoZ2V0bGluZSgiLiIpLCBjb2woIi4iKSAtIDEsIDMpCkBAIC00OTIyLDcgKzUyNDYsNyBAQAogCQlTZWUgfHN0cmluZy1tYXRjaHwgZm9yIGhvdyB7cGF0fSBpcyB1c2VkLgogCQlBbmQgYSAifiIgaW4ge3N1Yn0gaXMgbm90IHJlcGxhY2VkIHdpdGggdGhlIHByZXZpb3VzIHtzdWJ9LgogCQlOb3RlIHRoYXQgc29tZSBjb2RlcyBpbiB7c3VifSBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nCi0JCXxzdWItcmVwbGFjZS1zcGVjaWFsfC4gIEZvciBleGFtcGxlLCB0byByZXBsYWNlIHNvbWV0aGluZyB3aXRoCisJCXxzdWItcmVwbGFjZS1zcGVjaWFsfC4JRm9yIGV4YW1wbGUsIHRvIHJlcGxhY2Ugc29tZXRoaW5nIHdpdGgKIAkJIlxuIiAodHdvIGNoYXJhY3RlcnMpLCB1c2UgIlxcXFxuIiBvciAnXFxuJy4KIAkJV2hlbiB7cGF0fSBkb2VzIG5vdCBtYXRjaCBpbiB7ZXhwcn0sIHtleHByfSBpcyByZXR1cm5lZAogCQl1bm1vZGlmaWVkLgpAQCAtNDk0NCw3ICs1MjY4LDcgQEAKIAkJbGluZS4gICdzeW5tYXhjb2wnIGFwcGxpZXMsIGluIGEgbG9uZ2VyIGxpbmUgemVybyBpcyByZXR1cm5lZC4KIAogCQlXaGVuIHt0cmFuc30gaXMgbm9uLXplcm8sIHRyYW5zcGFyZW50IGl0ZW1zIGFyZSByZWR1Y2VkIHRvIHRoZQotCQlpdGVtIHRoYXQgdGhleSByZXZlYWwuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHdhbnRpbmcgdG8ga25vdworCQlpdGVtIHRoYXQgdGhleSByZXZlYWwuCVRoaXMgaXMgdXNlZnVsIHdoZW4gd2FudGluZyB0byBrbm93CiAJCXRoZSBlZmZlY3RpdmUgY29sb3IuICBXaGVuIHt0cmFuc30gaXMgemVybywgdGhlIHRyYW5zcGFyZW50CiAJCWl0ZW0gaXMgcmV0dXJuZWQuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHdhbnRpbmcgdG8ga25vdyB3aGljaAogCQlzeW50YXggaXRlbSBpcyBlZmZlY3RpdmUgKGUuZy4gaW5zaWRlIHBhcmVucykuCkBAIC00OTU5LDcgKzUyODMsNyBAQAogCQlzeW50YXggSUQge3N5bklEfS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gb2J0YWluIGluZm9ybWF0aW9uCiAJCWFib3V0IGEgc3ludGF4IGl0ZW0uCiAJCXttb2RlfSBjYW4gYmUgImd1aSIsICJjdGVybSIgb3IgInRlcm0iLCB0byBnZXQgdGhlIGF0dHJpYnV0ZXMKLQkJZm9yIHRoYXQgbW9kZS4gIFdoZW4ge21vZGV9IGlzIG9taXR0ZWQsIG9yIGFuIGludmFsaWQgdmFsdWUgaXMKKwkJZm9yIHRoYXQgbW9kZS4JV2hlbiB7bW9kZX0gaXMgb21pdHRlZCwgb3IgYW4gaW52YWxpZCB2YWx1ZSBpcwogCQl1c2VkLCB0aGUgYXR0cmlidXRlcyBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgaGlnaGxpZ2h0aW5nIGFyZQogCQl1c2VkIChHVUksIGN0ZXJtIG9yIHRlcm0pLgogCQlVc2Ugc3luSUR0cmFucygpIHRvIGZvbGxvdyBsaW5rZWQgaGlnaGxpZ2h0IGdyb3Vwcy4KQEAgLTUxMTgsNyArNTQ0Miw3IEBACiAKIHRlbXBuYW1lKCkJCQkJCSp0ZW1wbmFtZSgpKiAqdGVtcC1maWxlLW5hbWUqCiAJCVRoZSByZXN1bHQgaXMgYSBTdHJpbmcsIHdoaWNoIGlzIHRoZSBuYW1lIG9mIGEgZmlsZSB0aGF0Ci0JCWRvZXNuJ3QgZXhpc3QuICBJdCBjYW4gYmUgdXNlZCBmb3IgYSB0ZW1wb3JhcnkgZmlsZS4gIFRoZSBuYW1lCisJCWRvZXNuJ3QgZXhpc3QuCUl0IGNhbiBiZSB1c2VkIGZvciBhIHRlbXBvcmFyeSBmaWxlLiAgVGhlIG5hbWUKIAkJaXMgZGlmZmVyZW50IGZvciBhdCBsZWFzdCAyNiBjb25zZWN1dGl2ZSBjYWxscy4gIEV4YW1wbGU6ID4KIAkJCTpsZXQgdG1wZmlsZSA9IHRlbXBuYW1lKCkKIAkJCTpleGUgInJlZGlyID4gIiAuIHRtcGZpbGUKQEAgLTUxNTMsNiArNTQ3NywxOSBAQAogCQkJZWNobyB0cigiPGJsb2I+IiwgIjw+IiwgInt9IikKIDwJCXJldHVybnMgIntibG9ifSIKIAordHJ1bmMoe2V4cHJ9KQkJCQkJCQkqdHJ1bmMoKSoKKwkJUmV0dXJuIHRoZSBsYXJnZXN0IGludGVncmFsIHZhbHVlIHdpdGggbWFnbml0dXRlZCBsZXNzIHRoYW4gb3IKKwkJZXF1YWwgdG8ge2V4cHJ9IGFzIGEgfEZsb2F0fCAodHJ1bmNhdGUgdG93YXJkcyB6ZXJvKS4KKwkJe2V4cHJ9IG11c3QgZXZhbHVhdGUgdG8gYSB8RmxvYXR8IG9yIGEgfE51bWJlcnwuCisJCUV4YW1wbGVzOiA+CisJCQllY2hvIHRydW5jKDEuNDU2KQorPAkJCTEuMCAgPgorCQkJZWNobyB0cnVuYygtNS40NTYpCis8CQkJLTUuMCAgPgorCQkJZWNobyB0cnVuYyg0LjApCis8CQkJNC4wCisJCXtvbmx5IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGggdGhlIHwrZmxvYXR8IGZlYXR1cmV9CisJCQogCQkJCQkJCSp0eXBlKCkqCiB0eXBlKHtleHByfSkJVGhlIHJlc3VsdCBpcyBhIE51bWJlciwgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHtleHByfToKIAkJCU51bWJlcjoJICAgIDAKQEAgLTUxNjAsMTUgKzU0OTcsMTcgQEAKIAkJCUZ1bmNyZWY6ICAgIDIKIAkJCUxpc3Q6CSAgICAzCiAJCQlEaWN0aW9uYXJ5OiA0CisJCQlGbG9hdDoJICAgIDUKIAkJVG8gYXZvaWQgdGhlIG1hZ2ljIG51bWJlcnMgaXQgc2hvdWxkIGJlIHVzZWQgdGhpcyB3YXk6ID4KIAkJCTppZiB0eXBlKG15dmFyKSA9PSB0eXBlKDApCiAJCQk6aWYgdHlwZShteXZhcikgPT0gdHlwZSgiIikKIAkJCTppZiB0eXBlKG15dmFyKSA9PSB0eXBlKGZ1bmN0aW9uKCJ0ciIpKQogCQkJOmlmIHR5cGUobXl2YXIpID09IHR5cGUoW10pCiAJCQk6aWYgdHlwZShteXZhcikgPT0gdHlwZSh7fSkKKwkJCTppZiB0eXBlKG15dmFyKSA9PSB0eXBlKDAuMCkKIAogdmFsdWVzKHtkaWN0fSkJCQkJCQkqdmFsdWVzKCkqCi0JCVJldHVybiBhIHxMaXN0fCB3aXRoIGFsbCB0aGUgdmFsdWVzIG9mIHtkaWN0fS4gIFRoZSB8TGlzdHwgaXMKKwkJUmV0dXJuIGEgfExpc3R8IHdpdGggYWxsIHRoZSB2YWx1ZXMgb2Yge2RpY3R9LglUaGUgfExpc3R8IGlzCiAJCWluIGFyYml0cmFyeSBvcmRlci4KIAogCkBAIC01MTk5LDggKzU1MzgsOCBAQAogCQlFeGFtcGxlczogPgogICB2aXJ0Y29sKCIuIikJICAgd2l0aCB0ZXh0ICJmb29eTGJhciIsIHdpdGggY3Vyc29yIG9uIHRoZSAiXkwiLCByZXR1cm5zIDUKICAgdmlydGNvbCgiJCIpCSAgIHdpdGggdGV4dCAiZm9vXkxiYXIiLCByZXR1cm5zIDkKLSAgdmlydGNvbCgiJ3QiKSAgICB3aXRoIHRleHQgIiAgICB0aGVyZSIsIHdpdGggJ3QgYXQgJ2gnLCByZXR1cm5zIDYKLTwJCVRoZSBmaXJzdCBjb2x1bW4gaXMgMS4gIDAgaXMgcmV0dXJuZWQgZm9yIGFuIGVycm9yLgorICB2aXJ0Y29sKCIndCIpICAgIHdpdGggdGV4dCAiCSAgdGhlcmUiLCB3aXRoICd0IGF0ICdoJywgcmV0dXJucyA2Cis8CQlUaGUgZmlyc3QgY29sdW1uIGlzIDEuCTAgaXMgcmV0dXJuZWQgZm9yIGFuIGVycm9yLgogCQlBIG1vcmUgYWR2YW5jZWQgZXhhbXBsZSB0aGF0IGVjaG9lcyB0aGUgbWF4aW11bSBsZW5ndGggb2YKIAkJYWxsIGxpbmVzOiA+CiAJCSAgICBlY2hvIG1heChtYXAocmFuZ2UoMSwgbGluZSgnJCcpKSwgInZpcnRjb2woW3Y6dmFsLCAnJCddKSIpKQpAQCAtNTIxOCwxMCArNTU1NywxMiBAQAogPAkJVGhpcyBlbnRlcnMgdGhlIHNhbWUgVmlzdWFsIG1vZGUgYXMgYmVmb3JlLiAgSXQgaXMgYWxzbyB1c2VmdWwKIAkJaW4gc2NyaXB0cyBpZiB5b3Ugd2lzaCB0byBhY3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZQogCQlWaXN1YWwgbW9kZSB0aGF0IHdhcyB1c2VkLgorCQlJZiBWaXN1YWwgbW9kZSBpcyBhY3RpdmUsIHVzZSB8bW9kZSgpfCB0byBnZXQgdGhlIFZpc3VhbCBtb2RlCisJCShlLmcuLCBpbiBhIHw6dm1hcHwpLgogCi0JCUlmIGFuIGV4cHJlc3Npb24gaXMgc3VwcGxpZWQgdGhhdCByZXN1bHRzIGluIGEgbm9uLXplcm8gbnVtYmVyCi0JCW9yIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlbiB0aGUgVmlzdWFsIG1vZGUgd2lsbCBiZSBjbGVhcmVkCi0JCWFuZCB0aGUgb2xkIHZhbHVlIGlzIHJldHVybmVkLiAgTm90ZSB0aGF0ICIgIiBhbmQgIjAiIGFyZSBhbHNvCisJCUlmIFtleHByXSBpcyBzdXBwbGllZCBhbmQgaXQgZXZhbHVhdGVzIHRvIGEgbm9uLXplcm8gbnVtYmVyIG9yCisJCWEgbm9uLWVtcHR5IHN0cmluZywgdGhlbiB0aGUgVmlzdWFsIG1vZGUgd2lsbCBiZSBjbGVhcmVkIGFuZAorCQl0aGUgb2xkIHZhbHVlIGlzIHJldHVybmVkLiAgTm90ZSB0aGF0ICIgIiBhbmQgIjAiIGFyZSBhbHNvCiAJCW5vbi1lbXB0eSBzdHJpbmdzLCB0aHVzIGNhdXNlIHRoZSBtb2RlIHRvIGJlIGNsZWFyZWQuCiAKIAkJCQkJCQkqd2luYnVmbnIoKSoKQEAgLTUyNDcsNyArNTU4OCw3IEBACiA8CiAJCQkJCQkJKndpbmxpbmUoKSoKIHdpbmxpbmUoKQlUaGUgcmVzdWx0IGlzIGEgTnVtYmVyLCB3aGljaCBpcyB0aGUgc2NyZWVuIGxpbmUgb2YgdGhlIGN1cnNvcgotCQlpbiB0aGUgd2luZG93LiAgVGhpcyBpcyBjb3VudGluZyBzY3JlZW4gbGluZXMgZnJvbSB0aGUgdG9wIG9mCisJCWluIHRoZSB3aW5kb3cuCVRoaXMgaXMgY291bnRpbmcgc2NyZWVuIGxpbmVzIGZyb20gdGhlIHRvcCBvZgogCQl0aGUgd2luZG93LiAgVGhlIGZpcnN0IGxpbmUgaXMgb25lLgogCQlJZiB0aGUgY3Vyc29yIHdhcyBtb3ZlZCB0aGUgdmlldyBvbiB0aGUgZmlsZSB3aWxsIGJlIHVwZGF0ZWQKIAkJZmlyc3QsIHRoaXMgbWF5IGNhdXNlIGEgc2Nyb2xsLgpAQCAtNTM5NCw2ICs1NzM1LDcgQEAKIAkJCXJlYWQvd3JpdGUvZmlsdGVyIGNvbW1hbmRzCiBmaW5kX2luX3BhdGgJCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgaW5jbHVkZSBmaWxlIHNlYXJjaGVzCiAJCQl8K2ZpbmRfaW5fcGF0aHwuCitmbG9hdAkJCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgfEZsb2F0fC4KIGZuYW1lX2Nhc2UJCUNhc2UgaW4gZmlsZSBuYW1lcyBtYXR0ZXJzIChmb3IgQW1pZ2EsIE1TLURPUywgYW5kCiAJCQlXaW5kb3dzIHRoaXMgaXMgbm90IHByZXNlbnQpLgogZm9sZGluZwkJCUNvbXBpbGVkIHdpdGggfGZvbGRpbmd8IHN1cHBvcnQuCkBAIC01NDA0LDYgKzU3NDYsNyBAQAogZ3VpX2F0aGVuYQkJQ29tcGlsZWQgd2l0aCBBdGhlbmEgR1VJLgogZ3VpX2d0awkJCUNvbXBpbGVkIHdpdGggR1RLKyBHVUkgKGFueSB2ZXJzaW9uKS4KIGd1aV9ndGsyCQlDb21waWxlZCB3aXRoIEdUSysgMiBHVUkgKGd1aV9ndGsgaXMgYWxzbyBkZWZpbmVkKS4KK2d1aV9nbm9tZQkJQ29tcGlsZWQgd2l0aCBHbm9tZSBzdXBwb3J0IChndWlfZ3RrIGlzIGFsc28gZGVmaW5lZCkuCiBndWlfbWFjCQkJQ29tcGlsZWQgd2l0aCBNYWNpbnRvc2ggR1VJLgogZ3VpX21vdGlmCQlDb21waWxlZCB3aXRoIE1vdGlmIEdVSS4KIGd1aV9waG90b24JCUNvbXBpbGVkIHdpdGggUGhvdG9uIEdVSS4KQEAgLTU0MzUsNiArNTc3OCw3IEBACiBtb3VzZV9ncG0JCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgZ3BtIChMaW51eCBjb25zb2xlIG1vdXNlKQogbW91c2VfbmV0dGVybQkJQ29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBuZXR0ZXJtIG1vdXNlLgogbW91c2VfcHRlcm0JCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgcW54IHB0ZXJtIG1vdXNlLgorbW91c2Vfc3lzbW91c2UJCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3Igc3lzbW91c2UgKCpCU0QgY29uc29sZSBtb3VzZSkKIG1vdXNlX3h0ZXJtCQlDb21waWxlZCB3aXRoIHN1cHBvcnQgZm9yIHh0ZXJtIG1vdXNlLgogbXVsdGlfYnl0ZQkJQ29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBlZGl0aW5nIEtvcmVhbiBldCBhbC4KIG11bHRpX2J5dGVfaW1lCQlDb21waWxlZCB3aXRoIHN1cHBvcnQgZm9yIElNRSBpbnB1dCBtZXRob2QuCkBAIC01NTg3LDkgKzU5MzEsOSBAQAogCQkJe25hbWV9IGNhbiBhbHNvIGJlIGEgfERpY3Rpb25hcnl8IGVudHJ5IHRoYXQgaXMgYQogCQkJfEZ1bmNyZWZ8OiA+CiAJCQkJOmZ1bmN0aW9uIGRpY3QuaW5pdChhcmcpCi08CQkJImRpY3QiIG11c3QgYmUgYW4gZXhpc3RpbmcgZGljdGlvbmFyeS4gIFRoZSBlbnRyeQorPAkJCSJkaWN0IiBtdXN0IGJlIGFuIGV4aXN0aW5nIGRpY3Rpb25hcnkuCVRoZSBlbnRyeQogCQkJImluaXQiIGlzIGFkZGVkIGlmIGl0IGRpZG4ndCBleGlzdCB5ZXQuICBPdGhlcndpc2UgWyFdCi0JCQlpcyByZXF1aXJlZCB0byBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgZnVuY3Rpb24uICBUaGUKKwkJCWlzIHJlcXVpcmVkIHRvIG92ZXJ3cml0ZSBhbiBleGlzdGluZyBmdW5jdGlvbi4JVGhlCiAJCQlyZXN1bHQgaXMgYSB8RnVuY3JlZnwgdG8gYSBudW1iZXJlZCBmdW5jdGlvbi4gIFRoZQogCQkJZnVuY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGEgfEZ1bmNyZWZ8IGFuZCB3aWxsIGJlCiAJCQlkZWxldGVkIGlmIHRoZXJlIGFyZSBubyBtb3JlIHJlZmVyZW5jZXMgdG8gaXQuCkBAIC01NjEzLDEyICs1OTU3LDE1IEBACiAJCQlhYm9ydCBhcyBzb29uIGFzIGFuIGVycm9yIGlzIGRldGVjdGVkLgogCiAJCQlXaGVuIHRoZSBbZGljdF0gYXJndW1lbnQgaXMgYWRkZWQsIHRoZSBmdW5jdGlvbiBtdXN0Ci0JCQliZSBpbnZva2VkIHRocm91Z2ggYW4gZW50cnkgaW4gYSB8RGljdGlvbmFyeXwuICBUaGUKKwkJCWJlIGludm9rZWQgdGhyb3VnaCBhbiBlbnRyeSBpbiBhIHxEaWN0aW9uYXJ5fC4JVGhlCiAJCQlsb2NhbCB2YXJpYWJsZSAic2VsZiIgd2lsbCB0aGVuIGJlIHNldCB0byB0aGUKIAkJCWRpY3Rpb25hcnkuICBTZWUgfERpY3Rpb25hcnktZnVuY3Rpb258LgogCisJCQkJCQkqZnVuY3Rpb24tc2VhcmNoLXVuZG8qCiAJCQlUaGUgbGFzdCB1c2VkIHNlYXJjaCBwYXR0ZXJuIGFuZCB0aGUgcmVkbyBjb21tYW5kICIuIgotCQkJd2lsbCBub3QgYmUgY2hhbmdlZCBieSB0aGUgZnVuY3Rpb24uCisJCQl3aWxsIG5vdCBiZSBjaGFuZ2VkIGJ5IHRoZSBmdW5jdGlvbi4gIFRoaXMgYWxzbworCQkJaW1wbGllcyB0aGF0IHRoZSBlZmZlY3Qgb2YgfDpub2hsc2VhcmNofCBpcyB1bmRvbmUKKwkJCXdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMuCiAKIAkJCQkJKjplbmRmKiAqOmVuZGZ1bmN0aW9uKiAqRTEyNiogKkUxOTMqCiA6ZW5kZlt1bmN0aW9uXQkJVGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24uICBNdXN0IGJlIG9uIGEgbGluZQpAQCAtNTYyOSw3ICs1OTc2LDcgQEAKIAkJCXtuYW1lfSBjYW4gYWxzbyBiZSBhIHxEaWN0aW9uYXJ5fCBlbnRyeSB0aGF0IGlzIGEKIAkJCXxGdW5jcmVmfDogPgogCQkJCTpkZWxmdW5jIGRpY3QuaW5pdAotPAkJCVRoaXMgd2lsbCByZW1vdmUgdGhlICJpbml0IiBlbnRyeSBmcm9tICJkaWN0Ii4gIFRoZQorPAkJCVRoaXMgd2lsbCByZW1vdmUgdGhlICJpbml0IiBlbnRyeSBmcm9tICJkaWN0Ii4JVGhlCiAJCQlmdW5jdGlvbiBpcyBkZWxldGVkIGlmIHRoZXJlIGFyZSBubyBtb3JlIHJlZmVyZW5jZXMgdG8KIAkJCWl0LgogCQkJCQkJCSo6cmV0dSogKjpyZXR1cm4qICpFMTMzKgpAQCAtNTY0OSw3ICs1OTk2LDcgQEAKIAkJCXJldHVybnMgYXQgdGhlIG91dGVybW9zdCAiOmVuZHRyeSIuCiAKIAkJCQkJCSpmdW5jdGlvbi1hcmd1bWVudCogKmE6dmFyKgotQW4gYXJndW1lbnQgY2FuIGJlIGRlZmluZWQgYnkgZ2l2aW5nIGl0cyBuYW1lLiAgSW4gdGhlIGZ1bmN0aW9uIHRoaXMgY2FuIHRoZW4KK0FuIGFyZ3VtZW50IGNhbiBiZSBkZWZpbmVkIGJ5IGdpdmluZyBpdHMgbmFtZS4JSW4gdGhlIGZ1bmN0aW9uIHRoaXMgY2FuIHRoZW4KIGJlIHVzZWQgYXMgImE6bmFtZSIgKCJhOiIgZm9yIGFyZ3VtZW50KS4KIAkJCQkJKmE6MCogKmE6MSogKmE6MDAwKiAqRTc0MCogKi4uLioKIFVwIHRvIDIwIGFyZ3VtZW50cyBjYW4gYmUgZ2l2ZW4sIHNlcGFyYXRlZCBieSBjb21tYXMuICBBZnRlciB0aGUgbmFtZWQKQEAgLTU3MjEsNyArNjA2OCw3IEBACiAJCWl0c2VsZiwgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGZvciBlYWNoIGxpbmUgaW4gdGhlIHJhbmdlLAogCQl3aXRoIHRoZSBjdXJzb3IgaW4gdGhlIGZpcnN0IGNvbHVtbiBvZiB0aGF0IGxpbmUuICBUaGUgY3Vyc29yCiAJCWlzIGxlZnQgYXQgdGhlIGxhc3QgbGluZSAocG9zc2libHkgbW92ZWQgYnkgdGhlIGxhc3QgZnVuY3Rpb24KLQkJY2FsbCkuICBUaGUgYXJndW1lbnRzIGFyZSByZS1ldmFsdWF0ZWQgZm9yIGVhY2ggbGluZS4gIFRodXMKKwkJY2FsbCkuCVRoZSBhcmd1bWVudHMgYXJlIHJlLWV2YWx1YXRlZCBmb3IgZWFjaCBsaW5lLiAgVGh1cwogCQl0aGlzIHdvcmtzOgogCQkJCQkJKmZ1bmN0aW9uLXJhbmdlLWV4YW1wbGUqICA+CiAJOmZ1bmN0aW9uIE15bnVtYmVyKGFyZykKQEAgLTU3NjYsNyArNjExMyw3IEBACiAKIFRoZSBhdXRvY29tbWFuZCBpcyB1c2VmdWwgaWYgeW91IGhhdmUgYSBwbHVnaW4gdGhhdCBpcyBhIGxvbmcgVmltIHNjcmlwdCBmaWxlLgogWW91IGNhbiBkZWZpbmUgdGhlIGF1dG9jb21tYW5kIGFuZCBxdWlja2x5IHF1aXQgdGhlIHNjcmlwdCB3aXRoIHw6ZmluaXNofC4KLVRoYXQgbWFrZXMgVmltIHN0YXJ0dXAgZmFzdGVyLiAgVGhlIGF1dG9jb21tYW5kIHNob3VsZCB0aGVuIGxvYWQgdGhlIHNhbWUgZmlsZQorVGhhdCBtYWtlcyBWaW0gc3RhcnR1cCBmYXN0ZXIuCVRoZSBhdXRvY29tbWFuZCBzaG91bGQgdGhlbiBsb2FkIHRoZSBzYW1lIGZpbGUKIGFnYWluLCBzZXR0aW5nIGEgdmFyaWFibGUgdG8gc2tpcCB0aGUgfDpmaW5pc2h8IGNvbW1hbmQuCiAKIFVzZSB0aGUgRnVuY1VuZGVmaW5lZCBhdXRvY29tbWFuZCBldmVudCB3aXRoIGEgcGF0dGVybiB0aGF0IG1hdGNoZXMgdGhlCkBAIC01ODI3LDcgKzYxNzQsNyBAQAogQW5kIHlvdSB3aWxsIGdldCBhbiBlcnJvciBtZXNzYWdlIGV2ZXJ5IHRpbWUuCiAKIEFsc28gbm90ZSB0aGF0IGlmIHlvdSBoYXZlIHR3byBzY3JpcHQgZmlsZXMsIGFuZCBvbmUgY2FsbHMgYSBmdW5jdGlvbiBpbiB0aGUKLW90aGVyIGFuZCB2aXNlIHZlcnNhLCBiZWZvcmUgdGhlIHVzZWQgZnVuY3Rpb24gaXMgZGVmaW5lZCwgaXQgd29uJ3Qgd29yay4KK290aGVyIGFuZCB2aWNlIHZlcnNhLCBiZWZvcmUgdGhlIHVzZWQgZnVuY3Rpb24gaXMgZGVmaW5lZCwgaXQgd29uJ3Qgd29yay4KIEF2b2lkIHVzaW5nIHRoZSBhdXRvbG9hZCBmdW5jdGlvbmFsaXR5IGF0IHRoZSB0b3BsZXZlbC4KIAogSGludDogSWYgeW91IGRpc3RyaWJ1dGUgYSBidW5jaCBvZiBzY3JpcHRzIHlvdSBjYW4gcGFjayB0aGVtIHRvZ2V0aGVyIHdpdGggdGhlCkBAIC01ODQ4LDcgKzYxOTUsNyBAQAogImFkamVjdGl2ZSIgd2FzIHNldCB0byAicXVpZXQiLCB0aGVuIGl0IHdvdWxkIGJlIHRvICJteV9xdWlldF92YXJpYWJsZSIuCiAKIE9uZSBhcHBsaWNhdGlvbiBmb3IgdGhpcyBpcyB0byBjcmVhdGUgYSBzZXQgb2YgdmFyaWFibGVzIGdvdmVybmVkIGJ5IGFuIG9wdGlvbgotdmFsdWUuICBGb3IgZXhhbXBsZSwgdGhlIHN0YXRlbWVudCA+Cit2YWx1ZS4JRm9yIGV4YW1wbGUsIHRoZSBzdGF0ZW1lbnQgPgogCWVjaG8gbXlfeyZiYWNrZ3JvdW5kfV9tZXNzYWdlCiAKIHdvdWxkIG91dHB1dCB0aGUgY29udGVudHMgb2YgIm15X2RhcmtfbWVzc2FnZSIgb3IgIm15X2xpZ2h0X21lc3NhZ2UiIGRlcGVuZGluZwpAQCAtNTg4OCw4ICs2MjM1LDExIEBACiAJCQl7ZXhwcjF9LiAge3Zhci1uYW1lfSBtdXN0IHJlZmVyIHRvIGEgbGlzdCBhbmQge2lkeH0KIAkJCW11c3QgYmUgYSB2YWxpZCBpbmRleCBpbiB0aGF0IGxpc3QuICBGb3IgbmVzdGVkIGxpc3QKIAkJCXRoZSBpbmRleCBjYW4gYmUgcmVwZWF0ZWQuCi0JCQlUaGlzIGNhbm5vdCBiZSB1c2VkIHRvIGFkZCBhbiBpdGVtIHRvIGEgbGlzdC4KLQorCQkJVGhpcyBjYW5ub3QgYmUgdXNlZCB0byBhZGQgYW4gaXRlbSB0byBhIHxMaXN0fC4KKwkJCVRoaXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGEgYnl0ZSBpbiBhIFN0cmluZy4JWW91CisJCQljYW4gZG8gdGhhdCBsaWtlIHRoaXM6ID4KKwkJCQk6bGV0IHZhciA9IHZhclswOjJdIC4gJ1gnIC4gdmFyWzQ6XQorPAogCQkJCQkJCSpFNzExKiAqRTcxOSoKIDpsZXQge3Zhci1uYW1lfVt7aWR4MX06e2lkeDJ9XSA9IHtleHByMX0JCSpFNzA4KiAqRTcwOSogKkU3MTAqCiAJCQlTZXQgYSBzZXF1ZW5jZSBvZiBpdGVtcyBpbiBhIHxMaXN0fCB0byB0aGUgcmVzdWx0IG9mCkBAIC01OTMxLDcgKzYyODEsNyBAQAogCQkJdGhhdCB3b3VsZCBtYXRjaCBldmVyeXdoZXJlLgogCiA6bGV0IEB7cmVnLW5hbWV9IC49IHtleHByMX0KLQkJCUFwcGVuZCB7ZXhwcjF9IHRvIHJlZ2lzdGVyIHtyZWctbmFtZX0uICBJZiB0aGUKKwkJCUFwcGVuZCB7ZXhwcjF9IHRvIHJlZ2lzdGVyIHtyZWctbmFtZX0uCUlmIHRoZQogCQkJcmVnaXN0ZXIgd2FzIGVtcHR5IGl0J3MgbGlrZSBzZXR0aW5nIGl0IHRvIHtleHByMX0uCiAKIDpsZXQgJntvcHRpb24tbmFtZX0gPSB7ZXhwcjF9CQkJKjpsZXQtb3B0aW9uKiAqOmxldC0mKgpAQCAtNjAwNiw3ICs2MzU2LDcgQEAKIAkJCUxpa2UgYWJvdmUsIGJ1dCBhcHBlbmQvYWRkL3N1YnRyYWN0IHRoZSB2YWx1ZSBmb3IgZWFjaAogCQkJfExpc3R8IGl0ZW0uCiAJCQkJCQkJKkUxMDYqCi06bGV0IHt2YXItbmFtZX0JLi4JTGlzdCB0aGUgdmFsdWUgb2YgdmFyaWFibGUge3Zhci1uYW1lfS4gIE11bHRpcGxlCis6bGV0IHt2YXItbmFtZX0JLi4JTGlzdCB0aGUgdmFsdWUgb2YgdmFyaWFibGUge3Zhci1uYW1lfS4JTXVsdGlwbGUKIAkJCXZhcmlhYmxlIG5hbWVzIG1heSBiZSBnaXZlbi4gIFNwZWNpYWwgbmFtZXMgcmVjb2duaXplZAogCQkJaGVyZToJCQkJKkU3MzgqCiAJCQkgIGc6CWdsb2JhbCB2YXJpYWJsZXMKQEAgLTYxNTAsNyArNjUwMCw3IEBACiAJCQkJOmZvciBpdGVtIGluIGNvcHkobXlsaXN0KQogPAkJCVdoZW4gbm90IG1ha2luZyBhIGNvcHksIFZpbSBzdG9yZXMgYSByZWZlcmVuY2UgdG8gdGhlCiAJCQluZXh0IGl0ZW0gaW4gdGhlIGxpc3QsIGJlZm9yZSBleGVjdXRpbmcgdGhlIGNvbW1hbmRzCi0JCQl3aXRoIHRoZSBjdXJyZW50IGl0ZW0uICBUaHVzIHRoZSBjdXJyZW50IGl0ZW0gY2FuIGJlCisJCQl3aXRoIHRoZSBjdXJyZW50IGl0ZW0uCVRodXMgdGhlIGN1cnJlbnQgaXRlbSBjYW4gYmUKIAkJCXJlbW92ZWQgd2l0aG91dCBlZmZlY3QuICBSZW1vdmluZyBhbnkgbGF0ZXIgaXRlbSBtZWFucwogCQkJaXQgd2lsbCBub3QgYmUgZm91bmQuICBUaHVzIHRoZSBmb2xsb3dpbmcgZXhhbXBsZQogCQkJd29ya3MgKGFuIGluZWZmaWNpZW50IHdheSB0byBtYWtlIGEgbGlzdCBlbXB0eSk6ID4KQEAgLTYzNTYsNyArNjcwNiw3IEBACiAJCQltZXNzYWdlIGluIHRoZSB8bWVzc2FnZS1oaXN0b3J5fC4gIFdoZW4gdXNlZCBpbiBhCiAJCQlzY3JpcHQgb3IgZnVuY3Rpb24gdGhlIGxpbmUgbnVtYmVyIHdpbGwgYmUgYWRkZWQuCiAJCQlTcGFjZXMgYXJlIHBsYWNlZCBiZXR3ZWVuIHRoZSBhcmd1bWVudHMgYXMgd2l0aCB0aGUKLQkJCTplY2hvIGNvbW1hbmQuICBXaGVuIHVzZWQgaW5zaWRlIGEgdHJ5IGNvbmRpdGlvbmFsLAorCQkJOmVjaG8gY29tbWFuZC4JV2hlbiB1c2VkIGluc2lkZSBhIHRyeSBjb25kaXRpb25hbCwKIAkJCXRoZSBtZXNzYWdlIGlzIHJhaXNlZCBhcyBhbiBlcnJvciBleGNlcHRpb24gaW5zdGVhZAogCQkJKHNlZSB8dHJ5LWVjaG9lcnJ8KS4KIAkJCUV4YW1wbGU6ID4KQEAgLTYzNjgsNyArNjcxOCw3IEBACiAJCQkJCQkJKjpleGUqICo6ZXhlY3V0ZSoKIDpleGVbY3V0ZV0ge2V4cHIxfSAuLglFeGVjdXRlcyB0aGUgc3RyaW5nIHRoYXQgcmVzdWx0cyBmcm9tIHRoZSBldmFsdWF0aW9uCiAJCQlvZiB7ZXhwcjF9IGFzIGFuIEV4IGNvbW1hbmQuICBNdWx0aXBsZSBhcmd1bWVudHMgYXJlCi0JCQljb25jYXRlbmF0ZWQsIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAge2V4cHIxfSBpcworCQkJY29uY2F0ZW5hdGVkLCB3aXRoIGEgc3BhY2UgaW4gYmV0d2Vlbi4Je2V4cHIxfSBpcwogCQkJdXNlZCBhcyB0aGUgcHJvY2Vzc2VkIGNvbW1hbmQsIGNvbW1hbmQgbGluZSBlZGl0aW5nCiAJCQlrZXlzIGFyZSBub3QgcmVjb2duaXplZC4KIAkJCUNhbm5vdCBiZSBmb2xsb3dlZCBieSBhIGNvbW1lbnQuCkBAIC02Mzg2LDYgKzY3MzYsMTEgQEAKIAkJOmV4ZWN1dGUgIm5vcm1hbCBpeHh4XDxFc2M+IgogPAkJCVRoaXMgaGFzIGFuIDxFc2M+IGNoYXJhY3Rlciwgc2VlIHxleHByLXN0cmluZ3wuCiAKKwkJCUJlIGNhcmVmdWwgdG8gY29ycmVjdGx5IGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4KKwkJCWZpbGUgbmFtZXMuICBUaGUgfGZuYW1lZXNjYXBlKCl8IGZ1bmN0aW9uIGNhbiBiZSB1c2VkCisJCQlmb3IgdGhpcy4gIEV4YW1wbGU6ID4KKwkJOmV4ZWN1dGUgImUgIiAuIGZuYW1lZXNjYXBlKGZpbGVuYW1lKQorPAogCQkJTm90ZTogVGhlIGV4ZWN1dGVkIHN0cmluZyBtYXkgYmUgYW55IGNvbW1hbmQtbGluZSwgYnV0CiAJCQl5b3UgY2Fubm90IHN0YXJ0IG9yIGVuZCBhICJ3aGlsZSIsICJmb3IiIG9yICJpZiIKIAkJCWNvbW1hbmQuICBUaHVzIHRoaXMgaXMgaWxsZWdhbDogPgpAQCAtNjQyOCwyMSArNjc4MywyMSBAQAogY2xhdXNlcyBhbmQgdGhlIGZpbmFsbHkgY2xhdXNlIGlzIGNhbGxlZCBhIHRyeSBibG9jay4gPgogCiAgICAgIDp0cnkKLSAgICAgOiAgLi4uCi0gICAgIDogIC4uLgkJCQlUUlkgQkxPQ0sKLSAgICAgOiAgLi4uCisgICAgIDoJLi4uCisgICAgIDoJLi4uCQkJCVRSWSBCTE9DSworICAgICA6CS4uLgogICAgICA6Y2F0Y2ggL3twYXR0ZXJufS8KLSAgICAgOiAgLi4uCi0gICAgIDogIC4uLgkJCQlDQVRDSCBDTEFVU0UKLSAgICAgOiAgLi4uCisgICAgIDoJLi4uCisgICAgIDoJLi4uCQkJCUNBVENIIENMQVVTRQorICAgICA6CS4uLgogICAgICA6Y2F0Y2ggL3twYXR0ZXJufS8KLSAgICAgOiAgLi4uCi0gICAgIDogIC4uLgkJCQlDQVRDSCBDTEFVU0UKLSAgICAgOiAgLi4uCisgICAgIDoJLi4uCisgICAgIDoJLi4uCQkJCUNBVENIIENMQVVTRQorICAgICA6CS4uLgogICAgICA6ZmluYWxseQotICAgICA6ICAuLi4KLSAgICAgOiAgLi4uCQkJCUZJTkFMTFkgQ0xBVVNFCi0gICAgIDogIC4uLgorICAgICA6CS4uLgorICAgICA6CS4uLgkJCQlGSU5BTExZIENMQVVTRQorICAgICA6CS4uLgogICAgICA6ZW5kdHJ5CiAKIFRoZSB0cnkgY29uZGl0aW9uYWwgYWxsb3dzIHRvIHdhdGNoIGNvZGUgZm9yIGV4Y2VwdGlvbnMgYW5kIHRvIHRha2UgdGhlCkBAIC02NDY3LDE0ICs2ODIyLDE0IEBACiB0aGUgIjplbmR0cnkiIGFyZSBub3QgZXhlY3V0ZWQgYW5kIHRoZSBleGNlcHRpb24gbWlnaHQgYmUgY2F1Z2h0IGVsc2V3aGVyZSwKIHNlZSB8dHJ5LW5lc3Rpbmd8LgogICAgV2hlbiBkdXJpbmcgZXhlY3V0aW9uIG9mIGEgY2F0Y2ggY2xhdXNlIGFub3RoZXIgZXhjZXB0aW9uIGlzIHRocm93biwgdGhlCi1yZW1haW5pbmcgbGluZXMgaW4gdGhhdCBjYXRjaCBjbGF1c2UgYXJlIG5vdCBleGVjdXRlZC4gIFRoZSBuZXcgZXhjZXB0aW9uIGlzCityZW1haW5pbmcgbGluZXMgaW4gdGhhdCBjYXRjaCBjbGF1c2UgYXJlIG5vdCBleGVjdXRlZC4JVGhlIG5ldyBleGNlcHRpb24gaXMKIG5vdCBtYXRjaGVkIGFnYWluc3QgdGhlIHBhdHRlcm5zIGluIGFueSBvZiB0aGUgIjpjYXRjaCIgY29tbWFuZHMgb2YgdGhlIHNhbWUKIHRyeSBjb25kaXRpb25hbCBhbmQgbm9uZSBvZiBpdHMgY2F0Y2ggY2xhdXNlcyBpcyB0YWtlbi4gIElmIHRoZXJlIGlzLCBob3dldmVyLAogYSBmaW5hbGx5IGNsYXVzZSwgaXQgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgZXhjZXB0aW9uIHBlbmRzIGR1cmluZyBpdHMKIGV4ZWN1dGlvbi4gIFRoZSBjb21tYW5kcyBmb2xsb3dpbmcgdGhlICI6ZW5kdHJ5IiBhcmUgbm90IGV4ZWN1dGVkLiAgVGhlIG5ldwogZXhjZXB0aW9uIG1pZ2h0LCBob3dldmVyLCBiZSBjYXVnaHQgZWxzZXdoZXJlLCBzZWUgfHRyeS1uZXN0aW5nfC4KICAgIFdoZW4gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGUgZmluYWxseSBjbGF1c2UgKGlmIHByZXNlbnQpIGFuIGV4Y2VwdGlvbiBpcwotdGhyb3duLCB0aGUgcmVtYWluaW5nIGxpbmVzIGluIHRoZSBmaW5hbGx5IGNsYXVzZSBhcmUgc2tpcHBlZC4gIElmIHRoZSBmaW5hbGx5Cit0aHJvd24sIHRoZSByZW1haW5pbmcgbGluZXMgaW4gdGhlIGZpbmFsbHkgY2xhdXNlIGFyZSBza2lwcGVkLglJZiB0aGUgZmluYWxseQogY2xhdXNlIGhhcyBiZWVuIHRha2VuIGJlY2F1c2Ugb2YgYW4gZXhjZXB0aW9uIGZyb20gdGhlIHRyeSBibG9jayBvciBvbmUgb2YgdGhlCiBjYXRjaCBjbGF1c2VzLCB0aGUgb3JpZ2luYWwgKHBlbmRpbmcpIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQuICBUaGUgY29tbWFuZHMKIGZvbGxvd2luZyB0aGUgIjplbmR0cnkiIGFyZSBub3QgZXhlY3V0ZWQsIGFuZCB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIGZpbmFsbHkKQEAgLTY1MDgsNyArNjg2Myw3IEBACiBvZiBpdHMgY2F0Y2ggY2xhdXNlcyBvciBpdHMgZmluYWxseSBjbGF1c2UsIHRoZSBvdXRlciB0cnkgY29uZGl0aW9uYWwgaXMKIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBhYm92ZS4gIElmIHRoZSBpbm5lciB0cnkgY29uZGl0aW9uYWwgaXMgaW4gdGhlCiB0cnkgYmxvY2sgb2YgdGhlIG91dGVyIHRyeSBjb25kaXRpb25hbCwgaXRzIGNhdGNoIGNsYXVzZXMgYXJlIGNoZWNrZWQsIGJ1dAotb3RoZXJ3aXNlIG9ubHkgdGhlIGZpbmFsbHkgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgSXQgZG9lcyBub3QgbWF0dGVyIGZvcgorb3RoZXJ3aXNlIG9ubHkgdGhlIGZpbmFsbHkgY2xhdXNlIGlzIGV4ZWN1dGVkLglJdCBkb2VzIG5vdCBtYXR0ZXIgZm9yCiBuZXN0aW5nLCB3aGV0aGVyIHRoZSBpbm5lciB0cnkgY29uZGl0aW9uYWwgaXMgZGlyZWN0bHkgY29udGFpbmVkIGluIHRoZSBvdXRlcgogb25lLCBvciB3aGV0aGVyIHRoZSBvdXRlciBvbmUgc291cmNlcyBhIHNjcmlwdCBvciBjYWxscyBhIGZ1bmN0aW9uIGNvbnRhaW5pbmcKIHRoZSBpbm5lciB0cnkgY29uZGl0aW9uYWwuCkBAIC02NTcxLDcgKzY5MjYsNyBAQAogaG93ZXZlciBkaXNwbGF5cyAiaW4gQmFyIiBhbmQgdGhyb3dzIDQ3MTEuCiAKIEFueSBvdGhlciBjb21tYW5kIHRoYXQgdGFrZXMgYW4gZXhwcmVzc2lvbiBhcyBhcmd1bWVudCBtaWdodCBhbHNvIGJlCi1hYmFuZG9uZWQgYnkgYW4gKHVuY2F1Z2h0KSBleGNlcHRpb24gZHVyaW5nIHRoZSBleHByZXNzaW9uIGV2YWx1YXRpb24uICBUaGUKK2FiYW5kb25lZCBieSBhbiAodW5jYXVnaHQpIGV4Y2VwdGlvbiBkdXJpbmcgdGhlIGV4cHJlc3Npb24gZXZhbHVhdGlvbi4JVGhlCiBleGNlcHRpb24gaXMgdGhlbiBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIgb2YgdGhlIGNvbW1hbmQuCiAgICBFeGFtcGxlOiA+CiAKQEAgLTY3NDgsMjAgKzcxMDMsMjAgQEAKIAogVGhpcyBjb2RlIGRpc3BsYXlzCiAKLQlWaW0oZWNob2Vycik6VmltOkU0OTI6IE5vdCBhbiBlZGl0b3IgY29tbWFuZDogICBhc2RmIH4KKwlWaW0oZWNob2Vycik6VmltOkU0OTI6IE5vdCBhbiBlZGl0b3IgY29tbWFuZDoJYXNkZiB+CiAKIAogQ0xFQU5VUCBDT0RFCQkJCQkJKnRyeS1maW5hbGx5KgogCiBTY3JpcHRzIG9mdGVuIGNoYW5nZSBnbG9iYWwgc2V0dGluZ3MgYW5kIHJlc3RvcmUgdGhlbSBhdCB0aGVpciBlbmQuICBJZiB0aGUKIHVzZXIgaG93ZXZlciBpbnRlcnJ1cHRzIHRoZSBzY3JpcHQgYnkgcHJlc3NpbmcgQ1RSTC1DLCB0aGUgc2V0dGluZ3MgcmVtYWluIGluCi1hbiBpbmNvbnNpc3RlbnQgc3RhdGUuICBUaGUgc2FtZSBtYXkgaGFwcGVuIHRvIHlvdSBpbiB0aGUgZGV2ZWxvcG1lbnQgcGhhc2Ugb2YKK2FuIGluY29uc2lzdGVudCBzdGF0ZS4JVGhlIHNhbWUgbWF5IGhhcHBlbiB0byB5b3UgaW4gdGhlIGRldmVsb3BtZW50IHBoYXNlIG9mCiBhIHNjcmlwdCB3aGVuIGFuIGVycm9yIG9jY3VycyBvciB5b3UgZXhwbGljaXRseSB0aHJvdyBhbiBleGNlcHRpb24gd2l0aG91dAogY2F0Y2hpbmcgaXQuICBZb3UgY2FuIHNvbHZlIHRoZXNlIHByb2JsZW1zIGJ5IHVzaW5nIGEgdHJ5IGNvbmRpdGlvbmFsIHdpdGgKIGEgZmluYWxseSBjbGF1c2UgZm9yIHJlc3RvcmluZyB0aGUgc2V0dGluZ3MuICBJdHMgZXhlY3V0aW9uIGlzIGd1YXJhbnRlZWQgb24KIG5vcm1hbCBjb250cm9sIGZsb3csIG9uIGVycm9yLCBvbiBhbiBleHBsaWNpdCAiOnRocm93IiwgYW5kIG9uIGludGVycnVwdC4KIChOb3RlIHRoYXQgZXJyb3JzIGFuZCBpbnRlcnJ1cHRzIGZyb20gaW5zaWRlIHRoZSB0cnkgY29uZGl0aW9uYWwgYXJlIGNvbnZlcnRlZAotdG8gZXhjZXB0aW9ucy4gIFdoZW4gbm90IGNhdWdodCwgdGhleSB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBhZnRlciB0aGUgZmluYWxseQordG8gZXhjZXB0aW9ucy4JV2hlbiBub3QgY2F1Z2h0LCB0aGV5IHRlcm1pbmF0ZSB0aGUgc2NyaXB0IGFmdGVyIHRoZSBmaW5hbGx5CiBjbGF1c2UgaGFzIGJlZW4gZXhlY3V0ZWQuKQogRXhhbXBsZTogPgogCkBAIC02ODE5LDcgKzcxNzQsNyBAQAogCTplY2hvIEZvbygpICJyZXR1cm5lZCBieSBGb28iCiAKIFRoaXMgZGlzcGxheXMgImNsZWFudXAiIGFuZCAiNDcxMSByZXR1cm5lZCBieSBGb28iLiAgWW91IGRvbid0IG5lZWQgdG8gYWRkIGFuCi1leHRyYSAiOnJldHVybiIgaW4gdGhlIGZpbmFsbHkgY2xhdXNlLiAgKEFib3ZlIGFsbCwgdGhpcyB3b3VsZCBvdmVycmlkZSB0aGUKK2V4dHJhICI6cmV0dXJuIiBpbiB0aGUgZmluYWxseSBjbGF1c2UuCShBYm92ZSBhbGwsIHRoaXMgd291bGQgb3ZlcnJpZGUgdGhlCiByZXR1cm4gdmFsdWUuKQogCiAJCQkJCQkJKmV4Y2VwdC1mcm9tLWZpbmFsbHkqCkBAIC02ODYzLDcgKzcyMTgsNyBAQAogCVZpbTp7ZXJybXNnfQogCiB7Y21kbmFtZX0gaXMgdGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdGhhdCBmYWlsZWQ7IHRoZSBzZWNvbmQgZm9ybSBpcyB1c2VkIHdoZW4KLXRoZSBjb21tYW5kIG5hbWUgaXMgbm90IGtub3duLiAge2Vycm1zZ30gaXMgdGhlIGVycm9yIG1lc3NhZ2UgdXN1YWxseSBwcm9kdWNlZAordGhlIGNvbW1hbmQgbmFtZSBpcyBub3Qga25vd24uCXtlcnJtc2d9IGlzIHRoZSBlcnJvciBtZXNzYWdlIHVzdWFsbHkgcHJvZHVjZWQKIHdoZW4gdGhlIGVycm9yIG9jY3VycyBvdXRzaWRlIHRyeSBjb25kaXRpb25hbHMuICBJdCBhbHdheXMgYmVnaW5zIHdpdGgKIGEgY2FwaXRhbCAiRSIsIGZvbGxvd2VkIGJ5IGEgdHdvIG9yIHRocmVlLWRpZ2l0IGVycm9yIG51bWJlciwgYSBjb2xvbiwgYW5kCiBhIHNwYWNlLgpAQCAtNjk2OCw3ICs3MzIzLDcgQEAKIENBVENISU5HIElOVEVSUlVQVFMJCQkJCSpjYXRjaC1pbnRlcnJ1cHQqCiAKIFdoZW4gdGhlcmUgYXJlIGFjdGl2ZSB0cnkgY29uZGl0aW9uYWxzLCBhbiBpbnRlcnJ1cHQgKENUUkwtQykgaXMgY29udmVydGVkIHRvCi10aGUgZXhjZXB0aW9uICJWaW06SW50ZXJydXB0Ii4gIFlvdSBjYW4gY2F0Y2ggaXQgbGlrZSBldmVyeSBleGNlcHRpb24uICBUaGUKK3RoZSBleGNlcHRpb24gIlZpbTpJbnRlcnJ1cHQiLglZb3UgY2FuIGNhdGNoIGl0IGxpa2UgZXZlcnkgZXhjZXB0aW9uLglUaGUKIHNjcmlwdCBpcyBub3QgdGVybWluYXRlZCwgdGhlbi4KICAgIEV4YW1wbGU6ID4KIApAQCAtNzAwMiw3ICs3MzU3LDcgQEAKIAk6ZW5kd2hpbGUKIAogWW91IGNhbiBpbnRlcnJ1cHQgYSB0YXNrIGhlcmUgYnkgcHJlc3NpbmcgQ1RSTC1DOyB0aGUgc2NyaXB0IHRoZW4gYXNrcyBmb3IKLWEgbmV3IGNvbW1hbmQuICBJZiB5b3UgcHJlc3MgQ1RSTC1DIGF0IHRoZSBwcm9tcHQsIHRoZSBzY3JpcHQgaXMgdGVybWluYXRlZC4KK2EgbmV3IGNvbW1hbmQuCUlmIHlvdSBwcmVzcyBDVFJMLUMgYXQgdGhlIHByb21wdCwgdGhlIHNjcmlwdCBpcyB0ZXJtaW5hdGVkLgogCiBGb3IgdGVzdGluZyB3aGF0IGhhcHBlbnMgd2hlbiBDVFJMLUMgd291bGQgYmUgcHJlc3NlZCBvbiBhIHNwZWNpZmljIGxpbmUgaW4KIHlvdXIgc2NyaXB0LCB1c2UgdGhlIGRlYnVnIG1vZGUgYW5kIGV4ZWN1dGUgdGhlIHw+cXVpdHwgb3IgfD5pbnRlcnJ1cHR8CkBAIC03MTU5LDcgKzc1MTQsNyBAQAogYXV0b2NvbW1hbmRzLiAgRXhjZXB0aW9ucyBmcm9tIHRoYXQgc2VxdWVuY2Ugd2lsbCBiZSBjYXRjaGFibGUgYnkgdGhlIGNhbGxlcgogb2YgdGhlIGNvbW1hbmQuCiAgICBFeGFtcGxlOiAgRm9yIHRoZSAiOndyaXRlIiBjb21tYW5kLCB0aGUgY2FsbGVyIGNhbm5vdCBrbm93IHdoZXRoZXIgdGhlIGZpbGUKLWhhZCBhY3R1YWxseSBiZWVuIHdyaXR0ZW4gd2hlbiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgWW91IG5lZWQgdG8gdGVsbCBpdCBpbgoraGFkIGFjdHVhbGx5IGJlZW4gd3JpdHRlbiB3aGVuIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuCVlvdSBuZWVkIHRvIHRlbGwgaXQgaW4KIHNvbWUgd2F5LiA+CiAKIAk6aWYgIWV4aXN0cygiY250IikKQEAgLTcyNTUsNyArNzYxMCw3IEBACiAJOgogCTpmdW5jdGlvbiEgV3JpdGUoZmlsZSkKIAk6ICB0cnkKLQk6ICAgIGV4ZWN1dGUgIndyaXRlIiBhOmZpbGUKKwk6ICAgIGV4ZWN1dGUgIndyaXRlIiBmbmFtZWVzY2FwZShhOmZpbGUpCiAJOiAgY2F0Y2ggL15WaW0od3JpdGUpOi8KIAk6ICAgIHRocm93ICJFWENFUFQ6SU8oIiAuIGdldGN3ZCgpIC4gIiwgIiAuIGE6ZmlsZSAuICIpOldSSVRFRVJSIgogCTogIGVuZHRyeQpAQCAtNzMwNyw4ICs3NjYyLDggQEAKIAogVGhpcyBwcm9ibGVtIGhhcyBiZWVuIHNvbHZlZCBieSBjb252ZXJ0aW5nIGVycm9ycyB0byBleGNlcHRpb25zIGFuZCB1c2luZwogaW1tZWRpYXRlIGFib3J0aW9uIChpZiBub3Qgc3VwcHJlc3NlZCBieSAiOnNpbGVudCEiKSBvbmx5IHdoZW4gYSB0cnkKLWNvbmRpdGlvbmFsIGlzIGFjdGl2ZS4gIFRoaXMgaXMgbm8gcmVzdHJpY3Rpb24gc2luY2UgYW4gKGVycm9yKSBleGNlcHRpb24gY2FuCi1iZSBjYXVnaHQgb25seSBmcm9tIGFuIGFjdGl2ZSB0cnkgY29uZGl0aW9uYWwuICBJZiB5b3Ugd2FudCBhbiBpbW1lZGlhdGUKK2NvbmRpdGlvbmFsIGlzIGFjdGl2ZS4JVGhpcyBpcyBubyByZXN0cmljdGlvbiBzaW5jZSBhbiAoZXJyb3IpIGV4Y2VwdGlvbiBjYW4KK2JlIGNhdWdodCBvbmx5IGZyb20gYW4gYWN0aXZlIHRyeSBjb25kaXRpb25hbC4JSWYgeW91IHdhbnQgYW4gaW1tZWRpYXRlCiB0ZXJtaW5hdGlvbiB3aXRob3V0IGNhdGNoaW5nIHRoZSBlcnJvciwganVzdCB1c2UgYSB0cnkgY29uZGl0aW9uYWwgd2l0aG91dAogY2F0Y2ggY2xhdXNlLiAgKFlvdSBjYW4gY2F1c2UgY2xlYW51cCBjb2RlIGJlaW5nIGV4ZWN1dGVkIGJlZm9yZSB0ZXJtaW5hdGlvbgogYnkgc3BlY2lmeWluZyBhIGZpbmFsbHkgY2xhdXNlLikKQEAgLTczMjMsOCArNzY3OCw4IEBACiBzY3JpcHQgb24gZXJyb3IuICBZb3UgZ2V0IHRoZSBpbW1lZGlhdGUgYWJvcnRpb24gb24gZXJyb3IgYW5kIGNhbiBjYXRjaCB0aGUKIGVycm9yIGluIHRoZSBuZXcgc2NyaXB0LiAgSWYgaG93ZXZlciB0aGUgc291cmNlZCBzY3JpcHQgc3VwcHJlc3NlcyBlcnJvcgogbWVzc2FnZXMgYnkgdXNpbmcgdGhlICI6c2lsZW50ISIgY29tbWFuZCAoY2hlY2tpbmcgZm9yIGVycm9ycyBieSB0ZXN0aW5nCi18djplcnJtc2d8IGlmIGFwcHJvcHJpYXRlKSwgaXRzIGV4ZWN1dGlvbiBwYXRoIGlzIG5vdCBjaGFuZ2VkLiAgVGhlIGVycm9yIGlzCi1ub3QgY29udmVydGVkIHRvIGFuIGV4Y2VwdGlvbi4gIChTZWUgfDpzaWxlbnR8LikgIFNvIHRoZSBvbmx5IHJlbWFpbmluZyBjYXVzZQorfHY6ZXJybXNnfCBpZiBhcHByb3ByaWF0ZSksIGl0cyBleGVjdXRpb24gcGF0aCBpcyBub3QgY2hhbmdlZC4JVGhlIGVycm9yIGlzCitub3QgY29udmVydGVkIHRvIGFuIGV4Y2VwdGlvbi4JKFNlZSB8OnNpbGVudHwuKSAgU28gdGhlIG9ubHkgcmVtYWluaW5nIGNhdXNlCiB3aGVyZSB0aGlzIGhhcHBlbnMgaXMgZm9yIHNjcmlwdHMgdGhhdCBkb24ndCBjYXJlIGFib3V0IGVycm9ycyBhbmQgcHJvZHVjZQogZXJyb3IgbWVzc2FnZXMuICBZb3UgcHJvYmFibHkgd29uJ3Qgd2FudCB0byB1c2Ugc3VjaCBjb2RlIGZyb20geW91ciBuZXcKIHNjcmlwdHMuCkBAIC03NDc2LDE4ICs3ODMxLDE4IEBACiAgICAgc2lsZW50IHNjcmlwdG5hbWVzCiAgICAgcmVkaXIgRU5ECiAgICAgCi0gICAgIiBTcGxpdCB0aGUgb3V0cHV0IGludG8gbGluZXMgYW5kIHBhcnNlIGVhY2ggbGluZS4gIEFkZCBhbiBlbnRyeSB0byB0aGUKKyAgICAiIFNwbGl0IHRoZSBvdXRwdXQgaW50byBsaW5lcyBhbmQgcGFyc2UgZWFjaCBsaW5lLglBZGQgYW4gZW50cnkgdG8gdGhlCiAgICAgIiAic2NyaXB0cyIgZGljdGlvbmFyeS4KICAgICBsZXQgc2NyaXB0cyA9IHt9CiAgICAgZm9yIGxpbmUgaW4gc3BsaXQoc2NyaXB0bmFtZXNfb3V0cHV0LCAiXG4iKQogICAgICAgIiBPbmx5IGRvIG5vbi1ibGFuayBsaW5lcy4KICAgICAgIGlmIGxpbmUgPX4gJ1xTJwogCSIgR2V0IHRoZSBmaXJzdCBudW1iZXIgaW4gdGhlIGxpbmUuCi0gICAgICAgIGxldCBuciA9IG1hdGNoc3RyKGxpbmUsICdcZFwrJykKKwlsZXQgbnIgPSBtYXRjaHN0cihsaW5lLCAnXGRcKycpCiAJIiBHZXQgdGhlIGZpbGUgbmFtZSwgcmVtb3ZlIHRoZSBzY3JpcHQgbnVtYmVyICIgMTIzOiAiLgotICAgICAgICBsZXQgbmFtZSA9IHN1YnN0aXR1dGUobGluZSwgJy5cKzpccyonLCAnJywgJycpCisJbGV0IG5hbWUgPSBzdWJzdGl0dXRlKGxpbmUsICcuXCs6XHMqJywgJycsICcnKQogCSIgQWRkIGFuIGl0ZW0gdG8gdGhlIERpY3Rpb25hcnkKLSAgICAgICAgbGV0IHNjcmlwdHNbbnJdID0gbmFtZQorCWxldCBzY3JpcHRzW25yXSA9IG5hbWUKICAgICAgIGVuZGlmCiAgICAgZW5kZm9yCiAgICAgdW5sZXQgc2NyaXB0bmFtZXNfb3V0cHV0CkBAIC03NTE4LDcgKzc4NzMsNyBAQAogVGhlICdmb2xkZXhwcicsICdpbmNsdWRlZXhwcicsICdpbmRlbnRleHByJywgJ3N0YXR1c2xpbmUnIGFuZCAnZm9sZHRleHQnCiBvcHRpb25zIGFyZSBldmFsdWF0ZWQgaW4gYSBzYW5kYm94LiAgVGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcHJvdGVjdGVkIGZyb20KIHRoZXNlIGV4cHJlc3Npb25zIGhhdmluZyBuYXN0eSBzaWRlIGVmZmVjdHMuICBUaGlzIGdpdmVzIHNvbWUgc2FmZXR5IGZvciB3aGVuCi10aGVzZSBvcHRpb25zIGFyZSBzZXQgZnJvbSBhIG1vZGVsaW5lLiAgSXQgaXMgYWxzbyB1c2VkIHdoZW4gdGhlIGNvbW1hbmQgZnJvbQordGhlc2Ugb3B0aW9ucyBhcmUgc2V0IGZyb20gYSBtb2RlbGluZS4JSXQgaXMgYWxzbyB1c2VkIHdoZW4gdGhlIGNvbW1hbmQgZnJvbQogYSB0YWdzIGZpbGUgaXMgZXhlY3V0ZWQgYW5kIGZvciBDVFJMLVIgPSBpbiB0aGUgY29tbWFuZCBsaW5lLgogVGhlIHNhbmRib3ggaXMgYWxzbyB1c2VkIGZvciB0aGUgfDpzYW5kYm94fCBjb21tYW5kLgogCkBAIC03NTU2LDcgKzc5MTEsNyBAQAogSW4gYSBmZXcgc2l0dWF0aW9ucyBpdCBpcyBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhlIHRleHQgaW4gdGhlIGJ1ZmZlciwganVtcAogdG8gYW5vdGhlciB3aW5kb3cgYW5kIHNvbWUgb3RoZXIgdGhpbmdzIHRoYXQgbWlnaHQgY29uZnVzZSBvciBicmVhayB3aGF0IFZpbQogaXMgY3VycmVudGx5IGRvaW5nLiAgVGhpcyBtb3N0bHkgYXBwbGllcyB0byB0aGluZ3MgdGhhdCBoYXBwZW4gd2hlbiBWaW0gaXMKLWFjdHVhbGx5IGRvaW5nIHNvbWV0aGluZyBlbHNlLiAgRm9yIGV4YW1wbGUsIGV2YWx1YXRpbmcgdGhlICdiYWxsb29uZXhwcicgbWF5CithY3R1YWxseSBkb2luZyBzb21ldGhpbmcgZWxzZS4JRm9yIGV4YW1wbGUsIGV2YWx1YXRpbmcgdGhlICdiYWxsb29uZXhwcicgbWF5CiBoYXBwZW4gYW55IG1vbWVudCB0aGUgbW91c2UgY3Vyc29yIGlzIHJlc3RpbmcgYXQgc29tZSBwb3NpdGlvbi4KIAogVGhpcyBpcyBub3QgYWxsb3dlZCB3aGVuIHRoZSB0ZXh0bG9jayBpcyBhY3RpdmU6CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9mb2xkLnR4dCBiL3J1bnRpbWUvZG9jL2ZvbGQudHh0CmluZGV4IGZkNzFkYjkuLmM4MTQwOTMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2ZvbGQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2ZvbGQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZvbGQudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNyBNYXkgMTEKKypmb2xkLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA3IE1heSAxMQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZ3VpX3gxMS50eHQgYi9ydW50aW1lL2RvYy9ndWlfeDExLnR4dAppbmRleCA5ZmY2MTc3Li40NTdkMmNjIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ndWlfeDExLnR4dAorKysgYi9ydW50aW1lL2RvYy9ndWlfeDExLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpndWlfeDExLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgSnVsIDEyCisqZ3VpX3gxMS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNyBEZWMgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQyNiw3ICs0MjYsNyBAQAogLSBUaGUgc2Vzc2lvbiBmaWxlIGlzIHN0b3JlZCB0byBhIHNlcGFyYXRlIGRpcmVjdG9yeSAodXN1YWxseSAkSE9NRS8uZ25vbWUyKS4KIC0gJ3Nlc3Npb25vcHRpb25zJyBpcyBpZ25vcmVkLCBhbmQgYSBoYXJkY29kZWQgc2V0IG9mIGFwcHJvcHJpYXRlIGZsYWdzIGlzCiAgIHVzZWQgaW5zdGVhZDogPgotCWJsYW5rLGN1cmRpcixmb2xkcyxnbG9iYWxzLGhlbHAsb3B0aW9ucyx3aW5zaXplCisJYmxhbmssY3VyZGlyLGZvbGRzLGdsb2JhbHMsaGVscCxvcHRpb25zLHRhYnBhZ2VzLHdpbnNpemUKIC0gVGhlIGludGVybmFsIHZhcmlhYmxlIHx2OnRoaXNfc2Vzc2lvbnwgaXMgbm90IGNoYW5nZWQgd2hlbiBzdG9yaW5nIHRoZQogICBzZXNzaW9uLiAgQWxzbywgaXQgaXMgcmVzdG9yZWQgdG8gaXRzIG9sZCB2YWx1ZSB3aGVuIGxvZ2dpbmcgaW4gYWdhaW4uCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hlbHAudHh0IGIvcnVudGltZS9kb2MvaGVscC50eHQKaW5kZXggNWJjODgwMC4uNWNhZDJiZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaGVscC50eHQKKysrIGIvcnVudGltZS9kb2MvaGVscC50eHQKQEAgLTEsNCArMSw0IEBACi0qaGVscC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBOb3YgMDcKKypoZWxwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwOCBKdW4gMjEKIAogCQkJVklNIC0gbWFpbiBoZWxwIGZpbGUKIAkJCQkJCQkJCSBrCkBAIC0xNDMsNyArMTQzLDcgQEAKIHxmYXJzaS50eHR8CUZhcnNpIChQZXJzaWFuKSBlZGl0aW5nCiB8aGVicmV3LnR4dHwJSGVicmV3IGxhbmd1YWdlIHN1cHBvcnQgYW5kIGVkaXRpbmcKIHxydXNzaWFuLnR4dHwJUnVzc2lhbiBsYW5ndWFnZSBzdXBwb3J0IGFuZCBlZGl0aW5nCi18YWRhLnR4dHwJQWRhICh0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UpIHN1cHBvcnQKK3xmdF9hZGEudHh0fAlBZGEgKHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSkgc3VwcG9ydAogfGhhbmd1bGluLnR4dHwJSGFuZ3VsIChLb3JlYW4pIGlucHV0IG1vZGUKIHxyaWxlZnQudHh0fAlyaWdodC10by1sZWZ0IGVkaXRpbmcgbW9kZQogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9jc2NvcC50eHQgYi9ydW50aW1lL2RvYy9pZl9jc2NvcC50eHQKaW5kZXggYzAyZDk3ZS4uNzQ0ODA2MiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfY3Njb3AudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX2NzY29wLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppZl9jc2NvcC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CisqaWZfY3Njb3AudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQW5keSBLYWhuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pZl9ydWJ5LnR4dCBiL3J1bnRpbWUvZG9jL2lmX3J1YnkudHh0CmluZGV4IDJkZmUyNTcuLmMzODFhNjMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX3J1YnkudHh0CisrKyBiL3J1bnRpbWUvZG9jL2lmX3J1YnkudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3J1YnkudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKKyppZl9ydWJ5LnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBTaHVnbyBNYWVkYQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfc25pZmYudHh0IGIvcnVudGltZS9kb2MvaWZfc25pZmYudHh0CmluZGV4IGMyYjc5NDcuLjk1Njg5NWQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2lmX3NuaWZmLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl9zbmlmZi50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfc25pZmYudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDUgTWFyIDI5CisqaWZfc25pZmYudHh0KglGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaWZfdGNsLnR4dCBiL3J1bnRpbWUvZG9jL2lmX3RjbC50eHQKaW5kZXggZmQ5NTQ1OS4uMzQ0NTkyYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfdGNsLnR4dAorKysgYi9ydW50aW1lL2RvYy9pZl90Y2wudHh0CkBAIC0xLDQgKzEsNCBAQAotKmlmX3RjbC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDYKKyppZl90Y2wudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAwNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBJbmdvIFdpbGtlbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvbWJ5dGUudHh0IGIvcnVudGltZS9kb2MvbWJ5dGUudHh0CmluZGV4IDEyMWRlYzEuLjRlYWJjZjcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21ieXRlLnR4dAorKysgYi9ydW50aW1lL2RvYy9tYnl0ZS50eHQKQEAgLTEsNCArMSw0IEBACi0qbWJ5dGUudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA2IEF1ZyAxMQorKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDggSnVuIDIxCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIgZXQgYWwuCkBAIC0yMzUsNyArMjM1LDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMy4gIEVuY29kaW5nCQkJCSptYnl0ZS1lbmNvZGluZyoKIAotVmltIHVzZXMgdGhlICdlbmNvZGluZycgb3B0aW9uIHRvIHNwZWNpZnkgaG93IGNoYXJhY3RlcnMgaWRlbnRpZmllZCBhbmQKK1ZpbSB1c2VzIHRoZSAnZW5jb2RpbmcnIG9wdGlvbiB0byBzcGVjaWZ5IGhvdyBjaGFyYWN0ZXJzIGFyZSBpZGVudGlmaWVkIGFuZAogZW5jb2RlZCB3aGVuIHRoZXkgYXJlIHVzZWQgaW5zaWRlIFZpbS4gIFRoaXMgYXBwbGllcyB0byBhbGwgdGhlIHBsYWNlcyB3aGVyZQogdGV4dCBpcyB1c2VkLCBpbmNsdWRpbmcgYnVmZmVycyAoZmlsZXMgbG9hZGVkIGludG8gbWVtb3J5KSwgcmVnaXN0ZXJzIGFuZAogdmFyaWFibGVzLgpAQCAtMzUxLDYgKzM1MSw4IEBACiB1ICAgdWNzMmJlCXNhbWUgYXMgdWNzLTIgKGJpZyBlbmRpYW4pCiB1ICAgdWNzLTJiZQlzYW1lIGFzIHVjcy0yIChiaWcgZW5kaWFuKQogdSAgIHVjcy00YmUJc2FtZSBhcyB1Y3MtNCAoYmlnIGVuZGlhbikKK3UgICB1dGYtMzIJc2FtZSBhcyB1Y3MtNAordSAgIHV0Zi0zMmxlCXNhbWUgYXMgdWNzLTRsZQogICAgIGRlZmF1bHQgICAgIHN0YW5kcyBmb3IgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ2VuY29kaW5nJywgZGVwZW5kcyBvbiB0aGUKIAkJZW52aXJvbm1lbnQKIApAQCAtOTY2LDExICs5NjgsMTEgQEAKICAgICAtIEFjdGl2ZSBJbnB1dCBNZXRob2QgTWFuYWdlciAoR2xvYmFsIElNRSkKIAlodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL21pc2MvQUlNTS9haW1tLmFzcAogCi0gICAgU3VwcG9ydCBHbG9iYWwgSU1FIGlzIGEgZXhwZXJpbWVudGFsIGZlYXR1cmUuCisgICAgU3VwcG9ydCBmb3IgR2xvYmFsIElNRSBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZS4KIAogTk9URTogRm9yIElNRSB0byB3b3JrIHlvdSBtdXN0IG1ha2Ugc3VyZSB0aGUgaW5wdXQgbG9jYWxlcyBvZiB5b3VyIGxhbmd1YWdlCiBhcmUgYWRkZWQgdG8geW91ciBzeXN0ZW0uICBUaGUgZXhhY3QgbG9jYXRpb24gb2YgdGhpcyBkZXBlbmRzIG9uIHRoZSB2ZXJzaW9uCi1vZiBXaW5kb3dzIHlvdSB1c2UuICBGb3IgZXhhbXBsZSwgb24gbXkgVzJQIGJveDoKK29mIFdpbmRvd3MgeW91IHVzZS4gIEZvciBleGFtcGxlLCBvbiBteSBXaW5kb3dzIDIwMDAgYm94OgogMS4gQ29udHJvbCBQYW5lbAogMi4gUmVnaW9uYWwgT3B0aW9ucwogMy4gSW5wdXQgTG9jYWxlcyBUYWIKQEAgLTEyOTUsNyArMTI5Nyw3IEBACiAgIGNoYXJhY3RlcnMsIGFzIGhleCBudW1iZXJzLgogLSAiOnNldCBlbmNvZGluZz11dGYtOCBmaWxlZW5jb2RpbmdzPSIgZm9yY2VzIHVzaW5nIFVURi04IGZvciBhbGwgZmlsZXMuICBUaGUKICAgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlIGZvciAnZW5jb2RpbmcnIGFuZCBzZXQgJ2ZpbGVlbmNvZGluZ3MnCi0gIHRvIGF1dG9tYXRpY2FsbHkgdGhlIGVuY29kaW5nIG9mIGEgZmlsZS4KKyAgdG8gYXV0b21hdGljYWxseSBkZXRlY3QgdGhlIGVuY29kaW5nIG9mIGEgZmlsZS4KIAogCiBTVEFSVElORyBWSU0KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQgYi9ydW50aW1lL2RvYy9tb3Rpb24udHh0CmluZGV4IGE3MzAyZTkuLmNkZWI0ZjkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQKKysrIGIvcnVudGltZS9kb2MvbW90aW9uLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptb3Rpb24udHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgRGVjIDA3CisqbW90aW9uLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwOCBNYXkgMDIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTM2Niw5ICszNjYsMTEgQEAKIAogCQkJCQkJCSplKgogZQkJCUZvcndhcmQgdG8gdGhlIGVuZCBvZiB3b3JkIFtjb3VudF0gfGluY2x1c2l2ZXwuCisJCQlEb2VzIG5vdCBzdG9wIGluIGFuIGVtcHR5IGxpbmUuCiAKIAkJCQkJCQkqRSoKIEUJCQlGb3J3YXJkIHRvIHRoZSBlbmQgb2YgV09SRCBbY291bnRdIHxpbmNsdXNpdmV8LgorCQkJRG9lcyBub3Qgc3RvcCBpbiBhbiBlbXB0eSBsaW5lLgogCiA8Uy1MZWZ0PglvcgkJCQkJKjxTLUxlZnQ+KiAqYioKIGIJCQlbY291bnRdIHdvcmRzIGJhY2t3YXJkLiAgfGV4Y2x1c2l2ZXwgbW90aW9uLgpAQCAtNDY1LDkgKzQ2Nyw5IEBACiAJCQkJCQkJKnBhcmFncmFwaCoKIEEgcGFyYWdyYXBoIGJlZ2lucyBhZnRlciBlYWNoIGVtcHR5IGxpbmUsIGFuZCBhbHNvIGF0IGVhY2ggb2YgYSBzZXQgb2YKIHBhcmFncmFwaCBtYWNyb3MsIHNwZWNpZmllZCBieSB0aGUgcGFpcnMgb2YgY2hhcmFjdGVycyBpbiB0aGUgJ3BhcmFncmFwaHMnCi1vcHRpb24uICBUaGUgZGVmYXVsdCBpcyAiSVBMUFBQUVBQIExJcHBscGlwYnAiLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUKLW1hY3JvcyAiLklQIiwgIi5MUCIsIGV0Yy4gIChUaGVzZSBhcmUgbnJvZmYgbWFjcm9zLCBzbyB0aGUgZG90IG11c3QgYmUgaW4gdGhlCi1maXJzdCBjb2x1bW4pLiAgQSBzZWN0aW9uIGJvdW5kYXJ5IGlzIGFsc28gYSBwYXJhZ3JhcGggYm91bmRhcnkuCitvcHRpb24uICBUaGUgZGVmYXVsdCBpcyAiSVBMUFBQUVBQIFRQSFBMSVBwTHBJdHBwbHBpcGJwIiwgd2hpY2ggY29ycmVzcG9uZHMgdG8KK3RoZSBtYWNyb3MgIi5JUCIsICIuTFAiLCBldGMuICAoVGhlc2UgYXJlIG5yb2ZmIG1hY3Jvcywgc28gdGhlIGRvdCBtdXN0IGJlIGluCit0aGUgZmlyc3QgY29sdW1uKS4gIEEgc2VjdGlvbiBib3VuZGFyeSBpcyBhbHNvIGEgcGFyYWdyYXBoIGJvdW5kYXJ5LgogTm90ZSB0aGF0IGEgYmxhbmsgbGluZSAob25seSBjb250YWluaW5nIHdoaXRlIHNwYWNlKSBpcyBOT1QgYSBwYXJhZ3JhcGgKIGJvdW5kYXJ5LgogQWxzbyBub3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIGEgJ3snIG9yICd9JyBpbiB0aGUgZmlyc3QgY29sdW1uLiAgV2hlbgpAQCAtODA5LDEwICs4MTEsNiBAQAogYnVmZmVyIGxpc3QuICBJZiB5b3UgcmVtb3ZlIHRoZSBmaWxlIGZyb20gdGhlIGJ1ZmZlciBsaXN0LCBhbGwgaXRzIG1hcmtzIGFyZQogbG9zdC4gIElmIHlvdSBkZWxldGUgYSBsaW5lIHRoYXQgY29udGFpbnMgYSBtYXJrLCB0aGF0IG1hcmsgaXMgZXJhc2VkLgogCi1UbyBkZWxldGUgYSBtYXJrOiBDcmVhdGUgYSBuZXcgbGluZSwgcG9zaXRpb24gdGhlIG1hcmsgdGhlcmUsIGRlbGV0ZSB0aGUgbGluZS4KLUUuZy46ICJvPEVzYz5teGRkIi4gIFRoaXMgZG9lcyBjaGFuZ2UgdGhlIGZpbGUgdGhvdWdoLiAgVXNpbmcgInUiIHdvbid0IHdvcmssCi1pdCBhbHNvIHJlc3RvcmVzIG1hcmtzLgotCiBMb3dlcmNhc2UgbWFya3MgY2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBvcGVyYXRvcnMuICBGb3IgZXhhbXBsZTogImQndCIKIGRlbGV0ZXMgdGhlIGxpbmVzIGZyb20gdGhlIGN1cnNvciBwb3NpdGlvbiB0byBtYXJrICd0Jy4gIEhpbnQ6IFVzZSBtYXJrICd0JyBmb3IKIFRvcCwgJ2InIGZvciBCb3R0b20sIGV0Yy4uICBMb3dlcmNhc2UgbWFya3MgYXJlIHJlc3RvcmVkIHdoZW4gdXNpbmcgdW5kbyBhbmQKQEAgLTExNzMsMTMgKzExNzEsMTUgQEAKIAkJCQkJY3Vyc29yIGlzIG9uIHRoZSAjIG9yIG5vIChbewogCQkJCQlmb2xsb3dpbmcpCiAJCQlGb3Igb3RoZXIgaXRlbXMgdGhlIG1hdGNoaXQgcGx1Z2luIGNhbiBiZSB1c2VkLCBzZWUKLQkJCXxtYXRjaGl0LWluc3RhbGx8LgorCQkJfG1hdGNoaXQtaW5zdGFsbHwuICBUaGlzIHBsdWdpbiBhbHNvIGhlbHBzIHRvIHNraXAKKwkJCW1hdGNoZXMgaW4gY29tbWVudHMuCiAKIAkJCVdoZW4gJ2Nwb3B0aW9ucycgY29udGFpbnMgIk0iIHxjcG8tTXwgYmFja3NsYXNoZXMKIAkJCWJlZm9yZSBwYXJlbnMgYW5kIGJyYWNlcyBhcmUgaWdub3JlZC4gIFdpdGhvdXQgIk0iIHRoZQogCQkJbnVtYmVyIG9mIGJhY2tzbGFzaGVzIG1hdHRlcnM6IGFuIGV2ZW4gbnVtYmVyIGRvZXNuJ3QKIAkJCW1hdGNoIHdpdGggYW4gb2RkIG51bWJlci4gIFRodXMgaW4gIiggXCkgKSIgYW5kICJcKCAoCiAJCQlcKSIgdGhlIGZpcnN0IGFuZCBsYXN0IHBhcmVudGhlc2lzIG1hdGNoLgorCiAJCQlXaGVuIHRoZSAnJScgY2hhcmFjdGVyIGlzIG5vdCBwcmVzZW50IGluICdjcG9wdGlvbnMnCiAJCQl8Y3BvLSV8LCBwYXJlbnMgYW5kIGJyYWNlcyBpbnNpZGUgZG91YmxlIHF1b3RlcyBhcmUKIAkJCWlnbm9yZWQsIHVubGVzcyB0aGUgbnVtYmVyIG9mIHBhcmVucy9icmFjZXMgaW4gYSBsaW5lCkBAIC0xMTg4LDggKzExODgsMTMgQEAKIAkJCWFyZSBhbHNvIGlnbm9yZWQgKHBhcmVucyBhbmQgYnJhY2VzIGluc2lkZSBzaW5nbGUKIAkJCXF1b3RlcykuICBOb3RlIHRoYXQgdGhpcyB3b3JrcyBmaW5lIGZvciBDLCBidXQgbm90IGZvcgogCQkJUGVybCwgd2hlcmUgc2luZ2xlIHF1b3RlcyBhcmUgdXNlZCBmb3Igc3RyaW5ncy4KLQkJCU5vIGNvdW50IGlzIGFsbG93ZWQgKHtjb3VudH0lIGp1bXBzIHRvIGEgbGluZSB7Y291bnR9Ci0JCQlwZXJjZW50YWdlIGRvd24gdGhlIGZpbGUgfE4lfCkuICBVc2luZyAnJScgb24KKworCQkJTm90aGluZyBzcGVjaWFsIGlzIGRvbmUgZm9yIG1hdGNoZXMgaW4gY29tbWVudHMuICBZb3UKKwkJCWNhbiBlaXRoZXIgdXNlIHRoZSBtYXRjaGl0IHBsdWdpbiB8bWF0Y2hpdC1pbnN0YWxsfCBvcgorCQkJcHV0IHF1b3RlcyBhcm91bmQgbWF0Y2hlcy4KKworCQkJTm8gY291bnQgaXMgYWxsb3dlZCwge2NvdW50fSUganVtcHMgdG8gYSBsaW5lIHtjb3VudH0KKwkJCXBlcmNlbnRhZ2UgZG93biB0aGUgZmlsZSB8TiV8LiAgVXNpbmcgJyUnIG9uCiAJCQkjaWYvI2Vsc2UvI2VuZGlmIG1ha2VzIHRoZSBtb3ZlbWVudCBsaW5ld2lzZS4KIAogCQkJCQkJKlsoKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCA1NjgyMjhjLi41NjhkYWI2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA4IEZlYiAyNAorKm9wdGlvbnMudHh0KglGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA4IEp1biAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMTEsMTkgKzExMSwzMSBAQAogV2hlbiAndmVyYm9zZScgaXMgbm9uLXplcm8sIGRpc3BsYXlpbmcgYW4gb3B0aW9uIHZhbHVlIHdpbGwgYWxzbyB0ZWxsIHdoZXJlIGl0CiB3YXMgbGFzdCBzZXQuICBFeGFtcGxlOiA+CiAJOnZlcmJvc2Ugc2V0IHNoaWZ0d2lkdGggY2luZGVudD8KLQkgIHNoaWZ0d2lkdGg9NAotCQkgIExhc3Qgc2V0IGZyb20gbW9kZWxpbmUKLQkgIGNpbmRlbnQKLQkJICBMYXN0IHNldCBmcm9tIC91c3IvbG9jYWwvc2hhcmUvdmltL3ZpbTYwL2Z0cGx1Z2luL2MudmltCi1UaGlzIGlzIG9ubHkgZG9uZSB3aGVuIHNwZWNpZmljIG9wdGlvbiB2YWx1ZXMgYXJlIHJlcXVlc3RlZCwgbm90IGZvciAiOnNldAotYWxsIiBvciAiOnNldCIgd2l0aG91dCBhbiBhcmd1bWVudC4KLVdoZW4gdGhlIG9wdGlvbiB3YXMgc2V0IGJ5IGhhbmQgdGhlcmUgaXMgbm8gIkxhc3Qgc2V0IiBtZXNzYWdlLiAgVGhlcmUgaXMgb25seQotb25lIHZhbHVlIGZvciBhbGwgbG9jYWwgb3B0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUuICBUaHVzIHRoZSBtZXNzYWdlIGFwcGxpZXMKLXRvIHRoZSBvcHRpb24gbmFtZSwgbm90IG5lY2Vzc2FyaWx5IGl0cyB2YWx1ZS4KKzwJICBzaGlmdHdpZHRoPTQgfgorCQkgIExhc3Qgc2V0IGZyb20gbW9kZWxpbmUgfgorCSAgY2luZGVudCB+CisJCSAgTGFzdCBzZXQgZnJvbSAvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW02MC9mdHBsdWdpbi9jLnZpbSB+CitUaGlzIGlzIG9ubHkgZG9uZSB3aGVuIHNwZWNpZmljIG9wdGlvbiB2YWx1ZXMgYXJlIHJlcXVlc3RlZCwgbm90IGZvciAiOnZlcmJvc2UKK3NldCBhbGwiIG9yICI6dmVyYm9zZSBzZXQiIHdpdGhvdXQgYW4gYXJndW1lbnQuCitXaGVuIHRoZSBvcHRpb24gd2FzIHNldCBieSBoYW5kIHRoZXJlIGlzIG5vICJMYXN0IHNldCIgbWVzc2FnZS4KIFdoZW4gdGhlIG9wdGlvbiB3YXMgc2V0IHdoaWxlIGV4ZWN1dGluZyBhIGZ1bmN0aW9uLCB1c2VyIGNvbW1hbmQgb3IKIGF1dG9jb21tYW5kLCB0aGUgc2NyaXB0IGluIHdoaWNoIGl0IHdhcyBkZWZpbmVkIGlzIHJlcG9ydGVkLgogTm90ZSB0aGF0IGFuIG9wdGlvbiBtYXkgYWxzbyBoYXZlIGJlZW4gc2V0IGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2V0dGluZwogJ2NvbXBhdGlibGUnLgorQSBmZXcgc3BlY2lhbCB0ZXh0czoKKwlMYXN0IHNldCBmcm9tIG1vZGVsaW5lIH4KKwkJT3B0aW9uIHdhcyBzZXQgaW4gYSB8bW9kZWxpbmV8LgorCUxhc3Qgc2V0IGZyb20gLS1jbWQgYXJndW1lbnQgfgorCQlPcHRpb24gd2FzIHNldCB3aXRoIGNvbW1hbmQgbGluZSBhcmd1bWVudCB8LS1jbWR8IG9yICsuCisJTGFzdCBzZXQgZnJvbSAtYyBhcmd1bWVudCB+CisJCU9wdGlvbiB3YXMgc2V0IHdpdGggY29tbWFuZCBsaW5lIGFyZ3VtZW50IHwtY3wsICssIHwtU3wgb3IKKwkJfC1xfC4KKwlMYXN0IHNldCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlIH4KKwkJT3B0aW9uIHdhcyBzZXQgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgJFZJTUlOSVQsCisJCSRHVklNSU5JVCBvciAkRVhJTklULgorCUxhc3Qgc2V0IGZyb20gZXJyb3IgaGFuZGxlciB+CisJCU9wdGlvbiB3YXMgY2xlYXJlZCB3aGVuIGV2YWx1YXRpbmcgaXQgcmVzdWx0ZWQgaW4gYW4gZXJyb3IuCisKIHtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgK2V2YWwgZmVhdHVyZX0KIAogCQkJCQkJCSo6c2V0LXRlcm1jYXAqICpFNTIyKgpAQCAtMjY1LDcgKzI3NywxMCBAQAogCQkJV2l0aG91dCBhcmd1bWVudDogRGlzcGxheSBhbGwgbG9jYWwgb3B0aW9uJ3MgbG9jYWwKIAkJCXZhbHVlcyB3aGljaCBhcmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQuCiAJCQlXaGVuIGRpc3BsYXlpbmcgYSBzcGVjaWZpYyBsb2NhbCBvcHRpb24sIHNob3cgdGhlCi0JCQlsb2NhbCB2YWx1ZS4gIEZvciBhIGdsb2JhbCBvcHRpb24gdGhlIGdsb2JhbCB2YWx1ZSBpcworCQkJbG9jYWwgdmFsdWUuICBGb3IgYSBnbG9iYWwvbG9jYWwgYm9vbGVhbiBvcHRpb24sIHdoZW4KKwkJCXRoZSBnbG9iYWwgdmFsdWUgaXMgYmVpbmcgdXNlZCwgIi0tIiBpcyBkaXNwbGF5ZWQKKwkJCWJlZm9yZSB0aGUgb3B0aW9uIG5hbWUuCisJCQlGb3IgYSBnbG9iYWwgb3B0aW9uIHRoZSBnbG9iYWwgdmFsdWUgaXMKIAkJCXNob3duIChidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSkuCiAJCQl7bm90IGluIFZpfQogCkBAIC03OTcsNyArODEyLDcgQEAKIAogCVdoZW4gJ2JhY2tncm91bmQnIGlzIHNldCBWaW0gd2lsbCBhZGp1c3QgdGhlIGRlZmF1bHQgY29sb3IgZ3JvdXBzIGZvcgogCXRoZSBuZXcgdmFsdWUuICBCdXQgdGhlIGNvbG9ycyB1c2VkIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nIHdpbGwgbm90Ci0JY2hhbmdlLgorCWNoYW5nZS4JCQkJCSpnOmNvbG9yc19uYW1lKgogCVdoZW4gYSBjb2xvciBzY2hlbWUgaXMgbG9hZGVkICh0aGUgImNvbG9yc19uYW1lIiB2YXJpYWJsZSBpcyBzZXQpCiAJc2V0dGluZyAnYmFja2dyb3VuZCcgd2lsbCBjYXVzZSB0aGUgY29sb3Igc2NoZW1lIHRvIGJlIHJlbG9hZGVkLiAgSWYKIAl0aGUgY29sb3Igc2NoZW1lIGFkanVzdHMgdG8gdGhlIHZhbHVlIG9mICdiYWNrZ3JvdW5kJyB0aGlzIHdpbGwgd29yay4KQEAgLTExNDgsOSArMTE2MywxMSBAQAogCQkJCQkJKidicm93c2VkaXInKiAqJ2JzZGlyJyoKICdicm93c2VkaXInICdic2RpcicJc3RyaW5nCShkZWZhdWx0OiAibGFzdCIpCiAJCQlnbG9iYWwKLQkJCXtub3QgaW4gVml9IHtvbmx5IGZvciBNb3RpZiBhbmQgV2luMzIgR1VJfQorCQkJe25vdCBpbiBWaX0ge29ubHkgZm9yIE1vdGlmLCBBdGhlbmEsIEdUSywgTWFjIGFuZAorCQkJV2luMzIgR1VJfQogCVdoaWNoIGRpcmVjdG9yeSB0byB1c2UgZm9yIHRoZSBmaWxlIGJyb3dzZXI6Ci0JICAgbGFzdAkJVXNlIHNhbWUgZGlyZWN0b3J5IGFzIHdpdGggbGFzdCBmaWxlIGJyb3dzZXIuCisJICAgbGFzdAkJVXNlIHNhbWUgZGlyZWN0b3J5IGFzIHdpdGggbGFzdCBmaWxlIGJyb3dzZXIsIHdoZXJlIGEKKwkgICAJCWZpbGUgd2FzIG9wZW5lZCBvciBzYXZlZC4KIAkgICBidWZmZXIJVXNlIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIHJlbGF0ZWQgYnVmZmVyLgogCSAgIGN1cnJlbnQJVXNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KIAkgICB7cGF0aH0JVXNlIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CkBAIC0xMzQzLDcgKzEzNjAsNyBAQAogCQkJe25vdCBpbiBWaX0KIAkJCXtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgfCtjaW5kZW50fAogCQkJZmVhdHVyZX0KLQlFbmFibGVzIGF1dG9tYXRpYyBDIHByb2dyYW0gaW5kZW50aW5nICBTZWUgJ2NpbmtleXMnIHRvIHNldCB0aGUga2V5cworCUVuYWJsZXMgYXV0b21hdGljIEMgcHJvZ3JhbSBpbmRlbnRpbmcuICBTZWUgJ2NpbmtleXMnIHRvIHNldCB0aGUga2V5cwogCXRoYXQgdHJpZ2dlciByZWluZGVudGluZyBpbiBpbnNlcnQgbW9kZSBhbmQgJ2Npbm9wdGlvbnMnIHRvIHNldCB5b3VyCiAJcHJlZmVycmVkIGluZGVudCBzdHlsZS4KIAlJZiAnaW5kZW50ZXhwcicgaXMgbm90IGVtcHR5LCBpdCBvdmVycnVsZXMgJ2NpbmRlbnQnLgpAQCAtMTcxMSw3ICsxNzI4LDggQEAKIAl0YWJzIGZvbGxvd2VkIGJ5IHNwYWNlcyBhcyByZXF1aXJlZCAodW5sZXNzIHwnZXhwYW5kdGFiJ3wgaXMgZW5hYmxlZCwKIAlpbiB3aGljaCBjYXNlIG9ubHkgc3BhY2VzIGFyZSB1c2VkKS4gIEVuYWJsaW5nIHRoaXMgb3B0aW9uIG1ha2VzIHRoZQogCW5ldyBsaW5lIGNvcHkgd2hhdGV2ZXIgY2hhcmFjdGVycyB3ZXJlIHVzZWQgZm9yIGluZGVudGluZyBvbiB0aGUKLQlleGlzdGluZyBsaW5lLiAgSWYgdGhlIG5ldyBpbmRlbnQgaXMgZ3JlYXRlciB0aGFuIG9uIHRoZSBleGlzdGluZworCWV4aXN0aW5nIGxpbmUuICAnZXhwYW5kdGFiJyBoYXMgbm8gZWZmZWN0IG9uIHRoZXNlIGNoYXJhY3RlcnMsIGEgVGFiCisJcmVtYWlucyBhIFRhYi4gIElmIHRoZSBuZXcgaW5kZW50IGlzIGdyZWF0ZXIgdGhhbiBvbiB0aGUgZXhpc3RpbmcKIAlsaW5lLCB0aGUgcmVtYWluaW5nIHNwYWNlIGlzIGZpbGxlZCBpbiB0aGUgbm9ybWFsIG1hbm5lci4KIAlOT1RFOiAnY29weWluZGVudCcgaXMgcmVzZXQgd2hlbiAnY29tcGF0aWJsZScgaXMgc2V0LgogCUFsc28gc2VlICdwcmVzZXJ2ZWluZGVudCcuCkBAIC0yNDIzLDggKzI0NDEsOCBAQAogCQkJZ2xvYmFsIG9yIGxvY2FsIHRvIGJ1ZmZlciB8Z2xvYmFsLWxvY2FsfAogCQkJe25vdCBpbiBWaX0KIAlFeHRlcm5hbCBwcm9ncmFtIHRvIHVzZSBmb3IgIj0iIGNvbW1hbmQuICBXaGVuIHRoaXMgb3B0aW9uIGlzIGVtcHR5Ci0JdGhlIGludGVybmFsIGZvcm1hdHRpbmcgZnVuY3Rpb25zIGFyZSB1c2VkICgnbGlzcCcsICdjaW5kZW50JyBvcgotCSdpbmRlbnRleHByJykuCisJdGhlIGludGVybmFsIGZvcm1hdHRpbmcgZnVuY3Rpb25zIGFyZSB1c2VkOyBlaXRoZXIgJ2xpc3AnLCAnY2luZGVudCcKKwlvciAnaW5kZW50ZXhwcicuCiAJRW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBleHBhbmRlZCB8OnNldF9lbnZ8LiAgU2VlIHxvcHRpb24tYmFja3NsYXNofAogCWFib3V0IGluY2x1ZGluZyBzcGFjZXMgYW5kIGJhY2tzbGFzaGVzLgogCVRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgZnJvbSBhIHxtb2RlbGluZXwgb3IgaW4gdGhlIHxzYW5kYm94fCwgZm9yCkBAIC0zMzYyLDcgKzMzODAsNyBAQAogCQknZ3VpdGFibGFiZWwnIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBpbiB0aGUgbGFiZWxzLgogCQlXaGVuICdlJyBpcyBtaXNzaW5nIGEgbm9uLUdVSSB0YWIgcGFnZXMgbGluZSBtYXkgYmUgdXNlZC4KIAkJVGhlIEdVSSB0YWJzIGFyZSBvbmx5IHN1cHBvcnRlZCBvbiBzb21lIHN5c3RlbXMsIGN1cnJlbnRseQotCQlHVEssIE1vdGlmIGFuZCBNUy1XaW5kb3dzLgorCQlHVEssIE1vdGlmLCBNYWMgT1MvWCBhbmQgTVMtV2luZG93cy4KIAkJCQkJCQkJKidnby1mJyoKIAkgICdmJwlGb3JlZ3JvdW5kOiBEb24ndCB1c2UgZm9yaygpIHRvIGRldGFjaCB0aGUgR1VJIGZyb20gdGhlIHNoZWxsCiAJCXdoZXJlIGl0IHdhcyBzdGFydGVkLiAgVXNlIHRoaXMgZm9yIHByb2dyYW1zIHRoYXQgd2FpdCBmb3IgdGhlCkBAIC0zNjE4LDcgKzM2MzYsNyBAQAogCVdoZW4geW91IGdldCBib3JlZCBsb29raW5nIGF0IHRoZSBoaWdobGlnaHRlZCBtYXRjaGVzLCB5b3UgY2FuIHR1cm4gaXQKIAlvZmYgd2l0aCB8Om5vaGxzZWFyY2h8LiAgQXMgc29vbiBhcyB5b3UgdXNlIGEgc2VhcmNoIGNvbW1hbmQsIHRoZQogCWhpZ2hsaWdodGluZyBjb21lcyBiYWNrLgotCSdyZWRyYXd0aW1lJyBzcGVjaWZpZXMgdGhlIG1heGltdW0gdGltZSBzcGVuZCBvbiBmaW5kaW5nIG1hdGNoZXMuCisJJ3JlZHJhd3RpbWUnIHNwZWNpZmllcyB0aGUgbWF4aW11bSB0aW1lIHNwZW50IG9uIGZpbmRpbmcgbWF0Y2hlcy4KIAlXaGVuIHRoZSBzZWFyY2ggcGF0dGVybiBjYW4gbWF0Y2ggYW4gZW5kLW9mLWxpbmUsIFZpbSB3aWxsIHRyeSB0bwogCWhpZ2hsaWdodCBhbGwgb2YgdGhlIG1hdGNoZWQgdGV4dC4gIEhvd2V2ZXIsIHRoaXMgZGVwZW5kcyBvbiB3aGVyZSB0aGUKIAlzZWFyY2ggc3RhcnRzLiAgVGhpcyB3aWxsIGJlIHRoZSBmaXJzdCBsaW5lIGluIHRoZSB3aW5kb3cgb3IgdGhlIGZpcnN0CkBAIC0zOTE3LDEyICszOTM1LDEzIEBACiAJCQlsb2NhbCB0byBidWZmZXIKIAkJCXtub3QgaW4gVml9CiAJV2hlbiBkb2luZyBrZXl3b3JkIGNvbXBsZXRpb24gaW4gaW5zZXJ0IG1vZGUgfGlucy1jb21wbGV0aW9ufCwgYW5kCi0JJ2lnbm9yZWNhc2UnIGlzIGFsc28gb24sIHRoZSBjYXNlIG9mIHRoZSBtYXRjaCBpcyBhZGp1c3RlZC4gIElmIHRoZQotCXR5cGVkIHRleHQgY29udGFpbnMgYSBsb3dlcmNhc2UgbGV0dGVyIHdoZXJlIHRoZSBtYXRjaCBoYXMgYW4gdXBwZXIKLQljYXNlIGxldHRlciwgdGhlIGNvbXBsZXRlZCBwYXJ0IGlzIG1hZGUgbG93ZXJjYXNlLiAgSWYgdGhlIHR5cGVkIHRleHQKLQloYXMgbm8gbG93ZXJjYXNlIGxldHRlcnMgYW5kIHRoZSBtYXRjaCBoYXMgYSBsb3dlcmNhc2UgbGV0dGVyIHdoZXJlCi0JdGhlIHR5cGVkIHRleHQgaGFzIGFuIHVwcGVyY2FzZSBsZXR0ZXIsIGFuZCB0aGVyZSBpcyBhIGxldHRlciBiZWZvcmUKLQlpdCwgdGhlIGNvbXBsZXRlZCBwYXJ0IGlzIG1hZGUgdXBwZXJjYXNlLgorCSdpZ25vcmVjYXNlJyBpcyBhbHNvIG9uLCB0aGUgY2FzZSBvZiB0aGUgbWF0Y2ggaXMgYWRqdXN0ZWQgZGVwZW5kaW5nCisJb24gdGhlIHR5cGVkIHRleHQuICBJZiB0aGUgdHlwZWQgdGV4dCBjb250YWlucyBhIGxvd2VyY2FzZSBsZXR0ZXIKKwl3aGVyZSB0aGUgbWF0Y2ggaGFzIGFuIHVwcGVyIGNhc2UgbGV0dGVyLCB0aGUgY29tcGxldGVkIHBhcnQgaXMgbWFkZQorCWxvd2VyY2FzZS4gIElmIHRoZSB0eXBlZCB0ZXh0IGhhcyBubyBsb3dlcmNhc2UgbGV0dGVycyBhbmQgdGhlIG1hdGNoCisJaGFzIGEgbG93ZXJjYXNlIGxldHRlciB3aGVyZSB0aGUgdHlwZWQgdGV4dCBoYXMgYW4gdXBwZXJjYXNlIGxldHRlciwKKwlhbmQgdGhlcmUgaXMgYSBsZXR0ZXIgYmVmb3JlIGl0LCB0aGUgY29tcGxldGVkIHBhcnQgaXMgbWFkZSB1cHBlcmNhc2UuCisJV2l0aCAnbm9pbmZlcmNhc2UnIHRoZSBtYXRjaCBpcyB1c2VkIGFzLWlzLgogCiAJCQkqJ2luc2VydG1vZGUnKiAqJ2ltJyogKidub2luc2VydG1vZGUnKiAqJ25vaW0nKgogJ2luc2VydG1vZGUnICdpbScJYm9vbGVhbgkoZGVmYXVsdCBvZmYpCkBAIC0zOTY3LDYgKzM5ODYsMTAgQEAKIAlNdWx0aS1ieXRlIGNoYXJhY3RlcnMgMjU2IGFuZCBhYm92ZSBhcmUgYWx3YXlzIGluY2x1ZGVkLCBvbmx5IHRoZQogCWNoYXJhY3RlcnMgdXAgdG8gMjU1IGFyZSBzcGVjaWZpZWQgd2l0aCB0aGlzIG9wdGlvbi4KIAlGb3IgVVRGLTggdGhlIGNoYXJhY3RlcnMgMHhhMCB0byAweGZmIGFyZSBpbmNsdWRlZCBhcyB3ZWxsLgorCVRoaW5rIHR3aWNlIGJlZm9yZSBhZGRpbmcgd2hpdGUgc3BhY2UgdG8gdGhpcyBvcHRpb24uICBBbHRob3VnaCBhCisJc3BhY2UgbWF5IGFwcGVhciBpbnNpZGUgYSBmaWxlIG5hbWUsIHRoZSBlZmZlY3Qgd2lsbCBiZSB0aGF0IFZpbQorCWRvZXNuJ3Qga25vdyB3aGVyZSBhIGZpbGUgbmFtZSBzdGFydHMgb3IgZW5kcyB3aGVuIGRvaW5nIGNvbXBsZXRpb24uCisJSXQgbW9zdCBsaWtlbHkgd29ya3MgYmV0dGVyIHdpdGhvdXQgYSBzcGFjZSBpbiAnaXNmbmFtZScuCiAKIAlOb3RlIHRoYXQgb24gc3lzdGVtcyB1c2luZyBhIGJhY2tzbGFzaCBhcyBwYXRoIHNlcGFyYXRvciwgVmltIHRyaWVzIHRvCiAJZG8gaXRzIGJlc3QgdG8gbWFrZSBpdCB3b3JrIGFzIHlvdSB3b3VsZCBleHBlY3QuICBUaGF0IGlzIGEgYml0CkBAIC0zOTkzLDcgKzQwMTYsNyBAQAogCWFyZSBpbmNsdWRlZC4gIE5vcm1hbGx5IHRoZXNlIGFyZSB0aGUgY2hhcmFjdGVycyBhIHRvIHogYW5kIEEgdG8gWiwKIAlwbHVzIGFjY2VudGVkIGNoYXJhY3RlcnMuICBUbyBpbmNsdWRlICdAJyBpdHNlbGYgdXNlICJALUAiLiAgRXhhbXBsZXM6CiAJCSJALF5hLXoiCUFsbCBhbHBoYWJldGljIGNoYXJhY3RlcnMsIGV4Y2x1ZGluZyBsb3dlcgotCQkJCWNhc2UgbGV0dGVycy4KKwkJCQljYXNlIEFTQ0lJIGxldHRlcnMuCiAJCSJhLXosQS1aLEAtQCIJQWxsIGxldHRlcnMgcGx1cyB0aGUgJ0AnIGNoYXJhY3Rlci4KIAlBIGNvbW1hIGNhbiBiZSBpbmNsdWRlZCBieSB1c2luZyBpdCB3aGVyZSBhIGNoYXJhY3RlciBudW1iZXIgaXMKIAlleHBlY3RlZC4gIEV4YW1wbGU6CkBAIC00NjE3LDggKzQ2NDAsOSBAQAogCQkJZ2xvYmFsCiAJCQl7bm90IGluIFZpfQogCUVuYWJsZSB0aGUgdXNlIG9mIHRoZSBtb3VzZS4gIE9ubHkgd29ya3MgZm9yIGNlcnRhaW4gdGVybWluYWxzCi0JKHh0ZXJtLCBNUy1ET1MsIFdpbjMyIHx3aW4zMi1tb3VzZXwsIFFOWCBwdGVybSwgYW5kIExpbnV4IGNvbnNvbGUKLQl3aXRoIGdwbSkuICBGb3IgdXNpbmcgdGhlIG1vdXNlIGluIHRoZSBHVUksIHNlZSB8Z3VpLW1vdXNlfC4KKwkoeHRlcm0sIE1TLURPUywgV2luMzIgfHdpbjMyLW1vdXNlfCwgUU5YIHB0ZXJtLCAqQlNEIGNvbnNvbGUgd2l0aAorCXN5c21vdXNlIGFuZCBMaW51eCBjb25zb2xlIHdpdGggZ3BtKS4gIEZvciB1c2luZyB0aGUgbW91c2UgaW4gdGhlCisJR1VJLCBzZWUgfGd1aS1tb3VzZXwuCiAJVGhlIG1vdXNlIGNhbiBiZSBlbmFibGVkIGZvciBkaWZmZXJlbnQgbW9kZXM6CiAJCW4JTm9ybWFsIG1vZGUKIAkJdglWaXN1YWwgbW9kZQpAQCAtNDk0OCw2ICs0OTcyLDcgQEAKIAlOb3RlIHRoYXQgdHlwaW5nIDxGMTA+IGluIHBhc3RlIG1vZGUgaW5zZXJ0cyAiPEYxMD4iLCBzaW5jZSBpbiBwYXN0ZQogCW1vZGUgZXZlcnl0aGluZyBpcyBpbnNlcnRlZCBsaXRlcmFsbHksIGV4Y2VwdCB0aGUgJ3Bhc3RldG9nZ2xlJyBrZXkKIAlzZXF1ZW5jZS4KKwlXaGVuIHRoZSB2YWx1ZSBoYXMgc2V2ZXJhbCBieXRlcyAndHRpbWVvdXRsZW4nIGFwcGxpZXMuCiAKIAkJCQkJCSoncGV4JyogKidwYXRjaGV4cHInKgogJ3BhdGNoZXhwcicgJ3BleCcJc3RyaW5nCShkZWZhdWx0ICIiKQpAQCAtNTA1NCw2ICs1MDc5LDggQEAKIAllbmFibGVkLCBpbiB3aGljaCBjYXNlIG9ubHkgc3BhY2VzIGFyZSB1c2VkKS4gIEVuYWJsaW5nIHRoaXMgb3B0aW9uCiAJbWVhbnMgdGhlIGluZGVudCB3aWxsIHByZXNlcnZlIGFzIG1hbnkgZXhpc3RpbmcgY2hhcmFjdGVycyBhcyBwb3NzaWJsZQogCWZvciBpbmRlbnRpbmcsIGFuZCBvbmx5IGFkZCBhZGRpdGlvbmFsIHRhYnMgb3Igc3BhY2VzIGFzIHJlcXVpcmVkLgorCSdleHBhbmR0YWInIGRvZXMgbm90IGFwcGx5IHRvIHRoZSBwcmVzZXJ2ZWQgd2hpdGUgc3BhY2UsIGEgVGFiIHJlbWFpbnMKKwlhIFRhYi4KIAlOT1RFOiBXaGVuIHVzaW5nICI+PiIgbXVsdGlwbGUgdGltZXMgdGhlIHJlc3VsdGluZyBpbmRlbnQgaXMgYSBtaXggb2YKIAl0YWJzIGFuZCBzcGFjZXMuICBZb3UgbWlnaHQgbm90IGxpa2UgdGhpcy4KIAlOT1RFOiAncHJlc2VydmVpbmRlbnQnIGlzIHJlc2V0IHdoZW4gJ2NvbXBhdGlibGUnIGlzIHNldC4KQEAgLTU4OTQsNiArNTkyMSw5IEBACiAJcGF0dGVybiAoaWYgdGhlcmUgaXMgb25lKSBhcyBwb3NzaWJsZSBtYXRjaGVzLiAgVGh1cywgaWYgeW91IGhhdmUKIAltYXRjaGVkIGEgQyBmdW5jdGlvbiwgeW91IGNhbiBzZWUgYSB0ZW1wbGF0ZSBmb3Igd2hhdCBhcmd1bWVudHMgYXJlCiAJcmVxdWlyZWQgKGNvZGluZyBzdHlsZSBwZXJtaXR0aW5nKS4KKwlOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IHdvcmsgd2VsbCB0b2dldGhlciB3aXRoIGhhdmluZyAibG9uZ2VzdCIgaW4KKwknY29tcGxldGVvcHQnLCBiZWNhdXNlIHRoZSBjb21wbGV0aW9uIGZyb20gdGhlIHNlYXJjaCBwYXR0ZXJuIG1heSBub3QKKwltYXRjaCB0aGUgdHlwZWQgdGV4dC4KIAogCQkJCSAqJ3Nob3dtYXRjaCcqIConc20nKiAqJ25vc2hvd21hdGNoJyogKidub3NtJyoKICdzaG93bWF0Y2gnICdzbScJYm9vbGVhbgkoZGVmYXVsdCBvZmYpCkBAIC02NDc4LDYgKzY1MDgsOCBAQAogCSAgIHNwbGl0CUlmIGluY2x1ZGVkLCBzcGxpdCB0aGUgY3VycmVudCB3aW5kb3cgYmVmb3JlIGxvYWRpbmcKIAkJCWEgYnVmZmVyLiAgT3RoZXJ3aXNlOiBkbyBub3Qgc3BsaXQsIHVzZSBjdXJyZW50IHdpbmRvdy4KIAkJCVN1cHBvcnRlZCBpbiB8cXVpY2tmaXh8IGNvbW1hbmRzIHRoYXQgZGlzcGxheSBlcnJvcnMuCisJICAgbmV3dGFiCUxpa2UgInNwbGl0IiwgYnV0IG9wZW4gYSBuZXcgdGFiIHBhZ2UuICBPdmVycnVsZXMKKwkgICAJCSJzcGxpdCIgd2hlbiBib3RoIGFyZSBwcmVzZW50LgogCiAJCQkJCQkqJ3N5bm1heGNvbCcqIConc21jJyoKICdzeW5tYXhjb2wnICdzbWMnCW51bWJlcgkoZGVmYXVsdCAzMDAwKQpAQCAtNjYwMiw3ICs2NjM0LDcgQEAKIAogCUxpbmVhciBzZWFyY2hpbmcgaXMgZG9uZSBhbnl3YXksIGZvciBvbmUgZmlsZSwgd2hlbiBWaW0gZmluZHMgYSBsaW5lCiAJYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIGluZGljYXRpbmcgdGhhdCBpdCdzIG5vdCBzb3J0ZWQ6ID4KLSAgICFfVEFHX0ZJTEVfU09SVEVECTAJL3NvbWUgY29tbWFuZC8KKyAgICFfVEFHX0ZJTEVfU09SVEVECTAJL3NvbWUgY29tbWVudC8KIDwJW1RoZSB3aGl0ZXNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlICcwJyBtdXN0IGJlIGEgc2luZ2xlIDxUYWI+XQogCiAJV2hlbiBhIGJpbmFyeSBzZWFyY2ggd2FzIGRvbmUgYW5kIG5vIG1hdGNoIHdhcyBmb3VuZCBpbiBhbnkgb2YgdGhlCkBAIC03MDg5LDcgKzcxMjEsNyBAQAogCSJ4dGVybSIsIHdoZW4gdGhlIHRlcm1pbmFsIG5hbWUgZG9lc24ndCBzdGFydCB3aXRoICJ4dGVybSIsIGJ1dCBpdCBjYW4KIAloYW5kbGUgeHRlcm0gbW91c2UgY29kZXMuCiAJVGhlICJ4dGVybTIiIHZhbHVlIHdpbGwgYmUgc2V0IGlmIHRoZSB4dGVybSB2ZXJzaW9uIGlzIHJlcG9ydGVkIHRvIGJlCi0JOTUgb2YgaGlnaGVyLiAgVGhpcyBvbmx5IHdvcmtzIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCt0ZXJtcmVzcG9uc2V8CisJOTUgb3IgaGlnaGVyLiAgVGhpcyBvbmx5IHdvcmtzIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCt0ZXJtcmVzcG9uc2V8CiAJZmVhdHVyZSBhbmQgaWYgfHRfUlZ8IGlzIHNldCB0byB0aGUgZXNjYXBlIHNlcXVlbmNlIHRvIHJlcXVlc3QgdGhlCiAJeHRlcm0gdmVyc2lvbiBudW1iZXIuICBPdGhlcndpc2UgInh0ZXJtMiIgbXVzdCBiZSBzZXQgZXhwbGljaXRseS4KIAlJZiB5b3UgZG8gbm90IHdhbnQgJ3R0eW1vdXNlJyB0byBiZSBzZXQgdG8gInh0ZXJtMiIgYXV0b21hdGljYWxseSwgc2V0CkBAIC03NDI0LDYgKzc0NTYsNyBAQAogCQkJe25vdCBpbiBWaX0KIAlDaGFyYWN0ZXIgeW91IGhhdmUgdG8gdHlwZSB0byBzdGFydCB3aWxkY2FyZCBleHBhbnNpb24gaW4gdGhlCiAJY29tbWFuZC1saW5lLCBhcyBzcGVjaWZpZWQgd2l0aCAnd2lsZG1vZGUnLgorCU1vcmUgaW5mbyBoZXJlOiB8Y21kbGluZS1jb21wbGV0aW9ufC4KIAlUaGUgY2hhcmFjdGVyIGlzIG5vdCByZWNvZ25pemVkIHdoZW4gdXNlZCBpbnNpZGUgYSBtYWNyby4gIFNlZQogCSd3aWxkY2hhcm0nIGZvciB0aGF0LgogCUFsdGhvdWdoICd3YycgaXMgYSBudW1iZXIgb3B0aW9uLCB5b3UgY2FuIHNldCBpdCB0byBhIHNwZWNpYWwga2V5OiA+CkBAIC03NDQxLDcgKzc0NzQsNyBAQAogCXlvdSdsbCBuZXZlciBhY3R1YWxseSB0eXBlICd3aWxkY2hhcm0nLCBqdXN0IHVzZSBpdCBpbiBtYXBwaW5ncyB0aGF0CiAJYXV0b21hdGljYWxseSBpbnZva2UgY29tcGxldGlvbiBtb2RlLCBlLmcuOiA+CiAJCTpzZXQgd2NtPTxDLVo+Ci0JCTpjbWFwIHNzIHNvICR2aW0vc2Vzc2lvbnMvKi52aW08Qy1aPgorCQk6Y25vcmVtYXAgc3Mgc28gJHZpbS9zZXNzaW9ucy8qLnZpbTxDLVo+CiA8CVRoZW4gYWZ0ZXIgdHlwaW5nIDpzcyB5b3UgY2FuIHVzZSBDVFJMLVAgJiBDVFJMLU4uCiAKIAkJCQkJCSond2lsZGlnbm9yZScqICond2lnJyoKQEAgLTc1MzYsNiArNzU2OSw3IEBACiA8CUxpc3QgYWxsIG1hdGNoZXMgd2l0aG91dCBjb21wbGV0aW5nLCB0aGVuIGVhY2ggZnVsbCBtYXRjaCA+CiAJCTpzZXQgd2lsZG1vZGU9bG9uZ2VzdCxsaXN0CiA8CUNvbXBsZXRlIGxvbmdlc3QgY29tbW9uIHN0cmluZywgdGhlbiBsaXN0IGFsdGVybmF0aXZlcy4KKwlNb3JlIGluZm8gaGVyZTogfGNtZGxpbmUtY29tcGxldGlvbnwuCiAKIAkJCQkJCSond2lsZG9wdGlvbnMnKiAqJ3dvcCcqCiAnd2lsZG9wdGlvbnMnICd3b3AnCXN0cmluZwkoZGVmYXVsdCAiIikKQEAgLTc1OTYsMTMgKzc2MzAsMTcgQEAKIAkJCWZlYXR1cmV9CiAJTWluaW1hbCBudW1iZXIgb2YgbGluZXMgZm9yIHRoZSBjdXJyZW50IHdpbmRvdy4gIFRoaXMgaXMgbm90IGEgaGFyZAogCW1pbmltdW0sIFZpbSB3aWxsIHVzZSBmZXdlciBsaW5lcyBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHJvb20uICBJZiB0aGUKLQljdXJyZW50IHdpbmRvdyBpcyBzbWFsbGVyLCBpdHMgc2l6ZSBpcyBpbmNyZWFzZWQsIGF0IHRoZSBjb3N0IG9mIHRoZQotCWhlaWdodCBvZiBvdGhlciB3aW5kb3dzLiAgU2V0IGl0IHRvIDk5OSB0byBtYWtlIHRoZSBjdXJyZW50IHdpbmRvdwotCWFsd2F5cyBmaWxsIHRoZSBzY3JlZW4gKGFsdGhvdWdoIHRoaXMgaGFzIHRoZSBkcmF3YmFjayB0aGF0ICI6YWxsIgotCXdpbGwgY3JlYXRlIG9ubHkgdHdvIHdpbmRvd3MpLiAgU2V0IGl0IHRvIGEgc21hbGwgbnVtYmVyIGZvciBub3JtYWwKLQllZGl0aW5nLgotCU1pbmltdW0gdmFsdWUgaXMgMS4KLQlUaGUgaGVpZ2h0IGlzIG5vdCBhZGp1c3RlZCBhZnRlciBvbmUgb2YgdGhlIGNvbW1hbmRzIHRvIGNoYW5nZSB0aGUKKwlmb2N1cyBnb2VzIHRvIGEgd2luZG93IHRoYXQgaXMgc21hbGxlciwgaXRzIHNpemUgaXMgaW5jcmVhc2VkLCBhdCB0aGUKKwljb3N0IG9mIHRoZSBoZWlnaHQgb2Ygb3RoZXIgd2luZG93cy4KKwlTZXQgJ3dpbmhlaWdodCcgdG8gYSBzbWFsbCBudW1iZXIgZm9yIG5vcm1hbCBlZGl0aW5nLgorCVNldCBpdCB0byA5OTkgdG8gbWFrZSB0aGUgY3VycmVudCB3aW5kb3cgZmlsbCBtb3N0IG9mIHRoZSBzY3JlZW4uCisJT3RoZXIgd2luZG93cyB3aWxsIGJlIG9ubHkgJ3dpbm1pbmhlaWdodCcgaGlnaC4gIFRoaXMgaGFzIHRoZSBkcmF3YmFjaworCXRoYXQgIjphbGwiIHdpbGwgY3JlYXRlIG9ubHkgdHdvIHdpbmRvd3MuICBUbyBhdm9pZCAidmltIC1vIDEgMiAzIDQiCisJdG8gY3JlYXRlIG9ubHkgdHdvIHdpbmRvd3MsIHNldCB0aGUgb3B0aW9uIGFmdGVyIHN0YXJ0dXAgaXMgZG9uZSwKKwl1c2luZyB0aGUgfFZpbUVudGVyfCBldmVudDogPgorCQlhdSBWaW1FbnRlciAqIHNldCB3aW5oZWlnaHQ9OTk5Cis8CU1pbmltdW0gdmFsdWUgaXMgMS4KKwlUaGUgaGVpZ2h0IGlzIG5vdCBhZGp1c3RlZCBhZnRlciBvbmUgb2YgdGhlIGNvbW1hbmRzIHRoYXQgY2hhbmdlIHRoZQogCWhlaWdodCBvZiB0aGUgY3VycmVudCB3aW5kb3cuCiAJJ3dpbmhlaWdodCcgYXBwbGllcyB0byB0aGUgY3VycmVudCB3aW5kb3cuICBVc2UgJ3dpbm1pbmhlaWdodCcgdG8gc2V0CiAJdGhlIG1pbmltYWwgaGVpZ2h0IGZvciBvdGhlciB3aW5kb3dzLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfMzkwLnR4dCBiL3J1bnRpbWUvZG9jL29zXzM5MC50eHQKaW5kZXggMWUwMjUxYi4uOWM3YzBkYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfMzkwLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc18zOTAudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zXzM5MC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypvc18zOTAudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IFJhbGYgU2NoYW5kbApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3NfbWFjLnR4dCBiL3J1bnRpbWUvZG9jL29zX21hYy50eHQKaW5kZXggZDBjYzc4MC4uN2M4OGY5ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3NfbWFjLnR4dAorKysgYi9ydW50aW1lL2RvYy9vc19tYWMudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX21hYy50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKKypvc19tYWMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhciBldCBhbC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX21zZG9zLnR4dCBiL3J1bnRpbWUvZG9jL29zX21zZG9zLnR4dAppbmRleCBjMjIyZTlhLi42YWE4MDcyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19tc2Rvcy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3NfbXNkb3MudHh0CkBAIC0xLDQgKzEsNCBAQAotKm9zX21zZG9zLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNSBNYXIgMjkKKypvc19tc2Rvcy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA1IE1hciAyOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0IGIvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CmluZGV4IGU4ODBhZWYuLjY4YTAyOTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKQEAgLTEsOTMgKzEsOTkgQEAKLSpwaV9uZXRydy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDcgTWF5IDA4CisqcGlfbmV0cncudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwOCBKdW4gMjEKIAogCSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAgICBORVRSVyBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgogCSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLSpkYXYqICAgICAgICAgICAqaHR0cCogICAgICAgICAgKm5ldHdvcmsqICAgICAgICpOd3JpdGUqICAgKm5ldHJ3LWZpbGUqCi0qZmV0Y2gqICAgICAgICAgKm5ldHJ3KiAgICAgICAgICpOcmVhZCogICAgICAgICAqcmNwKiAgICAgICpzY3AqCi0qZnRwKiAgICAgICAgICAgKm5ldHJ3LnZpbSogICAgICpOc291cmNlKiAgICAgICAqcnN5bmMqICAgICpzZnRwKgorKmRhdiogICAgKmZ0cCogICAgKm5ldHJ3LWZpbGUqICAqTnJlYWQqICAgICpyY3AqICAgICpzY3AqCisqZGF2cyogICAqaHR0cCogICAqbmV0cncudmltKiAgICpOc291cmNlKiAgKnJzeW5jKiAgKnNmdHAqCisqZmV0Y2gqICAqbmV0cncqICAqbmV0d29yayogICAgICpOd3JpdGUqCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotMS4gQ29udGVudHMJCQkJCQkqbmV0cnctY29udGVudHMqCisxLiBDb250ZW50cwkJCQkJCSpuZXRydy1jb250ZW50cyoge3t7MQogCiAxLiAgQ29udGVudHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY29udGVudHN8CiAyLiAgU3RhcnRpbmcgV2l0aCBOZXRydy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctc3RhcnR8CiAzLiAgTmV0cncgUmVmZXJlbmNlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcmVmfAotICAgICAgQ09OVFJPTExJTkcgRVhURVJOQUwgQVBQTElDQVRJT05TLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4dGVybmFwcHwKKyAgICAgIEVYVEVSTkFMIEFQUExJQ0FUSU9OUyBBTkQgUFJPVE9DT0xTLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHRlcm5hcHB8CiAgICAgICBSRUFESU5HLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcmVhZHwKICAgICAgIFdSSVRJTkcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy13cml0ZXwKICAgICAgIERJUkVDVE9SWSBMSVNUSU5HLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1kaXJsaXN0fAogICAgICAgQ0hBTkdJTkcgVEhFIFVTRVJJRCBBTkQgUEFTU1dPUkQuLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNoZ3VwfAotICAgICAgVkFSSUFCTEVTLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXZhcmlhYmxlc3wKKyAgICAgIFZBUklBQkxFUyBBTkQgU0VUVElOR1MuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy12YXJpYWJsZXN8CiAgICAgICBQQVRIUy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcGF0aHwKIDQuICBOZXR3b3JrLU9yaWVudGVkIEZpbGUgVHJhbnNmZXIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy14ZmVyfAogICAgICAgTkVUUkMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LW5ldHJjfAogICAgICAgUEFTU1dPUkQuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXBhc3N3ZHwKIDUuICBBY3RpdmF0aW9uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1hY3RpdmF0ZXwKLTYuICBUcmFuc3BhcmVudCBGaWxlIFRyYW5zZmVyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy10cmFuc3BhcmVudHwKKzYuICBUcmFuc3BhcmVudCBGaWxlIEVkaXRpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy10cmFuc3BhcmVudHwKIDcuICBFeCBDb21tYW5kcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHwKIDguICBWYXJpYWJsZXMgYW5kIE9wdGlvbnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy12YXJ8Ci05LiAgRGlyZWN0b3J5IEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlfCB7e3sxCi0gICAgICBNYXBzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWFwc3wKLSAgICAgIEV4cGxvcmluZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlLWNtZHN8Ci0gICAgICBRdWljayBSZWZlcmVuY2UgQ29tbWFuZHMgVGFibGUuLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlLWNtZHN8Ci0gICAgICBOZXRydyBCcm93c2VyIFZhcmlhYmxlcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlLXZhcnwKLSAgICAgIEludHJvZHVjdGlvbiBUbyBEaXJlY3RvcnkgQnJvd3NpbmcuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1icm93c2UtaW50cm98Ci0gICAgICBOZXRydyBCcm93c2luZyBBbmQgT3B0aW9uIEluY29tcGF0aWJpbGl0aWVzLi4uLi4uLi58bmV0cnctaW5jb21wYXRpYmxlfAotICAgICAgRGlyZWN0b3J5IEV4cGxvcmluZyBDb21tYW5kcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8Ci0gICAgICBSZWZyZXNoaW5nIFRoZSBMaXN0aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY3RybC1sfAotICAgICAgR29pbmcgVXAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LS18Cis5LiAgQnJvd3NpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3NlfAorICAgICAgSW50cm9kdWN0aW9uIFRvIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWludHJvLWJyb3dzZXwKKyAgICAgIFF1aWNrIFJlZmVyZW5jZTogTWFwcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1icm93c2UtbWFwc3wKKyAgICAgIFF1aWNrIFJlZmVyZW5jZTogQ29tbWFuZHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1icm93c2UtY21kc3wKKyAgICAgIEJvb2ttYXJraW5nIEEgRGlyZWN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1tYnwKICAgICAgIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1jcnwKLSAgICAgIE9idGFpbmluZyBBIEZpbGUuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1PfAotICAgICAgQ2hhbmdlIExpc3RpbmcgU3R5bGUuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWl8Ci0gICAgICBNYWtpbmcgQSBOZXcgRGlyZWN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZHwKLSAgICAgIERlbGV0aW5nIEZpbGVzIE9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1EfAotICAgICAgUmVuYW1pbmcgRmlsZXMgT3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LW1vdmV8Ci0gICAgICBIaWRpbmcgRmlsZXMgT3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYXwKLSAgICAgIEVkaXQgRmlsZSBPciBEaXJlY3RvcnkgSGlkaW5nIExpc3QuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1jdHJsLWh8CiAgICAgICBCcm93c2luZyBXaXRoIEEgSG9yaXpvbnRhbGx5IFNwbGl0IFdpbmRvdy4uLi4uLi4uLi58bmV0cnctb3wKLSAgICAgIEJyb3dzaW5nIFdpdGggQSBWZXJ0aWNhbGx5IFNwbGl0IFdpbmRvdy4uLi4uLi4uLi4uLnxuZXRydy12fAogICAgICAgQnJvd3NpbmcgV2l0aCBBIE5ldyBUYWIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXR8Ci0gICAgICBQcmV2aWV3IFdpbmRvdy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcHwKLSAgICAgIFNlbGVjdGluZyBTb3J0aW5nIFN0eWxlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1zfAotICAgICAgRWRpdGluZyBUaGUgU29ydGluZyBTZXF1ZW5jZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LVN8Ci0gICAgICBSZXZlcnNpbmcgU29ydGluZyBPcmRlci4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcnwKKyAgICAgIEJyb3dzaW5nIFdpdGggQSBWZXJ0aWNhbGx5IFNwbGl0IFdpbmRvdy4uLi4uLi4uLi4uLnxuZXRydy12fAorICAgICAgQ2hhbmdlIExpc3RpbmcgU3R5bGUuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWl8CisgICAgICBDaGFuZ2luZyBUbyBBIEJvb2ttYXJrZWQgRGlyZWN0b3J5Li4uLi4uLi4uLi4uLi4uLi58bmV0cnctZ2J8CiAgICAgICBDaGFuZ2luZyBUbyBBIFByZWRlY2Vzc29yIERpcmVjdG9yeS4uLi4uLi4uLi4uLi4uLi58bmV0cnctdXwKICAgICAgIENoYW5naW5nIFRvIEEgU3VjY2Vzc29yIERpcmVjdG9yeS4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1VfAogICAgICAgQ3VzdG9taXppbmcgQnJvd3NpbmcgV2l0aCBBIFVzZXIgRnVuY3Rpb24uLi4uLi4uLi4ufG5ldHJ3LXh8CisgICAgICBEZWxldGluZyBGaWxlcyBPciBEaXJlY3Rvcmllcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctRHwKKyAgICAgIERpcmVjdG9yeSBFeHBsb3JpbmcgQ29tbWFuZHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAorICAgICAgRXhwbG9yaW5nIFdpdGggU3RhcnMgYW5kIFBhdHRlcm5zLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXN0YXJ8CisgICAgICBEaXNwbGF5aW5nIEluZm9ybWF0aW9uIEFib3V0IEZpbGUuLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcWZ8CisgICAgICBFZGl0IEZpbGUgT3IgRGlyZWN0b3J5IEhpZGluZyBMaXN0Li4uLi4uLi4uLi4uLi4uLi58bmV0cnctY3RybC1ofAorICAgICAgRWRpdGluZyBUaGUgU29ydGluZyBTZXF1ZW5jZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LVN8CisgICAgICBHb2luZyBVcC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctLXwKKyAgICAgIEhpZGluZyBGaWxlcyBPciBEaXJlY3Rvcmllcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1hfAorICAgICAgSW1wcm92aW5nIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXNzaC1oYWNrfAorICAgICAgTGlzdGluZyBCb29rbWFya3MgQW5kIEhpc3RvcnkuLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXFifAorICAgICAgTWFraW5nIEEgTmV3IERpcmVjdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWR8CiAgICAgICBNYWtpbmcgVGhlIEJyb3dzaW5nIERpcmVjdG9yeSBUaGUgQ3VycmVudCBEaXJlY3Rvcnl8bmV0cnctY3wKLSAgICAgIEJvb2ttYXJraW5nIEEgRGlyZWN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1tYnwKLSAgICAgIENoYW5naW5nIFRvIEEgQm9va21hcmtlZCBEaXJlY3RvcnkuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1nYnwKLSAgICAgIExpc3RpbmcgQm9va21hcmtzIEFuZCBIaXN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1xfAotICAgICAgSW1wcm92aW5nIERpcmVjdG9yeSBCcm93c2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWxpc3RoYWNrfCB9fX0xCisgICAgICBNYXJraW5nIEZpbGVzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWZ8CisgICAgICBNYXJraW5nIEZpbGVzIEJ5IFJlZ3VsYXIgRXhwcmVzc2lvbi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbXJ8CisgICAgICBNYXJrZWQgRmlsZXM6IEFyYml0cmFyeSBDb21tYW5kLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbXh8CisgICAgICBNYXJrZWQgRmlsZXM6IENvbXByZXNzaW9uIEFuZCBEZWNvbXByZXNzaW9uLi4uLi4uLi58bmV0cnctbXp8CisgICAgICBNYXJrZWQgRmlsZXM6IENvcHlpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWN8CisgICAgICBNYXJrZWQgRmlsZXM6IERpZmYuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWR8CisgICAgICBNYXJrZWQgRmlsZXM6IEVkaXRpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWV8CisgICAgICBNYXJrZWQgRmlsZXM6IEdyZXAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbWd8CisgICAgICBNYXJrZWQgRmlsZXM6IEhpZGluZyBhbmQgVW5oaWRpbmcgYnkgU3VmZml4Li4uLi4uLi58bmV0cnctbWh8CisgICAgICBNYXJrZWQgRmlsZXM6IE1vdmluZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbW18CisgICAgICBNYXJrZWQgRmlsZXM6IFByaW50aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbXB8CisgICAgICBNYXJrZWQgRmlsZXM6IFNvdXJjaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbXN8CisgICAgICBNYXJrZWQgRmlsZXM6IFRhZ2dpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbVR8CisgICAgICBNYXJrZWQgRmlsZXM6IFNldHRpbmcgdGhlIFRhcmdldCBEaXJlY3RvcnkuLi4uLi4uLi58bmV0cnctbXR8CisgICAgICBNYXJrZWQgRmlsZXM6IFVubWFya2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbXV8CisgICAgICBOZXRydyBCcm93c2VyIFZhcmlhYmxlcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctYnJvd3Nlci12YXJ8CisgICAgICBOZXRydyBCcm93c2luZyBBbmQgT3B0aW9uIEluY29tcGF0aWJpbGl0aWVzLi4uLi4uLi58bmV0cnctaW5jb21wYXRpYmxlfAorICAgICAgTmV0cncgU2V0dGluZ3MuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXNldHRpbmdzfAorICAgICAgT2J0YWluaW5nIEEgRmlsZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LU98CisgICAgICBQcmV2aWV3IFdpbmRvdy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcHwKKyAgICAgIFByZXZpb3VzIFdpbmRvdy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1QfAorICAgICAgUmVmcmVzaGluZyBUaGUgTGlzdGluZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWN0cmwtbHwKKyAgICAgIFJlbmFtaW5nIEZpbGVzIE9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1tb3ZlfAorICAgICAgUmV2ZXJzaW5nIFNvcnRpbmcgT3JkZXIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXJ8CisgICAgICBTZWxlY3RpbmcgU29ydGluZyBTdHlsZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctc3wKIDEwLiBQcm9ibGVtcyBhbmQgRml4ZXMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1wcm9ibGVtc3wKLTExLiBEZWJ1Z2dpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1kZWJ1Z3wKKzExLiBEZWJ1Z2dpbmcgTmV0cncgSXRzZWxmLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1kZWJ1Z3wKIDEyLiBIaXN0b3J5Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1oaXN0b3J5fAogMTMuIENyZWRpdHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNyZWRpdHN8CiAKLVRoZSBOZXRydyBwbHVnaW4gaXMgZ2VuZXJhbGx5IHNvdXJjZWQgYXV0b21hdGljYWxseSBhcyBpdCBpcyBhCi18c3RhbmRhcmQtcGx1Z2lufC4gIFRoYXQgc2FpZCwgdG8gbWFrZSB1c2Ugb2YgbmV0cncsIG9uZSBtdXN0Ci1oYXZlIHBsdWdpbnMgYXZhaWxhYmxlIHdoaWNoIGNhbiBiZSBkb25lIHdpdGggdGhlIGZvbGxvd2luZwotdHdvIGxpbmVzIGluIHlvdXIgPC52aW1yYz46ID4KLQotCXNldCBub2NwICAgICAgICAgICAgICAgICAgICAiICdjb21wYXRpYmxlJyBpcyBub3Qgc2V0Ci0JZmlsZXR5cGUgcGx1Z2luIG9uICAgICAgICAgICIgcGx1Z2lucyBhcmUgZW5hYmxlZAotPAotWW91IGNhbiBhdm9pZCBsb2FkaW5nIHRoaXMgcGx1Z2luIGJ5IHNldHRpbmcgdGhlICJsb2FkZWRfbmV0cnciIHZhcmlhYmxlCi1pbiB5b3VyIDwudmltcmM+IGZpbGU6ID4KLQotCTpsZXQgbG9hZGVkX25ldHJ3ID0gMQotCiB7VmkgZG9lcyBub3QgaGF2ZSBhbnkgb2YgdGhpc30KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0yLiBTdGFydGluZyBXaXRoIE5ldHJ3CQkJCQkJKm5ldHJ3LXN0YXJ0KgorMi4gU3RhcnRpbmcgV2l0aCBOZXRydwkJCQkJKm5ldHJ3LXN0YXJ0KiB7e3sxCiAKLU5ldHJ3IG1ha2VzIHJlYWRpbmcsIHdyaXRpbmcsIGFuZCBicm93c2luZyBvdmVyIGEgbmV0d29yayBjb25uZWN0aW9uIGVhc3khCi1GaXJzdCwgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcGx1Z2lucyBlbmFibGVkLCBzbyB5b3UnbGwgbmVlZCB0byBoYXZlIGF0Ci1sZWFzdCB0aGUgZm9sbG93aW5nIGluIHlvdXIgPC52aW1yYz46IChvciBzZWUgfG5ldHJ3LWFjdGl2YXRlfCkgPgorTmV0cncgbWFrZXMgcmVhZGluZyBmaWxlcywgd3JpdGluZyBmaWxlcywgYnJvd3Npbmcgb3ZlciBhIG5ldHdvcmssIGFuZAorYnJvd3NpbmcgbG9jYWxseSBlYXN5ISAgRmlyc3QsIG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHBsdWdpbnMgZW5hYmxlZCwgc28KK3lvdSdsbCBuZWVkIHRvIGhhdmUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBpbiB5b3VyIDwudmltcmM+OgorKG9yIHNlZSB8bmV0cnctYWN0aXZhdGV8KSA+CiAKIAlzZXQgbm9jcCAgICAgICAgICAgICAgICAgICAgIiAnY29tcGF0aWJsZScgaXMgbm90IHNldAogCWZpbGV0eXBlIHBsdWdpbiBvbiAgICAgICAgICAiIHBsdWdpbnMgYXJlIGVuYWJsZWQKQEAgLTk2LDE0ICsxMDIsMTMgQEAKIAogTmV0cncgc3VwcG9ydHMgInRyYW5zcGFyZW50IiBlZGl0aW5nIG9mIGZpbGVzIG9uIG90aGVyIG1hY2hpbmVzIHVzaW5nIHVybHMKIChzZWUgfG5ldHJ3LXRyYW5zcGFyZW50fCkuIEFzIGFuIGV4YW1wbGUgb2YgdGhpcywgbGV0J3MgYXNzdW1lIHlvdSBoYXZlIGFuCi1hY2NvdW50IG9uIHNvbWUgb3RoZXIgbWFjaGluZTsgdHJ5ID4KK2FjY291bnQgb24gc29tZSBvdGhlciBtYWNoaW5lOyBpZiB5b3UgY2FuIHVzZSBzY3AsIHRyeTogPgogCiAJdmltIHNjcDovL2hvc3RuYW1lL3BhdGgvdG8vZmlsZQogPAotaWYgeW91IGhhdmUgYW4gc3NoIGNvbm5lY3Rpb24uICBXYW50IHRvIG1ha2Ugc3NoL3NjcCBlYXNpZXIgdG8gdXNlPyBDaGVjawotb3V0IHxuZXRydy1saXN0aGFja3whCitXYW50IHRvIG1ha2Ugc3NoL3NjcCBlYXNpZXIgdG8gdXNlPyBDaGVjayBvdXQgfG5ldHJ3LXNzaC1oYWNrfCEKIAotV2hhdCBpZiB5b3UgaGF2ZSBmdHAsIG5vdCBzc2gvc2NwPyAgVGhhdCdzIGVhc3ksIHRvbzsgdHJ5ID4KK1NvLCB3aGF0IGlmIHlvdSBoYXZlIGZ0cCwgbm90IHNzaC9zY3A/ICBUaGF0J3MgZWFzeSwgdG9vOyB0cnkgPgogCiAJdmltIGZ0cDovL2hvc3RuYW1lL3BhdGgvdG8vZmlsZQogPApAQCAtMTE3LDcgKzEyMiw3IEBACiAJLi4uCiAJZGVmYXVsdCAgICAgICAgICBsb2dpbiBVU0VSSUQgcGFzc3dvcmQgIlBBU1NXT1JEIgogPAotTm93IGFib3V0IGJyb3dzaW5nIC0tIGllLiB3aGVuIHlvdSBqdXN0IHdhbnQgdG8gbG9vayBhcm91bmQgYmVmb3JlIGVkaXRpbmcgYQorTm93IGFib3V0IGJyb3dzaW5nIC0tIHdoZW4geW91IGp1c3Qgd2FudCB0byBsb29rIGFyb3VuZCBiZWZvcmUgZWRpdGluZyBhCiBmaWxlLiAgRm9yIGJyb3dzaW5nIG9uIHlvdXIgY3VycmVudCBob3N0LCBqdXN0ICJlZGl0IiBhIGRpcmVjdG9yeTogPgogCiAJdmltIC4KQEAgLTEzMSwyOCArMTM2LDQ5IEBACiA8CiBTZWUgfG5ldHJ3LWJyb3dzZXwgZm9yIG1vcmUhCiAKLVRoZXJlJ3MgbW9yZSBwcm90b2NvbHMgc3VwcG9ydGVkIHRoYW4gc2NwIGFuZCBmdHAsIHRvbzogc2VlIHRoZSBuZXh0Ci1zZWN0aW9uLCB8bmV0cnctZXh0ZXJuYXBwfC4KK1RoZXJlIGFyZSBtb3JlIHByb3RvY29scyBzdXBwb3J0ZWQgYnkgbmV0cncganVzdCB0aGFuIHNjcCBhbmQgZnRwLCB0b286IHNlZSB0aGUKK25leHQgc2VjdGlvbiwgfG5ldHJ3LWV4dGVybmFwcHwsIGZvciBob3cgdG8gdXNlIHRoZXNlIGV4dGVybmFsIGFwcGxpY2F0aW9ucy4KKworSWYgeW91IHdhbnQgdG8gdXNlIHBsdWdpbnMsIGJ1dCBmb3Igc29tZSByZWFzb24gZG9uJ3Qgd2lzaCB0byB1c2UgbmV0cncsIHRoZW4KK3lvdSBuZWVkIHRvIGF2b2lkIGxvYWRpbmcgYm90aCB0aGUgcGx1Z2luIGFuZCB0aGUgYXV0b2xvYWQgcG9ydGlvbnMgb2YgbmV0cncuCitZb3UgbWF5IGRvIHNvIGJ5IHBsYWNpbmcgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgaW4geW91ciA8LnZpbXJjPjogPgorCisJOmxldCBnOmxvYWRlZF9uZXRydyAgICAgICA9IDEKKwk6bGV0IGc6bG9hZGVkX25ldHJ3UGx1Z2luID0gMQorPAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTMuIE5ldHJ3IFJlZmVyZW5jZQkJCQkJCSpuZXRydy1yZWYqCiszLiBOZXRydyBSZWZlcmVuY2UJCQkJCSpuZXRydy1yZWYqIHt7ezEKIAotQ09OVFJPTExJTkcgRVhURVJOQUwgQVBQTElDQVRJT05TCQkJKm5ldHJ3LWV4dGVybmFwcCoKKyAgIE5ldHJ3IHN1cHBvcnRzIHNldmVyYWwgcHJvdG9jb2xzIGluIGFkZGl0aW9uIHRvIHNjcCBhbmQgZnRwIG1lbnRpb25lZAorICAgaW4gfG5ldHJ3LXN0YXJ0fC4gIFRoZXNlIGluY2x1ZGUgZGF2LCBmZXRjaCwgaHR0cCwuLi4gd2VsbCwganVzdCBsb29rCisgICBhdCB0aGUgbGlzdCBpbiB8bmV0cnctZXh0ZXJuYXBwfC4gIEVhY2ggcHJvdG9jb2wgaXMgYXNzb2NpYXRlZCB3aXRoIGEKKyAgIHZhcmlhYmxlIHdoaWNoIGhvbGRzIHRoZSBkZWZhdWx0IGNvbW1hbmQgc3VwcG9ydGluZyB0aGF0IHByb3RvY29sLgorCitFWFRFUk5BTCBBUFBMSUNBVElPTlMgQU5EIFBST1RPQ09MUwkJCSpuZXRydy1leHRlcm5hcHAqIHt7ezIKIAogCVByb3RvY29sICBWYXJpYWJsZQkgICAgRGVmYXVsdCBWYWx1ZQogCS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tCiAJICAgZGF2OiAgICAqZzpuZXRyd19kYXZfY21kKiAgPSAiY2FkYXZlciIKIAkgZmV0Y2g6ICAqZzpuZXRyd19mZXRjaF9jbWQqICA9ICJmZXRjaCAtbyIgICAgaWYgZmV0Y2ggaXMgYXZhaWxhYmxlCiAJICAgZnRwOiAgICAqZzpuZXRyd19mdHBfY21kKiAgPSAiZnRwIgotCSAgaHR0cDogICAqZzpuZXRyd19odHRwX2NtZCogID0gImN1cmwgLW8iICAgICBpZiAgICAgIGN1cmwgIGlzIGF2YWlsYWJsZQotCSAgaHR0cDogICAgZzpuZXRyd19odHRwX2NtZCAgID0gIndnZXQgLXEgLU8iICBlbHNlIGlmIHdnZXQgIGlzIGF2YWlsYWJsZQotICAgICAgICAgIGh0dHA6ICAgIGc6bmV0cndfaHR0cF9jbWQgICA9ICJmZXRjaCAtbyIgICAgZWxzZSBpZiBmZXRjaCBpcyBhdmFpbGFibGUKKwkgIGh0dHA6ICAgKmc6bmV0cndfaHR0cF9jbWQqICA9ICJjdXJsIC1vIiAgICAgaWYgICAgIGN1cmwgIGlzIGF2YWlsYWJsZQorCSAgaHR0cDogICAgZzpuZXRyd19odHRwX2NtZCAgID0gIndnZXQgLXEgLU8iICBlbHNlaWYgd2dldCAgaXMgYXZhaWxhYmxlCisgICAgICAgICAgaHR0cDogICAgZzpuZXRyd19odHRwX2NtZCAgID0gImZldGNoIC1vIiAgICBlbHNlaWYgZmV0Y2ggaXMgYXZhaWxhYmxlCiAJICAgcmNwOiAgICAqZzpuZXRyd19yY3BfY21kKiAgPSAicmNwIgogCSByc3luYzogICpnOm5ldHJ3X3JzeW5jX2NtZCogID0gInJzeW5jIC1hIgogCSAgIHNjcDogICAgKmc6bmV0cndfc2NwX2NtZCogID0gInNjcCAtcSIKIAkgIHNmdHA6ICAgKmc6bmV0cndfc2Z0cF9jbWQqICA9ICJzZnRwIgogCi1SRUFESU5HCQkJCQkJKm5ldHJ3LXJlYWQqICpuZXRydy1ucmVhZCoKK1JFQURJTkcJCQkJCQkqbmV0cnctcmVhZCogKm5ldHJ3LW5yZWFkKiB7e3syCisKKwlHZW5lcmFsbHksIG9uZSBtYXkganVzdCB1c2UgdGhlIHVybCBub3RhdGlvbiB3aXRoIGEgbm9ybWFsIGVkaXRpbmcKKwljb21tYW5kLCBzdWNoIGFzID4KKworCQk6ZSBmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoCis8CisJTmV0cncgYWxzbyBwcm92aWRlcyB0aGUgTnJlYWQgY29tbWFuZDoKKwogCTpOcmVhZCA/CQkJCQlnaXZlIGhlbHAKIAk6TnJlYWQgIm1hY2hpbmU6cGF0aCIJCQkJdXNlcyByY3AKIAk6TnJlYWQgIm1hY2hpbmUgcGF0aCIJCQkJdXNlcyBmdHAgdy8gPC5uZXRyYz4KQEAgLTE2Niw3ICsxOTIsMTUgQEAKIAk6TnJlYWQgInNjcDovL1t1c2VyQF1tYWNoaW5lW1s6I11wb3J0XS9wYXRoIgl1c2VzIHNjcAogCTpOcmVhZCAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIHNmdHAKIAotV1JJVElORwkJCQkJCSpuZXRydy13cml0ZSogKm5ldHJ3LW53cml0ZSoKK1dSSVRJTkcJCQkJCSpuZXRydy13cml0ZSogKm5ldHJ3LW53cml0ZSoge3t7MgorCisJT25lIG1heSBqdXN0IHVzZSB0aGUgdXJsIG5vdGF0aW9uIHdpdGggYSBub3JtYWwgZmlsZSB3cml0aW5nCisJY29tbWFuZCwgc3VjaCBhcyA+CisKKwkJOncgZnRwOi8vW3VzZXJAXW1hY2hpbmUvcGF0aAorPAorCU5ldHJ3IGFsc28gcHJvdmlkZXMgdGhlIE53cml0ZSBjb21tYW5kOgorCiAJOk53cml0ZSA/CQkJCQlnaXZlIGhlbHAKIAk6TndyaXRlICJtYWNoaW5lOnBhdGgiCQkJCXVzZXMgcmNwCiAJOk53cml0ZSAibWFjaGluZSBwYXRoIgkJCQl1c2VzIGZ0cCB3LyA8Lm5ldHJjPgpAQCAtMTc5LDcgKzIxMywxNSBAQAogCTpOd3JpdGUgInNmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoIgkJdXNlcyBzZnRwCiAJaHR0cDogbm90IHN1cHBvcnRlZCEKIAotU09VUkNJTkcJCQkJCSpuZXRydy1zb3VyY2UqCitTT1VSQ0lORwkJCQkJKm5ldHJ3LXNvdXJjZSoge3t7MgorCisJT25lIG1heSBqdXN0IHVzZSB0aGUgdXJsIG5vdGF0aW9uIHdpdGggdGhlIG5vcm1hbCBmaWxlIHNvdXJjaW5nCisJY29tbWFuZCwgc3VjaCBhcyA+CisKKwkJOnNvIGZ0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgKKzwKKwlOZXRydyBhbHNvIHByb3ZpZGVzIHRoZSBOc291cmNlIGNvbW1hbmQ6CisKIAk6TnNvdXJjZSA/CQkJCQlnaXZlIGhlbHAKIAk6TnNvdXJjZSAiZGF2Oi8vbWFjaGluZVs6cG9ydF0vcGF0aCIJCXVzZXMgY2FkYXZlcgogCTpOc291cmNlICJmZXRjaDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIGZldGNoCkBAIC0xOTAsMzAgKzIzMiw0OCBAQAogCTpOc291cmNlICJzY3A6Ly9bdXNlckBdbWFjaGluZVtbOiNdcG9ydF0vcGF0aCIJdXNlcyBzY3AKIAk6TnNvdXJjZSAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL3BhdGgiCQl1c2VzIHNmdHAKIAotRElSRUNUT1JZIExJU1RJTkcJCQkJCSpuZXRydy1kaXJsaXN0KgorRElSRUNUT1JZIExJU1RJTkcJCQkJCSpuZXRydy1kaXJsaXN0KiB7e3syCisKKwlPbmUgbWF5IGJyb3dzZSBhIGRpcmVjdG9yeSB0byBnZXQgYSBsaXN0aW5nIGJ5IHNpbXBseSBhdHRlbXB0aW5nIHRvCisJZWRpdCB0aGUgZGlyZWN0b3J5OiA+CisKKwkJOmUgc2NwOi8vW3VzZXJdQGhvc3RuYW1lL3BhdGgvCisJCTplIGZ0cDovL1t1c2VyXUBob3N0bmFtZS9wYXRoLworPAorCUZvciByZW1vdGUgZGlyZWN0b3JpZXMgKGllLiB0aG9zZSB1c2luZyBzY3Agb3IgZnRwKSwgdGhhdCB0cmFpbGluZworCSIvIiBpcyBuZWNlc3NhcnkgKGl0IHRlbGxzIG5ldHJ3IHRoYXQgaXRzIHRvIHRyZWF0IGl0IGFzIGEgZGlyZWN0b3J5CisJdG8gYnJvd3NlIGluc3RlYWQgb2YgYSBmaWxlIHRvIGRvd25sb2FkKS4KKworCUhvd2V2ZXIsIHRoZSBOcmVhZCBjb21tYW5kIGNhbiBhbHNvIGJlIHVzZWQgdG8gYWNjb21wbGlzaCB0aGlzOgorCiAJOk5yZWFkIFtwcm90b2NvbF06Ly9bdXNlcl1AaG9zdG5hbWUvcGF0aC8KIAotCQkJCQkJKm5ldHJ3LWxvZ2luKiAqbmV0cnctcGFzc3dvcmQqCi0gQ0hBTkdJTkcgVVNFUklEIEFORCBQQVNTV09SRAkJCSpuZXRydy1jaGd1cCogKm5ldHJ3LXVzZXJwYXNzKgorCQkJCQkqbmV0cnctbG9naW4qICpuZXRydy1wYXNzd29yZCoKK0NIQU5HSU5HIFVTRVJJRCBBTkQgUEFTU1dPUkQJCSpuZXRydy1jaGd1cCogKm5ldHJ3LXVzZXJwYXNzKiB7e3syCiAKIAlBdHRlbXB0cyB0byB1c2UgZnRwIHdpbGwgcHJvbXB0IHlvdSBmb3IgYSB1c2VyLWlkIGFuZCBhIHBhc3N3b3JkLgogCVRoZXNlIHdpbGwgYmUgc2F2ZWQgaW4gZ2xvYmFsIHZhcmlhYmxlcyBnOm5ldHJ3X3VpZCBhbmQKLQlnOm5ldHJ3X3Bhc3N3ZDsgc3Vic2VxdWVudCB1c2VzIG9mIGZ0cCB3aWxsIHJlLXVzZSB0aG9zZSB0d28gaXRlbXMgdG8KKwlzOm5ldHJ3X3Bhc3N3ZDsgc3Vic2VxdWVudCB1c2VzIG9mIGZ0cCB3aWxsIHJlLXVzZSB0aG9zZSB0d28gaXRlbXMgdG8KIAlzaW1wbGlmeSB0aGUgZnVydGhlciB1c2Ugb2YgZnRwLiAgSG93ZXZlciwgaWYgeW91IG5lZWQgdG8gdXNlIGEKIAlkaWZmZXJlbnQgdXNlciBpZCBhbmQvb3IgcGFzc3dvcmQsIHlvdSdsbCB3YW50IHRvIGNhbGwgTmV0VXNlclBhc3MoKQogCWZpcnN0LiAgVG8gd29yayBhcm91bmQgdGhlIG5lZWQgdG8gZW50ZXIgcGFzc3dvcmRzLCBjaGVjayBpZiB5b3VyIGZ0cAogCXN1cHBvcnRzIGEgPC5uZXRyYz4gZmlsZSBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LiAgQWxzbyBzZWUKIAl8bmV0cnctcGFzc3dkfCAoYW5kIGlmIHlvdSdyZSB1c2luZyBzc2gvc2NwIGhvcGluZyB0byBmaWd1cmUgb3V0IGhvdwotCXRvIG5vdCBuZWVkIHRvIHVzZSBwYXNzd29yZHMsIGxvb2sgYXQgfG5ldHJ3LWxpc3RoYWNrfCkuCisJdG8gbm90IG5lZWQgdG8gdXNlIHBhc3N3b3JkcywgbG9vayBhdCB8bmV0cnctc3NoLWhhY2t8KS4KIAogCTpOZXRVc2VyUGFzcyBbdWlkIFtwYXNzd29yZF1dCQktLSBwcm9tcHRzIGFzIG5lZWRlZAogCTpjYWxsIE5ldFVzZXJQYXNzKCkJCQktLSBwcm9tcHRzIGZvciB1aWQgYW5kIHBhc3N3b3JkCiAJOmNhbGwgTmV0VXNlclBhc3MoInVpZCIpCQktLSBwcm9tcHRzIGZvciBwYXNzd29yZAogCTpjYWxsIE5ldFVzZXJQYXNzKCJ1aWQiLCJwYXNzd29yZCIpCS0tIHNldHMgZ2xvYmFsIHVpZCBhbmQgcGFzc3dvcmQKIAotVkFSSUFCTEVTCQkJCQkJKm5ldHJ3LXZhcmlhYmxlcyoKK05FVFJXIFZBUklBQkxFUyBBTkQgU0VUVElOR1MJCQkJKm5ldHJ3LXZhcmlhYmxlcyoge3t7MgorKGFsc28gc2VlOiB8bmV0cnctYnJvd3Nlci12YXJ8IHxuZXRydy1wcm90b2NvbHwgfG5ldHJ3LXNldHRpbmdzfCB8bmV0cnctdmFyfCkKIAotKGFsc28gc2VlOiB8bmV0cnctYnJvd3NlLXZhcnwgfG5ldHJ3LXByb3RvY29sfCB8bmV0cnctc2V0dGluZ3N8IHxuZXRydy12YXJ8KQorTmV0cncgcHJvdmlkZXMgYSBsb3Qgb2YgdmFyaWFibGVzIHdoaWNoIGFsbG93IHlvdSB0byBjdXN0b21pemUgbmV0cncgdG8geW91cgorcHJlZmVyZW5jZXMuICBPbmUgd2F5IHRvIGxvb2sgYXQgdGhlbSBpcyB2aWEgdGhlIGNvbW1hbmQgOk5ldHJ3U2V0dGluZ3MgKHNlZQorfG5ldHJ3LXNldHRpbmdzfCkgd2hpY2ggd2lsbCBkaXNwbGF5IHlvdXIgY3VycmVudCBuZXRydyBzZXR0aW5ncy4gIE1vc3Qgc3VjaAorc2V0dGluZ3MgYXJlIGRlc2NyaWJlZCBiZWxvdywgaW4gfG5ldHJ3LWJyb3dzZXItb3B0aW9uc3wsIGFuZCBpbgorfG5ldHJ3LWV4dGVybmFwcHw6CiAKICAqYjpuZXRyd19sYXN0ZmlsZSoJbGFzdCBmaWxlIE5ldHdvcmstcmVhZC93cml0dGVuIHJldGFpbmVkIG9uIGEgcGVyLWJ1ZmZlcgogCQkJYmFzaXMJCShzdXBwb3J0cyBwbGFpbiA6TncgKQpAQCAtMjM2LDggKzI5Niw4IEBACiAKICAqZzpuZXRyd19pZ25vcmVuZXRyYyoJPTAgKGRlZmF1bHQgZm9yIGxpbnV4LCBjeWd3aW4pCiAJCQk9MSBJZiB5b3UgaGF2ZSBhIDwubmV0cmM+IGZpbGUgYnV0IGl0IGRvZXNuJ3Qgd29yayBhbmQKLQkJCSAgIHlvdSB3YW50IGl0IGlnbm9yZWQsIHRoZW4gc2V0IHRoaXMgdmFyaWFibGUgYXMgc2hvd24uCi0JCQkgICAoZGVmYXVsdCBmb3IgV2luZG93cyArIGNtZC5leGUpCisJCQkgICB5b3Ugd2FudCBpdCBpZ25vcmVkLCB0aGVuIHNldCB0aGlzIHZhcmlhYmxlIGFzCisJCQkgICBzaG93bi4gKGRlZmF1bHQgZm9yIFdpbmRvd3MgKyBjbWQuZXhlKQogCiAgKmc6bmV0cndfbWVudSoJCT0wIGRpc2FibGUgbmV0cncncyBtZW51CiAJCQk9MSAoZGVmYXVsdCkgbmV0cncncyBtZW51IGVuYWJsZWQKQEAgLTI0Niw3ICszMDYsMTMgQEAKIAkJCWJlIGF2YWlsYWJsZSAoc2VlIHxuZXRydy1neHwpCiAKICAqZzpuZXRyd191aWQqCQkoZnRwKSB1c2VyLWlkLCAgICAgIHJldGFpbmVkIG9uIGEgcGVyLXNlc3Npb24gYmFzaXMKLSAqZzpuZXRyd19wYXNzd2QqCShmdHApIHBhc3N3b3JkLCAgICAgcmV0YWluZWQgb24gYSBwZXItc2Vzc2lvbiBiYXNpcworICpzOm5ldHJ3X3Bhc3N3ZCoJKGZ0cCkgcGFzc3dvcmQsICAgICByZXRhaW5lZCBvbiBhIHBlci1zZXNzaW9uIGJhc2lzCisKKyAqZzpuZXRyd19wcmV2aWV3Kgk9MCAoZGVmYXVsdCkgcHJldmlldyB3aW5kb3cgc2hvd24gaW4gYSBob3Jpem9udGFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0IHdpbmRvdworCQkJPTEgcHJldmlldyB3aW5kb3cgc2hvd24gaW4gYSB2ZXJ0aWNhbGx5IHNwbGl0IHdpbmRvdy4KKwkJCUFsc28gYWZmZWN0cyB0aGUgInByZXZpb3VzIHdpbmRvdyIgKHNlZSB8bmV0cnctUHwpIGluCisJCQl0aGUgc2FtZSB3YXkuCiAKICAqZzpuZXRyd19zaHEqCQk9ICInIiBmb3IgVW5peC9MaW51eCBzeXN0ZW1zIChpZS4gYSBzaW5nbGUgcXVvdGUpCiAJCQk9ICInIiBmb3IgV2luZG93cyArIGN5Z3dpbiBzeXN0ZW1zIChpZS4gYSBzaW5nbGUgcXVvdGUpCkBAIC0yNTgsNiArMzI0LDkgQEAKICAqZzpuZXRyd19zY3Bwb3J0KiAgICAgID0gIi1QIiA6IG9wdGlvbiB0byB1c2UgdG8gc2V0IHBvcnQgZm9yIHNjcAogICpnOm5ldHJ3X3NzaHBvcnQqICAgICAgPSAiLXAiIDogb3B0aW9uIHRvIHVzZSB0byBzZXQgcG9ydCBmb3Igc3NoCiAKKyAgKmc6bmV0cndfc2lsZW50Kgk9MCA6IHRyYW5zZmVycyBkb25lIG5vcm1hbGx5CisJCQk9MSA6IHRyYW5zZmVycyBkb25lIHNpbGVudGx5CisKICAqZzpuZXRyd191c2VfZXJyb3J3aW5kb3cqID0xIDogbWVzc2FnZXMgZnJvbSBuZXRydyB3aWxsIHVzZSBhIHNlcGFyYXRlIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIHdpbmRvdy4gIFRoaXMgd2luZG93IHByb3ZpZGVzIHJlbGlhYmxlCiAJCQkJZGVsaXZlcnkgb2YgbWVzc2FnZXMuIChkZWZhdWx0KQpAQCAtMjc5LDcgKzM0OCw3IEBACiAgKmc6bmV0cndfdXNlX250X3JjcCoJPTAgZG9uJ3QgdXNlIHRoZSByY3Agb2YgV2luTlQsIFdpbjIwMDAgYW5kIFdpblhQCiAJCQk9MSB1c2UgV2luTlQncyByY3AgaW4gYmluYXJ5IG1vZGUgICAgICAgICAoZGVmYXVsdCkKIAotUEFUSFMJCQkJCQkJCSpuZXRydy1wYXRoKgorUEFUSFMJCQkJCQkJKm5ldHJ3LXBhdGgqIHt7ezIKIAogUGF0aHMgdG8gZmlsZXMgYXJlIGdlbmVyYWxseSB1c2VyLWRpcmVjdG9yeSByZWxhdGl2ZSBmb3IgbW9zdCBwcm90b2NvbHMuCiBJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgcHJvdG9jb2wgd2lsbCBtYWtlIHBhdGhzIHJlbGF0aXZlIHRvIHNvbWUKQEAgLTI4OCw3ICszNTcsNyBAQAogCWV4YW1wbGU6ICB2aW0gc2NwOi8vdXNlckBob3N0L3NvbWVmaWxlCiAJZXhhbXBsZTogIHZpbSBzY3A6Ly91c2VyQGhvc3Qvc3ViZGlyMS9zdWJkaXIyL3NvbWVmaWxlCiA8Ci13aGVyZSAic29tZWZpbGUiIGlzIHRoZSAidXNlciIncyBob21lIGRpcmVjdG9yeS4gIElmIHlvdSB3aXNoIHRvIGdldCBhCit3aGVyZSAic29tZWZpbGUiIGlzIGluIHRoZSAidXNlciIncyBob21lIGRpcmVjdG9yeS4gIElmIHlvdSB3aXNoIHRvIGdldCBhCiBmaWxlIHVzaW5nIHJvb3QtcmVsYXRpdmUgcGF0aHMsIHVzZSB0aGUgZnVsbCBwYXRoOgogPgogCWV4YW1wbGU6ICB2aW0gc2NwOi8vdXNlckBob3N0Ly9zb21lZmlsZQpAQCAtMjk2LDcgKzM2NSw3IEBACiA8CiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotNC4gTmV0d29yay1PcmllbnRlZCBGaWxlIFRyYW5zZmVyCQkJCSpuZXRydy14ZmVyKgorNC4gTmV0d29yay1PcmllbnRlZCBGaWxlIFRyYW5zZmVyCQkJKm5ldHJ3LXhmZXIqIHt7ezEKIAogTmV0d29yay1vcmllbnRlZCBmaWxlIHRyYW5zZmVyIHVuZGVyIFZpbSBpcyBpbXBsZW1lbnRlZCBieSBhIFZpbUwtYmFzZWQgc2NyaXB0CiAoPG5ldHJ3LnZpbT4pIHVzaW5nIHBsdWdpbiB0ZWNobmlxdWVzLiAgSXQgY3VycmVudGx5IHN1cHBvcnRzIGJvdGggcmVhZGluZyBhbmQKQEAgLTMxMiw3ICszODEsNyBAQAogCWV4LiB2aW0gZnRwOi8vaG9zdG5hbWUvcGF0aC90by9maWxlCiA8CiBUaGUgY2hhcmFjdGVycyBwcmVjZWRpbmcgdGhlIGNvbG9uIHNwZWNpZnkgdGhlIHByb3RvY29sIHRvIHVzZTsgaW4gdGhlCi1leGFtcGxlLCBpdHMgZnRwLiAgVGhlIDxuZXRydy52aW0+IHNjcmlwdCB0aGVuIGZvcm11bGF0ZXMgYSBjb21tYW5kIG9yIGEKK2V4YW1wbGUsIGl0J3MgZnRwLiAgVGhlIDxuZXRydy52aW0+IHNjcmlwdCB0aGVuIGZvcm11bGF0ZXMgYSBjb21tYW5kIG9yIGEKIHNlcmllcyBvZiBjb21tYW5kcyAodHlwaWNhbGx5IGZ0cCkgd2hpY2ggaXQgaXNzdWVzIHRvIGFuIGV4dGVybmFsIHByb2dyYW0KIChmdHAsIHNjcCwgZXRjKSB3aGljaCBkb2VzIHRoZSBhY3R1YWwgZmlsZSB0cmFuc2Zlci9wcm90b2NvbC4gIEZpbGVzIGFyZSByZWFkCiBmcm9tL3dyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSAodW5kZXIgVW5peC9MaW51eCwgL3RtcC8uLi4pIHdoaWNoIHRoZQpAQCAtMzY0LDYgKzQzMywxMCBAQAogICB8ICBkYXY6Ly9ob3N0L3BhdGggICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhZGF2ZXIgICAgfAogICB8ICA6TnJlYWQgZGF2Oi8vaG9zdC9wYXRoICAgICAgICAgfCA6TndyaXRlIGRhdjovL2hvc3QvcGF0aCAgICB8IGNhZGF2ZXIgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworICB8IERBViArIFNTTDogICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICB8ICBkYXZzOi8vaG9zdC9wYXRoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhZGF2ZXIgICAgfAorICB8ICA6TnJlYWQgZGF2czovL2hvc3QvcGF0aCAgICAgICAgfCA6TndyaXRlIGRhdnM6Ly9ob3N0L3BhdGggICB8IGNhZGF2ZXIgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogICB8IEZFVENIOiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogICB8ICBmZXRjaDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAogICB8ICBmZXRjaDovL1t1c2VyQF1ob3N0Omh0dHAvcGF0aCAgfCAgTm90IEF2YWlsYWJsZSAgICAgICAgICAgICB8IGZldGNoICAgICAgfApAQCAtNDE5LDYgKzQ5MiwxMCBAQAogCiBORVRSQwkJCQkJCQkqbmV0cnctbmV0cmMqCiAKK1RoZSA8Lm5ldHJjPiBmaWxlLCB0eXBpY2FsbHkgbG9jYXRlZCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBjb250YWlucyBsaW5lcwordGhlcmVpbiB3aGljaCBtYXAgYSBob3N0bmFtZSAobWFjaGluZSBuYW1lKSB0byB0aGUgdXNlciBpZCBhbmQgcGFzc3dvcmQgeW91CitwcmVmZXIgdG8gdXNlIHdpdGggaXQuCisKIFRoZSB0eXBpY2FsIHN5bnRheCBmb3IgbGluZXMgaW4gYSA8Lm5ldHJjPiBmaWxlIGlzIGdpdmVuIGFzIHNob3duIGJlbG93LgogRnRwIHVuZGVyIFVuaXggdXN1YWxseSBzdXBwb3J0cyA8Lm5ldHJjPjsgZnRwIHVuZGVyIFdpbmRvd3MgdXN1YWxseSBkb2Vzbid0LgogPgpAQCAtNDMzLDcgKzUxMCw3IEBACiAJU2luY2UgdGhpcyBmaWxlIGNvbnRhaW5zIHBhc3N3b3JkcywgbWFrZSB2ZXJ5IHN1cmUgbm9ib2R5IGVsc2UgY2FuCiAJcmVhZCB0aGlzIGZpbGUhICBNb3N0IHByb2dyYW1zIHdpbGwgcmVmdXNlIHRvIHVzZSBhIC5uZXRyYyB0aGF0IGlzCiAJcmVhZGFibGUgZm9yIG90aGVycy4gIERvbid0IGZvcmdldCB0aGF0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBjYW4KLQlzdGlsbCByZWFkIHRoZSBmaWxlIQorCXN0aWxsIHJlYWQgdGhlIGZpbGUhICBJZS4gZm9yIExpbnV4L1VuaXg6IGNobW9kIDYwMCAubmV0cmMKIAogCiBQQVNTV09SRAkJCQkJCSpuZXRydy1wYXNzd2QqCkBAIC00NDQsMTcgKzUyMSwxOSBAQAogCiBVbmZvcnR1bmF0ZWx5IHRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IGZvciBuZXRydyB0byBmZWVkIGEgcGFzc3dvcmQgdG8KIHNjcC4gIFRodXMgZXZlcnkgdHJhbnNmZXIgdmlhIHNjcCB3aWxsIHJlcXVpcmUgcmUtZW50cnkgb2YgdGhlIHBhc3N3b3JkLgotSG93ZXZlciwgfG5ldHJ3LWxpc3RoYWNrfCBjYW4gaGVscCB3aXRoIHRoaXMgcHJvYmxlbS4KK0hvd2V2ZXIsIHxuZXRydy1zc2gtaGFja3wgY2FuIGhlbHAgd2l0aCB0aGlzIHByb2JsZW0uCiAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci01LiBBY3RpdmF0aW9uCQkJCQkJKm5ldHJ3LWFjdGl2YXRlKgorNS4gQWN0aXZhdGlvbgkJCQkJCSpuZXRydy1hY3RpdmF0ZSoge3t7MQogCiBOZXR3b3JrLW9yaWVudGVkIGZpbGUgdHJhbnNmZXJzIGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdCB3aGVuZXZlciBWaW0ncwotfCdub2NvbXBhdGlibGUnfCBtb2RlIGlzIGVuYWJsZWQuICBUaGUgPG5ldHJ3LnZpbT4gZmlsZSByZXNpZGVzIGluIHlvdXIKLXN5c3RlbSdzIHZpbS1wbHVnaW4gZGlyZWN0b3J5IGFuZCBpcyBzb3VyY2VkIGF1dG9tYXRpY2FsbHkgd2hlbmV2ZXIgeW91IGJyaW5nCi11cCB2aW0uICBJIHN1Z2dlc3QgdGhhdCwgYXQgYSBtaW5pbXVtLCB5b3UgaGF2ZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGluIHlvdXIKLTwudmltcmM+IGN1c3RvbWl6YXRpb24gZmlsZTogPgorfCdub2NvbXBhdGlibGUnfCBtb2RlIGlzIGVuYWJsZWQuICBOZXRydydzIHNjcmlwdCBmaWxlcyByZXNpZGUgaW4geW91cgorc3lzdGVtJ3MgcGx1Z2luLCBhdXRvbG9hZCwgYW5kIHN5bnRheCBkaXJlY3RvcmllczsganVzdCB0aGUKK3BsdWdpbi9uZXRyd1BsdWdpbi52aW0gc2NyaXB0IGlzIHNvdXJjZWQgYXV0b21hdGljYWxseSB3aGVuZXZlciB5b3UgYnJpbmcgdXAKK3ZpbS4gIFRoZSBtYWluIHNjcmlwdCBpbiBhdXRvbG9hZC9uZXRydy52aW0gaXMgb25seSBsb2FkZWQgd2hlbiB5b3UgYWN0dWFsbHkKK3VzZSBuZXRydy4gIEkgc3VnZ2VzdCB0aGF0LCBhdCBhIG1pbmltdW0sIHlvdSBoYXZlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgaW4KK3lvdXIgPC52aW1yYz4gY3VzdG9taXphdGlvbiBmaWxlOiA+CiAKIAlzZXQgbm9jcAogCWlmIHZlcnNpb24gPj0gNjAwCkBAIC00NjMsMTEgKzU0MiwxMiBAQAogPAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTYuIFRyYW5zcGFyZW50IEZpbGUgVHJhbnNmZXIJCQkJKm5ldHJ3LXRyYW5zcGFyZW50KgorNi4gVHJhbnNwYXJlbnQgRmlsZSBFZGl0aW5nCQkJKm5ldHJ3LXRyYW5zcGFyZW50KiB7e3sxCiAKIFRyYW5zcGFyZW50IGZpbGUgdHJhbnNmZXJzIG9jY3VyIHdoZW5ldmVyIGEgcmVndWxhciBmaWxlIHJlYWQgb3Igd3JpdGUKLShpbnZva2VkIHZpYSBhbiB8OmF1dG9jbWR8IGZvciB8QnVmUmVhZENtZHwgb3IgfEJ1ZldyaXRlQ21kfCBldmVudHMpIGlzIG1hZGUuCi1UaHVzIG9uZSBtYXkgdXNlIGZpbGVzIGFjcm9zcyBuZXR3b3JrcyBqdXN0IGFzIHNpbXBseSBhcyBpZiB0aGV5IHdlcmUgbG9jYWwuID4KKyhpbnZva2VkIHZpYSBhbiB8OmF1dG9jbWR8IGZvciB8QnVmUmVhZENtZHwsIHxCdWZXcml0ZUNtZHwsIG9yIHxTb3VyY2VDbWR8CitldmVudHMpIGlzIG1hZGUuICBUaHVzIG9uZSBtYXkgcmVhZCwgd3JpdGUsIG9yIHNvdXJjZSAgZmlsZXMgYWNyb3NzIG5ldHdvcmtzCitqdXN0IGFzIGVhc2lseSBhcyBpZiB0aGV5IHdlcmUgbG9jYWwgZmlsZXMhID4KIAogCXZpbSBmdHA6Ly9bdXNlckBdbWFjaGluZS9wYXRoCiAJLi4uCkBAIC00NzgsMTAgKzU1OCwxMCBAQAogCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotNy4gRXggQ29tbWFuZHMJCQkJCQkqbmV0cnctZXgqCis3LiBFeCBDb21tYW5kcwkJCQkJCSpuZXRydy1leCoge3t7MQogCiBUaGUgdXN1YWwgcmVhZC93cml0ZSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLiAgVGhlcmUgYXJlIGFsc28gYSBmZXcKLWFkZGl0aW9uYWwgY29tbWFuZHMgYXZhaWxhYmxlLiAgT2Z0ZW4geW91IHdvbid0IG5lZWQgdG8gdXNlIE53IG9yCithZGRpdGlvbmFsIGNvbW1hbmRzIGF2YWlsYWJsZS4gIE9mdGVuIHlvdSB3b24ndCBuZWVkIHRvIHVzZSBOd3JpdGUgb3IKIE5yZWFkIGFzIHNob3duIGluIHxuZXRydy10cmFuc3BhcmVudHwgKGllLiBzaW1wbHkgdXNlID4KICAgOmUgdXJsCiAgIDpyIHVybApAQCAtNDg5LDIwICs1NjksMjAgQEAKIGluc3RlYWQsIGFzIGFwcHJvcHJpYXRlKSAtLSBzZWUgfG5ldHJ3LXVybHN8LiAgSW4gdGhlIGV4cGxhbmF0aW9ucwogYmVsb3csIGEge25ldGZpbGV9IGlzIGFuIHVybCB0byBhIHJlbW90ZSBmaWxlLgogCi06W3JhbmdlXU53CVdyaXRlIHRoZSBzcGVjaWZpZWQgbGluZXMgdG8gdGhlIGN1cnJlbnQKKzpbcmFuZ2VdTndbcml0ZV0JV3JpdGUgdGhlIHNwZWNpZmllZCBsaW5lcyB0byB0aGUgY3VycmVudAogCQlmaWxlIGFzIHNwZWNpZmllZCBpbiBiOm5ldHJ3X2xhc3RmaWxlLgogCi06W3JhbmdlXU53IHtuZXRmaWxlfSBbe25ldGZpbGV9XS4uLgorOltyYW5nZV1Od1tyaXRlXSB7bmV0ZmlsZX0gW3tuZXRmaWxlfV0uLi4KIAkJV3JpdGUgdGhlIHNwZWNpZmllZCBsaW5lcyB0byB0aGUge25ldGZpbGV9LgogCi06TnJlYWQJCVJlYWQgdGhlIHNwZWNpZmllZCBsaW5lcyBpbnRvIHRoZSBjdXJyZW50Cis6TnJbZWFkXQkJUmVhZCB0aGUgc3BlY2lmaWVkIGxpbmVzIGludG8gdGhlIGN1cnJlbnQKIAkJYnVmZmVyIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGluCiAJCWI6bmV0cndfbGFzdGZpbGUuCiAKLTpOcmVhZCB7bmV0ZmlsZX0ge25ldGZpbGV9Li4uCis6TnJbZWFkXSB7bmV0ZmlsZX0ge25ldGZpbGV9Li4uCiAJCVJlYWQgdGhlIHtuZXRmaWxlfSBhZnRlciB0aGUgY3VycmVudCBsaW5lLgogCi06TnNvdXJjZSB7bmV0ZmlsZX0KKzpOc1tvdXJjZV0ge25ldGZpbGV9CiAJCVNvdXJjZSB0aGUge25ldGZpbGV9LgogCQlUbyBzdGFydCB1cCB2aW0gdXNpbmcgYSByZW1vdGUgLnZpbXJjLCBvbmUgbWF5IHVzZQogCQl0aGUgZm9sbG93aW5nIChhbGwgb24gb25lIGxpbmUpICh0bnggdG8gQW50b2luZSBNZWNoZWx5bmNrKSA+CkBAIC01MTEsMzEgKzU5MSwzMyBAQAogCQkgLS1jbWQgInNvdXJjZSBzY3A6Ly9IT1NUTkFNRS8udmltcmMiCiA8CQkJCQkJCQkqbmV0cnctdWlkcGFzcyoKIDpjYWxsIE5ldFVzZXJQYXNzKCkKLQkJSWYgYjpuZXRyd191aWQgYW5kIGI6bmV0cndfcGFzc3dkIGRvbid0IGV4aXN0LAotCQl0aGlzIGZ1bmN0aW9uIHF1ZXJ5IHRoZSB1c2VyIGZvciB0aGVtLgorCQlJZiBnOm5ldHJ3X3VpZCBhbmQgczpuZXRyd19wYXNzd2QgZG9uJ3QgZXhpc3QsCisJCXRoaXMgZnVuY3Rpb24gd2lsbCBxdWVyeSB0aGUgdXNlciBmb3IgdGhlbS4KIAogOmNhbGwgTmV0VXNlclBhc3MoInVzZXJpZCIpCi0JCVRoaXMgY2FsbCB3aWxsIHNldCB0aGUgYjpuZXRyd191aWQgYW5kLCBpZgorCQlUaGlzIGNhbGwgd2lsbCBzZXQgdGhlIGc6bmV0cndfdWlkIGFuZCwgaWYKIAkJdGhlIHBhc3N3b3JkIGRvZXNuJ3QgZXhpc3QsIHdpbGwgcXVlcnkgdGhlIHVzZXIgZm9yIGl0LgogCiA6Y2FsbCBOZXRVc2VyUGFzcygidXNlcmlkIiwicGFzc3dkIikKLQkJVGhpcyBjYWxsIHdpbGwgc2V0IGJvdGggdGhlIGI6bmV0cndfdWlkIGFuZCBiOm5ldHJ3X3Bhc3N3ZC4KKwkJVGhpcyBjYWxsIHdpbGwgc2V0IGJvdGggdGhlIGc6bmV0cndfdWlkIGFuZCBzOm5ldHJ3X3Bhc3N3ZC4KIAkJVGhlIHVzZXItaWQgYW5kIHBhc3N3b3JkIGFyZSB1c2VkIGJ5IGZ0cCB0cmFuc2ZlcnMuICBPbmUgbWF5Ci0JCWVmZmVjdGl2ZWx5IHJlbW92ZSB0aGUgdXNlci1pZCBhbmQgcGFzc3dvcmQgYnkgdXNpbmcgIiIKLQkJc3RyaW5ncy4KKwkJZWZmZWN0aXZlbHkgcmVtb3ZlIHRoZSB1c2VyLWlkIGFuZCBwYXNzd29yZCBieSB1c2luZyBlbXB0eQorCQlzdHJpbmdzIChpZS4gIiIpLgogCiA6TmV0cndTZXR0aW5ncyAgVGhpcyBjb21tYW5kIGlzIGRlc2NyaWJlZCBpbiB8bmV0cnctc2V0dGluZ3N8IC0tIHVzZWQgdG8KICAgICAgICAgICAgICAgICBkaXNwbGF5IG5ldHJ3IHNldHRpbmdzIGFuZCBjaGFuZ2UgbmV0cncgYmVoYXZpb3IuCiAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci04LiBWYXJpYWJsZXMgYW5kIE9wdGlvbnMJCQkqbmV0cnctb3B0aW9ucyogKm5ldHJ3LXZhcioKKzguIFZhcmlhYmxlcyBhbmQgT3B0aW9ucwkJKm5ldHJ3LW9wdGlvbnMqICpuZXRydy12YXIqIHt7ezEKKworKGlmIHlvdSdyZSBpbnRlcmVzdGVkIGluIHRoZSBuZXRydyBicm93c2VyIHNldHRpbmdzLCBzZWU6IHxuZXRydy1icm93c2VyLXZhcnwpCiAKIFRoZSA8bmV0cncudmltPiBzY3JpcHQgcHJvdmlkZXMgc2V2ZXJhbCB2YXJpYWJsZXMgd2hpY2ggYWN0IGFzIG9wdGlvbnMgdG8KLWZmZWN0IDxuZXRydy52aW0+J3MgYmVoYXZpb3IuICBUaGVzZSB2YXJpYWJsZXMgdHlwaWNhbGx5IG1heSBiZSBzZXQgaW4gdGhlCi11c2VyJ3MgPC52aW1yYz4gZmlsZToKLShhbHNvIHNlZToKLXxuZXRydy1zZXR0aW5nc3wgfG5ldHJ3LWJyb3dzZS12YXJ8IHxuZXRydy1wcm90b2NvbHwgfG5ldHJ3LXNldHRpbmdzfCkgPgorYWZmZWN0IDxuZXRydy52aW0+J3MgZmlsZSB0cmFuc2ZlciBiZWhhdmlvci4gIFRoZXNlIHZhcmlhYmxlcyB0eXBpY2FsbHkgbWF5IGJlCitzZXQgaW4gdGhlIHVzZXIncyA8LnZpbXJjPiBmaWxlOiAoc2VlIGFsc28gfG5ldHJ3LXNldHRpbmdzfCB8bmV0cnctcHJvdG9jb2x8KQorCis+CiAKICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHJ3IE9wdGlvbnMKQEAgLTU4NCw3ICs2NjYsNyBAQAogCWc6bmV0cndfZm5hbWUJCUhvbGRzIGZpbGVuYW1lIGJlaW5nIGFjY2Vzc2VkID4KIAktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDwKLQkJCQkJCQkJKm5ldHJ3LXByb3RvY29sKgorCQkJCQkJCSpuZXRydy1wcm90b2NvbCoKIAogTmV0cncgc3VwcG9ydHMgYSBudW1iZXIgb2YgcHJvdG9jb2xzLiAgVGhlc2UgcHJvdG9jb2xzIGFyZSBpbnZva2VkIHVzaW5nIHRoZQogdmFyaWFibGVzIGxpc3RlZCBiZWxvdywgYW5kIG1heSBiZSBtb2RpZmllZCBieSB0aGUgdXNlci4KQEAgLTcwNiw0NDUgKzc4OCwyNzQgQEAKID4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci05LiBEaXJlY3RvcnkgQnJvd3NpbmcJKm5ldHJ3LWJyb3dzZSogKm5ldHJ3LWRpciogKm5ldHJ3LWxpc3QqICpuZXRydy1oZWxwKgorOS4gQnJvd3NpbmcJCSpuZXRydy1icm93c2luZyogKm5ldHJ3LWJyb3dzZSogKm5ldHJ3LWhlbHAqIHt7ezEKKyAgIAkJCSpuZXRydy1icm93c2VyKiAgKm5ldHJ3LWRpciogICAgKm5ldHJ3LWxpc3QqCiAKLU1BUFMJCQkJCQkJCSpuZXRydy1tYXBzKgotICAgICA8RjE+Li4uLi4uLi4uLi4uLkhlbHAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctaGVscHwKLSAgICAgPGNyPi4uLi4uLi4uLi4uLi5Ccm93c2luZy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNyfAotICAgICA8ZGVsPi4uLi4uLi4uLi4uLkRlbGV0aW5nIEZpbGVzIG9yIERpcmVjdG9yaWVzLi4uLi4uLi4uLi4uLi58bmV0cnctZGVsZXRlfAotICAgICAtLi4uLi4uLi4uLi4uLi4uLkdvaW5nIFVwLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctLXwKLSAgICAgYS4uLi4uLi4uLi4uLi4uLi5IaWRpbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWF8Ci0gICAgIG1iLi4uLi4uLi4uLi4uLi4uQm9va21hcmtpbmcgYSBEaXJlY3RvcnkuLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1tYnwKLSAgICAgZ2IuLi4uLi4uLi4uLi4uLi5DaGFuZ2luZyB0byBhIEJvb2ttYXJrZWQgRGlyZWN0b3J5Li4uLi4uLi4ufG5ldHJ3LWdifAotICAgICBjLi4uLi4uLi4uLi4uLi4uLk1ha2UgQnJvd3NpbmcgRGlyZWN0b3J5IFRoZSBDdXJyZW50IERpci4uLi58bmV0cnctY3wKLSAgICAgZC4uLi4uLi4uLi4uLi4uLi5NYWtlIEEgTmV3IERpcmVjdG9yeS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWR8Ci0gICAgIEQuLi4uLi4uLi4uLi4uLi4uRGVsZXRpbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLnxuZXRydy1EfAotICAgICA8Yy1oPi4uLi4uLi4uLi4uLkVkaXQgRmlsZS9EaXJlY3RvcnkgSGlkaW5nIExpc3QuLi4uLi4uLi4uLi58bmV0cnctY3RybC1ofAotICAgICBpLi4uLi4uLi4uLi4uLi4uLkNoYW5nZSBMaXN0aW5nIFN0eWxlLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctaXwKLSAgICAgPGMtbD4uLi4uLi4uLi4uLi5SZWZyZXNoaW5nIHRoZSBMaXN0aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWN0cmwtbHwKLSAgICAgby4uLi4uLi4uLi4uLi4uLi5Ccm93c2luZyB3aXRoIGEgSG9yaXpvbnRhbCBTcGxpdC4uLi4uLi4uLi4ufG5ldHJ3LW98Ci0gICAgIHAuLi4uLi4uLi4uLi4uLi4uUHJldmlldyBXaW5kb3cuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1wfAotICAgICBxLi4uLi4uLi4uLi4uLi4uLkxpc3RpbmcgQm9va21hcmtzIGFuZCBIaXN0b3J5Li4uLi4uLi4uLi4uLi58bmV0cnctcXwKLSAgICAgci4uLi4uLi4uLi4uLi4uLi5SZXZlcnNpbmcgU29ydGluZyBPcmRlci4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXJ8Ci0gICAgIFIuLi4uLi4uLi4uLi4uLi4uUmVuYW1pbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLnxuZXRydy1SfAotICAgICBzLi4uLi4uLi4uLi4uLi4uLlNlbGVjdGluZyBTb3J0aW5nIFN0eWxlLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctc3wKLSAgICAgUy4uLi4uLi4uLi4uLi4uLi5FZGl0aW5nIHRoZSBTb3J0aW5nIFNlcXVlbmNlLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LVN8Ci0gICAgIHQuLi4uLi4uLi4uLi4uLi4uQnJvd3Npbmcgd2l0aCBhIG5ldyB0YWIuLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy10fAotICAgICB1Li4uLi4uLi4uLi4uLi4uLkNoYW5naW5nIHRvIGEgUHJlZGVjZXNzb3IgRGlyZWN0b3J5Li4uLi4uLi58bmV0cnctdXwKLSAgICAgVS4uLi4uLi4uLi4uLi4uLi5DaGFuZ2luZyB0byBhIFN1Y2Nlc3NvciBEaXJlY3RvcnkuLi4uLi4uLi4ufG5ldHJ3LVV8Ci0gICAgIHYuLi4uLi4uLi4uLi4uLi4uQnJvd3Npbmcgd2l0aCBhIFZlcnRpY2FsIFNwbGl0Li4uLi4uLi4uLi4uLnxuZXRydy12fAotICAgICB4Li4uLi4uLi4uLi4uLi4uLkN1c3RvbWl6aW5nIEJyb3dzaW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cncteHwKK0lOVFJPRFVDVElPTiBUTyBCUk9XU0lORwkJCSpuZXRydy1pbnRyby1icm93c2UqIHt7ezIKKwkoUXVpY2sgUmVmZXJlbmNlczogfG5ldHJ3LXF1aWNrbWFwc3wgfG5ldHJ3LXF1aWNrY29tc3wpCiAKLSAgICBDT01NQU5EUwkJCQkJCSpuZXRydy1leHBsb3JlLWNtZHMqCi0gICAgIDpFeHBsb3JlWyFdICBbZGlyXSBFeHBsb3JlIGRpcmVjdG9yeSBvZiBjdXJyZW50IGZpbGUuLi4uLi4uLnxuZXRydy1leHBsb3JlfAotICAgICA6U2V4cGxvcmVbIV0gW2Rpcl0gU3BsaXQgJiBFeHBsb3JlIGRpcmVjdG9yeSAuLi4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKLSAgICAgOkhleHBsb3JlWyFdIFtkaXJdIEhvcml6b250YWwgU3BsaXQgJiBFeHBsb3JlLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8Ci0gICAgIDpWZXhwbG9yZVshXSBbZGlyXSBWZXJ0aWNhbCBTcGxpdCAmIEV4cGxvcmUuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAotICAgICA6VGV4cGxvcmVbIV0gW2Rpcl0gVGFiICYgRXhwbG9yZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKLSAgICAgOlBleHBsb3JlWyFdIFtkaXJdIFZlcnRpY2FsIFNwbGl0ICYgRXhwbG9yZS4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8Ci0gICAgIDpOZXhwbG9yZVshXSBbZGlyXSBWZXJ0aWNhbCBTcGxpdCAmIEV4cGxvcmUuLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAotICAgICA6TmV0cndTZXR0aW5ncy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1zZXR0aW5nc3wKK05ldHJ3IHN1cHBvcnRzIHRoZSBicm93c2luZyBvZiBkaXJlY3RvcmllcyBvbiB5b3VyIGxvY2FsIHN5c3RlbSBhbmQgb24gcmVtb3RlCitob3N0czsgYnJvd3NpbmcgaW5jbHVkZXMgbGlzdGluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGVudGVyaW5nIGRpcmVjdG9yaWVzLAorZWRpdGluZyBmaWxlcyB0aGVyZWluLCBkZWxldGluZyBmaWxlcy9kaXJlY3RvcmllcywgbWFraW5nIG5ldyBkaXJlY3RvcmllcywKK21vdmluZyAocmVuYW1pbmcpIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgY29weWluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGV0Yy4KK09uZSBtYXkgbWFyayBmaWxlcyBhbmQgZXhlY3V0ZSBhbnkgc3lzdGVtIGNvbW1hbmQgb24gdGhlbSEgIFRoZSBOZXRydyBicm93c2VyCitnZW5lcmFsbHkgaW1wbGVtZW50cyB0aGUgcHJldmlvdXMgZXhwbG9yZXIncyBtYXBzIGFuZCBjb21tYW5kcyBmb3IgcmVtb3RlCitkaXJlY3RvcmllcywgYWx0aG91Z2ggZGV0YWlscyAoc3VjaCBhcyBwZXJ0aW5lbnQgZ2xvYmFsIHZhcmlhYmxlIG5hbWVzKQorbmVjZXNzYXJpbHkgZGlmZmVyLiAgVG8gYnJvd3NlIGEgZGlyZWN0b3J5LCBzaW1wbHkgImVkaXQiIGl0ISA+CiAKLVFVSUNLIFJFRkVSRU5DRSBDT01NQU5EUyBUQUJMRQkJCQkqbmV0cnctYnJvd3NlLWNtZHMqCi0+Ci0gICAgICAgIC0tLS0tLS0JLS0tLS0tLS0tLS0KLQlDb21tYW5kCUV4cGxhbmF0aW9uCi0gICAgICAgIC0tLS0tLS0JLS0tLS0tLS0tLS0KLTwJPEYxPglDYXVzZXMgTmV0cncgdG8gaXNzdWUgaGVscAotCSA8Y3I+CU5ldHJ3IHdpbGwgZW50ZXIgdGhlIGRpcmVjdG9yeSBvciByZWFkIHRoZSBmaWxlIHxuZXRydy1jcnwKLQkgPGRlbD4JTmV0cncgd2lsbCBhdHRlbXB0IHRvIHJlbW92ZSB0aGUgZmlsZS9kaXJlY3RvcnkgfG5ldHJ3LWRlbHwKLQkgICAtCU1ha2VzIE5ldHJ3IGdvIHVwIG9uZSBkaXJlY3RvcnkgfG5ldHJ3LS18Ci0JICAgYQlUb2dnbGVzIGJldHdlZW4gbm9ybWFsIGRpc3BsYXksIHxuZXRydy1hfAotCQkgaGlkaW5nIChzdXBwcmVzcyBkaXNwbGF5IG9mIGZpbGVzIG1hdGNoaW5nIGc6bmV0cndfbGlzdF9oaWRlKQotCQkgc2hvd2luZyAoZGlzcGxheSBvbmx5IGZpbGVzIHdoaWNoIG1hdGNoIGc6bmV0cndfbGlzdF9oaWRlKQotCSAgIG1iCWJvb2ttYXJrIGN1cnJlbnQgZGlyZWN0b3J5Ci0JICAgZ2IJZ28gdG8gcHJldmlvdXMgYm9va21hcmtlZCBkaXJlY3RvcnkKLQkgICBjCU1ha2UgY3VycmVudCBicm93c2luZyBkaXJlY3RvcnkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHxuZXRydy1jfAotCSAgIGQJTWFrZSBhIGRpcmVjdG9yeSB8bmV0cnctZHwKLQkgICBECU5ldHJ3IHdpbGwgYXR0ZW1wdCB0byByZW1vdmUgdGhlIGZpbGUocykvZGlyZWN0b3J5KGllcykgfG5ldHJ3LUR8Ci0JIDxjLWg+CUVkaXQgZmlsZSBoaWRpbmcgbGlzdCB8bmV0cnctY3RybC1ofAotCSAgIGkJQ3ljbGUgYmV0d2VlbiB0aGluLCBsb25nLCB3aWRlLCBhbmQgdHJlZSBsaXN0aW5nc3xuZXRydy1pfAotCSA8Yy1sPglDYXVzZXMgTmV0cncgdG8gcmVmcmVzaCB0aGUgZGlyZWN0b3J5IGxpc3RpbmcgfG5ldHJ3LWN0cmwtbHwKLQkgICBvCUVudGVyIHRoZSBmaWxlL2RpcmVjdG9yeSB1bmRlciB0aGUgY3Vyc29yIGluIGEgbmV3IGJyb3dzZXIKLQkJIHdpbmRvdy4gIEEgaG9yaXpvbnRhbCBzcGxpdCBpcyB1c2VkLiB8bmV0cnctb3wKLQkgICBPCU9idGFpbiBhIGZpbGUgc3BlY2lmaWVkIGJ5IGN1cnNvciB8bmV0cnctT3wKLQkgICBwCVByZXZpZXcgdGhlIGZpbGUgfG5ldHJ3LXB8Ci0JICAgUAlCcm93c2UgaW4gdGhlIHByZXZpb3VzbHkgdXNlZCB3aW5kb3cgfG5ldHJ3LVB8Ci0JICAgcQlMaXN0IGJvb2ttYXJrZWQgZGlyZWN0b3JpZXMgYW5kIGhpc3RvcnkgfG5ldHJ3LXF8Ci0JICAgcglSZXZlcnNlIHNvcnRpbmcgb3JkZXIgfG5ldHJ3LXJ8Ci0JICAgUglSZW5hbWUgdGhlIGRlc2lnbmVkIGZpbGUocykvZGlyZWN0b3J5KGllcykgfG5ldHJ3LVJ8Ci0JICAgcwlTZWxlY3Qgc29ydGluZyBzdHlsZTogYnkgbmFtZSwgdGltZSwgb3IgZmlsZSBzaXplIHxuZXRydy1zfAotCSAgIFMJU3BlY2lmeSBzdWZmaXggcHJpb3JpdHkgZm9yIG5hbWUtc29ydGluZyB8bmV0cnctU3wKLQkgICB0CUVudGVyIHRoZSBmaWxlL2RpcmVjdG9yeSB1bmRlciB0aGUgY3Vyc29yIGluIGEgbmV3IHRhYnxuZXRydy10fAotCSAgIHUJQ2hhbmdlIHRvIHJlY2VudGx5LXZpc2l0ZWQgZGlyZWN0b3J5IHxuZXRydy11fAotCSAgIFUJQ2hhbmdlIHRvIHN1YnNlcXVlbnRseS12aXNpdGVkIGRpcmVjdG9yeSB8bmV0cnctVXwKLQkgICB2CUVudGVyIHRoZSBmaWxlL2RpcmVjdG9yeSB1bmRlciB0aGUgY3Vyc29yIGluIGEgbmV3IGJyb3dzZXIKLQkJIHdpbmRvdy4gIEEgdmVydGljYWwgc3BsaXQgaXMgdXNlZC4gfG5ldHJ3LXZ8Ci0JICAgeAlBcHBseSBhIGZ1bmN0aW9uIHRvIGEgZmlsZS4gKHNwZWNpYWwgYnJvd3NlcnMpIHxuZXRydy14fAotCi1ORVRSVyBCUk9XU0VSIFZBUklBQkxFUwkJCQkJKm5ldHJ3LWJyb3dzZS12YXIqCi0+Ci0gICAtLS0JCQkJLS0tLS0tLS0tLS0KLSAgIFZhcgkJCQlFeHBsYW5hdGlvbgotICAgLS0tCQkJCS0tLS0tLS0tLS0tCi08ICpnOm5ldHJ3X2FsdG8qCQljaGFuZ2UgZnJvbSBhYm92ZSBzcGxpdHRpbmcgdG8gYmVsb3cgc3BsaXR0aW5nCi0JCQkJYnkgc2V0dGluZyB0aGlzIHZhcmlhYmxlIChzZWUgfG5ldHJ3LW98KQotCQkJCSBkZWZhdWx0OiA9JnNiICAgICAgICAgICAoc2VlIHwnc2InfCkKLQotICAqZzpuZXRyd19hbHR2KgkJY2hhbmdlIGZyb20gbGVmdCBzcGxpdHRpbmcgdG8gcmlnaHQgc3BsaXR0aW5nCi0JCQkJYnkgc2V0dGluZyB0aGlzIHZhcmlhYmxlIChzZWUgfG5ldHJ3LXZ8KQotCQkJCSBkZWZhdWx0OiA9JnNwciAgICAgICAgICAoc2VlIHwnc3ByJ3wpCi0KLSAgKmc6bmV0cndfYnJvd3NlX3NwbGl0Kgl3aGVuIGJyb3dzaW5nLCA8Y3I+IHdpbGwgb3BlbiB0aGUgZmlsZSBieToKLQkJCQk9MDogcmUtdXNpbmcgdGhlIHNhbWUgd2luZG93Ci0JCQkJPTE6IGhvcml6b250YWxseSBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdCAgCi0JCQkJPTI6IHZlcnRpY2FsbHkgICBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdCAgCi0JCQkJPTM6IG9wZW4gZmlsZSBpbiBuZXcgdGFiCi0KLSAgKmc6bmV0cndfYnJvd3NleF92aWV3ZXIqCXNwZWNpZnkgdXNlcidzIHByZWZlcmVuY2UgZm9yIGEgdmlld2VyOiA+Ci0JCQkJCSJrZm1jbGllbnQgZXhlYyIKLQkJCQkJImdub21lLW9wZW4iCi08CQkJCUlmID4KLQkJCQkJIi0iCi08CQkJCWlzIHVzZWQsIHRoZW4gbmV0cndGaWxlSGFuZGxlcigpIHdpbGwgbG9vayBmb3IKLQkJCQlhIHNjcmlwdC9mdW5jdGlvbiB0byBoYW5kbGUgdGhlIGdpdmVuCi0JCQkJZXh0ZW5zaW9uLiAgKHNlZSB8bmV0cndfZmlsZWhhbmRsZXJ8KS4KLQotICAqZzpuZXRyd19mYXN0YnJvd3NlKgkJPTA6IHNsb3cgc3BlZWQgYnJvd3NpbmcsIG5ldmVyIHJlLXVzZQotCQkJCSAgICBkaXJlY3RvcnkgbGlzdGluZ3M7IGFsd2F5cyBvYnRhaW4KLQkJCQkgICAgZGlyZWN0b3J5IGxpc3RpbmdzLgotCQkJCT0xOiBtZWRpdW0gc3BlZWQgYnJvd3NpbmcsIHJlLXVzZSBkaXJlY3RvcnkKLQkJCQkgICAgbGlzdGluZ3Mgb25seSB3aGVuIHJlbW90ZSBicm93c2luZy4KLQkJCQkgICAgKGRlZmF1bHQgdmFsdWUpCi0JCQkJPTI6IGZhc3QgYnJvd3NpbmcsIG9ubHkgb2J0YWlucyBkaXJlY3RvcnkKLQkJCQkgICAgbGlzdGluZ3Mgd2hlbiB0aGUgZGlyZWN0b3J5IGhhc24ndCBiZWVuCi0JCQkJICAgIHNlZW4gYmVmb3JlIChvciB8bmV0cnctY3RybC1sfCBpcyB1c2VkKS4KLQkJCQlGYXN0IGJyb3dzaW5nIHJldGFpbnMgb2xkIGRpcmVjdG9yeSBsaXN0aW5nCi0JCQkJYnVmZmVycyBzbyB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBiZQotCQkJCXJlLWFjcXVpcmVkLiAgVGhpcyBmZWF0dXJlIGlzIGVzcGVjaWFsbHkKLQkJCQlpbXBvcnRhbnQgZm9yIHJlbW90ZSBicm93c2luZy4gIEhvd2V2ZXIsIGlmCi0JCQkJYSBmaWxlIGlzIGludHJvZHVjZWQgb3IgZGVsZXRlZCBpbnRvIG9yIGZyb20KLQkJCQlzdWNoIGRpcmVjdG9yaWVzLCB0aGUgb2xkIGRpcmVjdG9yeSBidWZmZXIKLQkJCQliZWNvbWVzIG91dC1vZi1kYXRlLiAgT25lIG1heSBhbHdheXMgcmVmcmVzaAotCQkJCXN1Y2ggYSBkaXJlY3RvcnkgbGlzdGluZyB3aXRoIHxuZXRydy1jdHJsLWx8LgotCQkJCVRoaXMgb3B0aW9uIGdpdmVzIHRoZSBjaG9pY2Ugb2YgdGhlIHRyYWRlLW9mZgotCQkJCWJldHdlZW4gYWNjdXJhY3kgYW5kIHNwZWVkIHRvIHRoZSB1c2VyLgotCi0gICpnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0KglmdHAgY2FuIHByb2R1Y2UgYSBudW1iZXIgb2YgZXJyb3JzIGFuZCB3YXJuaW5ncwotCQkJCXRoYXQgY2FuIHNob3cgdXAgYXMgImRpcmVjdG9yaWVzIiBhbmQgImZpbGVzIgotCQkJCWluIHRoZSBsaXN0aW5nLiAgVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8KLQkJCQlyZW1vdmUgc3VjaCBlbWJlZGRlZCBtZXNzYWdlcy4gIEJ5IGRlZmF1bHQgaXRzCi0JCQkJdmFsdWUgaXM6Ci0JCQkJICdedG90YWxcc1wrXGRcKyRcfAotCQkJCSBeVHJ5aW5nXHNcK1xkXCsuKiRcfAotCQkJCSBeS0VSQkVST1NfVlxkIHJlamVjdGVkXHwKLQkJCQkgXlNlY3VyaXR5IGV4dGVuc2lvbnMgbm90XHwKLQkJCQkgTm8gc3VjaCBmaWxlXHwKLQkJCQkgOiBjb25uZWN0IHRvIGFkZHJlc3MgWzAtOWEtZkEtRjpdKgotCQkJCSA6IE5vIHJvdXRlIHRvIGhvc3QkJwotCi0gICpnOm5ldHJ3X2Z0cF9saXN0X2NtZCoJb3B0aW9ucyBmb3IgcGFzc2luZyBhbG9uZyB0byBmdHAgZm9yIGRpcmVjdG9yeQotCQkJCWxpc3RpbmcuICBEZWZhdWx0czoKLQkJCQkgdW5peCBvciBnOm5ldHJ3X2N5Z3dpbiBzZXQ6IDogImxzIC1sRiIKLQkJCQkgb3RoZXJ3aXNlICAgICAgICAgICAgICAgICAgICAgImRpciIKLQotCi0gICpnOm5ldHJ3X2Z0cF9zaXplbGlzdF9jbWQqCW9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKLQkJCQlsaXN0aW5nLCBzb3J0ZWQgYnkgc2l6ZSBvZiBmaWxlLgotCQkJCURlZmF1bHRzOgotCQkJCSB1bml4IG9yIGc6bmV0cndfY3lnd2luIHNldDogOiAibHMgLXNsRiIKLQkJCQkgb3RoZXJ3aXNlICAgICAgICAgICAgICAgICAgICAgImRpciIKLQotICAqZzpuZXRyd19mdHBfdGltZWxpc3RfY21kKglvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IgZGlyZWN0b3J5Ci0JCQkJbGlzdGluZywgc29ydGVkIGJ5IHRpbWUgb2YgbGFzdCBtb2RpZmljYXRpb24uCi0JCQkJRGVmYXVsdHM6Ci0JCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtdGxGIgotCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgotCi0gICpnOm5ldHJ3X2hpZGUqCQlpZiB0cnVlLCB0aGUgaGlkaW5nIGxpc3QgaXMgdXNlZAotCQkJCSBkZWZhdWx0OiA9MAotCi0gICpnOm5ldHJ3X2tlZXBkaXIqCQk9MSAoZGVmYXVsdCkga2VlcCBjdXJyZW50IGRpcmVjdG9yeSBpbW11bmUgZnJvbQotCQkJCSAgIHRoZSBicm93c2luZyBkaXJlY3RvcnkuCi0JCQkJPTAga2VlcCB0aGUgY3VycmVudCBkaXJlY3RvcnkgdGhlIHNhbWUgYXMgdGhlCi0JCQkJICAgYnJvd3NpbmcgZGlyZWN0b3J5LgotCQkJCVRoZSBjdXJyZW50IGJyb3dzaW5nIGRpcmVjdG9yeSBpcyBjb250YWluZWQgaW4KLQkJCQliOm5ldHJ3X2N1cmRpciAoYWxzbyBzZWUgfG5ldHJ3LWN8KQotCi0gICpnOm5ldHJ3X2xpc3RfY21kKgkJY29tbWFuZCBmb3IgbGlzdGluZyByZW1vdGUgZGlyZWN0b3JpZXMKLQkJCQkgZGVmYXVsdDogKGlmIHNzaCBpcyBleGVjdXRhYmxlKQotCQkJCSAgICAgICAgICAic3NoIEhPU1ROQU1FIGxzIC1GTGEiCi0KLSAgKmc6bmV0cndfbGlzdHN0eWxlKgkJU2V0IHRoZSBkZWZhdWx0IGxpc3Rpbmcgc3R5bGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDogdGhpbiBsaXN0aW5nIChvbmUgZmlsZSBwZXIgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOiBsb25nIGxpc3RpbmcgKG9uZSBmaWxlIHBlciBsaW5lIHdpdGggdGltZQotCQkJCSAgICAgc3RhbXAgaW5mb3JtYXRpb24gYW5kIGZpbGUgc2l6ZSkKLQkJCQk9IDI6IHdpZGUgbGlzdGluZyAobXVsdGlwbGUgZmlsZXMgaW4gY29sdW1ucykKLQkJCQk9IDM6IHRyZWUgc3R5bGUgbGlzdGluZwotICAqZzpuZXRyd19saXN0X2hpZGUqCQljb21tYSBzZXBhcmF0ZWQgcGF0dGVybiBsaXN0IGZvciBoaWRpbmcgZmlsZXMKLQkJCQkgZGVmYXVsdDogIiIKLQotICAqZzpuZXRyd19sb2NhbF9ta2RpcioJCWNvbW1hbmQgZm9yIG1ha2luZyBhIGxvY2FsIGRpcmVjdG9yeQotCQkJCSBkZWZhdWx0OiAibWtkaXIiCi0KLSAgKmc6bmV0cndfbG9jYWxfcm1kaXIqCQlyZW1vdmUgZGlyZWN0b3J5IGNvbW1hbmQgKHJtZGlyKQotCQkJCSBkZWZhdWx0OiAicm1kaXIiCi0KLSAgKmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4qCT0zMiBieSBkZWZhdWx0LCBzZWxlY3RlZCBzbyBhcyB0byBtYWtlIGxvbmcKLQkJCQkgICAgbGlzdGluZ3MgZml0IG9uIDgwIGNvbHVtbiBkaXNwbGF5cy4KLQkJCQlJZiB5b3VyIHNjcmVlbiBpcyB3aWRlciwgYW5kIHlvdSBoYXZlIGZpbGUKLQkJCQlvciBkaXJlY3RvcnkgbmFtZXMgbG9uZ2VyIHRoYW4gMzIgYnl0ZXMsCi0JCQkJeW91IG1heSBzZXQgdGhpcyBvcHRpb24gdG8ga2VlcCBsaXN0aW5ncwotCQkJCWNvbHVtbmFyLgotCi0gICpnOm5ldHJ3X21rZGlyX2NtZCoJCWNvbW1hbmQgZm9yIG1ha2luZyBhIHJlbW90ZSBkaXJlY3RvcnkKLQkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIG1rZGlyIgotCi0gICpnOm5ldHJ3X3JtX2NtZCoJCWNvbW1hbmQgZm9yIHJlbW92aW5nIGZpbGVzCi0JCQkJIGRlZmF1bHQ6ICJzc2ggVVNFUE9SVCBIT1NUTkFNRSBybSIKLQotICAqZzpuZXRyd19ybWRpcl9jbWQqCQljb21tYW5kIGZvciByZW1vdmluZyBkaXJlY3RvcmllcwotCQkJCSBkZWZhdWx0OiAic3NoIFVTRVBPUlQgSE9TVE5BTUUgcm1kaXIiCi0KLSAgKmc6bmV0cndfcm1mX2NtZCoJCSBjb21tYW5kIGZvciByZW1vdmluZyBzb2Z0bGlua3MKLQkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIHJtIC1mIgotCi0gICpnOm5ldHJ3X3NvcnRfYnkqCQlzb3J0IGJ5ICJuYW1lIiwgInRpbWUiLCBvciAic2l6ZSIKLQkJCQkgZGVmYXVsdDogIm5hbWUiCi0KLSAgKmc6bmV0cndfc29ydF9kaXJlY3Rpb24qCXNvcnRpbmcgZGlyZWN0aW9uOiAibm9ybWFsIiBvciAicmV2ZXJzZSIKLQkJCQkgZGVmYXVsdDogIm5vcm1hbCIKLQotICAqZzpuZXRyd19zb3J0X3NlcXVlbmNlKgl3aGVuIHNvcnRpbmcgYnkgbmFtZSwgZmlyc3Qgc29ydCBieSB0aGUKLQkJCQljb21tYS1zZXBhcmF0ZWQgcGF0dGVybiBzZXF1ZW5jZQotCQkJCSBkZWZhdWx0OiAnW1wvXSQsKixcLmJhayQsXC5vJCxcLmgkLAotCQkJCSAgICAgICAgICAgXC5pbmZvJCxcLnN3cCQsXC5vYmokJwotCi0gICpnOm5ldHJ3X3NzaF9jbWQqCQlPbmUgbWF5IHNwZWNpZnkgYW4gZXhlY3V0YWJsZSBjb21tYW5kCi0JCQkJdG8gdXNlIGluc3RlYWQgb2Ygc3NoIGZvciByZW1vdGUgYWN0aW9ucwotCQkJCXN1Y2ggYXMgbGlzdGluZywgZmlsZSByZW1vdmFsLCBldGMuCi0JCQkJIGRlZmF1bHQ6IHNzaAotCi0gICpnOm5ldHJ3X3NzaF9icm93c2VfcmVqZWN0Kglzc2ggY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVud2FudGVkIGxpbmVzLAotCQkJCW1lc3NhZ2VzLCBiYW5uZXJzLCBhbmQgd2hhdG5vdCB0aGF0IG9uZSBkb2Vzbid0Ci0JCQkJd2FudCBtYXNxdWVyYWRpbmcgYXMgImRpcmVjdG9yaWVzIiBhbmQgImZpbGVzIi4KLQkJCQlVc2UgdGhpcyBwYXR0ZXJuIHRvIHJlbW92ZSBzdWNoIGVtYmVkZGVkCi0JCQkJbWVzc2FnZXMuICBCeSBkZWZhdWx0IGl0cyB2YWx1ZSBpczoKLQkJCQkJICdedG90YWxcc1wrXGRcKyQnCi0KLSAgKmc6bmV0cndfdXNlX25vc3dmKgkJbmV0cncgbm9ybWFsbHkgYXZvaWRzIHdyaXRpbmcgc3dhcGZpbGVzCi0gIAkJCQlmb3IgYnJvd3NlciBidWZmZXJzLiAgSG93ZXZlciwgdW5kZXIgc29tZQotCQkJCXN5c3RlbXMgdGhpcyBhcHBhcmVudGx5IGlzIGNhdXNpbmcgbmFzdHkKLQkJCQltbF9nZXQgZXJyb3JzIHRvIGFwcGVhcjsgaWYgeW91J3JlIGdldHRpbmcKLQkJCQltbF9nZXQgZXJyb3JzLCB0cnkgcHV0dGluZwotCQkJCSAgbGV0IGc6bmV0cndfdXNlX25vc3dmPSAwCi0JCQkJaW4geW91ciAudmltcmMuCi0KLSAgKmc6bmV0cndfdGltZWZtdCoJCXNwZWNpZnkgZm9ybWF0IHN0cmluZyB0byBzdHJmdGltZSgpICglYykKLQkJCQkgZGVmYXVsdDogIiVjIgotCi0gICpnOm5ldHJ3X3dpbnNpemUqCQlzcGVjaWZ5IGluaXRpYWwgc2l6ZSBvZiBuZXcgby92IHdpbmRvd3MKLQkJCQkgZGVmYXVsdDogIiIKLQotICAqZzpOZXRyd1RvcEx2bE1lbnUqCQlUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgdG9wIGxldmVsCi0JCQkJbWVudSBuYW1lOyBieSBkZWZhdWx0LCBpdHMgIk5ldHJ3LiIuICBJZgotCQkJCXlvdSB3aXNoIHRvIGNoYW5nZSB0aGlzLCBkbyBzbyBpbiB5b3VyCi0JCQkJLnZpbXJjLgotCi1JTlRST0RVQ1RJT04gVE8gRElSRUNUT1JZIEJST1dTSU5HCQkJKm5ldHJ3LWJyb3dzZS1pbnRybyoKLQotTmV0cncgc3VwcG9ydHMgdGhlIGJyb3dzaW5nIG9mIGRpcmVjdG9yaWVzIG9uIHRoZSBsb2NhbCBzeXN0ZW0gYW5kIG9uIHJlbW90ZQotaG9zdHMsIGluY2x1ZGluZyBsaXN0aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgZW50ZXJpbmcgZGlyZWN0b3JpZXMsIGVkaXRpbmcKLWZpbGVzIHRoZXJlaW4sIGRlbGV0aW5nIGZpbGVzL2RpcmVjdG9yaWVzLCBtYWtpbmcgbmV3IGRpcmVjdG9yaWVzLCBhbmQgbW92aW5nCi0ocmVuYW1pbmcpIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gIFRoZSBOZXRydyBicm93c2VyIGdlbmVyYWxseSBpbXBsZW1lbnRzIHRoZQotcHJldmlvdXMgZXhwbG9yZXIgbWFwcyBhbmQgY29tbWFuZHMgZm9yIHJlbW90ZSBkaXJlY3RvcmllcywgYWx0aG91Z2ggZGV0YWlscwotKHN1Y2ggYXMgcGVydGluZW50IGdsb2JhbCB2YXJpYWJsZSBuYW1lcykgbmVjZXNzYXJpbHkgZGlmZmVyLgorCXZpbSAveW91ci9kaXJlY3RvcnkvCisJdmltIC4KKwl2aW0gYzpceW91clxkaXJlY3RvcnlcCis8CisoUmVsYXRlZCB0b3BpY3M6IHxuZXRydy1jcnwgIHxuZXRydy1vfCAgfG5ldHJ3LXB8IHxuZXRydy1QfCB8bmV0cnctdHwKKyAgICAgICAgICAgICAgICAgfG5ldHJ3LW1mfCAgfG5ldHJ3LW14fCB8bmV0cnctRHwgfG5ldHJ3LVJ8IHxuZXRydy12fCApCiAKIFRoZSBOZXRydyByZW1vdGUgZmlsZSBhbmQgZGlyZWN0b3J5IGJyb3dzZXIgaGFuZGxlcyB0d28gcHJvdG9jb2xzOiBzc2ggYW5kCi1mdHAuICBUaGUgcHJvdG9jb2wgaW4gdGhlIHVybCwgaWYgaXQgaXMgZnRwLCB3aWxsIGNhdXNlIG5ldHJ3IHRvIHVzZSBmdHAKLWluIGl0cyByZW1vdGUgYnJvd3NpbmcuICBBbnkgb3RoZXIgcHJvdG9jb2wgd2lsbCBiZSB1c2VkIGZvciBmaWxlIHRyYW5zZmVycywKLWJ1dCBvdGhlcndpc2UgdGhlIHNzaCBwcm90b2NvbCB3aWxsIGJlIHVzZWQgdG8gZG8gcmVtb3RlIGRpcmVjdG9yeSBicm93c2luZy4KK2Z0cC4gIFRoZSBwcm90b2NvbCBpbiB0aGUgdXJsLCBpZiBpdCBpcyBmdHAsIHdpbGwgY2F1c2UgbmV0cncgYWxzbyB0byB1c2UgZnRwCitpbiBpdHMgcmVtb3RlIGJyb3dzaW5nLiAgU3BlY2lmeWluZyBhbnkgb3RoZXIgcHJvdG9jb2wgd2lsbCBjYXVzZSBpdCB0byBiZQordXNlZCBmb3IgZmlsZSB0cmFuc2ZlcnM7IGJ1dCB0aGUgc3NoIHByb3RvY29sIHdpbGwgYmUgdXNlZCB0byBkbyByZW1vdGUKK2Jyb3dzaW5nLgogCi1UbyB1c2UgTmV0cncncyByZW1vdGUgZGlyZWN0b3J5IGJyb3dzZXIsIHNpbXBseSBhdHRlbXB0IHRvIHJlYWQgYSAiZmlsZSIgd2l0aCBhCi10cmFpbGluZyBzbGFzaCBhbmQgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHJlcXVlc3QgdG8gbGlzdCBhIGRpcmVjdG9yeToKLQorVG8gdXNlIE5ldHJ3J3MgcmVtb3RlIGRpcmVjdG9yeSBicm93c2VyLCBzaW1wbHkgYXR0ZW1wdCB0byByZWFkIGEgImZpbGUiIHdpdGgKK2EgdHJhaWxpbmcgc2xhc2ggYW5kIGl0IHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZXF1ZXN0IHRvIGxpc3QgYSBkaXJlY3Rvcnk6Cis+CiAJdmltIFtwcm90b2NvbF06Ly9bdXNlckBdaG9zdG5hbWUvcGF0aC8KLQotRm9yIGxvY2FsIGRpcmVjdG9yaWVzLCB0aGUgdHJhaWxpbmcgc2xhc2ggaXMgbm90IHJlcXVpcmVkLgotCi1JZiB5b3UnZCBsaWtlIHRvIGF2b2lkIGVudGVyaW5nIHRoZSBwYXNzd29yZCBpbiBmb3IgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5ncwotd2l0aCBzc2ggb3Igc2NwLCBzZWUgfG5ldHJ3LWxpc3RoYWNrfC4KLQotCi1ORVRSVyBCUk9XU0lORyBBTkQgT1BUSU9OIElOQ09NUEFUSUJJTElUSUVTCQkqbmV0cnctaW5jb21wYXRpYmxlKgotCi1OZXRydyB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IHdpdGggPgotCi0JOnNldCBhY2QKLQk6c2V0IGZvPS4uLnRhLi4uCiA8Ci1JZiBlaXRoZXIgb2YgdGhlc2Ugb3B0aW9ucyBhcmUgcHJlc2VudCB3aGVuIGJyb3dzaW5nIGlzIGF0dGVtcHRlZCwgbmV0cncKLXdpbGwgY2hhbmdlIHRoZW0gYnkgdXNpbmcgbm9hY2QgYW5kIHJlbW92aW5nIHRoZSB0YSBzdWJvcHRpb25zIGZyb20gdGhlCi18J2Zvcm1hdG9wdGlvbnMnfC4KK3doZXJlIFtwcm90b2NvbF0gaXMgdHlwaWNhbGx5IHNjcCBvciBmdHAuICBBcyBhbiBleGFtcGxlLCB0cnk6ID4KIAotCQkJKm5ldHJ3LWV4cGxvcmUqICAqbmV0cnctcGV4cGxvcmUqICpuZXRydy10ZXhwbG9yZSoKLQkJCSpuZXRydy1oZXhwbG9yZSogKm5ldHJ3LXNleHBsb3JlKiAqbmV0cnctbmV4cGxvcmUqCi0JCQkqbmV0cnctdmV4cGxvcmUqCi1ESVJFQ1RPUlkgRVhQTE9SSU5HIENPTU1BTkRTIAorCXZpbSBmdHA6Ly9mdHAuaG9tZS52aW0ub3JnL3B1Yi92aW0vCis8CitGb3IgbG9jYWwgZGlyZWN0b3JpZXMsIHRoZSB0cmFpbGluZyBzbGFzaCBpcyBub3QgcmVxdWlyZWQuICBBZ2FpbiwgYmVjYXVzZSBpdHMKK2Vhc3kgdG8gbWlzczogdG8gYnJvd3NlIHJlbW90ZSBkaXJlY3RvcmllcywgdGhlIHVybCBtdXN0IHRlcm1pbmF0ZSB3aXRoIGEKK3NsYXNoIQogCi0gICAgIDpFeHBsb3JlWyFdICAgW2Rpcl0uLi4gRXhwbG9yZSBkaXJlY3Rvcnkgb2YgY3VycmVudCBmaWxlICAgICAgICo6RXhwbG9yZSoKLSAgICAgOlNleHBsb3JlWyFdICBbZGlyXS4uLiBTcGxpdCZFeHBsb3JlIGRpcmVjdG9yeSBvZiBjdXJyZW50IGZpbGUgKjpTZXhwbG9yZSoKLSAgICAgOkhleHBsb3JlWyFdICBbZGlyXS4uLiBIb3Jpem9udGFsIFNwbGl0ICYgRXhwbG9yZSAgICAgICAgICAgICAgKjpIZXhwbG9yZSoKLSAgICAgOlZleHBsb3JlWyFdICBbZGlyXS4uLiBWZXJ0aWNhbCAgIFNwbGl0ICYgRXhwbG9yZSAgICAgICAgICAgICAgKjpWZXhwbG9yZSoKLSAgICAgOlRleHBsb3JlICAgICBbZGlyXS4uLiBUYWIgICAgICAgICAgICAgICYgRXhwbG9yZSAgICAgICAgICAgICAgKjpUZXhwbG9yZSoKK0lmIHlvdSdkIGxpa2UgdG8gYXZvaWQgZW50ZXJpbmcgdGhlIHBhc3N3b3JkIHJlcGVhdGVkbHkgZm9yIHJlbW90ZSBkaXJlY3RvcnkKK2xpc3RpbmdzIHdpdGggc3NoIG9yIHNjcCwgc2VlIHxuZXRydy1zc2gtaGFja3wuICBUbyBhdm9pZCBwYXNzd29yZCBlbnRyeSB3aXRoCitmdHAsIHNlZSB8bmV0cnctbmV0cmN8IChpZiB5b3VyIGZ0cCBzdXBwb3J0cyBpdCkuCiAKLSAgICAgVXNlZCB3aXRoIDpFeHBsb3JlICoqL3BhdHRlcm4gOiAoYWxzbyBzZWUgfG5ldHJ3LXN0YXJzdGFyfCkKLSAgICAgOk5leHBsb3JlLi4uLi4uLi4uLi4uLiBnbyB0byBuZXh0IG1hdGNoaW5nIGZpbGUgICAgICAgICAgICAgICAgKjpOZXhwbG9yZSoKLSAgICAgOlBleHBsb3JlLi4uLi4uLi4uLi4uLiBnbyB0byBwcmV2aW91cyBtYXRjaGluZyBmaWxlICAgICAgICAgICAgKjpQZXhwbG9yZSoKK1RoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncyB5b3UgY2FuIGRvIHRvIGFmZmVjdCB0aGUgYnJvd3NlcidzIGRpc3BsYXkgb2YgZmlsZXM6CiAKLTpFeHBsb3JlICB3aWxsIG9wZW4gdGhlIGxvY2FsLWRpcmVjdG9yeSBicm93c2VyIG9uIHRoZSBjdXJyZW50IGZpbGUncwotICAgICAgICAgIGRpcmVjdG9yeSAob3Igb24gZGlyZWN0b3J5IFtkaXJdIGlmIHNwZWNpZmllZCkuICBUaGUgd2luZG93IHdpbGwgYmUKLQkgIHNwbGl0IG9ubHkgaWYgdGhlIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQsIG90aGVyd2lzZSB0aGUgYnJvd3NpbmcKLQkgIHdpbmRvdyB3aWxsIHRha2Ugb3ZlciB0aGF0IHdpbmRvdy4gIE5vcm1hbGx5IHRoZSBzcGxpdHRpbmcgaXMgdGFrZW4KLQkgIGhvcml6b250YWxseS4KLTpFeHBsb3JlISBpcyBsaWtlIDpFeHBsb3JlLCBidXQgd2lsbCB1c2UgdmVydGljYWwgc3BsaXR0aW5nLgotOlNleHBsb3JlIHdpbGwgYWx3YXlzIHNwbGl0IHRoZSB3aW5kb3cgYmVmb3JlIGludm9raW5nIHRoZSBsb2NhbC1kaXJlY3RvcnkKLSAgICAgICAgICBicm93c2VyLiAgQXMgd2l0aCBFeHBsb3JlLCB0aGUgc3BsaXR0aW5nIGlzIG5vcm1hbGx5IGRvbmUKLQkgIGhvcml6b250YWxseS4KLTpTZXhwbG9yZSEgW2Rpcl0gaXMgbGlrZSA6U2V4cGxvcmUsIGJ1dCB0aGUgc3BsaXR0aW5nIHdpbGwgYmUgZG9uZSB2ZXJ0aWNhbGx5LgotOkhleHBsb3JlICBbZGlyXSBkb2VzIGFuIDpFeHBsb3JlIHdpdGggfDpiZWxvd3JpZ2h0fCBob3Jpem9udGFsIHNwbGl0dGluZy4KLTpIZXhwbG9yZSEgW2Rpcl0gZG9lcyBhbiA6RXhwbG9yZSB3aXRoIHw6YWJvdmVsZWZ0fCAgaG9yaXpvbnRhbCBzcGxpdHRpbmcuCi06VmV4cGxvcmUgIFtkaXJdIGRvZXMgYW4gOkV4cGxvcmUgd2l0aCB8OmxlZnRhYm92ZXwgIHZlcnRpY2FsIHNwbGl0dGluZy4KLTpWZXhwbG9yZSEgW2Rpcl0gZG9lcyBhbiA6RXhwbG9yZSB3aXRoIHw6cmlnaHRiZWxvd3wgdmVydGljYWwgc3BsaXR0aW5nLgotOlRleHBsb3JlICBbZGlyXSBkb2VzIGEgdGFibmV3IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBicm93c2VyIHdpbmRvdworCSogVG8gY2hhbmdlIHRoZSBsaXN0aW5nIHN0eWxlLCBwcmVzcyB0aGUgImkiIGtleSAofG5ldHJ3LWl8KS4KKwkgIEN1cnJlbnRseSB0aGVyZSBhcmUgZm91ciBzdHlsZXM6IHRoaW4sIGxvbmcsIHdpZGUsIGFuZCB0cmVlLgogCi1CeSBkZWZhdWx0LCB0aGVzZSBjb21tYW5kcyB1c2UgdGhlIGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeS4gIEhvd2V2ZXIsIG9uZQotbWF5IGV4cGxpY2l0bHkgcHJvdmlkZSBhIGRpcmVjdG9yeSAocGF0aCkgdG8gdXNlLgorCSogVG8gaGlkZSBmaWxlcyAoZG9uJ3Qgd2FudCB0byBzZWUgdGhvc2UgeHl6fiBmaWxlcyBhbnltb3JlPykgc2VlCisJICB8bmV0cnctY3RybC1ofC4KIAotCQkJCQkJCSpuZXRydy1zdGFyc3RhcioKLVdoZW4gRXhwbG9yZSwgU2V4cGxvcmUsIEhleHBsb3JlLCBvciBWZXhwbG9yZSBhcmUgdXNlZCB3aXRoIGEgKiovZmlsZXBhdCwKLXN1Y2ggYXM6CisJKiBQcmVzcyBzIHRvIHNvcnQgZmlsZXMgYnkgbmFtZSwgdGltZSwgb3Igc2l6ZS4KKworU2VlIHxuZXRydy1icm93c2UtY21kc3wgZm9yIGFsbCB0aGUgdGhpbmdzIHlvdSBjYW4gZG8gd2l0aCBuZXRydyEKKworCitRVUlDSyBIRUxQCQkJCQkJKm5ldHJ3LXF1aWNraGVscCoge3t7MgorICAgICAgICAgICAgICAgICAgICAgICAoVXNlIGN0cmwtXSB0byBzZWxlY3QgYSB0b3BpYyl+CisJSW50cm8gdG8gQnJvd3NpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWludHJvLWJyb3dzZXwKKwkgIFF1aWNrIFJlZmVyZW5jZTogTWFwcy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctcXVpY2ttYXB8CisJICBRdWljayBSZWZlcmVuY2U6IENvbW1hbmRzLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWJyb3dzZS1jbWRzfAorCUhpZGluZworCSAgRWRpdCBoaWRpbmcgbGlzdC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1jdHJsLWh8CisJICBIaWRpbmcgRmlsZXMgb3IgRGlyZWN0b3JpZXMuLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWF8CisJICBIaWRpbmcvVW5oaWRpbmcgYnkgc3VmZml4Li4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LW1ofAorCSAgSGlkaW5nICBkb3QtZmlsZXMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1naHwKKwlMaXN0aW5nIFN0eWxlCisJICBTZWxlY3QgbGlzdGluZyBzdHlsZSAodGhpbi9sb25nL3dpZGUvdHJlZSkuLi4ufG5ldHJ3LWl8CisJICBBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGUuLi4uLi4uLi4uLi4uLi4uLi4ufGc6bmV0cndfbGlzdHN0eWxlfAorCSAgU2hlbGwgY29tbWFuZCB1c2VkIHRvIHBlcmZvcm0gbGlzdGluZy4uLi4uLi4uLnxnOm5ldHJ3X2xpc3RfY21kfAorCSAgUXVpY2sgZmlsZSBpbmZvLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1xZnwKKwlTb3J0ZWQgYnkKKwkgIFNlbGVjdCBzb3J0aW5nIHN0eWxlIChuYW1lL3RpbWUvc2l6ZSkuLi4uLi4uLi58bmV0cnctc3wKKwkgIEVkaXRpbmcgdGhlIHNvcnRpbmcgc2VxdWVuY2UuLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctU3wKKwkgIEFzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZS4uLi4uLi4uLi4uLi4uLi4uLi58ZzpuZXRyd19zb3J0X3NlcXVlbmNlfAorCSAgUmV2ZXJzZSBzb3J0aW5nIG9yZGVyLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1yfAorCisKKwkJCQkqbmV0cnctcXVpY2ttYXAqICpuZXRydy1xdWlja21hcHMqCitRVUlDSyBSRUZFUkVOQ0U6IE1BUFMJCQkJKm5ldHJ3LWJyb3dzZS1tYXBzKiB7e3syCiA+Ci0JOkV4cGxvcmUgKiovZmlsZW5hbWVfcGF0dGVybgorCSAgLS0tCQkJLS0tLS0tLS0tLS0tLS0tLS0JCQktLS0tCisJICBNYXAJCQlRdWljayBFeHBsYW5hdGlvbgkJCUxpbmsKKwkgIC0tLQkJCS0tLS0tLS0tLS0tLS0tLS0tCQkJLS0tLQorPAkgPEYxPglDYXVzZXMgTmV0cncgdG8gaXNzdWUgaGVscAorCSA8Y3I+CU5ldHJ3IHdpbGwgZW50ZXIgdGhlIGRpcmVjdG9yeSBvciByZWFkIHRoZSBmaWxlICAgICAgfG5ldHJ3LWNyfAorCSA8ZGVsPglOZXRydyB3aWxsIGF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBmaWxlL2RpcmVjdG9yeSAgICAgIHxuZXRydy1kZWx8CisJICAgLQlNYWtlcyBOZXRydyBnbyB1cCBvbmUgZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy0tfAorCSAgIGEJVG9nZ2xlcyBiZXR3ZWVuIG5vcm1hbCBkaXNwbGF5LCAgICAgICAgICAgICAgICAgICAgICB8bmV0cnctYXwKKwkJaGlkaW5nIChzdXBwcmVzcyBkaXNwbGF5IG9mIGZpbGVzIG1hdGNoaW5nIGc6bmV0cndfbGlzdF9oaWRlKQorCQlzaG93aW5nIChkaXNwbGF5IG9ubHkgZmlsZXMgd2hpY2ggbWF0Y2ggZzpuZXRyd19saXN0X2hpZGUpCisJICAgYwlNYWtlIGJyb3dzaW5nIGRpcmVjdG9yeSB0aGUgY3VycmVudCBkaXJlY3RvcnkgICAgICAgIHxuZXRydy1jfAorCSAgIGQJTWFrZSBhIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8bmV0cnctZHwKKwkgICBECUF0dGVtcHQgdG8gcmVtb3ZlIHRoZSBmaWxlKHMpL2RpcmVjdG9yeShpZXMpICAgICAgICAgfG5ldHJ3LUR8CisJICAgZ2IJR28gdG8gcHJldmlvdXMgYm9va21hcmtlZCBkaXJlY3RvcnkgICAgICAgICAgICAgICAgICB8bmV0cnctZ2J8CisJICAgZ2gJUXVpY2sgaGlkZS91bmhpZGUgb2YgZG90LWZpbGVzICAgICAgICAgICAgICAgICAgICAgICB8bmV0cnctZ2h8CisJICAgZ2kJRGlzcGxheSBpbmZvcm1hdGlvbiBvbiBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8bmV0cnctcWZ8CisJIDxjLWg+CUVkaXQgZmlsZSBoaWRpbmcgbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfG5ldHJ3LWN0cmwtaHwKKwkgICBpCUN5Y2xlIGJldHdlZW4gdGhpbiwgbG9uZywgd2lkZSwgYW5kIHRyZWUgbGlzdGluZ3MgICAgfG5ldHJ3LWl8CisJIDxjLWw+CUNhdXNlcyBOZXRydyB0byByZWZyZXNoIHRoZSBkaXJlY3RvcnkgbGlzdGluZyAgICAgfG5ldHJ3LWN0cmwtbHwKKwkgICBtYglCb29rbWFyayBjdXJyZW50IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tYnwKKwkgICBtYwlDb3B5IG1hcmtlZCBmaWxlcyB0byBtYXJrZWQtZmlsZSB0YXJnZXQgZGlyZWN0b3J5ICAgIHxuZXRydy1tY3wKKwkgICBtZAlBcHBseSBkaWZmIHRvIG1hcmtlZCBmaWxlcyAodXAgdG8gMykgICAgICAgICAgICAgICAgIHxuZXRydy1tZHwKKwkgICBtZQlQbGFjZSBtYXJrZWQgZmlsZXMgb24gYXJnIGxpc3QgYW5kIGVkaXQgdGhlbSAgICAgICAgIHxuZXRydy1tZXwKKwkgICBtZglNYXJrIGEgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tZnwKKwkgICBtaAlUb2dnbGUgbWFya2VkIGZpbGUgc3VmZmljZXMnIHByZXNlbmNlIG9uIGhpZGluZyBsaXN0IHxuZXRydy1taHwKKwkgICBtbQlNb3ZlIG1hcmtlZCBmaWxlcyB0byBtYXJrZWQtZmlsZSB0YXJnZXQgZGlyZWN0b3J5ICAgIHxuZXRydy1tbXwKKwkgICBtcAlQcmludCBtYXJrZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tcHwKKwkgICBtcglNYXJrIGZpbGVzIHNhdGlzZnlpbmcgYSB8cmVnZXhwfCAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tcnwKKwkgICBtdAlDdXJyZW50IGJyb3dzaW5nIGRpcmVjdG9yeSBiZWNvbWVzIG1hcmtmaWxlIHRhcmdldCAgIHxuZXRydy1tdHwKKwkgICBtVAlBcHBseSBjdGFncyB0byBtYXJrZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tVHwKKwkgICBtdQlVbm1hcmsgYWxsIG1hcmtlZCBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tdXwKKwkgICBteAlBcHBseSBhcmJpdHJhcnkgc2hlbGwgY29tbWFuZCB0byBtYXJrZWQgZmlsZXMgICAgICAgIHxuZXRydy1teHwKKwkgICBteglDb21wcmVzcy9kZWNvbXByZXNzIG1hcmtlZCBmaWxlcyAgICAgICAgICAgICAgICAgICAgIHxuZXRydy1tenwKKwkgICBvCUVudGVyIHRoZSBmaWxlL2RpcmVjdG9yeSB1bmRlciB0aGUgY3Vyc29yIGluIGEgbmV3ICAgfG5ldHJ3LW98CisJICAgCWJyb3dzZXIgd2luZG93LiAgQSBob3Jpem9udGFsIHNwbGl0IGlzIHVzZWQuCisJICAgTwlPYnRhaW4gYSBmaWxlIHNwZWNpZmllZCBieSBjdXJzb3IgICAgICAgICAgICAgICAgICAgIHxuZXRydy1PfAorCSAgIHAJUHJldmlldyB0aGUgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8bmV0cnctcHwKKwkgICBQCUJyb3dzZSBpbiB0aGUgcHJldmlvdXNseSB1c2VkIHdpbmRvdyAgICAgICAgICAgICAgICAgfG5ldHJ3LVB8CisJICAgcQlMaXN0IGJvb2ttYXJrZWQgZGlyZWN0b3JpZXMgYW5kIGhpc3RvcnkgICAgICAgICAgICAgIHxuZXRydy1xYnwKKwkgICByCVJldmVyc2Ugc29ydGluZyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfG5ldHJ3LXJ8CisJICAgUglSZW5hbWUgdGhlIGRlc2lnbmVkIGZpbGUocykvZGlyZWN0b3J5KGllcykgICAgICAgICAgIHxuZXRydy1SfAorCSAgIHMJU2VsZWN0IHNvcnRpbmcgc3R5bGU6IGJ5IG5hbWUsIHRpbWUsIG9yIGZpbGUgc2l6ZSAgICB8bmV0cnctc3wKKwkgICBTCVNwZWNpZnkgc3VmZml4IHByaW9yaXR5IGZvciBuYW1lLXNvcnRpbmcgICAgICAgICAgICAgfG5ldHJ3LVN8CisJICAgdAlFbnRlciB0aGUgZmlsZS9kaXJlY3RvcnkgdW5kZXIgdGhlIGN1cnNvciBpbiBhIG5ldyB0YWJ8bmV0cnctdHwKKwkgICB1CUNoYW5nZSB0byByZWNlbnRseS12aXNpdGVkIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgfG5ldHJ3LXV8CisJICAgVQlDaGFuZ2UgdG8gc3Vic2VxdWVudGx5LXZpc2l0ZWQgZGlyZWN0b3J5ICAgICAgICAgICAgIHxuZXRydy1VfAorCSAgIHYJRW50ZXIgdGhlIGZpbGUvZGlyZWN0b3J5IHVuZGVyIHRoZSBjdXJzb3IgaW4gYSBuZXcgICB8bmV0cnctdnwKKwkgICAJYnJvd3NlciB3aW5kb3cuICBBIHZlcnRpY2FsIHNwbGl0IGlzIHVzZWQuCisJICAgeAlWaWV3IGZpbGUgd2l0aCBhbiBhc3NvY2lhdGVkIHByb2dyYW0gICAgICAgICAgICAgICAgIHxuZXRydy14fAorCisJPGxlZnRtb3VzZT4JKGd2aW0gb25seSkgc2VsZWN0cyB3b3JkIHVuZGVyIG1vdXNlIGFzIGlmIGEgPGNyPgorCQkJaGFkIGJlZW4gcHJlc3NlZCAoaWUuIGVkaXQgZmlsZSwgY2hhbmdlIGRpcmVjdG9yeSkKKwk8bWlkZGxlbW91c2U+CShndmltIG9ubHkpIHNhbWUgYXMgUCBzZWxlY3Rpbmcgd29yZCB1bmRlciBtb3VzZTsKKwkJCXNlZSB8bmV0cnctUHwKKwk8cmlnaHRtb3VzZT4JKGd2aW0gb25seSkgZGVsZXRlIGZpbGUvZGlyZWN0b3J5IHVzaW5nIHdvcmQgdW5kZXIKKwkJCW1vdXNlCisJPDItbGVmdG1vdXNlPgkoZ3ZpbSBvbmx5KSB3aGVuOgorCSAgICAgICAgICAgICAgICAgKiBpbiBhIG5ldHJ3LXNlbGVjdGVkIGZpbGUsIEFORAorCQkgICAgICAgICAqIHxnOm5ldHJ3X3JldG1hcHwgPT0gMSAgICAgQU5ECisJCSAgICAgICAgICogdGhlIHVzZXIgZG9lc24ndCBhbHJlYWR5IGhhdmUgYSA8Mi1sZWZ0bW91c2U+IG1hcHBpbmcKKwkJCSAgIGRlZmluZWQgYmVmb3JlIG5ldHJ3IGlzIGF1dG9sb2FkZWQsCisJCQl0aGVuIGEgZG91YmxlIGNsaWNrZWQgbGVmdG1vdXNlIGJ1dHRvbiB3aWxsIHJldHVybgorCQkJdG8gdGhlIG5ldHJ3IGJyb3dzZXIgd2luZG93LgorCTxzLWxlZnRtb3VzZT4JKGd2aW0gb25seSkgbGlrZSBtZiwgd2lsbCBtYXJrIGZpbGVzCisKKwkJCQkqbmV0cnctcXVpY2tjb20qICpuZXRydy1xdWlja2NvbXMqCitRVUlDSyBSRUZFUkVOQ0U6IENPTU1BTkRTCSpuZXRydy1leHBsb3JlLWNtZHMqICpuZXRydy1icm93c2UtY21kcyoge3t7MgorICAgICA6TmV0cndDbGVhblshXSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNsZWFufAorICAgICA6TmV0cndTZXR0aW5ncyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXNldHRpbmdzfAorICAgICA6RXhwbG9yZVshXSAgW2Rpcl0gRXhwbG9yZSBkaXJlY3Rvcnkgb2YgY3VycmVudCBmaWxlLi4uLi4ufG5ldHJ3LWV4cGxvcmV8CisgICAgIDpIZXhwbG9yZVshXSBbZGlyXSBIb3Jpem9udGFsIFNwbGl0ICYgRXhwbG9yZS4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKKyAgICAgOk5leHBsb3JlWyFdIFtkaXJdIFZlcnRpY2FsIFNwbGl0ICYgRXhwbG9yZS4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAorICAgICA6UGV4cGxvcmVbIV0gW2Rpcl0gVmVydGljYWwgU3BsaXQgJiBFeHBsb3JlLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8CisgICAgIDpSZXhwbG9yZSAgICAgICAgICBSZXR1cm4gdG8gRXhwbG9yZXIuLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKKyAgICAgOlNleHBsb3JlWyFdIFtkaXJdIFNwbGl0ICYgRXhwbG9yZSBkaXJlY3RvcnkgLi4uLi4uLi4uLi4uLnxuZXRydy1leHBsb3JlfAorICAgICA6VGV4cGxvcmVbIV0gW2Rpcl0gVGFiICYgRXhwbG9yZS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWV4cGxvcmV8CisgICAgIDpWZXhwbG9yZVshXSBbZGlyXSBWZXJ0aWNhbCBTcGxpdCAmIEV4cGxvcmUuLi4uLi4uLi4uLi4uLi58bmV0cnctZXhwbG9yZXwKKworQk9PS01BUktJTkcgQSBESVJFQ1RPUlkJKm5ldHJ3LW1iKiAqbmV0cnctYm9va21hcmsqICpuZXRydy1ib29rbWFya3MqIHt7ezIKK09uZSBtYXkgZWFzaWx5ICJib29rbWFyayIgYSBkaXJlY3RvcnkgYnkgdXNpbmcgPgorCisJe2NudH1tYgogPAotbmV0cncgd2lsbCBhdHRlbXB0IHRvIGZpbmQgYSBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvciBhbnkgc3ViZGlyZWN0b3J5Ci13aGljaCBtYXRjaGVzIHRoZSBmaWxlbmFtZSBwYXR0ZXJuLiAgSW50ZXJuYWxseSwgaXQgcHJvZHVjZXMgYSBsaXN0IG9mIGZpbGVzCi13aGljaCBtYXRjaCB0aGUgcGF0dGVybiBhbmQgdGhlaXIgcGF0aHM7IHRvIHRoYXQgZXh0ZW50IGl0IHJlc2VtYmxlcyB0aGUgVW5peAotb3BlcmF0aW9uOgotPgotCWZpbmQgJChwd2QpIC1uYW1lICIkMSIgLWV4ZWMgImVjaG8iICJ7fSIgIjsiIDI+IC9kZXYvbnVsbAotPAotVGhlIGRpcmVjdG9yeSBkaXNwbGF5IGlzIHVwZGF0ZWQgdG8gc2hvdyB0aGUgc3ViZGlyZWN0b3J5IGNvbnRhaW5pbmcgYQotbWF0Y2hpbmcgZmlsZS4gIE9uZSBtYXkgdGhlbiBwcm9jZWVkIHRvIHRoZSBuZXh0IChvciBwcmV2aW91cykgbWF0Y2hpbmcgZmlsZXMnCi1kaXJlY3RvcmllcyBieSB1c2luZyBOZXhwbG9yZSBvciBQZXhwbG9yZSwgcmVzcGVjdGl2ZWx5LiAgSWYgeW91ciBjb25zb2xlIG9yCi1ndWkgcHJvZHVjZXMgcmVjb2duaXphYmxlIHNoaWZ0LXVwIG9yIHNoaWZ0LWRvd24gc2VxdWVuY2VzLCB0aGVuIHlvdSdsbCBsaWtlbHkKLWZpbmQgdXNpbmcgc2hpZnQtZG93bmFycm93IGFuZCBzaGlmdC11cGFycm93IGNvbnZlbmllbnQuICBUaGV5J3JlIG1hcHBlZCBieQotbmV0cnc6Ci0KLQk8cy1kb3duPiAgPT0gTmV4cGxvcmUsIGFuZAotCTxzLXVwPiAgICA9PSBQZXhwbG9yZS4KLQotQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIKLT4KLQk6RXhwbG9yZSAqKi8qLmMKLQk6TmV4cGxvcmUKLQk6TmV4cGxvcmUKLQk6UGV4cGxvcmUKLTwKLVRoZSBzdGF0dXMgbGluZSB3aWxsIHNob3csIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhlIHN0YXR1cyBsaW5lLCBhCi1tZXNzYWdlIGxpa2UgIk1hdGNoIDMgb2YgMjAiLgotCi0JCQkJCQkJKm5ldHJ3LXN0YXJwYXQqCi1XaGVuIEV4cGxvcmUsIFNleHBsb3JlLCBIZXhwbG9yZSwgb3IgVmV4cGxvcmUgYXJlIHVzZWQgd2l0aCBhICovcGF0dGVybiwKLXN1Y2ggYXM6Ci0+Ci0JOkV4cGxvcmUgKi9wYXR0ZXJuCi08Ci1uZXRydyB3aWxsIHVzZSB8OnZpbWdyZXB8IHRvIGZpbmQgZmlsZXMgd2hpY2ggY29udGFpbiB0aGUgZ2l2ZW4gcGF0dGVybi4KLUxpa2Ugd2hhdCBoYXBwZW5zIHdpdGggfG5ldHJ3LXN0YXJzdGFyfCwgYSBsaXN0IG9mIGZpbGVzIHdoaWNoIGNvbnRhaW4KLW1hdGNoZXMgdG8gdGhlIGdpdmVuIHBhdHRlcm4gaXMgZ2VuZXJhdGVkLiAgVGhlIGN1cnNvciB3aWxsIHRoZW4ganVtcAotdG8gdGhlIGZpcnN0IGZpbGUgd2l0aCB0aGUgZ2l2ZW4gcGF0dGVybjsgfDpOZXhwbG9yZXwsIHw6UGV4cGxvcmV8LCBhbmQKLXRoZSBzaGlmdGVkLWRvd24gYW5kIC11cCBhcnJvd3Mgd29yayB3aXRoIHRoZSBsaXN0IHRvIG1vdmUgdG8gdGhlIG5leHQKLW9yIHByZXZpb3VzIGZpbGVzIGluIHRoYXQgbGlzdC4KLQotCQkJCQkJKm5ldHJ3LXN0YXJzdGFycGF0KgotV2hlbiBFeHBsb3JlLCBTZXhwbG9yZSwgSGV4cGxvcmUsIG9yIFZleHBsb3JlIGFyZSB1c2VkIHdpdGggYSAqKi8vcGF0dGVybiwKLXN1Y2ggYXM6Ci0+Ci0JOkV4cGxvcmUgKiovL3BhdHRlcm4KLTwKLXRoZW4gRXhwbG9yZSB3aWxsIHVzZSB8OnZpbWdyZXB8IHRvIGZpbmQgZmlsZXMgbGlrZSB8bmV0cnctc3RhcnBhdHw7Ci1ob3dldmVyLCBFeHBsb3JlIHdpbGwgYWxzbyBzZWFyY2ggc3ViZGlyZWN0b3JpZXMgYXMgd2VsbCBhcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LgorQW55IGNvdW50IG1heSBiZSB1c2VkLiAgT25lIG1heSB1c2UgdmltaW5mbydzICIhIiBvcHRpb24gKHwndmltaW5mbyd8KSB0bworcmV0YWluIGJvb2ttYXJrcyBiZXR3ZWVuIHZpbSBzZXNzaW9ucy4gIFNlZSB8bmV0cnctZ2J8IGZvciBob3cgdG8gcmV0dXJuCit0byBhIGJvb2ttYXJrIGFuZCB8bmV0cnctcWJ8IGZvciBob3cgdG8gbGlzdCB0aGVtLgogCiAKLVJFRlJFU0hJTkcgVEhFIExJU1RJTkcJCQkJKm5ldHJ3LWN0cmwtbCogKm5ldHJ3LWN0cmxfbCoKLQotVG8gcmVmcmVzaCBlaXRoZXIgYSBsb2NhbCBvciByZW1vdGUgZGlyZWN0b3J5IGxpc3RpbmcsIHByZXNzIGN0cmwtbCAoPGMtbD4pIG9yCi1oaXQgdGhlIDxjcj4gd2hlbiBhdG9wIHRoZSAuLyBkaXJlY3RvcnkgZW50cnkgaW4gdGhlIGxpc3RpbmcuICBPbmUgbWF5IGFsc28KLXJlZnJlc2ggYSBsb2NhbCBkaXJlY3RvcnkgYnkgdXNpbmcgIjplIC4iLgotCi0KLUdPSU5HIFVQCQkJCQkJKm5ldHJ3LS0qCi0KLVRvIGdvIHVwIGEgZGlyZWN0b3J5LCBwcmVzcyAiLSIgb3IgcHJlc3MgdGhlIDxjcj4gd2hlbiBhdG9wIHRoZSAuLi8gZGlyZWN0b3J5Ci1lbnRyeSBpbiB0aGUgbGlzdGluZy4KLQotTmV0cncgd2lsbCB1c2UgdGhlIGNvbW1hbmQgaW4gfGc6bmV0cndfbGlzdF9jbWR8IHRvIHBlcmZvcm0gdGhlIGRpcmVjdG9yeQotbGlzdGluZyBvcGVyYXRpb24gYWZ0ZXIgY2hhbmdpbmcgSE9TVE5BTUUgdG8gdGhlIGhvc3Qgc3BlY2lmaWVkIGJ5IHRoZQotdXNlci1wcm92aWRlZCB1cmwuICBCeSBkZWZhdWx0IG5ldHJ3IHByb3ZpZGVzIHRoZSBjb21tYW5kIGFzOgotCi0Jc3NoIEhPU1ROQU1FIGxzIC1GTGEKLQotd2hlcmUgdGhlIEhPU1ROQU1FIGJlY29tZXMgdGhlIFt1c2VyQF1ob3N0bmFtZSBhcyByZXF1ZXN0ZWQgYnkgdGhlIGF0dGVtcHQgdG8KLXJlYWQuICBOYXR1cmFsbHksIHRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGlzIGNvbW1hbmQgd2l0aCB3aGF0ZXZlciBpcwotcHJlZmVycmVkLiAgVGhlIE5ldExpc3QgZnVuY3Rpb24gd2hpY2ggaW1wbGVtZW50cyByZW1vdGUgZGlyZWN0b3J5IGJyb3dzaW5nCi1leHBlY3RzIHRoYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBmbGFnZ2VkIGJ5IGEgdHJhaWxpbmcgc2xhc2guCi0KLQotQlJPV1NJTkcJCQkJCQkJKm5ldHJ3LWNyKgorQlJPV1NJTkcJCQkJCQkqbmV0cnctY3IqIHt7ezIKIAogQnJvd3NpbmcgaXMgc2ltcGxlOiBtb3ZlIHRoZSBjdXJzb3Igb250byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9mIGludGVyZXN0LgogSGl0dGluZyB0aGUgPGNyPiAodGhlIHJldHVybiBrZXkpIHdpbGwgc2VsZWN0IHRoZSBmaWxlIG9yIGRpcmVjdG9yeS4KIERpcmVjdG9yaWVzIHdpbGwgdGhlbXNlbHZlcyBiZSBsaXN0ZWQsIGFuZCBmaWxlcyB3aWxsIGJlIG9wZW5lZCB1c2luZyB0aGUKIHByb3RvY29sIGdpdmVuIGluIHRoZSBvcmlnaW5hbCByZWFkIHJlcXVlc3QuICAKIAotICBDQVZFQVQ6IFRoZXJlIGFyZSBmb3VyIGZvcm1zIG9mIGxpc3RpbmcgKHNlZSB8bmV0cnctaXwpLiAgTmV0cncgYXNzdW1lcwotICB0aGF0IHR3byBvciBtb3JlIHNwYWNlcyBkZWxpbWl0IGZpbGVuYW1lcyBhbmQgZGlyZWN0b3J5IG5hbWVzIGZvciB0aGUgbG9uZwotICBhbmQgd2lkZSBsaXN0aW5nIGZvcm1hdHMuICBUaHVzLCBpZiB5b3VyIGZpbGVuYW1lIG9yIGRpcmVjdG9yeSBuYW1lIGhhcyB0d28KLSAgb3IgbW9yZSBzcGFjZXMgZW1iZWRkZWQgaW4gaXQsIG9yIGFueSB0cmFpbGluZyBzcGFjZXMsIHRoZW4geW91J2xsIG5lZWQgdG8KLSAgdXNlIHRoZSAidGhpbiIgZm9ybWF0IHRvIHNlbGVjdCBpdC4KKyAgQ0FWRUFUOiBUaGVyZSBhcmUgZm91ciBmb3JtcyBvZiBsaXN0aW5nIChzZWUgfG5ldHJ3LWl8KS4gIE5ldHJ3IGFzc3VtZXMgdGhhdAorICB0d28gb3IgbW9yZSBzcGFjZXMgZGVsaW1pdCBmaWxlbmFtZXMgYW5kIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGxvbmcgYW5kCisgIHdpZGUgbGlzdGluZyBmb3JtYXRzLiAgVGh1cywgaWYgeW91ciBmaWxlbmFtZSBvciBkaXJlY3RvcnkgbmFtZSBoYXMgdHdvIG9yCisgIG1vcmUgc2VxdWVudGlhbCBzcGFjZXMgZW1iZWRkZWQgaW4gaXQsIG9yIGFueSB0cmFpbGluZyBzcGFjZXMsIHRoZW4geW91J2xsCisgIG5lZWQgdG8gdXNlIHRoZSAidGhpbiIgZm9ybWF0IHRvIHNlbGVjdCBpdC4KIAogVGhlIHxnOm5ldHJ3X2Jyb3dzZV9zcGxpdHwgb3B0aW9uLCB3aGljaCBpcyB6ZXJvIGJ5IGRlZmF1bHQsIG1heSBiZSB1c2VkIHRvCi1jYXVzZSB0aGUgb3BlbmluZyBvZiBmaWxlcyB0byBiZSBkb25lIGluIGEgbmV3IHdpbmRvdyBvciB0YWIuICBXaGVuIHRoZSBvcHRpb24KLWlzIG9uZSBvciB0d28sIHRoZSBzcGxpdHRpbmcgd2lsbCBiZSB0YWtlbiBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSwKLXJlc3BlY3RpdmVseS4gIFdoZW4gdGhlIG9wdGlvbiBpcyBzZXQgdG8gdGhyZWUsIGEgPGNyPiB3aWxsIGNhdXNlIHRoZSBmaWxlCi10byBhcHBlYXIgaW4gYSBuZXcgdGFiLgorY2F1c2UgdGhlIG9wZW5pbmcgb2YgZmlsZXMgdG8gYmUgZG9uZSBpbiBhIG5ldyB3aW5kb3cgb3IgdGFiIGluc3RlYWQgb2YgdGhlCitkZWZhdWx0LiAgV2hlbiB0aGUgb3B0aW9uIGlzIG9uZSBvciB0d28sIHRoZSBzcGxpdHRpbmcgd2lsbCBiZSB0YWtlbgoraG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHksIHJlc3BlY3RpdmVseS4gIFdoZW4gdGhlIG9wdGlvbiBpcyBzZXQgdG8gdGhyZWUsIGEKKzxjcj4gd2lsbCBjYXVzZSB0aGUgZmlsZSB0byBhcHBlYXIgaW4gYSBuZXcgdGFiLgogCiAKLU9CVEFJTklORyBBIEZJTEUJCQkJCQkqbmV0cnctTyoKK1doZW4gdXNpbmcgdGhlIGd1aSAoZ3ZpbSkgb25lIG1heSBzZWxlY3QgYSBmaWxlIGJ5IHByZXNzaW5nIHRoZSA8bGVmdG1vdXNlPgorYnV0dG9uLiAgSW4gYWRkdGlvbiwgaWYKIAotV2hlbiBicm93c2luZyBhIHJlbW90ZSBkaXJlY3RvcnksIG9uZSBtYXkgb2J0YWluIGEgZmlsZSB1bmRlciB0aGUgY3Vyc29yIChpZS4KLWdldCBhIGNvcHkgb24geW91ciBsb2NhbCBtYWNoaW5lLCBidXQgbm90IGVkaXQgaXQpIGJ5IHByZXNzaW5nIHRoZSBPIGtleS4KLU9ubHkgZnRwIGFuZCBzY3AgYXJlIHN1cHBvcnRlZCBmb3IgdGhpcyBvcGVyYXRpb24gKGJ1dCBzaW5jZSB0aGVzZSB0d28gYXJlCi1hdmFpbGFibGUgZm9yIGJyb3dzaW5nLCB0aGF0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0pLiAgVGhlIHN0YXR1cyBiYXIKLXdpbGwgdGhlbiBzaG93LCBvbiBpdHMgcmlnaHQgaGFuZCBzaWRlLCBhIG1lc3NhZ2UgbGlrZSAiT2J0YWluaW5nIGZpbGVuYW1lIi4KLVRoZSBzdGF0dXNsaW5lIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlLgorICp8ZzpuZXRyd19yZXRtYXB8ID09IDEgICAgICBBTkQgICAoaXRzIGRlZmF1bHQgdmFsdWUgaXMgMCkKKyAqIGluIGEgbmV0cnctc2VsZWN0ZWQgZmlsZSwgQU5ECisgKiB0aGUgdXNlciBkb2Vzbid0IGFscmVhZHkgaGF2ZSBhIDwyLWxlZnRtb3VzZT4gbWFwcGluZyBkZWZpbmVkIGJlZm9yZQorICAgbmV0cncgaXMgbG9hZGVkCiAKLU5ldHJ3IGNhbiBhbHNvICJvYnRhaW4iIGEgZmlsZSB1c2luZyB0aGUgbG9jYWwgYnJvd3Nlci4gIE5ldHJ3J3MgZGlzcGxheQotb2YgYSBkaXJlY3RvcnkgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIFZpbSdzICJjdXJyZW50IGRpcmVjdG9yeSIsCi11bmxlc3MgfGc6bmV0cndfa2VlcGRpcnwgaXMgc2V0IHRvIDAgaW4gdGhlIHVzZXIncyA8LnZpbXJjPi4gIE9uZSBtYXkgc2VsZWN0Ci1hIGZpbGUgdXNpbmcgdGhlIGxvY2FsIGJyb3dzZXIgKGJ5IHB1dHRpbmcgdGhlIGN1cnNvciBvbiBpdCkgYW5kIHByZXNzaW5nCi0iTyIgd2lsbCB0aGVuICJvYnRhaW4iIHRoZSBmaWxlOyBpZS4gY29weSBpdCB0byBWaW0ncyBjdXJyZW50IGRpcmVjdG9yeS4KK3RoZW4gYSBkb3VibHktY2xpY2tlZCBsZWZ0bW91c2UgYnV0dG9uIHdpbGwgcmV0dXJuIHRvIHRoZSBuZXRydyBicm93c2VyCit3aW5kb3cuCiAKLVJlbGF0ZWQgdG9waWNzOgotICogVG8gc2VlIHdoYXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzLCB1c2UgfDpwd2R8Ci0gKiBUbyBtYWtlIHRoZSBjdXJyZW50bHkgYnJvd3NlZCBkaXJlY3RvcnkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBzZWUgfG5ldHJ3LWN8Ci0gKiBUbyBhdXRvbWF0aWNhbGx5IG1ha2UgdGhlIGN1cnJlbnRseSBicm93c2VkIGRpcmVjdG9yeSB0aGUgY3VycmVudAotICAgZGlyZWN0b3J5LCBzZWUgfGc6bmV0cndfa2VlcGRpcnwuCitOZXRydyBhdHRlbXB0cyB0byBzcGVlZCB1cCBicm93c2luZywgZXNwZWNpYWxseSBmb3IgcmVtb3RlIGJyb3dzaW5nIHdoZXJlIG9uZQorbWF5IGhhdmUgdG8gZW50ZXIgcGFzc3dvcmRzLCBieSBrZWVwaW5nIGFuZCByZS11c2luZyBwcmV2aW91c2x5IG9idGFpbmVkCitkaXJlY3RvcnkgbGlzdGluZyBidWZmZXJzLiAgVGhlIHxnOm5ldHJ3X2Zhc3Ricm93c2V8IHZhcmlhYmxlIGlzIHVzZWQgdG8KK2NvbnRyb2wgdGhpcyBiZWhhdmlvcjsgb25lIG1heSBoYXZlIHNsb3cgYnJvd3NpbmcgKG5vIGJ1ZmZlciByZS11c2UpLCBtZWRpdW0KK3NwZWVkIGJyb3dzaW5nIChyZS11c2UgZGlyZWN0b3J5IGJ1ZmZlciBsaXN0aW5ncyBvbmx5IGZvciByZW1vdGUgZGlyZWN0b3JpZXMpLAorYW5kIGZhc3QgYnJvd3NpbmcgKHJlLXVzZSBkaXJlY3RvcnkgYnVmZmVyIGxpc3RpbmdzIGFzIG9mdGVuIGFzIHBvc3NpYmxlKS4KK1RoZSBwcmljZSBmb3Igc3VjaCByZS11c2UgaXMgdGhhdCB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgKHN1Y2ggYXMgbmV3IGZpbGVzCithcmUgaW50cm9kdWNlZCBpbnRvIGEgZGlyZWN0b3J5KSwgdGhlIGxpc3RpbmcgbWF5IGJlY29tZSBvdXQtb2YtZGF0ZS4gIE9uZSBtYXkKK2Fsd2F5cyByZWZyZXNoIGRpcmVjdG9yeSBsaXN0aW5nIGJ1ZmZlcnMgYnkgcHJlc3NpbmcgY3RybC1MIChzZWUKK3xuZXRydy1jdHJsLWx8KS4KIAogCi1DSEFOR0UgTElTVElORyBTVFlMRQkJCQkJCSpuZXRydy1pKgorUmVsYXRlZCB0b3BpY3M6IHxuZXRydy1vfCB8bmV0cnctcHwgfG5ldHJ3LVB8IHxuZXRydy10fCB8bmV0cnctdnwKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZXM6IHxnOm5ldHJ3X2Jyb3dzZV9zcGxpdHwgICAgICB8ZzpuZXRyd19mYXN0YnJvd3NlfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGc6bmV0cndfZnRwX2xpc3RfY21kfCB8ZzpuZXRyd19mdHBfc2l6ZWxpc3RfY21kfAorCQkJICAgICAgfGc6bmV0cndfZnRwX3RpbWVsaXN0X2NtZHwgIHxnOm5ldHJ3X3NzaF9jbWR8CisJCQkgICAgICB8ZzpuZXRyd19zc2hfYnJvd3NlX3JlamVjdHwgfGc6bmV0cndfdXNlX25vc3dmfAorCisKK0JST1dTSU5HIFdJVEggQSBIT1JJWk9OVEFMTFkgU1BMSVQgV0lORE9XCSpuZXRydy1vKiAqbmV0cnctaG9yaXoqIHt7ezIKKworTm9ybWFsbHkgb25lIGVudGVycyBhIGZpbGUgb3IgZGlyZWN0b3J5IHVzaW5nIHRoZSA8Y3I+LiAgSG93ZXZlciwgdGhlICJvIiBtYXAKK2FsbG93cyBvbmUgdG8gb3BlbiBhIG5ldyB3aW5kb3cgdG8gaG9sZCB0aGUgbmV3IGRpcmVjdG9yeSBsaXN0aW5nIG9yIGZpbGUuICBBCitob3Jpem9udGFsIHNwbGl0IGlzIHVzZWQuICAoZm9yIHZlcnRpY2FsIHNwbGl0dGluZywgc2VlIHxuZXRydy12fCkKKworTm9ybWFsbHksIHRoZSBvIGtleSBzcGxpdHMgdGhlIHdpbmRvdyBob3Jpem9udGFsbHkgd2l0aCB0aGUgbmV3IHdpbmRvdyBhbmQKK2N1cnNvciBhdCB0aGUgdG9wLiAgVG8gY2hhbmdlIHRvIHNwbGl0dGluZyB0aGUgd2luZG93IGhvcml6b250YWxseSB3aXRoIHRoZQorbmV3IHdpbmRvdyBhbmQgY3Vyc29yIGF0IHRoZSBib3R0b20sIGhhdmUKKworCWxldCBnOm5ldHJ3X2FsdG8gPSAxCisKK2luIHlvdXIgPC52aW1yYz4uICAoYWxzbyBzZWUgfG5ldHJ3LXR8IHxuZXRydy12fCkKKworVGhlcmUgaXMgb25seSBvbmUgdHJlZSBsaXN0aW5nIGJ1ZmZlcjsgdXNpbmcgIm8iIG9uIGEgZGlzcGxheWVkIHN1YmRpcmVjdG9yeSAKK3dpbGwgc3BsaXQgdGhlIHNjcmVlbiwgYnV0IHRoZSBzYW1lIGJ1ZmZlciB3aWxsIGJlIHNob3duIHR3aWNlLgorCitBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGVzOiB8ZzpuZXRyd19hbHRvfCB8ZzpuZXRyd193aW5zaXplfAorCisKK0JST1dTSU5HIFdJVEggQSBORVcgVEFCCQkJCSpuZXRydy10KiB7e3syCisKK05vcm1hbGx5IG9uZSBlbnRlcnMgYSBmaWxlIG9yIGRpcmVjdG9yeSB1c2luZyB0aGUgPGNyPi4gIFRoZSAidCIgbWFwCithbGxvd3Mgb25lIHRvIG9wZW4gYSBuZXcgd2luZG93IGhvbGQgdGhlIG5ldyBkaXJlY3RvcnkgbGlzdGluZyBvciBmaWxlIGluIGEKK25ldyB0YWIuIChhbHNvIHNlZTogfG5ldHJ3LW98IHxuZXRydy12fCkKKworCitCUk9XU0lORyBXSVRIIEEgVkVSVElDQUxMWSBTUExJVCBXSU5ET1cJCQkqbmV0cnctdioge3t7MgorCitOb3JtYWxseSBvbmUgZW50ZXJzIGEgZmlsZSBvciBkaXJlY3RvcnkgdXNpbmcgdGhlIDxjcj4uICBIb3dldmVyLCB0aGUgInYiIG1hcAorYWxsb3dzIG9uZSB0byBvcGVuIGEgbmV3IHdpbmRvdyB0byBob2xkIHRoZSBuZXcgZGlyZWN0b3J5IGxpc3Rpbmcgb3IgZmlsZS4gIEEKK3ZlcnRpY2FsIHNwbGl0IGlzIHVzZWQuICAoZm9yIGhvcml6b250YWwgc3BsaXR0aW5nLCBzZWUgfG5ldHJ3LW98KQorCitOb3JtYWxseSwgdGhlIHYga2V5IHNwbGl0cyB0aGUgd2luZG93IHZlcnRpY2FsbHkgd2l0aCB0aGUgbmV3IHdpbmRvdyBhbmQKK2N1cnNvciBhdCB0aGUgbGVmdC4gIFRvIGNoYW5nZSB0byBzcGxpdHRpbmcgdGhlIHdpbmRvdyB2ZXJ0aWNhbGx5IHdpdGggdGhlIG5ldword2luZG93IGFuZCBjdXJzb3IgYXQgdGhlIHJpZ2h0LCBoYXZlCisKKwlsZXQgZzpuZXRyd19hbHR2ID0gMQorCitpbiB5b3VyIDwudmltcmM+LiAgKGFsc28gc2VlOiB8bmV0cnctb3wgfG5ldHJ3LXR8KQorCitUaGVyZSBpcyBvbmx5IG9uZSB0cmVlIGxpc3RpbmcgYnVmZmVyOyB1c2luZyAidiIgb24gYSBkaXNwbGF5ZWQgc3ViZGlyZWN0b3J5IAord2lsbCBzcGxpdCB0aGUgc2NyZWVuLCBidXQgdGhlIHNhbWUgYnVmZmVyIHdpbGwgYmUgc2hvd24gdHdpY2UuCisKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZTogfGc6bmV0cndfYWx0dnwgfGc6bmV0cndfd2luc2l6ZXwKKworQ0hBTkdFIExJU1RJTkcgU1RZTEUJCQkJCSpuZXRydy1pKiB7e3syCiAKIFRoZSAiaSIgbWFwIGN5Y2xlcyBiZXR3ZWVuIHRoZSB0aGluLCBsb25nLCB3aWRlLCBhbmQgdHJlZSBsaXN0aW5nIGZvcm1hdHMuCiAKQEAgLTExNjgsMjAxICsxMDc5LDUwIEBACiBoZW5jZSwgdXNpbmcgInYiIG9yICJvIiBvbiBhIHN1YmRpcmVjdG9yeSB3aWxsIG9ubHkgc2hvdyB0aGUgc2FtZSBidWZmZXIsCiB0d2ljZS4KIAotCi1NQUtJTkcgQSBORVcgRElSRUNUT1JZCQkJCQkJKm5ldHJ3LWQqCi0KLVdpdGggdGhlICJkIiBtYXAgb25lIG1heSBtYWtlIGEgbmV3IGRpcmVjdG9yeSBlaXRoZXIgcmVtb3RlbHkgKHdoaWNoIGRlcGVuZHMKLW9uIHRoZSBnbG9iYWwgdmFyaWFibGUgZzpuZXRyd19ta2Rpcl9jbWQpIG9yIGxvY2FsbHkgKHdoaWNoIGRlcGVuZHMgb24gdGhlCi1nbG9iYWwgdmFyaWFibGUgZzpuZXRyd19sb2NhbF9ta2RpcikuICBOZXRydyB3aWxsIGlzc3VlIGEgcmVxdWVzdCBmb3IgdGhlIG5ldwotZGlyZWN0b3J5J3MgbmFtZS4gIEEgYmFyZSA8Q1I+IGF0IHRoYXQgcG9pbnQgd2lsbCBhYm9ydCB0aGUgbWFraW5nIG9mIHRoZQotZGlyZWN0b3J5LiAgQXR0ZW1wdHMgdG8gbWFrZSBhIGxvY2FsIGRpcmVjdG9yeSB0aGF0IGFscmVhZHkgZXhpc3RzIChhcyBlaXRoZXIKLWEgZmlsZSBvciBhIGRpcmVjdG9yeSkgd2lsbCBiZSBkZXRlY3RlZCwgcmVwb3J0ZWQgb24sIGFuZCBpZ25vcmVkLgorQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlczogfGc6bmV0cndfbGlzdHN0eWxlfCB8ZzpuZXRyd19tYXhmaWxlbmFtZWxlbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxnOm5ldHJ3X3RpbWVmbXR8ICAgfGc6bmV0cndfbGlzdF9jbWR8CiAKIAotREVMRVRJTkcgRklMRVMgT1IgRElSRUNUT1JJRVMJCSpuZXRydy1kZWxldGUqICpuZXRydy1EKiAqbmV0cnctZGVsKgorQ0hBTkdJTkcgVE8gQSBCT09LTUFSS0VEIERJUkVDVE9SWQkJCSpuZXRydy1nYiogIHt7ezIKIAotRGVsZXRpbmcvcmVtb3ZpbmcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGludm9sdmVzIG1vdmluZyB0aGUgY3Vyc29yIHRvIHRoZQotZmlsZS9kaXJlY3RvcnkgdG8gYmUgZGVsZXRlZCBhbmQgcHJlc3NpbmcgIkQiLiAgRGlyZWN0b3JpZXMgbXVzdCBiZSBlbXB0eQotZmlyc3QgYmVmb3JlIHRoZXkgY2FuIGJlIHN1Y2Nlc3NmdWxseSByZW1vdmVkLiAgSWYgdGhlIGRpcmVjdG9yeSBpcyBhIHNvZnRsaW5rCi10byBhIGRpcmVjdG9yeSwgdGhlbiBuZXRydyB3aWxsIG1ha2UgdHdvIHJlcXVlc3RzIHRvIHJlbW92ZSB0aGUgZGlyZWN0b3J5Ci1iZWZvcmUgc3VjY2VlZGluZy4gIE5ldHJ3IHdpbGwgYXNrIGZvciBjb25maXJtYXRpb24gYmVmb3JlIGRvaW5nIHRoZQotcmVtb3ZhbChzKS4gIFlvdSBtYXkgc2VsZWN0IGEgcmFuZ2Ugb2YgbGluZXMgd2l0aCB0aGUgIlYiIGNvbW1hbmQgKHZpc3VhbAotc2VsZWN0aW9uKSwgYW5kIHRoZW4gcHJlc3NpbmcgIkQiLgorVG8gY2hhbmdlIGRpcmVjdG9yeSBiYWNrIHRvIGEgYm9va21hcmtlZCBkaXJlY3RvcnksIHVzZQogCi1UaGUgZzpuZXRyd19ybV9jbWQsIGc6bmV0cndfcm1mX2NtZCwgYW5kIGc6bmV0cndfcm1kaXJfY21kIHZhcmlhYmxlcyBhcmUgdXNlZAotdG8gY29udHJvbCB0aGUgYXR0ZW1wdHMgdG8gcmVtb3ZlIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gIFRoZSBnOm5ldHJ3X3JtX2NtZAotaXMgdXNlZCB3aXRoIGZpbGVzLCBhbmQgaXRzIGRlZmF1bHQgdmFsdWUgaXM6CisJe2NudH1nYgogCi0JZzpuZXRyd19ybV9jbWQ6IHNzaCBIT1NUTkFNRSBybQotCi1UaGUgZzpuZXRyd19ybWRpcl9jbWQgdmFyaWFibGUgaXMgdXNlZCB0byBzdXBwb3J0IHRoZSByZW1vdmFsIG9mIGRpcmVjdG9yaWVzLgotSXRzIGRlZmF1bHQgdmFsdWUgaXM6Ci0KLQlnOm5ldHJ3X3JtZGlyX2NtZDogc3NoIEhPU1ROQU1FIHJtZGlyCi0KLUlmIHJlbW92aW5nIGEgZGlyZWN0b3J5IGZhaWxzIHdpdGggZzpuZXRyd19ybWRpcl9jbWQsIG5ldHJ3IHRoZW4gd2lsbCBhdHRlbXB0Ci10byByZW1vdmUgaXQgYWdhaW4gdXNpbmcgdGhlIGc6bmV0cndfcm1mX2NtZCB2YXJpYWJsZS4gIEl0cyBkZWZhdWx0IHZhbHVlIGlzOgotCi0JZzpuZXRyd19ybWZfY21kOiBzc2ggSE9TVE5BTUUgcm0gLWYKK0FueSBjb3VudCBtYXkgYmUgdXNlZCB0byByZWZlcmVuY2UgYW55IG9mIHRoZSBib29rbWFya3MuICBTZWUgfG5ldHJ3LW1ifCBvbgoraG93IHRvIGJvb2ttYXJrIGEgZGlyZWN0b3J5IGFuZCB8bmV0cnctcWJ8IG9uIGhvdyB0byBsaXN0IGJvb2ttYXJrcy4KIAogCi1SRU5BTUlORyBGSUxFUyBPUiBESVJFQ1RPUklFUwkJKm5ldHJ3LW1vdmUqICpuZXRydy1yZW5hbWUqICpuZXRydy1SKgotCi1SZW5hbWluZy9tb3ZpbmcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGludm9sdmVzIG1vdmluZyB0aGUgY3Vyc29yIHRvIHRoZQotZmlsZS9kaXJlY3RvcnkgdG8gYmUgbW92ZWQgKHJlbmFtZWQpIGFuZCBwcmVzc2luZyAiUiIuICBZb3Ugd2lsbCB0aGVuIGJlCi1xdWVyaWVkIGZvciB3aGVyZSB5b3Ugd2FudCB0aGUgZmlsZS9kaXJlY3RvcnkgdG8gYmUgbW92ZWQuICBZb3UgbWF5IHNlbGVjdCBhCi1yYW5nZSBvZiBsaW5lcyB3aXRoIHRoZSAiViIgY29tbWFuZCAodmlzdWFsIHNlbGVjdGlvbiksIGFuZCB0aGVuIHByZXNzaW5nICJSIi4KLQotVGhlIGc6bmV0cndfcmVuYW1lX2NtZCB2YXJpYWJsZSBpcyB1c2VkIHRvIGltcGxlbWVudCByZW5hbWluZy4gIEJ5IGRlZmF1bHQgaXRzCi12YWx1ZSBpczoKLQotCXNzaCBIT1NUTkFNRSBtdgotCi1PbmUgbWF5IHJlbmFtZSBhIGJsb2NrIG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBieSBzZWxlY3RpbmcgdGhlbSB3aXRoCi10aGUgViAofGxpbmV3aXNlLXZpc3VhbHwpLgotCi0KLUhJRElORyBGSUxFUyBPUiBESVJFQ1RPUklFUwkJCSpuZXRydy1hKiAqbmV0cnctaGlkaW5nKgotCi1OZXRydydzIGJyb3dzaW5nIGZhY2lsaXR5IGFsbG93cyBvbmUgdG8gdXNlIHRoZSBoaWRpbmcgbGlzdCBpbiBvbmUgb2YgdGhyZWUKLXdheXM6IGlnbm9yZSBpdCwgaGlkZSBmaWxlcyB3aGljaCBtYXRjaCwgYW5kIHNob3cgb25seSB0aG9zZSBmaWxlcyB3aGljaAotbWF0Y2guICBUaGUgImEiIG1hcCBhbGxvd3MgdGhlIHVzZXIgdG8gY3ljbGUgYWJvdXQgdGhlc2UgdGhyZWUgd2F5cy4KLQotVGhlIGc6bmV0cndfbGlzdF9oaWRlIHZhcmlhYmxlIGhvbGRzIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgcGF0dGVybnMgKGV4LgotXC5vYmopIHdoaWNoIHNwZWNpZnkgdGhlIGhpZGluZyBsaXN0LiAoYWxzbyBzZWUgfG5ldHJ3LWN0cmwtaHwpICBUbyBzZXQgdGhlCi1oaWRpbmcgbGlzdCwgdXNlIHRoZSA8Yy1oPiBtYXAuICBBcyBhbiBleGFtcGxlLCB0byBoaWRlIGZpbGVzIHdoaWNoIGJlZ2luIHdpdGgKLWEgIi4iLCBvbmUgbWF5IHVzZSB0aGUgPGMtaD4gbWFwIHRvIHNldCB0aGUgaGlkaW5nIGxpc3QgdG8gJ15cLi4qJyAob3Igb25lIG1heQotcHV0IGxldCBnOm5ldHJ3X2xpc3RfaGlkZT0gJ15cLi4qJyBpbiBvbmUncyA8LnZpbXJjPikuICBPbmUgbWF5IHRoZW4gdXNlIHRoZQotImEiIGtleSB0byBzaG93IGFsbCBmaWxlcywgaGlkZSBtYXRjaGluZyBmaWxlcywgb3IgdG8gc2hvdyBvbmx5IHRoZSBtYXRjaGluZwotZmlsZXMuCi0KLQlFeGFtcGxlOiBeLipcLltjaF0KLQkJVGhpcyBoaWRpbmcgbGlzdCBjb21tYW5kIHdpbGwgaGlkZS9zaG93IGFsbCAqLmMgYW5kICouaCBmaWxlcy4KLQotCUV4YW1wbGU6IF4uKlwuYyxeLipcLmgKLQkJVGhpcyBoaWRpbmcgbGlzdCBjb21tYW5kIHdpbGwgYWxzbyBoaWRlL3Nob3cgYWxsICouYyBhbmQgKi5oCi0JCWZpbGVzLgotCi1Eb24ndCBmb3JnZXQgdG8gdXNlIHRoZSAiYSIgbWFwIHRvIHNlbGVjdCB0aGUgbm9ybWFsL2hpZGluZy9zaG93IG1vZGUgeW91IHdhbnQhCi0KLQkJCQkJCSpuZXRydy1jdHJsX2gqCi1FRElUIEZJTEUgT1IgRElSRUNUT1JZIEhJRElORyBMSVNUCQkqbmV0cnctY3RybC1oKiAqbmV0cnctZWRpdGhpZGUqCi0KLVRoZSAiPGN0cmwtaD4iIG1hcCBicmluZ3MgdXAgYSByZXF1ZXN0b3IgYWxsb3dpbmcgdGhlIHVzZXIgdG8gY2hhbmdlIHRoZQotZmlsZS9kaXJlY3RvcnkgaGlkaW5nIGxpc3QuICBUaGUgaGlkaW5nIGxpc3QgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgcGF0dGVybnMKLWRlbGltaXRlZCBieSBjb21tYXMuICBGaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgc2F0aXNmeWluZyB0aGVzZSBwYXR0ZXJucyB3aWxsCi1laXRoZXIgYmUgaGlkZGVuIChpZS4gbm90IHNob3duKSBvciBiZSB0aGUgb25seSBvbmVzIGRpc3BsYXllZCAoc2VlCi18bmV0cnctYXwpLgotCi0KLUJST1dTSU5HIFdJVEggQSBIT1JJWk9OVEFMTFkgU1BMSVQgV0lORE9XCQkqbmV0cnctbyogKm5ldHJ3LWhvcml6KgotCi1Ob3JtYWxseSBvbmUgZW50ZXJzIGEgZmlsZSBvciBkaXJlY3RvcnkgdXNpbmcgdGhlIDxjcj4uICBIb3dldmVyLCB0aGUgIm8iIG1hcAotYWxsb3dzIG9uZSB0byBvcGVuIGEgbmV3IHdpbmRvdyB0byBob2xkIHRoZSBuZXcgZGlyZWN0b3J5IGxpc3Rpbmcgb3IgZmlsZS4gIEEKLWhvcml6b250YWwgc3BsaXQgaXMgdXNlZC4gIChmb3IgdmVydGljYWwgc3BsaXR0aW5nLCBzZWUgfG5ldHJ3LXZ8KQotCi1Ob3JtYWxseSwgdGhlIG8ga2V5IHNwbGl0cyB0aGUgd2luZG93IGhvcml6b250YWxseSB3aXRoIHRoZSBuZXcgd2luZG93IGFuZAotY3Vyc29yIGF0IHRoZSB0b3AuICBUbyBjaGFuZ2UgdG8gc3BsaXR0aW5nIHRoZSB3aW5kb3cgaG9yaXpvbnRhbGx5IHdpdGggdGhlCi1uZXcgd2luZG93IGFuZCBjdXJzb3IgYXQgdGhlIGJvdHRvbSwgaGF2ZQotCi0JbGV0IGc6bmV0cndfYWx0byA9IDEKLQotaW4geW91ciA8LnZpbXJjPi4gIChhbHNvIHNlZSB8bmV0cnctdHwgfG5ldHJ3LXZ8IHxnOm5ldHJ3X2FsdG98KQotCi1UaGVyZSBpcyBvbmx5IG9uZSB0cmVlIGxpc3RpbmcgYnVmZmVyOyB1c2luZyAibyIgb24gYSBkaXNwbGF5ZWQgc3ViZGlyZWN0b3J5IAotd2lsbCBzcGxpdCB0aGUgc2NyZWVuLCBidXQgdGhlIHNhbWUgYnVmZmVyIHdpbGwgYmUgc2hvd24gdHdpY2UuCi0KLQotQlJPV1NJTkcgV0lUSCBBIFZFUlRJQ0FMTFkgU1BMSVQgV0lORE9XCQkJCSpuZXRydy12KgotCi1Ob3JtYWxseSBvbmUgZW50ZXJzIGEgZmlsZSBvciBkaXJlY3RvcnkgdXNpbmcgdGhlIDxjcj4uICBIb3dldmVyLCB0aGUgInYiIG1hcAotYWxsb3dzIG9uZSB0byBvcGVuIGEgbmV3IHdpbmRvdyB0byBob2xkIHRoZSBuZXcgZGlyZWN0b3J5IGxpc3Rpbmcgb3IgZmlsZS4gIEEKLXZlcnRpY2FsIHNwbGl0IGlzIHVzZWQuICAoZm9yIGhvcml6b250YWwgc3BsaXR0aW5nLCBzZWUgfG5ldHJ3LW98KQotCi1Ob3JtYWxseSwgdGhlIHYga2V5IHNwbGl0cyB0aGUgd2luZG93IHZlcnRpY2FsbHkgd2l0aCB0aGUgbmV3IHdpbmRvdyBhbmQKLWN1cnNvciBhdCB0aGUgbGVmdC4gIFRvIGNoYW5nZSB0byBzcGxpdHRpbmcgdGhlIHdpbmRvdyB2ZXJ0aWNhbGx5IHdpdGggdGhlIG5ldwotd2luZG93IGFuZCBjdXJzb3IgYXQgdGhlIHJpZ2h0LCBoYXZlCi0KLQlsZXQgZzpuZXRyd19hbHR2ID0gMQotCi1pbiB5b3VyIDwudmltcmM+LiAgKGFsc28gc2VlOiB8bmV0cnctb3wgfG5ldHJ3LXR8IHxnOm5ldHJ3X2FsdHZ8KQotCi1UaGVyZSBpcyBvbmx5IG9uZSB0cmVlIGxpc3RpbmcgYnVmZmVyOyB1c2luZyAidiIgb24gYSBkaXNwbGF5ZWQgc3ViZGlyZWN0b3J5IAotd2lsbCBzcGxpdCB0aGUgc2NyZWVuLCBidXQgdGhlIHNhbWUgYnVmZmVyIHdpbGwgYmUgc2hvd24gdHdpY2UuCi0KLQotQlJPV1NJTkcgV0lUSCBBIE5FVyBUQUIJCQkJCSpuZXRydy10KgotCi1Ob3JtYWxseSBvbmUgZW50ZXJzIGEgZmlsZSBvciBkaXJlY3RvcnkgdXNpbmcgdGhlIDxjcj4uICBUaGUgInQiIG1hcAotYWxsb3dzIG9uZSB0byBvcGVuIGEgbmV3IHdpbmRvdyBob2xkIHRoZSBuZXcgZGlyZWN0b3J5IGxpc3Rpbmcgb3IgZmlsZSBpbiBhCi1uZXcgdGFiLiAoYWxzbyBzZWU6IHxuZXRydy1vfCB8bmV0cnctdnwpCi0KLQotUFJFVklFVyBXSU5ET1cJCQkJCSpuZXRydy1wKiAqbmV0cnctcHJldmlldyoKLQotT25lIG1heSB1c2UgYSBwcmV2aWV3IHdpbmRvdyBieSB1c2luZyB0aGUgInAiIGtleSB3aGVuIHRoZSBjdXJzb3IgaXMgYXRvcCB0aGUKLWRlc2lyZWQgZmlsZW5hbWUgdG8gYmUgcHJldmlld2VkLgotCi0KLVBSRVZJT1VTIFdJTkRPVwkJCQkJKm5ldHJ3LVAqICpuZXRydy1wcnZ3aW4qCi0KLVRvIGVkaXQgYSBmaWxlIG9yIGRpcmVjdG9yeSBpbiB0aGUgcHJldmlvdXNseSB1c2VkIHdpbmRvdyAoc2VlIDpoZSB8Q1RSTC1XX1B8KSwKLXByZXNzIGEgIlAiLiAgSWYgdGhlcmUncyBvbmx5IG9uZSB3aW5kb3csIHRoZW4gdGhlIG9uZSB3aW5kb3cgd2lsbCBiZQotaG9yaXpvbnRhbGx5IHNwbGl0IChhYm92ZS9iZWxvdyBzcGxpdHRpbmcgaXMgY29udHJvbGxlZCBieSB8ZzpuZXRyd19hbHRvfCwKLWFuZCBpdHMgaW5pdGlhbCBzaXplIGlzIGNvbnRyb2xsZWQgYnkgfGc6bmV0cndfd2luc2l6ZXwpLgotCi1JZiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgd2luZG93LCB0aGUgcHJldmlvdXMgd2luZG93IHdpbGwgYmUgcmUtdXNlZCBvbgotdGhlIHNlbGVjdGVkIGZpbGUvZGlyZWN0b3J5LiAgSWYgdGhlIHByZXZpb3VzIHdpbmRvdydzIGFzc29jaWF0ZWQgYnVmZmVyCi1oYXMgYmVlbiBtb2RpZmllZCwgYW5kIHRoZXJlJ3Mgb25seSBvbmUgd2luZG93IHdpdGggdGhhdCBidWZmZXIsIHRoZW4KLXRoZSB1c2VyIHdpbGwgYmUgYXNrZWQgaWYgcy9oZSB3aXNoZXMgdG8gc2F2ZSB0aGUgYnVmZmVyIGZpcnN0ICh5ZXMsCi1ubywgb3IgY2FuY2VsKS4KLQotCi1TRUxFQ1RJTkcgU09SVElORyBTVFlMRQkJCQkqbmV0cnctcyogKm5ldHJ3LXNvcnQqCi0KLU9uZSBtYXkgc2VsZWN0IHRoZSBzb3J0aW5nIHN0eWxlIGJ5IG5hbWUsIHRpbWUsIG9yIChmaWxlKSBzaXplLiAgVGhlICJzIiBtYXAKLWFsbG93cyBvbmUgdG8gY2lyY3VsYXRlIGFtb25nc3QgdGhlIHRocmVlIGNob2ljZXM7IHRoZSBkaXJlY3RvcnkgbGlzdGluZyB3aWxsCi1hdXRvbWF0aWNhbGx5IGJlIHJlZnJlc2hlZCB0byByZWZsZWN0IHRoZSBzZWxlY3RlZCBzdHlsZS4KLQotCi1FRElUSU5HIFRIRSBTT1JUSU5HIFNFUVVFTkNFCQkqbmV0cnctUyogKm5ldHJ3LXNvcnRzZXF1ZW5jZSoKLQotV2hlbiAiU29ydGVkIGJ5IiBpcyBuYW1lLCBvbmUgbWF5IHNwZWNpZnkgcHJpb3JpdHkgdmlhIHRoZSBzb3J0aW5nIHNlcXVlbmNlCi0oZzpuZXRyd19zb3J0X3NlcXVlbmNlKS4gIFRoZSBzb3J0aW5nIHNlcXVlbmNlIHR5cGljYWxseSBwcmlvcml0aXplcyB0aGUKLW5hbWUtbGlzdGluZyBieSBzdWZmaXgsIGFsdGhvdWdoIGFueSBwYXR0ZXJuIHdpbGwgZG8uICBQYXR0ZXJucyBhcmUgZGVsaW1pdGVkCi1ieSBjb21tYXMuICBUaGUgZGVmYXVsdCBzb3J0aW5nIHNlcXVlbmNlIGlzOgotPgotCVtcL10kLCosXC5iYWskLFwubyQsXC5oJCxcLmluZm8kLFwuc3dwJCxcLm9iaiQKLTwKLVRoZSBsb25lICogaXMgd2hlcmUgYWxsIGZpbGVuYW1lcyBub3QgY292ZXJlZCBieSBvbmUgb2YgdGhlIG90aGVyIHBhdHRlcm5zCi13aWxsIGVuZCB1cC4gIE9uZSBtYXkgY2hhbmdlIHRoZSBzb3J0aW5nIHNlcXVlbmNlIGJ5IG1vZGlmeWluZyB0aGUKLWc6bmV0cndfc29ydF9zZXF1ZW5jZSB2YXJpYWJsZSAoZWl0aGVyIG1hbnVhbGx5IG9yIGluIHlvdXIgPC52aW1yYz4pIG9yIGJ5Ci11c2luZyB0aGUgIlMiIG1hcC4KLQotCi1SRVZFUlNJTkcgU09SVElORyBPUkRFUgkJCSpuZXRydy1yKiAqbmV0cnctcmV2ZXJzZSoKLQotT25lIG1heSB0b2dnbGUgYmV0d2VlbiBub3JtYWwgYW5kIHJldmVyc2Ugc29ydGluZyBvcmRlciBieSBwcmVzc2luZyB0aGUKLSJyIiBrZXkuCi0KLQotQ0hBTkdJTkcgVE8gQSBQUkVERUNFU1NPUiBESVJFQ1RPUlkJCSpuZXRydy11KiAqbmV0cnctdXBkaXIqCitDSEFOR0lORyBUTyBBIFBSRURFQ0VTU09SIERJUkVDVE9SWQkqbmV0cnctdSogKm5ldHJ3LXVwZGlyKiB7e3syCiAKIEV2ZXJ5IHRpbWUgeW91IGNoYW5nZSB0byBhIG5ldyBkaXJlY3RvcnkgKG5ldyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbiksCiBuZXRydyB3aWxsIHNhdmUgdGhlIGRpcmVjdG9yeSBpbiBhIHJlY2VudGx5LXZpc2l0ZWQgZGlyZWN0b3J5IGhpc3RvcnkKLWxpc3QgKHVubGVzcyBnOm5ldHJ3X2Rpcmhpc3RtYXggaXMgemVybzsgYnkgZGVmYXVsdCwgaXRzIHRlbikuICBXaXRoIHRoZQorbGlzdCAodW5sZXNzIGc6bmV0cndfZGlyaGlzdG1heCBpcyB6ZXJvOyBieSBkZWZhdWx0LCBpdCdzIHRlbikuICBXaXRoIHRoZQogInUiIG1hcCwgb25lIGNhbiBjaGFuZ2UgdG8gYW4gZWFybGllciBkaXJlY3RvcnkgKHByZWRlY2Vzc29yKS4gIFRvIGRvCiB0aGUgb3Bwb3NpdGUsIHNlZSB8bmV0cnctVXwuCiAKIAotQ0hBTkdJTkcgVE8gQSBTVUNDRVNTT1IgRElSRUNUT1JZCQkqbmV0cnctVSogKm5ldHJ3LWRvd25kaXIqCitDSEFOR0lORyBUTyBBIFNVQ0NFU1NPUiBESVJFQ1RPUlkJCSpuZXRydy1VKiAqbmV0cnctZG93bmRpcioge3t7MgogCiBXaXRoIHRoZSAiVSIgbWFwLCBvbmUgY2FuIGNoYW5nZSB0byBhIGxhdGVyIGRpcmVjdG9yeSAoc3VjY2Vzc29yKS4KIFRoaXMgbWFwIGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgInUiIG1hcC4gKHNlZSB8bmV0cnctdXwpICBVc2UgdGhlCi1xIG1hcCB0byBsaXN0IGJvdGggdGhlIGJvb2ttYXJrcyBhbmQgaGlzdG9yeS4gKHNlZSB8bmV0cnctcXwpCitxIG1hcCB0byBsaXN0IGJvdGggdGhlIGJvb2ttYXJrcyBhbmQgaGlzdG9yeS4gKHNlZSB8bmV0cnctcWJ8KQorCisKK05FVFJXIENMRUFOCQkJCQkqbmV0cnctY2xlYW4qICo6TmV0cndDbGVhbioKKworV2l0aCA6TmV0cndDbGVhbiBvbmUgbWF5IGVhc2lseSByZW1vdmUgbmV0cncgZnJvbSBvbmUncyBob21lIGRpcmVjdG9yeTsKK21vcmUgcHJlY2lzZWx5LCBmcm9tIHRoZSBmaXJzdCBkaXJlY3Rvcnkgb24geW91ciB8J3J1bnRpbWVwYXRoJ3wuCisKK1dpdGggOk5ldHJ3Q2xlYW4hLCBuZXRydyB3aWxsIHJlbW92ZSBuZXRydyBmcm9tIGFsbCBkaXJlY3RvcmllcyBvbiB5b3VyCit8J3J1bnRpbWVwYXRoJ3wuCisKK1dpdGggZWl0aGVyIGZvcm0gb2YgdGhlIGNvbW1hbmQsIG5ldHJ3IHdpbGwgZmlyc3QgYXNrIGZvciBjb25maXJtYXRpb24KK3RoYXQgdGhlIHJlbW92YWwgaXMgaW4gZmFjdCB3aGF0IHlvdSB3YW50IHRvIGRvLiAgSWYgbmV0cncgZG9lc24ndCBoYXZlCitwZXJtaXNzaW9uIHRvIHJlbW92ZSBhIGZpbGUsIGl0IHdpbGwgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZS4KIAogCQkJCQkJKm5ldHJ3LWd4KgotQ1VTVE9NSVpJTkcgQlJPV1NJTkcgV0lUSCBBIFVTRVIgRlVOQ1RJT04JKm5ldHJ3LXgqICpuZXRydy1oYW5kbGVyKgorQ1VTVE9NSVpJTkcgQlJPV1NJTkcgV0lUSCBBIFVTRVIgRlVOQ1RJT04JKm5ldHJ3LXgqICpuZXRydy1oYW5kbGVyKiB7e3syCiAJCQkJCQkoYWxzbyBzZWUgfG5ldHJ3X2ZpbGVoYW5kbGVyfCkKIAogQ2VydGFpbiBmaWxlcywgc3VjaCBhcyBodG1sLCBnaWYsIGpwZWcsICh3b3JkL29mZmljZSkgZG9jLCBldGMsIGZpbGVzLCBhcmUKQEAgLTEzODcsNyArMTE0Nyw4IEBACiAKICAgKiBmb3IgV2luZG93cyAzMiBvciA2NCwgdGhlIHVybCBhbmQgRmlsZVByb3RvY29sSGFuZGxlciBkbGxzIGFyZSB1c2VkLiAgCiAgICogZm9yIEdub21lICh3aXRoIGdub21lLW9wZW4pOiBnbm9tZS1vcGVuIGlzIHVzZWQuCi0gICogZm9yIEtERSAod2l0aCBrZm1jbGllbnQpOiBrZm1jbGllbnQgaXMgdXNlZC4KKyAgKiBmb3IgS0RFICh3aXRoIGtmbWNsaWVudCkgICA6IGtmbWNsaWVudCBpcyB1c2VkLgorICAqIGZvciBNYWMgT1MgWCAgICAgICAgICAgICAgIDogb3BlbiBpcyB1c2VkLgogICAqIG90aGVyd2lzZSB0aGUgbmV0cndGaWxlSGFuZGxlciBwbHVnaW4gaXMgdXNlZC4KIAogVGhlIGZpbGUncyBzdWZmaXggaXMgdXNlZCBieSB0aGVzZSB2YXJpb3VzIGFwcHJvYWNoZXMgdG8gZGV0ZXJtaW5lIGFuCkBAIC0xNDMxLDQ5ICsxMTkyLDI0NiBAQAogCQlOZHJPY2hpcCBhdCBTY2FtcGJlbGxQZmFtaWx5LkFiaXpNIC0gTk9TUEFNCiB3aXRoIGEgcmVxdWVzdC4KIAorQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19icm93c2V4X3ZpZXdlcnwKIAotTUFLSU5HIFRIRSBCUk9XU0lORyBESVJFQ1RPUlkgVEhFIENVUlJFTlQgRElSRUNUT1JZCSpuZXRydy1jKiAqbmV0cnctY3VyZGlyKgorCQkJCQkJCSpuZXRydy1jdXJkaXIqCitERUxFVElORyBGSUxFUyBPUiBESVJFQ1RPUklFUwkqbmV0cnctZGVsZXRlKiAqbmV0cnctRCogKm5ldHJ3LWRlbCoge3t7MgogCi1CeSBkZWZhdWx0LCB8ZzpuZXRyd19rZWVwZGlyfCBpcyAxLiAgVGhpcyBzZXR0aW5nIG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQKLWRpcmVjdG9yeSB3aWxsIG5vdCB0cmFjayB0aGUgYnJvd3NpbmcgZGlyZWN0b3J5LgorSWYgZmlsZXMgaGF2ZSBub3QgYmVlbiBtYXJrZWQgd2l0aCB8bmV0cnctbWZ8OiAgIChsb2NhbCBtYXJrZWQgZmlsZSBsaXN0KQogCi1TZXR0aW5nIGc6bmV0cndfa2VlcGRpciB0byAwIHRlbGxzIG5ldHJ3IHRvIG1ha2UgdmltJ3MgY3VycmVudCBkaXJlY3RvcnkgdG8KLXRyYWNrIG5ldHJ3J3MgYnJvd3NpbmcgZGlyZWN0b3J5LgorICAgIERlbGV0aW5nL3JlbW92aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnZvbHZlcyBtb3ZpbmcgdGhlIGN1cnNvciB0byB0aGUKKyAgICBmaWxlL2RpcmVjdG9yeSB0byBiZSBkZWxldGVkIGFuZCBwcmVzc2luZyAiRCIuICBEaXJlY3RvcmllcyBtdXN0IGJlIGVtcHR5CisgICAgZmlyc3QgYmVmb3JlIHRoZXkgY2FuIGJlIHN1Y2Nlc3NmdWxseSByZW1vdmVkLiAgSWYgdGhlIGRpcmVjdG9yeSBpcyBhCisgICAgc29mdGxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZW4gbmV0cncgd2lsbCBtYWtlIHR3byByZXF1ZXN0cyB0byByZW1vdmUgdGhlCisgICAgZGlyZWN0b3J5IGJlZm9yZSBzdWNjZWVkaW5nLiAgTmV0cncgd2lsbCBhc2sgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgZG9pbmcKKyAgICB0aGUgcmVtb3ZhbChzKS4gIFlvdSBtYXkgc2VsZWN0IGEgcmFuZ2Ugb2YgbGluZXMgd2l0aCB0aGUgIlYiIGNvbW1hbmQKKyAgICAodmlzdWFsIHNlbGVjdGlvbiksIGFuZCB0aGVuIHByZXNzaW5nICJEIi4KIAotSG93ZXZlciwgZ2l2ZW4gdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgZzpuZXRyd19rZWVwZGlyIG9mIDEgd2hlcmUgbmV0cncKLW1haW50YWlucyBpdHMgb3duIHNlcGFyYXRlIG5vdGlvbiBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGluIG9yZGVyIHRvIG1ha2UKLXRoZSB0d28gZGlyZWN0b3JpZXMgdGhlIHNhbWUsIHVzZSB0aGUgImMiIG1hcCAoanVzdCB0eXBlIGMpLiAgVGhhdCBtYXAgd2lsbAotc2V0IFZpbSdzIG5vdGlvbiBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gbmV0cncncyBjdXJyZW50IGJyb3dzaW5nCi1kaXJlY3RvcnkuCitJZiBmaWxlcyBoYXZlIGJlZW4gbWFya2VkIHdpdGggfG5ldHJ3LW1mfDogICAobG9jYWwgbWFya2VkIGZpbGUgbGlzdCkKKworICAgIE1hcmtlZCBmaWxlcyAoYW5kIGVtcHR5IGRpcmVjdG9yaWVzKSB3aWxsIGJlIGRlbGV0ZWQ7IGFnYWluLCB5b3UnbGwgYmUKKyAgICBhc2tlZCB0byBjb25maXJtIHRoZSBkZWxldGlvbiBiZWZvcmUgaXQgYWN0dWFsbHkgdGFrZXMgcGxhY2UuCisKK1RoZSB8ZzpuZXRyd19ybV9jbWR8LCB8ZzpuZXRyd19ybWZfY21kfCwgYW5kIHxnOm5ldHJ3X3JtZGlyX2NtZHwgdmFyaWFibGVzIGFyZQordXNlZCB0byBjb250cm9sIHRoZSBhdHRlbXB0cyB0byByZW1vdmUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiAgVGhlCitnOm5ldHJ3X3JtX2NtZCBpcyB1c2VkIHdpdGggZmlsZXMsIGFuZCBpdHMgZGVmYXVsdCB2YWx1ZSBpczoKKworCWc6bmV0cndfcm1fY21kOiBzc2ggSE9TVE5BTUUgcm0KKworVGhlIGc6bmV0cndfcm1kaXJfY21kIHZhcmlhYmxlIGlzIHVzZWQgdG8gc3VwcG9ydCB0aGUgcmVtb3ZhbCBvZiBkaXJlY3Rvcmllcy4KK0l0cyBkZWZhdWx0IHZhbHVlIGlzOgorCisJZzpuZXRyd19ybWRpcl9jbWQ6IHNzaCBIT1NUTkFNRSBybWRpcgorCitJZiByZW1vdmluZyBhIGRpcmVjdG9yeSBmYWlscyB3aXRoIGc6bmV0cndfcm1kaXJfY21kLCBuZXRydyB0aGVuIHdpbGwgYXR0ZW1wdAordG8gcmVtb3ZlIGl0IGFnYWluIHVzaW5nIHRoZSBnOm5ldHJ3X3JtZl9jbWQgdmFyaWFibGUuICBJdHMgZGVmYXVsdCB2YWx1ZSBpczoKKworCWc6bmV0cndfcm1mX2NtZDogc3NoIEhPU1ROQU1FIHJtIC1mCisKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZTogfGc6bmV0cndfbG9jYWxfcm1kaXJ8IHxnOm5ldHJ3X3JtX2NtZHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfGc6bmV0cndfcm1kaXJfY21kfCAgIHxnOm5ldHJ3X3NzaF9jbWR8CiAKIAotQk9PS01BUktJTkcgQSBESVJFQ1RPUlkJCSpuZXRydy1tYiogKm5ldHJ3LWJvb2ttYXJrKiAqbmV0cnctYm9va21hcmtzKgotT25lIG1heSBlYXNpbHkgImJvb2ttYXJrIiBhIGRpcmVjdG9yeSBieSB1c2luZyA+CisqbmV0cnctZXhwbG9yZSogICpuZXRydy1oZXhwbG9yZSogKm5ldHJ3LW5leHBsb3JlKiAqbmV0cnctcGV4cGxvcmUqCisqbmV0cnctcmV4cGxvcmUqICpuZXRydy1zZXhwbG9yZSogKm5ldHJ3LXRleHBsb3JlKiAqbmV0cnctdmV4cGxvcmUqCitESVJFQ1RPUlkgRVhQTE9SQVRJT04gQ09NTUFORFMgIHt7ezIKIAotCXtjbnR9bWIKKyAgICAgOkV4cGxvcmVbIV0gICBbZGlyXS4uLiBFeHBsb3JlIGRpcmVjdG9yeSBvZiBjdXJyZW50IGZpbGUgICAgICAgKjpFeHBsb3JlKgorICAgICA6SGV4cGxvcmVbIV0gIFtkaXJdLi4uIEhvcml6b250YWwgU3BsaXQgJiBFeHBsb3JlICAgICAgICAgICAgICAqOkhleHBsb3JlKgorICAgICA6UmV4cGxvcmUgICAgICAgICAgLi4uIFJldHVybiB0byBFeHBsb3JlciAgICAgICAgICAgICAgICAgICAgICAqOlJleHBsb3JlKgorICAgICA6U2V4cGxvcmVbIV0gIFtkaXJdLi4uIFNwbGl0JkV4cGxvcmUgZGlyZWN0b3J5IG9mIGN1cnJlbnQgZmlsZSAqOlNleHBsb3JlKgorICAgICA6VGV4cGxvcmUgICAgIFtkaXJdLi4uIFRhYiAgICAgICAgICAgICAgJiBFeHBsb3JlICAgICAgICAgICAgICAqOlRleHBsb3JlKgorICAgICA6VmV4cGxvcmVbIV0gIFtkaXJdLi4uIFZlcnRpY2FsICAgU3BsaXQgJiBFeHBsb3JlICAgICAgICAgICAgICAqOlZleHBsb3JlKgorCisgICAgIFVzZWQgd2l0aCA6RXhwbG9yZSAqKi9wYXR0ZXJuIDogKGFsc28gc2VlIHxuZXRydy1zdGFyc3RhcnwpCisgICAgIDpOZXhwbG9yZS4uLi4uLi4uLi4uLi4gZ28gdG8gbmV4dCBtYXRjaGluZyBmaWxlICAgICAgICAgICAgICAgICo6TmV4cGxvcmUqCisgICAgIDpQZXhwbG9yZS4uLi4uLi4uLi4uLi4gZ28gdG8gcHJldmlvdXMgbWF0Y2hpbmcgZmlsZSAgICAgICAgICAgICo6UGV4cGxvcmUqCisKKzpFeHBsb3JlICB3aWxsIG9wZW4gdGhlIGxvY2FsLWRpcmVjdG9yeSBicm93c2VyIG9uIHRoZSBjdXJyZW50IGZpbGUncworICAgICAgICAgIGRpcmVjdG9yeSAob3Igb24gZGlyZWN0b3J5IFtkaXJdIGlmIHNwZWNpZmllZCkuICBUaGUgd2luZG93IHdpbGwgYmUKKwkgIHNwbGl0IG9ubHkgaWYgdGhlIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQsIG90aGVyd2lzZSB0aGUgYnJvd3NpbmcKKwkgIHdpbmRvdyB3aWxsIHRha2Ugb3ZlciB0aGF0IHdpbmRvdy4gIE5vcm1hbGx5IHRoZSBzcGxpdHRpbmcgaXMgdGFrZW4KKwkgIGhvcml6b250YWxseS4KKzpFeHBsb3JlISBpcyBsaWtlIDpFeHBsb3JlLCBidXQgd2lsbCB1c2UgdmVydGljYWwgc3BsaXR0aW5nLgorOlNleHBsb3JlIHdpbGwgYWx3YXlzIHNwbGl0IHRoZSB3aW5kb3cgYmVmb3JlIGludm9raW5nIHRoZSBsb2NhbC1kaXJlY3RvcnkKKyAgICAgICAgICBicm93c2VyLiAgQXMgd2l0aCBFeHBsb3JlLCB0aGUgc3BsaXR0aW5nIGlzIG5vcm1hbGx5IGRvbmUKKwkgIGhvcml6b250YWxseS4KKzpTZXhwbG9yZSEgW2Rpcl0gaXMgbGlrZSA6U2V4cGxvcmUsIGJ1dCB0aGUgc3BsaXR0aW5nIHdpbGwgYmUgZG9uZSB2ZXJ0aWNhbGx5LgorOkhleHBsb3JlICBbZGlyXSBkb2VzIGFuIDpFeHBsb3JlIHdpdGggfDpiZWxvd3JpZ2h0fCBob3Jpem9udGFsIHNwbGl0dGluZy4KKzpIZXhwbG9yZSEgW2Rpcl0gZG9lcyBhbiA6RXhwbG9yZSB3aXRoIHw6YWJvdmVsZWZ0fCAgaG9yaXpvbnRhbCBzcGxpdHRpbmcuCis6VmV4cGxvcmUgIFtkaXJdIGRvZXMgYW4gOkV4cGxvcmUgd2l0aCB8OmxlZnRhYm92ZXwgIHZlcnRpY2FsIHNwbGl0dGluZy4KKzpWZXhwbG9yZSEgW2Rpcl0gZG9lcyBhbiA6RXhwbG9yZSB3aXRoIHw6cmlnaHRiZWxvd3wgdmVydGljYWwgc3BsaXR0aW5nLgorOlRleHBsb3JlICBbZGlyXSBkb2VzIGEgdGFibmV3IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBicm93c2VyIHdpbmRvdworCitCeSBkZWZhdWx0LCB0aGVzZSBjb21tYW5kcyB1c2UgdGhlIGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeS4gIEhvd2V2ZXIsIG9uZQorbWF5IGV4cGxpY2l0bHkgcHJvdmlkZSBhIGRpcmVjdG9yeSAocGF0aCkgdG8gdXNlLgorCitUaGUgfGc6bmV0cndfd2luc2l6ZXwgdmFyaWFibGUgYWxzbyBpcyB1c2VkLCBpZiBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsIHRvCitzaXplIEhleHBsb3JlIGFuZCBWZXhwbG9yZSB3aW5kb3dzLgorCis6UmV4cGxvcmUgIFRoaXMgY29tbWFuZCBpcyBhIGxpdHRsZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXJzLiAgV2hlbiBvbmUKKyAgICAgICAgICAgZWRpdHMgYSBmaWxlLCBmb3IgZXhhbXBsZSBieSBwcmVzc2luZyA8Y3I+IHdoZW4gYXRvcCBhIGZpbGUgaW4KKwkgICBhIG5ldHJ3IGJyb3dzZXIgd2luZG93LCA6UmV4cGxvcmUgd2lsbCByZXR1cm4gdGhlIGRpc3BsYXkgdG8KKwkgICB0aGF0IG9mIHRoZSBsYXN0IG5ldHJ3IGJyb3dzZXIgd2luZG93LiAgSXRzIGEgY29tbWFuZCB2ZXJzaW9uCisJICAgb2YgPDItbGVmdG1vdXNlPiAod2hpY2ggaXMgb25seSBhdmFpbGFibGUgdW5kZXIgZ3ZpbSBhbmQKKwkgICBjb29wZXJhdGl2ZSB0ZXJtcykuCisKKworKm5ldHJ3LXN0YXIqICpuZXRydy1zdGFycGF0KiAqbmV0cnctc3RhcnN0YXIqICpuZXRydy1zdGFyc3RhcnBhdCoKK0VYUExPUklORyBXSVRIIFNUQVJTIEFORCBQQVRURVJOUworCitXaGVuIEV4cGxvcmUsIFNleHBsb3JlLCBIZXhwbG9yZSwgb3IgVmV4cGxvcmUgYXJlIHVzZWQgd2l0aCBvbmUgb2YgdGhlCitmb2xsb3dpbmcgZm91ciBzdHlsZXMsIEV4cGxvcmUgZ2VuZXJhdGVzIGEgbGlzdCBvZiBmaWxlcyB3aGljaCBzYXRpc2Z5Cit0aGUgcmVxdWVzdC4gPgorCisgICAgKi9maWxlcGF0CWZpbGVzIGluIGN1cnJlbnQgZGlyZWN0b3J5IHdoaWNoIHNhdGlzZnkgZmlsZXBhdAorICAgICoqL2ZpbGVwYXQJZmlsZXMgaW4gY3VycmVudCBkaXJlY3Rvcnkgb3IgYmVsb3cgd2hpY2ggc2F0aXNmeSB0aGUKKyAgICAJCWZpbGUgcGF0dGVybgorICAgICovL3BhdHRlcm4JZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdoaWNoIGNvbnRhaW4gdGhlCisgICAgCQlwYXR0ZXJuICh2aW1ncmVwIGlzIHVzZWQpCisgICAgKiovL3BhdHRlcm4JZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9yIGJlbG93IHdoaWNoIGNvbnRhaW4KKyAgICAJCXRoZSBwYXR0ZXJuICh2aW1ncmVwIGlzIHVzZWQpCiA8Ci1BbnkgY291bnQgbWF5IGJlIHVzZWQuICBPbmUgbWF5IHVzZSB2aW1pbmZvJ3MgIiEiIG9wdGlvbiB0byByZXRhaW4gYm9va21hcmtzCi1iZXR3ZWVuIHZpbSBzZXNzaW9ucy4gIFNlZSB8bmV0cnctZ2J8IGZvciBob3cgdG8gcmV0dXJuIHRvIGEgYm9va21hcmsgYW5kCi18bmV0cnctcXwgZm9yIGhvdyB0byBsaXN0IHRoZW0uCitUaGUgY3Vyc29yIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBmaXJzdCBmaWxlIGluIHRoZSBsaXN0LiAgT25lIG1heSB0aGVuCitjb250aW51ZSB0byBnbyB0byBzdWJzZXF1ZW50IGZpbGVzIG9uIHRoYXQgbGlzdCB2aWEgfDpOZXhwbG9yZXwgb3IgdG8KK3ByZWNlZGluZyBmaWxlcyBvbiB0aGF0IGxpc3Qgd2l0aCB8OlBleHBsb3JlfC4gIEV4cGxvcmUgd2lsbCB1cGRhdGUgdGhlCitkaXJlY3RvcnkgYW5kIHBsYWNlIHRoZSBjdXJzb3IgYXBwcm9wcmlhdGVseS4KKworQSBwbGFpbiA+CisJOkV4cGxvcmUKK3dpbGwgY2xlYXIgdGhlIGV4cGxvcmUgbGlzdC4KKworSWYgeW91ciBjb25zb2xlIG9yIGd1aSBwcm9kdWNlcyByZWNvZ25pemFibGUgc2hpZnQtdXAgb3Igc2hpZnQtZG93biBzZXF1ZW5jZXMsCit0aGVuIHlvdSdsbCBsaWtlbHkgZmluZCB1c2luZyBzaGlmdC1kb3duYXJyb3cgYW5kIHNoaWZ0LXVwYXJyb3cgY29udmVuaWVudC4KK1RoZXkncmUgbWFwcGVkIGJ5IG5ldHJ3OgorCisJPHMtZG93bj4gID09IE5leHBsb3JlLCBhbmQKKwk8cy11cD4gICAgPT0gUGV4cGxvcmUuCisKK0FzIGFuIGV4YW1wbGUsIGNvbnNpZGVyCis+CisJOkV4cGxvcmUgKi8qLmMKKwk6TmV4cGxvcmUKKwk6TmV4cGxvcmUKKwk6UGV4cGxvcmUKKzwKK1RoZSBzdGF0dXMgbGluZSB3aWxsIHNob3csIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhlIHN0YXR1cyBsaW5lLCBhCittZXNzYWdlIGxpa2UgIk1hdGNoIDMgb2YgMjAiLgorCitBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGVzOiB8ZzpuZXRyd19rZWVwZGlyfCAgICAgIHxnOm5ldHJ3X2Jyb3dzZV9zcGxpdHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxnOm5ldHJ3X2Zhc3Ricm93c2V8ICAgfGc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3R8CisJCQkgICAgICB8ZzpuZXRyd19mdHBfbGlzdF9jbWR8IHxnOm5ldHJ3X2Z0cF9zaXplbGlzdF9jbWR8CisJCQkgICAgICB8ZzpuZXRyd19mdHBfdGltZWxpc3RfY21kfCB8ZzpuZXRyd19saXN0X2NtZHwKKwkJCSAgICAgIHxnOm5ldHJ3X2xpc3RzdHlsZXwKIAogCi1DSEFOR0lORyBUTyBBIEJPT0tNQVJLRUQgRElSRUNUT1JZCQkJKm5ldHJ3LWdiKiAKK0RJU1BMQVlJTkcgSU5GT1JNQVRJT04gQUJPVVQgRklMRQkJCQkqbmV0cnctcWYqIHt7ezIKIAotVG8gY2hhbmdlIGRpcmVjdG9yeSBiYWNrIHRvIGEgYm9va21hcmtlZCBkaXJlY3RvcnksIHVzZQotCi0Je2NudH1nYgotCi1BbnkgY291bnQgbWF5IGJlIHVzZWQgdG8gcmVmZXJlbmNlIGFueSBvZiB0aGUgYm9va21hcmtzLiAgU2VlIHxuZXRydy1tYnwgb24KLWhvdyB0byBib29rbWFyayBhIGRpcmVjdG9yeSBhbmQgfG5ldHJ3LXF8IG9uIGhvdyB0byBsaXN0IGJvb2ttYXJrcy4KK1dpdGggdGhlIGN1cnNvciBhdG9wIGEgZmlsZW5hbWUsIHByZXNzaW5nICJxZiIgd2lsbCByZXZlYWwgdGhlIGZpbGUncyBzaXplCithbmQgbGFzdCBtb2RpZmljYXRpb24gdGltZXN0YW1wLiAgQ3VycmVudGx5IHRoaXMgY2FwYWJpbGl0eSBpcyBvbmx5IGF2YWlsYWJsZQorZm9yIGxvY2FsIGZpbGVzLgogCiAKLUxJU1RJTkcgQk9PS01BUktTIEFORCBISVNUT1JZCQkJKm5ldHJ3LXEqICpuZXRydy1saXN0Ym9va21hcmsqCitFRElUIEZJTEUgT1IgRElSRUNUT1JZIEhJRElORyBMSVNUCSpuZXRydy1jdHJsLWgqICpuZXRydy1lZGl0aGlkZSoge3t7MgogCi1QcmVzc2luZyAicSIgd2lsbCBsaXN0IHRoZSBib29rbWFya2VkIGRpcmVjdG9yaWVzIGFuZCBkaXJlY3RvcnkgdHJhdmVyc2FsCi1oaXN0b3J5IChxdWVyeSkuIChzZWUgfG5ldHJ3LW1ifCwgfG5ldHJ3LWdifCwgfG5ldHJ3LXV8LCBhbmQgfG5ldHJ3LVV8KQorVGhlICI8Y3RybC1oPiIgbWFwIGJyaW5ncyB1cCBhIHJlcXVlc3RvciBhbGxvd2luZyB0aGUgdXNlciB0byBjaGFuZ2UgdGhlCitmaWxlL2RpcmVjdG9yeSBoaWRpbmcgbGlzdCBjb250YWluZWQgaW4gfGc6bmV0cndfbGlzdF9oaWRlfC4gIFRoZSBoaWRpbmcgbGlzdAorY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgcGF0dGVybnMgZGVsaW1pdGVkIGJ5IGNvbW1hcy4gIEZpbGVzIGFuZC9vcgorZGlyZWN0b3JpZXMgc2F0aXNmeWluZyB0aGVzZSBwYXR0ZXJucyB3aWxsIGVpdGhlciBiZSBoaWRkZW4gKGllLiBub3Qgc2hvd24pIG9yCitiZSB0aGUgb25seSBvbmVzIGRpc3BsYXllZCAoc2VlIHxuZXRydy1hfCkuCisKK1RoZSAiZ2giIG1hcHBpbmcgKHNlZSB8bmV0cnctZ2h8KSBxdWlja2x5IGFsdGVybmF0ZXMgYmV0d2VlbiB0aGUgdXN1YWwKK2hpZGluZyBsaXN0IGFuZCB0aGUgaGlkaW5nIG9mIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRoYXQgYmVnaW4gd2l0aCAiLiIuCisKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZXM6IHxnOm5ldHJ3X2hpZGV8IHxnOm5ldHJ3X2xpc3RfaGlkZXwKK0Fzc29jaWF0ZWQgdG9waWNzOiB8bmV0cnctYXwgfG5ldHJ3LWdofCB8bmV0cnctbWh8CiAKIAotSU1QUk9WSU5HIERJUkVDVE9SWSBCUk9XU0lORwkJCQkqbmV0cnctbGlzdGhhY2sqCitFRElUSU5HIFRIRSBTT1JUSU5HIFNFUVVFTkNFCQkqbmV0cnctUyogKm5ldHJ3LXNvcnRzZXF1ZW5jZSoge3t7MgorCitXaGVuICJTb3J0ZWQgYnkiIGlzIG5hbWUsIG9uZSBtYXkgc3BlY2lmeSBwcmlvcml0eSB2aWEgdGhlIHNvcnRpbmcgc2VxdWVuY2UKKyhnOm5ldHJ3X3NvcnRfc2VxdWVuY2UpLiAgVGhlIHNvcnRpbmcgc2VxdWVuY2UgdHlwaWNhbGx5IHByaW9yaXRpemVzIHRoZQorbmFtZS1saXN0aW5nIGJ5IHN1ZmZpeCwgYWx0aG91Z2ggYW55IHBhdHRlcm4gd2lsbCBkby4gIFBhdHRlcm5zIGFyZSBkZWxpbWl0ZWQKK2J5IGNvbW1hcy4gIFRoZSBkZWZhdWx0IHNvcnRpbmcgc2VxdWVuY2UgaXMgKGFsbCBvbmUgbGluZSk6Cis+CisJJ1tcL10kLFwuW2EtbnAtel0kLFwuaCQsXC5jJCxcLmNwcCQsKixcLm8kLFwub2JqJCxcLmluZm8kLAorCVwuc3dwJCxcLmJhayQsXH4kJworPAorVGhlIGxvbmUgKiBpcyB3aGVyZSBhbGwgZmlsZW5hbWVzIG5vdCBjb3ZlcmVkIGJ5IG9uZSBvZiB0aGUgb3RoZXIgcGF0dGVybnMKK3dpbGwgZW5kIHVwLiAgT25lIG1heSBjaGFuZ2UgdGhlIHNvcnRpbmcgc2VxdWVuY2UgYnkgbW9kaWZ5aW5nIHRoZQorZzpuZXRyd19zb3J0X3NlcXVlbmNlIHZhcmlhYmxlIChlaXRoZXIgbWFudWFsbHkgb3IgaW4geW91ciA8LnZpbXJjPikgb3IgYnkKK3VzaW5nIHRoZSAiUyIgbWFwLgorCitSZWxhdGVkIHRvcGljczogICAgICAgICAgICAgIHxuZXRydy1zfAorQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19zb3J0X3NlcXVlbmNlfAorCisKK0dPSU5HIFVQCQkJCQkJCSpuZXRydy0tKiB7e3syCisKK1RvIGdvIHVwIGEgZGlyZWN0b3J5LCBwcmVzcyAiLSIgb3IgcHJlc3MgdGhlIDxjcj4gd2hlbiBhdG9wIHRoZSAuLi8gZGlyZWN0b3J5CitlbnRyeSBpbiB0aGUgbGlzdGluZy4KKworTmV0cncgd2lsbCB1c2UgdGhlIGNvbW1hbmQgaW4gfGc6bmV0cndfbGlzdF9jbWR8IHRvIHBlcmZvcm0gdGhlIGRpcmVjdG9yeQorbGlzdGluZyBvcGVyYXRpb24gYWZ0ZXIgY2hhbmdpbmcgSE9TVE5BTUUgdG8gdGhlIGhvc3Qgc3BlY2lmaWVkIGJ5IHRoZQordXNlci1wcm92aWRlZCB1cmwuICBCeSBkZWZhdWx0IG5ldHJ3IHByb3ZpZGVzIHRoZSBjb21tYW5kIGFzOgorCisJc3NoIEhPU1ROQU1FIGxzIC1GTGEKKword2hlcmUgdGhlIEhPU1ROQU1FIGJlY29tZXMgdGhlIFt1c2VyQF1ob3N0bmFtZSBhcyByZXF1ZXN0ZWQgYnkgdGhlIGF0dGVtcHQgdG8KK3JlYWQuICBOYXR1cmFsbHksIHRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGlzIGNvbW1hbmQgd2l0aCB3aGF0ZXZlciBpcworcHJlZmVycmVkLiAgVGhlIE5ldExpc3QgZnVuY3Rpb24gd2hpY2ggaW1wbGVtZW50cyByZW1vdGUgYnJvd3NpbmcKK2V4cGVjdHMgdGhhdCBkaXJlY3RvcmllcyB3aWxsIGJlIGZsYWdnZWQgYnkgYSB0cmFpbGluZyBzbGFzaC4KKworCitISURJTkcgRklMRVMgT1IgRElSRUNUT1JJRVMJCQkqbmV0cnctYSogKm5ldHJ3LWhpZGluZyoge3t7MgorCitOZXRydydzIGJyb3dzaW5nIGZhY2lsaXR5IGFsbG93cyBvbmUgdG8gdXNlIHRoZSBoaWRpbmcgbGlzdCBpbiBvbmUgb2YgdGhyZWUKK3dheXM6IGlnbm9yZSBpdCwgaGlkZSBmaWxlcyB3aGljaCBtYXRjaCwgYW5kIHNob3cgb25seSB0aG9zZSBmaWxlcyB3aGljaAorbWF0Y2guCisKK0lmIG5vIGZpbGVzIGhhdmUgYmVlbiBtYXJrZWQgdmlhIHxuZXRydy1tZnw6CisKK1RoZSAiYSIgbWFwIGFsbG93cyB0aGUgdXNlciB0byBjeWNsZSB0aHJvdWdoIHRoZSB0aHJlZSBoaWRpbmcgbW9kZXMuCisKK1RoZSB8ZzpuZXRyd19saXN0X2hpZGV8IHZhcmlhYmxlIGhvbGRzIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgcGF0dGVybnMKK2Jhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGV4LiBeLipcLm9iaiQsXlwuKSB3aGljaCBzcGVjaWZ5IHRoZSBoaWRpbmcgbGlzdC4KKyhhbHNvIHNlZSB8bmV0cnctY3RybC1ofCkgIFRvIHNldCB0aGUgaGlkaW5nIGxpc3QsIHVzZSB0aGUgPGMtaD4gbWFwLiAgQXMgYW4KK2V4YW1wbGUsIHRvIGhpZGUgZmlsZXMgd2hpY2ggYmVnaW4gd2l0aCBhICIuIiwgb25lIG1heSB1c2UgdGhlIDxjLWg+IG1hcCB0bworc2V0IHRoZSBoaWRpbmcgbGlzdCB0byAnXlwuLionIChvciBvbmUgbWF5IHB1dCBsZXQgZzpuZXRyd19saXN0X2hpZGU9ICdeXC4uKicKK2luIG9uZSdzIDwudmltcmM+KS4gIE9uZSBtYXkgdGhlbiB1c2UgdGhlICJhIiBrZXkgdG8gc2hvdyBhbGwgZmlsZXMsIGhpZGUKK21hdGNoaW5nIGZpbGVzLCBvciB0byBzaG93IG9ubHkgdGhlIG1hdGNoaW5nIGZpbGVzLgorCisJRXhhbXBsZTogXC5bY2hdJAorCQlUaGlzIGhpZGluZyBsaXN0IGNvbW1hbmQgd2lsbCBoaWRlL3Nob3cgYWxsICouYyBhbmQgKi5oIGZpbGVzLgorCisJRXhhbXBsZTogXC5jJCxcLmgkCisJCVRoaXMgaGlkaW5nIGxpc3QgY29tbWFuZCB3aWxsIGFsc28gaGlkZS9zaG93IGFsbCAqLmMgYW5kICouaAorCQlmaWxlcy4KKworRG9uJ3QgZm9yZ2V0IHRvIHVzZSB0aGUgImEiIG1hcCB0byBzZWxlY3QgdGhlIG1vZGUgKG5vcm1hbC9oaWRpbmcvc2hvdykgeW91Cit3YW50IQorCitJZiBmaWxlcyBoYXZlIGJlZW4gbWFya2VkIHVzaW5nIHxuZXRydy1tZnwsIHRoZW4gdGhpcyBjb21tYW5kIHdpbGw6CisKKyAgaWYgc2hvd2luZyBhbGwgZmlsZXMgb3Igbm9uLWhpZGRlbiBmaWxlczoKKyAgIG1vZGlmeSB0aGUgZzpuZXRyd19saXN0X2hpZGUgbGlzdCBieSBhcHBlbmRpbmcgdGhlIG1hcmtlZCBmaWxlcyB0byBpdAorICAgYW5kIHNob3dpbmcgb25seSBub24taGlkZGVuIGZpbGVzLgorCisgIGVsc2UgaWYgc2hvd2luZyBoaWRkZW4gZmlsZXMgb25seToKKyAgIG1vZGlmeSB0aGUgZzpuZXRyd19saXN0X2hpZGUgbGlzdCBieSByZW1vdmluZyB0aGUgbWFya2VkIGZpbGVzIGZyb20gaXQKKyAgIGFuZCBzaG93aW5nIG9ubHkgbm9uLWhpZGRlbiBmaWxlcy4KKyAgZW5kaWYKKworCQkJCQkqbmV0cnctZ2gqICpuZXRydy1oaWRlKgorQXMgYSBxdWljayBzaG9ydGN1dCwgb25lIG1heSBwcmVzcyA+CisJZ2gKK3RvIHRvZ2dsZSBiZXR3ZWVuIGhpZGluZyBmaWxlcyB3aGljaCBiZWdpbiB3aXRoIGEgcGVyaW9kIChkb3QpIGFuZCBub3QgaGlkaW5nCit0aGVtLgorCitBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGU6IHxnOm5ldHJ3X2xpc3RfaGlkZXwKK0Fzc29jaWF0ZWQgdG9waWNzOiB8bmV0cnctYXwgfG5ldHJ3LWN0cmwtaHwgfG5ldHJ3LW1ofAorCitJTVBST1ZJTkcgQlJPV1NJTkcJCQkqbmV0cnctbGlzdGhhY2sqICpuZXRydy1zc2gtaGFjayoge3t7MgogCiBFc3BlY2lhbGx5IHdpdGggdGhlIHJlbW90ZSBkaXJlY3RvcnkgYnJvd3NlciwgY29uc3RhbnRseSBlbnRlcmluZyB0aGUgcGFzc3dvcmQKIGlzIHRlZGlvdXMuCkBAIC0xNTAyLDggKzE0NjAsNTM0IEBACiBGb3IgV2luZG93cywgZm9sa3Mgb24gdGhlIHZpbSBtYWlsaW5nIGxpc3QgaGF2ZSBtZW50aW9uZWQgdGhhdCBQYWdlYW50IGhlbHBzCiB3aXRoIGF2b2lkaW5nIHRoZSBjb25zdGFudCBuZWVkIHRvIGVudGVyIHRoZSBwYXNzd29yZC4KIAorS2luZ3N0b24gRnVuZyB3cm90ZSBhYm91dCBhbm90aGVyIHdheSB0byBhdm9pZCBjb25zdGFudGx5IG5lZWRpbmcgdG8gZW50ZXIKK3Bhc3N3b3JkczoKIAotTkVUUlcgU0VUVElOR1MJCQkJCQkqbmV0cnctc2V0dGluZ3MqCisgICAgSW4gb3JkZXIgdG8gYXZvaWQgdGhlIG5lZWQgdG8gdHlwZSBpbiB0aGUgcGFzc3dvcmQgZm9yIHNjcCBlYWNoIHRpbWUsIHlvdQorICAgIHByb3ZpZGUgYSBoYWNrIGluIHRoZSBkb2NzIHRvIHNldCB1cCBhIG5vbiBwYXNzd29yZCBzc2ggYWNjb3VudC4gSSBmb3VuZCBhCisgICAgYmV0dGVyIHdheSB0byBkbyB0aGF0OiBJIGNhbiB1c2UgYSByZWd1bGFyIHNzaCBhY2NvdW50IHdoaWNoIHVzZXMgYQorICAgIHBhc3N3b3JkIHRvIGFjY2VzcyB0aGUgbWF0ZXJpYWwgd2l0aG91dCB0aGUgbmVlZCB0byBrZXktaW4gdGhlIHBhc3N3b3JkCisgICAgZWFjaCB0aW1lLiBJdCdzIGdvb2QgZm9yIHNlY3VyaXR5IGFuZCBjb252ZW5pZW5jZS4gSSB0cmllZCBzc2ggcHVibGljIGtleQorICAgIGF1dGhvcml6YXRpb24gKyBzc2gtYWdlbnQsIGltcGxlbWVudGluZyB0aGlzLCBhbmQgaXQgd29ya3MhIEhlcmUgYXJlIHR3bworICAgIGxpbmtzIHdpdGggaW5zdHJ1Y3Rpb25zOgorCisgICAgaHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL2xpYnJhcnkvbC1rZXljMi8KKyAgICBodHRwOi8vc2lhbC5vcmcvaG93dG8vb3BlbnNzaC9wdWJsaWNrZXktYXV0aC8KKworCitMSVNUSU5HIEJPT0tNQVJLUyBBTkQgSElTVE9SWQkJKm5ldHJ3LXFiKiAqbmV0cnctbGlzdGJvb2ttYXJrKiB7e3syCisKK1ByZXNzaW5nICJxYiIgKHF1ZXJ5IGJvb2ttYXJrcykgd2lsbCBsaXN0IHRoZSBib29rbWFya2VkIGRpcmVjdG9yaWVzIGFuZAorZGlyZWN0b3J5IHRyYXZlcnNhbCBoaXN0b3J5IChxdWVyeSkuCisKKyhzZWUgfG5ldHJ3LW1ifCwgfG5ldHJ3LWdifCwgfG5ldHJ3LXV8LCBhbmQgfG5ldHJ3LVV8KQorCisKK01BS0lORyBBIE5FVyBESVJFQ1RPUlkJCQkJCSpuZXRydy1kKiB7e3syCisKK1dpdGggdGhlICJkIiBtYXAgb25lIG1heSBtYWtlIGEgbmV3IGRpcmVjdG9yeSBlaXRoZXIgcmVtb3RlbHkgKHdoaWNoIGRlcGVuZHMKK29uIHRoZSBnbG9iYWwgdmFyaWFibGUgZzpuZXRyd19ta2Rpcl9jbWQpIG9yIGxvY2FsbHkgKHdoaWNoIGRlcGVuZHMgb24gdGhlCitnbG9iYWwgdmFyaWFibGUgZzpuZXRyd19sb2NhbF9ta2RpcikuICBOZXRydyB3aWxsIGlzc3VlIGEgcmVxdWVzdCBmb3IgdGhlIG5ldworZGlyZWN0b3J5J3MgbmFtZS4gIEEgYmFyZSA8Q1I+IGF0IHRoYXQgcG9pbnQgd2lsbCBhYm9ydCB0aGUgbWFraW5nIG9mIHRoZQorZGlyZWN0b3J5LiAgQXR0ZW1wdHMgdG8gbWFrZSBhIGxvY2FsIGRpcmVjdG9yeSB0aGF0IGFscmVhZHkgZXhpc3RzIChhcyBlaXRoZXIKK2EgZmlsZSBvciBhIGRpcmVjdG9yeSkgd2lsbCBiZSBkZXRlY3RlZCwgcmVwb3J0ZWQgb24sIGFuZCBpZ25vcmVkLgorCitDdXJyZW50bHksIG1ha2luZyBhIGRpcmVjdG9yeSB2aWEgZnRwIGlzIG5vdCBzdXBwb3J0ZWQuCisKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZTogfGc6bmV0cndfbG9jYWxfbWtkaXJ8IHxnOm5ldHJ3X21rZGlyX2NtZHwKKworCitNQUtJTkcgVEhFIEJST1dTSU5HIERJUkVDVE9SWSBUSEUgQ1VSUkVOVCBESVJFQ1RPUlkJKm5ldHJ3LWMqIHt7ezIKKworQnkgZGVmYXVsdCwgfGc6bmV0cndfa2VlcGRpcnwgaXMgMS4gIFRoaXMgc2V0dGluZyBtZWFucyB0aGF0IHRoZSBjdXJyZW50CitkaXJlY3Rvcnkgd2lsbCBub3QgdHJhY2sgdGhlIGJyb3dzaW5nIGRpcmVjdG9yeS4KKworU2V0dGluZyBnOm5ldHJ3X2tlZXBkaXIgdG8gMCB0ZWxscyBuZXRydyB0byBtYWtlIHZpbSdzIGN1cnJlbnQgZGlyZWN0b3J5IHRvCit0cmFjayBuZXRydydzIGJyb3dzaW5nIGRpcmVjdG9yeS4KKworSG93ZXZlciwgZ2l2ZW4gdGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgZzpuZXRyd19rZWVwZGlyIG9mIDEgd2hlcmUgbmV0cncKK21haW50YWlucyBpdHMgb3duIHNlcGFyYXRlIG5vdGlvbiBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGluIG9yZGVyIHRvIG1ha2UKK3RoZSB0d28gZGlyZWN0b3JpZXMgdGhlIHNhbWUsIHVzZSB0aGUgImMiIG1hcCAoanVzdCB0eXBlIGMpLiAgVGhhdCBtYXAgd2lsbAorc2V0IFZpbSdzIG5vdGlvbiBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gbmV0cncncyBjdXJyZW50IGJyb3dzaW5nCitkaXJlY3RvcnkuCisKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZTogfGc6bmV0cndfa2VlcGRpcnwKKworTUFSS0lORyBGSUxFUwkJCQkJCQkqbmV0cnctbWYqIHt7ezIKKwkoYWxzbyBzZWUgfG5ldHJ3LW1yfCkKKworT25lIG1heSBtYXJrIGZpbGVzIHdpdGggdGhlIGN1cnNvciBhdG9wIGEgZmlsZW5hbWUgYW5kIHRoZW4gcHJlc3NpbmcgIm1mIi4KK1dpdGggZ3ZpbSwgb25lIG1heSBhbHNvIG1hcmsgZmlsZXMgd2l0aCA8cy1sZWZ0bW91c2U+LiAgVGhlIGZvbGxvd2luZyBuZXRydworbWFwcyBtYWtlIHVzZSBvZiBtYXJrZWQgZmlsZXM6CisKKyAgICB8bmV0cnctYXwJSGlkZSBtYXJrZWQgZmlsZXMvZGlyZWN0b3JpZXMKKyAgICB8bmV0cnctRHwJRGVsZXRlIG1hcmtlZCBmaWxlcy9kaXJlY3RvcmllcworICAgIHxuZXRydy1tY3wJQ29weSBtYXJrZWQgZmlsZXMgdG8gdGFyZ2V0CisgICAgfG5ldHJ3LW1kfAlBcHBseSB2aW1kaWZmIHRvIG1hcmtlZCBmaWxlcworICAgIHxuZXRydy1tZXwJRWRpdCBtYXJrZWQgZmlsZXMKKyAgICB8bmV0cnctbWd8CUFwcGx5IHZpbWdyZXAgdG8gbWFya2VkIGZpbGVzCisgICAgfG5ldHJ3LW1tfAlNb3ZlIG1hcmtlZCBmaWxlcworICAgIHxuZXRydy1tcHwJUHJpbnQgbWFya2VkIGZpbGVzCisgICAgfG5ldHJ3LW10fAlTZXQgdGFyZ2V0IGZvciB8bmV0cnctbW18IGFuZCB8bmV0cnctbWN8CisgICAgfG5ldHJ3LW1UfAlHZW5lcmF0ZSB0YWdzIHVzaW5nIG1hcmtlZCBmaWxlcworICAgIHxuZXRydy1teHwJQXBwbHkgc2hlbGwgY29tbWFuZCB0byBtYXJrZWQgZmlsZXMKKyAgICB8bmV0cnctbXp8CUNvbXByZXNzL0RlY29tcHJlc3MgbWFya2VkIGZpbGVzCisgICAgfG5ldHJ3LU98CU9idGFpbiBtYXJrZWQgZmlsZXMKKyAgICB8bmV0cnctUnwJUmVuYW1lIG1hcmtlZCBmaWxlcworCitPbmUgbWF5IHVubWFyayBmaWxlcyBvbmUgYXQgYSB0aW1lIHRoZSBzYW1lIHdheSBvbmUgbWFya3MgdGhlbTsgaWUuIHBsYWNlCit0aGUgY3Vyc29yIGF0b3AgYSBtYXJrZWQgZmlsZSBhbmQgcHJlc3MgIm1mIi4gIFRoaXMgcHJvY2VzcyBhbHNvIHdvcmtzCit3aXRoIDxzLWxlZnRtb3VzZT4gdXNpbmcgZ3ZpbS4gIE9uZSBtYXkgdW5tYXJrIGFsbCBmaWxlcyBieSBwcmVzc2luZworIm11IiAoc2VlIHxuZXRydy1tdXwpLgorCisqbWFya2ZpbGVsaXN0KiAqZ2xvYmFsX21hcmtmaWxlbGlzdCogKmxvY2FsX21hcmtmaWxlbGlzdCoKK0FsbCBtYXJrZWQgZmlsZXMgYXJlIGVudGVyZWQgb250byB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3Q7IHRoZXJlIGlzIG9ubHkKK29uZSBzdWNoIGxpc3QuICBJbiBhZGRpdGlvbiwgZXZlcnkgbmV0cncgYnVmZmVyIGFsc28gaGFzIGl0cyBvd24gbG9jYWwgbWFya2VkCitmaWxlIGxpc3Q7IHNpbmNlIG5ldHJ3IGJ1ZmZlcnMgYXJlIGFzc29jaWF0ZWQgd2l0aCBzcGVjaWZpYyBkaXJlY3RvcmllcywgdGhpcworbWVhbnMgdGhhdCBlYWNoIGRpcmVjdG9yeSBoYXMgaXRzIG93biBsb2NhbCBtYXJrZWQgZmlsZSBsaXN0LiAgVGhlIHZhcmlvdXMKK2NvbW1hbmRzIHdoaWNoIG9wZXJhdGUgb24gbWFya2VkIGZpbGVzIHVzZSBvbmUgb3IgdGhlIG90aGVyIG9mIHRoZSBtYXJrZWQgZmlsZQorbGlzdHMuCisKKworTUFSS0lORyBGSUxFUyBCWSBSRUdVTEFSIEVYUFJFU1NJT04JCQkJKm5ldHJ3LW1yKiB7e3syCisJKGFsc28gc2VlIHxuZXRydy1tZnwpCisKK09uZSBtYXkgYWxzbyBtYXJrIGZpbGVzIGJ5IHByZXNzaW5nICJtciI7IG5ldHJ3IHdpbGwgdGhlbiBpc3N1ZSBhIHByb21wdCwKKyJFbnRlciByZWdleHA6ICIuICBZb3UgbWF5IHRoZW4gZW50ZXIgYSByZWd1bGFyIGV4cHJlc3Npb24gc3VjaCBhcyBcLmMkIC4KK0FsbCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCB0aGVuIGJlIG1hcmtlZC4gIE5vdGUgdGhhdCB0aGUKK3JlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIHZpbS1zdHlsZSB8cmVnZXhwfCBvbmVzLCBub3Qgc2hlbGwgb25lcy4gIFNvCitlbnRlcmluZyAqLmMgcHJvYmFibHkgaXNuJ3Qgd2hhdCB5b3Ugd2FudCEKKworCitNQVJLRUQgRklMRVM6IEFSQklUUkFSWSBDT01NQU5ECQkJCSpuZXRydy1teCoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAodXNlcyB0aGUgbG9jYWwgbWFya2VkLWZpbGUgbGlzdCkKKworVXBvbiBhY3RpdmF0aW9uIG9mIHRoZSAibXgiIG1hcCwgbmV0cncgd2lsbCBxdWVyeSB0aGUgdXNlciBmb3Igc29tZSAoZXh0ZXJuYWwpCitjb21tYW5kIHRvIGJlIGFwcGxpZWQgdG8gYWxsIG1hcmtlZCBmaWxlcy4gIEFsbCAiJSJzIGluIHRoZSBjb21tYW5kIHdpbGwgYmUKK3N1YnN0aXR1dGVkIHdpdGggdGhlIG5hbWUgb2YgZWFjaCBtYXJrZWQgZmlsZSBpbiB0dXJuLiAgSWYgbm8gIiUicyBhcmUgaW4gdGhlCitjb21tYW5kLCB0aGVuIHRoZSBjb21tYW5kIHdpbGwgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZSBhbmQgYSBtYXJrZWQgZmlsZW5hbWUuCisKKworTUFSS0VEIEZJTEVTOiBDT01QUkVTU0lPTiBBTkQgREVDT01QUkVTU0lPTgkJKm5ldHJ3LW16KiB7e3syCisJICAgIChTZWUgfG5ldHJ3LW1mfCBhbmQgfG5ldHJ3LW1yfCBmb3IgaG93IHRvIG1hcmsgZmlsZXMpCisJCSAgICAgICh1c2VzIHRoZSBsb2NhbCBtYXJrZWQgZmlsZSBsaXN0KQorCitJZiBhbnkgbWFya2VkIGZpbGVzIGFyZSBjb21wcmVzc2VkLCAgIHRoZW4gIm16IiB3aWxsIGRlY29tcHJlc3MgdGhlbS4KK0lmIGFueSBtYXJrZWQgZmlsZXMgYXJlIGRlY29tcHJlc3NlZCwgdGhlbiAibXoiIHdpbGwgY29tcHJlc3MgdGhlbQordXNpbmcgdGhlIGNvbW1hbmQgc3BlY2lmaWVkIGJ5IHxnOm5ldHJ3X2NvbXByZXNzfDsgYnkgZGVmYXVsdCwKK3RoYXQncyAiZ3ppcCIuCisKK0ZvciBkZWNvbXByZXNzaW9uLCBuZXRydyBwcm92aWRlcyBhIHxEaWN0aW9uYXJ5fCBvZiBzdWZmaWNlcyBhbmQgdGhlaXIKK2Fzc29jaWF0ZWQgZGVjb21wcmVzc2luZyB1dGlsaXRpZXM7IHNlZSB8ZzpuZXRyd19kZWNvbXByZXNzfC4KKworQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlczogfGc6bmV0cndfY29tcHJlc3N8IHxnOm5ldHJ3X2RlY29tcHJlc3N8CisKK01BUktFRCBGSUxFUzogQ09QWUlORwkJCQkJCSpuZXRydy1tYyoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAoVXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QpCisKK1NlbGVjdCBhIHRhcmdldCBkaXJlY3Rvcnkgd2l0aCBtdCAofG5ldHJ3LW10fCkuICBUaGVuIGNoYW5nZSBkaXJlY3RvcnksCitzZWxlY3QgZmlsZShzKSAoc2VlIHxuZXRydy1tZnwpLCBhbmQgcHJlc3MgIm1jIi4KKworQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19sb2NhbGNvcHljbWR8IHxnOm5ldHJ3X3NzaF9jbWR8CisKK01BUktFRCBGSUxFUzogRElGRgkJCQkJCSpuZXRydy1tZCoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAodXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QpCisKK1VzZSB8dmltZGlmZnwgdG8gdmlzdWFsaXplIGRpZmZlcmVuY2UgYmV0d2VlbiBzZWxlY3RlZCBmaWxlcyAodHdvIG9yCit0aHJlZSBtYXkgYmUgc2VsZWN0ZWQgZm9yIHRoaXMpLiAgVXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QuCisKK01BUktFRCBGSUxFUzogRURJVElORwkJCQkJCSpuZXRydy1tZSoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAodXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QpCisKK1RoaXMgY29tbWFuZCB3aWxsIHBsYWNlIHRoZSBtYXJrZWQgZmlsZXMgb24gdGhlIHxhcmdsaXN0fCBhbmQgY29tbWVuY2UKK2VkaXRpbmcgdGhlbS4gIE9uZSBtYXkgcmV0dXJuIHRoZSB0byBleHBsb3JlciB3aW5kb3cgd2l0aCB8OlJleHBsb3JlfC4KKworTUFSS0VEIEZJTEVTOiBHUkVQCQkJCQkJKm5ldHJ3LW1nKiB7e3syCisJICAgIChTZWUgfG5ldHJ3LW1mfCBhbmQgfG5ldHJ3LW1yfCBmb3IgaG93IHRvIG1hcmsgZmlsZXMpCisJCSAgICAgICh1c2VzIHRoZSBnbG9iYWwgbWFya2VkIGZpbGUgbGlzdCkKKworVGhpcyBjb21tYW5kIHdpbGwgYXBwbHkgfDp2aW1ncmVwfCB0byB0aGUgbWFya2VkIGZpbGVzLiAgVGhlIGNvbW1hbmQgd2lsbCBhc2sKK2ZvciB0aGUgcmVxdWVzdGVkIHBhdHRlcm47IG9uZSBtYXkgZW50ZXI6ID4KKwkvcGF0dGVybi9bZ11bal0KKwkhIC9wYXR0ZXJuL1tnXVtqXQorCXBhdHRlcm4KKzwKK01BUktFRCBGSUxFUzogSElESU5HIEFORCBVTkhJRElORyBCWSBTVUZGSVgJCQkqbmV0cnctbWgqIHt7ezIKKwkgICAgKFNlZSB8bmV0cnctbWZ8IGFuZCB8bmV0cnctbXJ8IGZvciBob3cgdG8gbWFyayBmaWxlcykKKwkJICAgICAgKHVzZXMgdGhlIGxvY2FsIG1hcmtlZCBmaWxlIGxpc3QpCisKK1RoaXMgY29tbWFuZCBleHRyYWN0cyB0aGUgc3VmZmljZXMgb2YgdGhlIG1hcmtlZCBmaWxlcyBhbmQgdG9nZ2xlcyB0aGVpcgorcHJlc2VuY2Ugb24gdGhlIGhpZGluZyBsaXN0LiAgUGxlYXNlIG5vdGUgdGhhdCBtYXJraW5nIHRoZSBzYW1lIHN1ZmZpeAordGhpcyB3YXkgbXVsdGlwbGUgdGltZXMgd2lsbCByZXN1bHQgaW4gdGhlIHN1ZmZpeCdzIHByZXNlbmNlIGJlaW5nIHRvZ2dsZWQKK2ZvciBlYWNoIGZpbGUgKHNvIGFuIGV2ZW4gcXVhbnRpdHkgb2YgbWFya2VkIGZpbGVzIGhhdmluZyB0aGUgc2FtZSBzdWZmaXgKK2lzIHRoZSBzYW1lIGFzIG5vdCBoYXZpbmcgYm90aGVyZWQgdG8gc2VsZWN0IHRoZW0gYXQgYWxsKS4KKworUmVsYXRlZCB0b3BpY3M6IHxuZXRydy1hfCB8ZzpuZXRyd19saXN0X2hpZGV8CisKK01BUktFRCBGSUxFUzogTU9WSU5HCQkJCQkJKm5ldHJ3LW1tKiB7e3syCisJICAgIChTZWUgfG5ldHJ3LW1mfCBhbmQgfG5ldHJ3LW1yfCBmb3IgaG93IHRvIG1hcmsgZmlsZXMpCisJCSAgICAgICh1c2VzIHRoZSBnbG9iYWwgbWFya2VkIGZpbGUgbGlzdCkKKworU2VsZWN0IGEgdGFyZ2V0IGRpcmVjdG9yeSB3aXRoIG1UICh8bmV0cnctbXR8KS4gIFRoZW4gY2hhbmdlIGRpcmVjdG9yeSwKK3NlbGVjdCBmaWxlKHMpIChzZWUgfG5ldHJ3LW1mfCksIGFuZCBwcmVzcyAibW0iLgorCitBc3NvY2lhdGVkIHNldHRpbmcgdmFyaWFibGU6IHxnOm5ldHJ3X2xvY2FsbW92ZWNtZHwgfGc6bmV0cndfc3NoX2NtZHwKKworTUFSS0VEIEZJTEVTOiBQUklOVElORwkJCQkJCSpuZXRydy1tcCoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAodXNlcyB0aGUgbG9jYWwgbWFya2VkIGZpbGUgbGlzdCkKKworTmV0cncgd2lsbCBhcHBseSB0aGUgfDpoYXJkY29weXwgY29tbWFuZCB0byBtYXJrZWQgZmlsZXMuICBXaGF0IGl0IGRvZXMKK2lzIG9wZW4gZWFjaCBmaWxlIGluIGEgb25lLWxpbmUgd2luZG93LCBleGVjdXRlIGhhcmRjb3B5LCB0aGVuIGNsb3NlIHRoZQorb25lLWxpbmUgd2luZG93LgorCisKK01BUktFRCBGSUxFUzogU09VUkNJTkcJCQkJCQkqbmV0cnctbXMqIHt7ezIKKwkgICAgKFNlZSB8bmV0cnctbWZ8IGFuZCB8bmV0cnctbXJ8IGZvciBob3cgdG8gbWFyayBmaWxlcykKKwkJICAgICAgKHVzZXMgdGhlIGxvY2FsIG1hcmtlZCBmaWxlIGxpc3QpCisKK05ldHJ3IHdpbGwgc291cmNlIHRoZSBtYXJrZWQgZmlsZXMgKHVzaW5nIHZpbSdzIHw6c291cmNlfCBjb21tYW5kKQorCisKK01BUktFRCBGSUxFUzogVEFHR0lORwkJCQkJCSpuZXRydy1tVCoge3t7MgorCSAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCQkgICAgICAodXNlcyB0aGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QpCisKK1RoZSAibXQiIG1hcHBpbmcgd2lsbCBhcHBseSB0aGUgY29tbWFuZCBpbiBnOm5ldHJ3X2N0YWdzIChieSBkZWZhdWx0LCBpdHMKKyJjdGFncyIpIHRvIG1hcmtlZCBmaWxlcy4gIEZvciByZW1vdGUgYnJvd3NpbmcsIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHRhZ3MgZmlsZQorbmV0cncgd2lsbCB1c2Ugc3NoIChzZWUgfGc6bmV0cndfc3NoX2NtZHwpLCBhbmQgc28gc3NoIG11c3QgYmUgYXZhaWxhYmxlIGZvcgordGhpcyB0byB3b3JrIG9uIHJlbW90ZSBzeXN0ZW1zLiAgRm9yIHlvdXIgbG9jYWwgc3lzdGVtLCBzZWUgfGN0YWdzfCBvbiBob3cgdG8KK2dldCBhIHZlcnNpb24uICBJIG15c2VsZiB1c2UgaGRydGFncywgY3VycmVudGx5IGF2YWlsYWJsZSBhdAoraHR0cDovL215c2l0ZS52ZXJpem9uLm5ldC9hc3Ryb25hdXQvc3JjL2luZGV4Lmh0bWwgLCBhbmQgaGF2ZSA+CisKKwlsZXQgZzpuZXRyd19jdGFncz0gImhkcnRhZyIKKzwKK2luIG15IDwudmltcmM+LgorCitXaGVuIGEgcmVtb3RlIHNldCBvZiBmaWxlcyBhcmUgdGFnZ2VkLCB0aGUgcmVzdWx0aW5nIHRhZ3MgZmlsZSBpcyAib2J0YWluZWQiOworaWUuIGEgY29weSBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgbG9jYWwgc3lzdGVtJ3MgZGlyZWN0b3J5LiAgVGhlIGxvY2FsIHRhZ3MKK2ZpbGUgaXMgdGhlbiBtb2RpZmllZCBzbyB0aGF0IG9uZSBtYXkgdXNlIGl0IHRocm91Z2ggdGhlIG5ldHdvcmsuICBUaGUKK21vZGlmaWNhdGlvbiBpcyBjb25jZXJucyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSB0YWdzOyBlYWNoIGZpbGVuYW1lIGlzCitwcmVjZWRlZCBieSB0aGUgbmV0cnctY29tcGF0aWJsZSB1cmwgdXNlZCB0byBvYnRhaW4gaXQuICBXaGVuIG9uZSBzdWJzZXF1ZW50bHkKK3VzZXMgb25lIG9mIHRoZSBnbyB0byB0YWcgYWN0aW9ucyAofHRhZ3N8KSwgdGhlIHVybCB3aWxsIGJlIHVzZWQgYnkgbmV0cncgdG8KK2VkaXQgdGhlIGRlc2lyZWQgZmlsZSBhbmQgZ28gdG8gdGhlIHRhZy4KKworQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlczogfGc6bmV0cndfc3NoX2NtZHwKKworCitNQVJLRUQgRklMRVM6IFNFVFRJTkcgVEhFIFRBUkdFVCBESVJFQ1RPUlkJCQkqbmV0cnctbXQqIHt7ezIKKyAgICAgKFNlZSB8bmV0cnctbWZ8IGFuZCB8bmV0cnctbXJ8IGZvciBob3cgdG8gbWFyayBmaWxlcykKKworU2V0IHRoZSBtYXJrZWQgZmlsZSBjb3B5L21vdmUtdG8gdGFyZ2V0IChzZWUgfG5ldHJ3LW1jfCBhbmQgfG5ldHJ3LW1tfCk6CisKKyAgKiBpZiB0aGUgY3Vyc29yIGlzIGF0b3AgYSBmaWxlIG5hbWUsIHRoZW4gdGhlIG5ldHJ3IHdpbmRvdydzIGN1cnJlbnRseQorICAgIGRpc3BsYXllZCBkaXJlY3RvcnkgaXMgdXNlZCBmb3IgdGhlIGNvcHkvbW92ZS10byB0YXJnZXQuCisKKyAgKiBhbHNvLCBpZiB0aGUgY3Vyc29yIGlzIGluIHRoZSBiYW5uZXIsIHRoZW4gdGhlIG5ldHJ3IHdpbmRvdydzIGN1cnJlbnRseQorICAgIGRpc3BsYXllZCBkaXJlY3RvcnkgaXMgdXNlZCBmb3IgdGhlIGNvcHkvbW92ZS10byB0YXJnZXQuCisKKyAgKiBob3dldmVyLCBpZiB0aGUgY3Vyc29yIGlzIGF0b3AgYSBkaXJlY3RvcnkgbmFtZSwgdGhlbiB0aGF0IGRpcmVjdG9yeSBpcworICAgIHVzZWQgZm9yIHRoZSBjb3B5L21vdmUtdG8gdGFyZ2V0CisKK1RoZXJlIGlzIG9ubHkgb25lIGNvcHkvbW92ZS10byB0YXJnZXQgcGVyIHZpbSBzZXNzaW9uOyBpZS4gdGhlIHRhcmdldCBpcyBhCitzY3JpcHQgdmFyaWFibGUgKHNlZSB8czp2YXJ8KSBhbmQgaXMgc2hhcmVkIGJldHdlZW4gYWxsIG5ldHJ3IHdpbmRvd3MgKGluIGFuCitpbnN0YW5jZSBvZiB2aW0pLgorCitNQVJLRUQgRklMRVM6IFVOTUFSS0lORwkJCQkJCSpuZXRydy1tdSoge3t7MgorICAgICAoU2VlIHxuZXRydy1tZnwgYW5kIHxuZXRydy1tcnwgZm9yIGhvdyB0byBtYXJrIGZpbGVzKQorCitUaGUgIm11IiBtYXBwaW5nIHdpbGwgdW5tYXJrIGFsbCBjdXJyZW50bHkgbWFya2VkIGZpbGVzLgorCisKK05FVFJXIEJST1dTRVIgVkFSSUFCTEVTCQkqbmV0cnctYnJvd3Nlci1vcHRpb25zKiAqbmV0cnctYnJvd3Nlci12YXIqIHt7ezIKKworKGlmIHlvdSdyZSBpbnRlcmVzdGQgaW4gdGhlIG5ldHJ3IGZpbGUgdHJhbnNmZXIgc2V0dGluZ3MsIHNlZSB8bmV0cnctb3B0aW9uc3wpCisKK1RoZSA8bmV0cncudmltPiBicm93c2VyIHByb3ZpZGVzIHNldHRpbmdzIGluIHRoZSBmb3JtIG9mIHZhcmlhYmxlcyB3aGljaAoreW91IG1heSBtb2RpZnk7IGJ5IHBsYWNpbmcgdGhlc2Ugc2V0dGluZ3MgaW4geW91ciA8LnZpbXJjPiwgeW91IG1heSBjdXN0b21pemUKK3lvdXIgYnJvd3NpbmcgcHJlZmVyZW5jZXMuICAoc2VlIGFsc286IHxuZXRydy1zZXR0aW5nc3wpCis+CisgICAtLS0JCQkJLS0tLS0tLS0tLS0KKyAgIFZhcgkJCQlFeHBsYW5hdGlvbgorICAgLS0tCQkJCS0tLS0tLS0tLS0tCis8ICpnOm5ldHJ3X2FsdG8qCQljaGFuZ2UgZnJvbSBhYm92ZSBzcGxpdHRpbmcgdG8gYmVsb3cgc3BsaXR0aW5nCisJCQkJYnkgc2V0dGluZyB0aGlzIHZhcmlhYmxlIChzZWUgfG5ldHJ3LW98KQorCQkJCSBkZWZhdWx0OiA9JnNiICAgICAgICAgICAoc2VlIHwnc2InfCkKKworICAqZzpuZXRyd19hbHR2KgkJY2hhbmdlIGZyb20gbGVmdCBzcGxpdHRpbmcgdG8gcmlnaHQgc3BsaXR0aW5nCisJCQkJYnkgc2V0dGluZyB0aGlzIHZhcmlhYmxlIChzZWUgfG5ldHJ3LXZ8KQorCQkJCSBkZWZhdWx0OiA9JnNwciAgICAgICAgICAoc2VlIHwnc3ByJ3wpCisKKyAgKmc6bmV0cndfYnJvd3NlX3NwbGl0Kgl3aGVuIGJyb3dzaW5nLCA8Y3I+IHdpbGwgb3BlbiB0aGUgZmlsZSBieToKKwkJCQk9MDogcmUtdXNpbmcgdGhlIHNhbWUgd2luZG93CisJCQkJPTE6IGhvcml6b250YWxseSBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdCAgCisJCQkJPTI6IHZlcnRpY2FsbHkgICBzcGxpdHRpbmcgdGhlIHdpbmRvdyBmaXJzdCAgCisJCQkJPTM6IG9wZW4gZmlsZSBpbiBuZXcgdGFiCisJCQkJPTQ6IGFjdCBsaWtlICJQIiAoaWUuIG9wZW4gcHJldmlvdXMgd2luZG93KQorCisgICpnOm5ldHJ3X2Jyb3dzZXhfdmlld2VyKglzcGVjaWZ5IHVzZXIncyBwcmVmZXJlbmNlIGZvciBhIHZpZXdlcjogPgorCQkJCQkia2ZtY2xpZW50IGV4ZWMiCisJCQkJCSJnbm9tZS1vcGVuIgorPAkJCQlJZiA+CisJCQkJCSItIgorPAkJCQlpcyB1c2VkLCB0aGVuIG5ldHJ3RmlsZUhhbmRsZXIoKSB3aWxsIGxvb2sgZm9yCisJCQkJYSBzY3JpcHQvZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBnaXZlbgorCQkJCWV4dGVuc2lvbi4gIChzZWUgfG5ldHJ3X2ZpbGVoYW5kbGVyfCkuCisKKyAgKmc6bmV0cndfY2RfZXNjYXBlKgkJPSJbXSMqJCUnXCIgP2AhJigpOzw+XFwiCisgIAkJCQlUaGlzIG9wdGlvbiBpcyB1c2VkIHRvIGVzY2FwZSBkaXJlY3RvcnkgbmFtZXMKKwkJCQliZWZvcmUgY2hhbmdpbmcgZGlyZWN0b3J5IHRvIHRoZW0uCisKKyAgKmc6bmV0cndfY29tcHJlc3MqCQk9Imd6aXAiCisJCQkJICAgIFdpbGwgY29tcHJlc3MgbWFya2VkIGZpbGVzIHdpdGggdGhpcworCQkJCSAgICBjb21tYW5kCisKKyAgKmc6bmV0cndfZGVjb21wcmVzcyoJCT0geyAiLmd6IiA6ICJndW56aXAiICwKKwkJCQkgICAgIi5iejIiIDogImJ1bnppcDIiICwKKwkJCQkgICAgIi56aXAiIDogInVuemlwIiAsCisJCQkJICAgICIudGFyIiA6ICJ0YXIgLXhmIn0KKwkJCQkgIEEgZGljdGlvbmFyeSBtYXBwaW5nIHN1ZmZpY2VzIHRvCisJCQkJICBkZWNvbXByZXNzaW9uIHByb2dyYW1zLgorCisgICpnOm5ldHJ3X2Zhc3Ricm93c2UqCQk9MDogc2xvdyBzcGVlZCBkaXJlY3RvcnkgYnJvd3Npbmc7CisJCQkJICAgIG5ldmVyIHJlLXVzZXMgZGlyZWN0b3J5IGxpc3RpbmdzLAorCQkJCSAgICBhbHdheXMgb2J0YWlucyBkaXJlY3RvcnkgbGlzdGluZ3MuCisJCQkJPTE6IG1lZGl1bSBzcGVlZCBkaXJlY3RvcnkgYnJvd3Npbmc7CisJCQkJICAgIHJlLXVzZSBkaXJlY3RvcnkgbGlzdGluZ3Mgb25seQorCQkJCSAgICB3aGVuIHJlbW90ZSBkaXJlY3RvcnkgYnJvd3NpbmcuCisJCQkJICAgIChkZWZhdWx0IHZhbHVlKQorCQkJCT0yOiBmYXN0IGRpcmVjdG9yeSBicm93c2luZzsKKwkJCQkgICAgb25seSBvYnRhaW5zIGRpcmVjdG9yeSBsaXN0aW5ncyB3aGVuIHRoZQorCQkJCSAgICBkaXJlY3RvcnkgaGFzbid0IGJlZW4gc2VlbiBiZWZvcmUKKwkJCQkgICAgKG9yIHxuZXRydy1jdHJsLWx8IGlzIHVzZWQpLgorCisJCQkJRmFzdCBicm93c2luZyByZXRhaW5zIG9sZCBkaXJlY3RvcnkgbGlzdGluZworCQkJCWJ1ZmZlcnMgc28gdGhhdCB0aGV5IGRvbid0IG5lZWQgdG8gYmUKKwkJCQlyZS1hY3F1aXJlZC4gIFRoaXMgZmVhdHVyZSBpcyBlc3BlY2lhbGx5CisJCQkJaW1wb3J0YW50IGZvciByZW1vdGUgYnJvd3NpbmcuICBIb3dldmVyLCBpZgorCQkJCWEgZmlsZSBpcyBpbnRyb2R1Y2VkIG9yIGRlbGV0ZWQgaW50byBvciBmcm9tCisJCQkJc3VjaCBkaXJlY3RvcmllcywgdGhlIG9sZCBkaXJlY3RvcnkgYnVmZmVyCisJCQkJYmVjb21lcyBvdXQtb2YtZGF0ZS4gIE9uZSBtYXkgYWx3YXlzIHJlZnJlc2gKKwkJCQlzdWNoIGEgZGlyZWN0b3J5IGxpc3Rpbmcgd2l0aCB8bmV0cnctY3RybC1sfC4KKwkJCQlUaGlzIG9wdGlvbiBnaXZlcyB0aGUgdXNlciB0aGUgY2hvaWNlIG9mCisJCQkJdHJhZGluZyBvZmYgYWNjdXJhY3kgKGllLiB1cC10by1kYXRlIGxpc3RpbmcpCisJCQkJdmVyc3VzIHNwZWVkLgorCisgICpnOm5ldHJ3X2ZuYW1lX2VzY2FwZSoJPScgPyY7JScKKyAgCQkJCVVzZWQgb24gZmlsZW5hbWVzIGJlZm9yZSByZW1vdGUgcmVhZGluZy93cml0aW5nCisKKyAgKmc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3QqCWZ0cCBjYW4gcHJvZHVjZSBhIG51bWJlciBvZiBlcnJvcnMgYW5kIHdhcm5pbmdzCisJCQkJdGhhdCBjYW4gc2hvdyB1cCBhcyAiZGlyZWN0b3JpZXMiIGFuZCAiZmlsZXMiCisJCQkJaW4gdGhlIGxpc3RpbmcuICBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0bworCQkJCXJlbW92ZSBzdWNoIGVtYmVkZGVkIG1lc3NhZ2VzLiAgQnkgZGVmYXVsdCBpdHMKKwkJCQl2YWx1ZSBpczoKKwkJCQkgJ150b3RhbFxzXCtcZFwrJFx8CisJCQkJIF5Ucnlpbmdcc1wrXGRcKy4qJFx8CisJCQkJIF5LRVJCRVJPU19WXGQgcmVqZWN0ZWRcfAorCQkJCSBeU2VjdXJpdHkgZXh0ZW5zaW9ucyBub3RcfAorCQkJCSBObyBzdWNoIGZpbGVcfAorCQkJCSA6IGNvbm5lY3QgdG8gYWRkcmVzcyBbMC05YS1mQS1GOl0qCisJCQkJIDogTm8gcm91dGUgdG8gaG9zdCQnCisKKyAgKmc6bmV0cndfZnRwX2xpc3RfY21kKglvcHRpb25zIGZvciBwYXNzaW5nIGFsb25nIHRvIGZ0cCBmb3IgZGlyZWN0b3J5CisJCQkJbGlzdGluZy4gIERlZmF1bHRzOgorCQkJCSB1bml4IG9yIGc6bmV0cndfY3lnd2luIHNldDogOiAibHMgLWxGIgorCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgorCisKKyAgKmc6bmV0cndfZnRwX3NpemVsaXN0X2NtZCoJb3B0aW9ucyBmb3IgcGFzc2luZyBhbG9uZyB0byBmdHAgZm9yIGRpcmVjdG9yeQorCQkJCWxpc3RpbmcsIHNvcnRlZCBieSBzaXplIG9mIGZpbGUuCisJCQkJRGVmYXVsdHM6CisJCQkJIHVuaXggb3IgZzpuZXRyd19jeWd3aW4gc2V0OiA6ICJscyAtc2xGIgorCQkJCSBvdGhlcndpc2UgICAgICAgICAgICAgICAgICAgICAiZGlyIgorCisgICpnOm5ldHJ3X2Z0cF90aW1lbGlzdF9jbWQqCW9wdGlvbnMgZm9yIHBhc3NpbmcgYWxvbmcgdG8gZnRwIGZvciBkaXJlY3RvcnkKKwkJCQlsaXN0aW5nLCBzb3J0ZWQgYnkgdGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbi4KKwkJCQlEZWZhdWx0czoKKwkJCQkgdW5peCBvciBnOm5ldHJ3X2N5Z3dpbiBzZXQ6IDogImxzIC10bEYiCisJCQkJIG90aGVyd2lzZSAgICAgICAgICAgICAgICAgICAgICJkaXIiCisKKyAgKmc6bmV0cndfZ2xvYl9lc2NhcGUqCQk9J1tdKj9ge34kJworICAJCQkJVGhlc2UgY2hhcmFjdGVycyBpbiBkaXJlY3RvcnkgbmFtZXMgYXJlCisJCQkJZXNjYXBlZCBiZWZvcmUgYXBwbHlpbmcgZ2xvYigpCisKKyAgKmc6bmV0cndfaGlkZSoJCWlmIHRydWUsIHRoZSBoaWRpbmcgbGlzdCBpcyB1c2VkCisJCQkJIGRlZmF1bHQ6ID0wCisKKyAgKmc6bmV0cndfa2VlcGRpcioJCT0xIChkZWZhdWx0KSBrZWVwIGN1cnJlbnQgZGlyZWN0b3J5IGltbXVuZSBmcm9tCisJCQkJICAgdGhlIGJyb3dzaW5nIGRpcmVjdG9yeS4KKwkJCQk9MCBrZWVwIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGUgc2FtZSBhcyB0aGUKKwkJCQkgICBicm93c2luZyBkaXJlY3RvcnkuCisJCQkJVGhlIGN1cnJlbnQgYnJvd3NpbmcgZGlyZWN0b3J5IGlzIGNvbnRhaW5lZCBpbgorCQkJCWI6bmV0cndfY3VyZGlyIChhbHNvIHNlZSB8bmV0cnctY3wpCisKKyAgKmc6bmV0cndfbGlzdF9jbWQqCQljb21tYW5kIGZvciBsaXN0aW5nIHJlbW90ZSBkaXJlY3RvcmllcworCQkJCSBkZWZhdWx0OiAoaWYgc3NoIGlzIGV4ZWN1dGFibGUpCisJCQkJICAgICAgICAgICJzc2ggSE9TVE5BTUUgbHMgLUZMYSIKKworICAqZzpuZXRyd19saXN0c3R5bGUqCQlTZXQgdGhlIGRlZmF1bHQgbGlzdGluZyBzdHlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOiB0aGluIGxpc3RpbmcgKG9uZSBmaWxlIHBlciBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE6IGxvbmcgbGlzdGluZyAob25lIGZpbGUgcGVyIGxpbmUgd2l0aCB0aW1lCisJCQkJICAgICBzdGFtcCBpbmZvcm1hdGlvbiBhbmQgZmlsZSBzaXplKQorCQkJCT0gMjogd2lkZSBsaXN0aW5nIChtdWx0aXBsZSBmaWxlcyBpbiBjb2x1bW5zKQorCQkJCT0gMzogdHJlZSBzdHlsZSBsaXN0aW5nCisgICpnOm5ldHJ3X2xpc3RfaGlkZSoJCWNvbW1hIHNlcGFyYXRlZCBwYXR0ZXJuIGxpc3QgZm9yIGhpZGluZyBmaWxlcworCQkJCVBhdHRlcm5zIGFyZSByZWd1bGFyIGV4cHJlc3Npb25zIChzZWUgfHJlZ2V4cHwpCisJCQkJRXhhbXBsZTogbGV0IGc6bmV0cndfbGlzdF9oaWRlPSAnLipcLnN3cCQnCisJCQkJIGRlZmF1bHQ6ICIiCisKKyAgKmc6bmV0cndfbG9jYWxjb3B5Y21kKgk9ImNwIiBMaW51eC9Vbml4L01hY09TL0N5Z3dpbgorICAJCQkJPSJjb3B5IiBXaW5kb3dzCisJCQkJQ29waWVzIG1hcmtlZCBmaWxlcyAofG5ldHJ3LW1mfCkgdG8gdGFyZ2V0CisJCQkJZGlyZWN0b3J5ICh8bmV0cnctbXR8LCB8bmV0cnctbWN8KQorCisgICpnOm5ldHJ3X2xvY2FsbW92ZWNtZCoJPSJtdiIgTGludXgvVW5peC9NYWNPUy9DeWd3aW4KKyAgCQkJCT0ibW92ZSIgV2luZG93cworCQkJCU1vdmVzIG1hcmtlZCBmaWxlcyAofG5ldHJ3LW1mfCkgdG8gdGFyZ2V0CisJCQkJZGlyZWN0b3J5ICh8bmV0cnctbXR8LCB8bmV0cnctbW18KQorCisgICpnOm5ldHJ3X2xvY2FsX21rZGlyKgkJY29tbWFuZCBmb3IgbWFraW5nIGEgbG9jYWwgZGlyZWN0b3J5CisJCQkJIGRlZmF1bHQ6ICJta2RpciIKKworICAqZzpuZXRyd19sb2NhbF9ybWRpcioJCXJlbW92ZSBkaXJlY3RvcnkgY29tbWFuZCAocm1kaXIpCisJCQkJIGRlZmF1bHQ6ICJybWRpciIKKworICAqZzpuZXRyd19tYXhmaWxlbmFtZWxlbioJPTMyIGJ5IGRlZmF1bHQsIHNlbGVjdGVkIHNvIGFzIHRvIG1ha2UgbG9uZworCQkJCSAgICBsaXN0aW5ncyBmaXQgb24gODAgY29sdW1uIGRpc3BsYXlzLgorCQkJCUlmIHlvdXIgc2NyZWVuIGlzIHdpZGVyLCBhbmQgeW91IGhhdmUgZmlsZQorCQkJCW9yIGRpcmVjdG9yeSBuYW1lcyBsb25nZXIgdGhhbiAzMiBieXRlcywKKwkJCQl5b3UgbWF5IHNldCB0aGlzIG9wdGlvbiB0byBrZWVwIGxpc3RpbmdzCisJCQkJY29sdW1uYXIuCisKKyAgKmc6bmV0cndfbWtkaXJfY21kKgkJY29tbWFuZCBmb3IgbWFraW5nIGEgcmVtb3RlIGRpcmVjdG9yeQorCQkJCSBkZWZhdWx0OiAic3NoIFVTRVBPUlQgSE9TVE5BTUUgbWtkaXIiCisKKyAgKmc6bmV0cndfcmV0bWFwKgkJaWYgaXQgZXhpc3RzIGFuZCBpcyBzZXQgdG8gb25lLCB0aGVuCisJCQkJPDItbGVmdG1vdXNlPiB3aWxsIGJlIG1hcHBlZCBmb3IgZWFzeQorCQkJCXJldHVybiB0byB0aGUgbmV0cncgYnJvd3NlciB3aW5kb3cuCisJCQkJKGV4YW1wbGU6IGNsaWNrIG9uY2UgdG8gc2VsZWN0IGFuZCBvcGVuCisJCQkJYSBmaWxlLCBkb3VibGUtY2xpY2sgdG8gcmV0dXJuKQorCQkJCSAgZGVmYXVsdDogPTAKKworICAqZzpuZXRyd19ybV9jbWQqCQljb21tYW5kIGZvciByZW1vdmluZyBmaWxlcworCQkJCSBkZWZhdWx0OiAic3NoIFVTRVBPUlQgSE9TVE5BTUUgcm0iCisKKyAgKmc6bmV0cndfcm1kaXJfY21kKgkJY29tbWFuZCBmb3IgcmVtb3ZpbmcgZGlyZWN0b3JpZXMKKwkJCQkgZGVmYXVsdDogInNzaCBVU0VQT1JUIEhPU1ROQU1FIHJtZGlyIgorCisgICpnOm5ldHJ3X3JtZl9jbWQqCQkgY29tbWFuZCBmb3IgcmVtb3Zpbmcgc29mdGxpbmtzCisJCQkJIGRlZmF1bHQ6ICJzc2ggVVNFUE9SVCBIT1NUTkFNRSBybSAtZiIKKworICAqZzpuZXRyd19zb3J0X2J5KgkJc29ydCBieSAibmFtZSIsICJ0aW1lIiwgb3IgInNpemUiCisJCQkJIGRlZmF1bHQ6ICJuYW1lIgorCisgICpnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uKglzb3J0aW5nIGRpcmVjdGlvbjogIm5vcm1hbCIgb3IgInJldmVyc2UiCisJCQkJIGRlZmF1bHQ6ICJub3JtYWwiCisKKyAgKmc6bmV0cndfc29ydF9zZXF1ZW5jZSoJd2hlbiBzb3J0aW5nIGJ5IG5hbWUsIGZpcnN0IHNvcnQgYnkgdGhlCisJCQkJY29tbWEtc2VwYXJhdGVkIHBhdHRlcm4gc2VxdWVuY2UKKwkJCQkgZGVmYXVsdDogJ1tcL10kLCosXC5iYWskLFwubyQsXC5oJCwKKwkJCQkgICAgICAgICAgIFwuaW5mbyQsXC5zd3AkLFwub2JqJCcKKworICAqZzpuZXRyd19zcGVjaWFsX3N5bnRheCoJSWYgdHJ1ZSwgdGhlbiBjZXJ0YWluIGZpbGVzIHdpbGwgYmUgc2hvd24KKyAgCQkJCWluIHNwZWNpYWwgc3ludGF4IGluIHRoZSBicm93c2VyOgorCisJCQkJCW5ldHJ3QmFrICAgICA6ICouYmFrCisJCQkJCW5ldHJ3Q29tcHJlc3M6ICouZ3ogKi5iejIgKi5aICouemlwCisJCQkJCW5ldHJ3RGF0YSAgICA6ICouZGF0CisJCQkJCW5ldHJ3SGRyICAgICA6ICouaAorCQkJCQluZXRyd0xpYiAgICAgOiAqLmEgKi5zbyAqLmxpYiAqLmRsbAorCQkJCQluZXRyd01ha2VmaWxlOiBbbU1dYWtlZmlsZSAqLm1haworCQkJCQluZXRyd09iaiAgICAgOiAqLm8gKi5vYmoKKwkJCQkJbmV0cndUYWdzICAgIDogdGFncyBBTm1lbnUgQU50YWdzCisJCQkJCW5ldHJ3VGlsZGUgICA6ICp+IAorCQkJCQluZXRyd1RtcCAgICAgOiB0bXAqICp0bXAKKworCQkJCVRoZXNlIHN5bnRheCBoaWdobGlnaHRpbmcgZ3JvdXBzIGFyZSBsaW5rZWQKKwkJCQl0byBGb2xkZWQgb3IgRGlmZkNoYW5nZSBieSBkZWZhdWx0CisJCQkJKHNlZSB8aGwtRm9sZGVkfCBhbmQgfGhsLURpZmZDaGFuZ2V8KSwgYnV0CisJCQkJb25lIG1heSBwdXQgbGluZXMgbGlrZSA+CisJCQkJCWhpIGxpbmsgbmV0cndDb21wcmVzcyBWaXN1YWwKKzwJCQkJaW50byBvbmUncyA8LnZpbXJjPiB0byB1c2Ugb25lJ3Mgb3duCisJCQkJcHJlZmVyZW5jZXMuCisKKyAgKmc6bmV0cndfc3NoX2NtZCoJCU9uZSBtYXkgc3BlY2lmeSBhbiBleGVjdXRhYmxlIGNvbW1hbmQKKwkJCQl0byB1c2UgaW5zdGVhZCBvZiBzc2ggZm9yIHJlbW90ZSBhY3Rpb25zCisJCQkJc3VjaCBhcyBsaXN0aW5nLCBmaWxlIHJlbW92YWwsIGV0Yy4KKwkJCQkgZGVmYXVsdDogc3NoCisKKyAgKmc6bmV0cndfc3NoX2Jyb3dzZV9yZWplY3QqCXNzaCBjYW4gc29tZXRpbWVzIHByb2R1Y2UgdW53YW50ZWQgbGluZXMsCisJCQkJbWVzc2FnZXMsIGJhbm5lcnMsIGFuZCB3aGF0bm90IHRoYXQgb25lIGRvZXNuJ3QKKwkJCQl3YW50IG1hc3F1ZXJhZGluZyBhcyAiZGlyZWN0b3JpZXMiIGFuZCAiZmlsZXMiLgorCQkJCVVzZSB0aGlzIHBhdHRlcm4gdG8gcmVtb3ZlIHN1Y2ggZW1iZWRkZWQKKwkJCQltZXNzYWdlcy4gIEJ5IGRlZmF1bHQgaXRzIHZhbHVlIGlzOgorCQkJCQkgJ150b3RhbFxzXCtcZFwrJCcKKworCisgICpnOm5ldHJ3X3RtcGZpbGVfZXNjYXBlKgk9JyAmOycKKyAgCQkJCWVzY2FwZSgpIGlzIGFwcGxpZWQgdG8gYWxsIHRlbXBvcmFyeSBmaWxlcworCQkJCXRvIGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLgorCisgICpnOm5ldHJ3X3RpbWVmbXQqCQlzcGVjaWZ5IGZvcm1hdCBzdHJpbmcgdG8gdmltJ3Mgc3RyZnRpbWUoKS4KKwkJCQlUaGUgZGVmYXVsdCwgIiVjIiwgaXMgInRoZSBwcmVmZXJyZWQgZGF0ZQorCQkJCWFuZCB0aW1lIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgY3VycmVudAorCQkJCWxvY2FsZSIgYWNjb3JkaW5nIHRvIG15IG1hbnBhZ2UgZW50cnkgZm9yCisJCQkJc3RyZnRpbWUoKTsgaG93ZXZlciwgbm90IGFsbCBhcmUgc2F0aXNmaWVkCisJCQkJd2l0aCBpdC4gIFNvbWUgYWx0ZXJuYXRpdmVzOgorCQkJCSAiJWEgJWQgJWIgJVkgJVQiLAorCQkJCSAiICVhICVZLSVtLSVkICAlSS0lTS0lUyAlcCIKKwkJCQkgZGVmYXVsdDogIiVjIgorCisgICpnOm5ldHJ3X3VzZV9ub3N3ZioJCW5ldHJ3IG5vcm1hbGx5IGF2b2lkcyB3cml0aW5nIHN3YXBmaWxlcworICAJCQkJZm9yIGJyb3dzZXIgYnVmZmVycy4gIEhvd2V2ZXIsIHVuZGVyIHNvbWUKKwkJCQlzeXN0ZW1zIHRoaXMgYXBwYXJlbnRseSBpcyBjYXVzaW5nIG5hc3R5CisJCQkJbWxfZ2V0IGVycm9ycyB0byBhcHBlYXI7IGlmIHlvdSdyZSBnZXR0aW5nCisJCQkJbWxfZ2V0IGVycm9ycywgdHJ5IHB1dHRpbmcKKwkJCQkgIGxldCBnOm5ldHJ3X3VzZV9ub3N3Zj0gMAorCQkJCWluIHlvdXIgLnZpbXJjLgorCisgICpnOm5ldHJ3X3dpbnNpemUqCQlzcGVjaWZ5IGluaXRpYWwgc2l6ZSBvZiBuZXcgd2luZG93cyBtYWRlIHdpdGgKKwkJCQkibyIgKHNlZSB8bmV0cnctb3wpLCAidiIgKHNlZSB8bmV0cnctdnwpLAorCQkJCXw6SGV4cGxvcmV8IG9yIHw6VmV4cGxvcmV8LgorCQkJCSBkZWZhdWx0OiAiIgorCisgICpnOm5ldHJ3X3hzdHJsZW4qCQlDb250cm9scyBob3cgbmV0cncgY29tcHV0ZXMgYSBzdHJpbmcKKyAgCQkJCWluY2x1ZGluZyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMnIHN0cmluZworCQkJCWxlbmd0aC4gKHRoYW5rcyB0byBOIFdlaWJ1bGwsIFQgTWVjaGVseW5jaykKKwkJCQk9MDogdXNlcyBWaW0ncyBidWlsdC1pbiBzdHJsZW4oKQorCQkJCT0xOiBudW1iZXIgb2YgY29kZXBvaW50cyAoTGF0aW4gKyBhIGNvbWJpbmluZworCQkJCSAgICBjaXJjdW1mbGV4IGlzIHR3byBjb2RlcG9pbnRzKSAgKERFRkFVTFQpCisJCQkJPTI6IG51bWJlciBvZiBzcGFjaW5nIGNvZGVwb2ludHMgKExhdGluIGEgKworCQkJCSAgICBjb21iaW5pbmcgY2lyY3VtZmxleCBpcyBvbmUgc3BhY2luZyAKKwkJCQkgICAgY29kZXBvaW50OyBhIGhhcmQgdGFiIGlzIG9uZTsgd2lkZSBhbmQKKwkJCQkgICAgbmFycm93IENKSyBhcmUgb25lIGVhY2g7IGV0Yy4pCisJCQkJPTM6IHZpcnR1YWwgbGVuZ3RoIChjb3VudGluZyB0YWJzIGFzIGFueXRoaW5nCisJCQkJICAgIGJldHdlZW4gMSBhbmQgfCd0YWJzdG9wJ3wsIHdpZGUgQ0pKSyBhcyAyCisJCQkJICAgIHJhdGhlciB0aGFuIDEsIEFyYWJpYyBhbGlmIGFzIHplcm8gd2hlbgorCQkJCSAgICBpbW1lZGlhdGVseSBwcmVjZWRlZCBieSBsYW0sIG9uZQorCQkJCSAgICBvdGhlcndpc2UsIGV0YykKKworICAqZzpOZXRyd1RvcEx2bE1lbnUqCQlUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgdG9wIGxldmVsCisJCQkJbWVudSBuYW1lOyBieSBkZWZhdWx0LCBpdCdzICJOZXRydy4iLiAgSWYKKwkJCQl5b3Ugd2lzaCB0byBjaGFuZ2UgdGhpcywgZG8gc28gaW4geW91cgorCQkJCS52aW1yYy4KKworTkVUUlcgQlJPV1NJTkcgQU5EIE9QVElPTiBJTkNPTVBBVElCSUxJVElFUwkqbmV0cnctaW5jb21wYXRpYmxlKiB7e3syCisKK05ldHJ3IGhhcyBiZWVuIGRlc2lnbmVkIHRvIGhhbmRsZSB1c2VyIG9wdGlvbnMgYnkgc2F2aW5nIHRoZW0sIHNldHRpbmcgdGhlCitvcHRpb25zIHRvIHNvbWV0aGluZyB0aGF0J3MgY29tcGF0aWJsZSB3aXRoIG5ldHJ3J3MgbmVlZHMsIGFuZCB0aGVuIHJlc3RvcmluZwordGhlbS4gIEhvd2V2ZXIsIHRoZSBhdXRvY2hkaXIgb3B0aW9uOiA+CisJOnNldCBhY2QKK2lzIHByb2JsZW1hdGljYWwuICBBdXRvY2hkaXIgc2V0cyB0aGUgY3VycmVudCBkaXJlY3RvcnkgdG8gdGhhdCBjb250YWluaW5nIHRoZQorZmlsZSB5b3UgZWRpdDsgdGhpcyBhcHBhcmVudGx5IGFsc28gYXBwbGllcyB0byBkaXJlY3Rvcmllcy4gIEluIG90aGVyIHdvcmRzLAorYXV0b2NoZGlyIHNldHMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoYXQgY29udGFpbmluZyB0aGUgImZpbGUiIChldmVuIGlmCit0aGF0ICJmaWxlIiBpcyBpdHNlbGYgYSBkaXJlY3RvcnkpLgorCitORVRSVyBTRVRUSU5HUwkJCQkJCSpuZXRydy1zZXR0aW5ncyoge3t7MgogCiBXaXRoIHRoZSBOZXRyd1NldHRpbmdzLnZpbSBwbHVnaW4sID4KIAk6TmV0cndTZXR0aW5ncwpAQCAtMTUxMiwxMSArMTk5NiwxMjEgQEAKIHNldHRpbmdzIHRoZXJlaW4gd2lsbCBiZSB1c2VkLiAgT25lIG1heSBhbHNvIHByZXNzICI/IiBvbiBhbnkgb2YgdGhlIGxpbmVzIGZvcgogaGVscCBvbiB3aGF0IGVhY2ggb2YgdGhlIHZhcmlhYmxlcyBkby4KIAotKGFsc28gc2VlOiB8bmV0cnctYnJvd3NlLXZhcnwgfG5ldHJ3LXByb3RvY29sfCB8bmV0cnctdmFyfCB8bmV0cnctdmFyaWFibGVzfCkKKyhhbHNvIHNlZTogfG5ldHJ3LWJyb3dzZXItdmFyfCB8bmV0cnctcHJvdG9jb2x8IHxuZXRydy12YXJ8IHxuZXRydy12YXJpYWJsZXN8KQogCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotMTAuIFByb2JsZW1zIGFuZCBGaXhlcwkJCQkJCSpuZXRydy1wcm9ibGVtcyoKK09CVEFJTklORyBBIEZJTEUJCQkJCSpuZXRydy1PKiB7e3syCisKK0lmIHRoZXJlIGFyZSBubyBtYXJrZWQgZmlsZXM6CisKKyAgICBXaGVuIGJyb3dzaW5nIGEgcmVtb3RlIGRpcmVjdG9yeSwgb25lIG1heSBvYnRhaW4gYSBmaWxlIHVuZGVyIHRoZSBjdXJzb3IKKyAgICAoaWUuICBnZXQgYSBjb3B5IG9uIHlvdXIgbG9jYWwgbWFjaGluZSwgYnV0IG5vdCBlZGl0IGl0KSBieSBwcmVzc2luZyB0aGUgTworICAgIGtleS4KKworSWYgdGhlcmUgYXJlIG1hcmtlZCBmaWxlczoKKworICAgIFRoZSBtYXJrZWQgZmlsZXMgd2lsbCBiZSBvYnRhaW5lZCAoaWUuIGEgY29weSB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHlvdXIKKyAgICBsb2NhbCBtYWNoaW5lLCBidXQgbm90IHNldCB1cCBmb3IgZWRpdGluZykuCisKK09ubHkgZnRwIGFuZCBzY3AgYXJlIHN1cHBvcnRlZCBmb3IgdGhpcyBvcGVyYXRpb24gKGJ1dCBzaW5jZSB0aGVzZSB0d28gYXJlCithdmFpbGFibGUgZm9yIGJyb3dzaW5nLCB0aGF0IHNob3VsZG4ndCBiZSBhIHByb2JsZW0pLiAgVGhlIHN0YXR1cyBiYXIgd2lsbAordGhlbiBzaG93LCBvbiBpdHMgcmlnaHQgaGFuZCBzaWRlLCBhIG1lc3NhZ2UgbGlrZSAiT2J0YWluaW5nIGZpbGVuYW1lIi4gIFRoZQorc3RhdHVzbGluZSB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIHRoZSB0cmFuc2ZlciBpcyBjb21wbGV0ZS4KKworTmV0cncgY2FuIGFsc28gIm9idGFpbiIgYSBmaWxlIHVzaW5nIHRoZSBsb2NhbCBicm93c2VyLiAgTmV0cncncyBkaXNwbGF5CitvZiBhIGRpcmVjdG9yeSBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgVmltJ3MgImN1cnJlbnQgZGlyZWN0b3J5IiwKK3VubGVzcyB8ZzpuZXRyd19rZWVwZGlyfCBpcyBzZXQgdG8gMCBpbiB0aGUgdXNlcidzIDwudmltcmM+LiAgT25lIG1heSBzZWxlY3QKK2EgZmlsZSB1c2luZyB0aGUgbG9jYWwgYnJvd3NlciAoYnkgcHV0dGluZyB0aGUgY3Vyc29yIG9uIGl0KSBhbmQgcHJlc3NpbmcKKyJPIiB3aWxsIHRoZW4gIm9idGFpbiIgdGhlIGZpbGU7IGllLiBjb3B5IGl0IHRvIFZpbSdzIGN1cnJlbnQgZGlyZWN0b3J5LgorCitSZWxhdGVkIHRvcGljczoKKyAqIFRvIHNlZSB3aGF0IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcywgdXNlIHw6cHdkfAorICogVG8gbWFrZSB0aGUgY3VycmVudGx5IGJyb3dzZWQgZGlyZWN0b3J5IHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgc2VlIHxuZXRydy1jfAorICogVG8gYXV0b21hdGljYWxseSBtYWtlIHRoZSBjdXJyZW50bHkgYnJvd3NlZCBkaXJlY3RvcnkgdGhlIGN1cnJlbnQKKyAgIGRpcmVjdG9yeSwgc2VlIHxnOm5ldHJ3X2tlZXBkaXJ8LgorCisKK1BSRVZJRVcgV0lORE9XCQkJCSpuZXRydy1wKiAqbmV0cnctcHJldmlldyoge3t7MgorCitPbmUgbWF5IHVzZSBhIHByZXZpZXcgd2luZG93IGJ5IHVzaW5nIHRoZSAicCIga2V5IHdoZW4gdGhlIGN1cnNvciBpcyBhdG9wIHRoZQorZGVzaXJlZCBmaWxlbmFtZSB0byBiZSBwcmV2aWV3ZWQuICBUaGUgZGlzcGxheSB3aWxsIHRoZW4gc3BsaXQgdG8gc2hvdyBib3RoCit0aGUgYnJvd3NlciAod2hlcmUgdGhlIGN1cnNvciB3aWxsIHJlbWFpbikgYW5kIHRoZSBmaWxlIChzZWUgfDpwZWRpdHwpLgorQnkgZGVmYXVsdCwgdGhlIHNwbGl0IHdpbGwgYmUgdGFrZW4gaG9yaXpvbnRhbGx5OyBvbmUgbWF5IHVzZSB2ZXJ0aWNhbAorc3BsaXR0aW5nIGlmIG9uZSBoYXMgc2V0IHxnOm5ldHJ3X3ByZXZpZXd8IGZpcnN0LgorCisKK1BSRVZJT1VTIFdJTkRPVwkJCQkqbmV0cnctUCogKm5ldHJ3LXBydndpbioge3t7MgorCitUbyBlZGl0IGEgZmlsZSBvciBkaXJlY3RvcnkgaW4gdGhlIHByZXZpb3VzbHkgdXNlZCAobGFzdCBhY2Nlc3NlZCkgd2luZG93IChzZWUKKzpoZSB8Q1RSTC1XX3B8KSwgcHJlc3MgYSAiUCIuICBJZiB0aGVyZSdzIG9ubHkgb25lIHdpbmRvdywgdGhlbiB0aGUgb25lIHdpbmRvdword2lsbCBiZSBob3Jpem9udGFsbHkgc3BsaXQgKGFib3ZlL2JlbG93IHNwbGl0dGluZyBpcyBjb250cm9sbGVkIGJ5Cit8ZzpuZXRyd19hbHRvfCwgYW5kIGl0cyBpbml0aWFsIHNpemUgaXMgY29udHJvbGxlZCBieSB8ZzpuZXRyd193aW5zaXplfCkuCisKK0lmIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZSB3aW5kb3csIHRoZSBwcmV2aW91cyB3aW5kb3cgd2lsbCBiZSByZS11c2VkIG9uCit0aGUgc2VsZWN0ZWQgZmlsZS9kaXJlY3RvcnkuICBJZiB0aGUgcHJldmlvdXMgd2luZG93J3MgYXNzb2NpYXRlZCBidWZmZXIKK2hhcyBiZWVuIG1vZGlmaWVkLCBhbmQgdGhlcmUncyBvbmx5IG9uZSB3aW5kb3cgd2l0aCB0aGF0IGJ1ZmZlciwgdGhlbgordGhlIHVzZXIgd2lsbCBiZSBhc2tlZCBpZiBzL2hlIHdpc2hlcyB0byBzYXZlIHRoZSBidWZmZXIgZmlyc3QgKHllcywKK25vLCBvciBjYW5jZWwpLgorCisKK1JFRlJFU0hJTkcgVEhFIExJU1RJTkcJCQkqbmV0cnctY3RybC1sKiAqbmV0cnctY3RybF9sKiB7e3syCisKK1RvIHJlZnJlc2ggZWl0aGVyIGEgbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yeSBsaXN0aW5nLCBwcmVzcyBjdHJsLWwgKDxjLWw+KSBvcgoraGl0IHRoZSA8Y3I+IHdoZW4gYXRvcCB0aGUgLi8gZGlyZWN0b3J5IGVudHJ5IGluIHRoZSBsaXN0aW5nLiAgT25lIG1heSBhbHNvCityZWZyZXNoIGEgbG9jYWwgZGlyZWN0b3J5IGJ5IHVzaW5nICI6ZSAuIi4KKworCitSRU5BTUlORyBGSUxFUyBPUiBESVJFQ1RPUklFUwkqbmV0cnctbW92ZSogKm5ldHJ3LXJlbmFtZSogKm5ldHJ3LVIqIHt7ezIKKworSWYgdGhlcmUgYXJlIG5vIG1hcmtlZCBmaWxlczogKHNlZSB8bmV0cnctbWZ8KQorCisgICAgUmVuYW1pbmcvbW92aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnZvbHZlcyBtb3ZpbmcgdGhlIGN1cnNvciB0byB0aGUKKyAgICBmaWxlL2RpcmVjdG9yeSB0byBiZSBtb3ZlZCAocmVuYW1lZCkgYW5kIHByZXNzaW5nICJSIi4gIFlvdSB3aWxsIHRoZW4gYmUKKyAgICBxdWVyaWVkIGZvciB3aGVyZSB5b3Ugd2FudCB0aGUgZmlsZS9kaXJlY3RvcnkgdG8gYmUgbW92ZWQuICBZb3UgbWF5IHNlbGVjdAorICAgIGEgcmFuZ2Ugb2YgbGluZXMgd2l0aCB0aGUgIlYiIGNvbW1hbmQgKHZpc3VhbCBzZWxlY3Rpb24pLCBhbmQgdGhlbgorICAgIHByZXNzaW5nICJSIi4KKworSWYgdGhlcmUgYXJlIG1hcmtlZCBmaWxlczogIChzZWUgfG5ldHJ3LW1mfCkKKworICAgIE1hcmtlZCBmaWxlcyB3aWxsIGJlIHJlbmFtZWQgKG1vdmVkKS4gIFlvdSB3aWxsIGJlIHF1ZXJpZWQgYXMgYWJvdmUgaW4KKyAgICBvcmRlciB0byBzcGVjaWZ5IHdoZXJlIHlvdSB3YW50IHRoZSBmaWxlL2RpcmVjdG9yeSB0byBiZSBtb3ZlZC4KKworICAgIFdBUk5JTkc6fgorCisgICAgTm90ZSB0aGF0IG1vdmluZyBmaWxlcyBpcyBhIGRhbmdlcm91cyBvcGVyYXRpb247IGNvcGllcyBhcmUgc2FmZXIuICBUaGF0J3MKKyAgICBiZWNhdXNlIGEgIm1vdmUiIGZvciByZW1vdGUgZmlsZXMgaXMgYWN0dWFsbHkgYSBjb3B5ICsgZGVsZXRlIC0tIGFuZCBpZgorICAgIHRoZSBjb3B5IGZhaWxzIGFuZCB0aGUgZGVsZXRlIGRvZXMgbm90LCB5b3UgbWF5IGxvc2UgdGhlIGZpbGUuCisKK1RoZSBnOm5ldHJ3X3JlbmFtZV9jbWQgdmFyaWFibGUgaXMgdXNlZCB0byBpbXBsZW1lbnQgcmVuYW1pbmcuICBCeSBkZWZhdWx0IGl0cwordmFsdWUgaXM6CisKKwlzc2ggSE9TVE5BTUUgbXYKKworT25lIG1heSByZW5hbWUgYSBibG9jayBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYnkgc2VsZWN0aW5nIHRoZW0gd2l0aAordGhlIFYgKHxsaW5ld2lzZS12aXN1YWx8KS4KKworCitSRVZFUlNJTkcgU09SVElORyBPUkRFUgkJKm5ldHJ3LXIqICpuZXRydy1yZXZlcnNlKiB7e3syCisKK09uZSBtYXkgdG9nZ2xlIGJldHdlZW4gbm9ybWFsIGFuZCByZXZlcnNlIHNvcnRpbmcgb3JkZXIgYnkgcHJlc3NpbmcgdGhlCisiciIga2V5LgorCitSZWxhdGVkIHRvcGljczogICAgICAgICAgICAgIHxuZXRydy1zfAorQXNzb2NpYXRlZCBzZXR0aW5nIHZhcmlhYmxlOiB8ZzpuZXRyd19zb3J0X2RpcmVjdGlvbnwKKworCitTRUxFQ1RJTkcgU09SVElORyBTVFlMRQkJCSpuZXRydy1zKiAqbmV0cnctc29ydCoge3t7MgorCitPbmUgbWF5IHNlbGVjdCB0aGUgc29ydGluZyBzdHlsZSBieSBuYW1lLCB0aW1lLCBvciAoZmlsZSkgc2l6ZS4gIFRoZSAicyIgbWFwCithbGxvd3Mgb25lIHRvIGNpcmN1bGF0ZSBhbW9uZ3N0IHRoZSB0aHJlZSBjaG9pY2VzOyB0aGUgZGlyZWN0b3J5IGxpc3Rpbmcgd2lsbAorYXV0b21hdGljYWxseSBiZSByZWZyZXNoZWQgdG8gcmVmbGVjdCB0aGUgc2VsZWN0ZWQgc3R5bGUuCisKK1JlbGF0ZWQgdG9waWNzOiAgICAgICAgICAgICAgIHxuZXRydy1yfCB8bmV0cnctU3wKK0Fzc29jaWF0ZWQgc2V0dGluZyB2YXJpYWJsZXM6IHxnOm5ldHJ3X3NvcnRfYnl8IHxnOm5ldHJ3X3NvcnRfc2VxdWVuY2V8CisKKworMTAuIFByb2JsZW1zIGFuZCBGaXhlcwkJCQkJKm5ldHJ3LXByb2JsZW1zKiB7e3sxCiAKIAkoVGhpcyBzZWN0aW9uIGlzIGxpa2VseSB0byBncm93IGFzIEkgZ2V0IGZlZWRiYWNrKQogCShhbHNvIHNlZSB8bmV0cnctZGVidWd8KQpAQCAtMTU2OCw5ICsyMTYyLDExIEBACiAJCQkJCQkJCSpuZXRydy1wNCoKIAlQNC4gSSB3b3VsZCBsaWtlIGxvbmcgbGlzdGluZ3MgdG8gYmUgdGhlIGRlZmF1bHQuCiAKLQkJCWxldCBnOm5ldHJ3X2xpc3RzdHlsZT0gMQorCQlQdXQgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgaW50byB5b3VyIHwudmltcmN8OiA+CiAKLQkJQ2hlY2sgb3V0IHxuZXRydy1icm93c2UtdmFyfCBmb3IgbW9yZSBjdXN0b21pemF0aW9ucyB0aGF0CisJCQlsZXQgZzpuZXRyd19saXN0c3R5bGU9IDEKKzwKKwkJQ2hlY2sgb3V0IHxuZXRydy1icm93c2VyLXZhcnwgZm9yIG1vcmUgY3VzdG9taXphdGlvbnMgdGhhdAogCQl5b3UgY2FuIHNldC4KIAogCQkJCQkJCQkqbmV0cnctcDUqCkBAIC0xNTc5LDE1ICsyMTc1LDE4IEBACiAJCURvZXMgeW91ciBzeXN0ZW0ncyBzdHJmdGltZSgpIGFjY2VwdCB0aGUgIiVjIiB0byB5aWVsZCBkYXRlcwogCQlzdWNoIGFzICJTdW4gQXByIDI3IDExOjQ5OjIzIDE5OTciPyAgSWYgbm90LCBkbyBhICJtYW4gc3RyZnRpbWUiCiAJCWFuZCBmaW5kIG91dCB3aGF0IG9wdGlvbiBzaG91bGQgYmUgdXNlZC4gIFRoZW4gcHV0IGl0IGludG8KLQkJeW91ciA8LnZpbXJjPjoKLQkJCWxldCBnOm5ldHJ3X3RpbWVmbXQ9ICIlWCIgICh3aGVyZSBYIGlzIHRoZSBvcHRpb24pCisJCXlvdXIgfC52aW1yY3w6ID4KIAorCQkJbGV0IGc6bmV0cndfdGltZWZtdD0gIiVYIiAgKHdoZXJlIFggaXMgdGhlIG9wdGlvbikKKzwKIAkJCQkJCQkJKm5ldHJ3LXA2KgogCVA2LiBJIHdhbnQgbXkgY3VycmVudCBkaXJlY3RvcnkgdG8gdHJhY2sgbXkgYnJvd3NpbmcuCiAJICAgIEhvdyBkbyBJIGRvIHRoYXQ/CiAKKwkgICAgUHV0IHRoZSBmb2xsb3dpbmcgbGluZSBpbiB5b3VyIHwudmltcmN8OgorPgogCQlsZXQgZzpuZXRyd19rZWVwZGlyPSAwCi0JCis8CQogCQkJCQkJCQkqbmV0cnctcDcqCiAJUDcuIEkgdXNlIENoaW5lc2UgKG9yIG90aGVyIG5vbi1hc2NpaSkgY2hhcmFjdGVycyBpbiBteSBmaWxlbmFtZXMsIGFuZAogCSAgICBuZXRydyAoRXhwbG9yZSwgU2V4cGxvcmUsIEhleHBsb3JlLCBldGMpIGRvZXNuJ3QgZGlzcGxheSB0aGVtIQpAQCAtMTY1Miw5ICsyMjUxLDkgQEAKIAkJCSAge2FzdGVyaXNrfS57YXN0ZXJpc2t9IChhbGwgZmlsZXMpLCBvciB3aGF0ZXZlciB0eXBlcwogCQkJICB5b3Ugd2FudCAoY2VjOiBjaGFuZ2Uge2FzdGVyaXNrfSB0byAqIDsgSSBoYWQgdG8KIAkJCSAgd3JpdGUgaXQgdGhhdCB3YXkgYmVjYXVzZSBvdGhlcndpc2UgdGhlIGhlbHB0YWdzCi0JCQkgIHN5c3RlbSB0aGlua3MgaXRzIGEgdGFnKQotCQkJLSBNYWtlIHN1cmUgaXRzIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3Rib3ggKGNsaWNrIGl0LAotCQkJICB0aGVuIGNsaWNrICJVcCIgaWYgaXRzIG5vdCkKKwkJCSAgc3lzdGVtIHRoaW5rcyBpdCdzIGEgdGFnKQorCQkJLSBNYWtlIHN1cmUgaXQncyBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0Ym94IChjbGljayBpdCwKKwkJCSAgdGhlbiBjbGljayAiVXAiIGlmIGl0J3Mgbm90KQogCQlJZiB1c2luZyB0aGUgTm9ydG9uIENvbW1hbmRlciBzdHlsZSwgeW91IGp1c3QgaGF2ZSB0byBoaXQgPEY0PgogCQl0byBlZGl0IGEgZmlsZSBpbiBhIGxvY2FsIGNvcHkgb2YgZ3ZpbS4KIApAQCAtMTY2MywxNiArMjI2MiwyNCBAQAogICBodHRwOi8vd3d3LnRhcnRhcnVzLm9yZy9+c2ltb24vcHV0dHlkb2MvQ2hhcHRlcjguaHRtbCNwdWJrZXktZ2V0dGluZ3JlYWR5CiAJCQk4LjMgR2V0dGluZyByZWFkeSBmb3IgcHVibGljIGtleSBhdXRoZW50aWNhdGlvbgogPAotCQlIb3cgdG8gdXNlIHByaXZhdGUga2V5IHdpdGggJ3BzY3AnOiA+CisJCUhvdyB0byB1c2UgYSBwcml2YXRlIGtleSB3aXRoICdwc2NwJzogPgorCiAJCQlodHRwOi8vd3d3LnRhcnRhcnVzLm9yZy9+c2ltb24vcHV0dHlkb2MvQ2hhcHRlcjUuaHRtbAogCQkJNS4yLjQgVXNpbmcgcHVibGljIGtleSBhdXRoZW50aWNhdGlvbiB3aXRoIFBTQ1AgCiA8CisJCShCZW4gU2NobWlkdCkgSSBmaW5kIHRoZSBzc2ggaW5jbHVkZWQgd2l0aCBjd1JzeW5jIGlzCisJCWJyaWxsaWFudCwgYW5kIGluc3RhbGwgY3dSc3luYyBvciBjd1JzeW5jU2VydmVyIG9uIG1vc3QKKwkJV2luZG93cyBzeXN0ZW1zIEkgY29tZSBhY3Jvc3MgdGhlc2UgZGF5cy4gSSBndWVzcyBDT1BTU0gsCisJCXBhY2tlZCBieSB0aGUgc2FtZSBwZXJzb24sIGlzIHByb2JhYmx5IGV2ZW4gYmV0dGVyIGZvciB1c2UgYXMKKwkJanVzdCBzc2ggb24gV2luZG93cywgYW5kIHByb2JhYmx5IGluY2x1ZGVzIHNmdHAsIGV0Yy4gd2hpY2ggSQorCQlzdXNwZWN0IHRoZSBjd1JzeW5jIGRvZXNuJ3QsIHRob3VnaCBpdCBtaWdodAorCiAJCShjZWMpIFRvIG1ha2UgcHJvcGVyIHVzZSBvZiB0aGVzZSBzdWdnZXN0aW9ucyBhYm92ZSwgeW91IHdpbGwKIAkJbmVlZCB0byBtb2RpZnkgdGhlIGZvbGxvd2luZyB1c2VyLXNldHRhYmxlIHZhcmlhYmxlcyBpbiB5b3VyCiAJCS52aW1yYzoKIAotCQkJfGc6bmV0cndfc3NoX2NtZHwgfGc6bmV0cndfbGlzdF9jbWR8ICB8ZzpuZXRyd19ta2Rpcl9jbWR8Ci0JCQl8ZzpuZXRyd19ybV9jbWR8ICB8ZzpuZXRyd19ybWRpcl9jbWR8IHxnOm5ldHJ3X3JtZl9jbWR8CisJCXxnOm5ldHJ3X3NzaF9jbWR8IHxnOm5ldHJ3X2xpc3RfY21kfCAgfGc6bmV0cndfbWtkaXJfY21kfAorCQl8ZzpuZXRyd19ybV9jbWR8ICB8ZzpuZXRyd19ybWRpcl9jbWR8IHxnOm5ldHJ3X3JtZl9jbWR8CiAKIAkJVGhlIGZpcnN0IG9uZSAofGc6bmV0cndfc3NoX2NtZHwpIGlzIHRoZSBtb3N0IGltcG9ydGFudDsgbW9zdAogCQlvZiB0aGUgb3RoZXJzIHdpbGwgdXNlIHRoZSBzdHJpbmcgaW4gZzpuZXRyd19zc2hfY21kIGJ5CkBAIC0xNjg4LDUyICsyMjk1LDc3IEBACiAJCWluIHlvdXIgPC52aW1yYz46ID4KIAkJCWxldCBnOm5ldHJ3X3VzZV9ub3N3Zj0gMAogPAorCQkJCQkJCQkqbmV0cnctcDEwKgorCVAxMC4gSSdtIGJlaW5nIHBlc3RlcmVkIHdpdGggIltzb21ldGhpbmddIGlzIGEgZGlyZWN0b3J5IiBhbmQKKwkgICAgICJQcmVzcyBFTlRFUiBvciB0eXBlIGNvbW1hbmQgdG8gY29udGludWUiIHByb21wdHMuLi4KKworCQlUaGUgIltzb21ldGhpbmddIGlzIGEgZGlyZWN0b3J5IiBwcm9tcHQgaXMgaXNzdWVkIGJ5IFZpbSwKKwkJbm90IGJ5IG5ldHJ3LCBhbmQgdGhlcmUgYXBwZWFycyB0byBiZSBubyB3YXkgdG8gd29yayBhcm91bmQKKwkJaXQuICBDb3VwbGVkIHdpdGggdGhlIGRlZmF1bHQgY21kaGVpZ2h0IG9mIDEsIHRoaXMgbWVzc2FnZQorCQljYXVzZXMgdGhlICJQcmVzcyBFTlRFUi4uLiIgcHJvbXB0LiAgU286ICByZWFkIHxoaXQtZW50ZXJ8OworCQlJIGFsc28gc3VnZ2VzdCB0aGF0IHlvdSBzZXQgeW91ciB8J2NtZGhlaWdodCd8IHRvIDIgKG9yIG1vcmUpIGluCisJCXlvdXIgPC52aW1yYz4gZmlsZS4KKworCQkJCQkJCQkqbmV0cnctcDExKgorCVAxMS4gSSB3YW50IHRvIGhhdmUgdHdvIHdpbmRvd3M7IGEgdGhpbiBvbmUgb24gdGhlIGxlZnQgYW5kIG15IGVkaXRpbmcKKwkgICAgIHdpbmRvdyBvbiB0aGUgcmlnaHQuICBIb3cgY2FuIEkgZG8gdGhpcz8KKworCQkqIFB1dCB0aGUgZm9sbG93aW5nIGxpbmUgaW4geW91ciA8LnZpbXJjPjoKKwkJCWxldCBnOm5ldHJ3X2FsdHYgPSAxCisJCSogRWRpdCB0aGUgY3VycmVudCBkaXJlY3Rvcnk6ICA6ZSAuCisJCSogU2VsZWN0IHNvbWUgZmlsZSwgcHJlc3MgdgorCQkqIFJlc2l6ZSB0aGUgd2luZG93cyBhcyB5b3Ugd2lzaCAoc2VlIHxDVFJMLVdfPHwgYW5kCisJCSAgfENUUkwtV18+fCkuICBJZiB5b3UncmUgdXNpbmcgZ3ZpbSwgeW91IGNhbiBkcmFnCisJCSAgdGhlIHNlcGFyYXRpbmcgYmFyIHdpdGggeW91ciBtb3VzZS4KKwkJKiBXaGVuIHlvdSB3YW50IGEgbmV3IGZpbGUsIHVzZSAgY3RybC13IGggIHRvIGdvIGJhY2sgdG8gdGhlCisJCSAgbmV0cncgYnJvd3Nlciwgc2VsZWN0IGEgZmlsZSwgdGhlbiBwcmVzcyBQICAoc2VlIHxDVFJMLVdfaHwKKwkJICBhbmQgfG5ldHJ3LVB8KS4gIElmIHlvdSdyZSB1c2luZyBndmltLCB5b3UgY2FuIHByZXNzCisJCSAgPGxlZnRtb3VzZT4gaW4gdGhlIGJyb3dzZXIgd2luZG93IGFuZCB0aGVuIHByZXNzIHRoZQorCQkgIDxtaWRkbGVtb3VzZT4gdG8gc2VsZWN0IHRoZSBmaWxlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTExLiBEZWJ1Z2dpbmcJCQkJCQkqbmV0cnctZGVidWcqCisxMS4gRGVidWdnaW5nIE5ldHJ3IEl0c2VsZgkJCQkqbmV0cnctZGVidWcqIHt7ezEKIAogVGhlIDxuZXRydy52aW0+IHNjcmlwdCBpcyB0eXBpY2FsbHkgYXZhaWxhYmxlIGFzOgogPgotCS91c3IvbG9jYWwvc2hhcmUvdmltL3ZpbTZ4L3BsdWdpbi9uZXRydy52aW0KKwkvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW02eC9wbHVnaW4vbmV0cndQbHVnaW4udmltCisJL3Vzci9sb2NhbC9zaGFyZS92aW0vdmltNngvYXV0b2xvYWQvbmV0cncudmltCiA8IC1vci0gPgotCS91c3IvbG9jYWwvc2hhcmUvdmltL3ZpbTd4L3BsdWdpbi9uZXRydy52aW0KKwkvdXNyL2xvY2FsL3NoYXJlL3ZpbS92aW03eC9wbHVnaW4vbmV0cndQbHVnaW4udmltCisJL3Vzci9sb2NhbC9zaGFyZS92aW0vdmltN3gvYXV0b2xvYWQvbmV0cncudmltCiA8CiB3aGljaCBpcyBsb2FkZWQgYXV0b21hdGljYWxseSBhdCBzdGFydHVwIChhc3N1bWluZyA6c2V0IG5vY3ApLgogCiAJMS4gR2V0IHRoZSA8RGVjaG8udmltPiBzY3JpcHQsIGF2YWlsYWJsZSBhczoKIAotCSAgICAgaHR0cDovL215c2l0ZS52ZXJpem9uLm5ldC9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjdmltbGlua3Nfc2NyaXB0cwotCSAgICAgYXMgIkRlY2hvLCBhIHZpbUwgZGVidWdnaW5nIGFpZCIKKwkgICAgIGh0dHA6Ly9teXNpdGUudmVyaXpvbi5uZXQvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI0RFQ0hPCiAJICAgb3IKIAkgICAgIGh0dHA6Ly92aW0uc291cmNlZm9yZ2UubmV0L3NjcmlwdHMvc2NyaXB0LnBocD9zY3JpcHRfaWQ9MTIwCiAKLQkgICBhbmQgcHV0IGl0IGludG8geW91ciBsb2NhbCBwbHVnaW4gZGlyZWN0b3J5LgorCSAgSXQgbm93IGNvbWVzIGFzIGEgInZpbWJhbGwiOyBpZiB5b3UncmUgdXNpbmcgdmltIDcuMCBvciBlYXJsaWVyLAorCSAgeW91J2xsIG5lZWQgdG8gdXBkYXRlIHZpbWJhbGwsIHRvby4gIFNlZQorCSAgICAgaHR0cDovL215c2l0ZS52ZXJpem9uLm5ldC9hc3Ryb25hdXQvdmltL2luZGV4Lmh0bWwjVklNQkFMTAogCi0JMi4gPERlY2hvLnZpbT4gaXRzZWxmIG5lZWRzIHRoZSA8Y2VjdXRpbC52aW0+IHNjcmlwdCwgc28geW91J2xsIG5lZWQKLQkgICB0byBwdXQgaXQgaW50byB5b3VyIC52aW0vcGx1Z2luLCB0b28uICBZb3UgbWF5IG9idGFpbiBpdCBmcm9tOgotCi0JCWh0dHA6Ly9teXNpdGUudmVyaXpvbi5uZXQvYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI1ZpbUZ1bmNzCi0JCWFzICJEckMncyBVdGlsaXRpZXMiCi0KLQkzLiBFZGl0IHRoZSA8bmV0cncudmltPiBmaWxlIGJ5IHR5cGluZzoKKwkyLiBFZGl0IHRoZSA8bmV0cncudmltPiBmaWxlIGJ5IHR5cGluZzogPgogCiAJCXZpbSBuZXRydy52aW0KIAkJOkRlY2hvT24KIAkJOndxCi0KLQkgICBUbyByZXN0b3JlIHRvIG5vcm1hbCBub24tZGVidWdnaW5nIGJlaGF2aW9yLCBlZGl0IDxuZXRydy52aW0+Ci0JICAgYnkgdHlwaW5nCis8CisJICAgVG8gcmVzdG9yZSB0byBub3JtYWwgbm9uLWRlYnVnZ2luZyBiZWhhdmlvciwgcmUtZWRpdCA8bmV0cncudmltPgorCSAgIGFuZCB0eXBlID4KIAogCQl2aW0gbmV0cncudmltCiAJCTpEZWNob09mZgogCQk6d3EKLQorPAogCSAgIFRoaXMgY29tbWFuZCwgcHJvdmlkZWQgYnkgPERlY2hvLnZpbT4sIHdpbGwgY29tbWVudCBvdXQgYWxsCiAJICAgRGVjaG8tZGVidWdnaW5nIHN0YXRlbWVudHMgKERmdW5jKCksIERyZXQoKSwgRGVjaG8oKSwgRHJlZGlyKCkpLgogCi0JNC4gVGhlbiBicmluZyB1cCB2aW0gYW5kIGF0dGVtcHQgYSB0cmFuc2ZlciBvciBkbyBicm93c2luZy4gIEEgc2V0IG9mCi0JICAgbWVzc2FnZXMgc2hvdWxkIGFwcGVhciBjb25jZXJuaW5nIHRoZSBzdGVwcyB0aGF0IDxuZXRydy52aW0+IHRvb2sKLQkgICBpbiBhdHRlbXB0aW5nIHRvIHJlYWQvd3JpdGUgeW91ciBmaWxlIG92ZXIgdGhlIG5ldHdvcmsuCisJMy4gVGhlbiBicmluZyB1cCB2aW0gYW5kIGF0dGVtcHQgdG8gZXZva2UgdGhlIHByb2JsZW0gYnkgZG9pbmcgYQorCSAgIHRyYW5zZmVyIG9yIGRvaW5nIHNvbWUgYnJvd3NpbmcuICBBIHNldCBvZiBtZXNzYWdlcyBzaG91bGQgYXBwZWFyCisJICAgY29uY2VybmluZyB0aGUgc3RlcHMgdGhhdCA8bmV0cncudmltPiB0b29rIGluIGF0dGVtcHRpbmcgdG8KKwkgICByZWFkL3dyaXRlIHlvdXIgZmlsZSBvdmVyIHRoZSBuZXR3b3JrIGluIGEgc2VwYXJhdGUgdGFiLgogCiAJICAgVG8gc2F2ZSB0aGUgZmlsZSwgdXNlID4KIAkJOndpbmNtZCBqCkBAIC0xNzQ1LDE1ICsyMzc3LDIxOCBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAxMi4gSGlzdG9yeQkJCQkJCSpuZXRydy1oaXN0b3J5KiB7e3sxCiAKKwl2MTI1OiBBcHIgMDcsIDIwMDggKiAoQ3Jpc3RpYW4gUmlnYW1vbnRpKSBDUiBwcm92aWRlcyBhIHBhdGNoOyBoZQorCQkJICAgICBub3RlZCB0aGF0IGd4IHdhcyBmYWlsaW5nIHNpbmNlIGl0cyBjYWxsIHRvCisJCQkgICAgIG5ldHJ3I05ldEJyb3dzZVgoKSB3YXNuJ3QgdXBkYXRlZCB0bworCQkJICAgICBuZXRydyNOZXRyd0Jyb3dzZVgoKS4KKwkJCSAgICogKFN0YW5pcyBUcmVuZGVsZW5idXJnKSBTVCBwcm92aWRlcyBhIHBhdGNoIHRvCisJCQkgICAgIHN1cHBvcnRzIGRhdnM6IChkYXYgKyBzc2wpCisJCQkgICAqIChSaWNrIENob2kpIG5vdGVkIHRoYXQgZGlyZWN0b3J5IG5hbWVzIGNvbXByaXNlZAorCQkJICAgICBvZiB0aHJlZSBkaWdpdHMgd2VyZSBub3QgYmVpbmcgZGlzcGxheWVkIGJ5CisJCQkgICAgIHRoZSBpbnRlcm5hbCBicm93c2VyLiAgRml4ZWQuCisJCQkgICAqIChFcmlrIEZhbG9yKSBwcm92aWRlZCBhIHBhdGNoIHRvIGhhbmRsZSBwcm9ibGVtcworCQkJICAgICB3aXRoIGNoYW5naW5nIGRpcmVjdG9yeSBhbmQgfCdhY2QnfCBvcHRpb24uCisJCQkgICAqIChKYW1lcyBWZWdhLCBUZWVtdSBMaWtvbmVuKSBub3RlZCB0aGF0IG5ldHJ3CisJCQkgICAgIHdhc24ndCBoYW5kbGluZyBtdWx0aS1ieXRlIGZpbGVuYW1lcy9kaXJlY3RvcmllcworCQkJICAgICBjb3JyZWN0bHkuICBGaXhlZC4KKwkJCSAgICogKFJpY2spIGZvdW5kIHByb2JsZW0gd2l0aCBnOm5ldHJ3X21heGZpbGVuYW1lbGVuCisJCQkgICAgIGJlaW5nIG92ZXJyaWRkZW4uCisJCQkgICAqIChKYW1lcyBWZWdhKSBwb2ludGVkIG91dCB0aGF0IG5ldHJ3IHdhcworCQkJICAgICBtaXNpZGVudGlmeWluZyBhbGwgZmlsZXMgaW4gYSBzeW1ib2xpY2FsbHkgbGlua2VkCisJCQkgICAgIGRpcmVjdG9yeSBhcyBiZWluZyBzeW1ib2xpY2FsbHkgbGlua2VkCisJCQkgICAgIHRoZW1zZWx2ZXMuICBUaGlzIHBhcnRpY3VsYXIgcHJvYmxlbSB3YXMgZml4ZWQ7CisJCQkgICAgIGhvd2V2ZXIsIHRoZXJlIGFyZSBub3cgc2l0dWF0aW9ucyB3aGVyZQorCQkJICAgICBzeW1ib2xpY2FsbHkgbGlua2VkIGZpbGVzIHdpbGwgbm90IGJlIGRldGVjdGVkLgorCQkJICAgICBSZWFsbHkgbmVlZCBhbiBpbnRlcm5hbCB2aW0gZnVuY3Rpb24gdG8gZG8gdGhpcworCQkJICAgICBpZGVudGlmaWNhdGlvbi4KKwkgICAgICBBcHIgMTcsIDIwMDggKiBXaGVuIGc6bmV0cndfa2VlcGRpcj09MCwgY3VycmVudCBkaXJlY3RvcnkKKwkgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IG5lY2Vzc2FyaWx5IGVxdWFsIGI6bmV0cndfY3VyZGlyCisJCQkgICAgIGluaXRpYWxseS4gIFByb2JsZW0gaXMgZHVlIHRvIHRoZSBwYXRjaCBkaXJlY3RseQorCQkJICAgICBhYm92ZS4KKwkJCSAgICogRml4ZWQgcWYgdG8gaGFuZGxlIGNhc2Ugd2hlcmUgYjpuZXRyd19jdXJkaXIKKwkJCSAgICAgaXNuJ3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHVuZGVyCisJCQkgICAgIGxpbnV4L21hY29zeC4KKwkJCSAgICogTmV3OiB8bmV0cnctbWd8IChhcHBseSB2aW1ncmVwIHRvIG1hcmtlZCBmaWxlcykKKwkgICAgICBNYXkgMDUsIDIwMDggKiAoUmljaykgcG9pbnRlZCBvdXQgdGhhdCBhICJzZXRsb2NhbCB0cz0zMiIgd2FzCisJCQkgICAgIGludGVyZmVyaW5nIHdpdGggZzpuZXRyd19tYXhmaWxlbmFtZWxlbgorCSAgICAgIE1heSAwNSwgMjAwOCAqIChKYW1lcyBWZWdhKSBhIGZpbGUgaW5zaWRlIGEgbGlua2VkIGRpcmVjdG9yeQorCQkJICAgICB3YXMgc2hvd2luZyB1cCBhcyBhIHN5bWJvbGljIGxpbmsgaXRzZWxmLgorCSAgICAgIE1heSAyMiwgMjAwOCAqIHN5bWJvbGljIGxpbmtzLCBmaWZvcywgYW5kIHNvY2tldHMgYXJlIG5vdworCSAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlZCBieSBhIHRyYWlsaW5nIEAsIHwsIG9yID0sIHJlc3BlY3RpdmVseS4KKwkgICAgICBKdW4gMDYsIDIwMDggKiBSZW1vdmVkIG51bWVyb3VzIGJ1Z3MgZnJvbSB0aGUgbWFya2VkIGZpbGUKKwkJCSAgICAgbW92ZSBhbmQgY29weS4gIFRlc3RlZCB0aGVzZSBjaGFuZ2VzIHVuZGVyCisJCQkgICAgIFVuaXggb25seSB0aHVzIGZhci4KKwkJCSAgICogOlJleHBsb3JlIHJldHVybnMgdG8gdGhlIHNjcmVlbiBwb3NpdGlvbiBpbiB0aGUKKwkJCSAgICAgbmV0cncgbGlzdGluZyBmcm9tIHdoZW5jZSB0aGUgZmlsZSB3YXMgZWRpdGVkCisJdjEyNDogQXByIDAyLCAyMDA4ICogKEFkcmlhbiBSb2xsZXR0KSBjaGFuZ2UgdGhlIGxpbmUgc3VwcG9ydGluZyB0aGUKKwkJCSAgICAieCIgYWN0aW9uIGZvciBtYWMgdG8gdXNlIGc6bmV0cndfc2hxCisJdjEyMzogRmViIDI3LCAyMDA4ICogTWFya2VkIGZpbGVzIG5vdyBrZWVwcyBhICJnbG9iYWwiIG1hcmtlZCBmaWxlCisJCQkgICAgIGxpc3QuICBUaGUgZ2xvYmFsIG1hcmtlZCBmaWxlIGxpc3QgaXMgdXNlZCB0bworCQkJICAgICBzdXBwb3J0IHRhZyBwcm9jZXNzaW5nIGFuZCB2aW1kaWZmJ2luZworCQkJICAgICAofG5ldHJ3LW1kfCB8bmV0cnctbXR8KQorCQkJICAgKiBCZWVuIGluc3VyaW5nIHRoYXQgbW0gYW5kIG1jIHdvcmtzIHdpdGggdmFyaW91cworCQkJICAgICBjb21iaW5hdGlvbnMgb2YgbG9jYWwgYW5kIHJlbW90ZSBkaXJlY3RvcmllcworCQkJICAgKiAoU3RlZmFuIEJpdHRuZXIpIGh0dHA6Ly8uLi4vIHNob3VsZCBhbHdheXMgaGF2ZQorCQkJICAgICBmaWxldHlwZSAiaHRtbCIgLS0gZml4ZWQuCisJCQkgICAqIChTdGVmYW4gQml0dG5lcikgYSAiPyIgaW4gYSBodHRwOi8vLi4uLyByZXF1ZXN0CisJCQkgICAgIHdhc24ndCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseS4gIEZpeGVkIGJ5CisJCQkgICAgIHJlbW92aW5nID8gZnJvbSBkZWZhdWx0IHxnOm5ldHJ3X3RtcGZpbGVfZXNjYXBlfC4KKwkJCSAgICogKE5pY28gV2ViZXIpICUgY29kZXMgaW4gaHR0cDovLy4uLi8gcmVxdWVzdHMKKwkJCSAgICAgd2VyZW4ndCBiZWluZyBoYW5kbGVkIGNvcnJlY3RseS4gIEZpeGVkIGJ5CisJCQkgICAgIGluY2x1ZGluZyAlIGluIGRlZmF1bHQgfGc6bmV0cndfZm5hbWVfZXNjYXBlfC4KKwkJCSAgICogKFN0ZWZhbiBCaXR0bmVyKSBhdHRlbXB0cyB0byB1cGRhdGUgQnVmZmVycy5SZWZyZXNoCisJCQkgICAgIHdlcmUgZmFpbGluZyBiZWNhdXNlIGxvY2FsZSB1c2UgY2hhbmdlZCB0aGUgbWVudQorCQkJICAgICBuYW1lcy4gIEkgaW1wbGVtZW50ZWQgYSB3b3JrYXJvdW5kLgorCXYxMjI6IEZlYiAxMiwgMjAwOCAqIGJ1Z2ZpeCAtIGZpcnN0IHNvcnRpbmcgc2VxdWVuY2UgbWF0Y2ggbm93IGhhcworCQkJICAgICBwcmlvcml0eQorCSAgICAgIEZlYiAxNCwgMjAwOCAqIGJ1Z2ZpeCAtIHNvcnRpbmcgc2VxdWVuY2Ugd2FzIGVmZmVjdGl2ZWx5IGlnbm9yaW5nCisJCQkgICAgIHNlcXVlbmNpbmcgcHJpb3JpdHkgb2YgYW55dGhpbmcgZm9sbG93aW5nICcqJworCQkJICAgKiB0b2dnbGluZyBhIG1hcmtlZCBmaWxlIHdhcyBzaG93aW5nIGluY29ycmVjdCBsaXN0CisJCQkgICAgIChsaXN0IHdhcyBjb3JyZWN0LCBidXQgZGlzcGxheWVkIG1hdGNoZXMgd2VyZW4ndCkKKwkJCSAgICogfGc6bmV0cndfc3BlY2lhbF9zeW50YXh8IGltcGxlbWVudGVkCisJdjEyMTogRmViIDExLCAyMDA4ICogQnJhbSBNIHJlcG9ydGVkIHRoYXQgOmUgZmlsZSAuLi4gOmUgLiB3b3VsZCBub3QKKwkJCSAgICAgcmV0YWluIHRoZSBhbHRlcm5hdGUgZmlsZS4gIEZpeGVkIC0tIEkgaG9wZSEKKwkJCSAgICogYnVnZml4IC0tIGFwcGFyZW50bHkgdjEyMCBicm9rZSBhbiBleHBsaWNpdAorCQkJICAgICA6RXhwbG9yZSBkaXJuYW1lCisJdjEyMDogSmFuIDIxLCAyMDA4ICogfG5ldHJ3LW10fCBjaGFuZ2VkIHRvIGFsbG93IGZvciB0YXJnZXQgc2VsZWN0aW9uCisJICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gd2hldGhlciBvciBub3Qgd29yZCB1bmRlciBjdXJzb3IgaXMgYQorCQkJICAgICBkaXJlY3Rvcnkgb3IgZmlsZSwgb3IgaWYgY3Vyc29yIGlzIGluIGJhbm5lcgorCQkJICAgICBhcmVhLgorCQkJICAgKiB8bmV0cnctbWh8IGluY2x1ZGVkIChoaWRpbmcgYnkgbWFya2VkLWZpbGUgc3VmZml4KQorCQkJICAgKiBmdW5jdGlvbnMgbW92ZWQgYWJvdXQgYSBiaXQgKGltcHJvdmVkCisJCQkgICAgIGNhdGVnb3JpemF0aW9uKQorCQkJICAgKiBleGVjdXRhYmxlIGZpbGVzIG5vdyBkaXNwbGF5ZWQgd2l0aCB0cmFpbGluZyAoKikKKwkJCSAgICogc3ltYm9saWNhbGx5IGxpbmtlZCBmaWxlcyBub3cgZGlzcGxheWVkIHdpdGgKKwkJCSAgICAgdHJhaWxpbmcgKEApCisJCQkgICAqIFNvbWV3aGVuLCBzOk5ldHJ3TWFya0ZpbGVNb3ZlKCkgZ290IGRhbWFnZWQuICBJdHMKKwkJCSAgICAgbm93IHJlc3RvcmVkIChtaXNzaW5nIGFuIGVuZGlmLCBmb3IgZXhhbXBsZSkuCisJCQkgICAqIHxuZXRydy1tdXwgaW1wbGVtZW50ZWQgKHVubWFya2luZyBtYXJrZWQgZmlsZXMpCisJCQkgICAqIG1hbnkgYnVncyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBtYXJrZWQgZmlsZQorCQkJICAgICBzeXN0ZW0gKHRueCB0byBNYXJrIFMuIGZvciBmZWVkYmFjaykKKwkJCSAgICogfG5ldHJ3LW1zfCBpbXBsZW1lbnRlZCAoc291cmNpbmcgbWFya2VkIGZpbGVzKQorCQkJICAgKiBmaXhlZCB1c2Ugb2YgUCB3aXRoIHRyZWUgbGlzdGluZyBzdHlsZQorCQkJICAgKiBtdWx0aXBsZSB0cmVlIGxpc3Rpbmcgbm93IHN1cHBvcnRlZAorCQkJICAgKiAuLyBzdXBwcmVzc2VkCisJCQkgICAqIGNoYW5nZWQgcSAtPiBxYiAocXVlcnkgYm9va21hcmtzKQorCQkJICAgKiBpbXBsZW1lbnRlZCB8bmV0cnctcWZ8CisJCQkgICAqIEV4cGxvcmUgbm93IGhhcyBmb3VyIHNwZWNpYWwgbGlzdC1nZW5lcmF0aW9uCisJCQkgICAgIG1vZGVzOiAqL2ZpbGVwYXQgKiovZmlsZXBhdAorCQkJICAgICAgICAgICAqLy9wYXR0ZXJuICoqLy9wYXR0ZXJuCisJCQkgICAqIGdoICh8bmV0cnctZ2h8KSBpcyBhIHNob3J0Y3V0IGZvciB0b2dnbGluZyB0aGUKKwkJCSAgICAgaGlkaW5nIG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBiZWdpbm5pbmcgd2l0aCBhCisJCQkgICAgIGRvdAorCXYxMTk6IEphbiAxMCwgMjAwOCAqIFdoZW4gZzpuZXRyd19rZWVwZGlyIGlzIGZhbHNlLAorCQkJICAgICBOZXRyd09wdGlvbnNSZXN0b3JlKCkgaGFkIGEgcHJvYmxlbQorCQkJICAgICAoQmlsbCBNY0NhcnRoeSkKKwkgICAgICBKYW4gMTEsIDIwMDggKiBOZXRydyBub3cgc2hvd3Mgc3ltYm9saWMgbGlua3Mgd2l0aCBhIHRyYWlsaW5nCisJICAgICAgICAgICAgICAgICAgICAgIkAiIGFuZCBzcGVjaWFsIGhpZ2hsaWdodGluZy4KKwkgICAgICBKYW4gMTUsIDIwMDggKiBDaGFuZ2VkIGc6bmV0cndfbm9yZXRtYXAgLT4gfGc6bmV0cndfcmV0bWFwfC4KKwkgICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkOiBkaXNhYmxlZCBieSBkZWZhdWx0IGF0IEJyYW0ncworCQkJICAgICBwcmVmZXJlbmNlLgorCXYxMTg6IEphbiAwMiwgMjAwOCAqIEZpeGVkIGEgcHJvYmxlbSB3aXRoIFdpbmRvd3M7CisJCQkgICAgIDpFeHBsb3JlIGM6L3BhdGgvIHdvdWxkIG5vdCB3b3JrLAorCQkJICAgICBidXQgOkV4cGxvcmUgYzovcGF0aCB3b3VsZC4KKwkJCSAgICogRml4ZWQgYSBidWcgaW4gczpOZXRyd09wdGlvblJlc3RvcmUoKSAtIGxjZCdzCisJCQkgICAgIGFyZ3VtZW50IHdhc24ndCBiZWluZyBwcm9wZXJseSBlc2NhcGVkIHNvIGl0CisJCQkgICAgIHdvdWxkbid0IGhhbmRsZSBzcGFjZXMgaW4gZGlyZWN0b3J5IG5hbWVzLgorCQkJICAgICAoR2FyeSBKb2huc29uKQorCXYxMTc6IEphbiAwMiwgMjAwOCAqIEZpeGVkIGEgcHJvYmxlbSB3aXRoIFA7IGhhZCB0byBpbmNsdWRlCisJCQkgICAgIGEgYjpuZXRyd19jdXJkaXIgYnlwYXNzIChCcmFtIE1vb2xlbmFhcikKKwl2MTE2OiBOb3YgMjcsIDIwMDcgKiBuZXRydyNMb2NhbEJyb3dzZUNoZWNrKCkgaGFzICZmdD09Im5ldHJ3IgorCQkJICAgICBjaGVjayB0byBwcmV2ZW50IGRvaW5nIGEgZGlyZWN0b3J5IGxpc3RpbmcKKwkJCSAgICAgKHdhcyBnZXR0aW5nIHVuZXhwZWN0ZWQgZGlyZWN0b3J5IHJlZnJlc2hlcworCQkJICAgICBpbiB0aGUgbWlkZGxlIG9mIHNvbWUgZnVuY3Rpb24gY2FsbHMpCisJCQkgICAqIE5ldHJ3T3B0aW9uUmVzdG9yZSBtb3ZlZCBhZnRlciBlISBmaWxlbmFtZQorCQkJICAgICBpbiBvcmRlciB0byByZXRhaW4gdXNlciBvcHRpb25zIGZvciBlZGl0aW5nCisJCQkgICAgIGluIHM6TmV0cndCcm93c2VDaGdEaXIoKQorCSAgICAgIERlYyAxMiwgMjAwNyAqIEJ1ZyBmaXggLS0gbmV0cncgZG9lcyBhIGJldHRlciBqb2Igb2YgcmV0YWluaW5nCisJICAgICAgICAgICAgICAgICAgICAgdXNlciBvcHRpb25zIHdoZW4gZWRpdGluZyBmaWxlcyB1bmRlciB0aGUgYWVnaXMKKwkJCSAgICAgb2YgdGhlIGJyb3dzZXIKKwl2MTE1OiBPY3QgMDQsIDIwMDcgKiBFcmlrIFJlbW1lbHp3YWFsIHBvaW50ZWQgb3V0IHRoYXQgdGhlIHVzZSBvZgorCQkJICAgICBzaGVsbHNsYXNoIGluIHM6R2V0VGVtcGZpbGUoKSB3YXMgaW5jb3JyZWN0CisJICAgICAgT2N0IDExLCAyMDA3ICogVHJhY2tlZCBkb3duIGFuZCBlbGltaW5hdGVkIGEgYnVnIHdpdGggZWRpdGluZworCQkJICAgICByZW1vdGUgKi50YXIuZ3ogYW5kICoudGFyLmJ6MiBmaWxlcworCSAgICAgIE9jdCAxMSwgMjAwNyAqIGc6bmV0cndfbG9jYWxtb3ZlY21kIHdhc24ndCBiZWluZyBpbml0aWFsaXplZAorCQkJICAgICBwcm9wZXJseSwgYW5kIGc6bmV0cndfbG9jYWxjb3B5Y21kIHdhcyBiZWluZworCQkJICAgICBvdmVyd3JpdHRlbi4KKwkgICAgICBPY3QgMTIsIDIwMDcgKiBQbGFjZWQgYWxsIDpSZXhwbG9yZSBhbmQgPDItbGVmdG1vdXNlPiBzZXR1cAorCQkJICAgICBpbiBhIG5ldyBzdXBwb3J0IGZ1bmN0aW9uIChzOlNldFJleERpcigpKS4KKwkgICAgICBPY3QgMTUsIDIwMDcgKiBuZXc6IGc6bmV0cndfYnJvd3NlX3NwbGl0ID09IDQ7IG1lYW5zIDxjcj4KKwkJCSAgICAgYmFzZWQgc2VsZWN0aW9uIHdpbGwgdXNlIHByZXZpb3VzIHdpbmRvdworCSAgICAgIE9jdCAyMCwgMjAwNyAqIGFsc28gY2hlY2tzIG9uIHwnc2hlbGx4cXVvdGUnfCB0byBzZXQgZzpuZXRyd19zaHEKKwkgICAgICBPY3QgMjQsIDIwMDcgKiBFeHBsb3JlIGhhbmRsZXMgcGF0aC8qKi9maWxlbmFtZQorCSAgICAgIE9jdCAyNywgMjAwNyAqIHNvdXJjaW5nIHJlbW90ZSBmaWxlcyBvZnRlbiBkaWRuJ3Qgd29yayB3aXRoIGZ0cCwKKwkgICAgICAgICAgICAgICAgICAgICB0dXJucyBvdXQgdGhhdCBiOm5ldHJ3X21ldGhvZCB3YXMgdW5kZWZpbmVkLCBzbworCQkJICAgICBzOlNhdmVCdWZWYXJzIGFuZCBzOlJlc3RvcmVCdWZWYXJzKCkgZml4ZWQgaXQuCisJdjExNDogU2VwIDI4LCAyMDA3ICogbVQsIHRoZSBtYXAgdGhhdCBpbnZva2VzIHRhZ3MsIGhhcyBiZWVuIGltcHJvdmVkCisJCQkgICAgIHRvIHN1cHBvcnQgdXNlIG9mIHJlbW90ZSB0YWdzIGZpbGVzLgorCSAgICAgIE9jdCAwMiwgMjAwNyAqIGNoYW5nZWQgTmV0cncgbWVudSB0byB1c2UgbW9yZSBzdWJtZW51cworCXYxMTM6IFNlcCAwNywgMjAwNyAqIHdvcmtlZCBvdXQgd2h5IHRoZSBjdXJzb3IgcG9zaXRpb24gd2Fzbid0IGJlaW5nCisJCQkgICAgIHNhdmVkIGFuZCByZXN0b3JlZCBhcyBpbnRlbmRlZCBhZnRlciBkb2luZyBzdWNoCisJCQkgICAgIHRoaW5ncyBhcyBkZWxldGluZyBhbmQgcmVuYW1pbmcgZmlsZXMuCisJICAgICAgU2VwIDExLCAyMDA3ICogRml4ZWQgYnVnIHdoaWNoIGVmZmVjdGl2ZWx5IGRpc2FibGVkIDxjLWw+IGFuZAorCQkJICAgICA8Yy1oPiBtYXBzCisJICAgICAgU2VwIDE4LCAyMDA3ICogdGhlcmUgdXNlZCB0byBiZSBvbmUgTmV0cndPcHRpb25SZXN0b3JlKCkgY2FsbCBhdAorCQkJICAgICB0aGUgZW5kIG9mIHRoZSBzOk5ldHJ3QnJvd3NlQ2hnRGlyKCkgZnVuY3Rpb247CisJCQkgICAgIHRoZXkncmUgbm93IGF0IHRoZSBlbmQgb2YgZXZlcnkgaWYuLmVsc2VpZi4uZWxzZQorCQkJICAgICBibG9jay4gIFRoZSBlZGl0LWEtZmlsZSBvbmUgaXMgbm90IHF1aXRlIGF0IHRoZSBlbmQKKwkJCSAgICAgb2YgaXRzIGJsb2NrOyBpbnN0ZWFkLCBpdHMganVzdCBiZWZvcmUgdGhlIGVkaXQuCisJCQkgICAgIFJlc3RvcmVzIHVzZXIgb3B0aW9ucywgdGhlbiB0aGlzIG5ldyBwbGFjZW1lbnQKKwkJCSAgICAgYWxsb3dzIGZ0cGx1Z2lucywgYXV0b2NtZHMsIGV0YyB0byBjaGFuZ2Ugc2V0dGluZ3MKKwkJCSAgICAgKGV4LiBmdHBsdWdpbi9jcHAudmltIHNldHMgY2luZGVudCkuCisJICAgICAgU2VwIDE5LCAyMDA3ICogY2hhbmdlZCBhbGwgc3RybGVuKCkgY2FsbHMgdG8gdXNlIHM6U3RybGVuKCksIGEKKwkJCSAgICAgZnVuY3Rpb24gd2hpY2ggaGFuZGxlcyB1dGYtOCB3aWRlIGNoYXJhY3RlcnMKKwkJCSAgICAgY29ycmVjdGx5LgorCSAgICAgIFNlcCAyMCwgMjAwNyAqIChOaWNvIFdlYmVyKSB0aGUgIngiIGNvbW1hbmQgaGFzIGJlZW4gZXh0ZW5kZWQKKwkJCSAgICAgdG8gTWFjJ3MgT1MvWCAobWFjdW5peCk7IGl0IG5vdyB1c2VzIG9wZW4gdG8KKwkJCSAgICAgaGFuZGxlIHxuZXRydy14fCBicm93c2luZyB3aXRoIHNwZWNpYWwgZmlsZXMuCisJICAgICAgU2VwIDIyLCAyMDA3ICogQWRkZWQgZzpuZXRyd19ub3JldG1hcCB0byBuZXRydyBhdCBUb255IE0ncworCQkJICAgICByZXF1ZXN0LgorCQkJICAgKiBJbmNsdWRlZCBwYXRoIHRvIE5ldHJ3UmVtb3RlUm1GaWxlKCkKKwl2MTEyOiBBdWcgMTgsIDIwMDcgKiBhZGRlZCBteCAofG5ldHJ3LW14fCkgZm9yIGV4ZWN1dGluZyBhcmJpdHJhcnkKKwkJCSAgICAgY29tbWFuZHMgb24gbWFya2VkIGZpbGVzCisJICAgICAgQXVnIDIyLCAyMDA3ICogbW9yZSBvcHRpb24gc2F2ZS9yZXN0b3JlIHdvcmsgZm9yCisJCQkgICAgIHM6TmV0cndCcm93c2VDaGdEaXIoKTsgczpOZXRyd09wdGlvblNhdmUoKQorCQkJICAgICBhbmQgczpOZXRyd09wdGlvblJlc3RvcmUoKSBub3cgdGFrZSBhIHBhcmFtZXRlcgorCQkJICAgICBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIHZhcmlhYmxlcyB0byBiZSB1c2VkIGZvcgorCQkJICAgICBzYXZpbmcgYW5kIHJlc3RvcmluZyAoZWl0aGVyICJ3OiIgb3IgInM6IikKKwkgICAgICBTZXAgMDQsIDIwMDcgKiBhZGRlZCB0aGUgOk5ldHJ3Q2xlYW5bIV0gY29tbWFuZAorCXYxMTE6IEp1bCAyNSwgMjAwNyAqIHVzaW5nIFdpbmRvd3MgYnV0IG5vdCB1c2luZyBDeWd3aW4sIG5ldHJ3IGRvZXMgYQorCQkJICAgICAiZmlsZSBidWZuYW1lIiB3aGVyZSB0aGUgYnVmbmFtZSB1c2VzIC9zCisJCQkgICAgIGluc3RlYWQgb2YgXHM7IFZpbSAiZml4ZXMiIGl0IGJ5IGNoYW5naW5nIHRoZQorCQkJICAgICBidWZuYW1lIHRvIHVzZSBccyBhbnl3YXkuICBUaGlzIG1lYW50IHRoYXQKKwkJCSAgICAgTmV0cndHZXRCdWZmZXIoKSBkaWRuJ3QgZmluZCB0aGUgYXBwcm9wcmlhdGVseQorCQkJICAgICBuYW1lZCBidWZmZXIsIGFuZCBzbyB3b3VsZCBnZW5lcmF0ZSBhIG5ldworCQkJICAgICBidWZmZXIgbGlzdGluZzsgaGVuY2UgdGhlIGN1cnNvciB3b3VsZCBhcHBlYXIKKwkJCSAgICAgdG8gaGF2ZSBiZWVuIG1vdmVkIHdoZW4gZG9pbmcgYSBwcmV2aWV3LgorCQkJICAgKiBhZGRlZCA8Mi1sZWZ0bW91c2U+IG1hcCB0byByZXR1cm4gdG8gbmV0cncncworCQkJICAgICBicm93c2VyIGRpc3BsYXkKKwkgICAgICBBdWcgMTYsIDIwMDcgKiBhZGRlZCB0aGUgbWFyay1maWxlIHN5c3RlbSwgaW5jbHVkaW5nCisJCQkgICAgIG1hcHMgZm9yIG1mIG1wIG10IG16IGFuZCBtdS4gIE1vZGlmaWNhdGlvbnMKKwkJCSAgICAgbWFkZSB0byBtYXBzIGZvciBhIEQgTyBhbmQgUiB0byBzdXBwb3J0CisJCQkgICAgIG1hcmtlZCBmaWxlcy4KKwl2MTEwOiBNYXkgMTAsIDIwMDcgKiBhZGRlZCBbIGFuZCBdIG1hcHMgdG8gTmV0cndUcmVlTGlzdGluZworCSAgICAgIE1heSAyNSwgMjAwNyAqIHxnOm5ldHJ3X3ByZXZpZXd8IGluY2x1ZGVkCisJICAgICAgTWF5IDI5LCAyMDA3ICogbW9kaWZlZCBuZXRydyNOZXRCcm93c2VYIHRvIGNvbnNpc3RlbnRseSB1c2UKKwkJCSAgICB8ZzpuZXRyd19zaHF8IGluc3RlYWQgb2YgaGFyZGNvZGVkIHF1b3RlcywKKwkJCSAgICAgYW5kIG1vZGlmaWVkIHRoZSBzbmlwcGV0IHRoYXQgc2V0cyB1cCByZWRpcgorCQkJICAgICBzbyBXaW5kb3dzIG1hY2hpbmVzIHVzZSAibnVsIiBpbnN0ZWFkIG9mCisJCQkgICAgICIvZGV2L251bGwiLgorCSAgICAgIEp1biAwMSwgMjAwNyAqIGZpeGVkIGJ1ZyAtLSBOZXRHZXRCdWZmZXIoKSB3YXNuJ3QgYWx3YXlzCisJCQkgICAgIHJlY29nbml6aW5nIGEgYnVmZmVyIG5hbWUgbWF0Y2ggd2hlbiBpdCBzaG91bGQsCisJCQkgICAgIHRodXMgcmVzdWx0aW5nIGluIFtTY3JhdGNoXSBidWZmZXJzLgorCSAgICAgIEp1biAwNCwgMjAwNyAqIEdhcnkgSm9obnNvbiBmb3VuZCBhIGJ1Z2ZpeCBmb3IgdGhlICJjIiBtYXBwaW5nCisJCQkgICAgIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyB0byBiZSBtYWRlIGN1cnJlbnQgYnV0CisJCQkgICAgIHRoZSBuYW1lIGNvbnRhaW5zIHNwYWNlcy4KIAl2MTA5OiBNYXIgMjYsIDIwMDcgKiBpZiBhIGRpcmVjdG9yeSBuYW1lIGluY2x1ZGVzIGEgIiQiIGNoYXJhY3RlciwKIAkJCSAgICAgRXhwbG9yZSgpIHdpbGwgdXNlIGV4cGFuZCgpIGluIGFuIGF0dGVtcHQgdG8KIAkJCSAgICAgZGVjaXBoZXIgdGhlIG5hbWUuCiAJICAgICAgTWF5IDA3LCAyMDA3ICogZzpuZXRyd191c2VfZXJyb3J3aW5kb3cgbm93IGFsbG93cyBvbmUgdG8KLQkgICAgICAgICAgICAgICAgICAgICBoYXZlIGVycm9yIG1lc3NhZ2VzIGdvIHRvIGEgcmVsaWFibGUgd2luZG93CisJCQkgICAgIGhhdmUgZXJyb3IgbWVzc2FnZXMgZ28gdG8gYSByZWxpYWJsZSB3aW5kb3cKIAkJCSAgICAgb3IgdG8gdXNlIGEgbGVzcyByZWxpYWJsZSBidXQgcmVjYWxsYWJsZSAKIAkJCSAgICAgZWNob2VyciBtZXRob2QKIAkgICAgICBNYXkgMDcsIDIwMDcgKiBnOm5ldHJ3X3NjcHBvcnQgYW5kIGc6bmV0cndfc3NocG9ydCBzdXBwb3J0Ci0JICAgICAgICAgICAgICAgICAgICAgdXNlIG9mIC1QIGFuZCAtcCwgcmVzcGVjdGl2ZWx5LCB0byBzZXQgcG9ydAorCQkJICAgICB1c2Ugb2YgLVAgYW5kIC1wLCByZXNwZWN0aXZlbHksIHRvIHNldCBwb3J0CiAJCQkgICAgIGZvciBzY3Avc3NoLgogCXYxMDg6IEphbiAwMywgMjAwNyAqIGluY2x1ZGVkIHByZXZpZXcgbWFwICh8bmV0cnctcHwpLCBzdXBwb3J0aW5nCiAJCQkgICAgIHJlbW90ZSBicm93c2luZwpAQCAtMTg3OSwyNTcgKzI3MTQsMzE5IEBACiAJdjk3OiBNYXkgMDEsIDIwMDYgICogZXhpc3RzKCImYWNkIikgbm93IHVzZWQgdG8gZGV0ZXJtaW5lIGlmCiAJCQkgICAgIHRoZSAnYWNkJyBvcHRpb24gZXhpc3RzCiAJCQkgICAqICJvYnRhaW4iIG5vdyB3b3JrcyBhZ2FpbiB1bmRlciBXaW5kb3dzCi0Jdjk2OiAqIGJ1Z2ZpeCAtIHRoZSB8J2FjZCd8IG9wdGlvbiBpcyBub3QgYWx3YXlzIGRlZmluZWQgYnV0IGlzCi0JICAgICAgIG5vdyBieXBhc3NlZCBvbmx5IHdoZW4gaXQgaXMKLQl2OTU6ICogYnVnZml4IC0gSGlkaW5nIG1vZGUgd29ya2VkIGNvcnJlY3RseSAoZG9uJ3Qgc2hvdyBhbnkgZmlsZQotCSAgICAgICBtYXRjaGluZyBhbnkgb2YgdGhlIGc6bmV0cndfaGlkZSBwYXR0ZXJucyksIGJ1dAotCSAgICAgICBzaG93aW5nIG1vZGUgd2FzIHNob3dpbmcgb25seSB0aG9zZSBmaWxlcyB0aGF0IGRpZG4ndAotCSAgICAgICBtYXRjaCBhbnkgb2YgdGhlIGc6bmV0cndfaGlkZSBwYXR0ZXJucy4gIEluc3RlYWQsIGl0IG5vdwotCSAgICAgICBzaG93cyBhbGwgZmlsZXMgdGhhdCBtYXRjaCBhbnkgb2YgdGhlIGc6bmV0cndfaGlkZSBwYXR0ZXJucwotCSAgICAgICAodGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGxvZ2ljYWwgYW5kIGFuZCBsb2dpY2FsIG9yKS4KLQl2OTQ6ICogYnVnZml4IC0gYSBEZWNobygpIGhhZCBhIG1pc3NpbmcgcXVvdGU7IG9ubHkgYWZmZWN0cyB0aGluZ3MKLQkgICAgICAgd2hlbiBkZWJ1Z2dpbmcgd2FzIGVuYWJsZWQuCi0JdjkzOiAqIGJ1Z2ZpeCAtIHJlbW92ZWQgRm9jdXNHYWluZWQgZXZlbnQgZnJvbSBjYXVzaW5nIGEgc2xvdy1icm93c2VyCi0JICAgICAgIHJlZnJlc2ggZm9yIFdpbmRvd3MKLQl2OTI6ICogOkV4cGxvcmUgKiovL3BhdHRlcm4gaW1wbGVtZW50ZWQgICgqKi9maWxlcGF0dGVybiBhbHJlYWR5IHRha2VuKQotCXY5MTogKiA6RXhwbG9yZSAqL3BhdHRlcm4gaW1wbGVtZW50ZWQKLQkgICAgICogfCdhY2QnfCBvcHRpb24gYnlwYXNzZWQKLQl2OTA6ICogbWFyayAnLCBhcyBzdWdnZXN0ZWQgYnkgWWVnYXBwYW4gTGFrc2htYW5hbiwgdXNlZCB0byBoZWxwCi0JICAgICAgIGd1YXJhbnRlZSBlbnRyeSBpbnRvIHRoZSBqdW1wIGxpc3Qgd2hlbiBhcHByb3ByaWF0ZS4KLQkgICAgICogPHMtZG93bj4gYW5kIDxzLXVwPiBhcmUgbm8gbG9uZ2VyIGRlZmluZWQgdW50aWwgYQotCSAgICAgICA6RXhwbG9yZSAqKi9wYXR0ZXJuICBpcyB1c2VkIChpZiB0aGUgdXNlciBhbHJlYWR5IGhhcyBhIG1hcAotCSAgICAgICBmb3IgdGhlbSkuICBUaGV5IHdpbGwgYmUgZGVmaW5lZCBmb3IgbmV3IGJyb3dzZXIgd2luZG93cwotCSAgICAgICBmcm9tIHRoYXQgcG9pbnQgZm9yd2FyZC4KLQl2ODk6ICogQSA8cy1kb3duPiwgPHMtdXA+LCA6TmV4cGxvcmUsIG9yIGEgOlBleHBsb3JlIHdpdGhvdXQgaGF2aW5nCi0JICAgICAgIGZpcnN0IGRvbmUgYW4gOkV4cGxvcmUgKiovcGF0dGVybiAoc2VlIHxuZXRydy1zdGFyc3RhcnwpIGNhdXNlZAotCSAgICAgICBhIGxvdCBvZiB1bmhlbHBmdWwgZXJyb3IgbWVzc2FnZXMgdG8gYXBwZWFyCi0Jdjg4OiAqIG1vdmVkIERyQ2hpcC5OZXRydyBtZW51IHRvIE5ldHJ3LiAgTm93IGhhcyBwcmlvcml0eSA4MCBieQotCSAgICAgICBkZWZhdWx0LiAgZzpOZXRyd1RvcEx2bE1lbnUgPT0gIk5ldHJ3IiBhbmQgY2FuIGJlIGNoYW5nZWQKLQkgICAgICAgYnkgdGhlIHVzZXIgdG8gc3VpdC4gIFRoZSBwcmlvcml0eSBpcyBnOk5ldHJ3TWVudVByaW9yaXR5LgotCSAgICAgKiBDaGFuZ2VkIGZpbGV0eXBlIGZvciBicm93c2VyIGRpc3BsYXlzIGZyb20gbmV0cndsaXN0IHRvIG5ldHJ3LgotCXY4NzogKiBidWcgZml4IC0tIG1lbnVzIHdlcmUgcGFydGlhbGx5IGRpc2FwcGVhcmluZwotCXY4NTogKiBidWcgZml4IC0tIG1pc3NpbmcgYW4gZW5kaWYKLQkgICAgICogYnVnIGZpeCAtLSBoYW5kbGVzIHNwYWNlcyBpbiBuYW1lcyBhbmQgZGlyZWN0b3JpZXMgd2hlbiB1c2luZwotCSAgICAgICBmdHAtYmFzZWQgYnJvd3NpbmcKLQl2ODM6ICogZGlzYWJsZWQgc3RvcC1hY2QgaGFuZGxpbmc7IHRoZSBjaGFuZ2UgaW4gZGlyZWN0b3J5IGhhbmRsaW5nCi0JICAgICAgIG1heSBhbGxvdyBhY2QgdG8gYmUgdXNlZCBhZ2Fpbi4gIEF3YWl0aW5nIGZlZWRiYWNrLgotCSAgICAgKiBEIHdhcyByZWZ1c2luZyB0byBkZWxldGUgcmVtb3RlIGZpbGVzL2RpcmVjdG9yaWVzIGluIHdpZGUKLQkgICAgICAgbGlzdGluZyBtb2RlLgotCXY4MTogKiBGb2N1c0dhaW5lZCBhbHNvIHVzZWQgdG8gcmVmcmVzaC93aXBlIGxvY2FsIGJyb3dzZXIgZGlyZWN0b3J5Ci0JICAgICAgIGJ1ZmZlcnMKLQkgICAgICogKGJ1Z2ZpeCkgbmV0cncgd2FzIGxlYXZpbmcgW1NjcmF0Y2hdIGJ1ZmZlcnMgYmVoaW5kIHdoZW4gdGhlCi0JICAgICAgIHVzZXIgaGFkIHRoZSAiaGlkZGVuIiBvcHRpb24gc2V0LiAgVGhlICdoaWRkZW4nIG9wdGlvbiBpcwotCSAgICAgICBub3cgYnlwYXNzZWQuCi0JdjgwOiAqIFNoZWxsQ21kUG9zdCBldmVudCB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggZzpuZXRyd19mYXN0YnJvd3NlCi0JICAgICAgIHRvIHJlZnJlc2gvd2lwZSBsb2NhbCBicm93c2VyIGRpcmVjdG9yeSBidWZmZXJzLgotCXY3OTogKiBkaXJlY3RvcmllcyBhcmUgbm93IGRpc3BsYXllZCB3aXRoIG5vd3JhcAotCSAgICAgKiAoYnVnZml4KSBpZiB0aGUgY29sdW1uIHdpZHRoIHdhcyBzbWFsbGVyIHRoYW4gdGhlIGxhcmdlc3QKLQkgICAgICAgZmlsZSdzIG5hbWUsIHRoZW4gbmV0cncgd291bGQgaGFuZyB3aGVuIHVzaW5nIHdpZGUtbGlzdGluZwotCSAgICAgICBtb2RlIC0gZml4ZWQKLQkgICAgICogZzpuZXRyd19mYXN0YnJvd3NlIGludHJvZHVjZWQKLQl2Nzg6ICogcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSBvbiBhbGxvd2luZyBzcGFjZXMgaW5zaWRlIGRpcmVjdG9yeQotCSAgICAgICBuYW1lcyBmb3IgcmVtb3RlIHdvcmsgKHJlYWRpbmcsIHdyaXRpbmcsIGJyb3dzaW5nKS4gIChzY3ApCi0Jdjc3OiAqIE1pa29sYWogTWFjaG93c2tpIGZpeGVkIGEgYnVnIGluIGEgc3Vic3RpdHV0ZSBjb21tYW5kCi0JICAgICAqIGc6bmV0cndfYnJvd3NleF92aWV3ZXIgaW1wbGVtZW50ZWQKLQkgICAgICogTWlrb2xhaiBNYWNob3dza2kgcG9pbnRlZCBvdXQgdGhhdCBnbm9tZS1vcGVuIGlzIG9mdGVuCi0JICAgICAgIGV4ZWN1dGFibGUgdW5kZXIgS0RFIHN5c3RlbXMsIGFsdGhvdWdoIGl0IGlzIGVmZmVjdGl2ZWx5Ci0JICAgICAgIG5vdCBmdW5jdGlvbmFsLiAgTmV0QnJvd3NlWCBub3cgbG9va3MgZm9yICJraWNrZXIiIGFzIAotCSAgICAgICBhIHJ1bm5pbmcgcHJvY2VzcyB0byBkZXRlcm1pbmUgaWYgS0RFIGlzIGFjdHVhbGx5IHRoZQotCSAgICAgICByZWFsbHkgcnVubmluZy4KLQkgICAgICogRXhwbG9yZXIncyBPIGZ1bmN0aW9uYWxpdHkgd2FzIGluYWR2ZXJ0ZW50bHkgbGVmdCBvdXQuCi0JICAgICAgIE5ldHJ3IG5vdyBkb2VzIHRoZSBzYW1lIHRoaW5nLCBidXQgd2l0aCB0aGUgIlAiIGtleS4KLQkgICAgICogYWRkZWQgZzpuZXRyd19icm93c2Vfc3BsaXQgb3B0aW9uCi0JICAgICAqIGZpeGVkIGEgYnVnIHdoZXJlIHRoZSBkaXJlY3RvcnkgY29udGFpbmVkIGEgIi4iIGJ1dAotCSAgICAgICB0aGUgZmlsZSBkaWRuJ3QgKHdhcyB0cmVhdGluZyB0aGUgZGlybmFtZSBmcm9tICIuIgotCSAgICAgICBvbndhcmRzIGFzIGEgc3VmZml4KQotCXY3NjogKiAiZGlyZWN0b3J5IGlzIG1pc3NpbmciIGVycm9yIG1lc3NhZ2Ugbm93IHJlc3RvcmVzIGVjaG8KLQkgICAgICAgaGlnaGxpZ2h0aW5nCi0Jdjc1OiAqIGZpbGU6Ly8uLi4gbm93IGNvbmZvcm1zIHRvIFJGQzIzOTYgKHRoYW5rcyB0byBTLiBaYWNjaGlyb2xpKQotCSAgICAgKiBpZiB0aGUgYmluYXJ5IG9wdGlvbiBpcyBzZXQsIHRoZW4gTmV0V3JpdGUoKSB3aWxsIG9ubHkgd3JpdGUKLQkgICAgICAgdGhlIHdob2xlIGZpbGUgKGxpbmUgbnVtYmVycyBkb24ndCBtYWtlIHNlbnNlIHdpdGggdGhpcykuCi0JICAgICAgIFN1cHBvcnRzIHdyaXRpbmcgb2YgdGFyIGFuZCB6aXAgZmlsZXMuCi0Jdjc0OiAqIGJ1Z2ZpeCAodmltLCB0aGVuIDpFeHBsb3JlKSBub3cgd29ya3MKLQkgICAgICogY3RybC1MIGtlZXBzIGN1cnNvciBhdCBzYW1lIHNjcmVlbiBsb2NhdGlvbiAoYm90aCBsb2NhbCBhbmQKLQkgICAgICAgcmVtb3RlIGJyb3dzaW5nKQotCSAgICAgKiBuZXRydyBub3cgY2FuIHJlYWQgcmVtb3RlIHppcCBhbmQgdGFyIGZpbGVzCi0JICAgICAqIE9idGFpbiBub3cgdXNlcyBXaW5YUCBmdHArLm5ldHJjIHN1Y2Nlc3NmdWxseQotCXY3MzogKiBidWdmaXggLS0gc2NwOi8vaG9zdC9wYXRoL2ZpbGUgd2FzIGdldHRpbmcgbmFtZWQgaW5jb3JyZWN0bHkKLQkgICAgICogbmV0cncgZGV0ZWN0cyB1c2Ugb2YgZWFybGllci10aGFuLTcuMCB2ZXJzaW9uIG9mIHZpbSBhbmQgaXNzdWVzCi0JICAgICAgIGEgcGVydGluZW50IGVycm9yIG1lc3NhZ2UuCi0JICAgICAqIG5ldHJ3U2V0dGluZ3MudmltIGlzIG5vdyB1c2VzIGF1dG9sb2FkaW5nLiAgT25seQotCSAgICAgICA8bmV0cndQbHVnaW4udmltPiBpcyBuZWVkZWQgYXMgYSBwdXJlIHBsdWdpbgotCSAgICAgICAoaWUuIGFsd2F5cyBsb2FkZWQpLgotCXY3MjogKiBidWdmaXggLS0gZm9ybWVybHksIG9uZSBjb3VsZCBwcmV2ZW50IHRoZSBsb2FkaW5nIG9mIG5ldHJ3Ci0JICAgICAgIGJ5ICJsZXQgZzpsb2FkZWRfbmV0cnc9MSI7IHdoZW4gYXV0b2xvYWRpbmcgYmVjYW1lIHN1cHBvcnRlZCwKLQkgICAgICAgdGhpcyBmZWF0dXJlIHdhcyBsb3N0LiAgSXQgaXMgbm93IHJlc3RvcmVkLgotCXY3MTogKiBidWdmaXggLS0gbWFkZSBzb21lICJzZXQgbm9tb2RpZmlhYmxlInMgaW50byBzZXRsb2NhbCB2YXJpYW50cwotCSAgICAgICAoYWxsb3dzIDplIHNvbWVuZXdmaWxlICB0byBiZSBtb2RpZmlhYmxlIGFzIHVzdWFsKQotCSAgICAgKiBOZXRyd1NldHRpbmdzIGNhbGxzIGEgbmV0cncgZnVuY3Rpb24sIHRoZXJlYnkgYXNzdXJpbmcgdGhhdAotCSAgICAgICBuZXRydyBoYXMgbG9hZGVkLiAgSG93ZXZlciwgaWYgbmV0cncgZG9lcyBub3QgbG9hZCBmb3Igd2hhdGV2ZXIKLQkgICAgICAgcmVhc29uLCB0aGVuIE5ldHJ3U2V0dGluZ3Mgd2lsbCBub3cgaXNzdWUgYSB3YXJuaW5nIG1lc3NhZ2UuCi0JICAgICAqIEZvciB3aGF0IHJlYXNvbiBJIGRvbid0IHJlY2FsbCwgd2hlbiB3Z2V0IGFuZCBmZXRjaCBhcmUgYm90aAotCSAgICAgICBub3QgcHJlc2VudCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBhIGh0dHA6Ly8uLi4gdXJsIGlzIG1hZGUsCi0JICAgICAgIG5ldHJ3IGV4aXRlZC4gIEl0IG5vdyBvbmx5IHJldHVybnMuCi0JICAgICAqIFdoZW4gY2g9MSwgb24gdGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCB1c2VzIG9mIGJyb3dzaW5nIE5ldHJ3Ci0JICAgICAgIHdvdWxkIGlzc3VlIGEgYmxhbmsgbGluZSB0byBjbGVhciB0aGUgZWNobydkIG1lc3NhZ2VzLiAgVGhpcwotCSAgICAgICBjYXVzZWQgYW4gYW5ub3lpbmcgIkhpdC1FbnRlciIgcHJvbXB0OyBub3cgYSBibGFuayBsaW5lIG1lc3NhZ2UKLQkgICAgICAgaXMgZWNobydkIG9ubHkgaWYgJmNoPjEuCi0JdjcwOiAqIHdoZW4gdXNpbmcgfG5ldHJ3LU98LCB0aGUgIk9idGFpbmluZyBmaWxlbmFtZSIgbWVzc2FnZSBpcyBub3cKLQkgICAgICAgc2hvd24gdXNpbmcgfGhsLVVzZXI5fC4gIElmIFVzZXI5IGhhcyBub3QgYmVlbiBkZWZpbmVkLCBuZXRydwotCSAgICAgICB3aWxsIGRlZmluZSBpdC4KLQl2Njk6ICogQnVnZml4OiB3aW45NS85OCBtYWNoaW5lcyB3ZXJlIGV4cGVyaWVuY2luZyBhCi0JICAgICAgICJFMTIxOiBVbmRlZmluZWQgdmFyaWFibGU6IGc6bmV0cndfd2luOTVmdHAiIG1lc3NhZ2UKLQl2Njg6ICogZG91YmxlLWNsaWNrLWxlZnRtb3VzZSBzZWxlY3RzIHdvcmQgdW5kZXIgbW91c2UKLQl2Njc6ICogUGFzc3dvcmRzIHdoaWNoIGNvbnRhaW4gYmxhbmtzIHdpbGwgbm93IGJlIHN1cnJvdW5kZWQgYnkKLQkgICAgICAgZG91YmxlLXF1b3RlcyBhdXRvbWF0aWNhbGx5IChZb25nd2VpKQotCXY2NjogKiBOZXRydyBub3cgc2VlbXMgdG8gd29yayB3aXRoIGEgZmV3IG1vcmUgV2luZG93cyBzaXR1YXRpb25zCi0JICAgICAqIE8gbm93IG9idGFpbnMgYSBmaWxlOiByZW1vdGUgYnJvd3NpbmcgZmlsZSAtPiBsb2NhbCBjb3B5LAotCSAgICAgICBsb2NhbGx5IGJyb3dzaW5nIGZpbGUgLT4gY3VycmVudCBkaXJlY3RvcnkgKHNlZSA6cHdkKQotCSAgICAgKiBpIG5vdyBjeWNsZXMgYmV0d2VlbiB0aGluLCBsb25nLCBhbmQgd2lkZSBsaXN0aW5nIHN0eWxlcwotCSAgICAgKiBOQiBhbmQgTmIgYXJlIG1hcHMgdGhhdCBhcmUgYWx3YXlzIGF2YWlsYWJsZTsgY29ycmVzcG9uZGluZwotCSAgICAgICBCIGFuZCBiIG1hcHMgYXJlIG9ubHkgYXZhaWxhYmxlIHdoZW4gbm90IHVzaW5nIHdpZGUgbGlzdGluZwotCSAgICAgICBpbiBvcmRlciB0byBhbGxvdyB0aGVtIHRvIGJlIHVzZWQgZm9yIG1vdGlvbnMKLQl2NjU6ICogQnJvd3NlciBmdW5jdGlvbnMgbm93IHVzZSBOZXRPcHRpb25TYXZlL1Jlc3RvcmU7IGluIHBhcnRpY3VsYXIsCi0JICAgICAgIG5ldHJ3IG5vdyB3b3JrcyBhcm91bmQgdGhlIHJlcG9ydCBzZXR0aW5nCi0JdjY0OiAqIEJ1Z2ZpeCAtIGJyb3dzaW5nIGEgIi8iIGRpcmVjdG9yeSAoVW5peCkgeWllbGRlZCBidWZmZXJzIAotCSAgICAgICBuYW1lZCAiW1NjcmF0Y2hdIiBpbnN0ZWFkIG9mICIvIgotCSAgICAgKiBCdWdmaXggLSByZW1vdGUgYnJvd3Npbmcgd2l0aCBmdHAgd2FzIG9taXR0aW5nIHRoZSAuLyBhbmQgLi4vCi0JdjYzOiAqIG5ldHJ3IG5vdyB0YWtlcyBhZHZhbnRhZ2Ugb2YgYXV0b2xvYWQgKGFuZCByZXF1aXJlcyA3LjApCi0JICAgICAqIEJ1Z2ZpeCAtIHVzaW5nIHIgKHRvIHJldmVyc2Ugc29ydCkgd29ya2luZyBhZ2FpbgotCXY2MjogKiBCdWdmaXggLSBzcGFjZXMgYWxsb3dlZCBhZ2FpbiBpbiBkaXJlY3RvcnkgbmFtZXMgd2l0aAotCSAgICAgICBnOm5ldHJ3X2tlZXBkaXI9MC4gIEluIGZhY3QsIEkndmUgdGVzdGVkIG5ldHJ3IChhZ2FpbikKLQkgICAgICAgd2l0aCBtb3N0IEFOU0kgcHVuY3R1YXRpb24gbWFya3MgZm9yIGRpcmVjdG9yeSBuYW1lcy4KLQkgICAgICogQnVnZml4IC0gTmV0cndTZXR0aW5ncyBnYXZlIGVycm9ycyB3aGVuIGc6bmV0cndfc2lsZW50Ci0JICAgICAgIGhhZCBub3QgYmUgc2V0LgotCXY2MTogKiBkb2N1bWVudCB1cGdyYWRlIC0tIG5ldHJ3IHZhcmlhYmxlLWJhc2VkIHNldHRpbmdzIGFsbCBzaG91bGQKLQkgICAgICAgaGF2ZSB0YWdzLiAgU3VwcG9ydHMgTmV0cndTZXR0aW5ncyBjb21tYW5kLgotCSAgICAgKiBzZXZlcmFsIGltcG9ydGFudCB2YXJpYWJsZXMgYXJlIHdpbmRvdy1vcmllbnRlZC4gIE5ldHJ3IGhhcwotCSAgICAgICB0byB0cmFuc2ZlciB0aGVzZSBhY3Jvc3MgYSB3aW5kb3cgc3BsaXQuICBTZWUgczpCdWZXaW5WYXJzKCkKLQkgICAgICAgYW5kIHM6VXNlQnVmV2luVmFycygpLgotCXY2MDogKiB3aGVuIHVzaW5nIHRoZSBpIG1hcCB0byBzd2l0Y2ggYmV0d2VlbiBsb25nIGFuZCBzaG9ydCBsaXN0aW5ncywKLQkgICAgICAgbmV0cncgd2lsbCBub3cga2VlcCBjdXJzb3Igb24gc2FtZSBsaW5lCi0JICAgICAqICJNYXRjaCAjIG9mICMiIG5vdyB1c2VzIHN0YXR1cyBsaW5lCi0JICAgICAqIDpFeHBsb3JlICoqLyouYyAgd2lsbCBub3cgd29yayBmcm9tIGEgbm9uLW5ldHJ3LWJyb3dzZXIgd2luZG93Ci0JICAgICAqIDpFeHBsb3JlICoqL3BhdHRlcm5zIGNhbiBub3cgYmUgcnVuIGluIHNlcGFyYXRlIGJyb3dzZXIgd2luZG93cwotCSAgICAgKiBhY3RpdmUgYmFubmVyIChoaXQgPGNyPiB3aWxsIGNhdXNlIHZhcmlvdXMgdGhpbmdzIHRvIGhhcHBlbikKLQl2NTk6ICogYnVnZml4IC0tIGFub3RoZXIga2VlcGFsdCB3b3JrLWFyb3VuZCBpbnN0YWxsZWQgKGZvciB2aW02LjMpCi0JICAgICAqICJNYXRjaCAjIG9mICMiIGZvciBFeHBsb3JlICoqL3BhdHRlcm4gbWF0Y2hlcwotCXY1ODogKiBFeHBsb3JlIGFuZCByZWxhdGl2ZXMgY2FuIG5vdyBoYW5kbGUgKiovc29tZWZpbGVwYXR0ZXJuICh2NykKLQkgICAgICogTmV4cGxvcmUgYW5kIFBleHBsb3JlIGludHJvZHVjZWQgKHY3KS4gIHNoaWZ0LWRvd24gYW5kIHNoaWZ0LXVwCi0JICAgICAgIGN1cnNvciBrZXlzIHdpbGwgaW52b2tlIE5leHBsb3JlIGFuZCBQZXhwbG9yZSwgcmVzcGVjdGl2ZWx5LgotCSAgICAgKiBidWcgZml4ZWQgd2l0aCBvIGFuZCB2Ci0JICAgICAqIGF1dG9jaGRpciBvbmx5IHdvcmtlZCBhcm91bmQgZm9yIHZpbSB3aGVuIGl0IGhhcyBiZWVuCi0JICAgICAgIGNvbXBpbGVkIHdpdGggZWl0aGVyIHwrbmV0YmVhbnNfaW50Z3wgb3IgfCtzdW5fd29ya3Nob3B8Ci0JICAgICAqIFVuZGVyIFdpbmRvd3MsIGFsbCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgd2VyZSBiZWluZyBwcmVjZWRlZAotCSAgICAgICB3aXRoIGEgIi8iIHdoZW4gbG9jYWwgYnJvd3NpbmcuICBGaXhlZC4KLQkgICAgICogV2hlbjogc3ludGF4IGhpZ2hsaWdodGluZyBpcyBvZmYsIGxhc3RzdGF0dXM9MiwgYW5kIHJlbW90ZQotCSAgICAgICBicm93c2luZyBpcyB1c2VkLCBzb21ldGltZXMgdGhlIGxhc3RzdGF0dXMgaGlnaGxpZ2h0aW5nCi0JICAgICAgIGJsZWVkcyBpbnRvIHRoZSBlbnRpcmUgZGlzcGxheS4gIFdvcmsgYXJvdW5kIC0gZG8gYW4gZXh0cmEKLQkgICAgICAgcmVkcmF3IGluIHRoYXQgY2FzZS4KLQkgICAgICogQnVnZml4OiB3aGVuIGc6bmV0cndfa2VlcGRpcj0wLCBkdWUgdG8gcmUtdXNlIG9mIGJ1ZmZlcnMsCi0JICAgICAgIG5ldHJ3IGRpZG4ndCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSB3aGVuIGl0IHNob3VsZCd2ZQotCSAgICAgKiBCdWdmaXg6IEQgYW5kIFIgY29tbWFuZHMgd29yayBhZ2FpbgotCXY1NzogKiBFeHBsb3JlIGFuZCByZWxhdGl2ZXMgY2FuIG5vdyBoYW5kbGUgUk8gZmlsZXMKLQkgICAgICogcmV2ZXJzZSBzb3J0IHJlc3RvcmVkIHdpdGggdmltNydzIHNvcnQgY29tbWFuZAotCSAgICAgKiBnOm5ldHJ3X2tlZXBkaXIgbm93IGJlaW5nIHVzZWQgdG8ga2VlcCB0aGUgY3VycmVudCBkaXJlY3RvcnkKLQkgICAgICAgdW5jaGFuZ2VkIGFzIGludGVuZGVkIChzZW5zZSBjaGFuZ2UpCi0JICAgICAqIHZpbSA2LjMgc3RpbGwgc3VwcG9ydGVkCi0JdjU2OiAqIExvY2FsQnJvd3NlIG5vdyBzYXZlcyBhdXRvY2hkaXIgc2V0dGluZywgdW5zZXRzIGl0LCBhbmQKLQkgICAgICAgcmVzdG9yZXMgaXQgYmVmb3JlIHJldHVybmluZy4KLQkgICAgICogdXNpbmcgdmltJ3MgcmVuYW1lKCkgaW5zdGVhZCBvZiBzeXN0ZW0gKyBsb2NhbF9yZW5hbWUgdmFyaWFibGUKLQkgICAgICogYXZvaWRzIGNoYW5naW5nIGRpcmVjdG9yeSB3aGVuIGc6bmV0cndfa2VlcGRpciBpcyBmYWxzZQotCXY1NTogKiAtYmFyIHVzZWQgd2l0aCA6RXhwbG9yZSA6U2V4cGxvcmUgZXRjIHRvIGFsbG93IG11bHRpcGxlCi0JICAgICAgIGNvbW1hbmRzIHRvIGJlIHNlcGFyYXRlZCBieSB8cwotCSAgICAgKiBicm93c2VyIGxpc3RpbmdzIG5vdyB1c2UgdGhlICJub3dyYXAiIG9wdGlvbgotCSAgICAgKiBicm93c2VyOiBzb21lIHVudXNlZnVsIGVycm9yIG1lc3NhZ2VzIG5vdyBzdXBwcmVzc2VkCi0JdjU0OiAqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgRXhwbG9yZSBhbmQgU2V4cGxvcmUgaGF2ZSBiZWVuCi0JICAgICAgIGltcGxlbWVudGVkLiAgSW4gYWRkaXRpb24sIEhleHBsb3JlIGFuZCBWZXhwbG9yZSBjb21tYW5kcwotCSAgICAgICBhcmUgYXZhaWxhYmxlLCB0b28uCi0JICAgICAqIDxhbWF0Y2g+IHVzZWQgaW5zdGVhZCBvZiA8YWZpbGU+IGluIHRoZSB0cmFuc3BhcmVuY3kKLQkgICAgICAgc3VwcG9ydCAoQnVmUmVhZENtZCwgRmlsZVJlYWRDbWQsIEZpbGVXcml0ZUNtZCkKLQkgICAgICogKioqbmV0cncqKiogcHJlcGVuZGVkIHRvIHZhcmlvdXMgZXJyb3IgbWVzc2FnZXMgbmV0cncgbWF5IGVtaXQKLQkgICAgICogZzpuZXRyd19wb3J0IHVzZWQgaW5zdGVhZCBvZiBiOm5ldHJ3X3BvcnQgZm9yIHNjcAotCSAgICAgKiBhbnkgbGVhZGluZyBbOiNdIGlzIHJlbW92ZWQgZnJvbSBwb3J0IG51bWJlcnMKLQl2NTM6ICogYmFja3NsYXNoZXMgYXMgd2VsbCBhcyBzbGFzaGVzIHBsYWNlZCBpbiB2YXJpb3VzIHBhdHRlcm5zCi0JICAgICAgIChleC4gZzpuZXRyd19zb3J0X3NlcXVlbmNlKSB0byBiZXR0ZXIgc3VwcG9ydCBXaW5kb3dzCi0JdjUyOiAqIG5vbnVtYmVyJ2luZyBub3cgc2V0IGZvciBicm93c2luZyBidWZmZXJzCi0JICAgICAqIHdoZW4gdGhlIGhpZGluZyBsaXN0IGhpZCBhbGwgZmlsZXMsIGVycm9yIG1lc3NhZ2VzIGVuc3VlZC4gRml4ZWQKLQkgICAgICogd2hlbiBicm93c2luZywgc3dmIGlzIHNldCwgYnV0IGRpcmVjdG9yeSBpcyBub3Qgc2V0LCB3aGVuIG5ldHJ3Ci0JICAgICAgIHdhcyBhdHRlbXB0aW5nIHRvIHJlc3RvcmUgb3B0aW9ucywgdmltIHdhbnRlZCB0byBzYXZlIGEgc3dhcGZpbGUKLQkgICAgICAgdG8gYSBsb2NhbCBkaXJlY3RvcnkgdXNpbmcgYW4gdXJsLXN0eWxlIHBhdGguICBGaXhlZAotCXY1MTogKiBjeWd3aW4gZGV0ZWN0aW9uIG5vdyBhdXRvbWF0ZWQgKHVzaW5nIHdpbmRvd3MgYW5kICZzaGVsbCBpcyBiYXNoKQotCSAgICAgKiBjdXN0b21pemFibGUgYnJvd3NlciAiZmlsZSIgcmVqZWN0aW9uIHBhdHRlcm5zCi0JICAgICAqIGRpcmVjdG9yeSBoaXN0b3J5Ci0JICAgICAqIDpbcmFuZ2VddyB1cmwgIG5vdyBzdXBwb3J0ZWQgKGllLiBuZXRydyBoYXMgYSBGaWxlV3JpdGVDbWQgZXZlbnQpCi0JICAgICAqIGVycm9yIG1lc3NhZ2VzIGhhdmUgYSAiUHJlc3MgPGNyPiB0byBjb250aW51ZSIgdG8gYWxsb3cgdGhlbQotCSAgICAgICB0byBiZSBzZWVuCi0JICAgICAqIGRpcmVjdG9yeSBicm93c2VyIGRpc3BsYXlzIG5vIGxvbmdlciBib3RoZXIgdGhlIHN3YXBmaWxlCi0JICAgICAqIHUvVSBjb21tYW5kcyB0byBnbyB1cCBhbmQgZG93biB0aGUgaGlzdG9yeSBzdGFjawotCSAgICAgKiBoaXN0b3J5IHN0YWNrIG1heSBiZSBzYXZlZCB3aXRoIHZpbWluZm8gd2l0aCBpdHMgIiEiIG9wdGlvbgotCSAgICAgKiBidWdmaXhlcyBhc3NvY2lhdGVkIHdpdGggdW53YW50ZWQgW05vIEZpbGVzXSBlbnRyaWVzCi0JdjUwOiAqIGRpcmVjdG9yaWVzIG5vdyBkaXNwbGF5ZWQgdXNpbmcgYnVmdHlwZT1ub2ZpbGU7IHNob3VsZCBrZWVwIHRoZQotCSAgICAgICBkaXJlY3RvcnkgbmFtZXMgYXMtaXMKLQkgICAgICogYXR0ZW1wdHMgdG8gcmVtb3ZlIGVtcHR5ICJbTm8gRmlsZV0iIGJ1ZmZlcnMgbGVmdG92ZXIKLQkgICAgICAgZnJvbSA6ZmlsZSAuLm5hbWUuLiBjb21tYW5kcwotCSAgICAgKiBidWdmaXg6IGEgImNhcHMtbG9jayIgZWRpdGluZyBkaWZmaWN1bHR5IGxlZnQgaW4gdjQ5IHdhcyBmaXhlZAotCSAgICAgKiBzeW50YXggaGlnaGxpZ2h0aW5nIGZvciAiU2hvd2luZzoiIHRoZSBoaWRpbmcgbGlzdCBpbmNsdWRlZAotCSAgICAgKiBib29rbWFya3MgY2FuIG5vdyBiZSByZXRhaW5lZCBpZiAiISIgaXMgaW4gdGhlIHZpbWluZm8gb3B0aW9uCi0JdjQ5OiAqIHdpbGwgdXNlIGZ0cCBmb3IgaHR0cDovLy4uLi8gYnJvd3NpbmcgdjQ4OgotCSAgICAgKiBPbmUgbWF5IHVzZSBmdHAgdG8gZG8gcmVtb3RlIGhvc3QgZmlsZSBicm93c2luZwotCSAgICAgKiAod2luZG93cyBhbmQgIWN5Z3dpbikgcmVtb3RlIGJyb3dzaW5nIHdpdGggZnRwIGNhbiBub3cgdXNlCi0JICAgICAgIHRoZSAiZGlyIiBjb21tYW5kIGludGVybmFsbHkgdG8gcHJvdmlkZSBsaXN0aW5ncwotCSAgICAgKiBnOm5ldHJ3X2tlZXBkaXIgbm93IGFsbG93cyBvbmUgdG8ga2VlcCB0aGUgaW5pdGlhbCBjdXJyZW50Ci0JICAgICAgIGRpcmVjdG9yeSBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKG5vcm1hbGx5IHRoZSBsb2NhbCBmaWxlCi0JICAgICAgIGJyb3dzZXIgbWFrZXMgdGhlIGN1cnJlbnRseSB2aWV3ZWQgZGlyZWN0b3J5IHRoZSBjdXJyZW50Ci0JICAgICAgIGRpcmVjdG9yeSkKLQkgICAgICogZzpuZXRyd19hbHRvIGFuZCBnOm5ldHJ3X2FsdHYgbm93IHN1cHBvcnQgYWx0ZXJuYXRlIHBsYWNlbWVudAotCSAgICAgICBvZiB3aW5kb3dzIHN0YXJ0ZWQgd2l0aCBvIG9yIHYKLQkgICAgICogTnJlYWQgPyBhbmQgTndyaXRlID8gIG5vdyB1c2VzIGVjaG9tc2cgKGluc3RlYWQgb2YgZWNobykgc28KLQkgICAgICAgOm1lc3NhZ2VzIGNhbiByZXBlYXQgc2hvd2luZyB0aGUgaGVscAotCSAgICAgKiBidWdmaXg6IGF2b2lkcyBwcm9ibGVtcyB3aXRoIHBhcnRpYWwgbWF0Y2hlcyBvZiBkaXJlY3RvcnkgbmFtZXMKLQkgICAgICAgdG8gcHJpb3IgYnVmZmVycyB3aXRoIGxvbmdlciBuYW1lcwotCSAgICAgKiBvbmUgY2FuIHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIHdpdGggZzpuZXRyd19xdWlldCBjdHJsLWggdXNlZAotCSAgICAgKiBpbnN0ZWFkIG9mIDxMZWFkZXI+aCBmb3IgZWRpdGluZyBoaWRpbmcgbGlzdCBvbmUgbWF5IGVkaXQgdGhlCi0JICAgICAqIHNvcnRpbmcgc2VxdWVuY2Ugd2l0aCB0aGUgUyBtYXAgbm93IGFsbG93cyBjb25maXJtYXRpb24gb2YKLQkgICAgICogZGVsZXRpb24gd2l0aCBbeShlcykgbihvKSBhKGxsKSBxKHVpdCldIHRoZSAieCIgbWFwIG5vdyBoYW5kbGVzCi0JICAgICAqIHNwZWNpYWwgZmlsZSB2aWV3aW5nIHdpdGg6Ci0JICAgICAgICh3aW5kb3dzKSBydW5kbGwzMiB1cmwuZGxsIChnbm9tZSkgICBnbm9tZS1vcGVuIChrZGUpCi0JICAgICAgIGtmbWNsaWVudCBJZiBub25lIG9mIHRoZXNlIGFyZSBvbiB0aGUgZXhlY3V0YWJsZSBwYXRoLCB0aGVuCi0JICAgICAgIG5ldHJ3RmlsZUhhbmRsZXJzLnZpbSBpcyB1c2VkLgotCSAgICAgKiBkaXJlY3RvcnkgYm9va21hcmtpbmcgZHVyaW5nIGJvdGggbG9jYWwgYW5kIHJlbW90ZSBicm93c2luZwotCSAgICAgICBpbXBsZW1lbnRlZAotCSAgICAgKiBvbmUgbWF5IHZpZXcgYWxsLCB1c2UgdGhlIGhpZGluZyBsaXN0IHRvIHN1cHByZXNzLCBvciB1c2UgdGhlCi0JICAgICAgIGhpZGluZyBsaXN0IHRvIHNob3ctb25seSByZW1vdGUgYW5kIGxvY2FsIGZpbGUvZGlyZWN0b3J5Ci0JICAgICAgIGxpc3RpbmdzCi0JICAgICAqIGltcHJvdmVkIHVudXN1YWwgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUgaGFuZGxpbmcgcHJldmlldwotCSAgICAgKiB3aW5kb3cgc3VwcG9ydAotCXY0NzogKiBub3cgaGFuZGxlcyBsb2NhbCBkaXJlY3RvcnkgYnJvd3NpbmcuCi0JdjQ2OiAqIG5vdyBoYW5kbGVzIHJlbW90ZSBkaXJlY3RvcnkgYnJvd3NpbmcKLQkgICAgICogZzpuZXRyd19zaWxlbnQgKGlmIDEpIHdpbGwgY2F1c2UgYWxsIHRyYW5zZmVycyB0byBiZSBzaWxlbnQKLQl2NDU6ICogbWFkZSB0aGUgW3VzZXJAXWhvc3RuYW1lOnBhdGggZm9ybSBhIGJpdCBtb3JlIHJlc3RyaWN0aXZlIHRvCi0JICAgICAgIGJldHRlciBoYW5kbGUgZXJyb3JzIGluIHVzaW5nIHByb3RvY29scyAoZS5nLiBzY3A6dXNyQGhvc3Q6ZmlsZQotCSAgICAgICB3YXMgYmVpbmcgcmVjb2duaXplZCBhcyBhbiByY3AgcmVxdWVzdCkgdjQ0OiAqIGNoYW5nZWQgZnJvbQotCSAgICAgICAicnN5bmMgLWEiIHRvIGp1c3QgInJzeW5jIgotCSAgICAgKiBzb21laG93IGFuIGVkaXRpbmcgZXJyb3IgbWVzc2VkIHVwIHRoZSB0ZXN0IHRvIHJlY29nbml6ZQotCSAgICAgICB1c2Ugb2YgdGhlIGZldGNoIG1ldGhvZCBmb3IgTmV0UmVhZC4KLQkgICAgICogbW9yZSBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBpbmNsdWRlZAotCXY0MzogKiBtb3ZlZCAiRXhwbGFuYXRpb24iIGNvbW1lbnRzIHRvIDxwaV9uZXRydy50eHQ+IGhlbHAgZmlsZSBhcwotCSAgICAgICAiTmV0d29yayBSZWZlcmVuY2UiICh8bmV0cnctcmVmfCkKLQkgICAgICogPG5ldHJ3LnZpbT4gbm93IHVzZXMgRGZ1bmMoKSBEZWNobygpIGFuZCBEcmV0KCkgZm9yIGRlYnVnZ2luZwotCSAgICAgKiByZW1vdmVkIHN1cGVyZmx1b3VzIE5ldFJlc3RvcmVQb3NuKCkgY2FsbHMKLQl2NDI6ICogbm93IGRvZXMgQnVmUmVhZFByZSBhbmQgQnVmUmVhZFBvc3QgZXZlbnRzIG9uIGZpbGU6Ly8vKiBhbmQKLQkgICAgICAgZmlsZTovL2xvY2FsaG9zdC8qIHY0MTogKiBpbnN0YWxsZWQgZmlsZTovLy8qIGFuZAotCSAgICAgICBmaWxlOi8vbG9jYWxob3N0LyogaGFuZGxpbmcgdjQwOiAqIHByZXZlbnRzIHJlZHJhdyB3aGVuIGEKLQkgICAgICAgcHJvdG9jb2wgZXJyb3Igb2NjdXJzIHNvIHRoYXQgdGhlIHVzZXIgbWF5IHNlZSBpdCB2Mzk6ICogc2Z0cAotCSAgICAgICBzdXBwb3J0IHYzODogKiBOb3cgdXNlcyBOZXRSZXN0b3JlUG9zbigpIGNhbGxzIHdpdGgKLQkgICAgICAgTnJlYWQvTndyaXRlIGNvbW1hbmRzCi0JICAgICAqIFRlbXBvcmFyeSBmaWxlcyBub3cgcmVtb3ZlZCB2aWEgYndpcGUhIGluc3RlYWQgb2YgYndpcGUKLQkgICAgICAgKHRoYW5rcyB0byBEYXZlIFJvYmVydHMpIHYzNzogKiBDbGFhcidzIG1vZGlmaWNhdGlvbnMgd2hpY2gKLQkgICAgICAgdGVzdCBpZiBmdHAgaXMgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGdpdmUgYW4gZXJyb3IgbWVzc2FnZQotCSAgICAgKiBBZnRlciBhIHJlYWQsIHRoZSBhbHRlcm5hdGUgZmlsZSB3YXMgcG9pbnRpbmcgdG8gdGhlIHRlbXAgZmlsZS4KLQkgICAgICAgVGhlIHRlbXAgZmlsZSBidWZmZXIgaXMgbm93IHdpcGVkIG91dC4KLQkgICAgICogcmVtb3ZlZCBzaWxlbnQgZnJvbSB0cmFuc2ZlciBtZXRob2RzIHNvIHVzZXIgY2FuIHNlZSB3aGF0J3MKLQkgICAgICAgaGFwcGVuaW5nCisJdjk2OgkJICAgKiBidWdmaXggLSB0aGUgfCdhY2QnfCBvcHRpb24gaXMgbm90IGFsd2F5cyBkZWZpbmVkCisJCQkgICAgIGJ1dCBpcyBub3cgYnlwYXNzZWQgb25seSB3aGVuIGl0IGlzCisJdjk1OgkJICAgKiBidWdmaXggLSBIaWRpbmcgbW9kZSB3b3JrZWQgY29ycmVjdGx5IChkb24ndCBzaG93CisJCQkgICAgIGFueSBmaWxlIG1hdGNoaW5nIGFueSBvZiB0aGUgZzpuZXRyd19oaWRlCisJCQkgICAgIHBhdHRlcm5zKSwgYnV0IHNob3dpbmcgbW9kZSB3YXMgc2hvd2luZyBvbmx5IHRob3NlCisJCQkgICAgIGZpbGVzIHRoYXQgZGlkbid0IG1hdGNoIGFueSBvZiB0aGUgZzpuZXRyd19oaWRlCisJCQkgICAgIHBhdHRlcm5zLiAgSW5zdGVhZCwgaXQgbm93IHNob3dzIGFsbCBmaWxlcyB0aGF0CisJCQkgICAgIG1hdGNoIGFueSBvZiB0aGUgZzpuZXRyd19oaWRlIHBhdHRlcm5zICh0aGUKKwkJCSAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgbG9naWNhbCBhbmQgYW5kIGxvZ2ljYWwgb3IpLgorCXY5NDoJCSAgICogYnVnZml4IC0gYSBEZWNobygpIGhhZCBhIG1pc3NpbmcgcXVvdGU7IG9ubHkKKwkJCSAgICAgYWZmZWN0cyB0aGluZ3Mgd2hlbiBkZWJ1Z2dpbmcgd2FzIGVuYWJsZWQuCisJdjkzOgkJICAgKiBidWdmaXggLSByZW1vdmVkIEZvY3VzR2FpbmVkIGV2ZW50IGZyb20gY2F1c2luZyBhCisJCQkgICAgIHNsb3ctYnJvd3NlciByZWZyZXNoIGZvciBXaW5kb3dzCisJdjkyOgkJICAgKiA6RXhwbG9yZSAqKi8vcGF0dGVybiBpbXBsZW1lbnRlZAorCQkJICAgICAgKCoqL2ZpbGVwYXR0ZXJuIHdhcyBhbHJlYWR5IHRha2VuKQorCXY5MToJCSAgICogOkV4cGxvcmUgKi9wYXR0ZXJuIGltcGxlbWVudGVkCisJCQkgICAqIHwnYWNkJ3wgb3B0aW9uIGJ5cGFzc2VkCisJdjkwOgkJICAgKiBtYXJrICcsIGFzIHN1Z2dlc3RlZCBieSBZZWdhcHBhbiBMYWtzaG1hbmFuLCB1c2VkCisJCQkgICAgIHRvIGhlbHAgZ3VhcmFudGVlIGVudHJ5IGludG8gdGhlIGp1bXAgbGlzdCB3aGVuCisJCQkgICAgIGFwcHJvcHJpYXRlLgorCQkJICAgKiA8cy1kb3duPiBhbmQgPHMtdXA+IGFyZSBubyBsb25nZXIgZGVmaW5lZCB1bnRpbCBhCisJCQkgICAgIDpFeHBsb3JlICoqL3BhdHRlcm4gIGlzIHVzZWQgKGlmIHRoZSB1c2VyIGFscmVhZHkKKwkJCSAgICAgaGFzIGEgbWFwIGZvciB0aGVtKS4gIFRoZXkgd2lsbCBiZSBkZWZpbmVkIGZvciBuZXcKKwkJCSAgICAgYnJvd3NlciB3aW5kb3dzIGZyb20gdGhhdCBwb2ludCBmb3J3YXJkLgorCXY4OToJCSAgICogQSA8cy1kb3duPiwgPHMtdXA+LCA6TmV4cGxvcmUsIG9yIGEgOlBleHBsb3JlCisJCQkgICAgIHdpdGhvdXQgaGF2aW5nIGZpcnN0IGRvbmUgYW4gOkV4cGxvcmUgKiovcGF0dGVybgorCQkJICAgICAoc2VlIHxuZXRydy1zdGFyc3RhcnwpIGNhdXNlZAorCQkJICAgICBhIGxvdCBvZiB1bmhlbHBmdWwgZXJyb3IgbWVzc2FnZXMgdG8gYXBwZWFyCisJdjg4OgkJICAgKiBtb3ZlZCBEckNoaXAuTmV0cncgbWVudSB0byBOZXRydy4gIE5vdyBoYXMKKwkJCSAgICAgcHJpb3JpdHkgODAgYnkgZGVmYXVsdC4KKwkJCSAgICAgZzpOZXRyd1RvcEx2bE1lbnUgPT0gIk5ldHJ3IiBhbmQgY2FuIGJlIGNoYW5nZWQKKwkJCSAgICAgYnkgdGhlIHVzZXIgdG8gc3VpdC4gIFRoZSBwcmlvcml0eSBpcyBnaXZlbiBieQorCQkJICAgICBnOk5ldHJ3TWVudVByaW9yaXR5LgorCQkJICAgKiBDaGFuZ2VkIGZpbGV0eXBlIGZvciBicm93c2VyIGRpc3BsYXlzIGZyb20KKwkJCSAgICAgbmV0cndsaXN0IHRvIG5ldHJ3LgorCXY4NzoJCSAgICogYnVnIGZpeCAtLSBtZW51cyB3ZXJlIHBhcnRpYWxseSBkaXNhcHBlYXJpbmcKKwl2ODU6CQkgICAqIGJ1ZyBmaXggLS0gbWlzc2luZyBhbiBlbmRpZgorCQkJICAgKiBidWcgZml4IC0tIGhhbmRsZXMgc3BhY2VzIGluIG5hbWVzIGFuZCBkaXJlY3RvcmllcworCQkJICAgICB3aGVuIHVzaW5nIGZ0cC1iYXNlZCBicm93c2luZworCXY4MzoJCSAgICogZGlzYWJsZWQgc3RvcC1hY2QgaGFuZGxpbmc7IHRoZSBjaGFuZ2UgaW4gZGlyZWN0b3J5CisJCQkgICAgIGhhbmRsaW5nIG1heSBhbGxvdyBhY2QgdG8gYmUgdXNlZCBhZ2Fpbi4KKwkJCSAgICogRCB3YXMgcmVmdXNpbmcgdG8gZGVsZXRlIHJlbW90ZSBmaWxlcy9kaXJlY3RvcmllcworCQkJICAgICBpbiB3aWRlIGxpc3RpbmcgbW9kZS4KKwl2ODE6CQkgICAqIEZvY3VzR2FpbmVkIGFsc28gdXNlZCB0byByZWZyZXNoL3dpcGUgbG9jYWwgYnJvd3NlcgorCQkJICAgICBkaXJlY3RvcnkgYnVmZmVycworCQkJICAgKiAoYnVnZml4KSBuZXRydyB3YXMgbGVhdmluZyBbU2NyYXRjaF0gYnVmZmVycyBiZWhpbmQKKwkJCSAgICAgd2hlbiB0aGUgdXNlciBoYWQgdGhlICJoaWRkZW4iIG9wdGlvbiBzZXQuICBUaGUKKwkJCSAgICAgJ2hpZGRlbicgb3B0aW9uIGlzIG5vdyBieXBhc3NlZC4KKwl2ODA6CQkgICAqIFNoZWxsQ21kUG9zdCBldmVudCB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKwkJCSAgICAgZzpuZXRyd19mYXN0YnJvd3NlIHRvIHJlZnJlc2gvd2lwZSBsb2NhbCBicm93c2VyCisJCQkgICAgIGRpcmVjdG9yeSBidWZmZXJzLgorCXY3OToJCSAgICogZGlyZWN0b3JpZXMgYXJlIG5vdyBkaXNwbGF5ZWQgd2l0aCBub3dyYXAKKwkJCSAgICogKGJ1Z2ZpeCkgaWYgdGhlIGNvbHVtbiB3aWR0aCB3YXMgc21hbGxlciB0aGFuIHRoZQorCQkJICAgICBsYXJnZXN0IGZpbGUncyBuYW1lLCB0aGVuIG5ldHJ3IHdvdWxkIGhhbmcgd2hlbgorCQkJICAgICB1c2luZyB3aWRlLWxpc3RpbmcgbW9kZSAtIGZpeGVkCisJCQkgICAqIGc6bmV0cndfZmFzdGJyb3dzZSBpbnRyb2R1Y2VkCisJdjc4OgkJICAgKiBwcm9ncmVzcyBoYXMgYmVlbiBtYWRlIG9uIGFsbG93aW5nIHNwYWNlcyBpbnNpZGUKKwkJCSAgICAgZGlyZWN0b3J5IG5hbWVzIGZvciByZW1vdGUgd29yayAocmVhZGluZywgd3JpdGluZywKKwkJCSAgICAgYnJvd3NpbmcpLiAgKHNjcCkKKwl2Nzc6CQkgICAqIE1pa29sYWogTWFjaG93c2tpIGZpeGVkIGEgYnVnIGluIGEgc3Vic3RpdHV0ZSBjbWQKKwkJCSAgICogZzpuZXRyd19icm93c2V4X3ZpZXdlciBpbXBsZW1lbnRlZAorCQkJICAgKiBNaWtvbGFqIE1hY2hvd3NraSBwb2ludGVkIG91dCB0aGF0IGdub21lLW9wZW4gaXMKKwkJCSAgICAgb2Z0ZW4gZXhlY3V0YWJsZSB1bmRlciBLREUgc3lzdGVtcywgYWx0aG91Z2ggaXQgaXMKKwkJCSAgICAgZWZmZWN0aXZlbHkgbm90IGZ1bmN0aW9uYWwuICBOZXRCcm93c2VYIG5vdyBsb29rcworCQkJICAgICBmb3IgImtpY2tlciIgYXMgYSBydW5uaW5nIHByb2Nlc3MgdG8gZGV0ZXJtaW5lIGlmCisJCQkgICAgIEtERSBpcyBhY3R1YWxseSBydW5uaW5nLgorCQkJICAgKiBFeHBsb3JlcidzIE8gZnVuY3Rpb25hbGl0eSB3YXMgaW5hZHZlcnRlbnRseSBsZWZ0CisJCQkgICAgIG91dC4gIE5ldHJ3IG5vdyBkb2VzIHRoZSBzYW1lIHRoaW5nLCBidXQgd2l0aCB0aGUKKwkJCSAgICAgIlAiIGtleS4KKwkJCSAgICogYWRkZWQgZzpuZXRyd19icm93c2Vfc3BsaXQgb3B0aW9uCisJCQkgICAqIGZpeGVkIGEgYnVnIHdoZXJlIHRoZSBkaXJlY3RvcnkgY29udGFpbmVkIGEgIi4iIGJ1dAorCQkJICAgICB0aGUgZmlsZSBkaWRuJ3QgKHdhcyB0cmVhdGluZyB0aGUgZGlybmFtZSBmcm9tICIuIgorCQkJICAgICBvbndhcmRzIGFzIGEgc3VmZml4KQorCXY3NjoJCSAgICogImRpcmVjdG9yeSBpcyBtaXNzaW5nIiBlcnJvciBtZXNzYWdlIG5vdyByZXN0b3JlcworCQkJICAgICAgZWNobyBoaWdobGlnaHRpbmcKKwl2NzU6CQkgICAqIGZpbGU6Ly8uLi4gbm93IGNvbmZvcm1zIHRvIFJGQzIzOTYgKHRoYW5rcyB0bworCQkJICAgICBTLiBaYWNjaGlyb2xpKQorCQkJICAgKiBpZiB0aGUgYmluYXJ5IG9wdGlvbiBpcyBzZXQsIHRoZW4gTmV0V3JpdGUoKSB3aWxsCisJCQkgICAgIG9ubHkgd3JpdGUgdGhlIHdob2xlIGZpbGUgKGxpbmUgbnVtYmVycyBkb24ndCBtYWtlCisJCQkgICAgIHNlbnNlIHdpdGggdGhpcykuICBTdXBwb3J0cyB3cml0aW5nIG9mIHRhciBhbmQgemlwCisJCQkgICAgIGZpbGVzLgorCXY3NDoJCSAgICogYnVnZml4ICh2aW0sIHRoZW4gOkV4cGxvcmUpIG5vdyB3b3JrcworCQkJICAgKiBjdHJsLUwga2VlcHMgY3Vyc29yIGF0IHNhbWUgc2NyZWVuIGxvY2F0aW9uIChib3RoCisJCQkgICAgIGxvY2FsIGFuZCByZW1vdGUgYnJvd3NpbmcpCisJCQkgICAqIG5ldHJ3IG5vdyBjYW4gcmVhZCByZW1vdGUgemlwIGFuZCB0YXIgZmlsZXMKKwkJCSAgICogT2J0YWluIG5vdyB1c2VzIFdpblhQIGZ0cCsubmV0cmMgc3VjY2Vzc2Z1bGx5CisJdjczOgkJICAgKiBidWdmaXggLS0gc2NwOi8vaG9zdC9wYXRoL2ZpbGUgd2FzIGdldHRpbmcgbmFtZWQKKwkJCSAgICAgaW5jb3JyZWN0bHkKKwkJCSAgICogbmV0cncgZGV0ZWN0cyB1c2Ugb2YgZWFybGllci10aGFuLTcuMCB2ZXJzaW9uIG9mCisJCQkgICAgIHZpbSBhbmQgaXNzdWVzIGEgcGVydGluZW50IGVycm9yIG1lc3NhZ2UuCisJCQkgICAqIG5ldHJ3U2V0dGluZ3MudmltIGlzIG5vdyB1c2VzIGF1dG9sb2FkaW5nLiAgT25seQorCQkJICAgICA8bmV0cndQbHVnaW4udmltPiBpcyBuZWVkZWQgYXMgYSBwdXJlIHBsdWdpbgorCQkJICAgICAoaWUuIGFsd2F5cyBsb2FkZWQpLgorCXY3MjoJCSAgICogYnVnZml4IC0tIGZvcm1lcmx5LCBvbmUgY291bGQgcHJldmVudCB0aGUgbG9hZGluZworCQkJICAgICBvZiBuZXRydyBieSAibGV0IGc6bG9hZGVkX25ldHJ3PTEiOyB3aGVuCisJCQkgICAgIGF1dG9sb2FkaW5nIGJlY2FtZSBzdXBwb3J0ZWQsIHRoaXMgZmVhdHVyZSB3YXMKKwkJCSAgICAgbG9zdC4gIEl0IGlzIG5vdyByZXN0b3JlZC4KKwl2NzE6CQkgICAqIGJ1Z2ZpeCAtLSBtYWRlIHNvbWUgInNldCBub21vZGlmaWFibGUicyBpbnRvCisJCQkgICAgIHNldGxvY2FsIHZhcmlhbnRzIChhbGxvd3MgOmUgc29tZW5ld2ZpbGUgIHRvIGJlCisJCQkgICAgIG1vZGlmaWFibGUgYXMgdXN1YWwpCisJCQkgICAqIE5ldHJ3U2V0dGluZ3MgY2FsbHMgYSBuZXRydyBmdW5jdGlvbiwgdGhlcmVieQorCQkJICAgICBhc3N1cmluZyB0aGF0IG5ldHJ3IGhhcyBsb2FkZWQuICBIb3dldmVyLCBpZiBuZXRydworCQkJICAgICBkb2VzIG5vdCBsb2FkIGZvciB3aGF0ZXZlciByZWFzb24sIHRoZW4KKwkJCSAgICAgTmV0cndTZXR0aW5ncyB3aWxsIG5vdyBpc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZS4KKwkJCSAgICogRm9yIHdoYXQgcmVhc29uIEkgZG9uJ3QgcmVjYWxsLCB3aGVuIHdnZXQgYW5kIGZldGNoCisJCQkgICAgIGFyZSBib3RoIG5vdCBwcmVzZW50LCBhbmQgYW4gYXR0ZW1wdCB0byByZWFkIGEKKwkJCSAgICAgaHR0cDovLy4uLiB1cmwgaXMgbWFkZSwgbmV0cncgZXhpdGVkLiAgSXQgbm93IG9ubHkKKwkJCSAgICAgcmV0dXJucy4KKwkJCSAgICogV2hlbiBjaD0xLCBvbiB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IHVzZXMgb2YKKwkJCSAgICAgYnJvd3NpbmcgTmV0cncgd291bGQgaXNzdWUgYSBibGFuayBsaW5lIHRvIGNsZWFyCisJCQkgICAgIHRoZSBlY2hvJ2QgbWVzc2FnZXMuICBUaGlzIGNhdXNlZCBhbiBhbm5veWluZworCQkJICAgICAiSGl0LUVudGVyIiBwcm9tcHQ7IG5vdyBhIGJsYW5rIGxpbmUgbWVzc2FnZQorCQkJICAgICBpcyBlY2hvJ2Qgb25seSBpZiAmY2g+MS4KKwl2NzA6CQkgICAqIHdoZW4gdXNpbmcgfG5ldHJ3LU98LCB0aGUgIk9idGFpbmluZyBmaWxlbmFtZSIKKwkJCSAgICAgbWVzc2FnZSBpcyBub3cgc2hvd24gdXNpbmcgfGhsLVVzZXI5fC4gIElmIFVzZXI5CisJCQkgICAgIGhhcyBub3QgYmVlbiBkZWZpbmVkLCBuZXRydyBpdHNlbGYgd2lsbCBkZWZpbmUgaXQuCisJdjY5OgkJICAgKiBCdWdmaXg6IHdpbjk1Lzk4IG1hY2hpbmVzIHdlcmUgZXhwZXJpZW5jaW5nIGEKKwkJCSAgICAgIkUxMjE6IFVuZGVmaW5lZCB2YXJpYWJsZTogZzpuZXRyd193aW45NWZ0cCIKKwkJCSAgICAgbWVzc2FnZQorCXY2ODoJCSAgICogZG91YmxlLWNsaWNrLWxlZnRtb3VzZSBzZWxlY3RzIHdvcmQgdW5kZXIgbW91c2UKKwl2Njc6CQkgICAqIFBhc3N3b3JkcyB3aGljaCBjb250YWluIGJsYW5rcyB3aWxsIG5vdyBiZQorCQkJICAgICBzdXJyb3VuZGVkIGJ5IGRvdWJsZS1xdW90ZXMgYXV0b21hdGljYWxseSAoWW9uZ3dlaSkKKwl2NjY6CQkgICAqIE5ldHJ3IG5vdyBzZWVtcyB0byB3b3JrIHdpdGggYSBmZXcgbW9yZSBXaW5kb3dzCisJCQkgICAgIHNpdHVhdGlvbnMKKwkJCSAgICogTyBub3cgb2J0YWlucyBhIGZpbGU6IHJlbW90ZSBicm93c2luZworCQkJICAgICBmaWxlIC0+IGxvY2FsIGNvcHksIGxvY2FsbHkgYnJvd3NpbmcKKwkJCSAgICAgZmlsZSAtPiBjdXJyZW50IGRpcmVjdG9yeSAoc2VlIDpwd2QpCisJCQkgICAqIGkgbm93IGN5Y2xlcyBiZXR3ZWVuIHRoaW4sIGxvbmcsIGFuZCB3aWRlIGxpc3RpbmcKKwkJCSAgICAgc3R5bGVzCisJCQkgICAqIE5CIGFuZCBOYiBhcmUgbWFwcyB0aGF0IGFyZSBhbHdheXMgYXZhaWxhYmxlOworCQkJICAgICBjb3JyZXNwb25kaW5nIEIgYW5kIGIgbWFwcyBhcmUgb25seSBhdmFpbGFibGUgd2hlbgorCQkJICAgICBub3QgdXNpbmcgd2lkZSBsaXN0aW5nIGluIG9yZGVyIHRvIGFsbG93IHRoZW0gdG8KKwkJCSAgICAgYmUgdXNlZCBmb3IgbW90aW9ucworCXY2NToJCSAgICogQnJvd3NlciBmdW5jdGlvbnMgbm93IHVzZSBOZXRPcHRpb25TYXZlL1Jlc3RvcmU7IGluCisJCQkgICAgIHBhcnRpY3VsYXIsIG5ldHJ3IG5vdyB3b3JrcyBhcm91bmQgdGhlIHJlcG9ydAorCQkJICAgICBzZXR0aW5nCisJdjY0OgkJICAgKiBCdWdmaXggLSBicm93c2luZyBhICIvIiBkaXJlY3RvcnkgKFVuaXgpIHlpZWxkZWQKKwkJCSAgICAgYnVmZmVycyBuYW1lZCAiW1NjcmF0Y2hdIiBpbnN0ZWFkIG9mICIvIgorCQkJICAgKiBCdWdmaXggLSByZW1vdGUgYnJvd3Npbmcgd2l0aCBmdHAgd2FzIG9taXR0aW5nCisJCQkgICAgIHRoZSAuLyBhbmQgLi4vCisJdjYzOgkJICAgKiBuZXRydyBub3cgdGFrZXMgYWR2YW50YWdlIG9mIGF1dG9sb2FkIChuZWVkcyA3LjApCisJCQkgICAqIEJ1Z2ZpeCAtIHVzaW5nIHIgKHRvIHJldmVyc2Ugc29ydCkgd29ya2luZyBhZ2FpbgorCXY2MjoJCSAgICogQnVnZml4IC0gc3BhY2VzIGFsbG93ZWQgYWdhaW4gaW4gZGlyZWN0b3J5IG5hbWVzCisJCQkgICAgIHdpdGggZzpuZXRyd19rZWVwZGlyPTAuICBJbiBmYWN0LCBJJ3ZlIHRlc3RlZCBuZXRydworCQkJICAgICB3aXRoIG1vc3QgQU5TSSBwdW5jdHVhdGlvbiBtYXJrcyBmb3IgZGlyZWN0b3J5CisJCQkgICAgIG5hbWVzLgorCQkJICAgKiBCdWdmaXggLSBOZXRyd1NldHRpbmdzIGdhdmUgZXJyb3JzIHdoZW4KKwkJCSAgICAgZzpuZXRyd19zaWxlbnQgaGFkIG5vdCBiZSBzZXQuCisJdjYxOgkJICAgKiBEb2N1bWVudCB1cGdyYWRlIC0tIG5ldHJ3IHZhcmlhYmxlLWJhc2VkIHNldHRpbmdzCisJCQkgICAgIGFsbCBzaG91bGQgaGF2ZSB0YWdzLiAgU3VwcG9ydHMgTmV0cndTZXR0aW5ncyBjbWQuCisJCQkgICAqIFNldmVyYWwgaW1wb3J0YW50IHZhcmlhYmxlcyBhcmUgd2luZG93LW9yaWVudGVkLgorCQkJICAgICBOZXRydyBoYXMgdG8gdHJhbnNmZXIgdGhlc2UgYWNyb3NzIGEgd2luZG93IHNwbGl0LgorCQkJICAgICBTZWUgczpCdWZXaW5WYXJzKCkgYW5kIHM6VXNlQnVmV2luVmFycygpLgorCXY2MDoJCSAgICogV2hlbiB1c2luZyB0aGUgaSBtYXAgdG8gc3dpdGNoIGJldHdlZW4gbG9uZyBhbmQKKwkJCSAgICAgc2hvcnQgbGlzdGluZ3MsIG5ldHJ3IHdpbGwgbm93IGtlZXAgY3Vyc29yIG9uIHNhbWUKKwkJCSAgICAgbGluZQorCQkJICAgKiAiTWF0Y2ggIyBvZiAjIiBub3cgdXNlcyBzdGF0dXMgbGluZQorCQkJICAgKiA6RXhwbG9yZSAqKi8qLmMgIHdpbGwgbm93IHdvcmsgZnJvbSBhCisJCQkgICAgIG5vbi1uZXRydy1icm93c2VyIHdpbmRvdworCQkJICAgKiA6RXhwbG9yZSAqKi9wYXR0ZXJucyBjYW4gbm93IGJlIHJ1biBpbiBzZXBhcmF0ZQorCQkJICAgICBicm93c2VyIHdpbmRvd3MKKwkJCSAgICogYWN0aXZlIGJhbm5lciAoaGl0IDxjcj4gd2lsbCBjYXVzZSB2YXJpb3VzIHRoaW5ncworCQkJICAgICB0byBoYXBwZW4pCisJdjU5OgkJICAgKiBidWdmaXggLS0gYW5vdGhlciBrZWVwYWx0IHdvcmstYXJvdW5kIGluc3RhbGxlZAorCQkJICAgICAoZm9yIHZpbTYuMykKKwkJCSAgICogIk1hdGNoICMgb2YgIyIgZm9yIEV4cGxvcmUgKiovcGF0dGVybiBtYXRjaGVzCisJdjU4OgkJICAgKiBFeHBsb3JlIGFuZCByZWxhdGl2ZXMgY2FuIG5vdyBoYW5kbGUKKwkJCSAgICAgKiovc29tZWZpbGVwYXR0ZXJuICh2NykKKwkJCSAgICogTmV4cGxvcmUgYW5kIFBleHBsb3JlIGludHJvZHVjZWQgKHY3KS4gIHNoaWZ0LWRvd24KKwkJCSAgICAgYW5kIHNoaWZ0LXVwIGN1cnNvciBrZXlzIHdpbGwgaW52b2tlIE5leHBsb3JlIGFuZAorCQkJICAgICBQZXhwbG9yZSwgcmVzcGVjdGl2ZWx5LgorCQkJICAgKiBidWcgZml4ZWQgd2l0aCBvIGFuZCB2CisJCQkgICAqIGF1dG9jaGRpciBvbmx5IHdvcmtlZCBhcm91bmQgZm9yIHZpbSB3aGVuIGl0IGhhcworCQkJICAgICBiZWVuIGNvbXBpbGVkIHdpdGggZWl0aGVyCisJCQkgICAgIHwrbmV0YmVhbnNfaW50Z3wgb3IgfCtzdW5fd29ya3Nob3B8CisJCQkgICAqIFVuZGVyIFdpbmRvd3MsIGFsbCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgd2VyZQorCQkJICAgICBiZWluZyBwcmVjZWRlZCB3aXRoIGEgIi8iIHdoZW4gbG9jYWwgYnJvd3NpbmcuCisJCQkgICAgIEZpeGVkLgorCQkJICAgKiBXaGVuOiBzeW50YXggaGlnaGxpZ2h0aW5nIGlzIG9mZiwgbGFzdHN0YXR1cz0yLCBhbmQKKwkJCSAgICAgcmVtb3RlIGJyb3dzaW5nIGlzIHVzZWQsIHNvbWV0aW1lcyB0aGUgbGFzdHN0YXR1cworCQkJICAgICBoaWdobGlnaHRpbmcgYmxlZWRzIGludG8gdGhlIGVudGlyZSBkaXNwbGF5LiAgV29yaworCQkJICAgICBhcm91bmQgLSBkbyBhbiBleHRyYSByZWRyYXcgaW4gdGhhdCBjYXNlLgorCQkJICAgKiBCdWdmaXg6IHdoZW4gZzpuZXRyd19rZWVwZGlyPTAsIGR1ZSB0byByZS11c2Ugb2YKKwkJCSAgICAgYnVmZmVycywgbmV0cncgZGlkbid0IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHdoZW4gaXQKKwkJCSAgICAgc2hvdWxkJ3ZlCisJCQkgICAqIEJ1Z2ZpeDogRCBhbmQgUiBjb21tYW5kcyB3b3JrIGFnYWluCisJdjU3OgkJICAgKiBFeHBsb3JlIGFuZCByZWxhdGl2ZXMgY2FuIG5vdyBoYW5kbGUgUk8gZmlsZXMKKwkJCSAgICogcmV2ZXJzZSBzb3J0IHJlc3RvcmVkIHdpdGggdmltNydzIHNvcnQgY29tbWFuZAorCQkJICAgKiBnOm5ldHJ3X2tlZXBkaXIgbm93IGJlaW5nIHVzZWQgdG8ga2VlcCB0aGUgY3VycmVudAorCQkJICAgICBkaXJlY3RvcnkgdW5jaGFuZ2VkIGFzIGludGVuZGVkIChzZW5zZSBjaGFuZ2UpCisJCQkgICAqIHZpbSA2LjMgc3RpbGwgc3VwcG9ydGVkCisJdjU2OgkJICAgKiBMb2NhbEJyb3dzZSBub3cgc2F2ZXMgYXV0b2NoZGlyIHNldHRpbmcsIHVuc2V0cyBpdCwKKwkJCSAgICAgYW5kIHJlc3RvcmVzIGl0IGJlZm9yZSByZXR1cm5pbmcuCisJCQkgICAqIHVzaW5nIHZpbSdzIHJlbmFtZSgpIGluc3RlYWQgb2Ygc3lzdGVtICsKKwkJCSAgICAgbG9jYWxfcmVuYW1lIHZhcmlhYmxlCisJCQkgICAqIGF2b2lkcyBjaGFuZ2luZyBkaXJlY3Rvcnkgd2hlbiBnOm5ldHJ3X2tlZXBkaXIgaXMKKwkJCSAgICAgZmFsc2UKKwl2NTU6CQkgICAqIC1iYXIgdXNlZCB3aXRoIDpFeHBsb3JlIDpTZXhwbG9yZSBldGMgdG8gYWxsb3cKKwkJCSAgICAgbXVsdGlwbGUgY29tbWFuZHMgdG8gYmUgc2VwYXJhdGVkIGJ5IHxzCisJCQkgICAqIGJyb3dzZXIgbGlzdGluZ3Mgbm93IHVzZSB0aGUgIm5vd3JhcCIgb3B0aW9uCisJCQkgICAqIGJyb3dzZXI6IHNvbWUgdW51c2VmdWwgZXJyb3IgbWVzc2FnZXMgbm93CisJCQkgICAgIHN1cHByZXNzZWQKKwl2NTQ6CQkgICAqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgRXhwbG9yZSBhbmQgU2V4cGxvcmUKKwkJCSAgICAgaGF2ZSBiZWVuIGltcGxlbWVudGVkLiAgSW4gYWRkaXRpb24sIEhleHBsb3JlIGFuZAorCQkJICAgICBWZXhwbG9yZSBjb21tYW5kcyBhcmUgYXZhaWxhYmxlLCB0b28uCisJCQkgICAqIDxhbWF0Y2g+IHVzZWQgaW5zdGVhZCBvZiA8YWZpbGU+IGluIHRoZQorCQkJICAgICB0cmFuc3BhcmVuY3kgc3VwcG9ydCAoQnVmUmVhZENtZCwgRmlsZVJlYWRDbWQsCisJCQkgICAgIEZpbGVXcml0ZUNtZCkKKwkJCSAgICogKioqbmV0cncqKiogcHJlcGVuZGVkIHRvIHZhcmlvdXMgZXJyb3IgbWVzc2FnZXMKKwkJCSAgICAgbmV0cncgbWF5IGVtaXQKKwkJCSAgICogZzpuZXRyd19wb3J0IHVzZWQgaW5zdGVhZCBvZiBiOm5ldHJ3X3BvcnQgZm9yIHNjcAorCQkJICAgKiBhbnkgbGVhZGluZyBbOiNdIGlzIHJlbW92ZWQgZnJvbSBwb3J0IG51bWJlcnMKKwl2NTM6CQkgICAqIGJhY2tzbGFzaGVzIGFzIHdlbGwgYXMgc2xhc2hlcyBwbGFjZWQgaW4gdmFyaW91cworCQkJICAgICBwYXR0ZXJucyAoZXguIGc6bmV0cndfc29ydF9zZXF1ZW5jZSkgdG8gYmV0dGVyCisJCQkgICAgIHN1cHBvcnQgV2luZG93cworCXY1MjoJCSAgICogbm9udW1iZXInaW5nIG5vdyBzZXQgZm9yIGJyb3dzaW5nIGJ1ZmZlcnMKKwkJCSAgICogd2hlbiB0aGUgaGlkaW5nIGxpc3QgaGlkIGFsbCBmaWxlcywgZXJyb3IgbWVzc2FnZXMKKwkJCSAgICAgZW5zdWVkLiBGaXhlZAorCQkJICAgKiB3aGVuIGJyb3dzaW5nLCBzd2YgaXMgc2V0LCBidXQgZGlyZWN0b3J5IGlzIG5vdAorCQkJICAgICBzZXQsIHdoZW4gbmV0cncgd2FzIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSBvcHRpb25zLAorCQkJICAgICB2aW0gd2FudGVkIHRvIHNhdmUgYSBzd2FwZmlsZSB0byBhIGxvY2FsIGRpcmVjdG9yeQorCQkJICAgICB1c2luZyBhbiB1cmwtc3R5bGUgcGF0aC4gIEZpeGVkCisJdjUxOgkJICAgKiBjeWd3aW4gZGV0ZWN0aW9uIG5vdyBhdXRvbWF0ZWQKKwkJCSAgICAgKHVzaW5nIHdpbmRvd3MgYW5kICZzaGVsbCBpcyBiYXNoKQorCQkJICAgKiBjdXN0b21pemFibGUgYnJvd3NlciAiZmlsZSIgcmVqZWN0aW9uIHBhdHRlcm5zCisJCQkgICAqIGRpcmVjdG9yeSBoaXN0b3J5CisJCQkgICAqIDpbcmFuZ2VddyB1cmwgIG5vdyBzdXBwb3J0ZWQgKGllLiBuZXRydyB1c2VzIGEKKwkJCSAgICAgRmlsZVdyaXRlQ21kIGV2ZW50KQorCQkJICAgKiBlcnJvciBtZXNzYWdlcyBoYXZlIGEgIlByZXNzIDxjcj4gdG8gY29udGludWUiIHRvCisJCQkgICAgIGFsbG93IHRoZW0gdG8gYmUgc2VlbgorCQkJICAgKiBkaXJlY3RvcnkgYnJvd3NlciBkaXNwbGF5cyBubyBsb25nZXIgYm90aGVyIHRoZQorCQkJICAgICBzd2FwZmlsZQorCQkJICAgKiB1L1UgY29tbWFuZHMgdG8gZ28gdXAgYW5kIGRvd24gdGhlIGhpc3Rvcnkgc3RhY2sKKwkJCSAgICogaGlzdG9yeSBzdGFjayBtYXkgYmUgc2F2ZWQgd2l0aCB2aW1pbmZvIHdpdGggaXQncworCQkJICAgICAiISIgb3B0aW9uCisJCQkgICAqIGJ1Z2ZpeGVzIGFzc29jaWF0ZWQgd2l0aCB1bndhbnRlZCBbTm8gRmlsZXNdCisJCQkgICAgIGVudHJpZXMKKwl2NTA6CQkgICAqIGRpcmVjdG9yaWVzIG5vdyBkaXNwbGF5ZWQgdXNpbmcgYnVmdHlwZT1ub2ZpbGU7CisJCQkgICAgIHNob3VsZCBrZWVwIHRoZSBkaXJlY3RvcnkgbmFtZXMgYXMtaXMKKwkJCSAgICogYXR0ZW1wdHMgdG8gcmVtb3ZlIGVtcHR5ICJbTm8gRmlsZV0iIGJ1ZmZlcnMKKwkJCSAgICAgbGVmdG92ZXIgZnJvbSA6ZmlsZSAuLm5hbWUuLiBjb21tYW5kcworCQkJICAgKiBidWdmaXg6IGEgImNhcHMtbG9jayIgZWRpdGluZyBkaWZmaWN1bHR5IGxlZnQgaW4KKwkJCSAgICAgdjQ5IHdhcyBmaXhlZAorCQkJICAgKiBzeW50YXggaGlnaGxpZ2h0aW5nIGZvciAiU2hvd2luZzoiIHRoZSBoaWRpbmcgbGlzdAorCQkJICAgICBpbmNsdWRlZAorCQkJICAgKiBib29rbWFya3MgY2FuIG5vdyBiZSByZXRhaW5lZCBpZiAiISIgaXMgaW4gdGhlCisJCQkgICAgIHZpbWluZm8gb3B0aW9uCisJdjQ5OgkJICAgKiB3aWxsIHVzZSBmdHAgZm9yIGh0dHA6Ly8uLi4vIGJyb3dzaW5nCisJdjQ4OgkJICAgKiBPbmUgbWF5IHVzZSBmdHAgdG8gZG8gcmVtb3RlIGhvc3QgZmlsZSBicm93c2luZworCQkJICAgKiAod2luZG93cyBhbmQgIWN5Z3dpbikgcmVtb3RlIGJyb3dzaW5nIHdpdGggZnRwIGNhbgorCQkJICAgICBub3cgdXNlIHRoZSAiZGlyIiBjb21tYW5kIGludGVybmFsbHkgdG8gcHJvdmlkZQorCQkJICAgICBsaXN0aW5ncworCQkJICAgKiBnOm5ldHJ3X2tlZXBkaXIgbm93IGFsbG93cyBvbmUgdG8ga2VlcCB0aGUgaW5pdGlhbAorCQkJICAgICBjdXJyZW50IGRpcmVjdG9yeSBhcyB0aGUgY3VycmVudCBkaXJlY3RvcnkKKwkJCSAgICAgKG5vcm1hbGx5IHRoZSBsb2NhbCBmaWxlIGJyb3dzZXIgbWFrZXMgdGhlCisJCQkgICAgIGN1cnJlbnRseSB2aWV3ZWQgZGlyZWN0b3J5IHRoZSBjdXJyZW50IGRpcmVjdG9yeSkKKwkJCSAgICogZzpuZXRyd19hbHRvIGFuZCBnOm5ldHJ3X2FsdHYgbm93IHN1cHBvcnQKKwkJCSAgICAgYWx0ZXJuYXRlIHBsYWNlbWVudCBvZiB3aW5kb3dzIHN0YXJ0ZWQgd2l0aCBvIG9yIHYKKwkJCSAgICogTnJlYWQgPyBhbmQgTndyaXRlID8gIG5vdyB1c2VzIGVjaG9tc2cgKGluc3RlYWQgb2YKKwkJCSAgICAgZWNobykgc28gOm1lc3NhZ2VzIGNhbiByZXBlYXQgc2hvd2luZyB0aGUgaGVscAorCQkJICAgKiBidWdmaXg6IGF2b2lkcyBwcm9ibGVtcyB3aXRoIHBhcnRpYWwgbWF0Y2hlcyBvZgorCQkJICAgICBkaXJlY3RvcnkgbmFtZXMgdG8gcHJpb3IgYnVmZmVycyB3aXRoIGxvbmdlciBuYW1lcworCQkJICAgKiBvbmUgY2FuIHN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIHdpdGggZzpuZXRyd19xdWlldAorCQkJICAgICBjdHJsLWggdXNlZAorCQkJICAgKiBpbnN0ZWFkIG9mIDxMZWFkZXI+aCBmb3IgZWRpdGluZyBoaWRpbmcgbGlzdCBvbmUKKwkJCSAgICAgbWF5IGVkaXQgdGhlIHNvcnRpbmcgc2VxdWVuY2Ugd2l0aCB0aGUgUyBtYXAsIHdoaWNoCisJCQkgICAgIG5vdyBhbGxvd3MgY29uZmlybWF0aW9uIG9mIGRlbGV0aW9uIHdpdGgKKwkJCSAgICAgW3koZXMpIG4obykgYShsbCkgcSh1aXQpXQorCQkJICAgKiB0aGUgIngiIG1hcCBub3cgaGFuZGxlcyBzcGVjaWFsIGZpbGUgdmlld2luZyB3aXRoOgorCQkJICAgICAod2luZG93cykgcnVuZGxsMzIgdXJsLmRsbCAoZ25vbWUpIGdub21lLW9wZW4gKGtkZSkKKwkJCSAgICAga2ZtY2xpZW50IElmIG5vbmUgb2YgdGhlc2UgYXJlIG9uIHRoZSBleGVjdXRhYmxlCisJCQkgICAgIHBhdGgsIHRoZW4gbmV0cndGaWxlSGFuZGxlcnMudmltIGlzIHVzZWQuCisJCQkgICAqIGRpcmVjdG9yeSBib29rbWFya2luZyBkdXJpbmcgYm90aCBsb2NhbCBhbmQgcmVtb3RlCisJCQkgICAgIGJyb3dzaW5nIGltcGxlbWVudGVkCisJCQkgICAqIG9uZSBtYXkgdmlldyBhbGwsIHVzZSB0aGUgaGlkaW5nIGxpc3QgdG8gc3VwcHJlc3MsCisJCQkgICAgIG9yIHVzZSB0aGUgaGlkaW5nIGxpc3QgdG8gc2hvdy1vbmx5IHJlbW90ZSBhbmQKKwkJCSAgICAgbG9jYWwgZmlsZS9kaXJlY3RvcnkgbGlzdGluZ3MKKwkJCSAgICogaW1wcm92ZWQgdW51c3VhbCBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZSBoYW5kbGluZworCQkJICAgICBwcmV2aWV3IHdpbmRvdyBzdXBwb3J0CisJdjQ3OgkJICAgKiBub3cgaGFuZGxlcyBsb2NhbCBicm93c2luZy4KKwl2NDY6CQkgICAqIG5vdyBoYW5kbGVzIHJlbW90ZSBicm93c2luZworCQkJICAgKiBnOm5ldHJ3X3NpbGVudCAoaWYgMSkgd2lsbCBjYXVzZSBhbGwgdHJhbnNmZXJzIHRvCisJCQkgICAgIGJlIHNpbGVudAorCXY0NToJCSAgICogbWFkZSB0aGUgW3VzZXJAXWhvc3RuYW1lOnBhdGggZm9ybSBhIGJpdCBtb3JlCisJCQkgICAgIHJlc3RyaWN0aXZlIHRvIGJldHRlciBoYW5kbGUgZXJyb3JzIGluIHVzaW5nCisJCQkgICAgIHByb3RvY29scyAoZS5nLiBzY3A6dXNyQGhvc3Q6ZmlsZSB3YXMgYmVpbmcKKwkJCSAgICAgcmVjb2duaXplZCBhcyBhbiByY3AgcmVxdWVzdCkKKwl2NDQ6CQkgICAqIGNoYW5nZWQgZnJvbSAicnN5bmMgLWEiIHRvIGp1c3QgInJzeW5jIgorCQkJICAgKiBzb21laG93IGFuIGVkaXRpbmcgZXJyb3IgbWVzc2VkIHVwIHRoZSB0ZXN0IHRvCisJCQkgICAgIHJlY29nbml6ZSB1c2Ugb2YgdGhlIGZldGNoIG1ldGhvZCBmb3IgTmV0UmVhZC4KKwkJCSAgICogbW9yZSBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBpbmNsdWRlZAorCXY0MzoJCSAgICogbW92ZWQgIkV4cGxhbmF0aW9uIiBjb21tZW50cyB0byA8cGlfbmV0cncudHh0PiBoZWxwCisJCQkgICAgIGZpbGUgYXMgIk5ldHdvcmsgUmVmZXJlbmNlIiAofG5ldHJ3LXJlZnwpCisJCQkgICAqIDxuZXRydy52aW0+IG5vdyB1c2VzIERmdW5jKCkgRGVjaG8oKSBhbmQgRHJldCgpIGZvcgorCQkJICAgICBkZWJ1Z2dpbmcKKwkJCSAgICogcmVtb3ZlZCBzdXBlcmZsdW91cyBOZXRSZXN0b3JlUG9zbigpIGNhbGxzCisJdjQyOgkJICAgKiBub3cgZG9lcyBCdWZSZWFkUHJlIGFuZCBCdWZSZWFkUG9zdCBldmVudHMgb24KKwkJCSAgICAgZmlsZTovLy8qIGFuZCBmaWxlOi8vbG9jYWxob3N0LyoKKwl2NDE6CQkgICAqIGluc3RhbGxlZCBmaWxlOi8vLyogYW5kIGZpbGU6Ly9sb2NhbGhvc3QvKiBoYW5kbGluZworCXY0MDoJCSAgICogcHJldmVudHMgcmVkcmF3IHdoZW4gYSBwcm90b2NvbCBlcnJvciBvY2N1cnMgc28KKwkJCSAgICAgdGhhdCB0aGUgdXNlciBtYXkgc2VlIGl0CisJdjM5OgkJICAgKiBzZnRwIHN1cHBvcnQKKwl2Mzg6CQkgICAqIE5vdyB1c2VzIE5ldFJlc3RvcmVQb3NuKCkgY2FsbHMgd2l0aCBOcmVhZC9Od3JpdGUKKwkJCSAgICAgY29tbWFuZHMKKwkJCSAgICogVGVtcG9yYXJ5IGZpbGVzIG5vdyByZW1vdmVkIHZpYSBid2lwZSEgaW5zdGVhZCBvZgorCQkJICAgICBid2lwZSAodGhhbmtzIHRvIERhdmUgUm9iZXJ0cykKKwl2Mzc6CQkgICAqIENsYWFyJ3MgbW9kaWZpY2F0aW9ucyB3aGljaCB0ZXN0IGlmIGZ0cCBpcworCQkJICAgICBzdWNjZXNzZnVsLCBvdGhlcndpc2UgZ2l2ZSBhbiBlcnJvciBtZXNzYWdlCisJCQkgICAqIEFmdGVyIGEgcmVhZCwgdGhlIGFsdGVybmF0ZSBmaWxlIHdhcyBwb2ludGluZyB0bworCQkJICAgICB0aGUgdGVtcCBmaWxlLiAgVGhlIHRlbXAgZmlsZSBidWZmZXIgaXMgbm93IHdpcGVkCisJCQkgICAgIG91dC4KKwkJCSAgICogcmVtb3ZlZCBzaWxlbnQgZnJvbSB0cmFuc2ZlciBtZXRob2RzIHNvIHVzZXIgY2FuCisJCQkgICAgIHNlZSB3aGF0J3MgaGFwcGVuaW5nCiAKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yMTU3LDQgKzMwNTQsNSBAQAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01vZGVsaW5lczoge3t7MQogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDpmZG09bWFya2VyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQgYi9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQKaW5kZXggNTMyMzlmNy4uODEwNTMyNyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpwaV9wYXJlbi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgSnVuIDE0CisqcGlfcGFyZW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwOCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE1LDYgKzE1LDcgQEAKIFRoZSBwbHVnaW4gaW5zdGFsbHMgQ3Vyc29yTW92ZWQsIEN1cnNvck1vdmVkSSBhbmQgV2luRW50ZXIgYXV0b2NvbW1hbmRzIHRvCiByZWRlZmluZSB0aGUgbWF0Y2ggaGlnaGxpZ2h0aW5nLgogCisJCQkJCSo6Tm9NYXRjaFBhcmVuKiAqOkRvTWF0Y2hQYXJlbioKIFRvIGRpc2FibGUgdGhlIHBsdWdpbiBhZnRlciBpdCB3YXMgbG9hZGVkIHVzZSB0aGlzIGNvbW1hbmQ6ID4KIAogCTpOb01hdGNoUGFyZW4KQEAgLTQ2LDUgKzQ3LDExIEBACiAtICdzeW5tYXhjb2wnIHRpbWVzIDIgYnl0ZXMgYmVmb3JlIG9yIGFmdGVyIHRoZSBjdXJzb3IgdG8gYXZvaWQgYSBkZWxheQogICBpbiBhIGxvbmcgbGluZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcuCiAKKworSWYgeW91IHdvdWxkIGxpa2UgdGhlIHwlfCBjb21tYW5kIHRvIHdvcmsgYmV0dGVyLCB0aGUgbWF0Y2hpdCBwbHVnaW4gY2FuIGJlCit1c2VkLCBzZWUgfG1hdGNoaXQtaW5zdGFsbHwuICBUaGlzIHBsdWdpbiBhbHNvIGhlbHBzIHRvIHNraXAgbWF0Y2hlcyBpbgorY29tbWVudHMuICBUaGlzIGlzIHVucmVsYXRlZCB0byB0aGUgbWF0Y2hwYXJlbiBoaWdobGlnaHRpbmcsIHRoZXkgdXNlIGEKK2RpZmZlcmVudCBtZWNoYW5pc20uCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3F1b3Rlcy50eHQgYi9ydW50aW1lL2RvYy9xdW90ZXMudHh0CmluZGV4IDJjNWYxM2IuLjA3YjIxMjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3F1b3Rlcy50eHQKKysrIGIvcnVudGltZS9kb2MvcXVvdGVzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdW90ZXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcXVvdGVzLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3JlY292ZXIudHh0IGIvcnVudGltZS9kb2MvcmVjb3Zlci50eHQKaW5kZXggMDYzYTBkNS4uNTc4YzgwMSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcmVjb3Zlci50eHQKKysrIGIvcnVudGltZS9kb2MvcmVjb3Zlci50eHQKQEAgLTEsNCArMSw0IEBACi0qcmVjb3Zlci50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnJlY292ZXIudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9yaWxlZnQudHh0IGIvcnVudGltZS9kb2MvcmlsZWZ0LnR4dAppbmRleCBlZmU4MGMxLi5kMjcwNzQwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9yaWxlZnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL3JpbGVmdC50eHQKQEAgLTEsNCArMSw0IEBACi0qcmlsZWZ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnJpbGVmdC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEF2bmVyIExvdHRlbQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcnVzc2lhbi50eHQgYi9ydW50aW1lL2RvYy9ydXNzaWFuLnR4dAppbmRleCA2ODg3YmM2Li5kYWJjYTQyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ydXNzaWFuLnR4dAorKysgYi9ydW50aW1lL2RvYy9ydXNzaWFuLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpydXNzaWFuLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqcnVzc2lhbi50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgVmFzc2lseSBSYWdvc2luCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zaWduLnR4dCBiL3J1bnRpbWUvZG9jL3NpZ24udHh0CmluZGV4IGI5MjYxMzYuLjU0MzQyNzkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3NpZ24udHh0CisrKyBiL3J1bnRpbWUvZG9jL3NpZ24udHh0CkBAIC0xLDQgKzEsNCBAQAotKnNpZ24udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKKypzaWduLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBHb3Jkb24gUHJpZXVyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCA3MzkzMDA2Li40Zjk0ZmU1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTcwMiw4ICs3MDIsMTAgQEAKICdxZScJb3B0aW9ucy50eHQJLyoncWUnKgogJ3F1b3RlCW1vdGlvbi50eHQJLyoncXVvdGUqCiAncXVvdGVlc2NhcGUnCW9wdGlvbnMudHh0CS8qJ3F1b3RlZXNjYXBlJyoKKydyZHQnCW9wdGlvbnMudHh0CS8qJ3JkdCcqCiAncmVhZG9ubHknCW9wdGlvbnMudHh0CS8qJ3JlYWRvbmx5JyoKICdyZWRyYXcnCXZpX2RpZmYudHh0CS8qJ3JlZHJhdycqCisncmVkcmF3dGltZScJb3B0aW9ucy50eHQJLyoncmVkcmF3dGltZScqCiAncmVtYXAnCW9wdGlvbnMudHh0CS8qJ3JlbWFwJyoKICdyZXBvcnQnCW9wdGlvbnMudHh0CS8qJ3JlcG9ydCcqCiAncmVzdG9yZXNjcmVlbicJb3B0aW9ucy50eHQJLyoncmVzdG9yZXNjcmVlbicqCkBAIC0xMTE0LDYgKzExMTYsNyBAQAogK2ZlYXR1cmUtbGlzdAl2YXJpb3VzLnR4dAkvKitmZWF0dXJlLWxpc3QqCiArZmlsZV9pbl9wYXRoCXZhcmlvdXMudHh0CS8qK2ZpbGVfaW5fcGF0aCoKICtmaW5kX2luX3BhdGgJdmFyaW91cy50eHQJLyorZmluZF9pbl9wYXRoKgorK2Zsb2F0CXZhcmlvdXMudHh0CS8qK2Zsb2F0KgogK2ZvbGRpbmcJdmFyaW91cy50eHQJLyorZm9sZGluZyoKICtmb290ZXIJdmFyaW91cy50eHQJLyorZm9vdGVyKgogK2ZvcmsJdmFyaW91cy50eHQJLyorZm9yayoKQEAgLTExMzgsNiArMTE0MSw3IEBACiArbW91c2VfZ3BtCXZhcmlvdXMudHh0CS8qK21vdXNlX2dwbSoKICttb3VzZV9uZXR0ZXJtCXZhcmlvdXMudHh0CS8qK21vdXNlX25ldHRlcm0qCiArbW91c2VfcHRlcm0JdmFyaW91cy50eHQJLyorbW91c2VfcHRlcm0qCisrbW91c2Vfc3lzbW91c2UJdmFyaW91cy50eHQJLyorbW91c2Vfc3lzbW91c2UqCiArbW91c2VfeHRlcm0JdmFyaW91cy50eHQJLyorbW91c2VfeHRlcm0qCiArbW91c2VzaGFwZQl2YXJpb3VzLnR4dAkvKittb3VzZXNoYXBlKgogK211bHRpX2J5dGUJdmFyaW91cy50eHQJLyorbXVsdGlfYnl0ZSoKQEAgLTEyMjcsNiArMTIzMSw3IEBACiAtLXNlcnZlcm5hbWUJcmVtb3RlLnR4dAkvKi0tc2VydmVybmFtZSoKIC0tc29ja2V0aWQJc3RhcnRpbmcudHh0CS8qLS1zb2NrZXRpZCoKIC0tdmVyc2lvbglzdGFydGluZy50eHQJLyotLXZlcnNpb24qCistLXdpbmRvd2lkCXN0YXJ0aW5nLnR4dAkvKi0td2luZG93aWQqCiAtQQlzdGFydGluZy50eHQJLyotQSoKIC1DCXN0YXJ0aW5nLnR4dAkvKi1DKgogLUQJc3RhcnRpbmcudHh0CS8qLUQqCkBAIC0xMzE3LDYgKzEzMjIsNyBAQAogLwlwYXR0ZXJuLnR4dAkvKlwvKgogLyQJcGF0dGVybi50eHQJLypcLyQqCiAvLglwYXR0ZXJuLnR4dAkvKlwvLioKKy8vCXZlcnNpb243LnR4dAkvKlwvXC8qCiAvLzsJcGF0dGVybi50eHQJLypcL1wvOyoKIC88Q1I+CXBhdHRlcm4udHh0CS8qXC88Q1I+KgogL1tbLglwYXR0ZXJuLnR4dAkvKlwvW1suKgpAQCAtMTczNCwyOSArMTc0MCwzMyBAQAogOkAJcmVwZWF0LnR4dAkvKjpAKgogOkA6CXJlcGVhdC50eHQJLyo6QDoqCiA6QEAJcmVwZWF0LnR4dAkvKjpAQCoKLTpBZGFMaW5lcwlhZGEudHh0CS8qOkFkYUxpbmVzKgotOkFkYVJhaW5ib3cJYWRhLnR4dAkvKjpBZGFSYWluYm93KgotOkFkYVNwYWNlcwlhZGEudHh0CS8qOkFkYVNwYWNlcyoKLTpBZGFUYWdEaXIJYWRhLnR4dAkvKjpBZGFUYWdEaXIqCi06QWRhVGFnRmlsZQlhZGEudHh0CS8qOkFkYVRhZ0ZpbGUqCi06QWRhVHlwZXMJYWRhLnR4dAkvKjpBZGFUeXBlcyoKKzpBZGFMaW5lcwlmdF9hZGEudHh0CS8qOkFkYUxpbmVzKgorOkFkYVJhaW5ib3cJZnRfYWRhLnR4dAkvKjpBZGFSYWluYm93KgorOkFkYVNwYWNlcwlmdF9hZGEudHh0CS8qOkFkYVNwYWNlcyoKKzpBZGFUYWdEaXIJZnRfYWRhLnR4dAkvKjpBZGFUYWdEaXIqCis6QWRhVGFnRmlsZQlmdF9hZGEudHh0CS8qOkFkYVRhZ0ZpbGUqCis6QWRhVHlwZXMJZnRfYWRhLnR4dAkvKjpBZGFUeXBlcyoKIDpDb21waWxlclNldAl1c3JfNDEudHh0CS8qOkNvbXBpbGVyU2V0KgogOkRpZmZPcmlnCWRpZmYudHh0CS8qOkRpZmZPcmlnKgorOkRvTWF0Y2hQYXJlbglwaV9wYXJlbi50eHQJLyo6RG9NYXRjaFBhcmVuKgogOkV4cGxvcmUJcGlfbmV0cncudHh0CS8qOkV4cGxvcmUqCiA6R0xWUwlwaV9nZXRzY3JpcHQudHh0CS8qOkdMVlMqCiA6R2V0TGF0ZXN0VmltU2NyaXB0c19kYXQJcGlfZ2V0c2NyaXB0LnR4dAkvKjpHZXRMYXRlc3RWaW1TY3JpcHRzX2RhdCoKLTpHbmF0RmluZAlhZGEudHh0CS8qOkduYXRGaW5kKgotOkduYXRQcmV0dHkJYWRhLnR4dAkvKjpHbmF0UHJldHR5KgotOkduYXRUYWdzCWFkYS50eHQJLyo6R25hdFRhZ3MqCis6R25hdEZpbmQJZnRfYWRhLnR4dAkvKjpHbmF0RmluZCoKKzpHbmF0UHJldHR5CWZ0X2FkYS50eHQJLyo6R25hdFByZXR0eSoKKzpHbmF0VGFncwlmdF9hZGEudHh0CS8qOkduYXRUYWdzKgogOkhleHBsb3JlCXBpX25ldHJ3LnR4dAkvKjpIZXhwbG9yZSoKIDpNYW4JZmlsZXR5cGUudHh0CS8qOk1hbioKIDpNa1ZpbWJhbGwJcGlfdmltYmFsbC50eHQJLyo6TWtWaW1iYWxsKgogOk4JZWRpdGluZy50eHQJLyo6TioKKzpOZXRyd0NsZWFuCXBpX25ldHJ3LnR4dAkvKjpOZXRyd0NsZWFuKgogOk5leHBsb3JlCXBpX25ldHJ3LnR4dAkvKjpOZXhwbG9yZSoKIDpOZXh0CWVkaXRpbmcudHh0CS8qOk5leHQqCis6Tm9NYXRjaFBhcmVuCXBpX3BhcmVuLnR4dAkvKjpOb01hdGNoUGFyZW4qCiA6UAl2YXJpb3VzLnR4dAkvKjpQKgogOlBleHBsb3JlCXBpX25ldHJ3LnR4dAkvKjpQZXhwbG9yZSoKIDpQcmludAl2YXJpb3VzLnR4dAkvKjpQcmludCoKKzpSZXhwbG9yZQlwaV9uZXRydy50eHQJLyo6UmV4cGxvcmUqCiA6Um1WaW1iYWxsCXBpX3ZpbWJhbGwudHh0CS8qOlJtVmltYmFsbCoKIDpTZXhwbG9yZQlwaV9uZXRydy50eHQJLyo6U2V4cGxvcmUqCiA6VE9odG1sCXN5bnRheC50eHQJLyo6VE9odG1sKgpAQCAtMjE1Myw2ICsyMTYzLDcgQEAKIDpoaWdobGlnaHQtbGluawlzeW50YXgudHh0CS8qOmhpZ2hsaWdodC1saW5rKgogOmhpZ2hsaWdodC1ub3JtYWwJc3ludGF4LnR4dAkvKjpoaWdobGlnaHQtbm9ybWFsKgogOmhpZ2hsaWdodC12ZXJib3NlCXN5bnRheC50eHQJLyo6aGlnaGxpZ2h0LXZlcmJvc2UqCis6aGlzCWNtZGxpbmUudHh0CS8qOmhpcyoKIDpoaXN0b3J5CWNtZGxpbmUudHh0CS8qOmhpc3RvcnkqCiA6aGlzdG9yeS1pbmRleGluZwljbWRsaW5lLnR4dAkvKjpoaXN0b3J5LWluZGV4aW5nKgogOmkJaW5zZXJ0LnR4dAkvKjppKgpAQCAtNDA3OSw4ICs0MDkwLDE4IEBACiBFNzk1CWV2YWwudHh0CS8qRTc5NSoKIEU3OTYJZWRpdGluZy50eHQJLypFNzk2KgogRTc5NwlzcGVsbC50eHQJLypFNzk3KgorRTc5OAlldmFsLnR4dAkvKkU3OTgqCitFNzk5CWV2YWwudHh0CS8qRTc5OSoKIEU4MAltZXNzYWdlLnR4dAkvKkU4MCoKIEU4MDAJYXJhYmljLnR4dAkvKkU4MDAqCitFODAxCWV2YWwudHh0CS8qRTgwMSoKK0U4MDIJZXZhbC50eHQJLypFODAyKgorRTgwMwlldmFsLnR4dAkvKkU4MDMqCitFODA0CWV2YWwudHh0CS8qRTgwNCoKK0U4MDUJZXZhbC50eHQJLypFODA1KgorRTgwNglldmFsLnR4dAkvKkU4MDYqCitFODA3CWV2YWwudHh0CS8qRTgwNyoKK0U4MDgJZXZhbC50eHQJLypFODA4KgogRTgxCW1hcC50eHQJLypFODEqCiBFODIJbWVzc2FnZS50eHQJLypFODIqCiBFODMJbWVzc2FnZS50eHQJLypFODMqCkBAIC00MTI5LDYgKzQxNTAsNyBAQAogRmlsdGVyUmVhZFByZQlhdXRvY21kLnR4dAkvKkZpbHRlclJlYWRQcmUqCiBGaWx0ZXJXcml0ZVBvc3QJYXV0b2NtZC50eHQJLypGaWx0ZXJXcml0ZVBvc3QqCiBGaWx0ZXJXcml0ZVByZQlhdXRvY21kLnR4dAkvKkZpbHRlcldyaXRlUHJlKgorRmxvYXQJZXZhbC50eHQJLypGbG9hdCoKIEZvY3VzR2FpbmVkCWF1dG9jbWQudHh0CS8qRm9jdXNHYWluZWQqCiBGb2N1c0xvc3QJYXV0b2NtZC50eHQJLypGb2N1c0xvc3QqCiBGb2xkaW5nCWZvbGQudHh0CS8qRm9sZGluZyoKQEAgLTQxNjEsNiArNDE4Myw3IEBACiBLCXZhcmlvdXMudHh0CS8qSyoKIEtERQlndWlfeDExLnR4dAkvKktERSoKIEtWaW0JZ3VpX3gxMS50eHQJLypLVmltKgorS2liYWFsZQl1Z2FuZGEudHh0CS8qS2liYWFsZSoKIEtvcmVhbgltYnl0ZS50eHQJLypLb3JlYW4qCiBMCW1vdGlvbi50eHQJLypMKgogTGludXgtYmFja3NwYWNlCW9wdGlvbnMudHh0CS8qTGludXgtYmFja3NwYWNlKgpAQCAtNDE5NSw2ICs0MjE4LDcgQEAKIE5vcm1hbC1tb2RlCWludHJvLnR4dAkvKk5vcm1hbC1tb2RlKgogTnJlYWQJcGlfbmV0cncudHh0CS8qTnJlYWQqCiBOc291cmNlCXBpX25ldHJ3LnR4dAkvKk5zb3VyY2UqCitOdW1iZXIJZXZhbC50eHQJLypOdW1iZXIqCiBOdmkJaW50cm8udHh0CS8qTnZpKgogTndyaXRlCXBpX25ldHJ3LnR4dAkvKk53cml0ZSoKIE8JaW5zZXJ0LnR4dAkvKk8qCkBAIC00MjY2LDYgKzQyOTAsNyBAQAogUV93aQlxdWlja3JlZi50eHQJLypRX3dpKgogUV93cQlxdWlja3JlZi50eHQJLypRX3dxKgogUXVpY2tGaXhDbWRQb3N0CWF1dG9jbWQudHh0CS8qUXVpY2tGaXhDbWRQb3N0KgorUXVpY2tGaXhDbWRQb3N0LWV4YW1wbGUJcXVpY2tmaXgudHh0CS8qUXVpY2tGaXhDbWRQb3N0LWV4YW1wbGUqCiBRdWlja0ZpeENtZFByZQlhdXRvY21kLnR4dAkvKlF1aWNrRml4Q21kUHJlKgogUXVpY2tmaXgJcXVpY2tmaXgudHh0CS8qUXVpY2tmaXgqCiBSCWNoYW5nZS50eHQJLypSKgpAQCAtNDI3OSw3ICs0MzA0LDcgQEAKIFJ1c3NpYW4JcnVzc2lhbi50eHQJLypSdXNzaWFuKgogUwljaGFuZ2UudHh0CS8qUyoKIFNIRUxMCXN0YXJ0aW5nLnR4dAkvKlNIRUxMKgotU1FMU2V0VHlwZQlzcWwudHh0CS8qU1FMU2V0VHlwZSoKK1NRTFNldFR5cGUJZnRfc3FsLnR4dAkvKlNRTFNldFR5cGUqCiBTZWxlY3QJdmlzdWFsLnR4dAkvKlNlbGVjdCoKIFNlbGVjdC1tb2RlCXZpc3VhbC50eHQJLypTZWxlY3QtbW9kZSoKIFNlbGVjdC1tb2RlLW1hcHBpbmcJdmlzdWFsLnR4dAkvKlNlbGVjdC1tb2RlLW1hcHBpbmcqCkBAIC00Mjk4LDcgKzQzMjMsNyBAQAogVAltb3Rpb24udHh0CS8qVCoKIFRDTAlpZl90Y2wudHh0CS8qVENMKgogVEVSTQlzdGFydGluZy50eHQJLypURVJNKgotVFNRTAlzcWwudHh0CS8qVFNRTCoKK1RTUUwJZnRfc3FsLnR4dAkvKlRTUUwqCiBUVHByby10ZWxuZXQJc3ludGF4LnR4dAkvKlRUcHJvLXRlbG5ldCoKIFRhYglpbnRyby50eHQJLypUYWIqCiBUYWJFbnRlcglhdXRvY21kLnR4dAkvKlRhYkVudGVyKgpAQCAtNDMwNiw3ICs0MzMxLDcgQEAKIFRjbAlpZl90Y2wudHh0CS8qVGNsKgogVGVybUNoYW5nZWQJYXV0b2NtZC50eHQJLypUZXJtQ2hhbmdlZCoKIFRlcm1SZXNwb25zZQlhdXRvY21kLnR4dAkvKlRlcm1SZXNwb25zZSoKLVRyYW5zYWN0LVNRTAlzcWwudHh0CS8qVHJhbnNhY3QtU1FMKgorVHJhbnNhY3QtU1FMCWZ0X3NxbC50eHQJLypUcmFuc2FjdC1TUUwqCiBVCXVuZG8udHh0CS8qVSoKIFVURi04CW1ieXRlLnR4dAkvKlVURi04KgogVVRGOC14dGVybQltYnl0ZS50eHQJLypVVEY4LXh0ZXJtKgpAQCAtNDQ4NCwxOCArNDUwOSwxOCBAQAogYWJhbmRvbgllZGl0aW5nLnR4dAkvKmFiYW5kb24qCiBhYmJyZXZpYXRpb25zCW1hcC50eHQJLyphYmJyZXZpYXRpb25zKgogYWJlbC52aW0Jc3ludGF4LnR4dAkvKmFiZWwudmltKgorYWJzKCkJZXZhbC50eHQJLyphYnMoKSoKIGFjdGl2ZS1idWZmZXIJd2luZG93cy50eHQJLyphY3RpdmUtYnVmZmVyKgotYWRhI0NyZWF0ZV9UYWdzKCkJYWRhLnR4dAkvKmFkYSNDcmVhdGVfVGFncygpKgotYWRhI0p1bXBfVGFnKCkJYWRhLnR4dAkvKmFkYSNKdW1wX1RhZygpKgotYWRhI0xpc3R0YWdzKCkJYWRhLnR4dAkvKmFkYSNMaXN0dGFncygpKgotYWRhI1N3aXRjaF9TeW50YXhfT3B0aW9uKCkJYWRhLnR4dAkvKmFkYSNTd2l0Y2hfU3ludGF4X09wdGlvbigpKgotYWRhI1dvcmQoKQlhZGEudHh0CS8qYWRhI1dvcmQoKSoKLWFkYS1jb21waWxlcglhZGEudHh0CS8qYWRhLWNvbXBpbGVyKgotYWRhLWN0YWdzCWFkYS50eHQJLyphZGEtY3RhZ3MqCi1hZGEtZXh0cmEtcGx1Z2lucwlhZGEudHh0CS8qYWRhLWV4dHJhLXBsdWdpbnMqCi1hZGEtcmVmZXJlbmNlCWFkYS50eHQJLyphZGEtcmVmZXJlbmNlKgotYWRhLnR4dAlhZGEudHh0CS8qYWRhLnR4dCoKLWFkYS52aW0JYWRhLnR4dAkvKmFkYS52aW0qCithZGEjQ3JlYXRlX1RhZ3MoKQlmdF9hZGEudHh0CS8qYWRhI0NyZWF0ZV9UYWdzKCkqCithZGEjSnVtcF9UYWcoKQlmdF9hZGEudHh0CS8qYWRhI0p1bXBfVGFnKCkqCithZGEjTGlzdHRhZ3MoKQlmdF9hZGEudHh0CS8qYWRhI0xpc3R0YWdzKCkqCithZGEjU3dpdGNoX1N5bnRheF9PcHRpb24oKQlmdF9hZGEudHh0CS8qYWRhI1N3aXRjaF9TeW50YXhfT3B0aW9uKCkqCithZGEjV29yZCgpCWZ0X2FkYS50eHQJLyphZGEjV29yZCgpKgorYWRhLWNvbXBpbGVyCWZ0X2FkYS50eHQJLyphZGEtY29tcGlsZXIqCithZGEtY3RhZ3MJZnRfYWRhLnR4dAkvKmFkYS1jdGFncyoKK2FkYS1leHRyYS1wbHVnaW5zCWZ0X2FkYS50eHQJLyphZGEtZXh0cmEtcGx1Z2lucyoKK2FkYS1yZWZlcmVuY2UJZnRfYWRhLnR4dAkvKmFkYS1yZWZlcmVuY2UqCithZGEudmltCWZ0X2FkYS50eHQJLyphZGEudmltKgogYWRkKCkJZXZhbC50eHQJLyphZGQoKSoKIGFkZC1maWxldHlwZS1wbHVnaW4JdXNyXzA1LnR4dAkvKmFkZC1maWxldHlwZS1wbHVnaW4qCiBhZGQtZ2xvYmFsLXBsdWdpbgl1c3JfMDUudHh0CS8qYWRkLWdsb2JhbC1wbHVnaW4qCkBAIC00NTE1LDYgKzQ1NDAsNyBAQAogYWRkZWQtNi4zCXZlcnNpb242LnR4dAkvKmFkZGVkLTYuMyoKIGFkZGVkLTYuNAl2ZXJzaW9uNi50eHQJLyphZGRlZC02LjQqCiBhZGRlZC03LjEJdmVyc2lvbjcudHh0CS8qYWRkZWQtNy4xKgorYWRkZWQtNy4yCXZlcnNpb243LnR4dAkvKmFkZGVkLTcuMioKIGFkZGVkLUJlT1MJdmVyc2lvbjUudHh0CS8qYWRkZWQtQmVPUyoKIGFkZGVkLU1hYwl2ZXJzaW9uNS50eHQJLyphZGRlZC1NYWMqCiBhZGRlZC1WTVMJdmVyc2lvbjUudHh0CS8qYWRkZWQtVk1TKgpAQCAtNDU1MSw2ICs0NTc3LDcgQEAKIGFzbTY4awlzeW50YXgudHh0CS8qYXNtNjhrKgogYXNtaDgzMDAudmltCXN5bnRheC50eHQJLyphc21oODMwMC52aW0qCiBhdAltb3Rpb24udHh0CS8qYXQqCithdGFuKCkJZXZhbC50eHQJLyphdGFuKCkqCiBhdGhlbmEtaW50ZWxsaW1vdXNlCWd1aS50eHQJLyphdGhlbmEtaW50ZWxsaW1vdXNlKgogYXR0ci1saXN0CXN5bnRheC50eHQJLyphdHRyLWxpc3QqCiBhdXRob3IJaW50cm8udHh0CS8qYXV0aG9yKgpAQCAtNDc0Miw2ICs0NzY5LDcgQEAKIGNhdGNoLW9yZGVyCWV2YWwudHh0CS8qY2F0Y2gtb3JkZXIqCiBjYXRjaC10ZXh0CWV2YWwudHh0CS8qY2F0Y2gtdGV4dCoKIGNjCWNoYW5nZS50eHQJLypjYyoKK2NlaWwoKQlldmFsLnR4dAkvKmNlaWwoKSoKIGNoLnZpbQlzeW50YXgudHh0CS8qY2gudmltKgogY2hhbmdlLWxpc3QtanVtcHMJbW90aW9uLnR4dAkvKmNoYW5nZS1saXN0LWp1bXBzKgogY2hhbmdlLXRhYnMJY2hhbmdlLnR4dAkvKmNoYW5nZS10YWJzKgpAQCAtNDc1OSw2ICs0Nzg3LDcgQEAKIGNoYW5nZWQtNi4zCXZlcnNpb242LnR4dAkvKmNoYW5nZWQtNi4zKgogY2hhbmdlZC02LjQJdmVyc2lvbjYudHh0CS8qY2hhbmdlZC02LjQqCiBjaGFuZ2VkLTcuMQl2ZXJzaW9uNy50eHQJLypjaGFuZ2VkLTcuMSoKK2NoYW5nZWQtNy4yCXZlcnNpb243LnR4dAkvKmNoYW5nZWQtNy4yKgogY2hhbmdlbGlzdAltb3Rpb24udHh0CS8qY2hhbmdlbGlzdCoKIGNoYW5nZWxvZy52aW0Jc3ludGF4LnR4dAkvKmNoYW5nZWxvZy52aW0qCiBjaGFuZ2VucigpCWV2YWwudHh0CS8qY2hhbmdlbnIoKSoKQEAgLTQ3NzEsMTIgKzQ4MDAsMTQgQEAKIGNoYXJhY3Rlcndpc2UtdmlzdWFsCXZpc3VhbC50eHQJLypjaGFyYWN0ZXJ3aXNlLXZpc3VhbCoKIGNoYXJjb252ZXJ0X2Zyb20tdmFyaWFibGUJZXZhbC50eHQJLypjaGFyY29udmVydF9mcm9tLXZhcmlhYmxlKgogY2hhcmNvbnZlcnRfdG8tdmFyaWFibGUJZXZhbC50eHQJLypjaGFyY29udmVydF90by12YXJpYWJsZSoKK2NoYXJpdHkJdWdhbmRhLnR4dAkvKmNoYXJpdHkqCiBjaGFyc2V0CW1ieXRlLnR4dAkvKmNoYXJzZXQqCiBjaGFyc2V0LWNvbnZlcnNpb24JbWJ5dGUudHh0CS8qY2hhcnNldC1jb252ZXJzaW9uKgogY2hpbGwudmltCXN5bnRheC50eHQJLypjaGlsbC52aW0qCiBjaW5kZW50KCkJZXZhbC50eHQJLypjaW5kZW50KCkqCiBjaW5rZXlzLWZvcm1hdAlpbmRlbnQudHh0CS8qY2lua2V5cy1mb3JtYXQqCiBjaW5vcHRpb25zLXZhbHVlcwlpbmRlbnQudHh0CS8qY2lub3B0aW9ucy12YWx1ZXMqCitjbGVhcm1hdGNoZXMoKQlldmFsLnR4dAkvKmNsZWFybWF0Y2hlcygpKgogY2xpZW50LXNlcnZlcglyZW1vdGUudHh0CS8qY2xpZW50LXNlcnZlcioKIGNsaWVudHNlcnZlcglyZW1vdGUudHh0CS8qY2xpZW50c2VydmVyKgogY2xpcGJvYXJkCWd1aS50eHQJLypjbGlwYm9hcmQqCkBAIC00ODA5LDE2ICs0ODQwLDE3IEBACiBjb21waWxlLWNoYW5nZXMtNQl2ZXJzaW9uNS50eHQJLypjb21waWxlLWNoYW5nZXMtNSoKIGNvbXBpbGUtY2hhbmdlcy02CXZlcnNpb242LnR4dAkvKmNvbXBpbGUtY2hhbmdlcy02KgogY29tcGlsZS1jaGFuZ2VzLTcJdmVyc2lvbjcudHh0CS8qY29tcGlsZS1jaGFuZ2VzLTcqCi1jb21waWxlci1jb21wYXFhZGEJYWRhLnR4dAkvKmNvbXBpbGVyLWNvbXBhcWFkYSoKLWNvbXBpbGVyLWRlY2FkYQlhZGEudHh0CS8qY29tcGlsZXItZGVjYWRhKgorY29tcGlsZXItY29tcGFxYWRhCWZ0X2FkYS50eHQJLypjb21waWxlci1jb21wYXFhZGEqCitjb21waWxlci1kZWNhZGEJZnRfYWRhLnR4dAkvKmNvbXBpbGVyLWRlY2FkYSoKIGNvbXBpbGVyLWdjYwlxdWlja2ZpeC50eHQJLypjb21waWxlci1nY2MqCi1jb21waWxlci1nbmF0CWFkYS50eHQJLypjb21waWxlci1nbmF0KgotY29tcGlsZXItaHBhZGEJYWRhLnR4dAkvKmNvbXBpbGVyLWhwYWRhKgorY29tcGlsZXItZ25hdAlmdF9hZGEudHh0CS8qY29tcGlsZXItZ25hdCoKK2NvbXBpbGVyLWhwYWRhCWZ0X2FkYS50eHQJLypjb21waWxlci1ocGFkYSoKIGNvbXBpbGVyLW1hbngJcXVpY2tmaXgudHh0CS8qY29tcGlsZXItbWFueCoKK2NvbXBpbGVyLXBlcmwJcXVpY2tmaXgudHh0CS8qY29tcGlsZXItcGVybCoKIGNvbXBpbGVyLXB5dW5pdAlxdWlja2ZpeC50eHQJLypjb21waWxlci1weXVuaXQqCiBjb21waWxlci1zZWxlY3QJcXVpY2tmaXgudHh0CS8qY29tcGlsZXItc2VsZWN0KgogY29tcGlsZXItdGV4CXF1aWNrZml4LnR4dAkvKmNvbXBpbGVyLXRleCoKLWNvbXBpbGVyLXZheGFkYQlhZGEudHh0CS8qY29tcGlsZXItdmF4YWRhKgorY29tcGlsZXItdmF4YWRhCWZ0X2FkYS50eHQJLypjb21waWxlci12YXhhZGEqCiBjb21wbC1jdXJyZW50CWluc2VydC50eHQJLypjb21wbC1jdXJyZW50KgogY29tcGwtZGVmaW5lCWluc2VydC50eHQJLypjb21wbC1kZWZpbmUqCiBjb21wbC1kaWN0aW9uYXJ5CWluc2VydC50eHQJLypjb21wbC1kaWN0aW9uYXJ5KgpAQCAtNDg1NSw2ICs0ODg3LDcgQEAKIGNvcHktbW92ZQljaGFuZ2UudHh0CS8qY29weS1tb3ZlKgogY29weWluZwl1Z2FuZGEudHh0CS8qY29weWluZyoKIGNvcHlyaWdodAl1Z2FuZGEudHh0CS8qY29weXJpZ2h0KgorY29zKCkJZXZhbC50eHQJLypjb3MoKSoKIGNvdW50CWludHJvLnR4dAkvKmNvdW50KgogY291bnQoKQlldmFsLnR4dAkvKmNvdW50KCkqCiBjb3VudC1ieXRlcwl0aXBzLnR4dAkvKmNvdW50LWJ5dGVzKgpAQCAtNDk4Myw2ICs1MDE2LDcgQEAKIGRhcAltb3Rpb24udHh0CS8qZGFwKgogZGFzCW1vdGlvbi50eHQJLypkYXMqCiBkYXYJcGlfbmV0cncudHh0CS8qZGF2KgorZGF2cwlwaV9uZXRydy50eHQJLypkYXZzKgogZGF3CW1vdGlvbi50eHQJLypkYXcqCiBkZAljaGFuZ2UudHh0CS8qZGQqCiBkZWJ1Zy1nY2MJZGVidWcudHh0CS8qZGVidWctZ2NjKgpAQCAtNTAwMiw3ICs1MDM2LDcgQEAKIGRlYnVnZ2VyLXN1cHBvcnQJZGVidWdnZXIudHh0CS8qZGVidWdnZXItc3VwcG9ydCoKIGRlYnVnZ2VyLnR4dAlkZWJ1Z2dlci50eHQJLypkZWJ1Z2dlci50eHQqCiBkZWMtbW91c2UJb3B0aW9ucy50eHQJLypkZWMtbW91c2UqCi1kZWNhZGFfbWVtYmVycwlhZGEudHh0CS8qZGVjYWRhX21lbWJlcnMqCitkZWNhZGFfbWVtYmVycwlmdF9hZGEudHh0CS8qZGVjYWRhX21lbWJlcnMqCiBkZWVwY29weSgpCWV2YWwudHh0CS8qZGVlcGNvcHkoKSoKIGRlZmluaXRpb24tc2VhcmNoCXRhZ3NyY2gudHh0CS8qZGVmaW5pdGlvbi1zZWFyY2gqCiBkZWZpbml0aW9ucwlpbnRyby50eHQJLypkZWZpbml0aW9ucyoKQEAgLTUxMzIsNiArNTE2Niw3IEBACiBlcnJvcmZvcm1hdC1tdWx0aS1saW5lCXF1aWNrZml4LnR4dAkvKmVycm9yZm9ybWF0LW11bHRpLWxpbmUqCiBlcnJvcmZvcm1hdC1zZXBhcmF0ZS1maWxlbmFtZQlxdWlja2ZpeC50eHQJLyplcnJvcmZvcm1hdC1zZXBhcmF0ZS1maWxlbmFtZSoKIGVycm9yZm9ybWF0cwlxdWlja2ZpeC50eHQJLyplcnJvcmZvcm1hdHMqCitlcnJvcnMJbWVzc2FnZS50eHQJLyplcnJvcnMqCiBlc2NhcGUJaW50cm8udHh0CS8qZXNjYXBlKgogZXNjYXBlKCkJZXZhbC50eHQJLyplc2NhcGUoKSoKIGVzY2FwZS1iYXIJdmVyc2lvbjQudHh0CS8qZXNjYXBlLWJhcioKQEAgLTUyOTIsMTEgKzUzMjcsMTcgQEAKIGZpeGVkLTYuMwl2ZXJzaW9uNi50eHQJLypmaXhlZC02LjMqCiBmaXhlZC02LjQJdmVyc2lvbjYudHh0CS8qZml4ZWQtNi40KgogZml4ZWQtNy4xCXZlcnNpb243LnR4dAkvKmZpeGVkLTcuMSoKK2ZpeGVkLTcuMgl2ZXJzaW9uNy50eHQJLypmaXhlZC03LjIqCiBmbGV4d2lraS52aW0Jc3ludGF4LnR4dAkvKmZsZXh3aWtpLnZpbSoKK2Zsb2F0Mm5yKCkJZXZhbC50eHQJLypmbG9hdDJucigpKgorZmxvYXRpbmctcG9pbnQtZm9ybWF0CWV2YWwudHh0CS8qZmxvYXRpbmctcG9pbnQtZm9ybWF0KgorZmxvYXRpbmctcG9pbnQtcHJlY2lzaW9uCWV2YWwudHh0CS8qZmxvYXRpbmctcG9pbnQtcHJlY2lzaW9uKgorZmxvb3IoKQlldmFsLnR4dAkvKmZsb29yKCkqCiBmbmFtZV9kaWZmLXZhcmlhYmxlCWV2YWwudHh0CS8qZm5hbWVfZGlmZi12YXJpYWJsZSoKIGZuYW1lX2luLXZhcmlhYmxlCWV2YWwudHh0CS8qZm5hbWVfaW4tdmFyaWFibGUqCiBmbmFtZV9uZXctdmFyaWFibGUJZXZhbC50eHQJLypmbmFtZV9uZXctdmFyaWFibGUqCiBmbmFtZV9vdXQtdmFyaWFibGUJZXZhbC50eHQJLypmbmFtZV9vdXQtdmFyaWFibGUqCitmbmFtZWVzY2FwZSgpCWV2YWwudHh0CS8qZm5hbWVlc2NhcGUoKSoKIGZuYW1lbW9kaWZ5KCkJZXZhbC50eHQJLypmbmFtZW1vZGlmeSgpKgogZm8tdGFibGUJY2hhbmdlLnR4dAkvKmZvLXRhYmxlKgogZm9sZC1iZWhhdmlvcglmb2xkLnR4dAkvKmZvbGQtYmVoYXZpb3IqCkBAIC01MzM2LDE4ICs1Mzc3LDE3IEBACiBmb3JtYXR0aW5nCWNoYW5nZS50eHQJLypmb3JtYXR0aW5nKgogZm9ybWZlZWQJaW50cm8udHh0CS8qZm9ybWZlZWQqCiBmb3J0cmFuLnZpbQlzeW50YXgudHh0CS8qZm9ydHJhbi52aW0qCi1mcmVuY2gtbWFpbGxpc3QJaW50cm8udHh0CS8qZnJlbmNoLW1haWxsaXN0KgogZnJvbWJvb2sJdXNyXzAxLnR4dAkvKmZyb21ib29rKgogZnQtYWJlbC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LWFiZWwtc3ludGF4KgotZnQtYWRhLWNvbW1hbmRzCWFkYS50eHQJLypmdC1hZGEtY29tbWFuZHMqCi1mdC1hZGEtY29uc3RhbnRzCWFkYS50eHQJLypmdC1hZGEtY29uc3RhbnRzKgotZnQtYWRhLWZ1bmN0aW9ucwlhZGEudHh0CS8qZnQtYWRhLWZ1bmN0aW9ucyoKLWZ0LWFkYS1pbmRlbnQJYWRhLnR4dAkvKmZ0LWFkYS1pbmRlbnQqCi1mdC1hZGEtb21uaQlhZGEudHh0CS8qZnQtYWRhLW9tbmkqCi1mdC1hZGEtb3B0aW9ucwlhZGEudHh0CS8qZnQtYWRhLW9wdGlvbnMqCi1mdC1hZGEtcGx1Z2luCWFkYS50eHQJLypmdC1hZGEtcGx1Z2luKgotZnQtYWRhLXN5bnRheAlhZGEudHh0CS8qZnQtYWRhLXN5bnRheCoKLWZ0LWFkYS12YXJpYWJsZXMJYWRhLnR4dAkvKmZ0LWFkYS12YXJpYWJsZXMqCitmdC1hZGEtY29tbWFuZHMJZnRfYWRhLnR4dAkvKmZ0LWFkYS1jb21tYW5kcyoKK2Z0LWFkYS1jb25zdGFudHMJZnRfYWRhLnR4dAkvKmZ0LWFkYS1jb25zdGFudHMqCitmdC1hZGEtZnVuY3Rpb25zCWZ0X2FkYS50eHQJLypmdC1hZGEtZnVuY3Rpb25zKgorZnQtYWRhLWluZGVudAlmdF9hZGEudHh0CS8qZnQtYWRhLWluZGVudCoKK2Z0LWFkYS1vbW5pCWZ0X2FkYS50eHQJLypmdC1hZGEtb21uaSoKK2Z0LWFkYS1vcHRpb25zCWZ0X2FkYS50eHQJLypmdC1hZGEtb3B0aW9ucyoKK2Z0LWFkYS1wbHVnaW4JZnRfYWRhLnR4dAkvKmZ0LWFkYS1wbHVnaW4qCitmdC1hZGEtc3ludGF4CWZ0X2FkYS50eHQJLypmdC1hZGEtc3ludGF4KgorZnQtYWRhLXZhcmlhYmxlcwlmdF9hZGEudHh0CS8qZnQtYWRhLXZhcmlhYmxlcyoKIGZ0LWFudC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LWFudC1zeW50YXgqCiBmdC1hcGFjaGUtc3ludGF4CXN5bnRheC50eHQJLypmdC1hcGFjaGUtc3ludGF4KgogZnQtYXNtLXN5bnRheAlzeW50YXgudHh0CS8qZnQtYXNtLXN5bnRheCoKQEAgLTUzODQsNiArNTQyNCw3IEBACiBmdC1mb3J0cmFuLXBsdWdpbglmaWxldHlwZS50eHQJLypmdC1mb3J0cmFuLXBsdWdpbioKIGZ0LWZvcnRyYW4tc3ludGF4CXN5bnRheC50eHQJLypmdC1mb3J0cmFuLXN5bnRheCoKIGZ0LWZ2d20tc3ludGF4CXN5bnRheC50eHQJLypmdC1mdndtLXN5bnRheCoKK2Z0LWdpdGNvbW1pdC1wbHVnaW4JZmlsZXR5cGUudHh0CS8qZnQtZ2l0Y29tbWl0LXBsdWdpbioKIGZ0LWdyb2ZmLXN5bnRheAlzeW50YXgudHh0CS8qZnQtZ3JvZmYtc3ludGF4KgogZnQtZ3NwLXN5bnRheAlzeW50YXgudHh0CS8qZnQtZ3NwLXN5bnRheCoKIGZ0LWhhc2tlbGwtc3ludGF4CXN5bnRheC50eHQJLypmdC1oYXNrZWxsLXN5bnRheCoKQEAgLTU0MTcsNiArNTQ1OCw3IEBACiBmdC1vY2FtbC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LW9jYW1sLXN5bnRheCoKIGZ0LXBhcHAtc3ludGF4CXN5bnRheC50eHQJLypmdC1wYXBwLXN5bnRheCoKIGZ0LXBhc2NhbC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXBhc2NhbC1zeW50YXgqCitmdC1wZGYtcGx1Z2luCWZpbGV0eXBlLnR4dAkvKmZ0LXBkZi1wbHVnaW4qCiBmdC1wZXJsLXN5bnRheAlzeW50YXgudHh0CS8qZnQtcGVybC1zeW50YXgqCiBmdC1waHAtb21uaQlpbnNlcnQudHh0CS8qZnQtcGhwLW9tbmkqCiBmdC1waHAtc3ludGF4CXN5bnRheC50eHQJLypmdC1waHAtc3ludGF4KgpAQCAtNTQ1Niw2ICs1NDk4LDcgQEAKIGZ0LXRmLXN5bnRheAlzeW50YXgudHh0CS8qZnQtdGYtc3ludGF4KgogZnQtdmItc3ludGF4CXN5bnRheC50eHQJLypmdC12Yi1zeW50YXgqCiBmdC12ZXJpbG9nLWluZGVudAlpbmRlbnQudHh0CS8qZnQtdmVyaWxvZy1pbmRlbnQqCitmdC12aGRsLWluZGVudAlpbmRlbnQudHh0CS8qZnQtdmhkbC1pbmRlbnQqCiBmdC12aW0taW5kZW50CWluZGVudC50eHQJLypmdC12aW0taW5kZW50KgogZnQtdmltLXN5bnRheAlzeW50YXgudHh0CS8qZnQtdmltLXN5bnRheCoKIGZ0LXhmODZjb25mLXN5bnRheAlzeW50YXgudHh0CS8qZnQteGY4NmNvbmYtc3ludGF4KgpAQCAtNTQ2Myw2ICs1NTA2LDggQEAKIGZ0LXhtbC1vbW5pCWluc2VydC50eHQJLypmdC14bWwtb21uaSoKIGZ0LXhtbC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXhtbC1zeW50YXgqCiBmdC14cG0tc3ludGF4CXN5bnRheC50eHQJLypmdC14cG0tc3ludGF4KgorZnRfYWRhLnR4dAlmdF9hZGEudHh0CS8qZnRfYWRhLnR4dCoKK2Z0X3NxbC50eHQJZnRfc3FsLnR4dAkvKmZ0X3NxbC50eHQqCiBmdGRldGVjdAlmaWxldHlwZS50eHQJLypmdGRldGVjdCoKIGZ0cAlwaV9uZXRydy50eHQJLypmdHAqCiBmdHBsdWdpbgl1c3JfNDEudHh0CS8qZnRwbHVnaW4qCkBAIC01NDc2LDYgKzU1MjEsNyBAQAogZnVuY3Rpb24ta2V5CWludHJvLnR4dAkvKmZ1bmN0aW9uLWtleSoKIGZ1bmN0aW9uLWxpc3QJdXNyXzQxLnR4dAkvKmZ1bmN0aW9uLWxpc3QqCiBmdW5jdGlvbi1yYW5nZS1leGFtcGxlCWV2YWwudHh0CS8qZnVuY3Rpb24tcmFuZ2UtZXhhbXBsZSoKK2Z1bmN0aW9uLXNlYXJjaC11bmRvCWV2YWwudHh0CS8qZnVuY3Rpb24tc2VhcmNoLXVuZG8qCiBmdW5jdGlvbl9rZXkJaW50cm8udHh0CS8qZnVuY3Rpb25fa2V5KgogZnVuY3Rpb25zCWV2YWwudHh0CS8qZnVuY3Rpb25zKgogZnZ3bS52aW0Jc3ludGF4LnR4dAkvKmZ2d20udmltKgpAQCAtNTQ5Myw1NCArNTUzOSw1OSBAQAogZzAJbW90aW9uLnR4dAkvKmcwKgogZzgJdmFyaW91cy50eHQJLypnOCoKIGc6TmV0cndUb3BMdmxNZW51CXBpX25ldHJ3LnR4dAkvKmc6TmV0cndUb3BMdmxNZW51KgotZzphZGEjQ29tbWVudAlhZGEudHh0CS8qZzphZGEjQ29tbWVudCoKLWc6YWRhI0N0YWdzX0tpbmRzCWFkYS50eHQJLypnOmFkYSNDdGFnc19LaW5kcyoKLWc6YWRhI0RvdFdvcmRSZWdleAlhZGEudHh0CS8qZzphZGEjRG90V29yZFJlZ2V4KgotZzphZGEjS2V5d29yZHMJYWRhLnR4dAkvKmc6YWRhI0tleXdvcmRzKgotZzphZGEjV29yZFJlZ2V4CWFkYS50eHQJLypnOmFkYSNXb3JkUmVnZXgqCi1nOmFkYV9hYmJyZXYJYWRhLnR4dAkvKmc6YWRhX2FiYnJldioKLWc6YWRhX2FsbF90YWJfdXNhZ2UJYWRhLnR4dAkvKmc6YWRhX2FsbF90YWJfdXNhZ2UqCi1nOmFkYV9iZWdpbl9wcmVwcm9jCWFkYS50eHQJLypnOmFkYV9iZWdpbl9wcmVwcm9jKgotZzphZGFfZGVmYXVsdF9jb21waWxlcglhZGEudHh0CS8qZzphZGFfZGVmYXVsdF9jb21waWxlcioKLWc6YWRhX2V4dGVuZGVkX2NvbXBsZXRpb24JYWRhLnR4dAkvKmc6YWRhX2V4dGVuZGVkX2NvbXBsZXRpb24qCi1nOmFkYV9leHRlbmRlZF90YWdnaW5nCWFkYS50eHQJLypnOmFkYV9leHRlbmRlZF90YWdnaW5nKgotZzphZGFfZm9sZGluZwlhZGEudHh0CS8qZzphZGFfZm9sZGluZyoKLWc6YWRhX2duYXRfZXh0ZW5zaW9ucwlhZGEudHh0CS8qZzphZGFfZ25hdF9leHRlbnNpb25zKgotZzphZGFfbGluZV9lcnJvcnMJYWRhLnR4dAkvKmc6YWRhX2xpbmVfZXJyb3JzKgotZzphZGFfbm9fdGFiX3NwYWNlX2Vycm9yCWFkYS50eHQJLypnOmFkYV9ub190YWJfc3BhY2VfZXJyb3IqCi1nOmFkYV9ub190cmFpbF9zcGFjZV9lcnJvcglhZGEudHh0CS8qZzphZGFfbm9fdHJhaWxfc3BhY2VfZXJyb3IqCi1nOmFkYV9vbW5pX3dpdGhfa2V5d29yZHMJYWRhLnR4dAkvKmc6YWRhX29tbmlfd2l0aF9rZXl3b3JkcyoKLWc6YWRhX3JhaW5ib3dfY29sb3IJYWRhLnR4dAkvKmc6YWRhX3JhaW5ib3dfY29sb3IqCi1nOmFkYV9zcGFjZV9lcnJvcnMJYWRhLnR4dAkvKmc6YWRhX3NwYWNlX2Vycm9ycyoKLWc6YWRhX3N0YW5kYXJkX3R5cGVzCWFkYS50eHQJLypnOmFkYV9zdGFuZGFyZF90eXBlcyoKLWc6YWRhX3dpdGhfZ25hdF9wcm9qZWN0X2ZpbGVzCWFkYS50eHQJLypnOmFkYV93aXRoX2duYXRfcHJvamVjdF9maWxlcyoKLWc6YWRhX3dpdGh1c2Vfb3JkaW5hcnkJYWRhLnR4dAkvKmc6YWRhX3dpdGh1c2Vfb3JkaW5hcnkqCi1nOmRlY2FkYQlhZGEudHh0CS8qZzpkZWNhZGEqCi1nOmRlY2FkYS5FcnJvcl9Gb3JtYXQJYWRhLnR4dAkvKmc6ZGVjYWRhLkVycm9yX0Zvcm1hdCoKLWc6ZGVjYWRhLk1ha2UoKQlhZGEudHh0CS8qZzpkZWNhZGEuTWFrZSgpKgotZzpkZWNhZGEuTWFrZV9Db21tYW5kCWFkYS50eHQJLypnOmRlY2FkYS5NYWtlX0NvbW1hbmQqCi1nOmRlY2FkYS5Vbml0X05hbWUoKQlhZGEudHh0CS8qZzpkZWNhZGEuVW5pdF9OYW1lKCkqCi1nOmduYXQJYWRhLnR4dAkvKmc6Z25hdCoKLWc6Z25hdC5FcnJvcl9Gb3JtYXQJYWRhLnR4dAkvKmc6Z25hdC5FcnJvcl9Gb3JtYXQqCi1nOmduYXQuRmluZCgpCWFkYS50eHQJLypnOmduYXQuRmluZCgpKgotZzpnbmF0LkZpbmRfUHJvZ3JhbQlhZGEudHh0CS8qZzpnbmF0LkZpbmRfUHJvZ3JhbSoKLWc6Z25hdC5NYWtlKCkJYWRhLnR4dAkvKmc6Z25hdC5NYWtlKCkqCi1nOmduYXQuTWFrZV9Db21tYW5kCWFkYS50eHQJLypnOmduYXQuTWFrZV9Db21tYW5kKgotZzpnbmF0LlByZXR0eSgpCWFkYS50eHQJLypnOmduYXQuUHJldHR5KCkqCi1nOmduYXQuUHJldHR5X1Byb2dyYW0JYWRhLnR4dAkvKmc6Z25hdC5QcmV0dHlfUHJvZ3JhbSoKLWc6Z25hdC5Qcm9qZWN0X0ZpbGUJYWRhLnR4dAkvKmc6Z25hdC5Qcm9qZWN0X0ZpbGUqCi1nOmduYXQuU2V0X1Byb2plY3RfRmlsZSgpCWFkYS50eHQJLypnOmduYXQuU2V0X1Byb2plY3RfRmlsZSgpKgotZzpnbmF0LlRhZ3MoKQlhZGEudHh0CS8qZzpnbmF0LlRhZ3MoKSoKLWc6Z25hdC5UYWdzX0NvbW1hbmQJYWRhLnR4dAkvKmc6Z25hdC5UYWdzX0NvbW1hbmQqCitnOmFkYSNDb21tZW50CWZ0X2FkYS50eHQJLypnOmFkYSNDb21tZW50KgorZzphZGEjQ3RhZ3NfS2luZHMJZnRfYWRhLnR4dAkvKmc6YWRhI0N0YWdzX0tpbmRzKgorZzphZGEjRG90V29yZFJlZ2V4CWZ0X2FkYS50eHQJLypnOmFkYSNEb3RXb3JkUmVnZXgqCitnOmFkYSNLZXl3b3JkcwlmdF9hZGEudHh0CS8qZzphZGEjS2V5d29yZHMqCitnOmFkYSNXb3JkUmVnZXgJZnRfYWRhLnR4dAkvKmc6YWRhI1dvcmRSZWdleCoKK2c6YWRhX2FiYnJldglmdF9hZGEudHh0CS8qZzphZGFfYWJicmV2KgorZzphZGFfYWxsX3RhYl91c2FnZQlmdF9hZGEudHh0CS8qZzphZGFfYWxsX3RhYl91c2FnZSoKK2c6YWRhX2JlZ2luX3ByZXByb2MJZnRfYWRhLnR4dAkvKmc6YWRhX2JlZ2luX3ByZXByb2MqCitnOmFkYV9kZWZhdWx0X2NvbXBpbGVyCWZ0X2FkYS50eHQJLypnOmFkYV9kZWZhdWx0X2NvbXBpbGVyKgorZzphZGFfZXh0ZW5kZWRfY29tcGxldGlvbglmdF9hZGEudHh0CS8qZzphZGFfZXh0ZW5kZWRfY29tcGxldGlvbioKK2c6YWRhX2V4dGVuZGVkX3RhZ2dpbmcJZnRfYWRhLnR4dAkvKmc6YWRhX2V4dGVuZGVkX3RhZ2dpbmcqCitnOmFkYV9mb2xkaW5nCWZ0X2FkYS50eHQJLypnOmFkYV9mb2xkaW5nKgorZzphZGFfZ25hdF9leHRlbnNpb25zCWZ0X2FkYS50eHQJLypnOmFkYV9nbmF0X2V4dGVuc2lvbnMqCitnOmFkYV9saW5lX2Vycm9ycwlmdF9hZGEudHh0CS8qZzphZGFfbGluZV9lcnJvcnMqCitnOmFkYV9ub190YWJfc3BhY2VfZXJyb3IJZnRfYWRhLnR4dAkvKmc6YWRhX25vX3RhYl9zcGFjZV9lcnJvcioKK2c6YWRhX25vX3RyYWlsX3NwYWNlX2Vycm9yCWZ0X2FkYS50eHQJLypnOmFkYV9ub190cmFpbF9zcGFjZV9lcnJvcioKK2c6YWRhX29tbmlfd2l0aF9rZXl3b3JkcwlmdF9hZGEudHh0CS8qZzphZGFfb21uaV93aXRoX2tleXdvcmRzKgorZzphZGFfcmFpbmJvd19jb2xvcglmdF9hZGEudHh0CS8qZzphZGFfcmFpbmJvd19jb2xvcioKK2c6YWRhX3NwYWNlX2Vycm9ycwlmdF9hZGEudHh0CS8qZzphZGFfc3BhY2VfZXJyb3JzKgorZzphZGFfc3RhbmRhcmRfdHlwZXMJZnRfYWRhLnR4dAkvKmc6YWRhX3N0YW5kYXJkX3R5cGVzKgorZzphZGFfd2l0aF9nbmF0X3Byb2plY3RfZmlsZXMJZnRfYWRhLnR4dAkvKmc6YWRhX3dpdGhfZ25hdF9wcm9qZWN0X2ZpbGVzKgorZzphZGFfd2l0aHVzZV9vcmRpbmFyeQlmdF9hZGEudHh0CS8qZzphZGFfd2l0aHVzZV9vcmRpbmFyeSoKK2c6Y29sb3JzX25hbWUJb3B0aW9ucy50eHQJLypnOmNvbG9yc19uYW1lKgorZzpkZWNhZGEJZnRfYWRhLnR4dAkvKmc6ZGVjYWRhKgorZzpkZWNhZGEuRXJyb3JfRm9ybWF0CWZ0X2FkYS50eHQJLypnOmRlY2FkYS5FcnJvcl9Gb3JtYXQqCitnOmRlY2FkYS5NYWtlKCkJZnRfYWRhLnR4dAkvKmc6ZGVjYWRhLk1ha2UoKSoKK2c6ZGVjYWRhLk1ha2VfQ29tbWFuZAlmdF9hZGEudHh0CS8qZzpkZWNhZGEuTWFrZV9Db21tYW5kKgorZzpkZWNhZGEuVW5pdF9OYW1lKCkJZnRfYWRhLnR4dAkvKmc6ZGVjYWRhLlVuaXRfTmFtZSgpKgorZzpnbmF0CWZ0X2FkYS50eHQJLypnOmduYXQqCitnOmduYXQuRXJyb3JfRm9ybWF0CWZ0X2FkYS50eHQJLypnOmduYXQuRXJyb3JfRm9ybWF0KgorZzpnbmF0LkZpbmQoKQlmdF9hZGEudHh0CS8qZzpnbmF0LkZpbmQoKSoKK2c6Z25hdC5GaW5kX1Byb2dyYW0JZnRfYWRhLnR4dAkvKmc6Z25hdC5GaW5kX1Byb2dyYW0qCitnOmduYXQuTWFrZSgpCWZ0X2FkYS50eHQJLypnOmduYXQuTWFrZSgpKgorZzpnbmF0Lk1ha2VfQ29tbWFuZAlmdF9hZGEudHh0CS8qZzpnbmF0Lk1ha2VfQ29tbWFuZCoKK2c6Z25hdC5QcmV0dHkoKQlmdF9hZGEudHh0CS8qZzpnbmF0LlByZXR0eSgpKgorZzpnbmF0LlByZXR0eV9Qcm9ncmFtCWZ0X2FkYS50eHQJLypnOmduYXQuUHJldHR5X1Byb2dyYW0qCitnOmduYXQuUHJvamVjdF9GaWxlCWZ0X2FkYS50eHQJLypnOmduYXQuUHJvamVjdF9GaWxlKgorZzpnbmF0LlNldF9Qcm9qZWN0X0ZpbGUoKQlmdF9hZGEudHh0CS8qZzpnbmF0LlNldF9Qcm9qZWN0X0ZpbGUoKSoKK2c6Z25hdC5UYWdzKCkJZnRfYWRhLnR4dAkvKmc6Z25hdC5UYWdzKCkqCitnOmduYXQuVGFnc19Db21tYW5kCWZ0X2FkYS50eHQJLypnOmduYXQuVGFnc19Db21tYW5kKgogZzpuZXRyd19hbHRvCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfYWx0byoKIGc6bmV0cndfYWx0dglwaV9uZXRydy50eHQJLypnOm5ldHJ3X2FsdHYqCiBnOm5ldHJ3X2Jyb3dzZV9zcGxpdAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Jyb3dzZV9zcGxpdCoKIGc6bmV0cndfYnJvd3NleF92aWV3ZXIJcGlfbmV0cncudHh0CS8qZzpuZXRyd19icm93c2V4X3ZpZXdlcioKK2c6bmV0cndfY2RfZXNjYXBlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfY2RfZXNjYXBlKgorZzpuZXRyd19jb21wcmVzcwlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2NvbXByZXNzKgogZzpuZXRyd19jeWd3aW4JcGlfbmV0cncudHh0CS8qZzpuZXRyd19jeWd3aW4qCiBnOm5ldHJ3X2Rhdl9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19kYXZfY21kKgorZzpuZXRyd19kZWNvbXByZXNzCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZGVjb21wcmVzcyoKIGc6bmV0cndfZXh0cmFjbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19leHRyYWNtZCoKIGc6bmV0cndfZmFzdGJyb3dzZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Zhc3Ricm93c2UqCiBnOm5ldHJ3X2ZldGNoX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2ZldGNoX2NtZCoKK2c6bmV0cndfZm5hbWVfZXNjYXBlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZm5hbWVfZXNjYXBlKgogZzpuZXRyd19mdHAJcGlfbmV0cncudHh0CS8qZzpuZXRyd19mdHAqCiBnOm5ldHJ3X2Z0cF9icm93c2VfcmVqZWN0CXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZnRwX2Jyb3dzZV9yZWplY3QqCiBnOm5ldHJ3X2Z0cF9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19mdHBfY21kKgpAQCAtNTU0OCw2ICs1NTk5LDcgQEAKIGc6bmV0cndfZnRwX3NpemVsaXN0X2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2Z0cF9zaXplbGlzdF9jbWQqCiBnOm5ldHJ3X2Z0cF90aW1lbGlzdF9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19mdHBfdGltZWxpc3RfY21kKgogZzpuZXRyd19mdHBtb2RlCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfZnRwbW9kZSoKK2c6bmV0cndfZ2xvYl9lc2NhcGUJcGlfbmV0cncudHh0CS8qZzpuZXRyd19nbG9iX2VzY2FwZSoKIGc6bmV0cndfaGlkZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2hpZGUqCiBnOm5ldHJ3X2h0dHBfY21kCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfaHR0cF9jbWQqCiBnOm5ldHJ3X2lnbm9yZW5ldHJjCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfaWdub3JlbmV0cmMqCkBAIC01NTU3LDEyICs1NjA5LDE1IEBACiBnOm5ldHJ3X2xpc3RzdHlsZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X2xpc3RzdHlsZSoKIGc6bmV0cndfbG9jYWxfbWtkaXIJcGlfbmV0cncudHh0CS8qZzpuZXRyd19sb2NhbF9ta2RpcioKIGc6bmV0cndfbG9jYWxfcm1kaXIJcGlfbmV0cncudHh0CS8qZzpuZXRyd19sb2NhbF9ybWRpcioKK2c6bmV0cndfbG9jYWxjb3B5Y21kCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfbG9jYWxjb3B5Y21kKgorZzpuZXRyd19sb2NhbG1vdmVjbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19sb2NhbG1vdmVjbWQqCiBnOm5ldHJ3X21heGZpbGVuYW1lbGVuCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfbWF4ZmlsZW5hbWVsZW4qCiBnOm5ldHJ3X21lbnUJcGlfbmV0cncudHh0CS8qZzpuZXRyd19tZW51KgogZzpuZXRyd19ta2Rpcl9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19ta2Rpcl9jbWQqCiBnOm5ldHJ3X25vZ3gJcGlfbmV0cncudHh0CS8qZzpuZXRyd19ub2d4KgotZzpuZXRyd19wYXNzd2QJcGlfbmV0cncudHh0CS8qZzpuZXRyd19wYXNzd2QqCitnOm5ldHJ3X3ByZXZpZXcJcGlfbmV0cncudHh0CS8qZzpuZXRyd19wcmV2aWV3KgogZzpuZXRyd19yY3BfY21kCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfcmNwX2NtZCoKK2c6bmV0cndfcmV0bWFwCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfcmV0bWFwKgogZzpuZXRyd19ybV9jbWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19ybV9jbWQqCiBnOm5ldHJ3X3JtZGlyX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3JtZGlyX2NtZCoKIGc6bmV0cndfcm1mX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3JtZl9jbWQqCkBAIC01NTcxLDI1ICs1NjI2LDM5IEBACiBnOm5ldHJ3X3NjcHBvcnQJcGlfbmV0cncudHh0CS8qZzpuZXRyd19zY3Bwb3J0KgogZzpuZXRyd19zZnRwX2NtZAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NmdHBfY21kKgogZzpuZXRyd19zaHEJcGlfbmV0cncudHh0CS8qZzpuZXRyd19zaHEqCitnOm5ldHJ3X3NpbGVudAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NpbGVudCoKIGc6bmV0cndfc29ydF9ieQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NvcnRfYnkqCiBnOm5ldHJ3X3NvcnRfZGlyZWN0aW9uCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfc29ydF9kaXJlY3Rpb24qCiBnOm5ldHJ3X3NvcnRfc2VxdWVuY2UJcGlfbmV0cncudHh0CS8qZzpuZXRyd19zb3J0X3NlcXVlbmNlKgorZzpuZXRyd19zcGVjaWFsX3N5bnRheAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NwZWNpYWxfc3ludGF4KgogZzpuZXRyd19zc2hfYnJvd3NlX3JlamVjdAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NzaF9icm93c2VfcmVqZWN0KgogZzpuZXRyd19zc2hfY21kCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfc3NoX2NtZCoKIGc6bmV0cndfc3NocG9ydAlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3NzaHBvcnQqCiBnOm5ldHJ3X3RpbWVmbXQJcGlfbmV0cncudHh0CS8qZzpuZXRyd190aW1lZm10KgorZzpuZXRyd190bXBmaWxlX2VzY2FwZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3RtcGZpbGVfZXNjYXBlKgogZzpuZXRyd191aWQJcGlfbmV0cncudHh0CS8qZzpuZXRyd191aWQqCiBnOm5ldHJ3X3VzZV9lcnJvcndpbmRvdwlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3VzZV9lcnJvcndpbmRvdyoKIGc6bmV0cndfdXNlX25vc3dmCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfdXNlX25vc3dmKgogZzpuZXRyd191c2VfbnRfcmNwCXBpX25ldHJ3LnR4dAkvKmc6bmV0cndfdXNlX250X3JjcCoKIGc6bmV0cndfd2luOTVmdHAJcGlfbmV0cncudHh0CS8qZzpuZXRyd193aW45NWZ0cCoKIGc6bmV0cndfd2luc2l6ZQlwaV9uZXRydy50eHQJLypnOm5ldHJ3X3dpbnNpemUqCitnOm5ldHJ3X3hzdHJsZW4JcGlfbmV0cncudHh0CS8qZzpuZXRyd194c3RybGVuKgogZzp0YXJfYnJvd3Nlb3B0aW9ucwlwaV90YXIudHh0CS8qZzp0YXJfYnJvd3Nlb3B0aW9ucyoKIGc6dGFyX2NtZAlwaV90YXIudHh0CS8qZzp0YXJfY21kKgorZzp0YXJfbm9tYXgJcGlfdGFyLnR4dAkvKmc6dGFyX25vbWF4KgogZzp0YXJfcmVhZG9wdGlvbnMJcGlfdGFyLnR4dAkvKmc6dGFyX3JlYWRvcHRpb25zKgogZzp0YXJfd3JpdGVvcHRpb25zCXBpX3Rhci50eHQJLypnOnRhcl93cml0ZW9wdGlvbnMqCiBnOnZhcglldmFsLnR4dAkvKmc6dmFyKgogZzp2aW1iYWxsX2hvbWUJcGlfdmltYmFsbC50eHQJLypnOnZpbWJhbGxfaG9tZSoKK2c6dmltYmFsbF9ta2RpcglwaV92aW1iYWxsLnR4dAkvKmc6dmltYmFsbF9ta2RpcioKK2c6dmltYmFsbF9wYXRoX2VzY2FwZQlwaV92aW1iYWxsLnR4dAkvKmc6dmltYmFsbF9wYXRoX2VzY2FwZSoKK2c6dmltc3luX2VtYmVkCXN5bnRheC50eHQJLypnOnZpbXN5bl9lbWJlZCoKK2c6dmltc3luX2ZvbGRpbmcJc3ludGF4LnR4dAkvKmc6dmltc3luX2ZvbGRpbmcqCitnOnZpbXN5bl9tYXhsaW5lcwlzeW50YXgudHh0CS8qZzp2aW1zeW5fbWF4bGluZXMqCitnOnZpbXN5bl9taW5saW5lcwlzeW50YXgudHh0CS8qZzp2aW1zeW5fbWlubGluZXMqCitnOnZpbXN5bl9ub2Vycm9yCXN5bnRheC50eHQJLypnOnZpbXN5bl9ub2Vycm9yKgorZzp6aXBfbm9tYXgJcGlfemlwLnR4dAkvKmc6emlwX25vbWF4KgorZzp6aXBfc2hxCXBpX3ppcC50eHQJLypnOnppcF9zaHEqCiBnOnppcF91bnppcGNtZAlwaV96aXAudHh0CS8qZzp6aXBfdW56aXBjbWQqCiBnOnppcF96aXBjbWQJcGlfemlwLnR4dAkvKmc6emlwX3ppcGNtZCoKIGc7CW1vdGlvbi50eHQJLypnOyoKQEAgLTU2NDksNiArNTcxOCw4IEBACiBnZXRsYXRlc3R2aW1zY3JpcHRzLWluc3RhbGwJcGlfZ2V0c2NyaXB0LnR4dAkvKmdldGxhdGVzdHZpbXNjcmlwdHMtaW5zdGFsbCoKIGdldGxpbmUoKQlldmFsLnR4dAkvKmdldGxpbmUoKSoKIGdldGxvY2xpc3QoKQlldmFsLnR4dAkvKmdldGxvY2xpc3QoKSoKK2dldG1hdGNoZXMoKQlldmFsLnR4dAkvKmdldG1hdGNoZXMoKSoKK2dldHBpZCgpCWV2YWwudHh0CS8qZ2V0cGlkKCkqCiBnZXRwb3MoKQlldmFsLnR4dAkvKmdldHBvcygpKgogZ2V0cWZsaXN0KCkJZXZhbC50eHQJLypnZXRxZmxpc3QoKSoKIGdldHJlZygpCWV2YWwudHh0CS8qZ2V0cmVnKCkqCkBAIC01Njc0LDYgKzU3NDUsNyBAQAogZ2xvYmFsLWltZQltYnl0ZS50eHQJLypnbG9iYWwtaW1lKgogZ2xvYmFsLWxvY2FsCW9wdGlvbnMudHh0CS8qZ2xvYmFsLWxvY2FsKgogZ2xvYmFsLXZhcmlhYmxlCWV2YWwudHh0CS8qZ2xvYmFsLXZhcmlhYmxlKgorZ2xvYmFsX21hcmtmaWxlbGlzdAlwaV9uZXRydy50eHQJLypnbG9iYWxfbWFya2ZpbGVsaXN0KgogZ2xvYnBhdGgoKQlldmFsLnR4dAkvKmdsb2JwYXRoKCkqCiBnbHZzCXBpX2dldHNjcmlwdC50eHQJLypnbHZzKgogZ2x2cy1hbGcJcGlfZ2V0c2NyaXB0LnR4dAkvKmdsdnMtYWxnKgpAQCAtNTY4OSwxMCArNTc2MSwxMCBAQAogZ2x2cy1wbHVnaW5zCXBpX2dldHNjcmlwdC50eHQJLypnbHZzLXBsdWdpbnMqCiBnbHZzLXVzYWdlCXBpX2dldHNjcmlwdC50eHQJLypnbHZzLXVzYWdlKgogZ20JbW90aW9uLnR4dAkvKmdtKgotZ25hdCNJbnNlcnRfVGFnc19IZWFkZXIoKQlhZGEudHh0CS8qZ25hdCNJbnNlcnRfVGFnc19IZWFkZXIoKSoKLWduYXQjTmV3KCkJYWRhLnR4dAkvKmduYXQjTmV3KCkqCi1nbmF0LXhyZWYJYWRhLnR4dAkvKmduYXQteHJlZioKLWduYXRfbWVtYmVycwlhZGEudHh0CS8qZ25hdF9tZW1iZXJzKgorZ25hdCNJbnNlcnRfVGFnc19IZWFkZXIoKQlmdF9hZGEudHh0CS8qZ25hdCNJbnNlcnRfVGFnc19IZWFkZXIoKSoKK2duYXQjTmV3KCkJZnRfYWRhLnR4dAkvKmduYXQjTmV3KCkqCitnbmF0LXhyZWYJZnRfYWRhLnR4dAkvKmduYXQteHJlZioKK2duYXRfbWVtYmVycwlmdF9hZGEudHh0CS8qZ25hdF9tZW1iZXJzKgogZ25vbWUtc2Vzc2lvbglndWlfeDExLnR4dAkvKmdub21lLXNlc3Npb24qCiBnbwltb3Rpb24udHh0CS8qZ28qCiBncAljaGFuZ2UudHh0CS8qZ3AqCkBAIC01NzUyLDYgKzU4MjQsNyBAQAogZ3VpLXczMi1wcmludGluZwlndWlfdzMyLnR4dAkvKmd1aS13MzItcHJpbnRpbmcqCiBndWktdzMyLXN0YXJ0CWd1aV93MzIudHh0CS8qZ3VpLXczMi1zdGFydCoKIGd1aS13MzItdmFyaW91cwlndWlfdzMyLnR4dAkvKmd1aS13MzItdmFyaW91cyoKK2d1aS13MzItd2luZG93aWQJZ3VpX3czMi50eHQJLypndWktdzMyLXdpbmRvd2lkKgogZ3VpLXczMnMJZ3VpX3czMi50eHQJLypndWktdzMycyoKIGd1aS13aW4zMi1tYXhpbWl6ZWQJZ3VpX3czMi50eHQJLypndWktd2luMzItbWF4aW1pemVkKgogZ3VpLXgxMQlndWlfeDExLnR4dAkvKmd1aS14MTEqCkBAIC01ODI4LDcgKzU5MDEsNiBAQAogaGlnaGxpZ2h0LXRlcm0Jc3ludGF4LnR4dAkvKmhpZ2hsaWdodC10ZXJtKgogaGlnaGxpZ2h0SUQoKQlldmFsLnR4dAkvKmhpZ2hsaWdodElEKCkqCiBoaWdobGlnaHRfZXhpc3RzKCkJZXZhbC50eHQJLypoaWdobGlnaHRfZXhpc3RzKCkqCi1oaXMJY21kbGluZS50eHQJLypoaXMqCiBoaXN0LW5hbWVzCWV2YWwudHh0CS8qaGlzdC1uYW1lcyoKIGhpc3RhZGQoKQlldmFsLnR4dAkvKmhpc3RhZGQoKSoKIGhpc3RkZWwoKQlldmFsLnR4dAkvKmhpc3RkZWwoKSoKQEAgLTYwNjIsNyArNjEzNCw3IEBACiBpbmRleC50eHQJaW5kZXgudHh0CS8qaW5kZXgudHh0KgogaW5mby1tZXNzYWdlCXN0YXJ0aW5nLnR4dAkvKmluZm8tbWVzc2FnZSoKIGluZm9ybS52aW0Jc3ludGF4LnR4dAkvKmluZm9ybS52aW0qCi1pbmZvcm1peAlzcWwudHh0CS8qaW5mb3JtaXgqCitpbmZvcm1peAlmdF9zcWwudHh0CS8qaW5mb3JtaXgqCiBpbml0aWFsaXphdGlvbglzdGFydGluZy50eHQJLyppbml0aWFsaXphdGlvbioKIGlucHV0KCkJZXZhbC50eHQJLyppbnB1dCgpKgogaW5wdXRkaWFsb2coKQlldmFsLnR4dAkvKmlucHV0ZGlhbG9nKCkqCkBAIC02MTkxLDExICs2MjYzLDEzIEBACiBsb2NhbC1vcHRpb25zCW9wdGlvbnMudHh0CS8qbG9jYWwtb3B0aW9ucyoKIGxvY2FsLXZhcmlhYmxlCWV2YWwudHh0CS8qbG9jYWwtdmFyaWFibGUqCiBsb2NhbC12YXJpYWJsZXMJZXZhbC50eHQJLypsb2NhbC12YXJpYWJsZXMqCitsb2NhbF9tYXJrZmlsZWxpc3QJcGlfbmV0cncudHh0CS8qbG9jYWxfbWFya2ZpbGVsaXN0KgogbG9jYWxlCW1ieXRlLnR4dAkvKmxvY2FsZSoKIGxvY2FsZS1uYW1lCW1ieXRlLnR4dAkvKmxvY2FsZS1uYW1lKgogbG9jYWx0aW1lKCkJZXZhbC50eHQJLypsb2NhbHRpbWUoKSoKIGxvY2F0aW9uLWxpc3QJcXVpY2tmaXgudHh0CS8qbG9jYXRpb24tbGlzdCoKIGxvY2F0aW9uLWxpc3Qtd2luZG93CXF1aWNrZml4LnR4dAkvKmxvY2F0aW9uLWxpc3Qtd2luZG93KgorbG9nMTAoKQlldmFsLnR4dAkvKmxvZzEwKCkqCiBsb25nLWxpbmVzCXZlcnNpb241LnR4dAkvKmxvbmctbGluZXMqCiBsb3dlcmNhc2UJY2hhbmdlLnR4dAkvKmxvd2VyY2FzZSoKIGxwYy52aW0Jc3ludGF4LnR4dAkvKmxwYy52aW0qCkBAIC02MjYwLDExICs2MzM0LDE0IEBACiBtYXBwaW5nCW1hcC50eHQJLyptYXBwaW5nKgogbWFyawltb3Rpb24udHh0CS8qbWFyayoKIG1hcmstbW90aW9ucwltb3Rpb24udHh0CS8qbWFyay1tb3Rpb25zKgorbWFya2ZpbGVsaXN0CXBpX25ldHJ3LnR4dAkvKm1hcmtmaWxlbGlzdCoKIG1hc20udmltCXN5bnRheC50eHQJLyptYXNtLnZpbSoKIG1hdGNoKCkJZXZhbC50eHQJLyptYXRjaCgpKgogbWF0Y2gtaGlnaGxpZ2h0CXBhdHRlcm4udHh0CS8qbWF0Y2gtaGlnaGxpZ2h0KgogbWF0Y2gtcGFyZW5zCXRpcHMudHh0CS8qbWF0Y2gtcGFyZW5zKgorbWF0Y2hhZGQoKQlldmFsLnR4dAkvKm1hdGNoYWRkKCkqCiBtYXRjaGFyZygpCWV2YWwudHh0CS8qbWF0Y2hhcmcoKSoKK21hdGNoZGVsZXRlKCkJZXZhbC50eHQJLyptYXRjaGRlbGV0ZSgpKgogbWF0Y2hlbmQoKQlldmFsLnR4dAkvKm1hdGNoZW5kKCkqCiBtYXRjaGl0LWluc3RhbGwJdXNyXzA1LnR4dAkvKm1hdGNoaXQtaW5zdGFsbCoKIG1hdGNobGlzdCgpCWV2YWwudHh0CS8qbWF0Y2hsaXN0KCkqCkBAIC02MzU1LDcgKzY0MzIsNyBAQAogbXVsdGlsYW5nLXNjcmlwdHMJbWxhbmcudHh0CS8qbXVsdGlsYW5nLXNjcmlwdHMqCiBteWZpbGV0eXBlZmlsZQlzeW50YXgudHh0CS8qbXlmaWxldHlwZWZpbGUqCiBteXNjcmlwdHNmaWxlCXN5bnRheC50eHQJLypteXNjcmlwdHNmaWxlKgotbXlzcWwJc3FsLnR4dAkvKm15c3FsKgorbXlzcWwJZnRfc3FsLnR4dAkvKm15c3FsKgogbXlzeW50YXhmaWxlCXN5bnRheC50eHQJLypteXN5bnRheGZpbGUqCiBteXN5bnRheGZpbGUtYWRkCXN5bnRheC50eHQJLypteXN5bnRheGZpbGUtYWRkKgogbXlzeW50YXhmaWxlLXJlcGxhY2UJc3ludGF4LnR4dAkvKm15c3ludGF4ZmlsZS1yZXBsYWNlKgpAQCAtNjM3NiwxNCArNjQ1MywxNyBAQAogbmItZXZlbnRzCW5ldGJlYW5zLnR4dAkvKm5iLWV2ZW50cyoKIG5iLWZ1bmN0aW9ucwluZXRiZWFucy50eHQJLypuYi1mdW5jdGlvbnMqCiBuYi1tZXNzYWdlcwluZXRiZWFucy50eHQJLypuYi1tZXNzYWdlcyoKK25iLXByb3RvY29sX2Vycm9ycwluZXRiZWFucy50eHQJLypuYi1wcm90b2NvbF9lcnJvcnMqCiBuYi1zcGVjaWFsCW5ldGJlYW5zLnR4dAkvKm5iLXNwZWNpYWwqCiBuYi10ZXJtcwluZXRiZWFucy50eHQJLypuYi10ZXJtcyoKIG5jZi52aW0Jc3ludGF4LnR4dAkvKm5jZi52aW0qCiBuZXRiZWFucwluZXRiZWFucy50eHQJLypuZXRiZWFucyoKLW5ldGJlYW5zLWNvbW1hbmRzCW5ldGJlYW5zLnR4dAkvKm5ldGJlYW5zLWNvbW1hbmRzKgogbmV0YmVhbnMtY29uZmlndXJlCW5ldGJlYW5zLnR4dAkvKm5ldGJlYW5zLWNvbmZpZ3VyZSoKK25ldGJlYW5zLWRlYnVnZ2luZwluZXRiZWFucy50eHQJLypuZXRiZWFucy1kZWJ1Z2dpbmcqCiBuZXRiZWFucy1kb3dubG9hZAluZXRiZWFucy50eHQJLypuZXRiZWFucy1kb3dubG9hZCoKK25ldGJlYW5zLWludGVncmF0aW9uCW5ldGJlYW5zLnR4dAkvKm5ldGJlYW5zLWludGVncmF0aW9uKgogbmV0YmVhbnMtaW50cm8JbmV0YmVhbnMudHh0CS8qbmV0YmVhbnMtaW50cm8qCituZXRiZWFucy1rZXkJbmV0YmVhbnMudHh0CS8qbmV0YmVhbnMta2V5KgogbmV0YmVhbnMta2V5YmluZGluZ3MJbmV0YmVhbnMudHh0CS8qbmV0YmVhbnMta2V5YmluZGluZ3MqCiBuZXRiZWFucy1tZXNzYWdlcwluZXRiZWFucy50eHQJLypuZXRiZWFucy1tZXNzYWdlcyoKIG5ldGJlYW5zLXByZXBhcmF0aW9uCW5ldGJlYW5zLnR4dAkvKm5ldGJlYW5zLXByZXBhcmF0aW9uKgpAQCAtNjQwOCwxNyArNjQ4OCwyMCBAQAogbmV0cnctYm9va21hcmtzCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWJvb2ttYXJrcyoKIG5ldHJ3LWJyb3dzZQlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UqCiBuZXRydy1icm93c2UtY21kcwlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UtY21kcyoKLW5ldHJ3LWJyb3dzZS1pbnRybwlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UtaW50cm8qCi1uZXRydy1icm93c2UtdmFyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWJyb3dzZS12YXIqCituZXRydy1icm93c2UtbWFwcwlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2UtbWFwcyoKK25ldHJ3LWJyb3dzZXIJcGlfbmV0cncudHh0CS8qbmV0cnctYnJvd3NlcioKK25ldHJ3LWJyb3dzZXItb3B0aW9ucwlwaV9uZXRydy50eHQJLypuZXRydy1icm93c2VyLW9wdGlvbnMqCituZXRydy1icm93c2VyLXZhcglwaV9uZXRydy50eHQJLypuZXRydy1icm93c2VyLXZhcioKK25ldHJ3LWJyb3dzaW5nCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWJyb3dzaW5nKgogbmV0cnctYwlwaV9uZXRydy50eHQJLypuZXRydy1jKgogbmV0cnctY2FkYXZlcglwaV9uZXRydy50eHQJLypuZXRydy1jYWRhdmVyKgogbmV0cnctY2hndXAJcGlfbmV0cncudHh0CS8qbmV0cnctY2hndXAqCituZXRydy1jbGVhbglwaV9uZXRydy50eHQJLypuZXRydy1jbGVhbioKIG5ldHJ3LWNvbnRlbnRzCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNvbnRlbnRzKgogbmV0cnctY3IJcGlfbmV0cncudHh0CS8qbmV0cnctY3IqCiBuZXRydy1jcmVkaXRzCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWNyZWRpdHMqCiBuZXRydy1jdHJsLWgJcGlfbmV0cncudHh0CS8qbmV0cnctY3RybC1oKgogbmV0cnctY3RybC1sCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWN0cmwtbCoKLW5ldHJ3LWN0cmxfaAlwaV9uZXRydy50eHQJLypuZXRydy1jdHJsX2gqCiBuZXRydy1jdHJsX2wJcGlfbmV0cncudHh0CS8qbmV0cnctY3RybF9sKgogbmV0cnctY3VyZGlyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWN1cmRpcioKIG5ldHJ3LWQJcGlfbmV0cncudHh0CS8qbmV0cnctZCoKQEAgLTY0MzcsMjMgKzY1MjAsNDAgQEAKIG5ldHJ3LWZpeHVwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZpeHVwKgogbmV0cnctZnRwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZ0cCoKIG5ldHJ3LWdiCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWdiKgorbmV0cnctZ2gJcGlfbmV0cncudHh0CS8qbmV0cnctZ2gqCiBuZXRydy1neAlwaV9uZXRydy50eHQJLypuZXRydy1neCoKIG5ldHJ3LWhhbmRsZXIJcGlfbmV0cncudHh0CS8qbmV0cnctaGFuZGxlcioKIG5ldHJ3LWhlbHAJcGlfbmV0cncudHh0CS8qbmV0cnctaGVscCoKIG5ldHJ3LWhleHBsb3JlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWhleHBsb3JlKgorbmV0cnctaGlkZQlwaV9uZXRydy50eHQJLypuZXRydy1oaWRlKgogbmV0cnctaGlkaW5nCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWhpZGluZyoKIG5ldHJ3LWhpc3RvcnkJcGlfbmV0cncudHh0CS8qbmV0cnctaGlzdG9yeSoKIG5ldHJ3LWhvcml6CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWhvcml6KgogbmV0cnctaQlwaV9uZXRydy50eHQJLypuZXRydy1pKgogbmV0cnctaW5jb21wYXRpYmxlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWluY29tcGF0aWJsZSoKK25ldHJ3LWludHJvLWJyb3dzZQlwaV9uZXRydy50eHQJLypuZXRydy1pbnRyby1icm93c2UqCiBuZXRydy1saXN0CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWxpc3QqCiBuZXRydy1saXN0Ym9va21hcmsJcGlfbmV0cncudHh0CS8qbmV0cnctbGlzdGJvb2ttYXJrKgogbmV0cnctbGlzdGhhY2sJcGlfbmV0cncudHh0CS8qbmV0cnctbGlzdGhhY2sqCiBuZXRydy1sb2dpbglwaV9uZXRydy50eHQJLypuZXRydy1sb2dpbioKLW5ldHJ3LW1hcHMJcGlfbmV0cncudHh0CS8qbmV0cnctbWFwcyoKK25ldHJ3LW1UCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1UKgogbmV0cnctbWIJcGlfbmV0cncudHh0CS8qbmV0cnctbWIqCituZXRydy1tYwlwaV9uZXRydy50eHQJLypuZXRydy1tYyoKK25ldHJ3LW1kCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1kKgorbmV0cnctbWUJcGlfbmV0cncudHh0CS8qbmV0cnctbWUqCituZXRydy1tZglwaV9uZXRydy50eHQJLypuZXRydy1tZioKK25ldHJ3LW1nCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1nKgorbmV0cnctbWgJcGlfbmV0cncudHh0CS8qbmV0cnctbWgqCiBuZXRydy1tbF9nZXQJcGlfbmV0cncudHh0CS8qbmV0cnctbWxfZ2V0KgorbmV0cnctbW0JcGlfbmV0cncudHh0CS8qbmV0cnctbW0qCiBuZXRydy1tb3ZlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1vdmUqCituZXRydy1tcAlwaV9uZXRydy50eHQJLypuZXRydy1tcCoKK25ldHJ3LW1yCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1yKgorbmV0cnctbXMJcGlfbmV0cncudHh0CS8qbmV0cnctbXMqCituZXRydy1tdAlwaV9uZXRydy50eHQJLypuZXRydy1tdCoKK25ldHJ3LW11CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW11KgorbmV0cnctbXgJcGlfbmV0cncudHh0CS8qbmV0cnctbXgqCituZXRydy1teglwaV9uZXRydy50eHQJLypuZXRydy1teioKIG5ldHJ3LW5ldHJjCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW5ldHJjKgogbmV0cnctbmV4cGxvcmUJcGlfbmV0cncudHh0CS8qbmV0cnctbmV4cGxvcmUqCiBuZXRydy1ucmVhZAlwaV9uZXRydy50eHQJLypuZXRydy1ucmVhZCoKQEAgLTY0NjIsNiArNjU2Miw4IEBACiBuZXRydy1vcHRpb25zCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW9wdGlvbnMqCiBuZXRydy1wCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXAqCiBuZXRydy1wMQlwaV9uZXRydy50eHQJLypuZXRydy1wMSoKK25ldHJ3LXAxMAlwaV9uZXRydy50eHQJLypuZXRydy1wMTAqCituZXRydy1wMTEJcGlfbmV0cncudHh0CS8qbmV0cnctcDExKgogbmV0cnctcDIJcGlfbmV0cncudHh0CS8qbmV0cnctcDIqCiBuZXRydy1wMwlwaV9uZXRydy50eHQJLypuZXRydy1wMyoKIG5ldHJ3LXA0CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXA0KgpAQCAtNjQ4MSwxOCArNjU4MywyNyBAQAogbmV0cnctcHNjcAlwaV9uZXRydy50eHQJLypuZXRydy1wc2NwKgogbmV0cnctcHNmdHAJcGlfbmV0cncudHh0CS8qbmV0cnctcHNmdHAqCiBuZXRydy1wdXR0eQlwaV9uZXRydy50eHQJLypuZXRydy1wdXR0eSoKLW5ldHJ3LXEJcGlfbmV0cncudHh0CS8qbmV0cnctcSoKK25ldHJ3LXFiCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXFiKgorbmV0cnctcWYJcGlfbmV0cncudHh0CS8qbmV0cnctcWYqCituZXRydy1xdWlja2NvbQlwaV9uZXRydy50eHQJLypuZXRydy1xdWlja2NvbSoKK25ldHJ3LXF1aWNrY29tcwlwaV9uZXRydy50eHQJLypuZXRydy1xdWlja2NvbXMqCituZXRydy1xdWlja2hlbHAJcGlfbmV0cncudHh0CS8qbmV0cnctcXVpY2toZWxwKgorbmV0cnctcXVpY2ttYXAJcGlfbmV0cncudHh0CS8qbmV0cnctcXVpY2ttYXAqCituZXRydy1xdWlja21hcHMJcGlfbmV0cncudHh0CS8qbmV0cnctcXVpY2ttYXBzKgogbmV0cnctcglwaV9uZXRydy50eHQJLypuZXRydy1yKgogbmV0cnctcmVhZAlwaV9uZXRydy50eHQJLypuZXRydy1yZWFkKgogbmV0cnctcmVmCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXJlZioKIG5ldHJ3LXJlbmFtZQlwaV9uZXRydy50eHQJLypuZXRydy1yZW5hbWUqCiBuZXRydy1yZXZlcnNlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXJldmVyc2UqCituZXRydy1yZXhwbG9yZQlwaV9uZXRydy50eHQJLypuZXRydy1yZXhwbG9yZSoKIG5ldHJ3LXMJcGlfbmV0cncudHh0CS8qbmV0cnctcyoKIG5ldHJ3LXNldHRpbmdzCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXNldHRpbmdzKgogbmV0cnctc2V4cGxvcmUJcGlfbmV0cncudHh0CS8qbmV0cnctc2V4cGxvcmUqCiBuZXRydy1zb3J0CXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXNvcnQqCiBuZXRydy1zb3J0c2VxdWVuY2UJcGlfbmV0cncudHh0CS8qbmV0cnctc29ydHNlcXVlbmNlKgogbmV0cnctc291cmNlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXNvdXJjZSoKK25ldHJ3LXNzaC1oYWNrCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LXNzaC1oYWNrKgorbmV0cnctc3RhcglwaV9uZXRydy50eHQJLypuZXRydy1zdGFyKgogbmV0cnctc3RhcnBhdAlwaV9uZXRydy50eHQJLypuZXRydy1zdGFycGF0KgogbmV0cnctc3RhcnN0YXIJcGlfbmV0cncudHh0CS8qbmV0cnctc3RhcnN0YXIqCiBuZXRydy1zdGFyc3RhcnBhdAlwaV9uZXRydy50eHQJLypuZXRydy1zdGFyc3RhcnBhdCoKQEAgLTY2MjIsMTcgKzY3MzMsMTkgQEAKIG9sZS1yZWdpc3RyYXRpb24JaWZfb2xlLnR4dAkvKm9sZS1yZWdpc3RyYXRpb24qCiBvbGUtc2VuZGtleXMJaWZfb2xlLnR4dAkvKm9sZS1zZW5ka2V5cyoKIG9sZS1zZXRmb3JlZ3JvdW5kCWlmX29sZS50eHQJLypvbGUtc2V0Zm9yZWdyb3VuZCoKLW9tbmktc3FsLWNvbXBsZXRpb24Jc3FsLnR4dAkvKm9tbmktc3FsLWNvbXBsZXRpb24qCitvbWFwLWluZm8JbWFwLnR4dAkvKm9tYXAtaW5mbyoKK29tbmktc3FsLWNvbXBsZXRpb24JZnRfc3FsLnR4dAkvKm9tbmktc3FsLWNvbXBsZXRpb24qCiBvbmxpbmUtaGVscAl2YXJpb3VzLnR4dAkvKm9ubGluZS1oZWxwKgogb3BlbmluZy13aW5kb3cJd2luZG93cy50eHQJLypvcGVuaW5nLXdpbmRvdyoKIG9wZXJhdG9yCW1vdGlvbi50eHQJLypvcGVyYXRvcioKK29wZXJhdG9yLXZhcmlhYmxlCWV2YWwudHh0CS8qb3BlcmF0b3ItdmFyaWFibGUqCiBvcHRpb24tYmFja3NsYXNoCW9wdGlvbnMudHh0CS8qb3B0aW9uLWJhY2tzbGFzaCoKIG9wdGlvbi1saXN0CXF1aWNrcmVmLnR4dAkvKm9wdGlvbi1saXN0Kgogb3B0aW9uLXN1bW1hcnkJb3B0aW9ucy50eHQJLypvcHRpb24tc3VtbWFyeSoKIG9wdGlvbnMJb3B0aW9ucy50eHQJLypvcHRpb25zKgogb3B0aW9ucy1jaGFuZ2VkCXZlcnNpb241LnR4dAkvKm9wdGlvbnMtY2hhbmdlZCoKIG9wdGlvbnMudHh0CW9wdGlvbnMudHh0CS8qb3B0aW9ucy50eHQqCi1vcmFjbGUJc3FsLnR4dAkvKm9yYWNsZSoKK29yYWNsZQlmdF9zcWwudHh0CS8qb3JhY2xlKgogb3MyCW9zX29zMi50eHQJLypvczIqCiBvczJhbnNpCW9zX29zMi50eHQJLypvczJhbnNpKgogb3MzOTAJb3NfMzkwLnR4dAkvKm9zMzkwKgpAQCAtNjcxMSw3ICs2ODI0LDcgQEAKIHBpX3ZpbWJhbGwudHh0CXBpX3ZpbWJhbGwudHh0CS8qcGlfdmltYmFsbC50eHQqCiBwaV96aXAudHh0CXBpX3ppcC50eHQJLypwaV96aXAudHh0KgogcGxhaW50ZXgudmltCXN5bnRheC50eHQJLypwbGFpbnRleC52aW0qCi1wbHNxbAlzcWwudHh0CS8qcGxzcWwqCitwbHNxbAlmdF9zcWwudHh0CS8qcGxzcWwqCiBwbHVnaW4JdXNyXzA1LnR4dAkvKnBsdWdpbioKIHBsdWdpbi1kZXRhaWxzCWZpbGV0eXBlLnR4dAkvKnBsdWdpbi1kZXRhaWxzKgogcGx1Z2luLWZpbGV0eXBlCXVzcl80MS50eHQJLypwbHVnaW4tZmlsZXR5cGUqCkBAIC02NzI4LDEzICs2ODQxLDE0IEBACiBwb3NpeAl2aV9kaWZmLnR4dAkvKnBvc2l4KgogcG9zaXgtY29tcGxpYW5jZQl2aV9kaWZmLnR4dAkvKnBvc2l4LWNvbXBsaWFuY2UqCiBwb3NpeC1zY3JlZW4tc2l6ZQl2aV9kaWZmLnR4dAkvKnBvc2l4LXNjcmVlbi1zaXplKgotcG9zdGdyZXMJc3FsLnR4dAkvKnBvc3RncmVzKgorcG9zdGdyZXMJZnRfc3FsLnR4dAkvKnBvc3RncmVzKgogcG9zdHNjci52aW0Jc3ludGF4LnR4dAkvKnBvc3RzY3IudmltKgogcG9zdHNjcmlwdC1jamstcHJpbnRpbmcJcHJpbnQudHh0CS8qcG9zdHNjcmlwdC1jamstcHJpbnRpbmcqCiBwb3N0c2NyaXB0LXByaW50LWVuY29kaW5nCXByaW50LnR4dAkvKnBvc3RzY3JpcHQtcHJpbnQtZW5jb2RpbmcqCiBwb3N0c2NyaXB0LXByaW50LXRyb3VibGUJcHJpbnQudHh0CS8qcG9zdHNjcmlwdC1wcmludC10cm91YmxlKgogcG9zdHNjcmlwdC1wcmludC11dGlsCXByaW50LnR4dAkvKnBvc3RzY3JpcHQtcHJpbnQtdXRpbCoKIHBvc3RzY3JpcHQtcHJpbnRpbmcJcHJpbnQudHh0CS8qcG9zdHNjcmlwdC1wcmludGluZyoKK3BvdygpCWV2YWwudHh0CS8qcG93KCkqCiBwcHdpei52aW0Jc3ludGF4LnR4dAkvKnBwd2l6LnZpbSoKIHByZXNzLWVudGVyCW1lc3NhZ2UudHh0CS8qcHJlc3MtZW50ZXIqCiBwcmVzcy1yZXR1cm4JbWVzc2FnZS50eHQJLypwcmVzcy1yZXR1cm4qCkBAIC02NzQ1LDYgKzY4NTksMTggQEAKIHByaW50LW9wdGlvbnMJcHJpbnQudHh0CS8qcHJpbnQtb3B0aW9ucyoKIHByaW50LnR4dAlwcmludC50eHQJLypwcmludC50eHQqCiBwcmludGYoKQlldmFsLnR4dAkvKnByaW50ZigpKgorcHJpbnRmLSUJZXZhbC50eHQJLypwcmludGYtJSoKK3ByaW50Zi1FCWV2YWwudHh0CS8qcHJpbnRmLUUqCitwcmludGYtRwlldmFsLnR4dAkvKnByaW50Zi1HKgorcHJpbnRmLVgJZXZhbC50eHQJLypwcmludGYtWCoKK3ByaW50Zi1jCWV2YWwudHh0CS8qcHJpbnRmLWMqCitwcmludGYtZAlldmFsLnR4dAkvKnByaW50Zi1kKgorcHJpbnRmLWUJZXZhbC50eHQJLypwcmludGYtZSoKK3ByaW50Zi1mCWV2YWwudHh0CS8qcHJpbnRmLWYqCitwcmludGYtZwlldmFsLnR4dAkvKnByaW50Zi1nKgorcHJpbnRmLW8JZXZhbC50eHQJLypwcmludGYtbyoKK3ByaW50Zi1zCWV2YWwudHh0CS8qcHJpbnRmLXMqCitwcmludGYteAlldmFsLnR4dAkvKnByaW50Zi14KgogcHJpbnRpbmcJcHJpbnQudHh0CS8qcHJpbnRpbmcqCiBwcmludGluZy1mb3JtZmVlZAlwcmludC50eHQJLypwcmludGluZy1mb3JtZmVlZCoKIHByb2ZpbGUJcmVwZWF0LnR4dAkvKnByb2ZpbGUqCkBAIC02NzUyLDcgKzY4NzgsNyBAQAogcHJvZmlsaW5nLXZhcmlhYmxlCWV2YWwudHh0CS8qcHJvZmlsaW5nLXZhcmlhYmxlKgogcHJvZ25hbWUtdmFyaWFibGUJZXZhbC50eHQJLypwcm9nbmFtZS12YXJpYWJsZSoKIHByb2dyZXNzLnZpbQlzeW50YXgudHh0CS8qcHJvZ3Jlc3MudmltKgotcHNxbAlzcWwudHh0CS8qcHNxbCoKK3BzcWwJZnRfc3FsLnR4dAkvKnBzcWwqCiBwdGNhcC52aW0Jc3ludGF4LnR4dAkvKnB0Y2FwLnZpbSoKIHB0ZXJtLW1vdXNlCW9wdGlvbnMudHh0CS8qcHRlcm0tbW91c2UqCiBwdW12aXNpYmxlKCkJZXZhbC50eHQJLypwdW12aXNpYmxlKCkqCkBAIC02NzkwLDYgKzY5MTYsNyBAQAogcXVpY2tmaXgtZXJyb3ItbGlzdHMJcXVpY2tmaXgudHh0CS8qcXVpY2tmaXgtZXJyb3ItbGlzdHMqCiBxdWlja2ZpeC1nY2MJcXVpY2tmaXgudHh0CS8qcXVpY2tmaXgtZ2NjKgogcXVpY2tmaXgtbWFueAlxdWlja2ZpeC50eHQJLypxdWlja2ZpeC1tYW54KgorcXVpY2tmaXgtcGVybAlxdWlja2ZpeC50eHQJLypxdWlja2ZpeC1wZXJsKgogcXVpY2tmaXgtdmFsaWQJcXVpY2tmaXgudHh0CS8qcXVpY2tmaXgtdmFsaWQqCiBxdWlja2ZpeC13aW5kb3cJcXVpY2tmaXgudHh0CS8qcXVpY2tmaXgtd2luZG93KgogcXVpY2tmaXgudHh0CXF1aWNrZml4LnR4dAkvKnF1aWNrZml4LnR4dCoKQEAgLTY5MDEsNiArNzAyOCw3IEBACiByaXNjb3Mtc2hlbGwJb3NfcmlzYy50eHQJLypyaXNjb3Mtc2hlbGwqCiByaXNjb3MtdGVtcC1maWxlcwlvc19yaXNjLnR4dAkvKnJpc2Nvcy10ZW1wLWZpbGVzKgogcm90MTMJY2hhbmdlLnR4dAkvKnJvdDEzKgorcm91bmQoKQlldmFsLnR4dAkvKnJvdW5kKCkqCiByc3luYwlwaV9uZXRydy50eHQJLypyc3luYyoKIHJ1YnkJaWZfcnVieS50eHQJLypydWJ5KgogcnVieS1idWZmZXIJaWZfcnVieS50eHQJLypydWJ5LWJ1ZmZlcioKQEAgLTY5NDMsNiArNzA3MSw3IEBACiBzL1x0CWNoYW5nZS50eHQJLypzXC9cXHQqCiBzL1x1CWNoYW5nZS50eHQJLypzXC9cXHUqCiBzL1x+CWNoYW5nZS50eHQJLypzXC9cXH4qCitzOm5ldHJ3X3Bhc3N3ZAlwaV9uZXRydy50eHQJLypzOm5ldHJ3X3Bhc3N3ZCoKIHM6dmFyCWV2YWwudHh0CS8qczp2YXIqCiBzPENSPgljaGFuZ2UudHh0CS8qczxDUj4qCiBzYW5kYm94CWV2YWwudHh0CS8qc2FuZGJveCoKQEAgLTY5ODAsNiArNzEwOSw3IEBACiBzZWFyY2gtcmFuZ2UJcGF0dGVybi50eHQJLypzZWFyY2gtcmFuZ2UqCiBzZWFyY2gtcmVwbGFjZQljaGFuZ2UudHh0CS8qc2VhcmNoLXJlcGxhY2UqCiBzZWFyY2hkZWNsKCkJZXZhbC50eHQJLypzZWFyY2hkZWNsKCkqCitzZWFyY2hmb3J3YXJkLXZhcmlhYmxlCWV2YWwudHh0CS8qc2VhcmNoZm9yd2FyZC12YXJpYWJsZSoKIHNlYXJjaHBhaXIoKQlldmFsLnR4dAkvKnNlYXJjaHBhaXIoKSoKIHNlYXJjaHBhaXJwb3MoKQlldmFsLnR4dAkvKnNlYXJjaHBhaXJwb3MoKSoKIHNlYXJjaHBvcygpCWV2YWwudHh0CS8qc2VhcmNocG9zKCkqCkBAIC03MDAwLDYgKzcxMzAsNyBAQAogc2V0Y21kcG9zKCkJZXZhbC50eHQJLypzZXRjbWRwb3MoKSoKIHNldGxpbmUoKQlldmFsLnR4dAkvKnNldGxpbmUoKSoKIHNldGxvY2xpc3QoKQlldmFsLnR4dAkvKnNldGxvY2xpc3QoKSoKK3NldG1hdGNoZXMoKQlldmFsLnR4dAkvKnNldG1hdGNoZXMoKSoKIHNldHBvcygpCWV2YWwudHh0CS8qc2V0cG9zKCkqCiBzZXRxZmxpc3QoKQlldmFsLnR4dAkvKnNldHFmbGlzdCgpKgogc2V0cmVnKCkJZXZhbC50eHQJLypzZXRyZWcoKSoKQEAgLTcwMjYsNiArNzE1Nyw3IEBACiBzaW1wbGUtY2hhbmdlCWNoYW5nZS50eHQJLypzaW1wbGUtY2hhbmdlKgogc2ltcGxpZnkoKQlldmFsLnR4dAkvKnNpbXBsaWZ5KCkqCiBzaW11bGF0ZWQtY29tbWFuZAl2aV9kaWZmLnR4dAkvKnNpbXVsYXRlZC1jb21tYW5kKgorc2luKCkJZXZhbC50eHQJLypzaW4oKSoKIHNpbmdsZS1yZXBlYXQJcmVwZWF0LnR4dAkvKnNpbmdsZS1yZXBlYXQqCiBza2VsZXRvbglhdXRvY21kLnR4dAkvKnNrZWxldG9uKgogc2xvdy1mYXN0LXRlcm1pbmFsCXRlcm0udHh0CS8qc2xvdy1mYXN0LXRlcm1pbmFsKgpAQCAtNzAzNSw2ICs3MTY3LDcgQEAKIHNuaWZmLWNvbW1hbmRzCWlmX3NuaWZmLnR4dAkvKnNuaWZmLWNvbW1hbmRzKgogc25pZmYtY29tcGlsaW5nCWlmX3NuaWZmLnR4dAkvKnNuaWZmLWNvbXBpbGluZyoKIHNuaWZmLWludHJvCWlmX3NuaWZmLnR4dAkvKnNuaWZmLWludHJvKgorc29ja2V0LWludGVyZmFjZQluZXRiZWFucy50eHQJLypzb2NrZXQtaW50ZXJmYWNlKgogc29ydCgpCWV2YWwudHh0CS8qc29ydCgpKgogc29ydGluZwljaGFuZ2UudHh0CS8qc29ydGluZyoKIHNvdW5kZm9sZCgpCWV2YWwudHh0CS8qc291bmRmb2xkKCkqCkBAIC03MTQ3LDM0ICs3MjgwLDM0IEBACiBzcG9uc29yLnR4dAlzcG9uc29yLnR4dAkvKnNwb25zb3IudHh0Kgogc3Bvb24Jb3NfdW5peC50eHQJLypzcG9vbioKIHNwdXAudmltCXN5bnRheC50eHQJLypzcHVwLnZpbSoKLXNxbC1hZGRpbmctZGlhbGVjdHMJc3FsLnR4dAkvKnNxbC1hZGRpbmctZGlhbGVjdHMqCi1zcWwtY29tcGxldGlvbglzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24qCi1zcWwtY29tcGxldGlvbi1jb2x1bW5zCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1jb2x1bW5zKgotc3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbglzcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tY3VzdG9taXphdGlvbioKLXNxbC1jb21wbGV0aW9uLWR5bmFtaWMJc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLWR5bmFtaWMqCi1zcWwtY29tcGxldGlvbi1maWxldHlwZXMJc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLWZpbGV0eXBlcyoKLXNxbC1jb21wbGV0aW9uLW1hcHMJc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLW1hcHMqCi1zcWwtY29tcGxldGlvbi1wcm9jZWR1cmVzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1wcm9jZWR1cmVzKgotc3FsLWNvbXBsZXRpb24tc3RhdGljCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi1zdGF0aWMqCi1zcWwtY29tcGxldGlvbi10YWJsZXMJc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLXRhYmxlcyoKLXNxbC1jb21wbGV0aW9uLXR1dG9yaWFsCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi10dXRvcmlhbCoKLXNxbC1jb21wbGV0aW9uLXZpZXdzCXNxbC50eHQJLypzcWwtY29tcGxldGlvbi12aWV3cyoKLXNxbC1kaWFsZWN0cwlzcWwudHh0CS8qc3FsLWRpYWxlY3RzKgotc3FsLW1hY3JvcwlzcWwudHh0CS8qc3FsLW1hY3JvcyoKLXNxbC1tYXRjaGl0CXNxbC50eHQJLypzcWwtbWF0Y2hpdCoKLXNxbC1uYXZpZ2F0aW9uCXNxbC50eHQJLypzcWwtbmF2aWdhdGlvbioKLXNxbC1vYmplY3QtbW90aW9ucwlzcWwudHh0CS8qc3FsLW9iamVjdC1tb3Rpb25zKgotc3FsLXByZWRlZmluZWQtb2JqZWN0cwlzcWwudHh0CS8qc3FsLXByZWRlZmluZWQtb2JqZWN0cyoKLXNxbC10eXBlLWRlZmF1bHQJc3FsLnR4dAkvKnNxbC10eXBlLWRlZmF1bHQqCi1zcWwtdHlwZXMJc3FsLnR4dAkvKnNxbC10eXBlcyoKLXNxbC50eHQJc3FsLnR4dAkvKnNxbC50eHQqCitzcWwtYWRkaW5nLWRpYWxlY3RzCWZ0X3NxbC50eHQJLypzcWwtYWRkaW5nLWRpYWxlY3RzKgorc3FsLWNvbXBsZXRpb24JZnRfc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uKgorc3FsLWNvbXBsZXRpb24tY29sdW1ucwlmdF9zcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tY29sdW1ucyoKK3NxbC1jb21wbGV0aW9uLWN1c3RvbWl6YXRpb24JZnRfc3FsLnR4dAkvKnNxbC1jb21wbGV0aW9uLWN1c3RvbWl6YXRpb24qCitzcWwtY29tcGxldGlvbi1keW5hbWljCWZ0X3NxbC50eHQJLypzcWwtY29tcGxldGlvbi1keW5hbWljKgorc3FsLWNvbXBsZXRpb24tZmlsZXR5cGVzCWZ0X3NxbC50eHQJLypzcWwtY29tcGxldGlvbi1maWxldHlwZXMqCitzcWwtY29tcGxldGlvbi1tYXBzCWZ0X3NxbC50eHQJLypzcWwtY29tcGxldGlvbi1tYXBzKgorc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcwlmdF9zcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tcHJvY2VkdXJlcyoKK3NxbC1jb21wbGV0aW9uLXN0YXRpYwlmdF9zcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tc3RhdGljKgorc3FsLWNvbXBsZXRpb24tdGFibGVzCWZ0X3NxbC50eHQJLypzcWwtY29tcGxldGlvbi10YWJsZXMqCitzcWwtY29tcGxldGlvbi10dXRvcmlhbAlmdF9zcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tdHV0b3JpYWwqCitzcWwtY29tcGxldGlvbi12aWV3cwlmdF9zcWwudHh0CS8qc3FsLWNvbXBsZXRpb24tdmlld3MqCitzcWwtZGlhbGVjdHMJZnRfc3FsLnR4dAkvKnNxbC1kaWFsZWN0cyoKK3NxbC1tYWNyb3MJZnRfc3FsLnR4dAkvKnNxbC1tYWNyb3MqCitzcWwtbWF0Y2hpdAlmdF9zcWwudHh0CS8qc3FsLW1hdGNoaXQqCitzcWwtbmF2aWdhdGlvbglmdF9zcWwudHh0CS8qc3FsLW5hdmlnYXRpb24qCitzcWwtb2JqZWN0LW1vdGlvbnMJZnRfc3FsLnR4dAkvKnNxbC1vYmplY3QtbW90aW9ucyoKK3NxbC1wcmVkZWZpbmVkLW9iamVjdHMJZnRfc3FsLnR4dAkvKnNxbC1wcmVkZWZpbmVkLW9iamVjdHMqCitzcWwtdHlwZS1kZWZhdWx0CWZ0X3NxbC50eHQJLypzcWwtdHlwZS1kZWZhdWx0Kgorc3FsLXR5cGVzCWZ0X3NxbC50eHQJLypzcWwtdHlwZXMqCiBzcWwudmltCXN5bnRheC50eHQJLypzcWwudmltKgotc3FsYW55d2hlcmUJc3FsLnR4dAkvKnNxbGFueXdoZXJlKgorc3FsYW55d2hlcmUJZnRfc3FsLnR4dAkvKnNxbGFueXdoZXJlKgogc3FsYW55d2hlcmUudmltCXN5bnRheC50eHQJLypzcWxhbnl3aGVyZS52aW0qCiBzcWxpbmZvcm1peC52aW0Jc3ludGF4LnR4dAkvKnNxbGluZm9ybWl4LnZpbSoKLXNxbGoJc3FsLnR4dAkvKnNxbGoqCi1zcWxzZXJ2ZXIJc3FsLnR4dAkvKnNxbHNlcnZlcioKLXNxbHNldHR5cGUJc3FsLnR4dAkvKnNxbHNldHR5cGUqCitzcWxqCWZ0X3NxbC50eHQJLypzcWxqKgorc3Fsc2VydmVyCWZ0X3NxbC50eHQJLypzcWxzZXJ2ZXIqCitzcWxzZXR0eXBlCWZ0X3NxbC50eHQJLypzcWxzZXR0eXBlKgorc3FydCgpCWV2YWwudHh0CS8qc3FydCgpKgogc3NjYW5mCWV2YWwudHh0CS8qc3NjYW5mKgogc3RhbmRhcmQtcGx1Z2luCXVzcl8wNS50eHQJLypzdGFuZGFyZC1wbHVnaW4qCiBzdGFuZGFyZC1wbHVnaW4tbGlzdAloZWxwLnR4dAkvKnN0YW5kYXJkLXBsdWdpbi1saXN0KgpAQCAtNzE5Miw2ICs3MzI1LDggQEAKIHN0YXRpYy10YWcJdGFnc3JjaC50eHQJLypzdGF0aWMtdGFnKgogc3RhdHVzLWxpbmUJd2luZG93cy50eHQJLypzdGF0dXMtbGluZSoKIHN0YXR1c21zZy12YXJpYWJsZQlldmFsLnR4dAkvKnN0YXR1c21zZy12YXJpYWJsZSoKK3N0aWNreS10eXBlLWNoZWNraW5nCWV2YWwudHh0CS8qc3RpY2t5LXR5cGUtY2hlY2tpbmcqCitzdHIyZmxvYXQoKQlldmFsLnR4dAkvKnN0cjJmbG9hdCgpKgogc3RyMm5yKCkJZXZhbC50eHQJLypzdHIybnIoKSoKIHN0cmNhc2VzdHIoKQlldmFsLnR4dAkvKnN0cmNhc2VzdHIoKSoKIHN0cmNocigpCWV2YWwudHh0CS8qc3RyY2hyKCkqCkBAIC03MjI5LDcgKzczNjQsNyBAQAogc3dhcGNvbW1hbmQtdmFyaWFibGUJZXZhbC50eHQJLypzd2FwY29tbWFuZC12YXJpYWJsZSoKIHN3YXBmaWxlLWNoYW5nZWQJdmVyc2lvbjQudHh0CS8qc3dhcGZpbGUtY2hhbmdlZCoKIHN3YXBuYW1lLXZhcmlhYmxlCWV2YWwudHh0CS8qc3dhcG5hbWUtdmFyaWFibGUqCi1zeWJhc2UJc3FsLnR4dAkvKnN5YmFzZSoKK3N5YmFzZQlmdF9zcWwudHh0CS8qc3liYXNlKgogc3luLXN5bmMtZ3JvdXBoZXJlCXN5bnRheC50eHQJLypzeW4tc3luYy1ncm91cGhlcmUqCiBzeW4tc3luYy1ncm91cHRoZXJlCXN5bnRheC50eHQJLypzeW4tc3luYy1ncm91cHRoZXJlKgogc3luLXN5bmMtbGluZWNvbnQJc3ludGF4LnR4dAkvKnN5bi1zeW5jLWxpbmVjb250KgpAQCAtNzI0NCw2ICs3Mzc5LDcgQEAKIHN5bmxvYWQtNAlzeW50YXgudHh0CS8qc3lubG9hZC00Kgogc3lubG9hZC01CXN5bnRheC50eHQJLypzeW5sb2FkLTUqCiBzeW5sb2FkLTYJc3ludGF4LnR4dAkvKnN5bmxvYWQtNioKK3N5bnN0YWNrKCkJZXZhbC50eHQJLypzeW5zdGFjaygpKgogc3ludGF4CXN5bnRheC50eHQJLypzeW50YXgqCiBzeW50YXgtaGlnaGxpZ2h0aW5nCXN5bnRheC50eHQJLypzeW50YXgtaGlnaGxpZ2h0aW5nKgogc3ludGF4LWxvYWRpbmcJc3ludGF4LnR4dAkvKnN5bnRheC1sb2FkaW5nKgpAQCAtNzI1MSw2ICs3Mzg3LDcgQEAKIHN5bnRheC50eHQJc3ludGF4LnR4dAkvKnN5bnRheC50eHQqCiBzeW50YXhfY21kCXN5bnRheC50eHQJLypzeW50YXhfY21kKgogc3lzLWZpbGUtbGlzdAloZWxwLnR4dAkvKnN5cy1maWxlLWxpc3QqCitzeXNtb3VzZQl0ZXJtLnR4dAkvKnN5c21vdXNlKgogc3lzdGVtKCkJZXZhbC50eHQJLypzeXN0ZW0oKSoKIHN5c3RlbS12aW1yYwlzdGFydGluZy50eHQJLypzeXN0ZW0tdmltcmMqCiBzfgljaGFuZ2UudHh0CS8qc34qCkBAIC03NTIzLDYgKzc2NjAsNyBAQAogdGV4LWZvbGRpbmcJc3ludGF4LnR4dAkvKnRleC1mb2xkaW5nKgogdGV4LW1hdGgJc3ludGF4LnR4dAkvKnRleC1tYXRoKgogdGV4LW1vcmVjb21tYW5kcwlzeW50YXgudHh0CS8qdGV4LW1vcmVjb21tYW5kcyoKK3RleC1ub3NwZWxsCXN5bnRheC50eHQJLyp0ZXgtbm9zcGVsbCoKIHRleC1wYWNrYWdlCXN5bnRheC50eHQJLyp0ZXgtcGFja2FnZSoKIHRleC1ydW5vbglzeW50YXgudHh0CS8qdGV4LXJ1bm9uKgogdGV4LXNsb3cJc3ludGF4LnR4dAkvKnRleC1zbG93KgpAQCAtNzU1MSw2ICs3Njg5LDcgQEAKIHRvdXBwZXIoKQlldmFsLnR4dAkvKnRvdXBwZXIoKSoKIHRyKCkJZXZhbC50eHQJLyp0cigpKgogdHJvamFuLWhvcnNlCXN0YXJ0aW5nLnR4dAkvKnRyb2phbi1ob3JzZSoKK3RydW5jKCkJZXZhbC50eHQJLyp0cnVuYygpKgogdHJ5LWNvbmRpdGlvbmFscwlldmFsLnR4dAkvKnRyeS1jb25kaXRpb25hbHMqCiB0cnktZWNob2VycglldmFsLnR4dAkvKnRyeS1lY2hvZXJyKgogdHJ5LWZpbmFsbHkJZXZhbC50eHQJLyp0cnktZmluYWxseSoKQEAgLTc2NjgsMTEgKzc4MDcsMTMgQEAKIHY6bW91c2VfY29sCWV2YWwudHh0CS8qdjptb3VzZV9jb2wqCiB2Om1vdXNlX2xudW0JZXZhbC50eHQJLyp2Om1vdXNlX2xudW0qCiB2Om1vdXNlX3dpbglldmFsLnR4dAkvKnY6bW91c2Vfd2luKgordjpvcGVyYXRvcglldmFsLnR4dAkvKnY6b3BlcmF0b3IqCiB2OnByZXZjb3VudAlldmFsLnR4dAkvKnY6cHJldmNvdW50Kgogdjpwcm9maWxpbmcJZXZhbC50eHQJLyp2OnByb2ZpbGluZyoKIHY6cHJvZ25hbWUJZXZhbC50eHQJLyp2OnByb2duYW1lKgogdjpyZWdpc3RlcglldmFsLnR4dAkvKnY6cmVnaXN0ZXIqCiB2OnNjcm9sbHN0YXJ0CWV2YWwudHh0CS8qdjpzY3JvbGxzdGFydCoKK3Y6c2VhcmNoZm9yd2FyZAlldmFsLnR4dAkvKnY6c2VhcmNoZm9yd2FyZCoKIHY6c2VydmVybmFtZQlldmFsLnR4dAkvKnY6c2VydmVybmFtZSoKIHY6c2hlbGxfZXJyb3IJZXZhbC50eHQJLyp2OnNoZWxsX2Vycm9yKgogdjpzdGF0dXNtc2cJZXZhbC50eHQJLyp2OnN0YXR1c21zZyoKQEAgLTc4MTIsNiArNzk1Myw3IEBACiB2ZXJzaW9uLTYuMwl2ZXJzaW9uNi50eHQJLyp2ZXJzaW9uLTYuMyoKIHZlcnNpb24tNi40CXZlcnNpb242LnR4dAkvKnZlcnNpb24tNi40KgogdmVyc2lvbi03LjEJdmVyc2lvbjcudHh0CS8qdmVyc2lvbi03LjEqCit2ZXJzaW9uLTcuMgl2ZXJzaW9uNy50eHQJLyp2ZXJzaW9uLTcuMioKIHZlcnNpb24tdmFyaWFibGUJZXZhbC50eHQJLyp2ZXJzaW9uLXZhcmlhYmxlKgogdmVyc2lvbjQudHh0CXZlcnNpb240LnR4dAkvKnZlcnNpb240LnR4dCoKIHZlcnNpb241LnR4dAl2ZXJzaW9uNS50eHQJLyp2ZXJzaW9uNS50eHQqCkBAIC03ODQzLDYgKzc5ODUsNyBAQAogdmltYmFsbC1jb250ZW50cwlwaV92aW1iYWxsLnR4dAkvKnZpbWJhbGwtY29udGVudHMqCiB2aW1iYWxsLWV4dHJhY3QJcGlfdmltYmFsbC50eHQJLyp2aW1iYWxsLWV4dHJhY3QqCiB2aW1iYWxsLWhpc3RvcnkJcGlfdmltYmFsbC50eHQJLyp2aW1iYWxsLWhpc3RvcnkqCit2aW1iYWxsLWludHJvCXBpX3ZpbWJhbGwudHh0CS8qdmltYmFsbC1pbnRybyoKIHZpbWJhbGwtbWFudWFsCXBpX3ZpbWJhbGwudHh0CS8qdmltYmFsbC1tYW51YWwqCiB2aW1kZXYJaW50cm8udHh0CS8qdmltZGV2KgogdmltZGlmZglkaWZmLnR4dAkvKnZpbWRpZmYqCkBAIC04MDc0LDcgKzgyMTcsNiBAQAogemlwLWhpc3RvcnkJcGlfemlwLnR4dAkvKnppcC1oaXN0b3J5KgogemlwLW1hbnVhbAlwaV96aXAudHh0CS8qemlwLW1hbnVhbCoKIHppcC11c2FnZQlwaV96aXAudHh0CS8qemlwLXVzYWdlKgotemlwX3NocQlwaV96aXAudHh0CS8qemlwX3NocSoKIHpqCWZvbGQudHh0CS8qemoqCiB6awlmb2xkLnR4dAkvKnprKgogemwJc2Nyb2xsLnR4dAkvKnpsKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGVybS50eHQgYi9ydW50aW1lL2RvYy90ZXJtLnR4dAppbmRleCBlNTYyZDRkLi41NWE5YWUxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90ZXJtLnR4dAorKysgYi9ydW50aW1lL2RvYy90ZXJtLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0ZXJtLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDcgRmViIDI4CisqdGVybS50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwOCBKdW4gMjEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEzOSw3ICsxMzksNyBAQAogCTpzZXQgbm90aW1lb3V0CQkiIGRvbid0IHRpbWVvdXQgb24gbWFwcGluZ3MKIAk6c2V0IHR0aW1lb3V0CQkiIGRvIHRpbWVvdXQgb24gdGVybWluYWwga2V5IGNvZGVzCiAJOnNldCB0aW1lb3V0bGVuPTEwMAkiIHRpbWVvdXQgYWZ0ZXIgMTAwIG1zZWMKLVRoaXMgcmVxdWlyZXMgdGhlIGtleS1jb2RlcyB0byBiZSBzZW50IHdpdGhpbiAxMDBtc2VjIGluIG9yZGVyIHRvIHJlY29nbml6ZQorVGhpcyByZXF1aXJlcyB0aGUga2V5LWNvZGVzIHRvIGJlIHNlbnQgd2l0aGluIDEwMCBtc2VjIGluIG9yZGVyIHRvIHJlY29nbml6ZQogdGhlbSBhcyBhIGN1cnNvciBrZXkuICBXaGVuIHlvdSB0eXBlIHlvdSBub3JtYWxseSBhcmUgbm90IHRoYXQgZmFzdCwgc28gdGhleQogYXJlIHJlY29nbml6ZWQgYXMgaW5kaXZpZHVhbCB0eXBlZCBjb21tYW5kcywgZXZlbiB0aG91Z2ggVmltIHJlY2VpdmVzIHRoZSBzYW1lCiBzZXF1ZW5jZSBvZiBieXRlcy4KQEAgLTU4Myw4ICs1ODMsOSBAQAogCTpzZXQgbW91c2U9YQogT3RoZXJ3aXNlIFZpbSB3b24ndCByZWNvZ25pemUgdGhlIG1vdXNlIGluIGFsbCBtb2RlcyAoU2VlICdtb3VzZScpLgogCi1DdXJyZW50bHkgdGhlIG1vdXNlIGlzIHN1cHBvcnRlZCBmb3IgVW5peCBpbiBhbiB4dGVybSB3aW5kb3csIGluIGEgTGludXgKLWNvbnNvbGUgKHdpdGggR1BNIHxncG0tbW91c2V8KSwgZm9yIE1TLURPUyBhbmQgaW4gYSBXaW5kb3dzIGNvbnNvbGUuCitDdXJyZW50bHkgdGhlIG1vdXNlIGlzIHN1cHBvcnRlZCBmb3IgVW5peCBpbiBhbiB4dGVybSB3aW5kb3csIGluIGEgKkJTRAorY29uc29sZSB3aXRoIHxzeXNtb3VzZXwsIGluIGEgTGludXggY29uc29sZSAod2l0aCBHUE0gfGdwbS1tb3VzZXwpLCBmb3IKK01TLURPUyBhbmQgaW4gYSBXaW5kb3dzIGNvbnNvbGUuCiBNb3VzZSBjbGlja3MgY2FuIGJlIHVzZWQgdG8gcG9zaXRpb24gdGhlIGN1cnNvciwgc2VsZWN0IGFuIGFyZWEgYW5kIHBhc3RlLgogCiBUaGVzZSBjaGFyYWN0ZXJzIGluIHRoZSAnbW91c2UnIG9wdGlvbiB0ZWxsIGluIHdoaWNoIHNpdHVhdGlvbnMgdGhlIG1vdXNlIHdpbGwKQEAgLTc4OCw2ICs3ODksMTAgQEAKIHRlbXBvcmFyaWx5LiAgV2hlbiBWaXN1YWwgb3IgU2VsZWN0IG1vZGUgZW5kcywgaXQgcmV0dXJucyB0byBJbnNlcnQgbW9kZS4KIFRoaXMgaXMgbGlrZSB1c2luZyBDVFJMLU8gaW4gSW5zZXJ0IG1vZGUuICBTZWxlY3QgbW9kZSBpcyB1c2VkIHdoZW4gdGhlCiAnc2VsZWN0bW9kZScgb3B0aW9uIGNvbnRhaW5zICJtb3VzZSIuCisJCQkJCQkJKnN5c21vdXNlKgorVGhlIHN5c21vdXNlIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gdGhlIHwrbW91c2Vfc3lzbW91c2V8IGZlYXR1cmUgd2FzIGVuYWJsZWQKK2F0IGNvbXBpbGUgdGltZS4gIFRoZSBzeXNtb3VzZSBkcml2ZXIgKCpCU0QgY29uc29sZSkgZG9lcyBub3Qgc3VwcG9ydCBrZXlib2FyZAorbW9kaWZpZXJzLgogCiAJCQkJCQkJKmRyYWctc3RhdHVzLWxpbmUqCiBXaGVuIHdvcmtpbmcgd2l0aCBzZXZlcmFsIHdpbmRvd3MsIHRoZSBzaXplIG9mIHRoZSB3aW5kb3dzIGNhbiBiZSBjaGFuZ2VkIGJ5CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90aXBzLnR4dCBiL3J1bnRpbWUvZG9jL3RpcHMudHh0CmluZGV4IDBhNGQ4NDUuLjBiZGNmYTAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RpcHMudHh0CisrKyBiL3J1bnRpbWUvZG9jL3RpcHMudHh0CkBAIC0xLDQgKzEsNCBAQAotKnRpcHMudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBKdWwgMjQKKyp0aXBzLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEp1bCAyNAogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdW5kby50eHQgYi9ydW50aW1lL2RvYy91bmRvLnR4dAppbmRleCBmOTk2ZDBiLi4zM2Q0ZTMxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91bmRvLnR4dAorKysgYi9ydW50aW1lL2RvYy91bmRvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1bmRvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDMwCisqdW5kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8xMC50eHQgYi9ydW50aW1lL2RvYy91c3JfMTAudHh0CmluZGV4IDI4NzI2ZmEuLjE2OGIwODkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8xMC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzEwLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMTAudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTm92IDA1CisqdXNyXzEwLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBOb3YgMDUKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQgYi9ydW50aW1lL2RvYy91c3JfMjEudHh0CmluZGV4IGI2OGFiNWUuLjNlYWJiNjggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzIxLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjEudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDcgTWF5IDAxCisqdXNyXzIxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNyBNYXkgMDEKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQgYi9ydW50aW1lL2RvYy91c3JfMjQudHh0CmluZGV4IDRiNjM4ZmMuLjM1OTExYmQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yNC50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI0LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjQudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgSnVsIDIzCisqdXNyXzI0LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBKdWwgMjMKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNS50eHQgYi9ydW50aW1lL2RvYy91c3JfMjUudHh0CmluZGV4IGQ2ZDU4MTUuLjYzMzc4NzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yNS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI1LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjUudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDcgTWF5IDExCisqdXNyXzI1LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNyBNYXkgMTEKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yNi50eHQgYi9ydW50aW1lL2RvYy91c3JfMjYudHh0CmluZGV4IGJhZWViMzcuLjBjOWYyYzggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yNi50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI2LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjYudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzI2LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMjQKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yOS50eHQgYi9ydW50aW1lL2RvYy91c3JfMjkudHh0CmluZGV4IDQwZWEzM2MuLmEzMTQyNTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yOS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzI5LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjkudHh0KglGb3IgVmltIHZlcnNpb24gNy4xLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDI0CisqdXNyXzI5LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMmEuICBMYXN0IGNoYW5nZTogMjAwNyBOb3YgMTAKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTM4NCw3ICszODQsNyBAQAogCiBXaGVuIHdyaXRpbmcgQysrIG9yIEphdmEsIHRoZSBvdXRlciB7fSBibG9jayBpcyBmb3IgdGhlIGNsYXNzLiAgVGhlIG5leHQgbGV2ZWwKIG9mIHt9IGlzIGZvciBhIG1ldGhvZC4gIFdoZW4gc29tZXdoZXJlIGluc2lkZSBhIGNsYXNzIHVzZSAiW20iIHRvIGZpbmQgdGhlCi1wcmV2aW91cyBzdGFydCBvZiBhIG1ldGhvZC4gICJdbSIgZmluZHMgdGhlIG5leHQgZW5kIG9mIGEgbWV0aG9kLgorcHJldmlvdXMgc3RhcnQgb2YgYSBtZXRob2QuICAiXW0iIGZpbmRzIHRoZSBuZXh0IHN0YXJ0IG9mIGEgbWV0aG9kLgogCiBBZGRpdGlvbmFsbHksICJbXSIgbW92ZXMgYmFja3dhcmQgdG8gdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGFuZCAiXV0iIG1vdmVzCiBmb3J3YXJkIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBmdW5jdGlvbi4gIFRoZSBlbmQgb2YgYSBmdW5jdGlvbiBpcyBkZWZpbmVkCkBAIC00OTcsNyArNDk3LDcgQEAKIAogCTpzZXQgcGF0aCs9L3Vzci9sb2NhbC9YMTEKIAotV2hlbiB0aGVyZSBhcmUgbWFueSBzdWJkaXJlY3RvcmllcywgeW91IGFuIHVzZSB0aGUgIioiIHdpbGRjYXJkLiAgRXhhbXBsZTogPgorV2hlbiB0aGVyZSBhcmUgbWFueSBzdWJkaXJlY3RvcmllcywgeW91IGNhbiB1c2UgdGhlICIqIiB3aWxkY2FyZC4gIEV4YW1wbGU6ID4KIAogCTpzZXQgcGF0aCs9L3Vzci8qL2luY2x1ZGUKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8zMS50eHQKaW5kZXggMTA3OTRkNS4uOTQxYWI2OCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzMxLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMzEudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8zMS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNyBNYXkgMDgKKyp1c3JfMzEudHh0KglGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA3IE1heSAwOAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzMyLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl8zMi50eHQKaW5kZXggNTI4ZTdiNy4uZWQ5NWEwZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzMyLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfMzIudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl8zMi50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjEuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMzAKKyp1c3JfMzIudHh0KglGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAzMAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyX3RvYy50eHQgYi9ydW50aW1lL2RvYy91c3JfdG9jLnR4dAppbmRleCAyOWU4NTZiLi5kNjQ5YWNhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfdG9jLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfdG9jLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfdG9jLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAorKnVzcl90b2MudHh0KglGb3IgVmltIHZlcnNpb24gNy4yYS4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAyNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmVyc2lvbjYudHh0IGIvcnVudGltZS9kb2MvdmVyc2lvbjYudHh0CmluZGV4IDBhYWZhZTcuLjFmMzY5OWMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZlcnNpb242LnR4dAorKysgYi9ydW50aW1lL2RvYy92ZXJzaW9uNi50eHQKQEAgLTEsNCArMSw0IEBACi0qdmVyc2lvbjYudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMS4gIExhc3QgY2hhbmdlOiAyMDA3IE1heSAxMQorKnZlcnNpb242LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjJhLiAgTGFzdCBjaGFuZ2U6IDIwMDcgTWF5IDExCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92aW10dXRvci5tYW4gYi9ydW50aW1lL2RvYy92aW10dXRvci5tYW4KaW5kZXggOGJjNGE4MC4uNjM5OWQyMyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmltdHV0b3IubWFuCisrKyBiL3J1bnRpbWUvZG9jL3ZpbXR1dG9yLm1hbgpAQCAtNiw3ICs2LDcgQEAKICAgICAgICB2aW10dXRvciAtIHRoZSBWaW0gdHV0b3IKIAogU1lOT1BTSVMKLSAgICAgICB2aW10dXRvciBbbGFuZ3VhZ2VdCisgICAgICAgdmltdHV0b3IgWy1nXSBbbGFuZ3VhZ2VdCiAKIERFU0NSSVBUSU9OCiAgICAgICAgVmltdHV0b3Igc3RhcnRzIHRoZSBWaW0gdHV0b3IuICBJdCBjb3BpZXMgdGhlIHR1dG9yIGZpbGUgZmlyc3QsIHNvIHRoYXQKQEAgLTE1LDYgKzE1LDEwIEBACiAgICAgICAgVGhlIFZpbXR1dG9yIGlzIHVzZWZ1bCBmb3IgcGVvcGxlIHRoYXQgd2FudCB0byBsZWFybiAgdGhlaXIgIGZpcnN0ICBWaW0KICAgICAgICBjb21tYW5kcy4KIAorICAgICAgIFRoZSAgb3B0aW9uYWwgYXJndW1lbnQgLWcgc3RhcnRzIHZpbXR1dG9yIHdpdGggZ3ZpbSByYXRoZXIgdGhhbiB2aW0sIGlmCisgICAgICAgdGhlIEdVSSB2ZXJzaW9uIG9mIHZpbSBpcyBhdmFpbGFibGUsIG9yIGZhbGxzIGJhY2sgdG8gVmltICBpZiAgZ3ZpbSAgaXMKKyAgICAgICBub3QgZm91bmQuCisKICAgICAgICBUaGUgIG9wdGlvbmFsIFtsYW5ndWFnZV0gYXJndW1lbnQgaXMgdGhlIHR3by1sZXR0ZXIgbmFtZSBvZiBhIGxhbmd1YWdlLAogICAgICAgIGxpa2UgIml0IiBvciAiZXMiLiAgSWYgdGhlIFtsYW5ndWFnZV0gYXJndW1lbnQgaXMgbWlzc2luZywgdGhlIGxhbmd1YWdlCiAgICAgICAgb2YgIHRoZSAgY3VycmVudCAgbG9jYWxlICB3aWxsIGJlIHVzZWQuICBJZiBhIHR1dG9yIGluIHRoaXMgbGFuZ3VhZ2UgaXMK