ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCA0YjBlYTA1Li5jYTE5MGVhIDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0xOSw2ICsxOSwxMSBAQAogCiAgICsrIE5ldyBmZWF0dXJlczoKIAorICAyMDA4LTAxLTE0IEZy6WTpcmljIEJlcm5vbgorICAqIHJhd2FwaS50eHQsIGFwaV9tc2cuYywgdGNwLmMsIHRjcF9pbi5jLCB0Y3AuaDogY2hhbmdlcyBmb3IgdGFzayAjNzY3NSAiRW5hYmxlCisgICAgdG8gcmVmdXNlIGRhdGEgb24gYSBUQ1BfRVZFTlRfUkVDViBjYWxsIi4gSW1wb3J0YW50LCBiZWhhdmlvciBjaGFuZ2VzIGZvciB0aGUKKyAgICB0Y3BfcmVjdiBjYWxsYmFjayAoc2VlIHJhd2FwaS50eHQpLgorCiAgIDIwMDgtMDEtMTQgRnLpZOlyaWMgQmVybm9uLCBNYXJjIENoYWxhbmQKICAgKiBpcC5jOiBJbnRlZ3JhdGUgcGF0Y2ggIzYzNjkiIGlwX2lucHV0IDogY2hlY2tpbmcgYmVmb3JlIHJlYWxsb2MiLgogICAKZGlmZiAtLWdpdCBhL2RvYy9yYXdhcGkudHh0IGIvZG9jL3Jhd2FwaS50eHQKaW5kZXggOTNjMGU4Ni4uODIxMzQ0NSAxMDA2NDQKLS0tIGEvZG9jL3Jhd2FwaS50eHQKKysrIGIvZG9jL3Jhd2FwaS50eHQKQEAgLTE4OCw3ICsxODgsMTAgQEAKIAogICBTZXRzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gbmV3IGRhdGEKICAgYXJyaXZlcy4gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIGEgTlVMTCBwYnVmIHRvCi0gIGluZGljYXRlIHRoYXQgdGhlIHJlbW90ZSBob3N0IGhhcyBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCisgIGluZGljYXRlIHRoYXQgdGhlIHJlbW90ZSBob3N0IGhhcyBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uIElmCisgIHRoZXJlIGFyZSBubyBlcnJvcnMgYW5kIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyB0byByZXR1cm4KKyAgRVJSX09LLCB0aGVuIGl0IG11c3QgZnJlZSB0aGUgcGJ1Zi4gT3RoZXJ3aXNlLCBpdCBtdXN0IG5vdAorICBmcmVlIHRoZSBwYnVmIHNvIHRoYXQgbHdJUCBjb3JlIGNvZGUgY2FuIHN0b3JlIGl0LgogCiAtIHZvaWQgdGNwX3JlY3ZlZChzdHJ1Y3QgdGNwX3BjYiAqcGNiLCB1MTZfdCBsZW4pCiAKZGlmZiAtLWdpdCBhL3NyYy9hcGkvYXBpX21zZy5jIGIvc3JjL2FwaS9hcGlfbXNnLmMKaW5kZXggY2NiNGMwZC4uMzQ2NGQwNyAxMDA2NDQKLS0tIGEvc3JjL2FwaS9hcGlfbXNnLmMKKysrIGIvc3JjL2FwaS9hcGlfbXNnLmMKQEAgLTE2NSw3ICsxNjUsNyBAQAogI2lmIExXSVBfVENQCiAvKioKICAqIFJlY2VpdmUgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIFRDUCBuZXRjb25ucy4KLSAqIFBvc3RzIHRoZSBwYWNrZXQgdG8gY29ubi0+cmVjdm1ib3ggb3IgZGVsZXRlcyBpdCBvbiBtZW1vcnkgZXJyb3IuCisgKiBQb3N0cyB0aGUgcGFja2V0IHRvIGNvbm4tPnJlY3ZtYm94LCBidXQgZG9lc24ndCBkZWxldGUgaXQgb24gZXJyb3JzLgogICoKICAqIEBzZWUgdGNwLmggKHN0cnVjdCB0Y3BfcGNiLnJlY3YpIGZvciBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdmFsdWUKICAqLwpAQCAtMTgyLDcgKzE4Miw2IEBACiAgIExXSVBfQVNTRVJUKCJyZWN2X3RjcDogcmVjdiBmb3Igd3JvbmcgcGNiISIsIGNvbm4tPnBjYi50Y3AgPT0gcGNiKTsKIAogICBpZiAoKGNvbm4gPT0gTlVMTCkgfHwgKGNvbm4tPnJlY3ZtYm94ID09IFNZU19NQk9YX05VTEwpKSB7Ci0gICAgcGJ1Zl9mcmVlKHApOwogICAgIHJldHVybiBFUlJfVkFMOwogICB9CiAKQEAgLTE5NSw3ICsxOTQsOSBAQAogICB9CiAgIC8qIFJlZ2lzdGVyIGV2ZW50IHdpdGggY2FsbGJhY2sgKi8KICAgQVBJX0VWRU5UKGNvbm4sIE5FVENPTk5fRVZUX1JDVlBMVVMsIGxlbik7Ci0gIHN5c19tYm94X3Bvc3QoY29ubi0+cmVjdm1ib3gsIHApOworICBpZiAoc3lzX21ib3hfdHJ5cG9zdChjb25uLT5yZWN2bWJveCwgcCkgIT0gRVJSX09LKSB7CisgICAgcmV0dXJuIEVSUl9NRU07CisgIH0KIAogICByZXR1cm4gRVJSX09LOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdGNwLmMgYi9zcmMvY29yZS90Y3AuYwppbmRleCAyNGVhNWU3Li41MzFiMjZkIDEwMDY0NAotLS0gYS9zcmMvY29yZS90Y3AuYworKysgYi9zcmMvY29yZS90Y3AuYwpAQCAtNzcwLDcgKzc3MCw4IEBACiB9CiAKIC8qKgotICogSXMgY2FsbGVkIGV2ZXJ5IFRDUF9GQVNUX0lOVEVSVkFMICgyNTAgbXMpIGFuZCBzZW5kcyBkZWxheWVkIEFDS3MuCisgKiBJcyBjYWxsZWQgZXZlcnkgVENQX0ZBU1RfSU5URVJWQUwgKDI1MCBtcykgYW5kIHByb2Nlc3MgZGF0YSBwcmV2aW91c2x5CisgKiAicmVmdXNlZCIgYnkgdXBwZXIgbGF5ZXIgKGFwcGxpY2F0aW9uKSBhbmQgc2VuZHMgZGVsYXllZCBBQ0tzLgogICoKICAqIEF1dG9tYXRpY2FsbHkgY2FsbGVkIGZyb20gdGNwX3RtcigpLgogICovCkBAIC03NzksOCArNzgwLDE5IEBACiB7CiAgIHN0cnVjdCB0Y3BfcGNiICpwY2I7CiAKLSAgLyogc2VuZCBkZWxheWVkIEFDS3MgKi8gIAogICBmb3IocGNiID0gdGNwX2FjdGl2ZV9wY2JzOyBwY2IgIT0gTlVMTDsgcGNiID0gcGNiLT5uZXh0KSB7CisgICAgLyogSWYgdGhlcmUgaXMgZGF0YSB3aGljaCB3YXMgcHJldmlvdXNseSAicmVmdXNlZCIgYnkgdXBwZXIgbGF5ZXIgKi8KKyAgICBpZiAocGNiLT5yZWZ1c2VkX2RhdGEgIT0gTlVMTCkgeworICAgICAgLyogTm90aWZ5IGFnYWluIGFwcGxpY2F0aW9uIHdpdGggZGF0YSBwcmV2aW91c2x5IHJlY2VpdmVkLiAqLworICAgICAgZXJyX3QgZXJyOworICAgICAgTFdJUF9ERUJVR0YoVENQX0lOUFVUX0RFQlVHLCAoInRjcF9mYXN0dG1yOiBub3RpZnkga2VwdCBwYWNrZXRcbiIpKTsKKyAgICAgIFRDUF9FVkVOVF9SRUNWKHBjYiwgcGNiLT5yZWZ1c2VkX2RhdGEsIEVSUl9PSywgZXJyKTsKKyAgICAgIGlmIChlcnIgPT0gRVJSX09LKSB7CisgICAgICAgIHBjYi0+cmVmdXNlZF9kYXRhID0gTlVMTDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBzZW5kIGRlbGF5ZWQgQUNLcyAqLyAgCiAgICAgaWYgKHBjYi0+ZmxhZ3MgJiBURl9BQ0tfREVMQVkpIHsKICAgICAgIExXSVBfREVCVUdGKFRDUF9ERUJVRywgKCJ0Y3BfZmFzdHRtcjogZGVsYXllZCBBQ0tcbiIpKTsKICAgICAgIHRjcF9hY2tfbm93KHBjYik7CkBAIC0xMTM1LDE1ICsxMTQ3LDIwIEBACiAgICAgIHBjYi0+c3RhdGUgIT0gTElTVEVOKSB7CiAKICAgICBMV0lQX0RFQlVHRihUQ1BfREVCVUcsICgidGNwX3BjYl9wdXJnZVxuIikpOwotICAgIAotICAgIGlmIChwY2ItPnVuc2VudCAhPSBOVUxMKSB7ICAgIAorCisgICAgaWYgKHBjYi0+cmVmdXNlZF9kYXRhICE9IE5VTEwpIHsKKyAgICAgIExXSVBfREVCVUdGKFRDUF9ERUJVRywgKCJ0Y3BfcGNiX3B1cmdlOiBkYXRhIGxlZnQgb24gLT5yZWZ1c2VkX2RhdGFcbiIpKTsKKyAgICAgIHBidWZfZnJlZShwY2ItPnJlZnVzZWRfZGF0YSk7CisgICAgICBwY2ItPnJlZnVzZWRfZGF0YSA9IE5VTEw7CisgICAgfQorICAgIGlmIChwY2ItPnVuc2VudCAhPSBOVUxMKSB7CiAgICAgICBMV0lQX0RFQlVHRihUQ1BfREVCVUcsICgidGNwX3BjYl9wdXJnZTogbm90IGFsbCBkYXRhIHNlbnRcbiIpKTsKICAgICB9Ci0gICAgaWYgKHBjYi0+dW5hY2tlZCAhPSBOVUxMKSB7ICAgIAorICAgIGlmIChwY2ItPnVuYWNrZWQgIT0gTlVMTCkgewogICAgICAgTFdJUF9ERUJVR0YoVENQX0RFQlVHLCAoInRjcF9wY2JfcHVyZ2U6IGRhdGEgbGVmdCBvbiAtPnVuYWNrZWRcbiIpKTsKICAgICB9CiAjaWYgVENQX1FVRVVFX09PU0VRIC8qIExXICovCi0gICAgaWYgKHBjYi0+b29zZXEgIT0gTlVMTCkgeyAgICAKKyAgICBpZiAocGNiLT5vb3NlcSAhPSBOVUxMKSB7CiAgICAgICBMV0lQX0RFQlVHRihUQ1BfREVCVUcsICgidGNwX3BjYl9wdXJnZTogZGF0YSBsZWZ0IG9uIC0+b29zZXFcbiIpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3RjcF9pbi5jIGIvc3JjL2NvcmUvdGNwX2luLmMKaW5kZXggNGI3YjkxOS4uZjM5NDMxMiAxMDA2NDQKLS0tIGEvc3JjL2NvcmUvdGNwX2luLmMKKysrIGIvc3JjL2NvcmUvdGNwX2luLmMKQEAgLTI3Miw2ICsyNzIsMjMgQEAKICAgICByZWN2X2RhdGEgPSBOVUxMOwogICAgIHJlY3ZfZmxhZ3MgPSAwOwogCisgICAgLyogSWYgdGhlcmUgaXMgZGF0YSB3aGljaCB3YXMgcHJldmlvdXNseSAicmVmdXNlZCIgYnkgdXBwZXIgbGF5ZXIgKi8KKyAgICBpZiAocGNiLT5yZWZ1c2VkX2RhdGEgIT0gTlVMTCkgeworICAgICAgLyogTm90aWZ5IGFnYWluIGFwcGxpY2F0aW9uIHdpdGggZGF0YSBwcmV2aW91c2x5IHJlY2VpdmVkLiAqLworICAgICAgTFdJUF9ERUJVR0YoVENQX0lOUFVUX0RFQlVHLCAoInRjcF9pbnB1dDogbm90aWZ5IGtlcHQgcGFja2V0XG4iKSk7CisgICAgICBUQ1BfRVZFTlRfUkVDVihwY2IsIHBjYi0+cmVmdXNlZF9kYXRhLCBFUlJfT0ssIGVycik7CisgICAgICBpZiAoZXJyID09IEVSUl9PSykgeworICAgICAgICBwY2ItPnJlZnVzZWRfZGF0YSA9IE5VTEw7CisgICAgICB9IGVsc2UgeworICAgICAgICAvKiBkcm9wIGluY29taW5nIHBhY2tldHMsIGJlY2F1c2UgcGNiIGlzICJmdWxsIiAqLworICAgICAgICBMV0lQX0RFQlVHRihUQ1BfSU5QVVRfREVCVUcsICgidGNwX2lucHV0OiBkcm9wIGluY29taW5nIHBhY2tldHMsIGJlY2F1c2UgcGNiIGlzIFwiZnVsbFwiXG4iKSk7CisgICAgICAgIFRDUF9TVEFUU19JTkModGNwLmRyb3ApOworICAgICAgICBzbm1wX2luY190Y3BpbmVycnMoKTsKKyAgICAgICAgcGJ1Zl9mcmVlKHApOworICAgICAgICByZXR1cm47CisgICAgICB9CisgICAgfQorCiAgICAgdGNwX2lucHV0X3BjYiA9IHBjYjsKICAgICBlcnIgPSB0Y3BfcHJvY2VzcyhwY2IpOwogICAgIHRjcF9pbnB1dF9wY2IgPSBOVUxMOwpAQCAtMzA0LDE1ICszMjEsMjMgQEAKICAgICAgICAgICBpZihmbGFncyAmIFRDUF9QU0gpIHsKICAgICAgICAgICAgIHJlY3ZfZGF0YS0+ZmxhZ3MgfD0gUEJVRl9GTEFHX1BVU0g7CiAgICAgICAgICAgfQorCiAgICAgICAgICAgLyogTm90aWZ5IGFwcGxpY2F0aW9uIHRoYXQgZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4gKi8KICAgICAgICAgICBUQ1BfRVZFTlRfUkVDVihwY2IsIHJlY3ZfZGF0YSwgRVJSX09LLCBlcnIpOworCisgICAgICAgICAgLyogSWYgdGhlIHVwcGVyIGxheWVyIGNhbid0IHJlY2VpdmUgdGhpcyBkYXRhLCBzdG9yZSBpdCAqLworICAgICAgICAgIGlmIChlcnIgIT0gRVJSX09LKSB7CisgICAgICAgICAgICBwY2ItPnJlZnVzZWRfZGF0YSA9IHJlY3ZfZGF0YTsKKyAgICAgICAgICAgIExXSVBfREVCVUdGKFRDUF9JTlBVVF9ERUJVRywgKCJ0Y3BfaW5wdXQ6IGtlZXAgaW5jb21pbmcgcGFja2V0LCBiZWNhdXNlIHBjYiBpcyBcImZ1bGxcIlxuIikpOworICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgCisKICAgICAgICAgLyogSWYgYSBGSU4gc2VnbWVudCB3YXMgcmVjZWl2ZWQsIHdlIGNhbGwgdGhlIGNhbGxiYWNrCiAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYSBOVUxMIGJ1ZmZlciB0byBpbmRpY2F0ZSBFT0YuICovCiAgICAgICAgIGlmIChyZWN2X2ZsYWdzICYgVEZfR09UX0ZJTikgewogICAgICAgICAgIFRDUF9FVkVOVF9SRUNWKHBjYiwgTlVMTCwgRVJSX09LLCBlcnIpOwogICAgICAgICB9CisKICAgICAgICAgLyogSWYgdGhlcmUgd2VyZSBubyBlcnJvcnMsIHdlIHRyeSB0byBzZW5kIHNvbWV0aGluZyBvdXQuICovCiAgICAgICAgIGlmIChlcnIgPT0gRVJSX09LKSB7CiAgICAgICAgICAgdGNwX291dHB1dChwY2IpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbHdpcC90Y3AuaCBiL3NyYy9pbmNsdWRlL2x3aXAvdGNwLmgKaW5kZXggYWE5NDllNC4uM2ZiMDQ0NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbHdpcC90Y3AuaAorKysgYi9zcmMvaW5jbHVkZS9sd2lwL3RjcC5oCkBAIC0zMzksNiArMzM5LDggQEAKICAgc3RydWN0IHRjcF9zZWcgKm9vc2VxOyAgICAvKiBSZWNlaXZlZCBvdXQgb2Ygc2VxdWVuY2Ugc2VnbWVudHMuICovCiAjZW5kaWYgLyogVENQX1FVRVVFX09PU0VRICovCiAKKyAgc3RydWN0IHBidWYgKnJlZnVzZWRfZGF0YTsgLyogRGF0YSBwcmV2aW91c2x5IHJlY2VpdmVkIGJ1dCBub3QgeWV0IHRha2VuIGJ5IHVwcGVyIGxheWVyICovCisKICNpZiBMV0lQX0NBTExCQUNLX0FQSQogICAvKiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBtb3JlIHNlbmQgYnVmZmVyIHNwYWNlIGlzIGF2YWlsYWJsZS4KICAgICogQHBhcmFtIGFyZyB1c2VyLXN1cHBsaWVkIGFyZ3VtZW50ICh0Y3BfcGNiLmNhbGxiYWNrX2FyZykKQEAgLTQ3MSw2ICs0NzMsNyBAQAogI2RlZmluZSBUQ1BfRVZFTlRfUkVDVihwY2IscCxlcnIscmV0KSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBpZigocGNiKS0+cmVjdiAhPSBOVUxMKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldCA9IChwY2IpLT5yZWN2KChwY2IpLT5jYWxsYmFja19hcmcsKHBjYiksKHApLChlcnIpKTsgfSBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBFUlJfT0s7IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHApIHBidWZfZnJlZShwKTsgfQogI2RlZmluZSBUQ1BfRVZFTlRfQ09OTkVDVEVEKHBjYixlcnIscmV0KSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBpZigocGNiKS0+Y29ubmVjdGVkICE9IE5VTEwpIFwK