From: marko.makela Date: October 12 2011 1:48pm Subject: bzr push into mysql-trunk branch (marko.makela:3485 to 3486) List-Archive: http://lists.mysql.com/commits/141402 Message-Id: <201110121348.p9CDmhen029493@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM0ODYgTWFya28gTcOka2Vsw6QJMjAxMS0xMC0xMiBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNSB0byBteXNxbC10cnVuay4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9idHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBzZWEuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9i dWYvYnVmMGxydS5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGEvaGEwaGEuYwogICAgICBzdG9y YWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aGFuZGxlci9pX3MuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwc2VhLmgKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2J0cjB0eXBlcy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dWYwYnVmLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhhLmgKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhhLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9yb3cwdXBkLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMKICAgICAgc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHNlbC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5 bmMuYwogMzQ4NSBWaW5heSBGaXNyZWthcgkyMDExLTEwLTEyIFttZXJnZV0KICAgICAgbWVyZ2Ug NS41IC0+IHRydW5rCiAgICAgIGFkanVzdC9tb2RpZnkgdGVzdHMgYXMgdGhleSB3ZXJlIGZhaWxp bmcgaWYgc3lzdGVtIHRpbWUgem9uZSBpcyBzZXQgZGlmZmVyZW50bHkKCiAgICBtb2RpZmllZDoK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvZGVfY2FsZW5kYXJfcmFuZ2Uu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFy XzJfdW5pcXVlX2NvbnN0cmFpbnRzX2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3Fs LXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyX3BrX2NvbnN0cmFpbnRfZHVw bGljYXRlX3VwZGF0ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNz L3IvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9lcnJvci5yZXN1bHQKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFy X3VuaXF1ZV9jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2Vy cm9yLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mvci9pbl9jYWxl bmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3BrX2NvbnN0cmFpbnRf ZHVwbGljYXRlX3VwZGF0ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1 bmNzL3IvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9lcnJvci5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3IvaW5fbXVsdGljb2x1bW5fY2Fs ZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv ZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50 X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9m dW5jcy9yL2luX211bHRpY29sdW1uX2NhbGVuZGFyX3VuaXF1ZV9jb25zdHJhaW50X2Vycm9yLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mvci9pbl9tdWx0aWNvbHVt bl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL2luX211bHRpY29sdW1uX251bWJlcl9wa19jb25zdHJh aW50X2R1cGxpY2F0ZV91cGRhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvZW5naW5l cy9mdW5jcy9yL3VwX2NhbGVuZGFyX3JhbmdlLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRl L2VuZ2luZXMvZnVuY3MvdC9kZV9jYWxlbmRhcl9yYW5nZS50ZXN0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvZW5naW5lcy9mdW5jcy90L2luX2NhbGVuZGFyXzJfdW5pcXVlX2NvbnN0cmFpbnRzX2R1 cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3Mv dC9pbl9jYWxlbmRhcl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl9wa19jb25zdHJhaW50 X2Vycm9yLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fY2Fs ZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2Vu Z2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9kdXBsaWNhdGVfdXBk YXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fY2FsZW5k YXJfdW5pcXVlX2NvbnN0cmFpbnRfZXJyb3IudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2Vu Z2luZXMvZnVuY3MvdC9pbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUudGVzdAog ICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxl bmRhcl9wa19jb25zdHJhaW50X2R1cGxpY2F0ZV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0 L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl9wa19jb25zdHJh aW50X2Vycm9yLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvaW5f bXVsdGljb2x1bW5fY2FsZW5kYXJfcGtfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBteXNx bC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9jYWxlbmRhcl91bmlx dWVfY29uc3RyYWludF9kdXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9lbmdpbmVzL2Z1bmNzL3QvaW5fbXVsdGljb2x1bW5fY2FsZW5kYXJfdW5pcXVlX2NvbnN0cmFp bnRfZXJyb3IudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9t dWx0aWNvbHVtbl9jYWxlbmRhcl91bmlxdWVfY29uc3RyYWludF9pZ25vcmUudGVzdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9pbl9tdWx0aWNvbHVtbl9udW1iZXJfcGtf Y29uc3RyYWludF9kdXBsaWNhdGVfdXBkYXRlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9l bmdpbmVzL2Z1bmNzL3QvdXBfY2FsZW5kYXJfcmFuZ2UudGVzdAo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0 ci9idHIwY3VyLmMJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NTYw Ny1sa3JybmQwZGU4ZXltcW9iCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28y MGQxCkBAIC0xODkzLDcgKzE4OTMsNyBAQCBidHJfY3VyX3VwZGF0ZV9pbl9wbGFjZSgKIAl3YXNf ZGVsZXRlX21hcmtlZCA9IHJlY19nZXRfZGVsZXRlZF9mbGFnKAogCQlyZWMsIHBhZ2VfaXNfY29t cChidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKSkpOwogCi0JaXNfaGFzaGVkID0gYmxvY2stPmlz X2hhc2hlZDsKKwlpc19oYXNoZWQgPSAoYmxvY2stPmluZGV4ICE9IE5VTEwpOwogCiAJaWYgKGlz X2hhc2hlZCkgewogCQkvKiBUTyBETzogQ2FuIHdlIHNraXAgdGhpcyBpZiBub25lIG9mIHRoZSBm aWVsZHMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwc2VhLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBzZWEuYwlyZXZpZDp2aW5heS5maXNyZWth ckBvcmFjbGUuY29tLTIwMTExMDEyMDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9idHIvYnRyMHNlYS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTExMDEyMTM0NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTQ0LDE3ICs0NCw4IEBAIENyZWF0ZWQg Mi8xNy8xOTk2IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImhhMGhhLmgiCiAKIC8qKiBGbGFnOiBo YXMgdGhlIHNlYXJjaCBzeXN0ZW0gYmVlbiBlbmFibGVkPwotUHJvdGVjdGVkIGJ5IGJ0cl9zZWFy Y2hfbGF0Y2ggYW5kIGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleC4gKi8KK1Byb3RlY3RlZCBieSBi dHJfc2VhcmNoX2xhdGNoLiAqLwogVU5JVl9JTlRFUk4gY2hhcgkJYnRyX3NlYXJjaF9lbmFibGVk CT0gVFJVRTsKLVVOSVZfSU5URVJOIGlib29sCQlidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkID0g RkFMU0U7Ci0KLS8qKiBNdXRleCBwcm90ZWN0aW5nIGJ0cl9zZWFyY2hfZW5hYmxlZCAqLwotc3Rh dGljIG11dGV4X3QJCQlidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXg7Ci0KLSNpZmRlZiBVTklWX1BG U19NVVRFWAotLyogS2V5IHRvIHJlZ2lzdGVyIGJ0cl9zZWFyY2hfZW5hYmxlZF9tdXRleCB3aXRo IHBlcmZvcm1hbmNlIHNjaGVtYSAqLwotVU5JVl9JTlRFUk4gbXlzcWxfcGZzX2tleV90CWJ0cl9z ZWFyY2hfZW5hYmxlZF9tdXRleF9rZXk7Ci0jZW5kaWYgLyogVU5JVl9QRlNfTVVURVggKi8KIAog LyoqIEEgZHVtbXkgdmFyaWFibGUgdG8gZm9vbCB0aGUgY29tcGlsZXIgKi8KIFVOSVZfSU5URVJO IHVsaW50CQlidHJfc2VhcmNoX3RoaXNfaXNfemVybyA9IDA7CkBAIC0xODAsOCArMTcxLDYgQEAg YnRyX3NlYXJjaF9zeXNfY3JlYXRlKAogCiAJcndfbG9ja19jcmVhdGUoYnRyX3NlYXJjaF9sYXRj aF9rZXksICZidHJfc2VhcmNoX2xhdGNoLAogCQkgICAgICAgU1lOQ19TRUFSQ0hfU1lTKTsKLQlt dXRleF9jcmVhdGUoYnRyX3NlYXJjaF9lbmFibGVkX211dGV4X2tleSwKLQkJICAgICAmYnRyX3Nl YXJjaF9lbmFibGVkX211dGV4LCBTWU5DX1NFQVJDSF9TWVNfQ09ORik7CiAKIAlidHJfc2VhcmNo X3N5cyA9IG1lbV9hbGxvYyhzaXplb2YoYnRyX3NlYXJjaF9zeXNfdCkpOwogCkBAIC0yMTAsMzMg KzE5OSw2NSBAQCBidHJfc2VhcmNoX3N5c19mcmVlKHZvaWQpCiB9CiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKK1NldCBpbmRleC0+cmVmX2NvdW50ID0gMCBvbiBhbGwgaW5kZXhlcyBvZiBhIHRhYmxlLiAq Lworc3RhdGljCit2b2lkCitidHJfc2VhcmNoX2Rpc2FibGVfcmVmX2NvdW50KAorLyo9PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X3RhYmxlX3QqCXRhYmxlKQkvKiE8IGluL291dDog dGFibGUgKi8KK3sKKwlkaWN0X2luZGV4X3QqCWluZGV4OworCisJdXRfYWQobXV0ZXhfb3duKCZk aWN0X3N5cy0+bXV0ZXgpKTsKKyNpZmRlZiBVTklWX1NZTkNfREVCVUcKKwl1dF9hZChyd19sb2Nr X293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOworI2VuZGlmIC8qIFVOSVZfU1lO Q19ERUJVRyAqLworCisJZm9yIChpbmRleCA9IGRpY3RfdGFibGVfZ2V0X2ZpcnN0X2luZGV4KHRh YmxlKTsgaW5kZXg7CisJICAgICBpbmRleCA9IGRpY3RfdGFibGVfZ2V0X25leHRfaW5kZXgoaW5k ZXgpKSB7CisKKwkJaW5kZXgtPnNlYXJjaF9pbmZvLT5yZWZfY291bnQgPSAwOworCX0KK30KKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgogRGlzYWJsZSB0aGUgYWRhcHRpdmUgaGFzaCBzZWFyY2ggc3lzdGVt IGFuZCBlbXB0eSB0aGUgaW5kZXguICovCiBVTklWX0lOVEVSTgogdm9pZAogYnRyX3NlYXJjaF9k aXNhYmxlKHZvaWQpCiAvKj09PT09PT09PT09PT09PT09PT09Ki8KIHsKLQltdXRleF9lbnRlcigm YnRyX3NlYXJjaF9lbmFibGVkX211dGV4KTsKKwlkaWN0X3RhYmxlX3QqCXRhYmxlOworCisJbXV0 ZXhfZW50ZXIoJmRpY3Rfc3lzLT5tdXRleCk7CiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hf bGF0Y2gpOwogCi0JLyogRGlzYWJsZSBhY2Nlc3MgdG8gaGFzaCBpbmRleCwgYWxzbyB0ZWxsIGhh X2luc2VydF9mb3JfZm9sZCgpCi0Jc3RvcCBhZGRpbmcgbmV3IG5vZGVzIHRvIGhhc2ggaW5kZXgs IGJ1dCBzdGlsbCBhbGxvdyB1cGRhdGluZwotCWV4aXN0aW5nIG5vZGVzICovCiAJYnRyX3NlYXJj aF9lbmFibGVkID0gRkFMU0U7CiAKLQkvKiBDbGVhciBhbGwgYmxvY2stPmlzX2hhc2hlZCBmbGFn cyBhbmQgcmVtb3ZlIGFsbCBlbnRyaWVzCi0JZnJvbSBidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRl eC4gKi8KLQlidWZfcG9vbF9kcm9wX2hhc2hfaW5kZXgoKTsKLQotCS8qIGhhc2ggaW5kZXggaGFz IGJlZW4gY2xlYW5lZCB1cCwgZGlzYWxsb3cgYW55IG9wZXJhdGlvbiB0bwotCXRoZSBoYXNoIGlu ZGV4ICovCi0JYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCA9IFRSVUU7CisJLyogQ2xlYXIgdGhl IGluZGV4LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50IG9mIGV2ZXJ5IGluZGV4IGluCisJdGhlIGRh dGEgZGljdGlvbmFyeSBjYWNoZS4gKi8KKwlmb3IgKHRhYmxlID0gVVRfTElTVF9HRVRfRklSU1Qo ZGljdF9zeXMtPnRhYmxlX0xSVSk7IHRhYmxlOworCSAgICAgdGFibGUgPSBVVF9MSVNUX0dFVF9O RVhUKHRhYmxlX0xSVSwgdGFibGUpKSB7CiAKLQkvKiBidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgg c2hvdWxkIGd1YXJhbnRlZSB0aGlzLiAqLwotCXV0X2FkKCFidHJfc2VhcmNoX2VuYWJsZWQpOwor CQlidHJfc2VhcmNoX2Rpc2FibGVfcmVmX2NvdW50KHRhYmxlKTsKKwl9CisKKwlmb3IgKHRhYmxl ID0gVVRfTElTVF9HRVRfRklSU1QoZGljdF9zeXMtPnRhYmxlX25vbl9MUlUpOyB0YWJsZTsKKwkg ICAgIHRhYmxlID0gVVRfTElTVF9HRVRfTkVYVCh0YWJsZV9MUlUsIHRhYmxlKSkgeworCisJCWJ0 cl9zZWFyY2hfZGlzYWJsZV9yZWZfY291bnQodGFibGUpOworCX0KKworCW11dGV4X2V4aXQoJmRp Y3Rfc3lzLT5tdXRleCk7CisKKwkvKiBTZXQgYWxsIGJsb2NrLT5pbmRleCA9IE5VTEwuICovCisJ YnVmX3Bvb2xfY2xlYXJfaGFzaF9pbmRleCgpOworCisJLyogQ2xlYXIgdGhlIGFkYXB0aXZlIGhh c2ggaW5kZXguICovCisJaGFzaF90YWJsZV9jbGVhcihidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRl eCk7CisJbWVtX2hlYXBfZW1wdHkoYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXgtPmhlYXApOwog CiAJcndfbG9ja194X3VubG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0JbXV0ZXhfZXhpdCgmYnRy X3NlYXJjaF9lbmFibGVkX211dGV4KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjQ2LDE0 ICsyNjcsMTEgQEAgdm9pZAogYnRyX3NlYXJjaF9lbmFibGUodm9pZCkKIC8qPT09PT09PT09PT09 PT09PT09PT0qLwogewotCW11dGV4X2VudGVyKCZidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgpOwog CXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAogCWJ0cl9zZWFyY2hfZW5hYmxl ZCA9IFRSVUU7Ci0JYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCA9IEZBTFNFOwogCiAJcndfbG9j a194X3VubG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0JbXV0ZXhfZXhpdCgmYnRyX3NlYXJjaF9l bmFibGVkX211dGV4KTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNDc2LDcgKzQ5NCw3IEBAIGJ0 cl9zZWFyY2hfdXBkYXRlX2Jsb2NrX2hhc2hfaW5mbygKIAkgICAgJiYgKGJsb2NrLT5uX2J5dGVz ID09IGluZm8tPm5fYnl0ZXMpCiAJICAgICYmIChibG9jay0+bGVmdF9zaWRlID09IGluZm8tPmxl ZnRfc2lkZSkpIHsKIAotCQlpZiAoKGJsb2NrLT5pc19oYXNoZWQpCisJCWlmICgoYmxvY2stPmlu ZGV4KQogCQkgICAgJiYgKGJsb2NrLT5jdXJyX25fZmllbGRzID09IGluZm8tPm5fZmllbGRzKQog CQkgICAgJiYgKGJsb2NrLT5jdXJyX25fYnl0ZXMgPT0gaW5mby0+bl9ieXRlcykKIAkJICAgICYm IChibG9jay0+Y3Vycl9sZWZ0X3NpZGUgPT0gaW5mby0+bGVmdF9zaWRlKSkgewpAQCAtNTA1LDcg KzUyMyw3IEBAIGJ0cl9zZWFyY2hfdXBkYXRlX2Jsb2NrX2hhc2hfaW5mbygKIAkgICAgIC8gQlRS X1NFQVJDSF9QQUdFX0JVSUxEX0xJTUlUKQogCSAgICAmJiAoaW5mby0+bl9oYXNoX3BvdGVudGlh bCA+PSBCVFJfU0VBUkNIX0JVSUxEX0xJTUlUKSkgewogCi0JCWlmICgoIWJsb2NrLT5pc19oYXNo ZWQpCisJCWlmICgoIWJsb2NrLT5pbmRleCkKIAkJICAgIHx8IChibG9jay0+bl9oYXNoX2hlbHBz CiAJCQk+IDIgKiBwYWdlX2dldF9uX3JlY3MoYmxvY2stPmZyYW1lKSkKIAkJICAgIHx8IChibG9j ay0+bl9maWVsZHMgIT0gYmxvY2stPmN1cnJfbl9maWVsZHMpCkBAIC01MzcsOSArNTU1LDkgQEAg YnRyX3NlYXJjaF91cGRhdGVfaGFzaF9yZWYoCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGlu OiBidWZmZXIgYmxvY2sgd2hlcmUgY3Vyc29yIHBvc2l0aW9uZWQgKi8KIAlidHJfY3VyX3QqCWN1 cnNvcikJLyohPCBpbjogY3Vyc29yICovCiB7CisJZGljdF9pbmRleF90KglpbmRleDsKIAl1bGlu dAkJZm9sZDsKLQlyZWNfdCoJCXJlYzsKLQlpbmRleF9pZF90CWluZGV4X2lkOworCWNvbnN0IHJl Y190KglyZWM7CiAKIAl1dF9hZChjdXJzb3ItPmZsYWcgPT0gQlRSX0NVUl9IQVNIX0ZBSUwpOwog I2lmZGVmIFVOSVZfU1lOQ19ERUJVRwpAQCAtNTUwLDEzICs1NjgsMTUgQEAgYnRyX3NlYXJjaF91 cGRhdGVfaGFzaF9yZWYoCiAJdXRfYWQocGFnZV9hbGlnbihidHJfY3VyX2dldF9yZWMoY3Vyc29y KSkKIAkgICAgICA9PSBidWZfYmxvY2tfZ2V0X2ZyYW1lKGJsb2NrKSk7CiAKLQlpZiAoIWJsb2Nr LT5pc19oYXNoZWQpIHsKKwlpbmRleCA9IGJsb2NrLT5pbmRleDsKKworCWlmICghaW5kZXgpIHsK IAogCQlyZXR1cm47CiAJfQogCi0JdXRfYShibG9jay0+aW5kZXggPT0gY3Vyc29yLT5pbmRleCk7 Ci0JdXRfYSghZGljdF9pbmRleF9pc19pYnVmKGN1cnNvci0+aW5kZXgpKTsKKwl1dF9hKGluZGV4 ID09IGN1cnNvci0+aW5kZXgpOworCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwog CiAJaWYgKChpbmZvLT5uX2hhc2hfcG90ZW50aWFsID4gMCkKIAkgICAgJiYgKGJsb2NrLT5jdXJy X25fZmllbGRzID09IGluZm8tPm5fZmllbGRzKQpAQCAtNTczLDEyICs1OTMsMTEgQEAgYnRyX3Nl YXJjaF91cGRhdGVfaGFzaF9yZWYoCiAJCQlyZXR1cm47CiAJCX0KIAotCQlpbmRleF9pZCA9IGN1 cnNvci0+aW5kZXgtPmlkOwogCQlmb2xkID0gcmVjX2ZvbGQocmVjLAotCQkJCXJlY19nZXRfb2Zm c2V0cyhyZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHNfLAorCQkJCXJlY19nZXRfb2Zmc2V0cyhy ZWMsIGluZGV4LCBvZmZzZXRzXywKIAkJCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApLAogCQkJ CWJsb2NrLT5jdXJyX25fZmllbGRzLAotCQkJCWJsb2NrLT5jdXJyX25fYnl0ZXMsIGluZGV4X2lk KTsKKwkJCQlibG9jay0+Y3Vycl9uX2J5dGVzLCBpbmRleC0+aWQpOwogCQlpZiAoVU5JVl9MSUtF TFlfTlVMTChoZWFwKSkgewogCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAkJfQpAQCAtODQ0LDcg Kzg2Myw3IEBAIGJ0cl9zZWFyY2hfZ3Vlc3Nfb25faGFzaCgKIHsKIAlidWZfcG9vbF90KglidWZf cG9vbDsKIAlidWZfYmxvY2tfdCoJYmxvY2s7Ci0JcmVjX3QqCQlyZWM7CisJY29uc3QgcmVjX3Qq CXJlYzsKIAl1bGludAkJZm9sZDsKIAlpbmRleF9pZF90CWluZGV4X2lkOwogI2lmZGVmIG5vdGRl ZmluZWQKQEAgLTkzMCw3ICs5NDksNyBAQCBidHJfc2VhcmNoX2d1ZXNzX29uX2hhc2goCiAKIAl1 dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsKIAotCWJ0cl9jdXJfcG9zaXRpb24oaW5k ZXgsIHJlYywgYmxvY2ssIGN1cnNvcik7CisJYnRyX2N1cl9wb3NpdGlvbihpbmRleCwgKHJlY190 KikgcmVjLCBibG9jaywgY3Vyc29yKTsKIAogCS8qIENoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUg Z3Vlc3Mgd2l0aGluIHRoZSBwYWdlICovCiAKQEAgLTEwNjIsMjYgKzEwODEsMjUgQEAgYnRyX3Nl YXJjaF9kcm9wX3BhZ2VfaGFzaF9pbmRleCgKIAl1dF9hZCghcndfbG9ja19vd24oJmJ0cl9zZWFy Y2hfbGF0Y2gsIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAot CS8qIERvIGEgZGlydHkgY2hlY2sgb24gYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCBhbmQKLQli bG9jay0+aXNfaGFzaGVkLCByZXR1cm4gaWYgQUhJIGlzIGRpc2FibGVkLiBUaGlzIGlzCi0JdG8g YXZvaWQgYWNxdWlyaW5nIHNoYXJlZCBidHJfc2VhcmNoX2xhdGNoIGZvciBwZXJmb3JtYW5jZQot CWNvbnNpZGVyYXRpb24uIElmIGVpdGhlciBjb25kaXRpb24gaXMgbm90IHNhdGlzZmllZAotCWNv bnRpbnVlIHRvIGFjcXVpcmUgYnRyX3NlYXJjaF9sYXRjaCBiZWZvcmUgY2hlY2tpbmcgYWdhaW4g Ki8KLQlpZiAoYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCAmJiAoIWJsb2NrLT5pc19oYXNoZWQp KSB7CisJLyogRG8gYSBkaXJ0eSBjaGVjayBvbiBibG9jay0+aW5kZXgsIHJldHVybiBpZiB0aGUg YmxvY2sgaXMKKwlub3QgaW4gdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXguIFRoaXMgaXMgdG8gYXZv aWQgYWNxdWlyaW5nCisJc2hhcmVkIGJ0cl9zZWFyY2hfbGF0Y2ggZm9yIHBlcmZvcm1hbmNlIGNv bnNpZGVyYXRpb24uICovCisJaWYgKCFibG9jay0+aW5kZXgpIHsKIAkJcmV0dXJuOwogCX0KIAog cmV0cnk6CiAJcndfbG9ja19zX2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwotCXBhZ2UgPSBibG9j ay0+ZnJhbWU7CisJaW5kZXggPSBibG9jay0+aW5kZXg7CiAKLQlpZiAoVU5JVl9MSUtFTFkoIWJs b2NrLT5pc19oYXNoZWQpKSB7CisJaWYgKFVOSVZfTElLRUxZKCFpbmRleCkpIHsKIAogCQlyd19s b2NrX3NfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAogCQlyZXR1cm47CiAJfQogCisJdXRf YSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAJdGFibGUgPSBidHJfc2VhcmNoX3N5cy0+ aGFzaF9pbmRleDsKIAogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwpAQCAtMTA5Myw4ICsxMTExLDYg QEAgcmV0cnk6CiAKIAluX2ZpZWxkcyA9IGJsb2NrLT5jdXJyX25fZmllbGRzOwogCW5fYnl0ZXMg PSBibG9jay0+Y3Vycl9uX2J5dGVzOwotCWluZGV4ID0gYmxvY2stPmluZGV4OwotCXV0X2EoIWRp Y3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogCiAJLyogTk9URTogVGhlIGZpZWxkcyBvZiBibG9j ayBtdXN0IG5vdCBiZSBhY2Nlc3NlZCBhZnRlcgogCXJlbGVhc2luZyBidHJfc2VhcmNoX2xhdGNo LCBhcyB0aGUgaW5kZXggcGFnZSBtaWdodCBvbmx5CkBAIC0xMTA0LDYgKzExMjAsNyBAQCByZXRy eToKIAogCXV0X2Eobl9maWVsZHMgKyBuX2J5dGVzID4gMCk7CiAKKwlwYWdlID0gYmxvY2stPmZy YW1lOwogCW5fcmVjcyA9IHBhZ2VfZ2V0X25fcmVjcyhwYWdlKTsKIAogCS8qIENhbGN1bGF0ZSBh bmQgY2FjaGUgZm9sZCB2YWx1ZXMgaW50byBhbiBhcnJheSBmb3IgZmFzdCBkZWxldGlvbgpAQCAt MTE1Miw3ICsxMTY5LDcgQEAgbmV4dF9yZWM6CiAKIAlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJj aF9sYXRjaCk7CiAKLQlpZiAoVU5JVl9VTkxJS0VMWSghYmxvY2stPmlzX2hhc2hlZCkpIHsKKwlp ZiAoVU5JVl9VTkxJS0VMWSghYmxvY2stPmluZGV4KSkgewogCQkvKiBTb21lb25lIGVsc2UgaGFz IG1lYW53aGlsZSBkcm9wcGVkIHRoZSBoYXNoIGluZGV4ICovCiAKIAkJZ290byBjbGVhbnVwOwpA QCAtMTE4MCw3ICsxMTk3LDYgQEAgbmV4dF9yZWM6CiAJdXRfYShpbmRleC0+c2VhcmNoX2luZm8t PnJlZl9jb3VudCA+IDApOwogCWluZGV4LT5zZWFyY2hfaW5mby0+cmVmX2NvdW50LS07CiAKLQli bG9jay0+aXNfaGFzaGVkID0gRkFMU0U7CiAJYmxvY2stPmluZGV4ID0gTlVMTDsKIAogCU1PTklU T1JfSU5DKE1PTklUT1JfQURBUFRJVkVfSEFTSF9QQUdFX1JFTU9WRUQpOwpAQCAtMTIxMSw4ICsx MjI3LDggQEAgY2xlYW51cDoKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRHJvcHMgYSBwYWdlIGhh c2ggaW5kZXggd2hlbiBhIHBhZ2UgaXMgZnJlZWQgZnJvbSBhIGZzZWcgdG8gdGhlIGZpbGUgc3lz dGVtLgotRHJvcHMgcG9zc2libGUgaGFzaCBpbmRleCBpZiB0aGUgcGFnZSBoYXBwZW5zIHRvIGJl IGluIHRoZSBidWZmZXIgcG9vbC4gKi8KK0Ryb3BzIGEgcG9zc2libGUgcGFnZSBoYXNoIGluZGV4 IHdoZW4gYSBwYWdlIGlzIGV2aWN0ZWQgZnJvbSB0aGUgYnVmZmVyIHBvb2wKK29yIGZyZWVkIGlu IGEgZmlsZSBzZWdtZW50LiAqLwogVU5JVl9JTlRFUk4KIHZvaWQKIGJ0cl9zZWFyY2hfZHJvcF9w YWdlX2hhc2hfd2hlbl9mcmVlZCgKQEAgLTEyMjUsMjggKzEyNDEsMTkgQEAgYnRyX3NlYXJjaF9k cm9wX3BhZ2VfaGFzaF93aGVuX2ZyZWVkKAogCWJ1Zl9ibG9ja190KglibG9jazsKIAltdHJfdAkJ bXRyOwogCi0JaWYgKCFidWZfcGFnZV9wZWVrX2lmX3NlYXJjaF9oYXNoZWQoc3BhY2UsIHBhZ2Vf bm8pKSB7Ci0KLQkJcmV0dXJuOwotCX0KLQogCW10cl9zdGFydCgmbXRyKTsKIAotCS8qIFdlIGFz c3VtZSB0aGF0IGlmIHRoZSBjYWxsZXIgaGFzIGEgbGF0Y2ggb24gdGhlIHBhZ2UsIHRoZW4gdGhl Ci0JY2FsbGVyIGhhcyBhbHJlYWR5IGRyb3BwZWQgdGhlIGhhc2ggaW5kZXggZm9yIHRoZSBwYWdl LCBhbmQgd2UgbmV2ZXIKLQlnZXQgaGVyZS4gVGhlcmVmb3JlIHdlIGNhbiBhY3F1aXJlIHRoZSBz LWxhdGNoIHRvIHRoZSBwYWdlIHdpdGhvdXQKLQloYXZpbmcgdG8gZmVhciBhIGRlYWRsb2NrLiAq LworCS8qIElmIHRoZSBjYWxsZXIgaGFzIGEgbGF0Y2ggb24gdGhlIHBhZ2UsIHRoZW4gdGhlIGNh bGxlciBtdXN0CisJaGF2ZSBhIHgtbGF0Y2ggb24gdGhlIHBhZ2UgYW5kIGl0IG11c3QgaGF2ZSBh bHJlYWR5IGRyb3BwZWQKKwl0aGUgaGFzaCBpbmRleCBmb3IgdGhlIHBhZ2UuIEJlY2F1c2Ugb2Yg dGhlIHgtbGF0Y2ggdGhhdCB3ZQorCWFyZSBwb3NzaWJseSBob2xkaW5nLCB3ZSBjYW5ub3Qgcy1s YXRjaCB0aGUgcGFnZSwgYnV0IG11c3QKKwkocmVjdXJzaXZlbHkpIHgtbGF0Y2ggaXQsIGV2ZW4g dGhvdWdoIHdlIGFyZSBvbmx5IHJlYWRpbmcuICovCiAKLQlibG9jayA9IGJ1Zl9wYWdlX2dldF9n ZW4oc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLCBSV19TX0xBVENILCBOVUxMLAorCWJsb2NrID0g YnVmX3BhZ2VfZ2V0X2dlbihzcGFjZSwgemlwX3NpemUsIHBhZ2Vfbm8sIFJXX1hfTEFUQ0gsIE5V TEwsCiAJCQkJIEJVRl9QRUVLX0lGX0lOX1BPT0wsIF9fRklMRV9fLCBfX0xJTkVfXywKIAkJCQkg Jm10cik7Ci0JLyogQmVjYXVzZSB0aGUgYnVmZmVyIHBvb2wgbXV0ZXggd2FzIHJlbGVhc2VkIGJ5 Ci0JYnVmX3BhZ2VfcGVla19pZl9zZWFyY2hfaGFzaGVkKCksIGl0IGlzIHBvc3NpYmxlIHRoYXQg dGhlCi0JYmxvY2sgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYnVmZmVyIHBvb2wgYnkgYW5vdGhlciB0 aHJlYWQKLQliZWZvcmUgYnVmX3BhZ2VfZ2V0X2dlbigpIGdvdCBhIGNoYW5jZSB0byBhY3F1aXJl IHRoZSBidWZmZXIKLQlwb29sIG11dGV4IGFnYWluLiAgVGh1cywgd2UgbXVzdCBjaGVjayBmb3Ig YSBOVUxMIHJldHVybi4gKi8KIAotCWlmIChVTklWX0xJS0VMWShibG9jayAhPSBOVUxMKSkgewor CWlmIChibG9jayAmJiBibG9jay0+aW5kZXgpIHsKIAogCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZl bChibG9jaywgU1lOQ19UUkVFX05PREVfRlJPTV9IQVNIKTsKIApAQCAtMTI3OCw3ICsxMjg1LDYg QEAgYnRyX3NlYXJjaF9idWlsZF9wYWdlX2hhc2hfaW5kZXgoCiAJcmVjX3QqCQluZXh0X3JlYzsK IAl1bGludAkJZm9sZDsKIAl1bGludAkJbmV4dF9mb2xkOwotCWluZGV4X2lkX3QJaW5kZXhfaWQ7 CiAJdWxpbnQJCW5fY2FjaGVkOwogCXVsaW50CQluX3JlY3M7CiAJdWxpbnQqCQlmb2xkczsKQEAg LTEyOTIsOSArMTI5OCw2IEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4KAogCXV0 X2FkKGluZGV4KTsKIAl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsKIAotCXRhYmxl ID0gYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXg7Ci0JcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJh bWUoYmxvY2spOwotCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQoIXJ3X2xvY2tfb3du KCZidHJfc2VhcmNoX2xhdGNoLCBSV19MT0NLX0VYKSk7CiAJdXRfYWQocndfbG9ja19vd24oJihi bG9jay0+bG9jayksIFJXX0xPQ0tfU0hBUkVEKQpAQCAtMTMwMyw5ICsxMzA2LDE3IEBAIGJ0cl9z ZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4KAogCiAJcndfbG9ja19zX2xvY2soJmJ0cl9zZWFy Y2hfbGF0Y2gpOwogCi0JaWYgKGJsb2NrLT5pc19oYXNoZWQgJiYgKChibG9jay0+Y3Vycl9uX2Zp ZWxkcyAhPSBuX2ZpZWxkcykKLQkJCQkgfHwgKGJsb2NrLT5jdXJyX25fYnl0ZXMgIT0gbl9ieXRl cykKLQkJCQkgfHwgKGJsb2NrLT5jdXJyX2xlZnRfc2lkZSAhPSBsZWZ0X3NpZGUpKSkgeworCWlm ICghYnRyX3NlYXJjaF9lbmFibGVkKSB7CisJCXJ3X2xvY2tfc191bmxvY2soJmJ0cl9zZWFyY2hf bGF0Y2gpOworCQlyZXR1cm47CisJfQorCisJdGFibGUgPSBidHJfc2VhcmNoX3N5cy0+aGFzaF9p bmRleDsKKwlwYWdlID0gYnVmX2Jsb2NrX2dldF9mcmFtZShibG9jayk7CisKKwlpZiAoYmxvY2st PmluZGV4ICYmICgoYmxvY2stPmN1cnJfbl9maWVsZHMgIT0gbl9maWVsZHMpCisJCQkgICAgIHx8 IChibG9jay0+Y3Vycl9uX2J5dGVzICE9IG5fYnl0ZXMpCisJCQkgICAgIHx8IChibG9jay0+Y3Vy cl9sZWZ0X3NpZGUgIT0gbGVmdF9zaWRlKSkpIHsKIAogCQlyd19sb2NrX3NfdW5sb2NrKCZidHJf c2VhcmNoX2xhdGNoKTsKIApAQCAtMTM0Miw3ICsxMzUzLDcgQEAgYnRyX3NlYXJjaF9idWlsZF9w YWdlX2hhc2hfaW5kZXgoCiAKIAluX2NhY2hlZCA9IDA7CiAKLQlpbmRleF9pZCA9IGJ0cl9wYWdl X2dldF9pbmRleF9pZChwYWdlKTsKKwl1dF9hKGluZGV4LT5pZCA9PSBidHJfcGFnZV9nZXRfaW5k ZXhfaWQocGFnZSkpOwogCiAJcmVjID0gcGFnZV9yZWNfZ2V0X25leHQocGFnZV9nZXRfaW5maW11 bV9yZWMocGFnZSkpOwogCkBAIC0xMzU3LDcgKzEzNjgsNyBAQCBidHJfc2VhcmNoX2J1aWxkX3Bh Z2VfaGFzaF9pbmRleCgKIAkJfQogCX0KIAotCWZvbGQgPSByZWNfZm9sZChyZWMsIG9mZnNldHMs IG5fZmllbGRzLCBuX2J5dGVzLCBpbmRleF9pZCk7CisJZm9sZCA9IHJlY19mb2xkKHJlYywgb2Zm c2V0cywgbl9maWVsZHMsIG5fYnl0ZXMsIGluZGV4LT5pZCk7CiAKIAlpZiAobGVmdF9zaWRlKSB7 CiAKQEAgLTEzODQsNyArMTM5NSw3IEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2luZGV4 KAogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKG5leHRfcmVjLCBpbmRleCwgb2Zmc2V0cywK IAkJCQkJICBuX2ZpZWxkcyArIChuX2J5dGVzID4gMCksICZoZWFwKTsKIAkJbmV4dF9mb2xkID0g cmVjX2ZvbGQobmV4dF9yZWMsIG9mZnNldHMsIG5fZmllbGRzLAotCQkJCSAgICAgbl9ieXRlcywg aW5kZXhfaWQpOworCQkJCSAgICAgbl9ieXRlcywgaW5kZXgtPmlkKTsKIAogCQlpZiAoZm9sZCAh PSBuZXh0X2ZvbGQpIHsKIAkJCS8qIEluc2VydCBhbiBlbnRyeSBpbnRvIHRoZSBoYXNoIGluZGV4 ICovCkBAIC0xNDA5LDEzICsxNDIwLDEzIEBAIGJ0cl9zZWFyY2hfYnVpbGRfcGFnZV9oYXNoX2lu ZGV4KAogCiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCi0JaWYgKFVOSVZf VU5MSUtFTFkoYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCkpIHsKKwlpZiAoVU5JVl9VTkxJS0VM WSghYnRyX3NlYXJjaF9lbmFibGVkKSkgewogCQlnb3RvIGV4aXRfZnVuYzsKIAl9CiAKLQlpZiAo YmxvY2stPmlzX2hhc2hlZCAmJiAoKGJsb2NrLT5jdXJyX25fZmllbGRzICE9IG5fZmllbGRzKQot CQkJCSB8fCAoYmxvY2stPmN1cnJfbl9ieXRlcyAhPSBuX2J5dGVzKQotCQkJCSB8fCAoYmxvY2st PmN1cnJfbGVmdF9zaWRlICE9IGxlZnRfc2lkZSkpKSB7CisJaWYgKGJsb2NrLT5pbmRleCAmJiAo KGJsb2NrLT5jdXJyX25fZmllbGRzICE9IG5fZmllbGRzKQorCQkJICAgICB8fCAoYmxvY2stPmN1 cnJfbl9ieXRlcyAhPSBuX2J5dGVzKQorCQkJICAgICB8fCAoYmxvY2stPmN1cnJfbGVmdF9zaWRl ICE9IGxlZnRfc2lkZSkpKSB7CiAJCWdvdG8gZXhpdF9mdW5jOwogCX0KIApAQCAtMTQyNCwxMSAr MTQzNSwxMCBAQCBidHJfc2VhcmNoX2J1aWxkX3BhZ2VfaGFzaF9pbmRleCgKIAlyZWJ1aWxkIGhh c2ggaW5kZXggZm9yIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgaGFzaGVkLCB3ZQogCWhhdmUgdG8g dGFrZSBjYXJlIG5vdCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgaW4gdGhhdAogCWNhc2UuICov Ci0JaWYgKCFibG9jay0+aXNfaGFzaGVkKSB7CisJaWYgKCFibG9jay0+aW5kZXgpIHsKIAkJaW5k ZXgtPnNlYXJjaF9pbmZvLT5yZWZfY291bnQrKzsKIAl9CiAKLQlibG9jay0+aXNfaGFzaGVkID0g VFJVRTsKIAlibG9jay0+bl9oYXNoX2hlbHBzID0gMDsKIAogCWJsb2NrLT5jdXJyX25fZmllbGRz ID0gbl9maWVsZHM7CkBAIC0xNDc4LDE0ICsxNDg4LDE1IEBAIGJ0cl9zZWFyY2hfbW92ZV9vcl9k ZWxldGVfaGFzaF9lbnRyaWVzKAogCXV0X2FkKHJ3X2xvY2tfb3duKCYoYmxvY2stPmxvY2spLCBS V19MT0NLX0VYKSk7CiAJdXRfYWQocndfbG9ja19vd24oJihuZXdfYmxvY2stPmxvY2spLCBSV19M T0NLX0VYKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCi0JdXRfYSghbmV3X2Jsb2Nr LT5pc19oYXNoZWQgfHwgbmV3X2Jsb2NrLT5pbmRleCA9PSBpbmRleCk7Ci0JdXRfYSghYmxvY2st PmlzX2hhc2hlZCB8fCBibG9jay0+aW5kZXggPT0gaW5kZXgpOwotCXV0X2EoIShuZXdfYmxvY2st PmlzX2hhc2hlZCB8fCBibG9jay0+aXNfaGFzaGVkKQotCSAgICAgfHwgIWRpY3RfaW5kZXhfaXNf aWJ1ZihpbmRleCkpOwogCiAJcndfbG9ja19zX2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCi0J aWYgKG5ld19ibG9jay0+aXNfaGFzaGVkKSB7CisJdXRfYSghbmV3X2Jsb2NrLT5pbmRleCB8fCBu ZXdfYmxvY2stPmluZGV4ID09IGluZGV4KTsKKwl1dF9hKCFibG9jay0+aW5kZXggfHwgYmxvY2st PmluZGV4ID09IGluZGV4KTsKKwl1dF9hKCEobmV3X2Jsb2NrLT5pbmRleCB8fCBibG9jay0+aW5k ZXgpCisJICAgICB8fCAhZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CisKKwlpZiAobmV3X2Js b2NrLT5pbmRleCkgewogCiAJCXJ3X2xvY2tfc191bmxvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwog CkBAIC0xNDk0LDcgKzE1MDUsNyBAQCBidHJfc2VhcmNoX21vdmVfb3JfZGVsZXRlX2hhc2hfZW50 cmllcygKIAkJcmV0dXJuOwogCX0KIAotCWlmIChibG9jay0+aXNfaGFzaGVkKSB7CisJaWYgKGJs b2NrLT5pbmRleCkgewogCiAJCW5fZmllbGRzID0gYmxvY2stPmN1cnJfbl9maWVsZHM7CiAJCW5f Ynl0ZXMgPSBibG9jay0+Y3Vycl9uX2J5dGVzOwpAQCAtMTUzMSw0NSArMTU0Miw1MiBAQCBidHJf c2VhcmNoX3VwZGF0ZV9oYXNoX29uX2RlbGV0ZSgKIHsKIAloYXNoX3RhYmxlX3QqCXRhYmxlOwog CWJ1Zl9ibG9ja190KglibG9jazsKLQlyZWNfdCoJCXJlYzsKKwljb25zdCByZWNfdCoJcmVjOwog CXVsaW50CQlmb2xkOwotCWluZGV4X2lkX3QJaW5kZXhfaWQ7CisJZGljdF9pbmRleF90KglpbmRl eDsKIAl1bGludAkJb2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJWkVdOwogCW1lbV9oZWFwX3Qq CWhlYXAJCT0gTlVMTDsKIAlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKIAotCXJlYyA9IGJ0cl9j dXJfZ2V0X3JlYyhjdXJzb3IpOwotCiAJYmxvY2sgPSBidHJfY3VyX2dldF9ibG9jayhjdXJzb3Ip OwogCiAjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCiAJdXRfYWQocndfbG9ja19vd24oJihibG9jay0+ bG9jayksIFJXX0xPQ0tfRVgpKTsKICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAotCWlm ICghYmxvY2stPmlzX2hhc2hlZCkgeworCWluZGV4ID0gYmxvY2stPmluZGV4OworCisJaWYgKCFp bmRleCkgewogCiAJCXJldHVybjsKIAl9CiAKLQl1dF9hKGJsb2NrLT5pbmRleCA9PSBjdXJzb3It PmluZGV4KTsKKwl1dF9hKGluZGV4ID09IGN1cnNvci0+aW5kZXgpOwogCXV0X2EoYmxvY2stPmN1 cnJfbl9maWVsZHMgKyBibG9jay0+Y3Vycl9uX2J5dGVzID4gMCk7Ci0JdXRfYSghZGljdF9pbmRl eF9pc19pYnVmKGN1cnNvci0+aW5kZXgpKTsKKwl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoaW5k ZXgpKTsKIAogCXRhYmxlID0gYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXg7CiAKLQlpbmRleF9p ZCA9IGN1cnNvci0+aW5kZXgtPmlkOwotCWZvbGQgPSByZWNfZm9sZChyZWMsIHJlY19nZXRfb2Zm c2V0cyhyZWMsIGN1cnNvci0+aW5kZXgsIG9mZnNldHNfLAorCXJlYyA9IGJ0cl9jdXJfZ2V0X3Jl YyhjdXJzb3IpOworCisJZm9sZCA9IHJlY19mb2xkKHJlYywgcmVjX2dldF9vZmZzZXRzKHJlYywg aW5kZXgsIG9mZnNldHNfLAogCQkJCQkgICAgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApLAotCQkJ YmxvY2stPmN1cnJfbl9maWVsZHMsIGJsb2NrLT5jdXJyX25fYnl0ZXMsIGluZGV4X2lkKTsKKwkJ CWJsb2NrLT5jdXJyX25fZmllbGRzLCBibG9jay0+Y3Vycl9uX2J5dGVzLCBpbmRleC0+aWQpOwog CWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CiAJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJ fQorCiAJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCi0JaWYgKGhhX3NlYXJj aF9hbmRfZGVsZXRlX2lmX2ZvdW5kKHRhYmxlLCBmb2xkLCByZWMpKSB7Ci0JCU1PTklUT1JfSU5D KE1PTklUT1JfQURBUFRJVkVfSEFTSF9ST1dfUkVNT1ZFRCk7Ci0JfSBlbHNlIHsKLQkJTU9OSVRP Ul9JTkMoTU9OSVRPUl9BREFQVElWRV9IQVNIX1JPV19SRU1PVkVfTk9UX0ZPVU5EKTsKKwlpZiAo YmxvY2stPmluZGV4KSB7CisJCXV0X2EoYmxvY2stPmluZGV4ID09IGluZGV4KTsKKworCQlpZiAo aGFfc2VhcmNoX2FuZF9kZWxldGVfaWZfZm91bmQodGFibGUsIGZvbGQsIHJlYykpIHsKKwkJCU1P TklUT1JfSU5DKE1PTklUT1JfQURBUFRJVkVfSEFTSF9ST1dfUkVNT1ZFRCk7CisJCX0gZWxzZSB7 CisJCQlNT05JVE9SX0lOQygKKwkJCQlNT05JVE9SX0FEQVBUSVZFX0hBU0hfUk9XX1JFTU9WRV9O T1RfRk9VTkQpOworCQl9CiAJfQogCiAJcndfbG9ja194X3VubG9jaygmYnRyX3NlYXJjaF9sYXRj aCk7CkBAIC0xNTg4LDYgKzE2MDYsNyBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX25vZGVfb25f aW5zZXJ0KAogewogCWhhc2hfdGFibGVfdCoJdGFibGU7CiAJYnVmX2Jsb2NrX3QqCWJsb2NrOwor CWRpY3RfaW5kZXhfdCoJaW5kZXg7CiAJcmVjX3QqCQlyZWM7CiAKIAlyZWMgPSBidHJfY3VyX2dl dF9yZWMoY3Vyc29yKTsKQEAgLTE1OTgsMTYgKzE2MTcsMjUgQEAgYnRyX3NlYXJjaF91cGRhdGVf aGFzaF9ub2RlX29uX2luc2VydCgKIAl1dF9hZChyd19sb2NrX293bigmKGJsb2NrLT5sb2NrKSwg UldfTE9DS19FWCkpOwogI2VuZGlmIC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCi0JaWYgKCFibG9j ay0+aXNfaGFzaGVkKSB7CisJaW5kZXggPSBibG9jay0+aW5kZXg7CisKKwlpZiAoIWluZGV4KSB7 CiAKIAkJcmV0dXJuOwogCX0KIAotCXV0X2EoYmxvY2stPmluZGV4ID09IGN1cnNvci0+aW5kZXgp OwotCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihjdXJzb3ItPmluZGV4KSk7CisJdXRfYShjdXJz b3ItPmluZGV4ID09IGluZGV4KTsKKwl1dF9hKCFkaWN0X2luZGV4X2lzX2lidWYoaW5kZXgpKTsK IAogCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAorCWlmICghYmxvY2stPmlu ZGV4KSB7CisKKwkJZ290byBmdW5jX2V4aXQ7CisJfQorCisJdXRfYShibG9jay0+aW5kZXggPT0g aW5kZXgpOworCiAJaWYgKChjdXJzb3ItPmZsYWcgPT0gQlRSX0NVUl9IQVNIKQogCSAgICAmJiAo Y3Vyc29yLT5uX2ZpZWxkcyA9PSBibG9jay0+Y3Vycl9uX2ZpZWxkcykKIAkgICAgJiYgKGN1cnNv ci0+bl9ieXRlcyA9PSBibG9jay0+Y3Vycl9uX2J5dGVzKQpAQCAtMTYyMSw2ICsxNjQ5LDcgQEAg YnRyX3NlYXJjaF91cGRhdGVfaGFzaF9ub2RlX29uX2luc2VydCgKIAkJCU1PTklUT1JfSU5DKE1P TklUT1JfQURBUFRJVkVfSEFTSF9ST1dfVVBEQVRFRCk7CiAJCX0KIAorZnVuY19leGl0OgogCQly d19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAl9IGVsc2UgewogCQlyd19sb2Nr X3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKQEAgLTE2NDIsMTAgKzE2NzEsMTAgQEAgYnRy X3NlYXJjaF91cGRhdGVfaGFzaF9vbl9pbnNlcnQoCiB7CiAJaGFzaF90YWJsZV90Kgl0YWJsZTsK IAlidWZfYmxvY2tfdCoJYmxvY2s7Ci0JcmVjX3QqCQlyZWM7Ci0JcmVjX3QqCQlpbnNfcmVjOwot CXJlY190KgkJbmV4dF9yZWM7Ci0JaW5kZXhfaWRfdAlpbmRleF9pZDsKKwlkaWN0X2luZGV4X3Qq CWluZGV4OworCWNvbnN0IHJlY190KglyZWM7CisJY29uc3QgcmVjX3QqCWluc19yZWM7CisJY29u c3QgcmVjX3QqCW5leHRfcmVjOwogCXVsaW50CQlmb2xkOwogCXVsaW50CQlpbnNfZm9sZDsKIAl1 bGludAkJbmV4dF9mb2xkID0gMDsgLyogcmVtb3ZlIHdhcm5pbmcgKD8/PyBidWcgPz8/KSAqLwpA QCAtMTY2NCw0NCArMTY5Myw0NCBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX29uX2luc2VydCgK IAl1dF9hZChyd19sb2NrX293bigmKGJsb2NrLT5sb2NrKSwgUldfTE9DS19FWCkpOwogI2VuZGlm IC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCi0JaWYgKCFibG9jay0+aXNfaGFzaGVkKSB7CisJaW5k ZXggPSBibG9jay0+aW5kZXg7CisKKwlpZiAoIWluZGV4KSB7CiAKIAkJcmV0dXJuOwogCX0KIAot CXRhYmxlID0gYnRyX3NlYXJjaF9zeXMtPmhhc2hfaW5kZXg7Ci0KIAlidHJfc2VhcmNoX2NoZWNr X2ZyZWVfc3BhY2VfaW5faGVhcCgpOwogCi0JcmVjID0gYnRyX2N1cl9nZXRfcmVjKGN1cnNvcik7 CisJdGFibGUgPSBidHJfc2VhcmNoX3N5cy0+aGFzaF9pbmRleDsKIAotCXV0X2EoYmxvY2stPmlu ZGV4ID09IGN1cnNvci0+aW5kZXgpOwotCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihjdXJzb3It PmluZGV4KSk7CisJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGN1cnNvcik7CiAKLQlpbmRleF9pZCA9 IGN1cnNvci0+aW5kZXgtPmlkOworCXV0X2EoaW5kZXggPT0gY3Vyc29yLT5pbmRleCk7CisJdXRf YSghZGljdF9pbmRleF9pc19pYnVmKGluZGV4KSk7CiAKIAluX2ZpZWxkcyA9IGJsb2NrLT5jdXJy X25fZmllbGRzOwogCW5fYnl0ZXMgPSBibG9jay0+Y3Vycl9uX2J5dGVzOwogCWxlZnRfc2lkZSA9 IGJsb2NrLT5jdXJyX2xlZnRfc2lkZTsKIAotCWluc19yZWMgPSBwYWdlX3JlY19nZXRfbmV4dChy ZWMpOwotCW5leHRfcmVjID0gcGFnZV9yZWNfZ2V0X25leHQoaW5zX3JlYyk7CisJaW5zX3JlYyA9 IHBhZ2VfcmVjX2dldF9uZXh0X2NvbnN0KHJlYyk7CisJbmV4dF9yZWMgPSBwYWdlX3JlY19nZXRf bmV4dF9jb25zdChpbnNfcmVjKTsKIAotCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMoaW5zX3Jl YywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0cywKKwlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKGlu c19yZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7Ci0J aW5zX2ZvbGQgPSByZWNfZm9sZChpbnNfcmVjLCBvZmZzZXRzLCBuX2ZpZWxkcywgbl9ieXRlcywg aW5kZXhfaWQpOworCWluc19mb2xkID0gcmVjX2ZvbGQoaW5zX3JlYywgb2Zmc2V0cywgbl9maWVs ZHMsIG5fYnl0ZXMsIGluZGV4LT5pZCk7CiAKIAlpZiAoIXBhZ2VfcmVjX2lzX3N1cHJlbXVtKG5l eHRfcmVjKSkgewotCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKG5leHRfcmVjLCBjdXJzb3It PmluZGV4LCBvZmZzZXRzLAorCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKG5leHRfcmVjLCBp bmRleCwgb2Zmc2V0cywKIAkJCQkJICBuX2ZpZWxkcyArIChuX2J5dGVzID4gMCksICZoZWFwKTsK IAkJbmV4dF9mb2xkID0gcmVjX2ZvbGQobmV4dF9yZWMsIG9mZnNldHMsIG5fZmllbGRzLAotCQkJ CSAgICAgbl9ieXRlcywgaW5kZXhfaWQpOworCQkJCSAgICAgbl9ieXRlcywgaW5kZXgtPmlkKTsK IAl9CiAKIAlpZiAoIXBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgewotCQlvZmZzZXRzID0gcmVj X2dldF9vZmZzZXRzKHJlYywgY3Vyc29yLT5pbmRleCwgb2Zmc2V0cywKKwkJb2Zmc2V0cyA9IHJl Y19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4LCBvZmZzZXRzLAogCQkJCQkgIG5fZmllbGRzICsgKG5f Ynl0ZXMgPiAwKSwgJmhlYXApOwotCQlmb2xkID0gcmVjX2ZvbGQocmVjLCBvZmZzZXRzLCBuX2Zp ZWxkcywgbl9ieXRlcywgaW5kZXhfaWQpOworCQlmb2xkID0gcmVjX2ZvbGQocmVjLCBvZmZzZXRz LCBuX2ZpZWxkcywgbl9ieXRlcywgaW5kZXgtPmlkKTsKIAl9IGVsc2UgewogCQlpZiAobGVmdF9z aWRlKSB7CiAKQEAgLTE3MDksNiArMTczOCwxMCBAQCBidHJfc2VhcmNoX3VwZGF0ZV9oYXNoX29u X2luc2VydCgKIAogCQkJbG9ja2VkID0gVFJVRTsKIAorCQkJaWYgKCFidHJfc2VhcmNoX2VuYWJs ZWQpIHsKKwkJCQlnb3RvIGZ1bmN0aW9uX2V4aXQ7CisJCQl9CisKIAkJCWhhX2luc2VydF9mb3Jf Zm9sZCh0YWJsZSwgaW5zX2ZvbGQsIGJsb2NrLCBpbnNfcmVjKTsKIAkJfQogCkBAIC0xNzIyLDYg KzE3NTUsMTAgQEAgYnRyX3NlYXJjaF91cGRhdGVfaGFzaF9vbl9pbnNlcnQoCiAJCQlyd19sb2Nr X3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKIAkJCWxvY2tlZCA9IFRSVUU7CisKKwkJCWlm ICghYnRyX3NlYXJjaF9lbmFibGVkKSB7CisJCQkJZ290byBmdW5jdGlvbl9leGl0OworCQkJfQog CQl9CiAKIAkJaWYgKCFsZWZ0X3NpZGUpIHsKQEAgLTE3NDAsNiArMTc3NywxMCBAQCBjaGVja19u ZXh0X3JlYzoKIAkJCQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7CiAKIAkJCQls b2NrZWQgPSBUUlVFOworCisJCQkJaWYgKCFidHJfc2VhcmNoX2VuYWJsZWQpIHsKKwkJCQkJZ290 byBmdW5jdGlvbl9leGl0OworCQkJCX0KIAkJCX0KIAogCQkJaGFfaW5zZXJ0X2Zvcl9mb2xkKHRh YmxlLCBpbnNfZm9sZCwgYmxvY2ssIGluc19yZWMpOwpAQCAtMTc1NSw2ICsxNzk2LDEwIEBAIGNo ZWNrX25leHRfcmVjOgogCQkJcndfbG9ja194X2xvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwogCiAJ CQlsb2NrZWQgPSBUUlVFOworCisJCQlpZiAoIWJ0cl9zZWFyY2hfZW5hYmxlZCkgeworCQkJCWdv dG8gZnVuY3Rpb25fZXhpdDsKKwkJCX0KIAkJfQogCiAJCWlmICghbGVmdF9zaWRlKSB7CkBAIC0x NzYyLDcgKzE4MDcsNyBAQCBjaGVja19uZXh0X3JlYzoKIAkJCWhhX2luc2VydF9mb3JfZm9sZCh0 YWJsZSwgaW5zX2ZvbGQsIGJsb2NrLCBpbnNfcmVjKTsKIAkJCS8qCiAJCQlmcHV0cygiSGFzaCBp bnNlcnQgZm9yICIsIHN0ZGVycik7Ci0JCQlkaWN0X2luZGV4X25hbWVfcHJpbnQoc3RkZXJyLCBj dXJzb3ItPmluZGV4KTsKKwkJCWRpY3RfaW5kZXhfbmFtZV9wcmludChzdGRlcnIsIGluZGV4KTsK IAkJCWZwcmludGYoc3RkZXJyLCAiIGZvbGQgJWx1XG4iLCBpbnNfZm9sZCk7CiAJCQkqLwogCQl9 IGVsc2UgewpAQCAtMTg2NSwyMSArMTkxMCwyMCBAQCBidHJfc2VhcmNoX3ZhbGlkYXRlKHZvaWQp CiAKIAkJCXV0X2EoIWRpY3RfaW5kZXhfaXNfaWJ1ZihibG9jay0+aW5kZXgpKTsKIAotCQkJb2Zm c2V0cyA9IHJlY19nZXRfb2Zmc2V0cygoY29uc3QgcmVjX3QqKSBub2RlLT5kYXRhLAorCQkJcGFn ZV9pbmRleF9pZCA9IGJ0cl9wYWdlX2dldF9pbmRleF9pZChibG9jay0+ZnJhbWUpOworCisJCQlv ZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKG5vZGUtPmRhdGEsCiAJCQkJCQkgIGJsb2NrLT5pbmRl eCwgb2Zmc2V0cywKIAkJCQkJCSAgYmxvY2stPmN1cnJfbl9maWVsZHMKIAkJCQkJCSAgKyAoYmxv Y2stPmN1cnJfbl9ieXRlcyA+IDApLAogCQkJCQkJICAmaGVhcCk7CiAKLQkJCXBhZ2VfaW5kZXhf aWQgPSBidHJfcGFnZV9nZXRfaW5kZXhfaWQoYmxvY2stPmZyYW1lKTsKLQotCQkJaWYgKFVOSVZf VU5MSUtFTFkKLQkJCSAgICAoIWJsb2NrLT5pc19oYXNoZWQgfHwgbm9kZS0+Zm9sZAotCQkJICAg ICAhPSByZWNfZm9sZCgocmVjX3QqKShub2RlLT5kYXRhKSwKLQkJCQkJIG9mZnNldHMsCi0JCQkJ CSBibG9jay0+Y3Vycl9uX2ZpZWxkcywKLQkJCQkJIGJsb2NrLT5jdXJyX25fYnl0ZXMsCi0JCQkJ CSBwYWdlX2luZGV4X2lkKSkpIHsKKwkJCWlmICghYmxvY2stPmluZGV4IHx8IG5vZGUtPmZvbGQK KwkJCSAgICAhPSByZWNfZm9sZChub2RlLT5kYXRhLAorCQkJCQlvZmZzZXRzLAorCQkJCQlibG9j ay0+Y3Vycl9uX2ZpZWxkcywKKwkJCQkJYmxvY2stPmN1cnJfbl9ieXRlcywKKwkJCQkJcGFnZV9p bmRleF9pZCkpIHsKIAkJCQljb25zdCBwYWdlX3QqCXBhZ2UgPSBibG9jay0+ZnJhbWU7CiAKIAkJ CQlvayA9IEZBTFNFOwpAQCAtMTg5NSwyMCArMTkzOSwxOSBAQCBidHJfc2VhcmNoX3ZhbGlkYXRl KHZvaWQpCiAJCQkJCW5vZGUtPmRhdGEsCiAJCQkJCSh1bGxpbnQpIHBhZ2VfaW5kZXhfaWQsCiAJ CQkJCSh1bG9uZykgbm9kZS0+Zm9sZCwKLQkJCQkJKHVsb25nKSByZWNfZm9sZCgocmVjX3QqKShu b2RlLT5kYXRhKSwKKwkJCQkJKHVsb25nKSByZWNfZm9sZChub2RlLT5kYXRhLAogCQkJCQkJCSBv ZmZzZXRzLAogCQkJCQkJCSBibG9jay0+Y3Vycl9uX2ZpZWxkcywKIAkJCQkJCQkgYmxvY2stPmN1 cnJfbl9ieXRlcywKIAkJCQkJCQkgcGFnZV9pbmRleF9pZCkpOwogCiAJCQkJZnB1dHMoIklubm9E QjogUmVjb3JkICIsIHN0ZGVycik7Ci0JCQkJcmVjX3ByaW50X25ldyhzdGRlcnIsIChyZWNfdCop bm9kZS0+ZGF0YSwKLQkJCQkJICAgICAgb2Zmc2V0cyk7CisJCQkJcmVjX3ByaW50X25ldyhzdGRl cnIsIG5vZGUtPmRhdGEsIG9mZnNldHMpOwogCQkJCWZwcmludGYoc3RkZXJyLCAiXG5Jbm5vREI6 IG9uIHRoYXQgcGFnZS4iCi0JCQkJCSIgUGFnZSBtZW0gYWRkcmVzcyAlcCwgaXMgaGFzaGVkICVs dSwiCisJCQkJCSIgUGFnZSBtZW0gYWRkcmVzcyAlcCwgaXMgaGFzaGVkICVwLCIKIAkJCQkJIiBu IGZpZWxkcyAlbHUsIG4gYnl0ZXMgJWx1XG4iCiAJCQkJCSJJbm5vREI6IHNpZGUgJWx1XG4iLAot CQkJCQkodm9pZCopIHBhZ2UsICh1bG9uZykgYmxvY2stPmlzX2hhc2hlZCwKKwkJCQkJKHZvaWQq KSBwYWdlLCAodm9pZCopIGJsb2NrLT5pbmRleCwKIAkJCQkJKHVsb25nKSBibG9jay0+Y3Vycl9u X2ZpZWxkcywKIAkJCQkJKHVsb25nKSBibG9jay0+Y3Vycl9uX2J5dGVzLAogCQkJCQkodWxvbmcp IGJsb2NrLT5jdXJyX2xlZnRfc2lkZSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9idWYvYnVmMGJ1Zi5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJ cmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NTYwNy1sa3JybmQwZGU4 ZXltcW9iCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28yMGQxCkBAIC04NzEs OCArODcxLDYgQEAgYnVmX2Jsb2NrX2luaXQoCiAJYmxvY2stPmNoZWNrX2luZGV4X3BhZ2VfYXRf Zmx1c2ggPSBGQUxTRTsKIAlibG9jay0+aW5kZXggPSBOVUxMOwogCi0JYmxvY2stPmlzX2hhc2hl ZCA9IEZBTFNFOwotCiAjaWZkZWYgVU5JVl9ERUJVRwogCWJsb2NrLT5wYWdlLmluX3BhZ2VfaGFz aCA9IEZBTFNFOwogCWJsb2NrLT5wYWdlLmluX3ppcF9oYXNoID0gRkFMU0U7CkBAIC0xMjI3LDcg KzEyMjUsNiBAQCBidWZfcG9vbF9mcmVlX2luc3RhbmNlKAogCX0KIAogCW1lbV9mcmVlKGJ1Zl9w b29sLT5jaHVua3MpOwotCWhhX2NsZWFyKGJ1Zl9wb29sLT5wYWdlX2hhc2gpOwogCWhhc2hfdGFi bGVfZnJlZShidWZfcG9vbC0+cGFnZV9oYXNoKTsKIAloYXNoX3RhYmxlX2ZyZWUoYnVmX3Bvb2wt PnppcF9oYXNoKTsKIH0KQEAgLTEyOTEsMTA4ICsxMjg4LDQ3IEBAIGJ1Zl9wb29sX2ZyZWUoCiB9 CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLURyb3BzIGFkYXB0aXZlIGhhc2ggaW5kZXggZm9yIGEgYnVm ZmVyIHBvb2wgaW5zdGFuY2UuICovCi1zdGF0aWMKLXZvaWQKLWJ1Zl9wb29sX2Ryb3BfaGFzaF9p bmRleF9pbnN0YW5jZSgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidWZf cG9vbF90KglidWZfcG9vbCwJCS8qITwgaW46IGJ1ZmZlciBwb29sIGluc3RhbmNlICovCi0JaWJv b2wqCQlyZWxlYXNlZF9zZWFyY2hfbGF0Y2gpCS8qITwgb3V0OiBmbGFnIGZvciBzaWduYWxsaW5n Ci0JCQkJCQl3aGV0aGVyIHRoZSBzZWFyY2ggbGF0Y2ggd2FzCi0JCQkJCQlyZWxlYXNlZCAqLwot ewotCWJ1Zl9jaHVua190KgljaHVua3MJPSBidWZfcG9vbC0+Y2h1bmtzOwotCWJ1Zl9jaHVua190 KgljaHVuawk9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKLQotCXdoaWxlICgtLWNodW5r ID49IGNodW5rcykgewotCQl1bGludAkJaTsKLQkJYnVmX2Jsb2NrX3QqCWJsb2NrCT0gY2h1bmst PmJsb2NrczsKLQotCQlmb3IgKGkgPSBjaHVuay0+c2l6ZTsgaS0tOyBibG9jaysrKSB7Ci0JCQkv KiBibG9jay0+aXNfaGFzaGVkIGNhbm5vdCBiZSBtb2RpZmllZAotCQkJd2hlbiB3ZSBoYXZlIGFu IHgtbGF0Y2ggb24gYnRyX3NlYXJjaF9sYXRjaDsKLQkJCXNlZSB0aGUgY29tbWVudCBpbiBidWYw YnVmLmggKi8KLQotCQkJaWYgKCFibG9jay0+aXNfaGFzaGVkKSB7Ci0JCQkJY29udGludWU7Ci0J CQl9Ci0KLQkJCS8qIFRvIGZvbGxvdyB0aGUgbGF0Y2hpbmcgb3JkZXIsIHdlCi0JCQloYXZlIHRv IHJlbGVhc2UgYnRyX3NlYXJjaF9sYXRjaAotCQkJYmVmb3JlIGFjcXVpcmluZyBibG9jay0+bGF0 Y2guICovCi0JCQlyd19sb2NrX3hfdW5sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKLQkJCS8qIFdo ZW4gd2UgcmVsZWFzZSB0aGUgc2VhcmNoIGxhdGNoLAotCQkJd2UgbXVzdCByZXNjYW4gYWxsIGJs b2NrcywgYmVjYXVzZQotCQkJc29tZSBtYXkgYmVjb21lIGhhc2hlZCBhZ2Fpbi4gKi8KLQkJCSpy ZWxlYXNlZF9zZWFyY2hfbGF0Y2ggPSBUUlVFOwotCi0JCQlyd19sb2NrX3hfbG9jaygmYmxvY2st PmxvY2spOwotCi0JCQkvKiBUaGlzIHNob3VsZCBiZSBndWFyYW50ZWVkIGJ5IHRoZQotCQkJY2Fs bGVycywgd2hpY2ggd2lsbCBiZSBob2xkaW5nCi0JCQlidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgu ICovCi0JCQl1dF9hZCghYnRyX3NlYXJjaF9lbmFibGVkKTsKLQotCQkJLyogQmVjYXVzZSB3ZSBk aWQgbm90IGJ1ZmZlci1maXggdGhlCi0JCQlibG9jayBieSBjYWxsaW5nIGJ1Zl9ibG9ja19nZXRf Z2VuKCksCi0JCQlpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBibG9jayBoYXMgYmVlbgotCQkJYWxs b2NhdGVkIGZvciBzb21lIG90aGVyIHVzZSBhZnRlcgotCQkJYnRyX3NlYXJjaF9sYXRjaCB3YXMg cmVsZWFzZWQgYWJvdmUuCi0JCQlXZSBkbyBub3QgY2FyZSB3aGljaCBmaWxlIHBhZ2UgdGhlCi0J CQlibG9jayBpcyBtYXBwZWQgdG8uICBBbGwgd2Ugd2FudCB0byBkbwotCQkJaXMgdG8gZHJvcCBh bnkgaGFzaCBlbnRyaWVzIHJlZmVycmluZwotCQkJdG8gdGhlIHBhZ2UuICovCi0KLQkJCS8qIEl0 IGlzIHBvc3NpYmxlIHRoYXQKLQkJCWJsb2NrLT5wYWdlLnN0YXRlICE9IEJVRl9GSUxFX1BBR0Uu Ci0JCQlFdmVuIHRoYXQgZG9lcyBub3QgbWF0dGVyLCBiZWNhdXNlCi0JCQlidHJfc2VhcmNoX2Ry b3BfcGFnZV9oYXNoX2luZGV4KCkgd2lsbAotCQkJY2hlY2sgYmxvY2stPmlzX2hhc2hlZCBiZWZv cmUgZG9pbmcKLQkJCWFueXRoaW5nLiAgYmxvY2stPmlzX2hhc2hlZCBjYW4gb25seQotCQkJYmUg c2V0IG9uIHVuY29tcHJlc3NlZCBmaWxlIHBhZ2VzLiAqLwotCi0JCQlidHJfc2VhcmNoX2Ryb3Bf cGFnZV9oYXNoX2luZGV4KGJsb2NrKTsKLQotCQkJcndfbG9ja194X3VubG9jaygmYmxvY2stPmxv Y2spOwotCi0JCQlyd19sb2NrX3hfbG9jaygmYnRyX3NlYXJjaF9sYXRjaCk7Ci0KLQkJCXV0X2Fk KCFidHJfc2VhcmNoX2VuYWJsZWQpOwotCQl9Ci0JfQotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1E cm9wcyB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleC4gIFRvIHByZXZlbnQgYSBsaXZlbG9jaywgdGhp cyBmdW5jdGlvbgotaXMgb25seSB0byBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBidHJfc2VhcmNo X2xhdGNoIGFuZCB3aGlsZQotYnRyX3NlYXJjaF9lbmFibGVkID09IEZBTFNFLiAqLworQ2xlYXJz IHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IG9uIGFsbCBwYWdlcyBpbiB0aGUgYnVmZmVyIHBvb2wu ICovCiBVTklWX0lOVEVSTgogdm9pZAotYnVmX3Bvb2xfZHJvcF9oYXNoX2luZGV4KHZvaWQpCi0v Kj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK2J1Zl9wb29sX2NsZWFyX2hhc2hfaW5kZXgo dm9pZCkKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIHsKLQlpYm9vbAkJcmVsZWFz ZWRfc2VhcmNoX2xhdGNoOworCXVsaW50CXA7CiAKICNpZmRlZiBVTklWX1NZTkNfREVCVUcKIAl1 dF9hZChyd19sb2NrX293bigmYnRyX3NlYXJjaF9sYXRjaCwgUldfTE9DS19FWCkpOwogI2VuZGlm IC8qIFVOSVZfU1lOQ19ERUJVRyAqLwogCXV0X2FkKCFidHJfc2VhcmNoX2VuYWJsZWQpOwogCi0J ZG8gewotIAkJdWxpbnQJaTsKLQotCQlyZWxlYXNlZF9zZWFyY2hfbGF0Y2ggPSBGQUxTRTsKLQot CQlmb3IgKGkgPSAwOyBpIDwgc3J2X2J1Zl9wb29sX2luc3RhbmNlczsgaSsrKSB7Ci0gCQkJYnVm X3Bvb2xfdCoJYnVmX3Bvb2w7Ci0KLQkJCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZnJvbV9hcnJheShp KTsKLQotCQkJYnVmX3Bvb2xfZHJvcF9oYXNoX2luZGV4X2luc3RhbmNlKAotCQkJCWJ1Zl9wb29s LCAmcmVsZWFzZWRfc2VhcmNoX2xhdGNoKTsKKwlmb3IgKHAgPSAwOyBwIDwgc3J2X2J1Zl9wb29s X2luc3RhbmNlczsgcCsrKSB7CisJCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sID0gYnVmX3Bvb2xfZnJv bV9hcnJheShwKTsKKwkJYnVmX2NodW5rX3QqCWNodW5rcwk9IGJ1Zl9wb29sLT5jaHVua3M7CisJ CWJ1Zl9jaHVua190KgljaHVuawk9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKKworCQl3 aGlsZSAoLS1jaHVuayA+PSBjaHVua3MpIHsKKwkJCWJ1Zl9ibG9ja190KglibG9jawk9IGNodW5r LT5ibG9ja3M7CisJCQl1bGludAkJaQk9IGNodW5rLT5zaXplOworCisJCQlmb3IgKDsgaS0tOyBi bG9jaysrKSB7CisJCQkJZGljdF9pbmRleF90KglpbmRleAk9IGJsb2NrLT5pbmRleDsKKworCQkJ CS8qIFdlIGNhbiBzZXQgYmxvY2stPmluZGV4ID0gTlVMTAorCQkJCXdoZW4gd2UgaGF2ZSBhbiB4 LWxhdGNoIG9uIGJ0cl9zZWFyY2hfbGF0Y2g7CisJCQkJc2VlIHRoZSBjb21tZW50IGluIGJ1ZjBi dWYuaCAqLworCisJCQkJaWYgKCFpbmRleCkgeworCQkJCQkvKiBOb3QgaGFzaGVkICovCisJCQkJ CWNvbnRpbnVlOworCQkJCX0KKworCQkJCWJsb2NrLT5pbmRleCA9IE5VTEw7CisjIGlmIGRlZmlu ZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCisJCQkJYmxvY2stPm5fcG9p bnRlcnMgPSAwOworIyBlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCisJ CQl9CiAJCX0KLQotCX0gd2hpbGUgKHJlbGVhc2VkX3NlYXJjaF9sYXRjaCk7CisJfQogfQogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCkBAIC0xNzk2LDM3ICsxNzMyLDI4IEBAIGJ1Zl9wYWdlX3NldF9hY2Nl c3NlZF9tYWtlX3lvdW5nKAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHRoZSBjdXJy ZW50IHN0YXRlIG9mIGlzX2hhc2hlZCBvZiBhIHBhZ2UuIEZBTFNFIGlmIHRoZSBwYWdlIGlzCi1u b3QgaW4gdGhlIHBvb2wuIE5PVEUgdGhhdCB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBmaXggdGhl IHBhZ2UgaW4gdGhlCi1wb29sIGlmIGl0IGlzIGZvdW5kIHRoZXJlLgotQHJldHVybglUUlVFIGlm IHBhZ2UgaGFzaCBpbmRleCBpcyBidWlsdCBpbiBzZWFyY2ggc3lzdGVtICovCitSZXNldHMgdGhl IGNoZWNrX2luZGV4X3BhZ2VfYXRfZmx1c2ggZmllbGQgb2YgYSBwYWdlIGlmIGZvdW5kIGluIHRo ZSBidWZmZXIKK3Bvb2wuICovCiBVTklWX0lOVEVSTgotaWJvb2wKLWJ1Zl9wYWdlX3BlZWtfaWZf c2VhcmNoX2hhc2hlZCgKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3ZvaWQKK2J1 Zl9yZXNldF9jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoKAorLyo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PSovCiAJdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlkICovCiAJdWxp bnQJb2Zmc2V0KQkvKiE8IGluOiBwYWdlIG51bWJlciAqLwogewogCWJ1Zl9ibG9ja190KglibG9j azsKLQlpYm9vbAkJaXNfaGFzaGVkOwogCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sID0gYnVmX3Bvb2xf Z2V0KHNwYWNlLCBvZmZzZXQpOwotCXJ3X2xvY2tfdCoJaGFzaF9sb2NrOwogCi0JYmxvY2sgPSBi dWZfYmxvY2tfaGFzaF9nZXRfc19sb2NrZWQoYnVmX3Bvb2wsIHNwYWNlLCBvZmZzZXQsCi0JCQkJ CSAgICAmaGFzaF9sb2NrKTsKKwlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7CiAKLQlp ZiAoIWJsb2NrIHx8IGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spICE9IEJVRl9CTE9DS19GSUxF X1BBR0UpIHsKLQkJaXNfaGFzaGVkID0gRkFMU0U7Ci0JfSBlbHNlIHsKLQkJdXRfYWQoIWJ1Zl9w b29sX3dhdGNoX2lzX3NlbnRpbmVsKGJ1Zl9wb29sLCAmYmxvY2stPnBhZ2UpKTsKLQkJaXNfaGFz aGVkID0gYmxvY2stPmlzX2hhc2hlZDsKLQl9CisJYmxvY2sgPSAoYnVmX2Jsb2NrX3QqKSBidWZf cGFnZV9oYXNoX2dldChidWZfcG9vbCwgc3BhY2UsIG9mZnNldCk7CiAKLQlpZiAoYmxvY2spIHsK LQkJcndfbG9ja19zX3VubG9jayhoYXNoX2xvY2spOworCWlmIChibG9jayAmJiBidWZfYmxvY2tf Z2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklMRV9QQUdFKSB7CisJCXV0X2FkKCFidWZf cG9vbF93YXRjaF9pc19zZW50aW5lbChidWZfcG9vbCwgJmJsb2NrLT5wYWdlKSk7CisJCWJsb2Nr LT5jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoID0gRkFMU0U7CiAJfQogCi0JcmV0dXJuKGlzX2hh c2hlZCk7CisJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7CiB9CiAKICNpZiBkZWZpbmVk IFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKQEAgLTIwNzcs NyArMjAwNCw2IEBAIGJ1Zl9ibG9ja19pbml0X2xvdygKIAlibG9jay0+aW5kZXgJCT0gTlVMTDsK IAogCWJsb2NrLT5uX2hhc2hfaGVscHMJPSAwOwotCWJsb2NrLT5pc19oYXNoZWQJPSBGQUxTRTsK IAlibG9jay0+bl9maWVsZHMJCT0gMTsKIAlibG9jay0+bl9ieXRlcwkJPSAwOwogCWJsb2NrLT5s ZWZ0X3NpZGUJPSBUUlVFOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVm L2J1ZjBscnUuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGxydS5jCXJldmlkOnZp bmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDU2MDctbGtycm5kMGRlOGV5bXFvYgor KysgYi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTEwMTIxMzQ2MzQtbGFqc3c2bTF0NGtvMjBkMQpAQCAtMjgzLDcgKzI4Myw3 IEBAIG5leHRfcGFnZToKIAogCQltdXRleF9lbnRlcigmKChidWZfYmxvY2tfdCopIGJwYWdlKS0+ bXV0ZXgpOwogCQlpc19maXhlZCA9IGJwYWdlLT5idWZfZml4X2NvdW50ID4gMAotCQkJfHwgISgo YnVmX2Jsb2NrX3QqKSBicGFnZSktPmlzX2hhc2hlZDsKKwkJCXx8ICEoKGJ1Zl9ibG9ja190Kikg YnBhZ2UpLT5pbmRleDsKIAkJbXV0ZXhfZXhpdCgmKChidWZfYmxvY2tfdCopIGJwYWdlKS0+bXV0 ZXgpOwogCiAJCWlmIChpc19maXhlZCkgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2UvaGEvaGEwaGEuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9oYS9oYTBoYS5jCXJldmlk OnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDU2MDctbGtycm5kMGRlOGV5bXFv YgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhL2hhMGhhLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTEwMTIxMzQ2MzQtbGFqc3c2bTF0NGtvMjBkMQpAQCAtMSw2ICsxLDYgQEAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMDksIElubm9i YXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE3OSw3ICsxNzksNyBA QCBoYV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKICNpZiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8 IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jaywJLyohPCBpbjogYnVmZmVy IGJsb2NrIGNvbnRhaW5pbmcgdGhlIGRhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8 fCBVTklWX0RFQlVHICovCi0Jdm9pZCoJCWRhdGEpCS8qITwgaW46IGRhdGEsIG11c3Qgbm90IGJl IE5VTEwgKi8KKwljb25zdCByZWNfdCoJZGF0YSkJLyohPCBpbjogZGF0YSwgbXVzdCBub3QgYmUg TlVMTCAqLwogewogCWhhc2hfY2VsbF90KgljZWxsOwogCWhhX25vZGVfdCoJbm9kZTsKQEAgLTE5 Myw2ICsxOTMsNyBAQCBoYV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKIAl1dF9hKGJsb2NrLT5mcmFt ZSA9PSBwYWdlX2FsaWduKGRhdGEpKTsKICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklW X0RFQlVHICovCiAJaGFzaF9hc3NlcnRfY2FuX21vZGlmeSh0YWJsZSwgZm9sZCk7CisJdXRfYWQo YnRyX3NlYXJjaF9lbmFibGVkKTsKIAogCWhhc2ggPSBoYXNoX2NhbGNfaGFzaChmb2xkLCB0YWJs ZSk7CiAKQEAgLTIxMiw3ICsyMTMsNiBAQCBoYV9pbnNlcnRfZm9yX2ZvbGRfZnVuYygKIAkJCQlw cmV2X2Jsb2NrLT5uX3BvaW50ZXJzLS07CiAJCQkJYmxvY2stPm5fcG9pbnRlcnMrKzsKIAkJCX0K LQkJCXV0X2FkKCFidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVkKTsKICMgZW5kaWYgLyogIVVOSVZf SE9UQkFDS1VQICovCiAKIAkJCXByZXZfbm9kZS0+YmxvY2sgPSBibG9jazsKQEAgLTIyNSwxNSAr MjI1LDYgQEAgaGFfaW5zZXJ0X2Zvcl9mb2xkX2Z1bmMoCiAJCXByZXZfbm9kZSA9IHByZXZfbm9k ZS0+bmV4dDsKIAl9CiAKLSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQkvKiBXZSBhcmUgaW4gdGhl IHByb2Nlc3Mgb2YgZGlzYWJsaW5nIGhhc2ggaW5kZXgsIGRvIG5vdCBhZGQKLQluZXcgY2hhaW4g bm9kZSAqLwotCWlmICghYnRyX3NlYXJjaF9lbmFibGVkKSB7Ci0JCXV0X2FkKCFidHJfc2VhcmNo X2Z1bGx5X2Rpc2FibGVkKTsKLQkJcmV0dXJuKFRSVUUpOwotCX0KLSNlbmRpZiAvKiAhVU5JVl9I T1RCQUNLVVAgKi8KLQogCS8qIFdlIGhhdmUgdG8gYWxsb2NhdGUgYSBuZXcgY2hhaW4gbm9kZSAq LwogCiAJbm9kZSA9IG1lbV9oZWFwX2FsbG9jKGhhc2hfZ2V0X2hlYXAodGFibGUsIGZvbGQpLCBz aXplb2YoaGFfbm9kZV90KSk7CkBAIC0yOTEsNiArMjgyLDEwIEBAIGhhX2RlbGV0ZV9oYXNoX25v ZGUoCiB7CiAJdXRfYWQodGFibGUpOwogCXV0X2FkKHRhYmxlLT5tYWdpY19uID09IEhBU0hfVEFC TEVfTUFHSUNfTik7CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJdXRfYWQocndfbG9ja19vd24o JmJ0cl9zZWFyY2hfbGF0Y2gsIFJXX0xPQ0tfRVgpKTsKKyNlbmRpZiAvKiBVTklWX1NZTkNfREVC VUcgKi8KKwl1dF9hZChidHJfc2VhcmNoX2VuYWJsZWQpOwogI2lmIGRlZmluZWQgVU5JVl9BSElf REVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAjIGlmbmRlZiBVTklWX0hPVEJBQ0tVUAogCWlm ICh0YWJsZS0+YWRhcHRpdmUpIHsKQEAgLTMxNCwxMSArMzA5LDExIEBAIGhhX3NlYXJjaF9hbmRf dXBkYXRlX2lmX2ZvdW5kX2Z1bmMoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwogCWhhc2hfdGFibGVfdCoJdGFibGUsCS8qITwgaW4vb3V0OiBoYXNoIHRhYmxlICovCiAJdWxp bnQJCWZvbGQsCS8qITwgaW46IGZvbGRlZCB2YWx1ZSBvZiB0aGUgc2VhcmNoZWQgZGF0YSAqLwot CXZvaWQqCQlkYXRhLAkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCisJY29uc3QgcmVj X3QqCWRhdGEsCS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KICNpZiBkZWZpbmVkIFVO SVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190KgluZXdfYmxv Y2ssLyohPCBpbjogYmxvY2sgY29udGFpbmluZyBuZXdfZGF0YSAqLwogI2VuZGlmIC8qIFVOSVZf QUhJX0RFQlVHIHx8IFVOSVZfREVCVUcgKi8KLQl2b2lkKgkJbmV3X2RhdGEpLyohPCBpbjogbmV3 IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KKwljb25zdCByZWNfdCoJbmV3X2RhdGEpLyohPCBpbjog bmV3IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIHsKIAloYV9ub2RlX3QqCW5vZGU7CiAKQEAgLTMy OCw2ICszMjMsMTMgQEAgaGFfc2VhcmNoX2FuZF91cGRhdGVfaWZfZm91bmRfZnVuYygKICNpZiBk ZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0X2EobmV3X2Js b2NrLT5mcmFtZSA9PSBwYWdlX2FsaWduKG5ld19kYXRhKSk7CiAjZW5kaWYgLyogVU5JVl9BSElf REVCVUcgfHwgVU5JVl9ERUJVRyAqLworI2lmZGVmIFVOSVZfU1lOQ19ERUJVRworCXV0X2FkKHJ3 X2xvY2tfb3duKCZidHJfc2VhcmNoX2xhdGNoLCBSV19MT0NLX0VYKSk7CisjZW5kaWYgLyogVU5J Vl9TWU5DX0RFQlVHICovCisKKwlpZiAoIWJ0cl9zZWFyY2hfZW5hYmxlZCkgeworCQlyZXR1cm4o RkFMU0UpOworCX0KIAogCW5vZGUgPSBoYV9zZWFyY2hfd2l0aF9kYXRhKHRhYmxlLCBmb2xkLCBk YXRhKTsKIApAQCAtMzY4LDYgKzM3MCw3IEBAIGhhX3JlbW92ZV9hbGxfbm9kZXNfdG9fcGFnZSgK IAl1dF9hZCh0YWJsZSk7CiAJdXRfYWQodGFibGUtPm1hZ2ljX24gPT0gSEFTSF9UQUJMRV9NQUdJ Q19OKTsKIAloYXNoX2Fzc2VydF9jYW5fbW9kaWZ5KHRhYmxlLCBmb2xkKTsKKwl1dF9hZChidHJf c2VhcmNoX2VuYWJsZWQpOwogCiAJbm9kZSA9IGhhX2NoYWluX2dldF9maXJzdCh0YWJsZSwgZm9s ZCk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5u b2RiLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlk OnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDU2MDctbGtycm5kMGRlOGV5bXFv YgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMTM0NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTI2 Myw3ICsyNjMsNiBAQCBwZXJmb3JtYW5jZSBzY2hlbWEgaW5zdHJ1bWVudGVkIGlmICJVTklWCiBp cyBkZWZpbmVkICovCiBzdGF0aWMgUFNJX211dGV4X2luZm8gYWxsX2lubm9kYl9tdXRleGVzW10g PSB7CiAJeyZhdXRvaW5jX211dGV4X2tleSwgImF1dG9pbmNfbXV0ZXgiLCAwfSwKLQl7JmJ0cl9z ZWFyY2hfZW5hYmxlZF9tdXRleF9rZXksICJidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXgiLCAwfSwK ICMgIGlmbmRlZiBQRlNfU0tJUF9CVUZGRVJfTVVURVhfUldMT0NLCiAJeyZidWZmZXJfYmxvY2tf bXV0ZXhfa2V5LCAiYnVmZmVyX2Jsb2NrX211dGV4IiwgMH0sCiAjICBlbmRpZiAvKiAhUEZTX1NL SVBfQlVGRkVSX01VVEVYX1JXTE9DSyAqLwpAQCAtMjg3Nyw3ICsyODc2LDYgQEAgaW5ub2Jhc2Vf Y2hhbmdlX2J1ZmZlcmluZ19pbml0ZWRfb2s6CiAJLyogVHVybiBvbiBtb25pdG9yIGNvdW50ZXJz IHRoYXQgYXJlIGRlZmF1bHQgb24gKi8KIAlzcnZfbW9uX2RlZmF1bHRfb24oKTsKIAotCWJ0cl9z ZWFyY2hfZnVsbHlfZGlzYWJsZWQgPSAoIWJ0cl9zZWFyY2hfZW5hYmxlZCk7CiAJREJVR19SRVRV Uk4oRkFMU0UpOwogZXJyb3I6CiAJREJVR19SRVRVUk4oVFJVRSk7Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2lfcy5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9oYW5kbGVyL2lfcy5jYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEy MDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2lf cy5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZt MXQ0a28yMGQxCkBAIC0zNDEyLDcgKzM0MTIsNyBAQCBpX3NfaW5ub2RiX2J1ZmZlcl9wYWdlX2dl dF9pbmZvKAogCiAJCQlibG9jayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYnVmX2Jsb2NrX3Qq PihicGFnZSk7CiAJCQlmcmFtZSA9IGJsb2NrLT5mcmFtZTsKLQkJCXBhZ2VfaW5mby0+aGFzaGVk ID0gYmxvY2stPmlzX2hhc2hlZDsKKwkJCXBhZ2VfaW5mby0+aGFzaGVkID0gKGJsb2NrLT5pbmRl eCAhPSBOVUxMKTsKIAkJfSBlbHNlIHsKIAkJCXV0X2FkKHBhZ2VfaW5mby0+emlwX3NzaXplKTsK IAkJCWZyYW1lID0gYnBhZ2UtPnppcC5kYXRhOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2li dWYwaWJ1Zi5jCXJldmlkOnZpbmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDU2MDct bGtycm5kMGRlOGV5bXFvYgorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIxMzQ2MzQtbGFqc3c2bTF0NGtv MjBkMQpAQCAtMzk4Niw3ICszOTg2LDcgQEAgaWJ1Zl9pbnNlcnRfdG9faW5kZXhfcGFnZSgKIAog CXV0X2FkKGlidWZfaW5zaWRlKG10cikpOwogCXV0X2FkKGR0dXBsZV9jaGVja190eXBlZChlbnRy eSkpOwotCXV0X2FkKCFidWZfYmxvY2tfYWxpZ24ocGFnZSktPmlzX2hhc2hlZCk7CisJdXRfYWQo IWJ1Zl9ibG9ja19hbGlnbihwYWdlKS0+aW5kZXgpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoZGlj dF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkKIAkJCSAgIT0gKGlib29sKSEhcGFnZV9pc19j b21wKHBhZ2UpKSkgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9idHIwc2VhLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwc2VhLmgJcmV2 aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NTYwNy1sa3JybmQwZGU4ZXlt cW9iCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwc2VhLmgJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTEwMTIxMzQ2MzQtbGFqc3c2bTF0NGtvMjBkMQpAQCAtMSw2 ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTYsIDIw MDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk2 LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVk LgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTE0MSw4 ICsxNDEsOCBAQCBidHJfc2VhcmNoX2Ryb3BfcGFnZV9oYXNoX2luZGV4KAogCQkJCWZvciB3aGlj aCB3ZSBrbm93IHRoYXQKIAkJCQlibG9jay0+YnVmX2ZpeF9jb3VudCA9PSAwICovCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCi1Ecm9wcyBhIHBhZ2UgaGFzaCBpbmRleCB3aGVuIGEgcGFnZSBpcyBmcmVlZCBm cm9tIGEgZnNlZyB0byB0aGUgZmlsZSBzeXN0ZW0uCi1Ecm9wcyBwb3NzaWJsZSBoYXNoIGluZGV4 IGlmIHRoZSBwYWdlIGhhcHBlbnMgdG8gYmUgaW4gdGhlIGJ1ZmZlciBwb29sLiAqLworRHJvcHMg YSBwb3NzaWJsZSBwYWdlIGhhc2ggaW5kZXggd2hlbiBhIHBhZ2UgaXMgZXZpY3RlZCBmcm9tIHRo ZSBidWZmZXIgcG9vbAorb3IgZnJlZWQgaW4gYSBmaWxlIHNlZ21lbnQuICovCiBVTklWX0lOVEVS Tgogdm9pZAogYnRyX3NlYXJjaF9kcm9wX3BhZ2VfaGFzaF93aGVuX2ZyZWVkKApAQCAtMTkyLDE2 ICsxOTIsNiBAQCBidHJfc2VhcmNoX3ZhbGlkYXRlKHZvaWQpOwogIyBkZWZpbmUgYnRyX3NlYXJj aF92YWxpZGF0ZSgpCVRSVUUKICNlbmRpZiAvKiBkZWZpbmVkIFVOSVZfQUhJX0RFQlVHIHx8IGRl ZmluZWQgVU5JVl9ERUJVRyAqLwogCi0vKiogRmxhZzogaGFzIHRoZSBzZWFyY2ggc3lzdGVtIGJl ZW4gZW5hYmxlZD8KLVByb3RlY3RlZCBieSBidHJfc2VhcmNoX2xhdGNoIGFuZCBidHJfc2VhcmNo X2VuYWJsZWRfbXV0ZXguICovCi1leHRlcm4gY2hhcglidHJfc2VhcmNoX2VuYWJsZWQ7Ci0KLS8q KiBGbGFnOiB3aGV0aGVyIHRoZSBzZWFyY2ggc3lzdGVtIGhhcyBjb21wbGV0ZWQgaXRzIGRpc2Fi bGluZyBwcm9jZXNzLAotSXQgaXMgc2V0IHRvIFRSVUUgcmlnaHQgYWZ0ZXIgYnVmX3Bvb2xfZHJv cF9oYXNoX2luZGV4KCkgaW4KLWJ0cl9zZWFyY2hfZGlzYWJsZSgpLCBpbmRpY2F0aW5nIGhhc2gg aW5kZXggZW50cmllcyBhcmUgY2xlYW5lZCB1cC4KLVByb3RlY3RlZCBieSBidHJfc2VhcmNoX2xh dGNoIGFuZCBidHJfc2VhcmNoX2VuYWJsZWRfbXV0ZXguICovCi1leHRlcm4gaWJvb2wJYnRyX3Nl YXJjaF9mdWxseV9kaXNhYmxlZDsKLQogLyoqIFRoZSBzZWFyY2ggaW5mbyBzdHJ1Y3QgaW4gYW4g aW5kZXggKi8KIHN0cnVjdCBidHJfc2VhcmNoX3N0cnVjdHsKIAl1bGludAlyZWZfY291bnQ7CS8q ITwgTnVtYmVyIG9mIGJsb2NrcyBpbiB0aGlzIGluZGV4IHRyZWUKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMHR5cGVzLmgnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9idHIwdHlwZXMuaAlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29t LTIwMTExMDEyMDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J0cjB0eXBlcy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEy MTM0NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMg YWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIK IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0zMCw2ICszMCw3IEBAIENyZWF0ZWQgMi8xNy8xOTk2 IEhlaWtraSBUdXVyaQogCiAjaW5jbHVkZSAicmVtMHR5cGVzLmgiCiAjaW5jbHVkZSAicGFnZTB0 eXBlcy5oIgorI2luY2x1ZGUgInN5bmMwcncuaCIKIAogLyoqIFBlcnNpc3RlbnQgY3Vyc29yICov CiB0eXBlZGVmIHN0cnVjdCBidHJfcGN1cl9zdHJ1Y3QJCWJ0cl9wY3VyX3Q7CkBAIC0zOCw2ICsz OSwyOCBAQCB0eXBlZGVmIHN0cnVjdCBidHJfY3VyX3N0cnVjdAkJYnRyX2N1cl90CiAvKiogQi10 cmVlIHNlYXJjaCBpbmZvcm1hdGlvbiBmb3IgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXggKi8KIHR5 cGVkZWYgc3RydWN0IGJ0cl9zZWFyY2hfc3RydWN0CWJ0cl9zZWFyY2hfdDsKIAorLyoqIEBicmll ZiBUaGUgbGF0Y2ggcHJvdGVjdGluZyB0aGUgYWRhcHRpdmUgc2VhcmNoIHN5c3RlbQorCitUaGlz IGxhdGNoIHByb3RlY3RzIHRoZQorKDEpIGhhc2ggaW5kZXg7CisoMikgY29sdW1ucyBvZiBhIHJl Y29yZCB0byB3aGljaCB3ZSBoYXZlIGEgcG9pbnRlciBpbiB0aGUgaGFzaCBpbmRleDsKKworYnV0 IGRvZXMgTk9UIHByb3RlY3Q6CisKKygzKSBuZXh0IHJlY29yZCBvZmZzZXQgZmllbGQgaW4gYSBy ZWNvcmQ7CisoNCkgbmV4dCBvciBwcmV2aW91cyByZWNvcmRzIG9uIHRoZSBzYW1lIHBhZ2UuCisK K0JlYXIgaW4gbWluZCAoMykgYW5kICg0KSB3aGVuIHVzaW5nIHRoZSBoYXNoIGluZGV4LgorKi8K K2V4dGVybiByd19sb2NrX3QqCWJ0cl9zZWFyY2hfbGF0Y2hfdGVtcDsKKworLyoqIFRoZSBsYXRj aCBwcm90ZWN0aW5nIHRoZSBhZGFwdGl2ZSBzZWFyY2ggc3lzdGVtICovCisjZGVmaW5lIGJ0cl9z ZWFyY2hfbGF0Y2gJKCpidHJfc2VhcmNoX2xhdGNoX3RlbXApCisKKy8qKiBGbGFnOiBoYXMgdGhl IHNlYXJjaCBzeXN0ZW0gYmVlbiBlbmFibGVkPworUHJvdGVjdGVkIGJ5IGJ0cl9zZWFyY2hfbGF0 Y2guICovCitleHRlcm4gY2hhcglidHJfc2VhcmNoX2VuYWJsZWQ7CisKICNpZmRlZiBVTklWX0JM T0JfREVCVUcKICMgaW5jbHVkZSAiYnVmMHR5cGVzLmgiCiAvKiogQW4gaW5kZXgtPmJsb2JzIGVu dHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVtbiByZWZlcmVuY2VzICovCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaCcKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDp2aW5heS5maXNyZWth ckBvcmFjbGUuY29tLTIwMTExMDEyMDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28yMGQxCkBAIC0yMzksMTMgKzIzOSwxMSBAQCBi dWZfcG9vbF9mcmVlKAogCXVsaW50CW5faW5zdGFuY2VzKTsJLyohPCBpbjogbnVtYmVyZSBvZiBp bnN0YW5jZXMgdG8gZnJlZSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1Ecm9wcyB0aGUgYWRhcHRp dmUgaGFzaCBpbmRleC4gIFRvIHByZXZlbnQgYSBsaXZlbG9jaywgdGhpcyBmdW5jdGlvbgotaXMg b25seSB0byBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBidHJfc2VhcmNoX2xhdGNoIGFuZCB3aGls ZQotYnRyX3NlYXJjaF9lbmFibGVkID09IEZBTFNFLiAqLworQ2xlYXJzIHRoZSBhZGFwdGl2ZSBo YXNoIGluZGV4IG9uIGFsbCBwYWdlcyBpbiB0aGUgYnVmZmVyIHBvb2wuICovCiBVTklWX0lOVEVS Tgogdm9pZAotYnVmX3Bvb2xfZHJvcF9oYXNoX2luZGV4KHZvaWQpOwotLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PSovCitidWZfcG9vbF9jbGVhcl9oYXNoX2luZGV4KHZvaWQpOworLyo9PT09 PT09PT09PT09PT09PT09PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZWxvY2F0ZSBh IGJ1ZmZlciBjb250cm9sIGJsb2NrLiAgUmVsb2NhdGVzIHRoZSBibG9jayBvbiB0aGUgTFJVIGxp c3QKQEAgLTU2OCwxNyArNTY2LDYgQEAgYnVmX3BhZ2VfcGVla19pZl90b29fb2xkKAogLyo9PT09 PT09PT09PT09PT09PT09PT0qLwogCWNvbnN0IGJ1Zl9wYWdlX3QqCWJwYWdlKTsJLyohPCBpbjog YmxvY2sgdG8gbWFrZSB5b3VuZ2VyICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHRoZSBj dXJyZW50IHN0YXRlIG9mIGlzX2hhc2hlZCBvZiBhIHBhZ2UuIEZBTFNFIGlmIHRoZSBwYWdlIGlz Ci1ub3QgaW4gdGhlIHBvb2wuIE5PVEUgdGhhdCB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBmaXgg dGhlIHBhZ2UgaW4gdGhlCi1wb29sIGlmIGl0IGlzIGZvdW5kIHRoZXJlLgotQHJldHVybglUUlVF IGlmIHBhZ2UgaGFzaCBpbmRleCBpcyBidWlsdCBpbiBzZWFyY2ggc3lzdGVtICovCi1VTklWX0lO VEVSTgotaWJvb2wKLWJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNoX2hhc2hlZCgKLS8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KLQl1bGludAlzcGFjZSwJLyohPCBpbjogc3BhY2UgaWQgKi8K LQl1bGludAlvZmZzZXQpOy8qITwgaW46IHBhZ2UgbnVtYmVyICovCi0vKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBHZXRzIHRoZSB5b3VuZ2VzdCBtb2RpZmljYXRpb24gbG9nIHNlcXVlbmNlIG51bWJlciBmb3Ig YSBmcmFtZS4KIFJldHVybnMgemVybyBpZiBub3QgZmlsZSBwYWdlIG9yIG5vIG1vZGlmaWNhdGlv biBvY2N1cnJlZCB5ZXQuCiBAcmV0dXJuCW5ld2VzdCBtb2RpZmljYXRpb24gdG8gcGFnZSAqLwpA QCAtMTYzNCwxMyArMTYyMSwxNiBAQCBzdHJ1Y3QgYnVmX2Jsb2NrX3N0cnVjdHsKIAkvKiBAfSAq LwogCiAJLyoqIEBuYW1lIEhhc2ggc2VhcmNoIGZpZWxkcwotCVRoZXNlIDYgZmllbGRzIG1heSBv bmx5IGJlIG1vZGlmaWVkIHdoZW4gd2UgaGF2ZQorCVRoZXNlIDUgZmllbGRzIG1heSBvbmx5IGJl IG1vZGlmaWVkIHdoZW4gd2UgaGF2ZQogCWFuIHgtbGF0Y2ggb24gYnRyX3NlYXJjaF9sYXRjaCBB TkQKIAktIHdlIGFyZSBob2xkaW5nIGFuIHMtbGF0Y2ggb3IgeC1sYXRjaCBvbiBidWZfYmxvY2tf c3RydWN0Ojpsb2NrIG9yCiAJLSB3ZSBrbm93IHRoYXQgYnVmX2Jsb2NrX3N0cnVjdDo6YnVmX2Zp eF9jb3VudCA9PSAwLgogCiAJQW4gZXhjZXB0aW9uIHRvIHRoaXMgaXMgd2hlbiB3ZSBpbml0IG9y IGNyZWF0ZSBhIHBhZ2UKLQlpbiB0aGUgYnVmZmVyIHBvb2wgaW4gYnVmMGJ1Zi5jLiAqLworCWlu IHRoZSBidWZmZXIgcG9vbCBpbiBidWYwYnVmLmMuCisKKwlBbm90aGVyIGV4Y2VwdGlvbiBpcyB0 aGF0IGFzc2lnbmluZyBibG9jay0+aW5kZXggPSBOVUxMCisJaXMgYWxsb3dlZCB3aGVuZXZlciBo b2xkaW5nIGFuIHgtbGF0Y2ggb24gYnRyX3NlYXJjaF9sYXRjaC4gKi8KIAogCS8qIEB7ICovCiAK QEAgLTE2NDksMjAgKzE2MzksMjAgQEAgc3RydWN0IGJ1Zl9ibG9ja19zdHJ1Y3R7CiAJCQkJCXBv aW50ZXJzIGluIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4CiAJCQkJCXBvaW50aW5nIHRvIHRoaXMg ZnJhbWUgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklWX0RFQlVHICovCi0JdW5z aWduZWQJaXNfaGFzaGVkOjE7CS8qITwgVFJVRSBpZiBoYXNoIGluZGV4IGhhcwotCQkJCQlhbHJl YWR5IGJlZW4gYnVpbHQgb24gdGhpcwotCQkJCQlwYWdlOyBub3RlIHRoYXQgaXQgZG9lcyBub3QK LQkJCQkJZ3VhcmFudGVlIHRoYXQgdGhlIGluZGV4IGlzCi0JCQkJCWNvbXBsZXRlLCB0aG91Z2g6 IHRoZXJlIG1heQotCQkJCQloYXZlIGJlZW4gaGFzaCBjb2xsaXNpb25zLAotCQkJCQlyZWNvcmQg ZGVsZXRpb25zLCBldGMuICovCiAJdW5zaWduZWQJY3Vycl9uX2ZpZWxkczoxMDsvKiE8IHByZWZp eCBsZW5ndGggZm9yIGhhc2ggaW5kZXhpbmc6CiAJCQkJCW51bWJlciBvZiBmdWxsIGZpZWxkcyAq LwogCXVuc2lnbmVkCWN1cnJfbl9ieXRlczoxNTsvKiE8IG51bWJlciBvZiBieXRlcyBpbiBoYXNo CiAJCQkJCWluZGV4aW5nICovCiAJdW5zaWduZWQJY3Vycl9sZWZ0X3NpZGU6MTsvKiE8IFRSVUUg b3IgRkFMU0UgaW4gaGFzaCBpbmRleGluZyAqLwotCWRpY3RfaW5kZXhfdCoJaW5kZXg7CQkvKiE8 IEluZGV4IGZvciB3aGljaCB0aGUgYWRhcHRpdmUKLQkJCQkJaGFzaCBpbmRleCBoYXMgYmVlbiBj cmVhdGVkLiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXg7CQkvKiE8IEluZGV4IGZvciB3aGljaCB0 aGUKKwkJCQkJYWRhcHRpdmUgaGFzaCBpbmRleCBoYXMgYmVlbgorCQkJCQljcmVhdGVkLCBvciBO VUxMIGlmIHRoZSBwYWdlCisJCQkJCWRvZXMgbm90IGV4aXN0IGluIHRoZQorCQkJCQlpbmRleC4g Tm90ZSB0aGF0IGl0IGRvZXMgbm90CisJCQkJCWd1YXJhbnRlZSB0aGF0IHRoZSBpbmRleCBpcwor CQkJCQljb21wbGV0ZSwgdGhvdWdoOiB0aGVyZSBtYXkKKwkJCQkJaGF2ZSBiZWVuIGhhc2ggY29s bGlzaW9ucywKKwkJCQkJcmVjb3JkIGRlbGV0aW9ucywgZXRjLiAqLwogCS8qIEB9ICovCiAjIGlm ZGVmIFVOSVZfU1lOQ19ERUJVRwogCS8qKiBAbmFtZSBEZWJ1ZyBmaWVsZHMgKi8KCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaGEwaGEuaCcKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhhLmgJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNv bS0yMDExMTAxMjA0NTYwNy1sa3JybmQwZGU4ZXltcW9iCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9oYTBoYS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMTM0 NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBS ZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0zMSwxMyArMzEsMTQgQEAgQ3JlYXRlZCA4LzE4LzE5OTQg SGVpa2tpIFR1dXJpCiAjaW5jbHVkZSAiaGFzaDBoYXNoLmgiCiAjaW5jbHVkZSAicGFnZTB0eXBl cy5oIgogI2luY2x1ZGUgImJ1ZjB0eXBlcy5oIgorI2luY2x1ZGUgInJlbTB0eXBlcy5oIgogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIExvb2tzIGZvciBhbiBlbGVtZW50IGluIGEgaGFzaCB0YWJsZS4KIEByZXR1cm4g cG9pbnRlciB0byB0aGUgZGF0YSBvZiB0aGUgZmlyc3QgaGFzaCB0YWJsZSBub2RlIGluIGNoYWlu CiBoYXZpbmcgdGhlIGZvbGQgbnVtYmVyLCBOVUxMIGlmIG5vdCBmb3VuZCAqLwogVU5JVl9JTkxJ TkUKLXZvaWQqCitjb25zdCByZWNfdCoKIGhhX3NlYXJjaF9hbmRfZ2V0X2RhdGEoCiAvKj09PT09 PT09PT09PT09PT09PT0qLwogCWhhc2hfdGFibGVfdCoJdGFibGUsCS8qITwgaW46IGhhc2ggdGFi bGUgKi8KQEAgLTUyLDExICs1MywxMSBAQCBoYV9zZWFyY2hfYW5kX3VwZGF0ZV9pZl9mb3VuZF9m dW5jKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAloYXNoX3RhYmxlX3Qq CXRhYmxlLAkvKiE8IGluL291dDogaGFzaCB0YWJsZSAqLwogCXVsaW50CQlmb2xkLAkvKiE8IGlu OiBmb2xkZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8KLQl2b2lkKgkJZGF0YSwJLyoh PCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190KglkYXRhLAkvKiE8IGlu OiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiAjaWYgZGVmaW5lZCBVTklWX0FISV9ERUJVRyB8fCBk ZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfYmxvY2tfdCoJbmV3X2Jsb2NrLC8qITwgaW46IGJsb2Nr IGNvbnRhaW5pbmcgbmV3X2RhdGEgKi8KICNlbmRpZiAvKiBVTklWX0FISV9ERUJVRyB8fCBVTklW X0RFQlVHICovCi0Jdm9pZCoJCW5ld19kYXRhKTsvKiE8IGluOiBuZXcgcG9pbnRlciB0byB0aGUg ZGF0YSAqLworCWNvbnN0IHJlY190KgluZXdfZGF0YSk7LyohPCBpbjogbmV3IHBvaW50ZXIgdG8g dGhlIGRhdGEgKi8KIAogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklW X0RFQlVHCiAvKiogTG9va3MgZm9yIGFuIGVsZW1lbnQgd2hlbiB3ZSBrbm93IHRoZSBwb2ludGVy IHRvIHRoZSBkYXRhIGFuZApAQCAtMTQzLDcgKzE0NCw3IEBAIGhhX2luc2VydF9mb3JfZm9sZF9m dW5jKAogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJ YnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBidWZmZXIgYmxvY2sgY29udGFpbmluZyB0aGUg ZGF0YSAqLwogI2VuZGlmIC8qIFVOSVZfQUhJX0RFQlVHIHx8IFVOSVZfREVCVUcgKi8KLQl2b2lk KgkJZGF0YSk7CS8qITwgaW46IGRhdGEsIG11c3Qgbm90IGJlIE5VTEwgKi8KKwljb25zdCByZWNf dCoJZGF0YSk7CS8qITwgaW46IGRhdGEsIG11c3Qgbm90IGJlIE5VTEwgKi8KIAogI2lmIGRlZmlu ZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAvKioKQEAgLTE4NSw3ICsx ODYsNyBAQCBoYV9zZWFyY2hfYW5kX2RlbGV0ZV9pZl9mb3VuZCgKIC8qPT09PT09PT09PT09PT09 PT09PT09PT09PT0qLwogCWhhc2hfdGFibGVfdCoJdGFibGUsCS8qITwgaW46IGhhc2ggdGFibGUg Ki8KIAl1bGludAkJZm9sZCwJLyohPCBpbjogZm9sZGVkIHZhbHVlIG9mIHRoZSBzZWFyY2hlZCBk YXRhICovCi0Jdm9pZCoJCWRhdGEpOwkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCisJ Y29uc3QgcmVjX3QqCWRhdGEpOwkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiAjaWZu ZGVmIFVOSVZfSE9UQkFDS1VQCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZW1vdmVzIGZyb20gdGhlIGNoYWlu IGRldGVybWluZWQgYnkgZm9sZCBhbGwgbm9kZXMgd2hvc2UgZGF0YSBwb2ludGVyCkBAIC0yMjgs NyArMjI5LDcgQEAgc3RydWN0IGhhX25vZGVfc3RydWN0IHsKICNpZiBkZWZpbmVkIFVOSVZfQUhJ X0RFQlVHIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCWJ1Zl9ibG9ja190KglibG9jazsJLyohPCBi dWZmZXIgYmxvY2sgY29udGFpbmluZyB0aGUgZGF0YSwgb3IgTlVMTCAqLwogI2VuZGlmIC8qIFVO SVZfQUhJX0RFQlVHIHx8IFVOSVZfREVCVUcgKi8KLQl2b2lkKgkJZGF0YTsJLyohPCBwb2ludGVy IHRvIHRoZSBkYXRhICovCisJY29uc3QgcmVjX3QqCWRhdGE7CS8qITwgcG9pbnRlciB0byB0aGUg ZGF0YSAqLwogCXVsaW50CQlmb2xkOwkvKiE8IGZvbGQgdmFsdWUgZm9yIHRoZSBkYXRhICovCiB9 OwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2hhMGhhLmlj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvaGEwaGEuaWMJcmV2aWQ6dmluYXkuZmlz cmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NTYwNy1sa3JybmQwZGU4ZXltcW9iCisrKyBiL3N0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9oYTBoYS5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28yMGQxCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMjUsNiArMjUsNyBAQCBDcmVh dGVkIDgvMTgvMTk5NCBIZWlra2kgVHV1cmkKIAogI2luY2x1ZGUgInV0MHJuZC5oIgogI2luY2x1 ZGUgIm1lbTBtZW0uaCIKKyNpbmNsdWRlICJidHIwdHlwZXMuaCIKIAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGVsZXRl cyBhIGhhc2ggbm9kZS4gKi8KQEAgLTM5LDEwICs0MCwxMCBAQCBoYV9kZWxldGVfaGFzaF9ub2Rl KAogR2V0cyBhIGhhc2ggbm9kZSBkYXRhLgogQHJldHVybglwb2ludGVyIHRvIHRoZSBkYXRhICov CiBVTklWX0lOTElORQotdm9pZCoKK2NvbnN0IHJlY190KgogaGFfbm9kZV9nZXRfZGF0YSgKIC8q PT09PT09PT09PT09PSovCi0JaGFfbm9kZV90Kglub2RlKQkvKiE8IGluOiBoYXNoIGNoYWluIG5v ZGUgKi8KKwljb25zdCBoYV9ub2RlX3QqCW5vZGUpCS8qITwgaW46IGhhc2ggY2hhaW4gbm9kZSAq LwogewogCXJldHVybihub2RlLT5kYXRhKTsKIH0KQEAgLTU3LDcgKzU4LDcgQEAgaGFfbm9kZV9z ZXRfZGF0YV9mdW5jKAogI2lmIGRlZmluZWQgVU5JVl9BSElfREVCVUcgfHwgZGVmaW5lZCBVTklW X0RFQlVHCiAJYnVmX2Jsb2NrX3QqCWJsb2NrLAkvKiE8IGluOiBidWZmZXIgYmxvY2sgY29udGFp bmluZyB0aGUgZGF0YSAqLwogI2VuZGlmIC8qIFVOSVZfQUhJX0RFQlVHIHx8IFVOSVZfREVCVUcg Ki8KLQl2b2lkKgkJZGF0YSkJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0 IHJlY190KglkYXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiB7CiAjaWYgZGVm aW5lZCBVTklWX0FISV9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlub2RlLT5ibG9jayA9 IGJsb2NrOwpAQCAtMTU3LDM5ICsxNTgsMTAgQEAgaGFzaF9hc3NlcnRfY2FuX3NlYXJjaCgKIAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBMb29rcyBmb3IgYW4gZWxlbWVudCBpbiBhIGhhc2ggdGFibGUuCi1AcmV0dXJu IHBvaW50ZXIgdG8gdGhlIGZpcnN0IGhhc2ggdGFibGUgbm9kZSBpbiBjaGFpbiBoYXZpbmcgdGhl IGZvbGQKLW51bWJlciwgTlVMTCBpZiBub3QgZm91bmQgKi8KLVVOSVZfSU5MSU5FCi1oYV9ub2Rl X3QqCi1oYV9zZWFyY2goCi0vKj09PT09PSovCi0JaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBp bjogaGFzaCB0YWJsZSAqLwotCXVsaW50CQlmb2xkKQkvKiE8IGluOiBmb2xkZWQgdmFsdWUgb2Yg dGhlIHNlYXJjaGVkIGRhdGEgKi8KLXsKLQloYV9ub2RlX3QqCW5vZGU7Ci0KLQloYXNoX2Fzc2Vy dF9jYW5fc2VhcmNoKHRhYmxlLCBmb2xkKTsKLQotCW5vZGUgPSBoYV9jaGFpbl9nZXRfZmlyc3Qo dGFibGUsIGZvbGQpOwotCi0Jd2hpbGUgKG5vZGUpIHsKLQkJaWYgKG5vZGUtPmZvbGQgPT0gZm9s ZCkgewotCi0JCQlyZXR1cm4obm9kZSk7Ci0JCX0KLQotCQlub2RlID0gaGFfY2hhaW5fZ2V0X25l eHQobm9kZSk7Ci0JfQotCi0JcmV0dXJuKE5VTEwpOwotfQotCi0vKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUxvb2tzIGZv ciBhbiBlbGVtZW50IGluIGEgaGFzaCB0YWJsZS4KIEByZXR1cm4gcG9pbnRlciB0byB0aGUgZGF0 YSBvZiB0aGUgZmlyc3QgaGFzaCB0YWJsZSBub2RlIGluIGNoYWluCiBoYXZpbmcgdGhlIGZvbGQg bnVtYmVyLCBOVUxMIGlmIG5vdCBmb3VuZCAqLwogVU5JVl9JTkxJTkUKLXZvaWQqCitjb25zdCBy ZWNfdCoKIGhhX3NlYXJjaF9hbmRfZ2V0X2RhdGEoCiAvKj09PT09PT09PT09PT09PT09PT0qLwog CWhhc2hfdGFibGVfdCoJdGFibGUsCS8qITwgaW46IGhhc2ggdGFibGUgKi8KQEAgLTE5OCw2ICsx NzAsNyBAQCBoYV9zZWFyY2hfYW5kX2dldF9kYXRhKAogCWhhX25vZGVfdCoJbm9kZTsKIAogCWhh c2hfYXNzZXJ0X2Nhbl9zZWFyY2godGFibGUsIGZvbGQpOworCXV0X2FkKGJ0cl9zZWFyY2hfZW5h YmxlZCk7CiAKIAlub2RlID0gaGFfY2hhaW5fZ2V0X2ZpcnN0KHRhYmxlLCBmb2xkKTsKIApAQCAt MjIyLDEyICsxOTUsMTQgQEAgaGFfc2VhcmNoX3dpdGhfZGF0YSgKIC8qPT09PT09PT09PT09PT09 PSovCiAJaGFzaF90YWJsZV90Kgl0YWJsZSwJLyohPCBpbjogaGFzaCB0YWJsZSAqLwogCXVsaW50 CQlmb2xkLAkvKiE8IGluOiBmb2xkZWQgdmFsdWUgb2YgdGhlIHNlYXJjaGVkIGRhdGEgKi8KLQl2 b2lkKgkJZGF0YSkJLyohPCBpbjogcG9pbnRlciB0byB0aGUgZGF0YSAqLworCWNvbnN0IHJlY190 KglkYXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCiB7CiAJaGFfbm9kZV90Kglu b2RlOwogCiAJaGFzaF9hc3NlcnRfY2FuX3NlYXJjaCh0YWJsZSwgZm9sZCk7CiAKKwl1dF9hZChi dHJfc2VhcmNoX2VuYWJsZWQpOworCiAJbm9kZSA9IGhhX2NoYWluX2dldF9maXJzdCh0YWJsZSwg Zm9sZCk7CiAKIAl3aGlsZSAobm9kZSkgewpAQCAtMjUyLDExICsyMjcsMTIgQEAgaGFfc2VhcmNo X2FuZF9kZWxldGVfaWZfZm91bmQoCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAlo YXNoX3RhYmxlX3QqCXRhYmxlLAkvKiE8IGluOiBoYXNoIHRhYmxlICovCiAJdWxpbnQJCWZvbGQs CS8qITwgaW46IGZvbGRlZCB2YWx1ZSBvZiB0aGUgc2VhcmNoZWQgZGF0YSAqLwotCXZvaWQqCQlk YXRhKQkvKiE8IGluOiBwb2ludGVyIHRvIHRoZSBkYXRhICovCisJY29uc3QgcmVjX3QqCWRhdGEp CS8qITwgaW46IHBvaW50ZXIgdG8gdGhlIGRhdGEgKi8KIHsKIAloYV9ub2RlX3QqCW5vZGU7CiAK IAloYXNoX2Fzc2VydF9jYW5fbW9kaWZ5KHRhYmxlLCBmb2xkKTsKKwl1dF9hZChidHJfc2VhcmNo X2VuYWJsZWQpOwogCiAJbm9kZSA9IGhhX3NlYXJjaF93aXRoX2RhdGEodGFibGUsIGZvbGQsIGRh dGEpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzB1 cGQuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdXBkLmljCXJldmlkOnZp bmF5LmZpc3Jla2FyQG9yYWNsZS5jb20tMjAxMTEwMTIwNDU2MDctbGtycm5kMGRlOGV5bXFvYgor KysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28yMGQxCkBAIC0yOCw3ICsy OCw2IEBAIENyZWF0ZWQgMTIvMjcvMTk5NiBIZWlra2kgVHV1cmkKICMgaW5jbHVkZSAidHJ4MHRy eC5oIgogIyBpbmNsdWRlICJ0cngwdW5kby5oIgogIyBpbmNsdWRlICJyb3cwcm93LmgiCi0jIGlu Y2x1ZGUgImJ0cjBzZWEuaCIKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8KICNpbmNsdWRl ICJwYWdlMHppcC5oIgogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3N5bmMwc3luYy5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5j LmgJcmV2aWQ6dmluYXkuZmlzcmVrYXJAb3JhY2xlLmNvbS0yMDExMTAxMjA0NTYwNy1sa3JybmQw ZGU4ZXltcW9iCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTAxMjEzNDYzNC1sYWpzdzZtMXQ0a28yMGQx CkBAIC02Niw3ICs2Niw2IEBAIGluc3RydW1lbnRhdGlvbiBkdWUgdG8gdGhlaXIgbGFyZ2UgbnVt YmUKICNpZmRlZiBVTklWX1BGU19NVVRFWAogLyogS2V5IGRlZmluZXMgdG8gcmVnaXN0ZXIgSW5u b0RCIG11dGV4ZXMgd2l0aCBwZXJmb3JtYW5jZSBzY2hlbWEgKi8KIGV4dGVybiBteXNxbF9wZnNf a2V5X3QJYXV0b2luY19tdXRleF9rZXk7Ci1leHRlcm4gbXlzcWxfcGZzX2tleV90CWJ0cl9zZWFy Y2hfZW5hYmxlZF9tdXRleF9rZXk7CiBleHRlcm4gbXlzcWxfcGZzX2tleV90CWJ1ZmZlcl9ibG9j a19tdXRleF9rZXk7CiBleHRlcm4gbXlzcWxfcGZzX2tleV90CWJ1Zl9wb29sX211dGV4X2tleTsK IGV4dGVybiBteXNxbF9wZnNfa2V5X3QJYnVmX3Bvb2xfemlwX211dGV4X2tleTsKQEAgLTY5Nyw3 ICs2OTYsNiBAQCBvciByb3cgbG9jayEgKi8KICNkZWZpbmUgU1lOQ19MT0dfRkxVU0hfT1JERVIJ MTQ3CiAjZGVmaW5lIFNZTkNfUkVDVgkJMTY4CiAjZGVmaW5lCVNZTkNfV09SS19RVUVVRQkJMTYy Ci0jZGVmaW5lCVNZTkNfU0VBUkNIX1NZU19DT05GCTE2MQkvKiBmb3IgYXNzaWduaW5nIGJ0cl9z ZWFyY2hfZW5hYmxlZCAqLwogI2RlZmluZQlTWU5DX1NFQVJDSF9TWVMJCTE2MAkvKiBOT1RFIHRo YXQgaWYgd2UgaGF2ZSBhIG1lbW9yeQogCQkJCQloZWFwIHRoYXQgY2FuIGJlIGV4dGVuZGVkIHRv IHRoZQogCQkJCQlidWZmZXIgcG9vbCwgaXRzIGxvZ2ljYWwgbGV2ZWwgaXMKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdlLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29t LTIwMTExMDEyMDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9w YWdlL3BhZ2UwcGFnZS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMTM0 NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTIxNSwxMiArMjE1LDYgQEAgcGFnZV9zZXRfbWF4X3Ry eF9pZCgKIHsKIAlwYWdlX3QqCQlwYWdlCQk9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOwog I2lmbmRlZiBVTklWX0hPVEJBQ0tVUAotCWNvbnN0IGlib29sCWlzX2hhc2hlZAk9IGJsb2NrLT5p c19oYXNoZWQ7Ci0KLQlpZiAoaXNfaGFzaGVkKSB7Ci0JCXJ3X2xvY2tfeF9sb2NrKCZidHJfc2Vh cmNoX2xhdGNoKTsKLQl9Ci0KIAl1dF9hZCghbXRyIHx8IG10cl9tZW1vX2NvbnRhaW5zKG10ciwg YmxvY2ssIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAg Ki8KIApAQCAtMjQxLDEyICsyMzUsNiBAQCBwYWdlX3NldF9tYXhfdHJ4X2lkKAogCX0gZWxzZSB7 CiAJCW1hY2hfd3JpdGVfdG9fOChwYWdlICsgKFBBR0VfSEVBREVSICsgUEFHRV9NQVhfVFJYX0lE KSwgdHJ4X2lkKTsKIAl9Ci0KLSNpZm5kZWYgVU5JVl9IT1RCQUNLVVAKLQlpZiAoaXNfaGFzaGVk KSB7Ci0JCXJ3X2xvY2tfeF91bmxvY2soJmJ0cl9zZWFyY2hfbGF0Y2gpOwotCX0KLSNlbmRpZiAv KiAhVU5JVl9IT1RCQUNLVVAgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBzZWwuYwlyZXZpZDp2aW5heS5maXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ1NjA3 LWxrcnJuZDBkZThleW1xb2IKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTExMDEyMTM0NjM0LWxhanN3Nm0xdDRrbzIw ZDEKQEAgLTE0MDAsMTEgKzE0MDAsOSBAQCB0YWJsZV9sb29wOgogCSAgICAmJiAhcGxhbi0+bXVz dF9nZXRfY2x1c3QKIAkgICAgJiYgIXBsYW4tPnRhYmxlLT5iaWdfcm93cykgewogCQlpZiAoIXNl YXJjaF9sYXRjaF9sb2NrZWQpIHsKLQkJCWlmICghYnRyX3NlYXJjaF9mdWxseV9kaXNhYmxlZCkg ewotCQkJCXJ3X2xvY2tfc19sb2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKKwkJCXJ3X2xvY2tfc19s b2NrKCZidHJfc2VhcmNoX2xhdGNoKTsKIAotCQkJCXNlYXJjaF9sYXRjaF9sb2NrZWQgPSBUUlVF OwotCQkJfQorCQkJc2VhcmNoX2xhdGNoX2xvY2tlZCA9IFRSVUU7CiAJCX0gZWxzZSBpZiAocndf bG9ja19nZXRfd3JpdGVyKCZidHJfc2VhcmNoX2xhdGNoKSA9PSBSV19MT0NLX1dBSVRfRVgpIHsK IAogCQkJLyogVGhlcmUgaXMgYW4geC1sYXRjaCByZXF1ZXN0IHdhaXRpbmc6IHJlbGVhc2UgdGhl CkBAIC0zODgwLDggKzM4NzgsNyBAQCByb3dfc2VhcmNoX2Zvcl9teXNxbCgKIAkJCWhhc2ggaW5k ZXggc2VtYXBob3JlISAqLwogCiAjaWZuZGVmIFVOSVZfU0VBUkNIX0RFQlVHCi0JCQlpZiAoIXRy eC0+aGFzX3NlYXJjaF9sYXRjaAotCQkJICAgICYmKCFidHJfc2VhcmNoX2Z1bGx5X2Rpc2FibGVk KSkgeworCQkJaWYgKCF0cngtPmhhc19zZWFyY2hfbGF0Y2gpIHsKIAkJCQlyd19sb2NrX3NfbG9j aygmYnRyX3NlYXJjaF9sYXRjaCk7CiAJCQkJdHJ4LT5oYXNfc2VhcmNoX2xhdGNoID0gVFJVRTsK IAkJCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5j LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHN5bmMuYwlyZXZpZDp2aW5heS5m aXNyZWthckBvcmFjbGUuY29tLTIwMTExMDEyMDQ1NjA3LWxrcnJuZDBkZThleW1xb2IKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3luYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTExMDEyMTM0NjM0LWxhanN3Nm0xdDRrbzIwZDEKQEAgLTEyMTgsNyArMTIxOCw2 IEBAIHN5bmNfdGhyZWFkX2FkZF9sZXZlbCgKIAljYXNlIFNZTkNfRklMRV9GT1JNQVRfVEFHOgog CWNhc2UgU1lOQ19ET1VCTEVXUklURToKIAljYXNlIFNZTkNfU0VBUkNIX1NZUzoKLQljYXNlIFNZ TkNfU0VBUkNIX1NZU19DT05GOgogCWNhc2UgU1lOQ19USFJFQURTOgogCWNhc2UgU1lOQ19MT0NL X1NZUzoKIAljYXNlIFNZTkNfTE9DS19XQUlUX1NZUzoKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2Vs ZXNzIGZvciBwdXNoIGVtYWlscyku