From: marko.makela Date: October 12 2011 1:49pm Subject: bzr push into mysql-5.5 branch (marko.makela:3574 to 3575) List-Archive: http://lists.mysql.com/commits/141403 Message-Id: <201110121349.p9CDnKiZ029961@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1NzUgTWFya28gTcOka2Vsw6QJMjAxMS0xMC0xMiBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMSB0byBteXNxbC01LjUuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv YnRyL2J0cjBjdXIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwc2VhLmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVm L2J1ZjBscnUuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2hhL2hhMGhhLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2li dWYvaWJ1ZjBpYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv aGEwaGEuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaGEwaGEuaWMKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3N5bmMwc3luYy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2Uu YwogICAgICBzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMKIDM1NzQgVmluYXkgRmlz cmVrYXIJMjAxMS0xMC0xMiBbbWVyZ2VdCiAgICAgIG1lcmdlIDUuMSAtPiA1LjUKICAgICAgYWRq dXN0L21vZGlmeSB0ZXN0cyBhcyB0aGV5IHdlcmUgZmFpbGluZyBpZiBzeXN0ZW0gdGltZSB6b25l IGlzIHNldCBkaWZmZXJlbnRseS4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9lbmdpbmVzL2Z1bmNzL3IvZGVfY2FsZW5kYXJfcmFuZ2UucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyXzJfdW5pcXVlX2NvbnN0cmFpbnRz X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9m dW5jcy9yL2luX2NhbGVuZGFyX3BrX2NvbnN0cmFpbnRfZHVwbGljYXRlX3VwZGF0ZS5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fY2FsZW5kYXJfcGtfY29u c3RyYWludF9lcnJvci5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNz L3IvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2R1 cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5j cy9yL2luX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2Vycm9yLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mvci9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWlu dF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2lu X211bHRpY29sdW1uX2NhbGVuZGFyX3BrX2NvbnN0cmFpbnRfZHVwbGljYXRlX3VwZGF0ZS5yZXN1 bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fbXVsdGljb2x1bW5f Y2FsZW5kYXJfcGtfY29uc3RyYWludF9lcnJvci5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9p Z25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211 bHRpY29sdW1uX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1u X2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2Vycm9yLnJlc3VsdAogICAgICBteXNxbC10ZXN0 L3N1aXRlL2VuZ2luZXMvZnVuY3Mvci9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91bmlxdWVfY29u c3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5j cy9yL2luX211bHRpY29sdW1uX251bWJlcl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL3VwX2NhbGVuZGFy X3JhbmdlLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9kZV9j YWxlbmRhcl9yYW5nZS50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy90 L2luX2NhbGVuZGFyXzJfdW5pcXVlX2NvbnN0cmFpbnRzX2R1cGxpY2F0ZV91cGRhdGUudGVzdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl9wa19jb25z dHJhaW50X2R1cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2lu ZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2Vycm9yLnRlc3QKICAgICAgbXlz cWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9p Z25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxl bmRhcl91bmlxdWVfY29uc3RyYWludF9kdXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fY2FsZW5kYXJfdW5pcXVlX2NvbnN0cmFpbnRf ZXJyb3IudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxl bmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRl L2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2R1 cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mv dC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2Vycm9yLnRlc3QKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJf cGtfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMv ZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9kdXBsaWNh dGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5f bXVsdGljb2x1bW5fY2FsZW5kYXJfdW5pcXVlX2NvbnN0cmFpbnRfZXJyb3IudGVzdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91 bmlxdWVfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2lu ZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9udW1iZXJfcGtfY29uc3RyYWludF9kdXBsaWNhdGVf dXBkYXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvdXBfY2Fs ZW5kYXJfcmFuZ2UudGVzdAo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIv YnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6dmlu YXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5Cisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMTAxMjA2MjEzMy12c2tsczlrMnJ2MHU2eDFvCkBAIC0xODk1LDcgKzE4OTUs NyBAQCBidHJfY3VyX3VwZGF0ZV9pbl9wbGFjZSgKIAl3YXNfZGVsZXRlX21hcmtlZCA9IHJlY19n ZXRfZGVsZXRlZF9mbGFnKAogCQlyZWMsIHBhZ2VfaXNfY29tcChidWZfYmxvY2tfZ2V0X2ZyYW1l KGJsb2NrKSkpOwogCi0JaXNfaGFzaGVkID0gYmxvY2stPmlzX2hhc2hlZDsKKwlpc19oYXNoZWQg PSAoYmxvY2stPmluZGV4ICE9IE5VTEwpOwogCiAJaWYgKGlzX2hhc2hlZCkgewogCQkvKiBUTyBE TzogQ2FuIHdlIHNraXAgdGhpcyBpZiBub25lIG9mIHRoZSBmaWVsZHMKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwc2VhLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnRyL2J0cjBzZWEuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEy MDQ0OTQ2LW9wY29nMG00ZjQyODVjaTkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMHNl YS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYyMTMzLXZza2xzOWsy cnYwdTZ4MW8KQEAgLTQ0LDEyICs0NCw4IEBAIENyZWF0ZWQgMi8xNy8xOTk2IEhlaWtraSBUdXVy aQogI2luY2x1ZGUgImhhMGhhLmgiCiAKIC8qKiBGbGFnOiBoYXMgdGhlIHNlYXJjaCBzeXN0ZW0g YmVlbiBlbmFibGVkPwotUHJvdGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2ggYW5kIGJ0cl9zZWFy Y2hfZW5hYmxlZF9tdXRleC4gKi8KK1Byb3RlY3RlZCBieSBidHJfc2VhcmNoX2xhdGNoLiAqLwog VU5JVl9JTlRFUk4gY2hhcgkJYnRyX3NlYXJjaF9lbmFibGVkCT0gVFJVRTsKLVVOSVZfSU5URVJO IGlib29sCQlidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkID0gRkFMU0U7Ci0KLS8qKiBNdXRleCBw cm90ZWN0aW5nIGJ0cl9zZWFyY2hfZW5hYmxlZCAqLwotc3RhdGljIG11dGV4X3QJCQlidHJfc2Vh cmNoX2VuYWJsZWRfbXV0ZXg7CiAKICNpZmRlZiBVTklWX1BGU19NVVRFWAogLyogS2V5IHRvIHJl Z2lzdGVyIGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleCB3aXRoIHBlcmZvcm1hbmNlIHNjaGVtYSAq LwpAQCAtMTgwLDggKzE3Niw2IEBAIGJ0cl9zZWFyY2hfc3lzX2NyZWF0ZSgKIAogCXJ3X2xvY2tf Y3JlYXRlKGJ0cl9zZWFyY2hfbGF0Y2hfa2V5LCAmYnRyX3NlYXJjaF9sYXRjaCwKIAkJICAgICAg IFNZTkNfU0VBUkNIX1NZUyk7Ci0JbXV0ZXhfY3JlYXRlKGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRl eF9rZXksCi0JCSAgICAgJmJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleCwgU1lOQ19TRUFSQ0hfU1lT X0NPTkYpOwogCiAJYnRyX3NlYXJjaF9zeXMgPSBtZW1fYWxsb2Moc2l6ZW9mKGJ0cl9zZWFyY2hf c3lzX3QpKTsKIApAQCAtMjExLDI3ICsyMDUsMzcgQEAgdm9pZAogYnRyX3NlYXJjaF9kaXNhYmxl KHZvaWQpCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIHsKLQltdXRleF9lbnRlcigmYnRyX3Nl YXJjaF9lbmFibGVkX211dGV4KTsKKwlkaWN0X3RhYmxlX3QqCXRhYmxlOworCisJbXV0ZXhfZW50 ZXIoJmRpY3Rfc3lzLT5tdXRleCk7CiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gp OwogCi0JLyogRGlzYWJsZSBhY2Nlc3MgdG8gaGFzaCBpbmRleCwgYWxzbyB0ZWxsIGhhX2luc2Vy dF9mb3JfZm9sZCgpCi0Jc3RvcCBhZGRpbmcgbmV3IG5vZGVzIHRvIGhhc2ggaW5kZXgsIGJ1dCBz dGlsbCBhbGxvdyB1cGRhdGluZwotCWV4aXN0aW5nIG5vZGVzICovCiAJYnRyX3NlYXJjaF9lbmFi bGVkID0gRkFMU0U7CiAKLQkvKiBDbGVhciBhbGwgYmxvY2stPmlzX2hhc2hlZCBmbGFncyBhbmQg cmVtb3ZlIGFsbCBlbnRyaWVzCi0JZnJvbSBidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRleC4gKi8K LQlidWZfcG9vbF9kcm9wX2hhc2hfaW5kZXgoKTsKLQotCS8qIGhhc2ggaW5kZXggaGFzIGJlZW4g Y2xlYW5lZCB1cCwgZGlzYWxsb3cgYW55IG9wZXJhdGlvbiB0bwotCXRoZSBoYXNoIGluZGV4ICov Ci0JYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCA9IFRSVUU7CisJLyogQ2xlYXIgdGhlIGluZGV4 LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50IG9mIGV2ZXJ5IGluZGV4IGluCisJdGhlIGRhdGEgZGlj dGlvbmFyeSBjYWNoZS4gKi8KKwlmb3IgKHRhYmxlID0gVVRfTElTVF9HRVRfRklSU1QoZGljdF9z eXMtPnRhYmxlX0xSVSk7IHRhYmxlOworCSAgICAgdGFibGUgPSBVVF9MSVNUX0dFVF9ORVhUKHRh YmxlX0xSVSwgdGFibGUpKSB7CisKKwkJZGljdF9pbmRleF90KglpbmRleDsKIAotCS8qIGJ0cl9z ZWFyY2hfZW5hYmxlZF9tdXRleCBzaG91bGQgZ3VhcmFudGVlIHRoaXMuICovCi0JdXRfYWQoIWJ0 cl9zZWFyY2hfZW5hYmxlZCk7CisJCWZvciAoaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9p bmRleCh0YWJsZSk7IGluZGV4OworCQkgICAgIGluZGV4ID0gZGljdF90YWJsZV9nZXRfbmV4dF9p bmRleChpbmRleCkpIHsKKworCQkJaW5kZXgtPnNlYXJjaF9pbmZvLT5yZWZfY291bnQgPSAwOwor CQl9CisJfQorCisJbXV0ZXhfZXhpdCgmZGljdF9zeXMtPm11dGV4KTsKKworCS8qIFNldCBhbGwg YmxvY2stPmluZGV4ID0gTlVMTC4gKi8KKwlidWZfcG9vbF9jbGVhcl9oYXNoX2luZGV4KCk7CisK KwkvKiBDbGVhciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleC4gKi8KKwloYXNoX3RhYmxlX2NsZWFy KGJ0cl9zZWFyY2hfc3lzLT5oYXNoX2luZGV4KTsKKwltZW1faGVhcF9lbXB0eShidHJfc2VhcmNo X3N5cy0+aGFzaF9pbmRleC0+aGVhcCk7CiAKIAlyd19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNo X2xhdGNoKTsKLQltdXRleF9leGl0KCZidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgpOwogfQogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCkBAIC0yNDEsMTQgKzI0NSwxMSBAQCB2b2lkCiBidHJfc2VhcmNoX2Vu YWJsZSh2b2lkKQogLyo9PT09PT09PT09PT09PT09PT09PSovCiB7Ci0JbXV0ZXhfZW50ZXIoJmJ0 cl9zZWFyY2hfZW5hYmxlZF9tdXRleCk7CiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0 Y2gpOwogCiAJYnRyX3NlYXJjaF9lbmFibGVkID0gVFJVRTsKLQlidHJfc2VhcmNoX2Z1bGx5X2Rp c2FibGVkID0gRkFMU0U7CiAKIAlyd19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsK LQltdXRleF9leGl0KCZidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgpOwogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCkBAIC00NzEsNyArNDcyLDcgQEAgYnRyX3NlYXJjaF91cGRhdGVfYmxvY2tfaGFzaF9pbmZv KAogCSAgICAmJiAoYmxvY2stPm5fYnl0ZXMgPT0gaW5mby0+bl9ieXRlcykKIAkgICAgJiYgKGJs b2NrLT5sZWZ0X3NpZGUgPT0gaW5mby0+bGVmdF9zaWRlKSkgewogCi0JCWlmICgoYmxvY2stPmlz X2hhc2hlZCkKKwkJaWYgKChibG9jay0+aW5kZXgpCiAJCSAgICAmJiAoYmxvY2stPmN1cnJfbl9m aWVsZHMgPT0gaW5mby0+bl9maWVsZHMpCiAJCSAgICAmJiAoYmxvY2stPmN1cnJfbl9ieXRlcyA9 PSBpbmZvLT5uX2J5dGVzKQogCQkgICAgJiYgKGJsb2NrLT5jdXJyX2xlZnRfc2lkZSA9PSBpbmZv LT5sZWZ0X3NpZGUpKSB7CkBAIC01MDAsNyArNTAxLDcgQEAgYnRyX3NlYXJjaF91cGRhdGVfYmxv Y2tfaGFzaF9pbmZvKAogCSAgICAgLyBCVFJfU0VBUkNIX1BBR0VfQlVJTERfTElNSVQpCiAJICAg ICYmIChpbmZvLT5uX2hhc2hfcG90ZW50aWFsID49IEJUUl9TRUFSQ0hfQlVJTERfTElNSVQpKSB7 CiAKLQkJaWYgKCghYmxvY2stPmlzX2hhc2hlZCkKKwkJaWYgKCghYmxvY2stPmluZGV4KQogCQkg ICAgfHwgKGJsb2NrLT5uX2hhc2hfaGVscHMKIAkJCT4gMiAqIHBhZ2VfZ2V0X25fcmVjcyhibG9j ay0+ZnJhbWUpKQogCQkgICAgfHwgKGJsb2NrLT5uX2ZpZWxkcyAhPSBibG9jay0+Y3Vycl9uX2Zp ZWxkcykKQEAgLTUzMiw5ICs1MzMsOSBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX3JlZigKIAli dWZfYmxvY2tfdCoJYmxvY2ssCS8qITwgaW46IGJ1ZmZlciBibG9jayB3aGVyZSBjdXJzb3IgcG9z aXRpb25lZCAqLwogCWJ0cl9jdXJfdCoJY3Vyc29yKQkvKiE8IGluOiBjdXJzb3IgKi8KIHsKKwlk aWN0X2luZGV4X3QqCWluZGV4OwogCXVsaW50CQlmb2xkOwotCXJlY190KgkJcmVjOwotCWluZGV4 X2lkX3QJaW5kZXhfaWQ7CisJY29uc3QgcmVjX3QqCXJlYzsKIAogCXV0X2FkKGN1cnNvci0+Zmxh ZyA9PSBCVFJfQ1VSX0hBU0hfRkFJTCk7CiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCkBAIC01NDUs MTMgKzU0NiwxNSBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX3JlZigKIAl1dF9hZChwYWdlX2Fs aWduKGJ0cl9jdXJfZ2V0X3JlYyhjdXJzb3IpKQogCSAgICAgID09IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spKTsKIAotCWlmICghYmxvY2stPmlzX2hhc2hlZCkgeworCWluZGV4ID0gYmxvY2st PmluZGV4OworCisJaWYgKCFpbmRleCkgewogCiAJCXJldHVybjsKIAl9CiAKLQl1dF9hKGJsb2Nr LT5pbmRleCA9PSBjdXJzb3ItPmluZGV4KTsKLQl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoY3Vy c29yLT5pbmRleCkpOworCXV0X2EoaW5kZXggPT0gY3Vyc29yLT5pbmRleCk7CisJdXRfYSghZGlj dF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAlpZiAoKGluZm8tPm5faGFzaF9wb3RlbnRpYWwg PiAwKQogCSAgICAmJiAoYmxvY2stPmN1cnJfbl9maWVsZHMgPT0gaW5mby0+bl9maWVsZHMpCkBA IC01NjgsMTIgKzU3MSwxMSBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX3JlZigKIAkJCXJldHVy bjsKIAkJfQogCi0JCWluZGV4X2lkID0gY3Vyc29yLT5pbmRleC0+aWQ7CiAJCWZvbGQgPSByZWNf Zm9sZChyZWMsCi0JCQkJcmVjX2dldF9vZmZzZXRzKHJlYywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0 c18sCisJCQkJcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHNfLAogCQkJCQkJVUxJ TlRfVU5ERUZJTkVELCAmaGVhcCksCiAJCQkJYmxvY2stPmN1cnJfbl9maWVsZHMsCi0JCQkJYmxv Y2stPmN1cnJfbl9ieXRlcywgaW5kZXhfaWQpOworCQkJCWJsb2NrLT5jdXJyX25fYnl0ZXMsIGlu ZGV4LT5pZCk7CiAJCWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CiAJCQltZW1faGVhcF9m cmVlKGhlYXApOwogCQl9CkBAIC04MzcsNyArODM5LDcgQEAgYnRyX3NlYXJjaF9ndWVzc19vbl9o YXNoKAogewogCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sOwogCWJ1Zl9ibG9ja190KglibG9jazsKLQly ZWNfdCoJCXJlYzsKKwljb25zdCByZWNfdCoJcmVjOwogCXVsaW50CQlmb2xkOwogCWluZGV4X2lk X3QJaW5kZXhfaWQ7CiAjaWZkZWYgbm90ZGVmaW5lZApAQCAtOTIzLDcgKzkyNSw3IEBAIGJ0cl9z ZWFyY2hfZ3Vlc3Nfb25faGFzaCgKIAogCXV0X2FkKHBhZ2VfcmVjX2lzX3VzZXJfcmVjKHJlYykp OwogCi0JYnRyX2N1cl9wb3NpdGlvbihpbmRleCwgcmVjLCBibG9jaywgY3Vyc29yKTsKKwlidHJf Y3VyX3Bvc2l0aW9uKGluZGV4LCAocmVjX3QqKSByZWMsIGJsb2NrLCBjdXJzb3IpOwogCiAJLyog Q2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBndWVzcyB3aXRoaW4gdGhlIHBhZ2UgKi8KIApAQCAt MTA1MywxNSArMTA1NSwxNiBAQCBidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX2luZGV4KAogCiBy ZXRyeToKIAlyd19sb2NrX3NfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0JcGFnZSA9IGJsb2Nr LT5mcmFtZTsKKwlpbmRleCA9IGJsb2NrLT5pbmRleDsKIAotCWlmIChVTklWX0xJS0VMWSghYmxv Y2stPmlzX2hhc2hlZCkpIHsKKwlpZiAoVU5JVl9MSUtFTFkoIWluZGV4KSkgewogCiAJCXJ3X2xv Y2tfc191bmxvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCiAJCXJldHVybjsKIAl9CiAKKwl1dF9h KCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKIAl0YWJsZSA9IGJ0cl9zZWFyY2hfc3lzLT5o YXNoX2luZGV4OwogCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCkBAIC0xMDcyLDggKzEwNzUsNiBA QCByZXRyeToKIAogCW5fZmllbGRzID0gYmxvY2stPmN1cnJfbl9maWVsZHM7CiAJbl9ieXRlcyA9 IGJsb2NrLT5jdXJyX25fYnl0ZXM7Ci0JaW5kZXggPSBibG9jay0+aW5kZXg7Ci0JdXRfYSghZGlj dF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAkvKiBOT1RFOiBUaGUgZmllbGRzIG9mIGJsb2Nr IG11c3Qgbm90IGJlIGFjY2Vzc2VkIGFmdGVyCiAJcmVsZWFzaW5nIGJ0cl9zZWFyY2hfbGF0Y2gs IGFzIHRoZSBpbmRleCBwYWdlIG1pZ2h0IG9ubHkKQEAgLTEwODMsNiArMTA4NCw3IEBAIHJldHJ5 OgogCiAJdXRfYShuX2ZpZWxkcyArIG5fYnl0ZXMgPiAwKTsKIAorCXBhZ2UgPSBibG9jay0+ZnJh bWU7CiAJbl9yZWNzID0gcGFnZV9nZXRfbl9yZWNzKHBhZ2UpOwogCiAJLyogQ2FsY3VsYXRlIGFu ZCBjYWNoZSBmb2xkIHZhbHVlcyBpbnRvIGFuIGFycmF5IGZvciBmYXN0IGRlbGV0aW9uCkBAIC0x MTMxLDcgKzExMzMsNyBAQCBuZXh0X3JlYzoKIAogCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNo X2xhdGNoKTsKIAotCWlmIChVTklWX1VOTElLRUxZKCFibG9jay0+aXNfaGFzaGVkKSkgeworCWlm IChVTklWX1VOTElLRUxZKCFibG9jay0+aW5kZXgpKSB7CiAJCS8qIFNvbWVvbmUgZWxzZSBoYXMg bWVhbndoaWxlIGRyb3BwZWQgdGhlIGhhc2ggaW5kZXggKi8KIAogCQlnb3RvIGNsZWFudXA7CkBA IC0xMTU5LDkgKzExNjEsOCBAQCBuZXh0X3JlYzoKIAl1dF9hKGluZGV4LT5zZWFyY2hfaW5mby0+ cmVmX2NvdW50ID4gMCk7CiAJaW5kZXgtPnNlYXJjaF9pbmZvLT5yZWZfY291bnQtLTsKIAotCWJs b2NrLT5pc19oYXNoZWQgPSBGQUxTRTsKIAlibG9jay0+aW5kZXggPSBOVUxMOwotCQorCiBjbGVh bnVwOgogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJ aWYgKFVOSVZfVU5MSUtFTFkoYmxvY2stPm5fcG9pbnRlcnMpKSB7CkBAIC0xMTg3LDggKzExODgs OCBAQCBjbGVhbnVwOgogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1Ecm9wcyBhIHBhZ2UgaGFzaCBp bmRleCB3aGVuIGEgcGFnZSBpcyBmcmVlZCBmcm9tIGEgZnNlZyB0byB0aGUgZmlsZSBzeXN0ZW0u Ci1Ecm9wcyBwb3NzaWJsZSBoYXNoIGluZGV4IGlmIHRoZSBwYWdlIGhhcHBlbnMgdG8gYmUgaW4g dGhlIGJ1ZmZlciBwb29sLiAqLworRHJvcHMgYSBwb3NzaWJsZSBwYWdlIGhhc2ggaW5kZXggd2hl biBhIHBhZ2UgaXMgZXZpY3RlZCBmcm9tIHRoZSBidWZmZXIgcG9vbAorb3IgZnJlZWQgaW4gYSBm aWxlIHNlZ21lbnQuICovCiBVTklWX0lOVEVSTgogdm9pZAogYnRyX3NlYXJjaF9kcm9wX3BhZ2Vf aGFzaF93aGVuX2ZyZWVkKApAQCAtMTIwMSwyOCArMTIwMiwxOSBAQCBidHJfc2VhcmNoX2Ryb3Bf cGFnZV9oYXNoX3doZW5fZnJlZWQoCiAJYnVmX2Jsb2NrX3QqCWJsb2NrOwogCW10cl90CQltdHI7 CiAKLQlpZiAoIWJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNoX2hhc2hlZChzcGFjZSwgcGFnZV9ubykp IHsKLQotCQlyZXR1cm47Ci0JfQotCiAJbXRyX3N0YXJ0KCZtdHIpOwogCi0JLyogV2UgYXNzdW1l IHRoYXQgaWYgdGhlIGNhbGxlciBoYXMgYSBsYXRjaCBvbiB0aGUgcGFnZSwgdGhlbiB0aGUKLQlj YWxsZXIgaGFzIGFscmVhZHkgZHJvcHBlZCB0aGUgaGFzaCBpbmRleCBmb3IgdGhlIHBhZ2UsIGFu ZCB3ZSBuZXZlcgotCWdldCBoZXJlLiBUaGVyZWZvcmUgd2UgY2FuIGFjcXVpcmUgdGhlIHMtbGF0 Y2ggdG8gdGhlIHBhZ2Ugd2l0aG91dAotCWhhdmluZyB0byBmZWFyIGEgZGVhZGxvY2suICovCisJ LyogSWYgdGhlIGNhbGxlciBoYXMgYSBsYXRjaCBvbiB0aGUgcGFnZSwgdGhlbiB0aGUgY2FsbGVy IG11c3QKKwloYXZlIGEgeC1sYXRjaCBvbiB0aGUgcGFnZSBhbmQgaXQgbXVzdCBoYXZlIGFscmVh ZHkgZHJvcHBlZAorCXRoZSBoYXNoIGluZGV4IGZvciB0aGUgcGFnZS4gQmVjYXVzZSBvZiB0aGUg eC1sYXRjaCB0aGF0IHdlCisJYXJlIHBvc3NpYmx5IGhvbGRpbmcsIHdlIGNhbm5vdCBzLWxhdGNo IHRoZSBwYWdlLCBidXQgbXVzdAorCShyZWN1cnNpdmVseSkgeC1sYXRjaCBpdCwgZXZlbiB0aG91 Z2ggd2UgYXJlIG9ubHkgcmVhZGluZy4gKi8KIAotCWJsb2NrID0gYnVmX3BhZ2VfZ2V0X2dlbihz cGFjZSwgemlwX3NpemUsIHBhZ2Vfbm8sIFJXX1NfTEFUQ0gsIE5VTEwsCisJYmxvY2sgPSBidWZf cGFnZV9nZXRfZ2VuKHNwYWNlLCB6aXBfc2l6ZSwgcGFnZV9ubywgUldfWF9MQVRDSCwgTlVMTCwK IAkJCQkgQlVGX1BFRUtfSUZfSU5fUE9PTCwgX19GSUxFX18sIF9fTElORV9fLAogCQkJCSAmbXRy KTsKLQkvKiBCZWNhdXNlIHRoZSBidWZmZXIgcG9vbCBtdXRleCB3YXMgcmVsZWFzZWQgYnkKLQli dWZfcGFnZV9wZWVrX2lmX3NlYXJjaF9oYXNoZWQoKSwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUK LQlibG9jayB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBidWZmZXIgcG9vbCBieSBhbm90aGVyIHRocmVh ZAotCWJlZm9yZSBidWZfcGFnZV9nZXRfZ2VuKCkgZ290IGEgY2hhbmNlIHRvIGFjcXVpcmUgdGhl IGJ1ZmZlcgotCXBvb2wgbXV0ZXggYWdhaW4uICBUaHVzLCB3ZSBtdXN0IGNoZWNrIGZvciBhIE5V TEwgcmV0dXJuLiAqLwogCi0JaWYgKFVOSVZfTElLRUxZKGJsb2NrICE9IE5VTEwpKSB7CisJaWYg KGJsb2NrICYmIGJsb2NrLT5pbmRleCkgewogCiAJCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJs b2NrLCBTWU5DX1RSRUVfTk9ERV9GUk9NX0hBU0gpOwogCkBAIC0xMjU0LDcgKzEyNDYsNiBAQCBi dHJfc2VhcmNoX2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAlyZWNfdCoJCW5leHRfcmVjOwogCXVs aW50CQlmb2xkOwogCXVsaW50CQluZXh0X2ZvbGQ7Ci0JaW5kZXhfaWRfdAlpbmRleF9pZDsKIAl1 bGludAkJbl9jYWNoZWQ7CiAJdWxpbnQJCW5fcmVjczsKIAl1bGludCoJCWZvbGRzOwpAQCAtMTI2 OCw5ICsxMjU5LDYgQEAgYnRyX3NlYXJjaF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAJdXRfYWQo aW5kZXgpOwogCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogCi0JdGFibGUgPSBi dHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRleDsKLQlwYWdlID0gYnVmX2Jsb2NrX2dldF9mcmFtZShi bG9jayk7Ci0KICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZCghcndfbG9ja19vd24oJmJ0 cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfRVgpKTsKIAl1dF9hZChyd19sb2NrX293bigmKGJsb2Nr LT5sb2NrKSwgUldfTE9DS19TSEFSRUQpCkBAIC0xMjc5LDkgKzEyNjcsMTcgQEAgYnRyX3NlYXJj aF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAKIAlyd19sb2NrX3NfbG9jaygmYnRyX3NlYXJjaF9s YXRjaCk7CiAKLQlpZiAoYmxvY2stPmlzX2hhc2hlZCAmJiAoKGJsb2NrLT5jdXJyX25fZmllbGRz ICE9IG5fZmllbGRzKQotCQkJCSB8fCAoYmxvY2stPmN1cnJfbl9ieXRlcyAhPSBuX2J5dGVzKQot CQkJCSB8fCAoYmxvY2stPmN1cnJfbGVmdF9zaWRlICE9IGxlZnRfc2lkZSkpKSB7CisJaWYgKCFi dHJfc2VhcmNoX2VuYWJsZWQpIHsKKwkJcndfbG9ja19zX3VubG9jaygmYnRyX3NlYXJjaF9sYXRj aCk7CisJCXJldHVybjsKKwl9CisKKwl0YWJsZSA9IGJ0cl9zZWFyY2hfc3lzLT5oYXNoX2luZGV4 OworCXBhZ2UgPSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKTsKKworCWlmIChibG9jay0+aW5k ZXggJiYgKChibG9jay0+Y3Vycl9uX2ZpZWxkcyAhPSBuX2ZpZWxkcykKKwkJCSAgICAgfHwgKGJs b2NrLT5jdXJyX25fYnl0ZXMgIT0gbl9ieXRlcykKKwkJCSAgICAgfHwgKGJsb2NrLT5jdXJyX2xl ZnRfc2lkZSAhPSBsZWZ0X3NpZGUpKSkgewogCiAJCXJ3X2xvY2tfc191bmxvY2soJmJ0cl9zZWFy Y2hfbGF0Y2gpOwogCkBAIC0xMzE4LDcgKzEzMTQsNyBAQCBidHJfc2VhcmNoX2J1aWxkX3BhZ2Vf aGFzaF9pbmRleCgKIAogCW5fY2FjaGVkID0gMDsKIAotCWluZGV4X2lkID0gYnRyX3BhZ2VfZ2V0 X2luZGV4X2lkKHBhZ2UpOworCXV0X2EoaW5kZXgtPmlkID09IGJ0cl9wYWdlX2dldF9pbmRleF9p ZChwYWdlKSk7CiAKIAlyZWMgPSBwYWdlX3JlY19nZXRfbmV4dChwYWdlX2dldF9pbmZpbXVtX3Jl YyhwYWdlKSk7CiAKQEAgLTEzMzMsNyArMTMyOSw3IEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9o YXNoX2luZGV4KAogCQl9CiAJfQogCi0JZm9sZCA9IHJlY19mb2xkKHJlYywgb2Zmc2V0cywgbl9m aWVsZHMsIG5fYnl0ZXMsIGluZGV4X2lkKTsKKwlmb2xkID0gcmVjX2ZvbGQocmVjLCBvZmZzZXRz LCBuX2ZpZWxkcywgbl9ieXRlcywgaW5kZXgtPmlkKTsKIAogCWlmIChsZWZ0X3NpZGUpIHsKIApA QCAtMTM2MCw3ICsxMzU2LDcgQEAgYnRyX3NlYXJjaF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAJ CW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMobmV4dF9yZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJ CQkgIG5fZmllbGRzICsgKG5fYnl0ZXMgPiAwKSwgJmhlYXApOwogCQluZXh0X2ZvbGQgPSByZWNf Zm9sZChuZXh0X3JlYywgb2Zmc2V0cywgbl9maWVsZHMsCi0JCQkJICAgICBuX2J5dGVzLCBpbmRl eF9pZCk7CisJCQkJICAgICBuX2J5dGVzLCBpbmRleC0+aWQpOwogCiAJCWlmIChmb2xkICE9IG5l eHRfZm9sZCkgewogCQkJLyogSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGhhc2ggaW5kZXggKi8K QEAgLTEzODUsMTMgKzEzODEsMTMgQEAgYnRyX3NlYXJjaF9idWlsZF9wYWdlX2hhc2hfaW5kZXgo CiAKIAlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKLQlpZiAoVU5JVl9VTkxJ S0VMWShidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkKSkgeworCWlmIChVTklWX1VOTElLRUxZKCFi dHJfc2VhcmNoX2VuYWJsZWQpKSB7CiAJCWdvdG8gZXhpdF9mdW5jOwogCX0KIAotCWlmIChibG9j ay0+aXNfaGFzaGVkICYmICgoYmxvY2stPmN1cnJfbl9maWVsZHMgIT0gbl9maWVsZHMpCi0JCQkJ IHx8IChibG9jay0+Y3Vycl9uX2J5dGVzICE9IG5fYnl0ZXMpCi0JCQkJIHx8IChibG9jay0+Y3Vy cl9sZWZ0X3NpZGUgIT0gbGVmdF9zaWRlKSkpIHsKKwlpZiAoYmxvY2stPmluZGV4ICYmICgoYmxv Y2stPmN1cnJfbl9maWVsZHMgIT0gbl9maWVsZHMpCisJCQkgICAgIHx8IChibG9jay0+Y3Vycl9u X2J5dGVzICE9IG5fYnl0ZXMpCisJCQkgICAgIHx8IChibG9jay0+Y3Vycl9sZWZ0X3NpZGUgIT0g bGVmdF9zaWRlKSkpIHsKIAkJZ290byBleGl0X2Z1bmM7CiAJfQogCkBAIC0xNDAwLDExICsxMzk2 LDEwIEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4KAogCXJlYnVpbGQgaGFzaCBp bmRleCBmb3IgYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBoYXNoZWQsIHdlCiAJaGF2ZSB0byB0YWtl IGNhcmUgbm90IHRvIGluY3JlbWVudCB0aGUgY291bnRlciBpbiB0aGF0CiAJY2FzZS4gKi8KLQlp ZiAoIWJsb2NrLT5pc19oYXNoZWQpIHsKKwlpZiAoIWJsb2NrLT5pbmRleCkgewogCQlpbmRleC0+ c2VhcmNoX2luZm8tPnJlZl9jb3VudCsrOwogCX0KIAotCWJsb2NrLT5pc19oYXNoZWQgPSBUUlVF OwogCWJsb2NrLT5uX2hhc2hfaGVscHMgPSAwOwogCiAJYmxvY2stPmN1cnJfbl9maWVsZHMgPSBu X2ZpZWxkczsKQEAgLTE0NTIsMTQgKzE0NDcsMTUgQEAgYnRyX3NlYXJjaF9tb3ZlX29yX2RlbGV0 ZV9oYXNoX2VudHJpZXMoCiAJdXRfYWQocndfbG9ja19vd24oJihibG9jay0+bG9jayksIFJXX0xP Q0tfRVgpKTsKIAl1dF9hZChyd19sb2NrX293bigmKG5ld19ibG9jay0+bG9jayksIFJXX0xPQ0tf RVgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KLQl1dF9hKCFuZXdfYmxvY2stPmlz X2hhc2hlZCB8fCBuZXdfYmxvY2stPmluZGV4ID09IGluZGV4KTsKLQl1dF9hKCFibG9jay0+aXNf aGFzaGVkIHx8IGJsb2NrLT5pbmRleCA9PSBpbmRleCk7Ci0JdXRfYSghKG5ld19ibG9jay0+aXNf aGFzaGVkIHx8IGJsb2NrLT5pc19oYXNoZWQpCi0JICAgICB8fCAhZGljdF9pbmRleF9pc19pYnVm KGluZGV4KSk7CiAKIAlyd19sb2NrX3NfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKLQlpZiAo bmV3X2Jsb2NrLT5pc19oYXNoZWQpIHsKKwl1dF9hKCFuZXdfYmxvY2stPmluZGV4IHx8IG5ld19i bG9jay0+aW5kZXggPT0gaW5kZXgpOworCXV0X2EoIWJsb2NrLT5pbmRleCB8fCBibG9jay0+aW5k ZXggPT0gaW5kZXgpOworCXV0X2EoIShuZXdfYmxvY2stPmluZGV4IHx8IGJsb2NrLT5pbmRleCkK KwkgICAgIHx8ICFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKKworCWlmIChuZXdfYmxvY2st PmluZGV4KSB7CiAKIAkJcndfbG9ja19zX3VubG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKQEAg LTE0NjgsNyArMTQ2NCw3IEBAIGJ0cl9zZWFyY2hfbW92ZV9vcl9kZWxldGVfaGFzaF9lbnRyaWVz KAogCQlyZXR1cm47CiAJfQogCi0JaWYgKGJsb2NrLT5pc19oYXNoZWQpIHsKKwlpZiAoYmxvY2st PmluZGV4KSB7CiAKIAkJbl9maWVsZHMgPSBibG9jay0+Y3Vycl9uX2ZpZWxkczsKIAkJbl9ieXRl cyA9IGJsb2NrLT5jdXJyX25fYnl0ZXM7CkBAIC0xNTA1LDQyICsxNTAxLDQ4IEBAIGJ0cl9zZWFy Y2hfdXBkYXRlX2hhc2hfb25fZGVsZXRlKAogewogCWhhc2hfdGFibGVfdCoJdGFibGU7CiAJYnVm X2Jsb2NrX3QqCWJsb2NrOwotCXJlY190KgkJcmVjOworCWNvbnN0IHJlY190KglyZWM7CiAJdWxp bnQJCWZvbGQ7Ci0JaW5kZXhfaWRfdAlpbmRleF9pZDsKKwlkaWN0X2luZGV4X3QqCWluZGV4Owog CXVsaW50CQlvZmZzZXRzX1tSRUNfT0ZGU19OT1JNQUxfU0laRV07CiAJbWVtX2hlYXBfdCoJaGVh cAkJPSBOVUxMOwogCXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCi0JcmVjID0gYnRyX2N1cl9n ZXRfcmVjKGN1cnNvcik7Ci0KIAlibG9jayA9IGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvcik7CiAK ICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZChyd19sb2NrX293bigmKGJsb2NrLT5sb2Nr KSwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCi0JaWYgKCFi bG9jay0+aXNfaGFzaGVkKSB7CisJaW5kZXggPSBibG9jay0+aW5kZXg7CisKKwlpZiAoIWluZGV4 KSB7CiAKIAkJcmV0dXJuOwogCX0KIAotCXV0X2EoYmxvY2stPmluZGV4ID09IGN1cnNvci0+aW5k ZXgpOworCXV0X2EoaW5kZXggPT0gY3Vyc29yLT5pbmRleCk7CiAJdXRfYShibG9jay0+Y3Vycl9u X2ZpZWxkcyArIGJsb2NrLT5jdXJyX25fYnl0ZXMgPiAwKTsKLQl1dF9hKCFkaWN0X2luZGV4X2lz X2lidWYoY3Vyc29yLT5pbmRleCkpOworCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkp OwogCiAJdGFibGUgPSBidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRleDsKIAotCWluZGV4X2lkID0g Y3Vyc29yLT5pbmRleC0+aWQ7Ci0JZm9sZCA9IHJlY19mb2xkKHJlYywgcmVjX2dldF9vZmZzZXRz KHJlYywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0c18sCisJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGN1 cnNvcik7CisKKwlmb2xkID0gcmVjX2ZvbGQocmVjLCByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRl eCwgb2Zmc2V0c18sCiAJCQkJCSAgICAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCksCi0JCQlibG9j ay0+Y3Vycl9uX2ZpZWxkcywgYmxvY2stPmN1cnJfbl9ieXRlcywgaW5kZXhfaWQpOworCQkJYmxv Y2stPmN1cnJfbl9maWVsZHMsIGJsb2NrLT5jdXJyX25fYnl0ZXMsIGluZGV4LT5pZCk7CiAJaWYg KFVOSVZfTElLRUxZX05VTEwoaGVhcCkpIHsKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9CisK IAlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKLQloYV9zZWFyY2hfYW5kX2Rl bGV0ZV9pZl9mb3VuZCh0YWJsZSwgZm9sZCwgcmVjKTsKKwlpZiAoYmxvY2stPmluZGV4KSB7CisJ CXV0X2EoYmxvY2stPmluZGV4ID09IGluZGV4KTsKKworCQloYV9zZWFyY2hfYW5kX2RlbGV0ZV9p Zl9mb3VuZCh0YWJsZSwgZm9sZCwgcmVjKTsKKwl9CiAKIAlyd19sb2NrX3hfdW5sb2NrKCZidHJf c2VhcmNoX2xhdGNoKTsKIH0KQEAgLTE1NTgsNiArMTU2MCw3IEBAIGJ0cl9zZWFyY2hfdXBkYXRl X2hhc2hfbm9kZV9vbl9pbnNlcnQoCiB7CiAJaGFzaF90YWJsZV90Kgl0YWJsZTsKIAlidWZfYmxv Y2tfdCoJYmxvY2s7CisJZGljdF9pbmRleF90KglpbmRleDsKIAlyZWNfdCoJCXJlYzsKIAogCXJl YyA9IGJ0cl9jdXJfZ2V0X3JlYyhjdXJzb3IpOwpAQCAtMTU2OCwxNiArMTU3MSwyNSBAQCBidHJf c2VhcmNoX3VwZGF0ZV9oYXNoX25vZGVfb25faW5zZXJ0KAogCXV0X2FkKHJ3X2xvY2tfb3duKCYo YmxvY2stPmxvY2spLCBSV19MT0NLX0VYKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICov CiAKLQlpZiAoIWJsb2NrLT5pc19oYXNoZWQpIHsKKwlpbmRleCA9IGJsb2NrLT5pbmRleDsKKwor CWlmICghaW5kZXgpIHsKIAogCQlyZXR1cm47CiAJfQogCi0JdXRfYShibG9jay0+aW5kZXggPT0g Y3Vyc29yLT5pbmRleCk7Ci0JdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGN1cnNvci0+aW5kZXgp KTsKKwl1dF9hKGN1cnNvci0+aW5kZXggPT0gaW5kZXgpOworCXV0X2EoIWRpY3RfaW5kZXhfaXNf aWJ1ZihpbmRleCkpOwogCiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCisJ aWYgKCFibG9jay0+aW5kZXgpIHsKKworCQlnb3RvIGZ1bmNfZXhpdDsKKwl9CisKKwl1dF9hKGJs b2NrLT5pbmRleCA9PSBpbmRleCk7CisKIAlpZiAoKGN1cnNvci0+ZmxhZyA9PSBCVFJfQ1VSX0hB U0gpCiAJICAgICYmIChjdXJzb3ItPm5fZmllbGRzID09IGJsb2NrLT5jdXJyX25fZmllbGRzKQog CSAgICAmJiAoY3Vyc29yLT5uX2J5dGVzID09IGJsb2NrLT5jdXJyX25fYnl0ZXMpCkBAIC0xNTg4 LDYgKzE2MDAsNyBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX25vZGVfb25faW5zZXJ0KAogCQlo YV9zZWFyY2hfYW5kX3VwZGF0ZV9pZl9mb3VuZCh0YWJsZSwgY3Vyc29yLT5mb2xkLCByZWMsCiAJ CQkJCSAgICAgIGJsb2NrLCBwYWdlX3JlY19nZXRfbmV4dChyZWMpKTsKIAorZnVuY19leGl0Ogog CQlyd19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAl9IGVsc2UgewogCQlyd19s b2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKQEAgLTE2MDksMTAgKzE2MjIsMTAgQEAg YnRyX3NlYXJjaF91cGRhdGVfaGFzaF9vbl9pbnNlcnQoCiB7CiAJaGFzaF90YWJsZV90Kgl0YWJs ZTsKIAlidWZfYmxvY2tfdCoJYmxvY2s7CisJZGljdF9pbmRleF90KglpbmRleDsKIAlyZWNfdCoJ CXJlYzsKIAlyZWNfdCoJCWluc19yZWM7CiAJcmVjX3QqCQluZXh0X3JlYzsKLQlpbmRleF9pZF90 CWluZGV4X2lkOwogCXVsaW50CQlmb2xkOwogCXVsaW50CQlpbnNfZm9sZDsKIAl1bGludAkJbmV4 dF9mb2xkID0gMDsgLyogcmVtb3ZlIHdhcm5pbmcgKD8/PyBidWcgPz8/KSAqLwpAQCAtMTYzNywx NSArMTY1MCwxNSBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX29uX2luc2VydCgKIAl1dF9hZChy d19sb2NrX293bigmKGJsb2NrLT5sb2NrKSwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZf U1lOQ19ERUJVRyAqLwogCi0JaWYgKCFibG9jay0+aXNfaGFzaGVkKSB7CisJaW5kZXggPSBibG9j ay0+aW5kZXg7CisKKwlpZiAoIWluZGV4KSB7CiAKIAkJcmV0dXJuOwogCX0KIAotCXV0X2EoYmxv Y2stPmluZGV4ID09IGN1cnNvci0+aW5kZXgpOwotCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1Zihj dXJzb3ItPmluZGV4KSk7Ci0KLQlpbmRleF9pZCA9IGN1cnNvci0+aW5kZXgtPmlkOworCXV0X2Eo aW5kZXggPT0gY3Vyc29yLT5pbmRleCk7CisJdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4 KSk7CiAKIAluX2ZpZWxkcyA9IGJsb2NrLT5jdXJyX25fZmllbGRzOwogCW5fYnl0ZXMgPSBibG9j ay0+Y3Vycl9uX2J5dGVzOwpAQCAtMTY1NCwyMSArMTY2NywyMSBAQCBidHJfc2VhcmNoX3VwZGF0 ZV9oYXNoX29uX2luc2VydCgKIAlpbnNfcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKIAlu ZXh0X3JlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KGluc19yZWMpOwogCi0Jb2Zmc2V0cyA9IHJlY19n ZXRfb2Zmc2V0cyhpbnNfcmVjLCBjdXJzb3ItPmluZGV4LCBvZmZzZXRzLAorCW9mZnNldHMgPSBy ZWNfZ2V0X29mZnNldHMoaW5zX3JlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJICBVTElOVF9VTkRF RklORUQsICZoZWFwKTsKLQlpbnNfZm9sZCA9IHJlY19mb2xkKGluc19yZWMsIG9mZnNldHMsIG5f ZmllbGRzLCBuX2J5dGVzLCBpbmRleF9pZCk7CisJaW5zX2ZvbGQgPSByZWNfZm9sZChpbnNfcmVj LCBvZmZzZXRzLCBuX2ZpZWxkcywgbl9ieXRlcywgaW5kZXgtPmlkKTsKIAogCWlmICghcGFnZV9y ZWNfaXNfc3VwcmVtdW0obmV4dF9yZWMpKSB7Ci0JCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMo bmV4dF9yZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHMsCisJCW9mZnNldHMgPSByZWNfZ2V0X29m ZnNldHMobmV4dF9yZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCQkgIG5fZmllbGRzICsgKG5fYnl0 ZXMgPiAwKSwgJmhlYXApOwogCQluZXh0X2ZvbGQgPSByZWNfZm9sZChuZXh0X3JlYywgb2Zmc2V0 cywgbl9maWVsZHMsCi0JCQkJICAgICBuX2J5dGVzLCBpbmRleF9pZCk7CisJCQkJICAgICBuX2J5 dGVzLCBpbmRleC0+aWQpOwogCX0KIAogCWlmICghcGFnZV9yZWNfaXNfaW5maW11bShyZWMpKSB7 Ci0JCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBjdXJzb3ItPmluZGV4LCBvZmZzZXRz LAorCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsCiAJCQkJ CSAgbl9maWVsZHMgKyAobl9ieXRlcyA+IDApLCAmaGVhcCk7Ci0JCWZvbGQgPSByZWNfZm9sZChy ZWMsIG9mZnNldHMsIG5fZmllbGRzLCBuX2J5dGVzLCBpbmRleF9pZCk7CisJCWZvbGQgPSByZWNf Zm9sZChyZWMsIG9mZnNldHMsIG5fZmllbGRzLCBuX2J5dGVzLCBpbmRleC0+aWQpOwogCX0gZWxz ZSB7CiAJCWlmIChsZWZ0X3NpZGUpIHsKIApAQCAtMTY3Niw2ICsxNjg5LDEwIEBAIGJ0cl9zZWFy Y2hfdXBkYXRlX2hhc2hfb25faW5zZXJ0KAogCiAJCQlsb2NrZWQgPSBUUlVFOwogCisJCQlpZiAo IWJ0cl9zZWFyY2hfZW5hYmxlZCkgeworCQkJCWdvdG8gZnVuY3Rpb25fZXhpdDsKKwkJCX0KKwog CQkJaGFfaW5zZXJ0X2Zvcl9mb2xkKHRhYmxlLCBpbnNfZm9sZCwgYmxvY2ssIGluc19yZWMpOwog CQl9CiAKQEAgLTE2ODksNiArMTcwNiwxMCBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX29uX2lu c2VydCgKIAkJCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAogCQkJbG9ja2Vk ID0gVFJVRTsKKworCQkJaWYgKCFidHJfc2VhcmNoX2VuYWJsZWQpIHsKKwkJCQlnb3RvIGZ1bmN0 aW9uX2V4aXQ7CisJCQl9CiAJCX0KIAogCQlpZiAoIWxlZnRfc2lkZSkgewpAQCAtMTcwNyw2ICsx NzI4LDEwIEBAIGNoZWNrX25leHRfcmVjOgogCQkJCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNo X2xhdGNoKTsKIAogCQkJCWxvY2tlZCA9IFRSVUU7CisKKwkJCQlpZiAoIWJ0cl9zZWFyY2hfZW5h YmxlZCkgeworCQkJCQlnb3RvIGZ1bmN0aW9uX2V4aXQ7CisJCQkJfQogCQkJfQogCiAJCQloYV9p bnNlcnRfZm9yX2ZvbGQodGFibGUsIGluc19mb2xkLCBibG9jaywgaW5zX3JlYyk7CkBAIC0xNzIy LDYgKzE3NDcsMTAgQEAgY2hlY2tfbmV4dF9yZWM6CiAJCQlyd19sb2NrX3hfbG9jaygmYnRyX3Nl YXJjaF9sYXRjaCk7CiAKIAkJCWxvY2tlZCA9IFRSVUU7CisKKwkJCWlmICghYnRyX3NlYXJjaF9l bmFibGVkKSB7CisJCQkJZ290byBmdW5jdGlvbl9leGl0OworCQkJfQogCQl9CiAKIAkJaWYgKCFs ZWZ0X3NpZGUpIHsKQEAgLTE3MjksNyArMTc1OCw3IEBAIGNoZWNrX25leHRfcmVjOgogCQkJaGFf aW5zZXJ0X2Zvcl9mb2xkKHRhYmxlLCBpbnNfZm9sZCwgYmxvY2ssIGluc19yZWMpOwogCQkJLyoK IAkJCWZwdXRzKCJIYXNoIGluc2VydCBmb3IgIiwgc3RkZXJyKTsKLQkJCWRpY3RfaW5kZXhfbmFt ZV9wcmludChzdGRlcnIsIGN1cnNvci0+aW5kZXgpOworCQkJZGljdF9pbmRleF9uYW1lX3ByaW50 KHN0ZGVyciwgaW5kZXgpOwogCQkJZnByaW50ZihzdGRlcnIsICIgZm9sZCAlbHVcbiIsIGluc19m b2xkKTsKIAkJCSovCiAJCX0gZWxzZSB7CkBAIC0xODMyLDIxICsxODYxLDIwIEBAIGJ0cl9zZWFy Y2hfdmFsaWRhdGUodm9pZCkKIAogCQkJdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGJsb2NrLT5p bmRleCkpOwogCi0JCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKChjb25zdCByZWNfdCopIG5v ZGUtPmRhdGEsCisJCQlwYWdlX2luZGV4X2lkID0gYnRyX3BhZ2VfZ2V0X2luZGV4X2lkKGJsb2Nr LT5mcmFtZSk7CisKKwkJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMobm9kZS0+ZGF0YSwKIAkJ CQkJCSAgYmxvY2stPmluZGV4LCBvZmZzZXRzLAogCQkJCQkJICBibG9jay0+Y3Vycl9uX2ZpZWxk cwogCQkJCQkJICArIChibG9jay0+Y3Vycl9uX2J5dGVzID4gMCksCiAJCQkJCQkgICZoZWFwKTsK IAotCQkJcGFnZV9pbmRleF9pZCA9IGJ0cl9wYWdlX2dldF9pbmRleF9pZChibG9jay0+ZnJhbWUp OwotCi0JCQlpZiAoVU5JVl9VTkxJS0VMWQotCQkJICAgICghYmxvY2stPmlzX2hhc2hlZCB8fCBu b2RlLT5mb2xkCi0JCQkgICAgICE9IHJlY19mb2xkKChyZWNfdCopKG5vZGUtPmRhdGEpLAotCQkJ CQkgb2Zmc2V0cywKLQkJCQkJIGJsb2NrLT5jdXJyX25fZmllbGRzLAotCQkJCQkgYmxvY2stPmN1 cnJfbl9ieXRlcywKLQkJCQkJIHBhZ2VfaW5kZXhfaWQpKSkgeworCQkJaWYgKCFibG9jay0+aW5k ZXggfHwgbm9kZS0+Zm9sZAorCQkJICAgICE9IHJlY19mb2xkKG5vZGUtPmRhdGEsCisJCQkJCW9m ZnNldHMsCisJCQkJCWJsb2NrLT5jdXJyX25fZmllbGRzLAorCQkJCQlibG9jay0+Y3Vycl9uX2J5 dGVzLAorCQkJCQlwYWdlX2luZGV4X2lkKSkgewogCQkJCWNvbnN0IHBhZ2VfdCoJcGFnZSA9IGJs b2NrLT5mcmFtZTsKIAogCQkJCW9rID0gRkFMU0U7CkBAIC0xODYyLDIwICsxODkwLDE5IEBAIGJ0 cl9zZWFyY2hfdmFsaWRhdGUodm9pZCkKIAkJCQkJbm9kZS0+ZGF0YSwKIAkJCQkJKHVsbGludCkg cGFnZV9pbmRleF9pZCwKIAkJCQkJKHVsb25nKSBub2RlLT5mb2xkLAotCQkJCQkodWxvbmcpIHJl Y19mb2xkKChyZWNfdCopKG5vZGUtPmRhdGEpLAorCQkJCQkodWxvbmcpIHJlY19mb2xkKG5vZGUt PmRhdGEsCiAJCQkJCQkJIG9mZnNldHMsCiAJCQkJCQkJIGJsb2NrLT5jdXJyX25fZmllbGRzLAog CQkJCQkJCSBibG9jay0+Y3Vycl9uX2J5dGVzLAogCQkJCQkJCSBwYWdlX2luZGV4X2lkKSk7CiAK IAkJCQlmcHV0cygiSW5ub0RCOiBSZWNvcmQgIiwgc3RkZXJyKTsKLQkJCQlyZWNfcHJpbnRfbmV3 KHN0ZGVyciwgKHJlY190Kilub2RlLT5kYXRhLAotCQkJCQkgICAgICBvZmZzZXRzKTsKKwkJCQly ZWNfcHJpbnRfbmV3KHN0ZGVyciwgbm9kZS0+ZGF0YSwgb2Zmc2V0cyk7CiAJCQkJZnByaW50Zihz dGRlcnIsICJcbklubm9EQjogb24gdGhhdCBwYWdlLiIKLQkJCQkJIiBQYWdlIG1lbSBhZGRyZXNz ICVwLCBpcyBoYXNoZWQgJWx1LCIKKwkJCQkJIiBQYWdlIG1lbSBhZGRyZXNzICVwLCBpcyBoYXNo ZWQgJXAsIgogCQkJCQkiIG4gZmllbGRzICVsdSwgbiBieXRlcyAlbHVcbiIKIAkJCQkJIklubm9E Qjogc2lkZSAlbHVcbiIsCi0JCQkJCSh2b2lkKikgcGFnZSwgKHVsb25nKSBibG9jay0+aXNfaGFz aGVkLAorCQkJCQkodm9pZCopIHBhZ2UsICh2b2lkKikgYmxvY2stPmluZGV4LAogCQkJCQkodWxv bmcpIGJsb2NrLT5jdXJyX25fZmllbGRzLAogCQkJCQkodWxvbmcpIGJsb2NrLT5jdXJyX25fYnl0 ZXMsCiAJCQkJCSh1bG9uZykgYmxvY2stPmN1cnJfbGVmdF9zaWRlKTsKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnVmL2J1ZjBidWYuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEy MDQ0OTQ2LW9wY29nMG00ZjQyODVjaTkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1 Zi5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYyMTMzLXZza2xzOWsy cnYwdTZ4MW8KQEAgLTg3Myw4ICs4NzMsNiBAQCBidWZfYmxvY2tfaW5pdCgKIAlibG9jay0+Y2hl Y2tfaW5kZXhfcGFnZV9hdF9mbHVzaCA9IEZBTFNFOwogCWJsb2NrLT5pbmRleCA9IE5VTEw7CiAK LQlibG9jay0+aXNfaGFzaGVkID0gRkFMU0U7Ci0KICNpZmRlZiBVTklWX0RFQlVHCiAJYmxvY2st PnBhZ2UuaW5fcGFnZV9oYXNoID0gRkFMU0U7CiAJYmxvY2stPnBhZ2UuaW5femlwX2hhc2ggPSBG QUxTRTsKQEAgLTEyNzksMTA4ICsxMjc3LDQ3IEBAIGJ1Zl9wb29sX2ZyZWUoCiB9CiAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLURyb3BzIGFkYXB0aXZlIGhhc2ggaW5kZXggZm9yIGEgYnVmZmVyIHBvb2wg aW5zdGFuY2UuICovCi1zdGF0aWMKLXZvaWQKLWJ1Zl9wb29sX2Ryb3BfaGFzaF9pbmRleF9pbnN0 YW5jZSgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidWZfcG9vbF90Kgli dWZfcG9vbCwJCS8qITwgaW46IGJ1ZmZlciBwb29sIGluc3RhbmNlICovCi0JaWJvb2wqCQlyZWxl YXNlZF9zZWFyY2hfbGF0Y2gpCS8qITwgb3V0OiBmbGFnIGZvciBzaWduYWxsaW5nCi0JCQkJCQl3 aGV0aGVyIHRoZSBzZWFyY2ggbGF0Y2ggd2FzCi0JCQkJCQlyZWxlYXNlZCAqLwotewotCWJ1Zl9j aHVua190KgljaHVua3MJPSBidWZfcG9vbC0+Y2h1bmtzOwotCWJ1Zl9jaHVua190KgljaHVuawk9 IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKLQotCXdoaWxlICgtLWNodW5rID49IGNodW5r cykgewotCQl1bGludAkJaTsKLQkJYnVmX2Jsb2NrX3QqCWJsb2NrCT0gY2h1bmstPmJsb2NrczsK LQotCQlmb3IgKGkgPSBjaHVuay0+c2l6ZTsgaS0tOyBibG9jaysrKSB7Ci0JCQkvKiBibG9jay0+ aXNfaGFzaGVkIGNhbm5vdCBiZSBtb2RpZmllZAotCQkJd2hlbiB3ZSBoYXZlIGFuIHgtbGF0Y2gg b24gYnRyX3NlYXJjaF9sYXRjaDsKLQkJCXNlZSB0aGUgY29tbWVudCBpbiBidWYwYnVmLmggKi8K LQotCQkJaWYgKCFibG9jay0+aXNfaGFzaGVkKSB7Ci0JCQkJY29udGludWU7Ci0JCQl9Ci0KLQkJ CS8qIFRvIGZvbGxvdyB0aGUgbGF0Y2hpbmcgb3JkZXIsIHdlCi0JCQloYXZlIHRvIHJlbGVhc2Ug YnRyX3NlYXJjaF9sYXRjaAotCQkJYmVmb3JlIGFjcXVpcmluZyBibG9jay0+bGF0Y2guICovCi0J CQlyd19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKLQkJCS8qIFdoZW4gd2UgcmVs ZWFzZSB0aGUgc2VhcmNoIGxhdGNoLAotCQkJd2UgbXVzdCByZXNjYW4gYWxsIGJsb2NrcywgYmVj YXVzZQotCQkJc29tZSBtYXkgYmVjb21lIGhhc2hlZCBhZ2Fpbi4gKi8KLQkJCSpyZWxlYXNlZF9z ZWFyY2hfbGF0Y2ggPSBUUlVFOwotCi0JCQlyd19sb2NrX3hfbG9jaygmYmxvY2stPmxvY2spOwot Ci0JCQkvKiBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IHRoZQotCQkJY2FsbGVycywgd2hp Y2ggd2lsbCBiZSBob2xkaW5nCi0JCQlidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXguICovCi0JCQl1 dF9hZCghYnRyX3NlYXJjaF9lbmFibGVkKTsKLQotCQkJLyogQmVjYXVzZSB3ZSBkaWQgbm90IGJ1 ZmZlci1maXggdGhlCi0JCQlibG9jayBieSBjYWxsaW5nIGJ1Zl9ibG9ja19nZXRfZ2VuKCksCi0J CQlpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBibG9jayBoYXMgYmVlbgotCQkJYWxsb2NhdGVkIGZv ciBzb21lIG90aGVyIHVzZSBhZnRlcgotCQkJYnRyX3NlYXJjaF9sYXRjaCB3YXMgcmVsZWFzZWQg YWJvdmUuCi0JCQlXZSBkbyBub3QgY2FyZSB3aGljaCBmaWxlIHBhZ2UgdGhlCi0JCQlibG9jayBp cyBtYXBwZWQgdG8uICBBbGwgd2Ugd2FudCB0byBkbwotCQkJaXMgdG8gZHJvcCBhbnkgaGFzaCBl bnRyaWVzIHJlZmVycmluZwotCQkJdG8gdGhlIHBhZ2UuICovCi0KLQkJCS8qIEl0IGlzIHBvc3Np YmxlIHRoYXQKLQkJCWJsb2NrLT5wYWdlLnN0YXRlICE9IEJVRl9GSUxFX1BBR0UuCi0JCQlFdmVu IHRoYXQgZG9lcyBub3QgbWF0dGVyLCBiZWNhdXNlCi0JCQlidHJfc2VhcmNoX2Ryb3BfcGFnZV9o YXNoX2luZGV4KCkgd2lsbAotCQkJY2hlY2sgYmxvY2stPmlzX2hhc2hlZCBiZWZvcmUgZG9pbmcK LQkJCWFueXRoaW5nLiAgYmxvY2stPmlzX2hhc2hlZCBjYW4gb25seQotCQkJYmUgc2V0IG9uIHVu Y29tcHJlc3NlZCBmaWxlIHBhZ2VzLiAqLwotCi0JCQlidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNo X2luZGV4KGJsb2NrKTsKLQotCQkJcndfbG9ja194X3VubG9jaygmYmxvY2stPmxvY2spOwotCi0J CQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0KLQkJCXV0X2FkKCFidHJfc2Vh cmNoX2VuYWJsZWQpOwotCQl9Ci0JfQotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1Ecm9wcyB0aGUg YWRhcHRpdmUgaGFzaCBpbmRleC4gIFRvIHByZXZlbnQgYSBsaXZlbG9jaywgdGhpcyBmdW5jdGlv bgotaXMgb25seSB0byBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBidHJfc2VhcmNoX2xhdGNoIGFu ZCB3aGlsZQotYnRyX3NlYXJjaF9lbmFibGVkID09IEZBTFNFLiAqLworQ2xlYXJzIHRoZSBhZGFw dGl2ZSBoYXNoIGluZGV4IG9uIGFsbCBwYWdlcyBpbiB0aGUgYnVmZmVyIHBvb2wuICovCiBVTklW X0lOVEVSTgogdm9pZAotYnVmX3Bvb2xfZHJvcF9oYXNoX2luZGV4KHZvaWQpCi0vKj09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KK2J1Zl9wb29sX2NsZWFyX2hhc2hfaW5kZXgodm9pZCkKKy8q PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIHsKLQlpYm9vbAkJcmVsZWFzZWRfc2VhcmNo X2xhdGNoOworCXVsaW50CXA7CiAKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1dF9hZChyd19s b2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZf U1lOQ19ERUJVRyAqLwogCXV0X2FkKCFidHJfc2VhcmNoX2VuYWJsZWQpOwogCi0JZG8gewotIAkJ dWxpbnQJaTsKLQotCQlyZWxlYXNlZF9zZWFyY2hfbGF0Y2ggPSBGQUxTRTsKLQotCQlmb3IgKGkg PSAwOyBpIDwgc3J2X2J1Zl9wb29sX2luc3RhbmNlczsgaSsrKSB7Ci0gCQkJYnVmX3Bvb2xfdCoJ YnVmX3Bvb2w7Ci0KLQkJCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZnJvbV9hcnJheShpKTsKLQotCQkJ YnVmX3Bvb2xfZHJvcF9oYXNoX2luZGV4X2luc3RhbmNlKAotCQkJCWJ1Zl9wb29sLCAmcmVsZWFz ZWRfc2VhcmNoX2xhdGNoKTsKKwlmb3IgKHAgPSAwOyBwIDwgc3J2X2J1Zl9wb29sX2luc3RhbmNl czsgcCsrKSB7CisJCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZnJvbV9hcnJheShw KTsKKwkJYnVmX2NodW5rX3QqCWNodW5rcwk9IGJ1Zl9wb29sLT5jaHVua3M7CisJCWJ1Zl9jaHVu a190KgljaHVuawk9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKKworCQl3aGlsZSAoLS1j aHVuayA+PSBjaHVua3MpIHsKKwkJCWJ1Zl9ibG9ja190KglibG9jawk9IGNodW5rLT5ibG9ja3M7 CisJCQl1bGludAkJaQk9IGNodW5rLT5zaXplOworCisJCQlmb3IgKDsgaS0tOyBibG9jaysrKSB7 CisJCQkJZGljdF9pbmRleF90KglpbmRleAk9IGJsb2NrLT5pbmRleDsKKworCQkJCS8qIFdlIGNh biBzZXQgYmxvY2stPmluZGV4ID0gTlVMTAorCQkJCXdoZW4gd2UgaGF2ZSBhbiB4LWxhdGNoIG9u IGJ0cl9zZWFyY2hfbGF0Y2g7CisJCQkJc2VlIHRoZSBjb21tZW50IGluIGJ1ZjBidWYuaCAqLwor CisJCQkJaWYgKCFpbmRleCkgeworCQkJCQkvKiBOb3QgaGFzaGVkICovCisJCQkJCWNvbnRpbnVl OworCQkJCX0KKworCQkJCWJsb2NrLT5pbmRleCA9IE5VTEw7CisjIGlmIGRlZmluZWQgVU5JVl9B SElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCisJCQkJYmxvY2stPm5fcG9pbnRlcnMgPSAw OworIyBlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCisJCQl9CiAJCX0K LQotCX0gd2hpbGUgKHJlbGVhc2VkX3NlYXJjaF9sYXRjaCk7CisJfQogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCkBAIC0xNzQwLDM4ICsxNjc3LDYgQEAgYnVmX3Jlc2V0X2NoZWNrX2luZGV4X3BhZ2Vf YXRfZmx1c2goCiAJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7CiB9CiAKLS8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKLVJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgaXNfaGFzaGVkIG9mIGEgcGFn ZS4gRkFMU0UgaWYgdGhlIHBhZ2UgaXMKLW5vdCBpbiB0aGUgcG9vbC4gTk9URSB0aGF0IHRoaXMg b3BlcmF0aW9uIGRvZXMgbm90IGZpeCB0aGUgcGFnZSBpbiB0aGUKLXBvb2wgaWYgaXQgaXMgZm91 bmQgdGhlcmUuCi1AcmV0dXJuCVRSVUUgaWYgcGFnZSBoYXNoIGluZGV4IGlzIGJ1aWx0IGluIHNl YXJjaCBzeXN0ZW0gKi8KLVVOSVZfSU5URVJOCi1pYm9vbAotYnVmX3BhZ2VfcGVla19pZl9zZWFy Y2hfaGFzaGVkKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCXVsaW50CXNwYWNl LAkvKiE8IGluOiBzcGFjZSBpZCAqLwotCXVsaW50CW9mZnNldCkJLyohPCBpbjogcGFnZSBudW1i ZXIgKi8KLXsKLQlidWZfYmxvY2tfdCoJYmxvY2s7Ci0JaWJvb2wJCWlzX2hhc2hlZDsKLQlidWZf cG9vbF90KglidWZfcG9vbCA9IGJ1Zl9wb29sX2dldChzcGFjZSwgb2Zmc2V0KTsKLQotCWJ1Zl9w b29sX211dGV4X2VudGVyKGJ1Zl9wb29sKTsKLQotCWJsb2NrID0gKGJ1Zl9ibG9ja190KikgYnVm X3BhZ2VfaGFzaF9nZXQoYnVmX3Bvb2wsIHNwYWNlLCBvZmZzZXQpOwotCi0JaWYgKCFibG9jayB8 fCBidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSAhPSBCVUZfQkxPQ0tfRklMRV9QQUdFKSB7Ci0J CWlzX2hhc2hlZCA9IEZBTFNFOwotCX0gZWxzZSB7Ci0JCXV0X2FkKCFidWZfcG9vbF93YXRjaF9p c19zZW50aW5lbChidWZfcG9vbCwgJmJsb2NrLT5wYWdlKSk7Ci0JCWlzX2hhc2hlZCA9IGJsb2Nr LT5pc19oYXNoZWQ7Ci0JfQotCi0JYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7Ci0KLQly ZXR1cm4oaXNfaGFzaGVkKTsKLX0KLQogI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyBmaWxlX3Bh Z2Vfd2FzX2ZyZWVkIFRSVUUgaWYgdGhlIHBhZ2UgaXMgZm91bmQgaW4gdGhlIGJ1ZmZlciBwb29s LgpAQCAtMTk4MSw3ICsxODg2LDYgQEAgYnVmX2Jsb2NrX2luaXRfbG93KAogCWJsb2NrLT5pbmRl eAkJPSBOVUxMOwogCiAJYmxvY2stPm5faGFzaF9oZWxwcwk9IDA7Ci0JYmxvY2stPmlzX2hhc2hl ZAk9IEZBTFNFOwogCWJsb2NrLT5uX2ZpZWxkcwkJPSAxOwogCWJsb2NrLT5uX2J5dGVzCQk9IDA7 CiAJYmxvY2stPmxlZnRfc2lkZQk9IFRSVUU7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9idWYvYnVmMGxydS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1 LmMJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBt NGY0Mjg1Y2k5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MjEzMy12c2tsczlrMnJ2MHU2eDFvCkBAIC0y NzMsNyArMjczLDcgQEAgbmV4dF9wYWdlOgogCiAJCW11dGV4X2VudGVyKCYoKGJ1Zl9ibG9ja190 KikgYnBhZ2UpLT5tdXRleCk7CiAJCWlzX2ZpeGVkID0gYnBhZ2UtPmJ1Zl9maXhfY291bnQgPiAw Ci0JCQl8fCAhKChidWZfYmxvY2tfdCopIGJwYWdlKS0+aXNfaGFzaGVkOworCQkJfHwgISgoYnVm X2Jsb2NrX3QqKSBicGFnZSktPmluZGV4OwogCQltdXRleF9leGl0KCYoKGJ1Zl9ibG9ja190Kikg YnBhZ2UpLT5tdXRleCk7CiAKIAkJaWYgKGlzX2ZpeGVkKSB7CkBAIC00MDUsNyArNDA1LDcgQEAg c2Nhbl9hZ2FpbjoKIAkJaWYgKGJ1Zl9wYWdlX2dldF9zdGF0ZShicGFnZSkgIT0gQlVGX0JMT0NL X0ZJTEVfUEFHRSkgewogCQkJLyogVGhpcyBpcyBhIGNvbXByZXNzZWQtb25seSBibG9jawogCQkJ ZGVzY3JpcHRvci4gRG8gbm90aGluZy4gKi8KLQkJfSBlbHNlIGlmICgoKGJ1Zl9ibG9ja190Kikg YnBhZ2UpLT5pc19oYXNoZWQpIHsKKwkJfSBlbHNlIGlmICgoKGJ1Zl9ibG9ja190KikgYnBhZ2Up LT5pbmRleCkgewogCQkJdWxpbnQJcGFnZV9ubzsKIAkJCXVsaW50CXppcF9zaXplOwogCkBAIC00 MTcsNyArNDE3LDcgQEAgc2Nhbl9hZ2FpbjoKIAkJCW11dGV4X2V4aXQoYmxvY2tfbXV0ZXgpOwog CiAJCQkvKiBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjYWxsIHdpbGwgYWNxdWlyZQotCQkJYW4g Uy1sYXRjaCBvbiB0aGUgcGFnZSAqLworCQkJYW5kIHJlbGVhc2UgYW4gWC1sYXRjaCBvbiB0aGUg cGFnZS4gKi8KIAogCQkJYnRyX3NlYXJjaF9kcm9wX3BhZ2VfaGFzaF93aGVuX2ZyZWVkKAogCQkJ CWlkLCB6aXBfc2l6ZSwgcGFnZV9ubyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9oYS9oYTBoYS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhL2hhMGhhLmMJcmV2aWQ6 dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGEvaGEwaGEuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMTAxMjA2MjEzMy12c2tsczlrMnJ2MHU2eDFvCkBAIC0xLDYgKzEsNiBAQAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jh c2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtODksNDAgKzg5LDYgQEAg aGFfY3JlYXRlX2Z1bmMoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRW1wdGllcyBhIGhhc2ggdGFibGUgYW5k IGZyZWVzIHRoZSBtZW1vcnkgaGVhcHMuICovCi1VTklWX0lOVEVSTgotdm9pZAotaGFfY2xlYXIo Ci0vKj09PT09Ki8KLQloYXNoX3RhYmxlX3QqCXRhYmxlKQkvKiE8IGluLCBvd246IGhhc2ggdGFi bGUgKi8KLXsKLQl1bGludAlpOwotCXVsaW50CW47Ci0KLQl1dF9hZCh0YWJsZSk7Ci0JdXRfYWQo dGFibGUtPm1hZ2ljX24gPT0gSEFTSF9UQUJMRV9NQUdJQ19OKTsKLSNpZmRlZiBVTklWX1NZTkNf REVCVUcKLQl1dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWENM VVNJVkUpKTsKLSNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KLQotI2lmbmRlZiBVTklWX0hP VEJBQ0tVUAotCS8qIEZyZWUgdGhlIG1lbW9yeSBoZWFwcy4gKi8KLQluID0gdGFibGUtPm5fbXV0 ZXhlczsKLQotCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJbWVtX2hlYXBfZnJlZSh0YWJs ZS0+aGVhcHNbaV0pOwotCX0KLSNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KLQotCS8qIENs ZWFyIHRoZSBoYXNoIHRhYmxlLiAqLwotCW4gPSBoYXNoX2dldF9uX2NlbGxzKHRhYmxlKTsKLQot CWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLQkJaGFzaF9nZXRfbnRoX2NlbGwodGFibGUsIGkp LT5ub2RlID0gTlVMTDsKLQl9Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogSW5zZXJ0cyBhbiBlbnRyeSBpbnRv IGEgaGFzaCB0YWJsZS4gSWYgYW4gZW50cnkgd2l0aCB0aGUgc2FtZSBmb2xkIG51bWJlcgogaXMg Zm91bmQsIGl0cyBub2RlIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyBkYXRhLCBhbmQg bm8gbmV3IG5vZGUKIGlzIGluc2VydGVkLiBJZiBidHJfc2VhcmNoX2VuYWJsZWQgaXMgc2V0IHRv IEZBTFNFLCB3ZSB3aWxsIG9ubHkgYWxsb3cKQEAgLTE0MCw3ICsxMDYsNyBAQCBoYV9pbnNlcnRf Zm9yX2ZvbGRfZnVuYygKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5J Vl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjogYnVmZmVyIGJsb2NrIGNvbnRh aW5pbmcgdGhlIGRhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVH ICovCi0Jdm9pZCoJCWRhdGEpCS8qITwgaW46IGRhdGEsIG11c3Qgbm90IGJlIE5VTEwgKi8KKwlj b25zdCByZWNfdCoJZGF0YSkJLyohPCBpbjogZGF0YSwgbXVzdCBub3QgYmUgTlVMTCAqLwogewog CWhhc2hfY2VsbF90KgljZWxsOwogCWhhX25vZGVfdCoJbm9kZTsKQEAgLTE1Myw3ICsxMTksMTEg QEAgaGFfaW5zZXJ0X2Zvcl9mb2xkX2Z1bmMoCiAjaWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8 fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKGJsb2NrLT5mcmFtZSA9PSBwYWdlX2FsaWduKGRh dGEpKTsKICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCisjaWZkZWYg VU5JVl9TWU5DX0RFQlVHCisJdXRfYWQocndfbG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJX X0xPQ0tfRVgpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAlBU1NFUlRfSEFTSF9N VVRFWF9PV04odGFibGUsIGZvbGQpOworCXV0X2FkKGJ0cl9zZWFyY2hfZW5hYmxlZCk7CiAKIAlo YXNoID0gaGFzaF9jYWxjX2hhc2goZm9sZCwgdGFibGUpOwogCkBAIC0xNzMsNyArMTQzLDYgQEAg aGFfaW5zZXJ0X2Zvcl9mb2xkX2Z1bmMoCiAJCQkJcHJldl9ibG9jay0+bl9wb2ludGVycy0tOwog CQkJCWJsb2NrLT5uX3BvaW50ZXJzKys7CiAJCQl9Ci0JCQl1dF9hZCghYnRyX3NlYXJjaF9mdWxs eV9kaXNhYmxlZCk7CiAjIGVuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogCiAJCQlwcmV2X25v ZGUtPmJsb2NrID0gYmxvY2s7CkBAIC0xODYsMTMgKzE1NSw2IEBAIGhhX2luc2VydF9mb3JfZm9s ZF9mdW5jKAogCQlwcmV2X25vZGUgPSBwcmV2X25vZGUtPm5leHQ7CiAJfQogCi0JLyogV2UgYXJl IGluIHRoZSBwcm9jZXNzIG9mIGRpc2FibGluZyBoYXNoIGluZGV4LCBkbyBub3QgYWRkCi0JbmV3 IGNoYWluIG5vZGUgKi8KLQlpZiAoIWJ0cl9zZWFyY2hfZW5hYmxlZCkgewotCQl1dF9hZCghYnRy X3NlYXJjaF9mdWxseV9kaXNhYmxlZCk7Ci0JCXJldHVybihUUlVFKTsKLQl9Ci0KIAkvKiBXZSBo YXZlIHRvIGFsbG9jYXRlIGEgbmV3IGNoYWluIG5vZGUgKi8KIAogCW5vZGUgPSBtZW1faGVhcF9h bGxvYyhoYXNoX2dldF9oZWFwKHRhYmxlLCBmb2xkKSwgc2l6ZW9mKGhhX25vZGVfdCkpOwpAQCAt MjUwLDYgKzIxMiwxMCBAQCBoYV9kZWxldGVfaGFzaF9ub2RlKAogewogCXV0X2FkKHRhYmxlKTsK IAl1dF9hZCh0YWJsZS0+bWFnaWNfbiA9PSBIQVNIX1RBQkxFX01BR0lDX04pOworI2lmZGVmIFVO SVZfU1lOQ19ERUJVRworCXV0X2FkKHJ3X2xvY2tfb3duKCZidHJfc2VhcmNoX2xhdGNoLCBSV19M T0NLX0VYKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisJdXRfYWQoYnRyX3NlYXJj aF9lbmFibGVkKTsKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9E RUJVRwogIyBpZm5kZWYgVU5JVl9IT1RCQUNLVVAKIAlpZiAodGFibGUtPmFkYXB0aXZlKSB7CkBA IC0yNzIsMTEgKzIzOCwxMSBAQCBoYV9zZWFyY2hfYW5kX3VwZGF0ZV9pZl9mb3VuZF9mdW5jKAog Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAloYXNoX3RhYmxlX3QqCXRhYmxl LAkvKiE8IGluL291dDogaGFzaCB0YWJsZSAqLwogCXVsaW50CQlmb2xkLAkvKiE8IGluOiBmb2xk ZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8KLQl2b2lkKgkJZGF0YSwJLyohPCBpbjog cG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KglkYXRhLAkvKiE8IGluOiBwb2lu dGVyIHRvIHRoZSBkYXRhICovCiAjaWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfREVCVUcKIAlidWZfYmxvY2tfdCoJbmV3X2Jsb2NrLC8qITwgaW46IGJsb2NrIGNvbnRh aW5pbmcgbmV3X2RhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVH ICovCi0Jdm9pZCoJCW5ld19kYXRhKS8qITwgaW46IG5ldyBwb2ludGVyIHRvIHRoZSBkYXRhICov CisJY29uc3QgcmVjX3QqCW5ld19kYXRhKS8qITwgaW46IG5ldyBwb2ludGVyIHRvIHRoZSBkYXRh ICovCiB7CiAJaGFfbm9kZV90Kglub2RlOwogCkBAIC0yODYsNiArMjUyLDEzIEBAIGhhX3NlYXJj aF9hbmRfdXBkYXRlX2lmX2ZvdW5kX2Z1bmMoCiAjaWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8 fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKG5ld19ibG9jay0+ZnJhbWUgPT0gcGFnZV9hbGln bihuZXdfZGF0YSkpOwogI2VuZGlmIC8qIFVOSVZfQUhJX0RFQlVHIHx8IFVOSVZfREVCVUcgKi8K KyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9s YXRjaCwgUldfTE9DS19FWCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCisJaWYg KCFidHJfc2VhcmNoX2VuYWJsZWQpIHsKKwkJcmV0dXJuOworCX0KIAogCW5vZGUgPSBoYV9zZWFy Y2hfd2l0aF9kYXRhKHRhYmxlLCBmb2xkLCBkYXRhKTsKIApAQCAtMzIyLDYgKzI5NSwxMCBAQCBo YV9yZW1vdmVfYWxsX25vZGVzX3RvX3BhZ2UoCiAJdXRfYWQodGFibGUpOwogCXV0X2FkKHRhYmxl LT5tYWdpY19uID09IEhBU0hfVEFCTEVfTUFHSUNfTik7CiAJQVNTRVJUX0hBU0hfTVVURVhfT1dO KHRhYmxlLCBmb2xkKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZChyd19sb2NrX293 bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19E RUJVRyAqLworCXV0X2FkKGJ0cl9zZWFyY2hfZW5hYmxlZCk7CiAKIAlub2RlID0gaGFfY2hhaW5f Z2V0X2ZpcnN0KHRhYmxlLCBmb2xkKTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxl ci9oYV9pbm5vZGIuY2MJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0 NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9p bm5vZGIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIwNjIxMzMtdnNr bHM5azJydjB1NngxbwpAQCAtMjU4Myw3ICsyNTgzLDYgQEAgaW5ub2Jhc2VfY2hhbmdlX2J1ZmZl cmluZ19pbml0ZWRfb2s6CiAJLyogR2V0IHRoZSBjdXJyZW50IGhpZ2ggd2F0ZXIgbWFyayBmb3Jt YXQuICovCiAJaW5ub2Jhc2VfZmlsZV9mb3JtYXRfbWF4ID0gKGNoYXIqKSB0cnhfc3lzX2ZpbGVf Zm9ybWF0X21heF9nZXQoKTsKIAotCWJ0cl9zZWFyY2hfZnVsbHlfZGlzYWJsZWQgPSAoIWJ0cl9z ZWFyY2hfZW5hYmxlZCk7CiAJREJVR19SRVRVUk4oRkFMU0UpOwogZXJyb3I6CiAJREJVR19SRVRV Uk4oVFJVRSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYw aWJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6dmlu YXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5Cisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMTAxMjA2MjEzMy12c2tsczlrMnJ2MHU2eDFvCkBAIC0zOTU1LDcgKzM5 NTUsNyBAQCBpYnVmX2luc2VydF90b19pbmRleF9wYWdlKAogCiAJdXRfYWQoaWJ1Zl9pbnNpZGUo bXRyKSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5cGVkKGVudHJ5KSk7Ci0JdXRfYWQoIWJ1Zl9i bG9ja19hbGlnbihwYWdlKS0+aXNfaGFzaGVkKTsKKwl1dF9hZCghYnVmX2Jsb2NrX2FsaWduKHBh Z2UpLT5pbmRleCk7CiAKIAlpZiAoVU5JVl9VTkxJS0VMWShkaWN0X3RhYmxlX2lzX2NvbXAoaW5k ZXgtPnRhYmxlKQogCQkJICAhPSAoaWJvb2wpISFwYWdlX2lzX2NvbXAocGFnZSkpKSB7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaCcKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaAlyZXZpZDp2aW5heS5maXNyZWthckBv cmFjbGUuY29tLTIwMTExMDEyMDQ0OTQ2LW9wY29nMG00ZjQyODVjaTkKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9pbmNsdWRlL2J0cjBzZWEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMTAxMjA2MjEzMy12c2tsczlrMnJ2MHU2eDFvCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NiwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFs bCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMTEsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTQxLDggKzE0MSw4IEBAIGJ0cl9zZWFy Y2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoCiAJCQkJZm9yIHdoaWNoIHdlIGtub3cgdGhhdAogCQkJ CWJsb2NrLT5idWZfZml4X2NvdW50ID09IDAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLURyb3BzIGEg cGFnZSBoYXNoIGluZGV4IHdoZW4gYSBwYWdlIGlzIGZyZWVkIGZyb20gYSBmc2VnIHRvIHRoZSBm aWxlIHN5c3RlbS4KLURyb3BzIHBvc3NpYmxlIGhhc2ggaW5kZXggaWYgdGhlIHBhZ2UgaGFwcGVu cyB0byBiZSBpbiB0aGUgYnVmZmVyIHBvb2wuICovCitEcm9wcyBhIHBvc3NpYmxlIHBhZ2UgaGFz aCBpbmRleCB3aGVuIGEgcGFnZSBpcyBldmljdGVkIGZyb20gdGhlIGJ1ZmZlciBwb29sCitvciBm cmVlZCBpbiBhIGZpbGUgc2VnbWVudC4gKi8KIFVOSVZfSU5URVJOCiB2b2lkCiBidHJfc2VhcmNo X2Ryb3BfcGFnZV9oYXNoX3doZW5fZnJlZWQoCkBAIC0xOTIsMTYgKzE5Miw2IEBAIGJ0cl9zZWFy Y2hfdmFsaWRhdGUodm9pZCk7CiAjIGRlZmluZSBidHJfc2VhcmNoX3ZhbGlkYXRlKCkJVFJVRQog I2VuZGlmIC8qIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHICov CiAKLS8qKiBGbGFnOiBoYXMgdGhlIHNlYXJjaCBzeXN0ZW0gYmVlbiBlbmFibGVkPwotUHJvdGVj dGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2ggYW5kIGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleC4gKi8K LWV4dGVybiBjaGFyCWJ0cl9zZWFyY2hfZW5hYmxlZDsKLQotLyoqIEZsYWc6IHdoZXRoZXIgdGhl IHNlYXJjaCBzeXN0ZW0gaGFzIGNvbXBsZXRlZCBpdHMgZGlzYWJsaW5nIHByb2Nlc3MsCi1JdCBp cyBzZXQgdG8gVFJVRSByaWdodCBhZnRlciBidWZfcG9vbF9kcm9wX2hhc2hfaW5kZXgoKSBpbgot YnRyX3NlYXJjaF9kaXNhYmxlKCksIGluZGljYXRpbmcgaGFzaCBpbmRleCBlbnRyaWVzIGFyZSBj bGVhbmVkIHVwLgotUHJvdGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0Y2ggYW5kIGJ0cl9zZWFyY2hf ZW5hYmxlZF9tdXRleC4gKi8KLWV4dGVybiBpYm9vbAlidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVk OwotCiAvKiogVGhlIHNlYXJjaCBpbmZvIHN0cnVjdCBpbiBhbiBpbmRleCAqLwogc3RydWN0IGJ0 cl9zZWFyY2hfc3RydWN0ewogCXVsaW50CXJlZl9jb3VudDsJLyohPCBOdW1iZXIgb2YgYmxvY2tz IGluIHRoaXMgaW5kZXggdHJlZQpAQCAtMjcwLDI0ICsyNjAsNiBAQCBzdHJ1Y3QgYnRyX3NlYXJj aF9zeXNfc3RydWN0ewogLyoqIFRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4ICovCiBleHRlcm4gYnRy X3NlYXJjaF9zeXNfdCoJYnRyX3NlYXJjaF9zeXM7CiAKLS8qKiBAYnJpZWYgVGhlIGxhdGNoIHBy b3RlY3RpbmcgdGhlIGFkYXB0aXZlIHNlYXJjaCBzeXN0ZW0KLQotVGhpcyBsYXRjaCBwcm90ZWN0 cyB0aGUKLSgxKSBoYXNoIGluZGV4OwotKDIpIGNvbHVtbnMgb2YgYSByZWNvcmQgdG8gd2hpY2gg d2UgaGF2ZSBhIHBvaW50ZXIgaW4gdGhlIGhhc2ggaW5kZXg7Ci0KLWJ1dCBkb2VzIE5PVCBwcm90 ZWN0OgotCi0oMykgbmV4dCByZWNvcmQgb2Zmc2V0IGZpZWxkIGluIGEgcmVjb3JkOwotKDQpIG5l eHQgb3IgcHJldmlvdXMgcmVjb3JkcyBvbiB0aGUgc2FtZSBwYWdlLgotCi1CZWFyIGluIG1pbmQg KDMpIGFuZCAoNCkgd2hlbiB1c2luZyB0aGUgaGFzaCBpbmRleC4KLSovCi1leHRlcm4gcndfbG9j a190KglidHJfc2VhcmNoX2xhdGNoX3RlbXA7Ci0KLS8qKiBUaGUgbGF0Y2ggcHJvdGVjdGluZyB0 aGUgYWRhcHRpdmUgc2VhcmNoIHN5c3RlbSAqLwotI2RlZmluZSBidHJfc2VhcmNoX2xhdGNoCSgq YnRyX3NlYXJjaF9sYXRjaF90ZW1wKQotCiAjaWZkZWYgVU5JVl9TRUFSQ0hfUEVSRl9TVEFUCiAv KiogTnVtYmVyIG9mIHN1Y2Nlc3NmdWwgYWRhcHRpdmUgaGFzaCBpbmRleCBsb29rdXBzICovCiBl eHRlcm4gdWxpbnQJYnRyX3NlYXJjaF9uX3N1Y2M7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjB0eXBlcy5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnRyMHR5cGVzLmgJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAx MjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dHIwdHlwZXMuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MjEzMy12 c2tsczlrMnJ2MHU2eDFvCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAK LUNvcHlyaWdodCAoYykgMTk5NiwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZQpAQCAtMzAsNiArMzAsNyBAQCBDcmVhdGVkIDIvMTcvMTk5NiBIZWlra2kg VHV1cmkKIAogI2luY2x1ZGUgInJlbTB0eXBlcy5oIgogI2luY2x1ZGUgInBhZ2UwdHlwZXMuaCIK KyNpbmNsdWRlICJzeW5jMHJ3LmgiCiAKIC8qKiBQZXJzaXN0ZW50IGN1cnNvciAqLwogdHlwZWRl ZiBzdHJ1Y3QgYnRyX3BjdXJfc3RydWN0CQlidHJfcGN1cl90OwpAQCAtMzgsNiArMzksMjggQEAg dHlwZWRlZiBzdHJ1Y3QgYnRyX2N1cl9zdHJ1Y3QJCWJ0cl9jdXJfdAogLyoqIEItdHJlZSBzZWFy Y2ggaW5mb3JtYXRpb24gZm9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4ICovCiB0eXBlZGVmIHN0 cnVjdCBidHJfc2VhcmNoX3N0cnVjdAlidHJfc2VhcmNoX3Q7CiAKKy8qKiBAYnJpZWYgVGhlIGxh dGNoIHByb3RlY3RpbmcgdGhlIGFkYXB0aXZlIHNlYXJjaCBzeXN0ZW0KKworVGhpcyBsYXRjaCBw cm90ZWN0cyB0aGUKKygxKSBoYXNoIGluZGV4OworKDIpIGNvbHVtbnMgb2YgYSByZWNvcmQgdG8g d2hpY2ggd2UgaGF2ZSBhIHBvaW50ZXIgaW4gdGhlIGhhc2ggaW5kZXg7CisKK2J1dCBkb2VzIE5P VCBwcm90ZWN0OgorCisoMykgbmV4dCByZWNvcmQgb2Zmc2V0IGZpZWxkIGluIGEgcmVjb3JkOwor KDQpIG5leHQgb3IgcHJldmlvdXMgcmVjb3JkcyBvbiB0aGUgc2FtZSBwYWdlLgorCitCZWFyIGlu IG1pbmQgKDMpIGFuZCAoNCkgd2hlbiB1c2luZyB0aGUgaGFzaCBpbmRleC4KKyovCitleHRlcm4g cndfbG9ja190KglidHJfc2VhcmNoX2xhdGNoX3RlbXA7CisKKy8qKiBUaGUgbGF0Y2ggcHJvdGVj dGluZyB0aGUgYWRhcHRpdmUgc2VhcmNoIHN5c3RlbSAqLworI2RlZmluZSBidHJfc2VhcmNoX2xh dGNoCSgqYnRyX3NlYXJjaF9sYXRjaF90ZW1wKQorCisvKiogRmxhZzogaGFzIHRoZSBzZWFyY2gg c3lzdGVtIGJlZW4gZW5hYmxlZD8KK1Byb3RlY3RlZCBieSBidHJfc2VhcmNoX2xhdGNoLiAqLwor ZXh0ZXJuIGNoYXIJYnRyX3NlYXJjaF9lbmFibGVkOworCiAjaWZkZWYgVU5JVl9CTE9CX0RFQlVH CiAjIGluY2x1ZGUgImJ1ZjB0eXBlcy5oIgogLyoqIEFuIGluZGV4LT5ibG9icyBlbnRyeSBmb3Ig a2VlcGluZyB0cmFjayBvZiBvZmYtcGFnZSBjb2x1bW4gcmVmZXJlbmNlcyAqLwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xl LmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5CisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEw MTIwNjIxMzMtdnNrbHM5azJydjB1NngxbwpAQCAtMjI5LDEzICsyMjksMTEgQEAgYnVmX3Bvb2xf ZnJlZSgKIAl1bGludAluX2luc3RhbmNlcyk7CS8qITwgaW46IG51bWJlcmUgb2YgaW5zdGFuY2Vz IHRvIGZyZWUgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRHJvcHMgdGhlIGFkYXB0aXZlIGhhc2gg aW5kZXguICBUbyBwcmV2ZW50IGEgbGl2ZWxvY2ssIHRoaXMgZnVuY3Rpb24KLWlzIG9ubHkgdG8g YmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYnRyX3NlYXJjaF9sYXRjaCBhbmQgd2hpbGUKLWJ0cl9z ZWFyY2hfZW5hYmxlZCA9PSBGQUxTRS4gKi8KK0NsZWFycyB0aGUgYWRhcHRpdmUgaGFzaCBpbmRl eCBvbiBhbGwgcGFnZXMgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLwogVU5JVl9JTlRFUk4KIHZvaWQK LWJ1Zl9wb29sX2Ryb3BfaGFzaF9pbmRleCh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT09PT09 PT09PT0qLworYnVmX3Bvb2xfY2xlYXJfaGFzaF9pbmRleCh2b2lkKTsKKy8qPT09PT09PT09PT09 PT09PT09PT09PT09PT09Ki8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVsb2NhdGUgYSBidWZmZXIg Y29udHJvbCBibG9jay4gIFJlbG9jYXRlcyB0aGUgYmxvY2sgb24gdGhlIExSVSBsaXN0CkBAIC01 NjgsMTcgKzU2Niw2IEBAIGJ1Zl9wYWdlX3BlZWtfaWZfdG9vX29sZCgKIC8qPT09PT09PT09PT09 PT09PT09PT09Ki8KIAljb25zdCBidWZfcGFnZV90KglicGFnZSk7CS8qITwgaW46IGJsb2NrIHRv IG1ha2UgeW91bmdlciAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmV0dXJucyB0aGUgY3VycmVudCBz dGF0ZSBvZiBpc19oYXNoZWQgb2YgYSBwYWdlLiBGQUxTRSBpZiB0aGUgcGFnZSBpcwotbm90IGlu IHRoZSBwb29sLiBOT1RFIHRoYXQgdGhpcyBvcGVyYXRpb24gZG9lcyBub3QgZml4IHRoZSBwYWdl IGluIHRoZQotcG9vbCBpZiBpdCBpcyBmb3VuZCB0aGVyZS4KLUByZXR1cm4JVFJVRSBpZiBwYWdl IGhhc2ggaW5kZXggaXMgYnVpbHQgaW4gc2VhcmNoIHN5c3RlbSAqLwotVU5JVl9JTlRFUk4KLWli b29sCi1idWZfcGFnZV9wZWVrX2lmX3NlYXJjaF9oYXNoZWQoCi0vKj09PT09PT09PT09PT09PT09 PT09PT09PT09PSovCi0JdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCi0JdWxpbnQJ b2Zmc2V0KTsvKiE8IGluOiBwYWdlIG51bWJlciAqLwotLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0 aGUgeW91bmdlc3QgbW9kaWZpY2F0aW9uIGxvZyBzZXF1ZW5jZSBudW1iZXIgZm9yIGEgZnJhbWUu CiBSZXR1cm5zIHplcm8gaWYgbm90IGZpbGUgcGFnZSBvciBubyBtb2RpZmljYXRpb24gb2NjdXJy ZWQgeWV0LgogQHJldHVybgluZXdlc3QgbW9kaWZpY2F0aW9uIHRvIHBhZ2UgKi8KQEAgLTE1MjYs MTMgKzE1MTMsMTYgQEAgc3RydWN0IGJ1Zl9ibG9ja19zdHJ1Y3R7CiAJLyogQH0gKi8KIAogCS8q KiBAbmFtZSBIYXNoIHNlYXJjaCBmaWVsZHMKLQlUaGVzZSA2IGZpZWxkcyBtYXkgb25seSBiZSBt b2RpZmllZCB3aGVuIHdlIGhhdmUKKwlUaGVzZSA1IGZpZWxkcyBtYXkgb25seSBiZSBtb2RpZmll ZCB3aGVuIHdlIGhhdmUKIAlhbiB4LWxhdGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2ggQU5ECiAJLSB3 ZSBhcmUgaG9sZGluZyBhbiBzLWxhdGNoIG9yIHgtbGF0Y2ggb24gYnVmX2Jsb2NrX3N0cnVjdDo6 bG9jayBvcgogCS0gd2Uga25vdyB0aGF0IGJ1Zl9ibG9ja19zdHJ1Y3Q6OmJ1Zl9maXhfY291bnQg PT0gMC4KIAogCUFuIGV4Y2VwdGlvbiB0byB0aGlzIGlzIHdoZW4gd2UgaW5pdCBvciBjcmVhdGUg YSBwYWdlCi0JaW4gdGhlIGJ1ZmZlciBwb29sIGluIGJ1ZjBidWYuYy4gKi8KKwlpbiB0aGUgYnVm ZmVyIHBvb2wgaW4gYnVmMGJ1Zi5jLgorCisJQW5vdGhlciBleGNlcHRpb24gaXMgdGhhdCBhc3Np Z25pbmcgYmxvY2stPmluZGV4ID0gTlVMTAorCWlzIGFsbG93ZWQgd2hlbmV2ZXIgaG9sZGluZyBh biB4LWxhdGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2guICovCiAKIAkvKiBAeyAqLwogCkBAIC0xNTQx LDIwICsxNTMxLDIwIEBAIHN0cnVjdCBidWZfYmxvY2tfc3RydWN0ewogCQkJCQlwb2ludGVycyBp biB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleAogCQkJCQlwb2ludGluZyB0byB0aGlzIGZyYW1lICov CiAjZW5kaWYgLyogVU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAqLwotCXVuc2lnbmVkCWlz X2hhc2hlZDoxOwkvKiE8IFRSVUUgaWYgaGFzaCBpbmRleCBoYXMKLQkJCQkJYWxyZWFkeSBiZWVu IGJ1aWx0IG9uIHRoaXMKLQkJCQkJcGFnZTsgbm90ZSB0aGF0IGl0IGRvZXMgbm90Ci0JCQkJCWd1 YXJhbnRlZSB0aGF0IHRoZSBpbmRleCBpcwotCQkJCQljb21wbGV0ZSwgdGhvdWdoOiB0aGVyZSBt YXkKLQkJCQkJaGF2ZSBiZWVuIGhhc2ggY29sbGlzaW9ucywKLQkJCQkJcmVjb3JkIGRlbGV0aW9u cywgZXRjLiAqLwogCXVuc2lnbmVkCWN1cnJfbl9maWVsZHM6MTA7LyohPCBwcmVmaXggbGVuZ3Ro IGZvciBoYXNoIGluZGV4aW5nOgogCQkJCQludW1iZXIgb2YgZnVsbCBmaWVsZHMgKi8KIAl1bnNp Z25lZAljdXJyX25fYnl0ZXM6MTU7LyohPCBudW1iZXIgb2YgYnl0ZXMgaW4gaGFzaAogCQkJCQlp bmRleGluZyAqLwogCXVuc2lnbmVkCWN1cnJfbGVmdF9zaWRlOjE7LyohPCBUUlVFIG9yIEZBTFNF IGluIGhhc2ggaW5kZXhpbmcgKi8KLQlkaWN0X2luZGV4X3QqCWluZGV4OwkJLyohPCBJbmRleCBm b3Igd2hpY2ggdGhlIGFkYXB0aXZlCi0JCQkJCWhhc2ggaW5kZXggaGFzIGJlZW4gY3JlYXRlZC4g Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4OwkJLyohPCBJbmRleCBmb3Igd2hpY2ggdGhlCisJCQkJ CWFkYXB0aXZlIGhhc2ggaW5kZXggaGFzIGJlZW4KKwkJCQkJY3JlYXRlZCwgb3IgTlVMTCBpZiB0 aGUgcGFnZQorCQkJCQlkb2VzIG5vdCBleGlzdCBpbiB0aGUKKwkJCQkJaW5kZXguIE5vdGUgdGhh dCBpdCBkb2VzIG5vdAorCQkJCQlndWFyYW50ZWUgdGhhdCB0aGUgaW5kZXggaXMKKwkJCQkJY29t cGxldGUsIHRob3VnaDogdGhlcmUgbWF5CisJCQkJCWhhdmUgYmVlbiBoYXNoIGNvbGxpc2lvbnMs CisJCQkJCXJlY29yZCBkZWxldGlvbnMsIGV0Yy4gKi8KIAkvKiBAfSAqLwogIyBpZmRlZiBVTklW X1NZTkNfREVCVUcKIAkvKiogQG5hbWUgRGVidWcgZmllbGRzICovCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhhLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9oYTBoYS5oCXJldmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEw MTIwNDQ5NDYtb3Bjb2cwbTRmNDI4NWNpOQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv aGEwaGEuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjA2MjEzMy12c2ts czlrMnJ2MHU2eDFvCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNv cHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQpAQCAtMzEsMTMgKzMxLDE0IEBAIENyZWF0ZWQgOC8xOC8xOTk0IEhlaWtraSBU dXVyaQogI2luY2x1ZGUgImhhc2gwaGFzaC5oIgogI2luY2x1ZGUgInBhZ2UwdHlwZXMuaCIKICNp bmNsdWRlICJidWYwdHlwZXMuaCIKKyNpbmNsdWRlICJyZW0wdHlwZXMuaCIKIAogLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBMb29rcyBmb3IgYW4gZWxlbWVudCBpbiBhIGhhc2ggdGFibGUuCiBAcmV0dXJuIHBvaW50ZXIg dG8gdGhlIGRhdGEgb2YgdGhlIGZpcnN0IGhhc2ggdGFibGUgbm9kZSBpbiBjaGFpbgogaGF2aW5n IHRoZSBmb2xkIG51bWJlciwgTlVMTCBpZiBub3QgZm91bmQgKi8KIFVOSVZfSU5MSU5FCi12b2lk KgorY29uc3QgcmVjX3QqCiBoYV9zZWFyY2hfYW5kX2dldF9kYXRhKAogLyo9PT09PT09PT09PT09 PT09PT09Ki8KIAloYXNoX3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiBoYXNoIHRhYmxlICovCkBA IC01MSwxMSArNTIsMTEgQEAgaGFfc2VhcmNoX2FuZF91cGRhdGVfaWZfZm91bmRfZnVuYygKIC8q PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJ LyohPCBpbi9vdXQ6IGhhc2ggdGFibGUgKi8KIAl1bGludAkJZm9sZCwJLyohPCBpbjogZm9sZGVk IHZhbHVlIG9mIHRoZSBzZWFyY2hlZCBkYXRhICovCi0Jdm9pZCoJCWRhdGEsCS8qITwgaW46IHBv aW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25zdCByZWNfdCoJZGF0YSwJLyohPCBpbjogcG9pbnRl ciB0byB0aGUgZGF0YSAqLwogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBV TklWX0RFQlVHCiAJYnVmX2Jsb2NrX3QqCW5ld19ibG9jaywvKiE8IGluOiBibG9jayBjb250YWlu aW5nIG5ld19kYXRhICovCiAjZW5kaWYgLyogVU5JVl9BSElfREVCVUcgfHwgVU5JVl9ERUJVRyAq LwotCXZvaWQqCQluZXdfZGF0YSk7LyohPCBpbjogbmV3IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8K Kwljb25zdCByZWNfdCoJbmV3X2RhdGEpOy8qITwgaW46IG5ldyBwb2ludGVyIHRvIHRoZSBkYXRh ICovCiAKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwog LyoqIExvb2tzIGZvciBhbiBlbGVtZW50IHdoZW4gd2Uga25vdyB0aGUgcG9pbnRlciB0byB0aGUg ZGF0YSBhbmQKQEAgLTExNCwxNCArMTE1LDYgQEAgY2hvc2VuIHRvIGJlIGEgc2xpZ2h0bHkgYmln Z2VyIHByaW1lIG51bQogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LUVtcHRpZXMgYSBoYXNoIHRhYmxlIGFuZCBmcmVlcyB0aGUgbWVtb3J5IGhlYXBzLiAqLwotVU5J Vl9JTlRFUk4KLXZvaWQKLWhhX2NsZWFyKAotLyo9PT09PSovCi0JaGFzaF90YWJsZV90Kgl0YWJs ZSk7CS8qITwgaW4sIG93bjogaGFzaCB0YWJsZSAqLwotCi0vKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEluc2VydHMgYW4g ZW50cnkgaW50byBhIGhhc2ggdGFibGUuIElmIGFuIGVudHJ5IHdpdGggdGhlIHNhbWUgZm9sZCBu dW1iZXIKIGlzIGZvdW5kLCBpdHMgbm9kZSBpcyB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXcg ZGF0YSwgYW5kIG5vIG5ldyBub2RlCiBpcyBpbnNlcnRlZC4KQEAgLTEzOCw3ICsxMzEsNyBAQCBo YV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRl ZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjogYnVmZmVyIGJs b2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBV TklWX0RFQlVHICovCi0Jdm9pZCoJCWRhdGEpOwkvKiE8IGluOiBkYXRhLCBtdXN0IG5vdCBiZSBO VUxMICovCisJY29uc3QgcmVjX3QqCWRhdGEpOwkvKiE8IGluOiBkYXRhLCBtdXN0IG5vdCBiZSBO VUxMICovCiAKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJV RwogLyoqCkBAIC0xNzQsNyArMTY3LDcgQEAgaGFfc2VhcmNoX2FuZF9kZWxldGVfaWZfZm91bmQo CiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAloYXNoX3RhYmxlX3QqCXRhYmxlLAkv KiE8IGluOiBoYXNoIHRhYmxlICovCiAJdWxpbnQJCWZvbGQsCS8qITwgaW46IGZvbGRlZCB2YWx1 ZSBvZiB0aGUgc2VhcmNoZWQgZGF0YSAqLwotCXZvaWQqCQlkYXRhKTsJLyohPCBpbjogcG9pbnRl ciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KglkYXRhKTsJLyohPCBpbjogcG9pbnRlciB0 byB0aGUgZGF0YSAqLwogI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVt b3ZlcyBmcm9tIHRoZSBjaGFpbiBkZXRlcm1pbmVkIGJ5IGZvbGQgYWxsIG5vZGVzIHdob3NlIGRh dGEgcG9pbnRlcgpAQCAtMjE3LDcgKzIxMCw3IEBAIHN0cnVjdCBoYV9ub2RlX3N0cnVjdCB7CiAj aWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfYmxv Y2tfdCoJYmxvY2s7CS8qITwgYnVmZmVyIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEsIG9yIE5V TEwgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCi0Jdm9pZCoJ CWRhdGE7CS8qITwgcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KglkYXRhOwkv KiE8IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIAl1bGludAkJZm9sZDsJLyohPCBmb2xkIHZhbHVl IGZvciB0aGUgZGF0YSAqLwogfTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9oYTBoYS5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhh LmljCXJldmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDQ5NDYtb3Bjb2cw bTRmNDI4NWNpOQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaGEwaGEuaWMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIwNjIxMzMtdnNrbHM5azJydjB1NngxbwpA QCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5 OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChj KSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJl c2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAg LTI1LDYgKzI1LDcgQEAgQ3JlYXRlZCA4LzE4LzE5OTQgSGVpa2tpIFR1dXJpCiAKICNpbmNsdWRl ICJ1dDBybmQuaCIKICNpbmNsdWRlICJtZW0wbWVtLmgiCisjaW5jbHVkZSAiYnRyMHR5cGVzLmgi CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIERlbGV0ZXMgYSBoYXNoIG5vZGUuICovCkBAIC0zOSwxMCArNDAsMTAgQEAg aGFfZGVsZXRlX2hhc2hfbm9kZSgKIEdldHMgYSBoYXNoIG5vZGUgZGF0YS4KIEByZXR1cm4JcG9p bnRlciB0byB0aGUgZGF0YSAqLwogVU5JVl9JTkxJTkUKLXZvaWQqCitjb25zdCByZWNfdCoKIGhh X25vZGVfZ2V0X2RhdGEoCiAvKj09PT09PT09PT09PT0qLwotCWhhX25vZGVfdCoJbm9kZSkJLyoh PCBpbjogaGFzaCBjaGFpbiBub2RlICovCisJY29uc3QgaGFfbm9kZV90Kglub2RlKQkvKiE8IGlu OiBoYXNoIGNoYWluIG5vZGUgKi8KIHsKIAlyZXR1cm4obm9kZS0+ZGF0YSk7CiB9CkBAIC01Nyw3 ICs1OCw3IEBAIGhhX25vZGVfc2V0X2RhdGFfZnVuYygKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjog YnVmZmVyIGJsb2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9E RUJVRyB8fCBVTklWX0RFQlVHICovCi0Jdm9pZCoJCWRhdGEpCS8qITwgaW46IHBvaW50ZXIgdG8g dGhlIGRhdGEgKi8KKwljb25zdCByZWNfdCoJZGF0YSkJLyohPCBpbjogcG9pbnRlciB0byB0aGUg ZGF0YSAqLwogewogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RF QlVHCiAJbm9kZS0+YmxvY2sgPSBibG9jazsKQEAgLTEwNywzOSArMTA4LDEwIEBAIGhhX2NoYWlu X2dldF9maXJzdCgKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBMb29rcyBmb3IgYW4gZWxlbWVudCBpbiBhIGhhc2gg dGFibGUuCi1AcmV0dXJuIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGhhc2ggdGFibGUgbm9kZSBpbiBj aGFpbiBoYXZpbmcgdGhlIGZvbGQKLW51bWJlciwgTlVMTCBpZiBub3QgZm91bmQgKi8KLVVOSVZf SU5MSU5FCi1oYV9ub2RlX3QqCi1oYV9zZWFyY2goCi0vKj09PT09PSovCi0JaGFzaF90YWJsZV90 Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAqLwotCXVsaW50CQlmb2xkKQkvKiE8IGluOiBm b2xkZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8KLXsKLQloYV9ub2RlX3QqCW5vZGU7 Ci0KLQlBU1NFUlRfSEFTSF9NVVRFWF9PV04odGFibGUsIGZvbGQpOwotCi0Jbm9kZSA9IGhhX2No YWluX2dldF9maXJzdCh0YWJsZSwgZm9sZCk7Ci0KLQl3aGlsZSAobm9kZSkgewotCQlpZiAobm9k ZS0+Zm9sZCA9PSBmb2xkKSB7Ci0KLQkJCXJldHVybihub2RlKTsKLQkJfQotCi0JCW5vZGUgPSBo YV9jaGFpbl9nZXRfbmV4dChub2RlKTsKLQl9Ci0KLQlyZXR1cm4oTlVMTCk7Ci19Ci0KLS8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgotTG9va3MgZm9yIGFuIGVsZW1lbnQgaW4gYSBoYXNoIHRhYmxlLgogQHJldHVybiBwb2lu dGVyIHRvIHRoZSBkYXRhIG9mIHRoZSBmaXJzdCBoYXNoIHRhYmxlIG5vZGUgaW4gY2hhaW4KIGhh dmluZyB0aGUgZm9sZCBudW1iZXIsIE5VTEwgaWYgbm90IGZvdW5kICovCiBVTklWX0lOTElORQot dm9pZCoKK2NvbnN0IHJlY190KgogaGFfc2VhcmNoX2FuZF9nZXRfZGF0YSgKIC8qPT09PT09PT09 PT09PT09PT09PSovCiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAq LwpAQCAtMTQ4LDYgKzEyMCwxMCBAQCBoYV9zZWFyY2hfYW5kX2dldF9kYXRhKAogCWhhX25vZGVf dCoJbm9kZTsKIAogCUFTU0VSVF9IQVNIX01VVEVYX09XTih0YWJsZSwgZm9sZCk7CisjaWZkZWYg VU5JVl9TWU5DX0RFQlVHCisJdXRfYWQocndfbG9ja19vd24oJmJ0cl9zZWFyY2hfbGF0Y2gsIFJX X0xPQ0tfU0hBUkVEKSk7CisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCisJdXRfYWQoYnRy X3NlYXJjaF9lbmFibGVkKTsKIAogCW5vZGUgPSBoYV9jaGFpbl9nZXRfZmlyc3QodGFibGUsIGZv bGQpOwogCkBAIC0xNzIsMTIgKzE0OCwxNCBAQCBoYV9zZWFyY2hfd2l0aF9kYXRhKAogLyo9PT09 PT09PT09PT09PT09Ki8KIAloYXNoX3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiBoYXNoIHRhYmxl ICovCiAJdWxpbnQJCWZvbGQsCS8qITwgaW46IGZvbGRlZCB2YWx1ZSBvZiB0aGUgc2VhcmNoZWQg ZGF0YSAqLwotCXZvaWQqCQlkYXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCisJ Y29uc3QgcmVjX3QqCWRhdGEpCS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIHsKIAlo YV9ub2RlX3QqCW5vZGU7CiAKIAlBU1NFUlRfSEFTSF9NVVRFWF9PV04odGFibGUsIGZvbGQpOwog CisJdXRfYWQoYnRyX3NlYXJjaF9lbmFibGVkKTsKKwogCW5vZGUgPSBoYV9jaGFpbl9nZXRfZmly c3QodGFibGUsIGZvbGQpOwogCiAJd2hpbGUgKG5vZGUpIHsKQEAgLTIwMiwxMSArMTgwLDE1IEBA IGhhX3NlYXJjaF9hbmRfZGVsZXRlX2lmX2ZvdW5kKAogLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAqLwogCXVs aW50CQlmb2xkLAkvKiE8IGluOiBmb2xkZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8K LQl2b2lkKgkJZGF0YSkJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJl Y190KglkYXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiB7CiAJaGFfbm9kZV90 Kglub2RlOwogCiAJQVNTRVJUX0hBU0hfTVVURVhfT1dOKHRhYmxlLCBmb2xkKTsKKyNpZmRlZiBV TklWX1NZTkNfREVCVUcKKwl1dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldf TE9DS19FWCkpOworI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLworCXV0X2FkKGJ0cl9zZWFy Y2hfZW5hYmxlZCk7CiAKIAlub2RlID0gaGFfc2VhcmNoX3dpdGhfZGF0YSh0YWJsZSwgZm9sZCwg ZGF0YSk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93 MHVwZC5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1cGQuaWMJcmV2aWQ6 dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NDk0Ni1vcGNvZzBtNGY0Mjg1Y2k5 CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdXBkLmljCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYyMTMzLXZza2xzOWsycnYwdTZ4MW8KQEAgLTI4LDcg KzI4LDYgQEAgQ3JlYXRlZCAxMi8yNy8xOTk2IEhlaWtraSBUdXVyaQogIyBpbmNsdWRlICJ0cngw dHJ4LmgiCiAjIGluY2x1ZGUgInRyeDB1bmRvLmgiCiAjIGluY2x1ZGUgInJvdzByb3cuaCIKLSMg aW5jbHVkZSAiYnRyMHNlYS5oIgogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogI2luY2x1 ZGUgInBhZ2UwemlwLmgiCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvc3luYzBzeW5jLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5 bmMuaAlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0OTQ2LW9wY29n MG00ZjQyODVjaTkKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMDYyMTMzLXZza2xzOWsycnYwdTZ4 MW8KQEAgLTY3MCw3ICs2NzAsNiBAQCBvciByb3cgbG9jayEgKi8KICNkZWZpbmUgU1lOQ19MT0df RkxVU0hfT1JERVIJMTQ3CiAjZGVmaW5lIFNZTkNfUkVDVgkJMTY4CiAjZGVmaW5lCVNZTkNfV09S S19RVUVVRQkJMTYyCi0jZGVmaW5lCVNZTkNfU0VBUkNIX1NZU19DT05GCTE2MQkvKiBmb3IgYXNz aWduaW5nIGJ0cl9zZWFyY2hfZW5hYmxlZCAqLwogI2RlZmluZQlTWU5DX1NFQVJDSF9TWVMJCTE2 MAkvKiBOT1RFIHRoYXQgaWYgd2UgaGF2ZSBhIG1lbW9yeQogCQkJCQloZWFwIHRoYXQgY2FuIGJl IGV4dGVuZGVkIHRvIHRoZQogCQkJCQlidWZmZXIgcG9vbCwgaXRzIGxvZ2ljYWwgbGV2ZWwgaXMK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDp2aW5heS5maXNyZWth ckBvcmFjbGUuY29tLTIwMTExMDEyMDQ0OTQ2LW9wY29nMG00ZjQyODVjaTkKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTExMDEyMDYyMTMzLXZza2xzOWsycnYwdTZ4MW8KQEAgLTIxNSwxMiArMjE1LDYgQEAgcGFn ZV9zZXRfbWF4X3RyeF9pZCgKIHsKIAlwYWdlX3QqCQlwYWdlCQk9IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spOwogI2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotCWNvbnN0IGlib29sCWlzX2hhc2hl ZAk9IGJsb2NrLT5pc19oYXNoZWQ7Ci0KLQlpZiAoaXNfaGFzaGVkKSB7Ci0JCXJ3X2xvY2tfeF9s b2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKLQl9Ci0KIAl1dF9hZCghbXRyIHx8IG10cl9tZW1vX2Nv bnRhaW5zKG10ciwgYmxvY2ssIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKICNlbmRpZiAvKiAhVU5J Vl9IT1RCQUNLVVAgKi8KIApAQCAtMjQxLDEyICsyMzUsNiBAQCBwYWdlX3NldF9tYXhfdHJ4X2lk KAogCX0gZWxzZSB7CiAJCW1hY2hfd3JpdGVfdG9fOChwYWdlICsgKFBBR0VfSEVBREVSICsgUEFH RV9NQVhfVFJYX0lEKSwgdHJ4X2lkKTsKIAl9Ci0KLSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQlp ZiAoaXNfaGFzaGVkKSB7Ci0JCXJ3X2xvY2tfeF91bmxvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwot CX0KLSNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUu Y29tLTIwMTExMDEyMDQ0OTQ2LW9wY29nMG00ZjQyODVjaTkKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9zeW5jL3N5bmMwc3luYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEy MDYyMTMzLXZza2xzOWsycnYwdTZ4MW8KQEAgLTEyMTMsNyArMTIxMyw2IEBAIHN5bmNfdGhyZWFk X2FkZF9sZXZlbCgKIAljYXNlIFNZTkNfRklMRV9GT1JNQVRfVEFHOgogCWNhc2UgU1lOQ19ET1VC TEVXUklURToKIAljYXNlIFNZTkNfU0VBUkNIX1NZUzoKLQljYXNlIFNZTkNfU0VBUkNIX1NZU19D T05GOgogCWNhc2UgU1lOQ19UUlhfTE9DS19IRUFQOgogCWNhc2UgU1lOQ19LRVJORUw6CiAJY2Fz ZSBTWU5DX0lCVUZfQklUTUFQX01VVEVYOgoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9y IHB1c2ggZW1haWxzKS4=