From: marko.makela Date: February 2 2011 2:12pm Subject: bzr push into mysql-5.5-innodb branch (marko.makela:3301 to 3302) List-Archive: http://lists.mysql.com/commits/130238 Message-Id: <201102021423.p12E3vmZ017989@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0594782208==" --===============0594782208== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMzMDIgTWFya28gTcOka2Vsw6QJMjAxMS0wMi0wMiBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMS1pbm5vZGIgdG8gbXlzcWwtNS41LWlubm9kYi4KCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1 ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2ZzcC9mc3AwZnNwLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9idHIwY3VyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAogICAg ICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzBpbnMuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzB1cGQuYwogMzMwMSBWYXNpbCBEaW1vdgkyMDExLTAyLTAxCiAgICAgIFJlcGxheSBh IGxvc3QgY2hhbmdlIChmaXggZm9yIEJ1ZyM1Njk0NyBJbm5vREIgbGVha3MgbWVtb3J5Li4uIGlu IDUuNSkKICAgICAgCiAgICAgIFRoaXMgY2hhbmdlIHdhcyBvcmlnaW5hbGx5IGRvbmUgaW4KICAg ICAgbWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMDEwMTEwODU5NDMtNTBwc2t2c2Jic3VqYnVr ZwogICAgICBidXQgd2FzIGxhdGVyIGxvc3QgZHVyaW5nIHRoZSBtZXJnZSBwcm9jZXNzLgoKICAg IG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwo9PT0gbW9k aWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDEx MDIwMTE2Mjg0MS1qYTNpbjRoZjdvYWtjOWpsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0 cjBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTgwMS16M2Mz d2NzenJoNWw1NjZoCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljCiB1bGludAogYnRyX3JlY19n ZXRfZXh0ZXJuYWxseV9zdG9yZWRfbGVuKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0qLwotCXJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwljb25zdCByZWNfdCoJcmVj LAkvKiE8IGluOiByZWNvcmQgKi8KIAljb25zdCB1bGludCoJb2Zmc2V0cyk7LyohPCBpbjogYXJy YXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkgKi8KICNlbmRpZiAvKiAhVU5JVl9IT1RC QUNLVVAgKi8KIApAQCAtMzc2MiwzNCArMzc2Miw2MiBAQCBidHJfZXN0aW1hdGVfbnVtYmVyX29m X2RpZmZlcmVudF9rZXlfdmFsCiAvKj09PT09PT09PT09PT09PT09PSBFWFRFUk5BTCBTVE9SQUdF IE9GIEJJRyBGSUVMRFMgPT09PT09PT09PT09PT09PT09PSovCiAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0dldHMgdGhl IG9mZnNldCBvZiB0aGUgcG9pbnRlciB0byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCBvZiBh IGZpZWxkLgorQHJldHVybglvZmZzZXQgb2YgdGhlIHBvaW50ZXIgdG8gdGhlIGV4dGVybmFsbHkg c3RvcmVkIHBhcnQgKi8KK3N0YXRpYwordWxpbnQKK2J0cl9yZWNfZ2V0X2ZpZWxkX3JlZl9vZmZz KAorLyo9PT09PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgdWxpbnQqCW9mZnNldHMsLyoh PCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVjX2dldF9vZmZzZXRzKCkgKi8KKwl1bGludAkJbikJ LyohPCBpbjogaW5kZXggb2YgdGhlIGV4dGVybmFsIGZpZWxkICovCit7CisJdWxpbnQJZmllbGRf cmVmX29mZnM7CisJdWxpbnQJbG9jYWxfbGVuOworCisJdXRfYShyZWNfb2Zmc19udGhfZXh0ZXJu KG9mZnNldHMsIG4pKTsKKwlmaWVsZF9yZWZfb2ZmcyA9IHJlY19nZXRfbnRoX2ZpZWxkX29mZnMo b2Zmc2V0cywgbiwgJmxvY2FsX2xlbik7CisJdXRfYShsb2NhbF9sZW4gIT0gVU5JVl9TUUxfTlVM TCk7CisJdXRfYShsb2NhbF9sZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisKKwly ZXR1cm4oZmllbGRfcmVmX29mZnMgKyBsb2NhbF9sZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9T SVpFKTsKK30KKworLyoqIEdldHMgYSBwb2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBw YXJ0IG9mIGEgZmllbGQuCitAcGFyYW0gcmVjCXJlY29yZAorQHBhcmFtIG9mZnNldHMJcmVjX2dl dF9vZmZzZXRzKHJlYykKK0BwYXJhbSBuCWluZGV4IG9mIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBm aWVsZAorQHJldHVybiBwb2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBwYXJ0ICovCisj ZGVmaW5lIGJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZihyZWMsIG9mZnNldHMsIG4pCQkJXAorCSgocmVj KSArIGJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZl9vZmZzKG9mZnNldHMsIG4pKQorCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBH ZXRzIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBzaXplIG9mIGEgcmVjb3JkLCBpbiB1bml0cyBvZiBh IGRhdGFiYXNlIHBhZ2UuCiBAcmV0dXJuCWV4dGVybmFsbHkgc3RvcmVkIHBhcnQsIGluIHVuaXRz IG9mIGEgZGF0YWJhc2UgcGFnZSAqLwogc3RhdGljCiB1bGludAogYnRyX3JlY19nZXRfZXh0ZXJu YWxseV9zdG9yZWRfbGVuKAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCXJl Y190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQgKi8KKwljb25zdCByZWNfdCoJcmVjLAkvKiE8IGlu OiByZWNvcmQgKi8KIAljb25zdCB1bGludCoJb2Zmc2V0cykvKiE8IGluOiBhcnJheSByZXR1cm5l ZCBieSByZWNfZ2V0X29mZnNldHMoKSAqLwogewogCXVsaW50CW5fZmllbGRzOwotCWJ5dGUqCWRh dGE7Ci0JdWxpbnQJbG9jYWxfbGVuOwotCXVsaW50CWV4dGVybl9sZW47CiAJdWxpbnQJdG90YWxf ZXh0ZXJuX2xlbiA9IDA7CiAJdWxpbnQJaTsKIAogCXV0X2FkKCFyZWNfb2Zmc19jb21wKG9mZnNl dHMpIHx8ICFyZWNfZ2V0X25vZGVfcHRyX2ZsYWcocmVjKSk7CisKKwlpZiAoIXJlY19vZmZzX2Fu eV9leHRlcm4ob2Zmc2V0cykpIHsKKwkJcmV0dXJuKDApOworCX0KKwogCW5fZmllbGRzID0gcmVj X29mZnNfbl9maWVsZHMob2Zmc2V0cyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVsZHM7IGkr KykgewogCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgewogCi0JCQlkYXRh ID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbG9jYWxfbGVuKTsKLQotCQkJ bG9jYWxfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7Ci0KLQkJCWV4dGVybl9sZW4g PSBtYWNoX3JlYWRfZnJvbV80KGRhdGEgKyBsb2NhbF9sZW4KLQkJCQkJCSAgICAgICsgQlRSX0VY VEVSTl9MRU4gKyA0KTsKKwkJCXVsaW50CWV4dGVybl9sZW4gPSBtYWNoX3JlYWRfZnJvbV80KAor CQkJCWJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZihyZWMsIG9mZnNldHMsIGkpCisJCQkJKyBCVFJfRVhU RVJOX0xFTiArIDQpOwogCiAJCQl0b3RhbF9leHRlcm5fbGVuICs9IHV0X2NhbGNfYWxpZ24oZXh0 ZXJuX2xlbiwKIAkJCQkJCQkgIFVOSVZfUEFHRV9TSVpFKTsKQEAgLTM4MTksNyArMzg0Nyw3IEBA IGJ0cl9jdXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmllbGQoCiAJdWxpbnQJYnl0ZV92YWw7 CiAKIAlkYXRhID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbG9jYWxfbGVu KTsKLQorCXV0X2FkKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpOwogCXV0X2EobG9j YWxfbGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwogCiAJbG9jYWxfbGVuIC09IEJU Ul9FWFRFUk5fRklFTERfUkVGX1NJWkU7CkBAIC0zODI5LDYgKzM4NTcsOSBAQCBidHJfY3VyX3Nl dF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAogCWlmICh2YWwpIHsKIAkJYnl0ZV92YWwgPSBi eXRlX3ZhbCAmICh+QlRSX0VYVEVSTl9PV05FUl9GTEFHKTsKIAl9IGVsc2UgeworI2lmIGRlZmlu ZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCQl1dF9hKCEo Ynl0ZV92YWwgJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCQlieXRlX3ZhbCA9IGJ5dGVfdmFsIHwgQlRS X0VYVEVSTl9PV05FUl9GTEFHOwogCX0KIApAQCAtNDA2Nyw4ICs0MDk4LDggQEAgZmlsZSBzZWdt ZW50IG9mIHRoZSBpbmRleCB0cmVlLgogQHJldHVybglEQl9TVUNDRVNTIG9yIERCX09VVF9PRl9G SUxFX1NQQUNFICovCiBVTklWX0lOVEVSTgogdWxpbnQKLWJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVy bl9maWVsZHMoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworYnRyX3N0b3JlX2Jp Z19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0qLwogCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiByZWM7IHRo ZSBpbmRleCB0cmVlCiAJCQkJCU1VU1QgYmUgWC1sYXRjaGVkICovCiAJYnVmX2Jsb2NrX3QqCXJl Y19ibG9jaywJLyohPCBpbi9vdXQ6IGJsb2NrIGNvbnRhaW5pbmcgcmVjICovCkBAIC00MDc3LDEx ICs0MTA4LDE3IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQkJCXRoZSAi ZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNw b25kIHRvIHJlYyB3aGVuCiAJCQkJCXRoaXMgZnVuY3Rpb24gcmV0dXJucyAqLwotCWJpZ19yZWNf dCoJYmlnX3JlY192ZWMsCS8qITwgaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcworI2lmZGVm IFVOSVZfREVCVUcKKwltdHJfdCoJCWxvY2FsX210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcg dGhlCisJCQkJCWxhdGNoIHRvIHJlYyBhbmQgdG8gdGhlIHRyZWUgKi8KKyNlbmRpZiAvKiBVTklW X0RFQlVHICovCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJ R0hUX0RFQlVHCisJaWJvb2wJCXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJl Y29yZCBpcyB1cGRhdGVkCisJCQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkgKi8KKyNl bmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLworCWNvbnN0IGJp Z19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCiAJ CQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCi0JbXRyX3QqCQlsb2NhbF9tdHIgX19hdHRy aWJ1dGVfXygodW51c2VkKSkpIC8qITwgaW46IG10cgotCQkJCQljb250YWluaW5nIHRoZSBsYXRj aCB0byByZWMgYW5kIHRvIHRoZQotCQkJCQl0cmVlICovCisKIHsKIAl1bGludAlyZWNfcGFnZV9u bzsKIAlieXRlKglmaWVsZF9yZWY7CkBAIC00MDk5LDYgKzQxMzYsNyBAQCBidHJfc3RvcmVfYmln X3JlY19leHRlcm5fZmllbGRzKAogCXpfc3RyZWFtIGNfc3RyZWFtOwogCiAJdXRfYWQocmVjX29m ZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOworCXV0X2FkKHJlY19vZmZzX2FueV9l eHRlcm4ob2Zmc2V0cykpOwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKGxvY2FsX210ciwgZGlj dF9pbmRleF9nZXRfbG9jayhpbmRleCksCiAJCQkJTVRSX01FTU9fWF9MT0NLKSk7CiAJdXRfYWQo bXRyX21lbW9fY29udGFpbnMobG9jYWxfbXRyLCByZWNfYmxvY2ssIE1UUl9NRU1PX1BBR0VfWF9G SVgpKTsKQEAgLTQxMzAsMjEgKzQxNjgsMzcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2Zp ZWxkcygKIAkJdXRfYShlcnIgPT0gWl9PSyk7CiAJfQogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVH IHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisJLyogQWxsIHBvaW50ZXJzIHRvIGV4 dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgaW4gdGhlIHJlY29yZAorCW11c3QgZWl0aGVyIGJlIHpl cm8gb3IgdGhleSBtdXN0IGJlIHBvaW50ZXJzIHRvIGluaGVyaXRlZAorCWNvbHVtbnMsIG93bmVk IGJ5IHRoaXMgcmVjb3JkIG9yIGFuIGVhcmxpZXIgcmVjb3JkIHZlcnNpb24uICovCisJZm9yIChp ID0gMDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpOyBpKyspIHsKKwkJaWYgKCFyZWNf b2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKSB7CisJCQljb250aW51ZTsKKwkJfQorCQlmaWVs ZF9yZWYgPSBidHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZzZXRzLCBpKTsKKworCQl1dF9h KCEoZmllbGRfcmVmW0JUUl9FWFRFUk5fTEVOXSAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRykpOwor CQkvKiBFaXRoZXIgdGhpcyBtdXN0IGJlIGFuIHVwZGF0ZSBpbiBwbGFjZSwKKwkJb3IgdGhlIEJM T0IgbXVzdCBiZSBpbmhlcml0ZWQsIG9yIHRoZSBCTE9CIHBvaW50ZXIKKwkJbXVzdCBiZSB6ZXJv ICh3aWxsIGJlIHdyaXR0ZW4gaW4gdGhpcyBmdW5jdGlvbikuICovCisJCXV0X2EodXBkYXRlX2lu X3BsYWNlCisJCSAgICAgfHwgKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJO X0lOSEVSSVRFRF9GTEFHKQorCQkgICAgIHx8ICFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZf emVybywKKwkJCQlCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJfQorI2VuZGlmIC8qIFVO SVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAJLyogV2UgaGF2ZSB0byBjcmVh dGUgYSBmaWxlIHNlZ21lbnQgdG8gdGhlIHRhYmxlc3BhY2UKIAlmb3IgZWFjaCBmaWVsZCBhbmQg cHV0IHRoZSBwb2ludGVyIHRvIHRoZSBmaWVsZCBpbiByZWMgKi8KIAogCWZvciAoaSA9IDA7IGkg PCBiaWdfcmVjX3ZlYy0+bl9maWVsZHM7IGkrKykgewotCQl1dF9hZChyZWNfb2Zmc19udGhfZXh0 ZXJuKG9mZnNldHMsCi0JCQkJCSAgYmlnX3JlY192ZWMtPmZpZWxkc1tpXS5maWVsZF9ubykpOwot CQl7Ci0JCQl1bGludAlsb2NhbF9sZW47Ci0JCQlmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9maWVs ZCgKLQkJCQlyZWMsIG9mZnNldHMsIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8sCi0J CQkJJmxvY2FsX2xlbik7Ci0JCQl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JF Rl9TSVpFKTsKLQkJCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOwotCQkJ ZmllbGRfcmVmICs9IGxvY2FsX2xlbjsKLQkJfQorCQlmaWVsZF9yZWYgPSBidHJfcmVjX2dldF9m aWVsZF9yZWYoCisJCQlyZWMsIG9mZnNldHMsIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRf bm8pOworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9E RUJVRworCQkvKiBBIHplcm8gQkxPQiBwb2ludGVyIHNob3VsZCBoYXZlIGJlZW4gaW5pdGlhbGx5 IGluc2VydGVkLiAqLworCQl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZfemVybywK KwkJCSAgICAgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworI2VuZGlmIC8qIFVOSVZfREVC VUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAJCWV4dGVybl9sZW4gPSBiaWdfcmVjX3Zl Yy0+ZmllbGRzW2ldLmxlbjsKIAkJVU5JVl9NRU1fQVNTRVJUX1JXKGJpZ19yZWNfdmVjLT5maWVs ZHNbaV0uZGF0YSwKIAkJCQkgICBleHRlcm5fbGVuKTsKQEAgLTQ0MjYsNiArNDQ4MCwyMyBAQCBu ZXh0X3ppcF9wYWdlOgogCQltZW1faGVhcF9mcmVlKGhlYXApOwogCX0KIAorI2lmIGRlZmluZWQg VU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCS8qIEFsbCBwb2lu dGVycyB0byBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zIGluIHRoZSByZWNvcmQKKwltdXN0IGJl IHZhbGlkLiAqLworCWZvciAoaSA9IDA7IGkgPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsg aSsrKSB7CisJCWlmICghcmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJY29u dGludWU7CisJCX0KKworCQlmaWVsZF9yZWYgPSBidHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBv ZmZzZXRzLCBpKTsKKworCQkvKiBUaGUgcG9pbnRlciBtdXN0IG5vdCBiZSB6ZXJvLiAqLworCQl1 dF9hKDAgIT0gbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJIEJUUl9FWFRF Uk5fRklFTERfUkVGX1NJWkUpKTsKKwkJLyogVGhlIGNvbHVtbiBtdXN0IG5vdCBiZSBkaXNvd25l ZCBieSB0aGlzIHJlY29yZC4gKi8KKwkJdXRfYSghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0g JiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBV TklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAlyZXR1cm4oREJfU1VDQ0VTUyk7CiB9CiAKQEAgLTQ0 NDgsNiArNDUxOSw3IEBAIGJ0cl9jaGVja19ibG9iX2ZpbF9wYWdlX3R5cGUoCiAJaWYgKFVOSVZf VU5MSUtFTFkodHlwZSAhPSBGSUxfUEFHRV9UWVBFX0JMT0IpKSB7CiAJCXVsaW50CWZsYWdzID0g ZmlsX3NwYWNlX2dldF9mbGFncyhzcGFjZV9pZCk7CiAKKyNpZm5kZWYgVU5JVl9ERUJVRyAvKiBJ bXByb3ZlIGRlYnVnIHRlc3QgY292ZXJhZ2UgKi8KIAkJaWYgKFVOSVZfTElLRUxZCiAJCSAgICAo KGZsYWdzICYgRElDVF9URl9GT1JNQVRfTUFTSykgPT0gRElDVF9URl9GT1JNQVRfNTEpKSB7CiAJ CQkvKiBPbGQgdmVyc2lvbnMgb2YgSW5ub0RCIGRpZCBub3QgaW5pdGlhbGl6ZQpAQCAtNDQ1Niw2 ICs0NTI4LDcgQEAgYnRyX2NoZWNrX2Jsb2JfZmlsX3BhZ2VfdHlwZSgKIAkJCWEgQkxPQiBwYWdl IHRoYXQgaXMgaW4gQW50ZWxvcGUgZm9ybWF0LiovCiAJCQlyZXR1cm47CiAJCX0KKyNlbmRpZiAv KiAhVU5JVl9ERUJVRyAqLwogCiAJCXV0X3ByaW50X3RpbWVzdGFtcChzdGRlcnIpOwogCQlmcHJp bnRmKHN0ZGVyciwKQEAgLTQ1MDUsMjMgKzQ1NzgsMTMgQEAgYnRyX2ZyZWVfZXh0ZXJuYWxseV9z dG9yZWRfZmllbGQoCiAJdWxpbnQJCXBhZ2Vfbm87CiAJdWxpbnQJCW5leHRfcGFnZV9ubzsKIAlt dHJfdAkJbXRyOwotI2lmZGVmIFVOSVZfREVCVUcKKwogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5z KGxvY2FsX210ciwgZGljdF9pbmRleF9nZXRfbG9jayhpbmRleCksCiAJCQkJTVRSX01FTU9fWF9M T0NLKSk7CiAJdXRfYWQobXRyX21lbW9fY29udGFpbnNfcGFnZShsb2NhbF9tdHIsIGZpZWxkX3Jl ZiwKIAkJCQkgICAgIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKIAl1dF9hZCghcmVjIHx8IHJlY19v ZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKLQotCWlmIChyZWMpIHsKLQkJdWxp bnQJbG9jYWxfbGVuOwotCQljb25zdCBieXRlKglmID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBv ZmZzZXRzLAotCQkJCQkJICAgICAgaSwgJmxvY2FsX2xlbik7Ci0JCXV0X2EobG9jYWxfbGVuID49 IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwotCQlsb2NhbF9sZW4gLT0gQlRSX0VYVEVSTl9G SUVMRF9SRUZfU0laRTsKLQkJZiArPSBsb2NhbF9sZW47Ci0JCXV0X2FkKGYgPT0gZmllbGRfcmVm KTsKLQl9Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLworCXV0X2FkKCFyZWMgfHwgZmllbGRfcmVm ID09IGJ0cl9yZWNfZ2V0X2ZpZWxkX3JlZihyZWMsIG9mZnNldHMsIGkpKTsKIAogCWlmIChVTklW X1VOTElLRUxZKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9yZWZfemVybywKIAkJCQkgIEJUUl9F WFRFUk5fRklFTERfUkVGX1NJWkUpKSkgewpAQCAtNDY4NCwxMyArNDc0Nyw4IEBAIGJ0cl9yZWNf ZnJlZV9leHRlcm5hbGx5X3N0b3JlZF9maWVsZHMoCiAKIAlmb3IgKGkgPSAwOyBpIDwgbl9maWVs ZHM7IGkrKykgewogCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgewotCQkJ dWxpbnQJbGVuOwotCQkJYnl0ZSoJZGF0YQotCQkJCT0gcmVjX2dldF9udGhfZmllbGQocmVjLCBv ZmZzZXRzLCBpLCAmbGVuKTsKLQkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJ WkUpOwotCiAJCQlidHJfZnJlZV9leHRlcm5hbGx5X3N0b3JlZF9maWVsZCgKLQkJCQlpbmRleCwg ZGF0YSArIGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUsCisJCQkJaW5kZXgsIGJ0cl9y ZWNfZ2V0X2ZpZWxkX3JlZihyZWMsIG9mZnNldHMsIGkpLAogCQkJCXJlYywgb2Zmc2V0cywgcGFn ZV96aXAsIGksIHJiX2N0eCwgbXRyKTsKIAkJfQogCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9y YWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1 ZjBidWYuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjAxMTYyODQxLWphM2lu NGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjAyMTM1ODAxLXozYzN3Y3N6cmg1bDU2NmgKQEAg LTg2NSw5ICs4NjUsOSBAQCBidWZfYmxvY2tfaW5pdCgKIAogCWJsb2NrLT5tb2RpZnlfY2xvY2sg PSAwOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklW X0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYmxvY2stPnBhZ2Uu ZmlsZV9wYWdlX3dhc19mcmVlZCA9IEZBTFNFOwotI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9B Q0NFU1NFUyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RF QlVHICovCiAKIAlibG9jay0+Y2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCA9IEZBTFNFOwogCWJs b2NrLT5pbmRleCA9IE5VTEw7CkBAIC0yMjI5LDcgKzIyMjksNyBAQCBidWZfcGFnZV9wZWVrX2lm X3NlYXJjaF9oYXNoZWQoCiAJcmV0dXJuKGlzX2hhc2hlZCk7CiB9CiAKLSNpZmRlZiBVTklWX0RF QlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8 fCBkZWZpbmVkIFVOSVZfREVCVUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFNldHMgZmlsZV9wYWdlX3dh c19mcmVlZCBUUlVFIGlmIHRoZSBwYWdlIGlzIGZvdW5kIGluIHRoZSBidWZmZXIgcG9vbC4KIFRo aXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHdlIGZyZWUgYSBmaWxlIHBhZ2UgYW5k IHdhbnQgdGhlCkBAIC0yMjUyLDYgKzIyNTIsOCBAQCBidWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dh c19mcmVlZCgKIAogCWlmIChicGFnZSkgewogCQl1dF9hZCghYnVmX3Bvb2xfd2F0Y2hfaXNfc2Vu dGluZWwoYnVmX3Bvb2wsIGJwYWdlKSk7CisJCS8qIGJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVk IGNhbiBhbHJlYWR5IGhvbGQKKwkJd2hlbiB0aGlzIGNvZGUgaXMgaW52b2tlZCBmcm9tIGRpY3Rf ZHJvcF9pbmRleF90cmVlKCkgKi8KIAkJYnBhZ2UtPmZpbGVfcGFnZV93YXNfZnJlZWQgPSBUUlVF OwogCX0KIApAQCAtMjI4OSw3ICsyMjkxLDcgQEAgYnVmX3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dh c19mcmVlZCgKIAogCXJldHVybihicGFnZSk7CiB9Ci0jZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZf REVCVUcgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0IHJlYWQgYWNjZXNzIHRvIGEgY29tcHJl c3NlZCBwYWdlICh1c3VhbGx5IG9mIHR5cGUKQEAgLTIzOTAsNyArMjM5Miw3IEBAIGdvdF9ibG9j azoKIAogCWJ1Zl9wYWdlX3NldF9hY2Nlc3NlZF9tYWtlX3lvdW5nKGJwYWdlLCBhY2Nlc3NfdGlt ZSk7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZf REVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAl1dF9hKCFicGFnZS0+ ZmlsZV9wYWdlX3dhc19mcmVlZCk7CiAjZW5kaWYKIApAQCAtMzA1OCw3ICszMDYwLDcgQEAgd2Fp dF91bnRpbF91bmZpeGVkOgogCiAJYnVmX3BhZ2Vfc2V0X2FjY2Vzc2VkX21ha2VfeW91bmcoJmJs b2NrLT5wYWdlLCBhY2Nlc3NfdGltZSk7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNT RVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZf REVCVUcKIAl1dF9hKCFibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkKTsKICNlbmRpZgog CkBAIC0zMjE3LDcgKzMyMTksNyBAQCBidWZfcGFnZV9vcHRpbWlzdGljX2dldCgKIAl1dF9hKGJ1 Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spID09IEJVRl9CTE9DS19GSUxFX1BBR0UpOwogI2VuZGlm IC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KIAotI2lmZGVmIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRl ZmluZWQgVU5JVl9ERUJVRwogCXV0X2EoYmxvY2stPnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCA9 PSBGQUxTRSk7CiAjZW5kaWYKIAlpZiAoVU5JVl9VTkxJS0VMWSghYWNjZXNzX3RpbWUpKSB7CkBA IC0zMzI5LDcgKzMzMzEsNyBAQCBidWZfcGFnZV9nZXRfa25vd25fbm93YWl0KAogCXV0X2EoYmxv Y2stPnBhZ2UuYnVmX2ZpeF9jb3VudCA+IDApOwogCXV0X2EoYnVmX2Jsb2NrX2dldF9zdGF0ZShi bG9jaykgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSk7CiAjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBV TklWX0JVRl9ERUJVRyAqLwotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRl ZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0 X2EoYmxvY2stPnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCA9PSBGQUxTRSk7CiAjZW5kaWYKIApA QCAtMzQxNSw5ICszNDE3LDkgQEAgYnVmX3BhZ2VfdHJ5X2dldF9mdW5jKAogCXV0X2EoYmxvY2st PnBhZ2UuYnVmX2ZpeF9jb3VudCA+IDApOwogCXV0X2EoYnVmX2Jsb2NrX2dldF9zdGF0ZShibG9j aykgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSk7CiAjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklW X0JVRl9ERUJVRyAqLwotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmlu ZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0X2Eo YmxvY2stPnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCA9PSBGQUxTRSk7Ci0jZW5kaWYgLyogVU5J Vl9ERUJVR19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTIHx8IFVOSVZfREVCVUcgKi8KIAlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lO Q19OT19PUkRFUl9DSEVDSyk7CiAKIAlidWZfcG9vbC0+c3RhdC5uX3BhZ2VfZ2V0cysrOwpAQCAt MzQ0Niw5ICszNDQ4LDkgQEAgYnVmX3BhZ2VfaW5pdF9sb3coCiAJYnBhZ2UtPm5ld2VzdF9tb2Rp ZmljYXRpb24gPSAwOwogCWJwYWdlLT5vbGRlc3RfbW9kaWZpY2F0aW9uID0gMDsKIAlIQVNIX0lO VkFMSURBVEUoYnBhZ2UsIGhhc2gpOwotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUwor I2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJV RwogCWJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVkID0gRkFMU0U7Ci0jZW5kaWYgLyogVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VT IHx8IFVOSVZfREVCVUcgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMzgwNyw5ICszODA5 LDkgQEAgYnVmX3BhZ2VfY3JlYXRlKAogI2lmZGVmIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwogCQl1 dF9hKGlidWZfY291bnRfZ2V0KHNwYWNlLCBvZmZzZXQpID09IDApOwogI2VuZGlmCi0jaWZkZWYg VU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUND RVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJCWJsb2NrLT5wYWdlLmZpbGVfcGFnZV93YXNf ZnJlZWQgPSBGQUxTRTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNl bmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCiAJCS8q IFBhZ2UgY2FuIGJlIGZvdW5kIGluIGJ1Zl9wb29sICovCiAJCWJ1Zl9wb29sX211dGV4X2V4aXQo YnVmX3Bvb2wpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZnNwL2ZzcDBm c3AuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9mc3AvZnNwMGZzcC5jCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40aGY3b2FrYzlqbAorKysgYi9zdG9y YWdlL2lubm9iYXNlL2ZzcC9mc3AwZnNwLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAtMzQzNSw5ICszNDM1LDkgQEAgZnNl Z19mcmVlX3BhZ2UoCiAKIAlmc2VnX2ZyZWVfcGFnZV9sb3coc2VnX2lub2RlLCBzcGFjZSwgemlw X3NpemUsIHBhZ2UsIG10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNp ZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcK IAlidWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dhc19mcmVlZChzcGFjZSwgcGFnZSk7Ci0jZW5kaWYK KyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogfQog CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKQEAgLTM1MDMsMTMgKzM1MDMsMTMgQEAgZnNlZ19mcmVlX2V4 dGVudCgKIAogCWZzcF9mcmVlX2V4dGVudChzcGFjZSwgemlwX3NpemUsIHBhZ2UsIG10cik7CiAK LSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlmb3IgKGkgPSAwOyBpIDwgRlNQ X0VYVEVOVF9TSVpFOyBpKyspIHsKIAogCQlidWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dhc19mcmVl ZChzcGFjZSwKIAkJCQkJCSBmaXJzdF9wYWdlX2luX2V4dGVudCArIGkpOwogCX0KLSNlbmRpZgor I2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiB9CiAK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv aWJ1Zi9pYnVmMGlidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5j CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40aGY3b2Fr YzlqbAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAtMjI3 Niw5ICsyMjc2LDkgQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJZnNlZ19mcmVlX3Bh Z2UoaGVhZGVyX3BhZ2UgKyBJQlVGX0hFQURFUiArIElCVUZfVFJFRV9TRUdfSEVBREVSLAogCQkg ICAgICAgSUJVRl9TUEFDRV9JRCwgcGFnZV9ubywgJm10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVH X0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBk ZWZpbmVkIFVOSVZfREVCVUcKIAlidWZfcGFnZV9yZXNldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKElC VUZfU1BBQ0VfSUQsIHBhZ2Vfbm8pOwotI2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIAogCWlidWZfZW50ZXIoKTsKIApAQCAtMjMyMiw5 ICsyMzIyLDkgQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJaWJ1Zl9iaXRtYXBfcGFn ZV9zZXRfYml0cygKIAkJYml0bWFwX3BhZ2UsIHBhZ2Vfbm8sIHppcF9zaXplLCBJQlVGX0JJVE1B UF9JQlVGLCBGQUxTRSwgJm10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMK KyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVC VUcKIAlidWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdl X25vKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklW X0RFQlVHICovCiAJbXRyX2NvbW1pdCgmbXRyKTsKIAogCWlidWZfZXhpdCgpOwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDIwMTE2Mjg0MS1qYTNpbjRoZjdvYWtjOWpsCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIx MzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAtNTAwLDggKzUwMCw4IEBAIGZpbGUgc2VnbWVudCBv ZiB0aGUgaW5kZXggdHJlZS4KIEByZXR1cm4JREJfU1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9T UEFDRSAqLwogVU5JVl9JTlRFUk4KIHVsaW50Ci1idHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmll bGRzKAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK2J0cl9zdG9yZV9iaWdfcmVj X2V4dGVybl9maWVsZHNfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBpbjogaW5kZXggb2YgcmVjOyB0aGUgaW5k ZXggdHJlZQogCQkJCQlNVVNUIGJlIFgtbGF0Y2hlZCAqLwogCWJ1Zl9ibG9ja190KglyZWNfYmxv Y2ssCS8qITwgaW4vb3V0OiBibG9jayBjb250YWluaW5nIHJlYyAqLwpAQCAtNTEwLDEwICs1MTAs NDIgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygKIAkJCQkJdGhlICJleHRlcm5h bCBzdG9yYWdlIiBmbGFncyBpbiBvZmZzZXRzCiAJCQkJCXdpbGwgbm90IGNvcnJlc3BvbmQgdG8g cmVjIHdoZW4KIAkJCQkJdGhpcyBmdW5jdGlvbiByZXR1cm5zICovCi0JYmlnX3JlY190KgliaWdf cmVjX3ZlYywJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCisjaWZkZWYgVU5JVl9E RUJVRworCW10cl90KgkJbG9jYWxfbXRyLAkvKiE8IGluOiBtdHIgY29udGFpbmluZyB0aGUKKwkJ CQkJbGF0Y2ggdG8gcmVjIGFuZCB0byB0aGUgdHJlZSAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcg Ki8KKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVC VUcKKwlpYm9vbAkJdXBkYXRlX2luX3BsYWNlLC8qISBpbjogVFJVRSBpZiB0aGUgcmVjb3JkIGlz IHVwZGF0ZWQKKwkJCQkJaW4gcGxhY2UgKG5vdCBkZWxldGUraW5zZXJ0KSAqLworI2VuZGlmIC8q IFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCisJY29uc3QgYmlnX3JlY190 KmJpZ19yZWNfdmVjKQkvKiE8IGluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMKIAkJCQkJdG8g YmUgc3RvcmVkIGV4dGVybmFsbHkgKi8KLQltdHJfdCoJCWxvY2FsX210cik7CS8qITwgaW46IG10 ciBjb250YWluaW5nIHRoZSBsYXRjaCB0bwotCQkJCQlyZWMgYW5kIHRvIHRoZSB0cmVlICovCisJ X19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworCisvKiogU3RvcmVzIHRoZSBmaWVsZHMgaW4gYmln X3JlY192ZWMgdG8gdGhlIHRhYmxlc3BhY2UgYW5kIHB1dHMgcG9pbnRlcnMgdG8KK3RoZW0gaW4g cmVjLiAgVGhlIGV4dGVybiBmbGFncyBpbiByZWMgd2lsbCBoYXZlIHRvIGJlIHNldCBiZWZvcmVo YW5kLgorVGhlIGZpZWxkcyBhcmUgc3RvcmVkIG9uIHBhZ2VzIGFsbG9jYXRlZCBmcm9tIGxlYWYg bm9kZQorZmlsZSBzZWdtZW50IG9mIHRoZSBpbmRleCB0cmVlLgorQHBhcmFtIGluZGV4CWluOiBj bHVzdGVyZWQgaW5kZXg7IE1VU1QgYmUgWC1sYXRjaGVkIGJ5IG10cgorQHBhcmFtIGIJaW4vb3V0 OiBibG9jayBjb250YWluaW5nIHJlYzsgTVVTVCBiZSBYLWxhdGNoZWQgYnkgbXRyCitAcGFyYW0g cmVjCWluL291dDogY2x1c3RlcmVkIGluZGV4IHJlY29yZAorQHBhcmFtIG9mZnNldHMJaW46IHJl Y19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4KTsKKwkJdGhlICJleHRlcm5hbCBzdG9yYWdlIiBmbGFn cyBpbiBvZmZzZXRzIHdpbGwgbm90IGJlIGFkanVzdGVkCitAcGFyYW0gbXRyCWluOiBtaW5pLXRy YW5zYWN0aW9uIHRoYXQgaG9sZHMgeC1sYXRjaCBvbiBpbmRleCBhbmQgYgorQHBhcmFtIHVwZAlp bjogVFJVRSBpZiB0aGUgcmVjb3JkIGlzIHVwZGF0ZWQgaW4gcGxhY2UgKG5vdCBkZWxldGUraW5z ZXJ0KQorQHBhcmFtIGJpZwlpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzIHRvIGJlIHN0b3Jl ZCBleHRlcm5hbGx5CitAcmV0dXJuCURCX1NVQ0NFU1Mgb3IgREJfT1VUX09GX0ZJTEVfU1BBQ0Ug Ki8KKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5f ZmllbGRzKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpIFwKKwlidHJfc3RvcmVfYmln X3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5kZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJpZykK KyNlbGlmIGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCisjIGRlZmluZSBidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpIFwK KwlidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5kZXgsYixyZWMsb2Zmc2V0 cyx1cGQsYmlnKQorI2Vsc2UKKyMgZGVmaW5lIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVs ZHMoaW5kZXgsYixyZWMsb2Zmc2V0cyxtdHIsdXBkLGJpZykgXAorCWJ0cl9zdG9yZV9iaWdfcmVj X2V4dGVybl9maWVsZHNfZnVuYyhpbmRleCxiLHJlYyxvZmZzZXRzLGJpZykKKyNlbmRpZgorCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIEZyZWVzIHRoZSBzcGFjZSBpbiBhbiBleHRlcm5hbGx5IHN0b3JlZCBm aWVsZCB0byB0aGUgZmlsZSBzcGFjZQogbWFuYWdlbWVudCBpZiB0aGUgZmllbGQgaW4gZGF0YSBp cyBvd25lZCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQsCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjAx MTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1 ZjBidWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEzNTgwMS16M2Mz d2NzenJoNWw1NjZoCkBAIC00ODAsNyArNDgwLDcgQEAgYnVmX3Jlc2V0X2NoZWNrX2luZGV4X3Bh Z2VfYXRfZmx1c2goCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGlu dAlzcGFjZSwJLyohPCBpbjogc3BhY2UgaWQgKi8KIAl1bGludAlvZmZzZXQpOy8qITwgaW46IHBh Z2UgbnVtYmVyICovCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5l ZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBTZXRzIGZpbGVfcGFnZV93YXNfZnJlZWQgVFJVRSBpZiB0aGUgcGFnZSBpcyBm b3VuZCBpbiB0aGUgYnVmZmVyIHBvb2wuCiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQg d2hlbiB3ZSBmcmVlIGEgZmlsZSBwYWdlIGFuZCB3YW50IHRoZQpAQCAtNTA1LDcgKzUwNSw3IEBA IGJ1Zl9wYWdlX3Jlc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoCiAvKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0qLwogCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwogCXVs aW50CW9mZnNldCk7CS8qITwgaW46IHBhZ2UgbnVtYmVyICovCi0jZW5kaWYgLyogVU5JVl9ERUJV R19GSUxFX0FDQ0VTU0VTICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8 IFVOSVZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIFJlYWRzIHRoZSBmcmVlZF9wYWdlX2Ns b2NrIG9mIGEgYnVmZmVyIGJsb2NrLgogQHJldHVybglmcmVlZF9wYWdlX2Nsb2NrICovCkBAIC0x NDAzLDExICsxNDAzLDExIEBAIHN0cnVjdCBidWZfcGFnZV9zdHJ1Y3R7CiAJCQkJCTAgaWYgdGhl IGJsb2NrIHdhcyBuZXZlciBhY2Nlc3NlZAogCQkJCQlpbiB0aGUgYnVmZmVyIHBvb2wgKi8KIAkv KiBAfSAqLwotIyBpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyMgaWYgZGVmaW5lZCBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJaWJvb2wJCWZp bGVfcGFnZV93YXNfZnJlZWQ7CiAJCQkJCS8qITwgdGhpcyBpcyBzZXQgdG8gVFJVRSB3aGVuIGZz cAogCQkJCQlmcmVlcyBhIHBhZ2UgaW4gYnVmZmVyIHBvb2wgKi8KLSMgZW5kaWYgLyogVU5JVl9E RUJVR19GSUxFX0FDQ0VTU0VTICovCisjIGVuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NF UyB8fCBVTklWX0RFQlVHICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiB9OwogCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaScKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTEwMjAxMTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3VuaXYuaQlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwMjEz NTgwMS16M2Mzd2NzenJoNWw1NjZoCkBAIC0xODQsMTQgKzE4NCwxNSBAQCBjb21tYW5kLiBOb3Qg dGVzdGVkIG9uIFdpbmRvd3MuICovCiAJCQkJCQlkZWJ1Z2dpbmcgd2l0aG91dCBVTklWX0RFQlVH ICovCiAjZGVmaW5lIFVOSVZfQlVGX0RFQlVHCQkJCS8qIEVuYWJsZSBidWZmZXIgcG9vbAogCQkJ CQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLworI2RlZmluZSBVTklWX0JMT0JfTElH SFRfREVCVUcJCQkvKiBFbmFibGUgb2ZmLXBhZ2UgY29sdW1uCisJCQkJCQlkZWJ1Z2dpbmcgd2l0 aG91dCBVTklWX0RFQlVHICovCiAjZGVmaW5lIFVOSVZfREVCVUcJCQkJLyogRW5hYmxlIHV0X2Fk KCkgYXNzZXJ0aW9ucwogCQkJCQkJYW5kIGRpc2FibGUgVU5JVl9JTkxJTkUgKi8KICNkZWZpbmUg VU5JVl9ERUJVR19MT0NLX1ZBTElEQVRFCQkvKiBFbmFibGUKIAkJCQkJCXV0X2FkKGxvY2tfcmVj X3ZhbGlkYXRlX3BhZ2UoKSkKIAkJCQkJCWFzc2VydGlvbnMuICovCi0jZGVmaW5lIFVOSVZfREVC VUdfRklMRV9BQ0NFU1NFUwkJLyogRGVidWcgLmliZCBmaWxlIGFjY2VzcwotCQkJCQkJKGZpZWxk IGZpbGVfcGFnZV93YXNfZnJlZWQKLQkJCQkJCWluIGJ1Zl9wYWdlX3QpICovCisjZGVmaW5lIFVO SVZfREVCVUdfRklMRV9BQ0NFU1NFUwkJLyogRW5hYmxlIGZyZWVkIGJsb2NrIGFjY2VzcworCQkJ CQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0xSVV9ERUJV RwkJCQkvKiBkZWJ1ZyB0aGUgYnVmZmVyIHBvb2wgTFJVICovCiAjZGVmaW5lIFVOSVZfSEFTSF9E RUJVRwkJCQkvKiBkZWJ1ZyBIQVNIXyBtYWNyb3MgKi8KICNkZWZpbmUgVU5JVl9MSVNUX0RFQlVH CQkJCS8qIGRlYnVnIFVUX0xJU1RfIG1hY3JvcyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93 MGlucy5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40 aGY3b2FrYzlqbAorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTAyMDIxMzU4MDEtejNjM3djc3pyaDVsNTY2aApAQCAt MjEyMiw3ICsyMTIyLDcgQEAgZnVuY3Rpb25fZXhpdDoKIAogCQllcnIgPSBidHJfc3RvcmVfYmln X3JlY19leHRlcm5fZmllbGRzKAogCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0X2Jsb2NrKCZjdXJzb3Ip LAotCQkJcmVjLCBvZmZzZXRzLCBiaWdfcmVjLCAmbXRyKTsKKwkJCXJlYywgb2Zmc2V0cywgJm10 ciwgRkFMU0UsIGJpZ19yZWMpOwogCiAJCWlmIChtb2RpZnkpIHsKIAkJCWR0dXBsZV9iaWdfcmVj X2ZyZWUoYmlnX3JlYyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHB1cmdlLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBwdXJnZS5jCXJldmlk OnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDExNjI4NDEtamEzaW40aGY3b2FrYzlqbAor KysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcHVyZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDIwMjEzNTgwMS16M2Mzd2NzenJoNWw1NjZoCkBAIC03MTUsNDcgKzcx NSwzMiBAQCBlcnJfZXhpdDoKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKIEZldGNoZXMgYW4gdW5kbyBsb2cgcmVjb3JkIGFu ZCBkb2VzIHRoZSBwdXJnZSBmb3IgdGhlIHJlY29yZGVkIG9wZXJhdGlvbi4KIElmIG5vbmUgbGVm dCwgb3IgdGhlIGN1cnJlbnQgcHVyZ2UgY29tcGxldGVkLCByZXR1cm5zIHRoZSBjb250cm9sIHRv IHRoZQotcGFyZW50IG5vZGUsIHdoaWNoIGlzIGFsd2F5cyBhIHF1ZXJ5IHRocmVhZCBub2RlLgot QHJldHVybglEQl9TVUNDRVNTIGlmIG9wZXJhdGlvbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkLCBl bHNlIGVycm9yIGNvZGUgKi8KLXN0YXRpYwotdWxpbnQKK3BhcmVudCBub2RlLCB3aGljaCBpcyBh bHdheXMgYSBxdWVyeSB0aHJlYWQgbm9kZS4gKi8KK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChub25u dWxsKSkKK3ZvaWQKIHJvd19wdXJnZSgKIC8qPT09PT09Ki8KIAlwdXJnZV9ub2RlX3QqCW5vZGUs CS8qITwgaW46IHJvdyBwdXJnZSBub2RlICovCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1 ZXJ5IHRocmVhZCAqLwogewotCXJvbGxfcHRyX3QJcm9sbF9wdHI7Ci0JaWJvb2wJCXB1cmdlX25l ZWRlZDsKIAlpYm9vbAkJdXBkYXRlZF9leHRlcm47Ci0JdHJ4X3QqCQl0cng7CiAKLQl1dF9hZChu b2RlICYmIHRocik7Ci0KLQl0cnggPSB0aHJfZ2V0X3RyeCh0aHIpOworCXV0X2FkKG5vZGUpOwor CXV0X2FkKHRocik7CiAKLQlub2RlLT51bmRvX3JlYyA9IHRyeF9wdXJnZV9mZXRjaF9uZXh0X3Jl Yygmcm9sbF9wdHIsCi0JCQkJCQkgICYobm9kZS0+cmVzZXJ2YXRpb24pLAorCW5vZGUtPnVuZG9f cmVjID0gdHJ4X3B1cmdlX2ZldGNoX25leHRfcmVjKCZub2RlLT5yb2xsX3B0ciwKKwkJCQkJCSAg Jm5vZGUtPnJlc2VydmF0aW9uLAogCQkJCQkJICBub2RlLT5oZWFwKTsKIAlpZiAoIW5vZGUtPnVu ZG9fcmVjKSB7CiAJCS8qIFB1cmdlIGNvbXBsZXRlZCBmb3IgdGhpcyBxdWVyeSB0aHJlYWQgKi8K IAogCQl0aHItPnJ1bl9ub2RlID0gcXVlX25vZGVfZ2V0X3BhcmVudChub2RlKTsKIAotCQlyZXR1 cm4oREJfU1VDQ0VTUyk7CisJCXJldHVybjsKIAl9CiAKLQlub2RlLT5yb2xsX3B0ciA9IHJvbGxf cHRyOwotCi0JaWYgKG5vZGUtPnVuZG9fcmVjID09ICZ0cnhfcHVyZ2VfZHVtbXlfcmVjKSB7Ci0J CXB1cmdlX25lZWRlZCA9IEZBTFNFOwotCX0gZWxzZSB7Ci0JCXB1cmdlX25lZWRlZCA9IHJvd19w dXJnZV9wYXJzZV91bmRvX3JlYyhub2RlLCAmdXBkYXRlZF9leHRlcm4sCi0JCQkJCQkJdGhyKTsK LQkJLyogSWYgcHVyZ2VfbmVlZGVkID09IFRSVUUsIHdlIG11c3QgYWxzbyByZW1lbWJlciB0byB1 bmZyZWV6ZQotCQlkYXRhIGRpY3Rpb25hcnkhICovCi0JfQotCi0JaWYgKHB1cmdlX25lZWRlZCkg eworCWlmIChub2RlLT51bmRvX3JlYyAhPSAmdHJ4X3B1cmdlX2R1bW15X3JlYworCSAgICAmJiBy b3dfcHVyZ2VfcGFyc2VfdW5kb19yZWMobm9kZSwgJnVwZGF0ZWRfZXh0ZXJuLCB0aHIpKSB7CiAJ CW5vZGUtPmZvdW5kX2NsdXN0ID0gRkFMU0U7CiAKIAkJbm9kZS0+aW5kZXggPSBkaWN0X3RhYmxl X2dldF9uZXh0X2luZGV4KApAQCAtNzc0LDcgKzc1OSw3IEBAIHJvd19wdXJnZSgKIAkJCWJ0cl9w Y3VyX2Nsb3NlKCYobm9kZS0+cGN1cikpOwogCQl9CiAKLQkJcm93X215c3FsX3VuZnJlZXplX2Rh dGFfZGljdGlvbmFyeSh0cngpOworCQlyb3dfbXlzcWxfdW5mcmVlemVfZGF0YV9kaWN0aW9uYXJ5 KHRocl9nZXRfdHJ4KHRocikpOwogCX0KIAogCS8qIERvIHNvbWUgY2xlYW51cCAqLwpAQCAtNzgy LDggKzc2Nyw2IEBAIHJvd19wdXJnZSgKIAltZW1faGVhcF9lbXB0eShub2RlLT5oZWFwKTsKIAog CXRoci0+cnVuX25vZGUgPSBub2RlOwotCi0JcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCkBAIC03OTcsOSArNzgwLDYgQEAgcm93X3B1cmdlX3N0ZXAoCiAJcXVlX3Rocl90Kgl0aHIp CS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogewogCXB1cmdlX25vZGVfdCoJbm9kZTsKLSNpZmRl ZiBVTklWX0RFQlVHCi0JdWxpbnQJCWVycjsKLSNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKIAl1 dF9hZCh0aHIpOwogCkBAIC04MDcsMTIgKzc4Nyw3IEBAIHJvd19wdXJnZV9zdGVwKAogCiAJdXRf YWQocXVlX25vZGVfZ2V0X3R5cGUobm9kZSkgPT0gUVVFX05PREVfUFVSR0UpOwogCi0jaWZkZWYg VU5JVl9ERUJVRwotCWVyciA9Ci0jZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCXJvd19wdXJnZShu b2RlLCB0aHIpOwogCi0JdXRfYWQoZXJyID09IERCX1NVQ0NFU1MpOwotCiAJcmV0dXJuKHRocik7 CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2QuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVtb2QuYwlyZXZpZDp2YXNpbC5kaW1vdkBv cmFjbGUuY29tLTIwMTEwMjAxMTYyODQxLWphM2luNGhmN29ha2M5amwKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9yb3cvcm93MHVtb2QuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEx MDIwMjEzNTgwMS16M2Mzd2NzenJoNWw1NjZoCkBAIC0xNzMsNDAgKzE3MywyNiBAQCByb3dfdW5k b19tb2RfcmVtb3ZlX2NsdXN0X2xvdygKIAltdHJfdCoJCW10ciwJLyohPCBpbjogbXRyICovCiAJ dWxpbnQJCW1vZGUpCS8qITwgaW46IEJUUl9NT0RJRllfTEVBRiBvciBCVFJfTU9ESUZZX1RSRUUg Ki8KIHsKLQlidHJfcGN1cl90KglwY3VyOwogCWJ0cl9jdXJfdCoJYnRyX2N1cjsKIAl1bGludAkJ ZXJyOwotCWlib29sCQlzdWNjZXNzOwogCiAJdXRfYWQobm9kZS0+cmVjX3R5cGUgPT0gVFJYX1VO RE9fVVBEX0RFTF9SRUMpOwotCXBjdXIgPSAmKG5vZGUtPnBjdXIpOwotCWJ0cl9jdXIgPSBidHJf cGN1cl9nZXRfYnRyX2N1cihwY3VyKTsKIAotCXN1Y2Nlc3MgPSBidHJfcGN1cl9yZXN0b3JlX3Bv c2l0aW9uKG1vZGUsIHBjdXIsIG10cik7CisJLyogRmluZCBvdXQgaWYgdGhlIHJlY29yZCBoYXMg YmVlbiBwdXJnZWQgYWxyZWFkeQorCW9yIGlmIHdlIGNhbiByZW1vdmUgaXQuICovCiAKLQlpZiAo IXN1Y2Nlc3MpIHsKKwlpZiAoIWJ0cl9wY3VyX3Jlc3RvcmVfcG9zaXRpb24obW9kZSwgJm5vZGUt PnBjdXIsIG10cikKKwkgICAgfHwgcm93X3ZlcnNfbXVzdF9wcmVzZXJ2ZV9kZWxfbWFya2VkKG5v ZGUtPm5ld190cnhfaWQsIG10cikpIHsKIAogCQlyZXR1cm4oREJfU1VDQ0VTUyk7CiAJfQogCi0J LyogRmluZCBvdXQgaWYgd2UgY2FuIHJlbW92ZSB0aGUgd2hvbGUgY2x1c3RlcmVkIGluZGV4IHJl Y29yZCAqLwotCi0JaWYgKG5vZGUtPnJlY190eXBlID09IFRSWF9VTkRPX1VQRF9ERUxfUkVDCi0J ICAgICYmICFyb3dfdmVyc19tdXN0X3ByZXNlcnZlX2RlbF9tYXJrZWQobm9kZS0+bmV3X3RyeF9p ZCwgbXRyKSkgewotCi0JCS8qIE9rLCB3ZSBjYW4gcmVtb3ZlICovCi0JfSBlbHNlIHsKLQkJcmV0 dXJuKERCX1NVQ0NFU1MpOwotCX0KKwlidHJfY3VyID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIoJm5v ZGUtPnBjdXIpOwogCiAJaWYgKG1vZGUgPT0gQlRSX01PRElGWV9MRUFGKSB7Ci0JCXN1Y2Nlc3Mg PSBidHJfY3VyX29wdGltaXN0aWNfZGVsZXRlKGJ0cl9jdXIsIG10cik7Ci0KLQkJaWYgKHN1Y2Nl c3MpIHsKLQkJCWVyciA9IERCX1NVQ0NFU1M7Ci0JCX0gZWxzZSB7Ci0JCQllcnIgPSBEQl9GQUlM OwotCQl9CisJCWVyciA9IGJ0cl9jdXJfb3B0aW1pc3RpY19kZWxldGUoYnRyX2N1ciwgbXRyKQor CQkJPyBEQl9TVUNDRVNTCisJCQk6IERCX0ZBSUw7CiAJfSBlbHNlIHsKIAkJdXRfYWQobW9kZSA9 PSBCVFJfTU9ESUZZX1RSRUUpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMJcmV2 aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwMTE2Mjg0MS1qYTNpbjRoZjdvYWtjOWps CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDExMDIwMjEzNTgwMS16M2Mzd2NzenJoNWw1NjZoCkBAIC0xOTgyLDcgKzE5 ODIsNyBAQCByb3dfdXBkX2NsdXN0X3JlYygKIAkJCWluZGV4LCBidHJfY3VyX2dldF9ibG9jayhi dHJfY3VyKSwgcmVjLAogCQkJcmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHNfLAog CQkJCQlVTElOVF9VTkRFRklORUQsICZoZWFwKSwKLQkJCWJpZ19yZWMsIG10cik7CisJCQltdHIs IFRSVUUsIGJpZ19yZWMpOwogCQltdHJfY29tbWl0KG10cik7CiAJfQogCgo= --===============0594782208== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.5-innodb/ # testament_sha1: 1da2e4c51aa123f62c40594dd58ac85852ca6412 # timestamp: 2011-02-02 16:13:04 +0200 # source_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # base_revision_id: vasil.dimov@stripped\ # ja3in4hf7oakc9jl # # Begin bundle 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 wRPtKKh8OpLof/icqfJP8i7kinChIMz2IPI= --===============0594782208==--