From: marko.makela Date: June 16 2011 12:39pm Subject: bzr push into mysql-trunk branch (marko.makela:3211 to 3212) List-Archive: http://lists.mysql.com/commits/139324 Message-Id: <201106161240.p5GCeQ6u012089@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1883662726==" --===============1883662726== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDMyMTIgTWFya28gTcOka2Vsw6QJMjAxMS0wNi0xNiBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuNSB0byBteXNxbC10cnVuay4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9idWYvYnVmMGJ1ZGR5LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1Zi5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwogICAgICBzdG9yYWdlL2lubm9iYXNl L2J1Zi9idWYwbHJ1LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAog ICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCiAgICAgIHN0b3JhZ2UvaW5u b2Jhc2UvcGFnZS9wYWdlMHppcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcmVtL3JlbTByZWMu YwogMzIxMSBNYXJrbyBNw6RrZWzDpAkyMDExLTA2LTE2IFttZXJnZV0KICAgICAgTWVyZ2UgbXlz cWwtNS41IHRvIG15c3FsLXRydW5rLgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9i YXNlL2J0ci9idHIwYnRyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRy MGN1ci5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5oCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9wYWdlMGN1ci5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBw YWdlLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYwogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9yZW0wcmVjLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHJ3 LmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9w YWdlMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYwogICAgICBz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHJvdy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwogICAgICBzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9z eW5jMHJ3LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3luYy5jCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByZWMuYwo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9idWYvYnVmMGJ1ZGR5LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBi dWRkeS5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpj cDVscmdwNGd3M3AKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1ZGR5LmMJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYxMjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpA QCAtMzUyLDcgKzM1Miw5IEBAIGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAlidWZfcGFnZV90 KglicGFnZSwJLyohPCBpbjogYmxvY2sgdG8gcmVsb2NhdGUgKi8KIAlidWZfcGFnZV90KglkcGFn ZSkJLyohPCBpbjogZnJlZSBibG9jayB0byByZWxvY2F0ZSB0byAqLwogeworI2lmIGRlZmluZWQg VU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJYnVmX3BhZ2VfdCoJYjsKKyNl bmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJYnVmX3Bvb2xfdCoJYnVm X3Bvb2wgPSBidWZfcG9vbF9mcm9tX2JwYWdlKGJwYWdlKTsKIAl1bGludAkJZm9sZCA9IGJ1Zl9w YWdlX2FkZHJlc3NfZm9sZChicGFnZS0+c3BhY2UsCiAJCQkJCQkgICAgIGJwYWdlLT5vZmZzZXQp OwpAQCAtMzg3LDcgKzM4OSw3IEBAIGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAogCWJ1Zl9y ZWxvY2F0ZShicGFnZSwgZHBhZ2UpOwogCXV0X2QoYnBhZ2UtPnN0YXRlID0gQlVGX0JMT0NLX1pJ UF9GUkVFKTsKLQorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RF QlVHCiAJLyogcmVsb2NhdGUgYnVmX3Bvb2wtPnppcF9jbGVhbiAqLwogCWIgPSBVVF9MSVNUX0dF VF9QUkVWKGxpc3QsIGRwYWdlKTsKIAlVVF9MSVNUX1JFTU9WRShsaXN0LCBidWZfcG9vbC0+emlw X2NsZWFuLCBkcGFnZSk7CkBAIC0zOTcsNiArMzk5LDcgQEAgYnVmX2J1ZGR5X3JlbG9jYXRlX2Js b2NrKAogCX0gZWxzZSB7CiAJCVVUX0xJU1RfQUREX0ZJUlNUKGxpc3QsIGJ1Zl9wb29sLT56aXBf Y2xlYW4sIGRwYWdlKTsKIAl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJV RyAqLwogCiAJVU5JVl9NRU1fSU5WQUxJRChicGFnZSwgc2l6ZW9mICpicGFnZSk7CiAKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDYxNjA5MjYwOS00eml6Y3A1bHJncDRndzNwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVm L2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12 aGprdjh4cng2aHNhMXdjCkBAIC0xMTA3LDcwICsxMTA3LDYgQEAgYnVmX2NodW5rX25vdF9mcmVl ZCgKIAlyZXR1cm4oTlVMTCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DaGVja3MgdGhhdCBh bGwgYmxvY2tzIGluIHRoZSBidWZmZXIgY2h1bmsgYXJlIGluIEJVRl9CTE9DS19OT1RfVVNFRCBz dGF0ZS4KLUByZXR1cm4JVFJVRSBpZiBhbGwgZnJlZWQgKi8KLXN0YXRpYwotaWJvb2wKLWJ1Zl9j aHVua19hbGxfZnJlZSgKLS8qPT09PT09PT09PT09PT09Ki8KLQljb25zdCBidWZfY2h1bmtfdCoJ Y2h1bmspCS8qITwgaW46IGNodW5rIGJlaW5nIGNoZWNrZWQgKi8KLXsKLQljb25zdCBidWZfYmxv Y2tfdCoJYmxvY2s7Ci0JdWxpbnQJCQlpOwotCi0JYmxvY2sgPSBjaHVuay0+YmxvY2tzOwotCi0J Zm9yIChpID0gY2h1bmstPnNpemU7IGktLTsgYmxvY2srKykgewotCi0JCWlmIChidWZfYmxvY2tf Z2V0X3N0YXRlKGJsb2NrKSAhPSBCVUZfQkxPQ0tfTk9UX1VTRUQpIHsKLQotCQkJcmV0dXJuKEZB TFNFKTsKLQkJfQotCX0KLQotCXJldHVybihUUlVFKTsKLX0KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot RnJlZXMgYSBjaHVuayBvZiBidWZmZXIgZnJhbWVzLiAqLwotc3RhdGljCi12b2lkCi1idWZfY2h1 bmtfZnJlZSgKLS8qPT09PT09PT09PT0qLwotCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sLAkvKiE8IGlu OiBidWZmZXIgcG9vbCBpbnN0YW5jZSAqLwotCWJ1Zl9jaHVua190KgljaHVuaykJCS8qITwgb3V0 OiBjaHVuayBvZiBidWZmZXJzICovCi17Ci0JYnVmX2Jsb2NrX3QqCQlibG9jazsKLQljb25zdCBi dWZfYmxvY2tfdCoJYmxvY2tfZW5kOwotCi0JdXRfYWQoYnVmX3Bvb2xfbXV0ZXhfb3duKGJ1Zl9w b29sKSk7Ci0KLQlibG9ja19lbmQgPSBjaHVuay0+YmxvY2tzICsgY2h1bmstPnNpemU7Ci0KLQlm b3IgKGJsb2NrID0gY2h1bmstPmJsb2NrczsgYmxvY2sgPCBibG9ja19lbmQ7IGJsb2NrKyspIHsK LQkJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfTk9UX1VTRUQp OwotCQl1dF9hKCFibG9jay0+cGFnZS56aXAuZGF0YSk7Ci0KLQkJdXRfYWQoIWJsb2NrLT5wYWdl LmluX0xSVV9saXN0KTsKLQkJdXRfYWQoIWJsb2NrLT5pbl91bnppcF9MUlVfbGlzdCk7Ci0JCXV0 X2FkKCFibG9jay0+cGFnZS5pbl9mbHVzaF9saXN0KTsKLQkJLyogUmVtb3ZlIHRoZSBibG9jayBm cm9tIHRoZSBmcmVlIGxpc3QuICovCi0JCXV0X2FkKGJsb2NrLT5wYWdlLmluX2ZyZWVfbGlzdCk7 Ci0JCVVUX0xJU1RfUkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT5mcmVlLCAoJmJsb2NrLT5wYWdlKSk7 Ci0KLQkJLyogRnJlZSB0aGUgbGF0Y2hlcy4gKi8KLQkJbXV0ZXhfZnJlZSgmYmxvY2stPm11dGV4 KTsKLQkJcndfbG9ja19mcmVlKCZibG9jay0+bG9jayk7Ci0jaWZkZWYgVU5JVl9TWU5DX0RFQlVH Ci0JCXJ3X2xvY2tfZnJlZSgmYmxvY2stPmRlYnVnX2xhdGNoKTsKLSNlbmRpZiAvKiBVTklWX1NZ TkNfREVCVUcgKi8KLQkJVU5JVl9NRU1fVU5ERVNDKGJsb2NrKTsKLQl9Ci0KLQlvc19tZW1fZnJl ZV9sYXJnZShjaHVuay0+bWVtLCBjaHVuay0+bWVtX3NpemUpOwotfQotCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBTZXQgYnVmZmVyIHBvb2wgc2l6ZSB2YXJpYWJsZXMgYWZ0ZXIgcmVzaXppbmcgaXQgKi8K IHN0YXRpYwpAQCAtMTI5NCw4ICsxMjMwLDYgQEAgYnVmX3Bvb2xfZnJlZV9pbnN0YW5jZSgKIAlj aHVuayA9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKIAogCXdoaWxlICgtLWNodW5rID49 IGNodW5rcykgewotCQkvKiBCeXBhc3MgdGhlIGNoZWNrcyBvZiBidWZfY2h1bmtfZnJlZSgpLCBz aW5jZSB0aGV5Ci0JCXdvdWxkIGZhaWwgYXQgc2h1dGRvd24uICovCiAJCW9zX21lbV9mcmVlX2xh cmdlKGNodW5rLT5tZW0sIGNodW5rLT5tZW1fc2l6ZSk7CiAJfQogCkBAIC0xNTU3LDMwMyArMTQ5 MSw2IEBAIGJ1Zl9yZWxvY2F0ZSgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2hyaW5rcyBhIGJ1 ZmZlciBwb29sIGluc3RhbmNlLiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9zaHJpbmtfaW5z dGFuY2UoCi0vKj09PT09PT09PT09PT09PT09PT09PSovCi0JYnVmX3Bvb2xfdCoJYnVmX3Bvb2ws CS8qITwgaW46IGJ1ZmZlciBwb29sIGluc3RhbmNlICovCi0JdWxpbnQJCWNodW5rX3NpemUpCS8q ITwgaW46IG51bWJlciBvZiBwYWdlcyB0byByZW1vdmUgKi8KLXsKLQlidWZfY2h1bmtfdCoJY2h1 bmtzOwotCWJ1Zl9jaHVua190KgljaHVuazsKLQl1bGludAkJbWF4X3NpemU7Ci0JdWxpbnQJCW1h eF9mcmVlX3NpemU7Ci0JYnVmX2NodW5rX3QqCW1heF9jaHVuazsKLQlidWZfY2h1bmtfdCoJbWF4 X2ZyZWVfY2h1bms7Ci0KLQl1dF9hZCghYnVmX3Bvb2xfbXV0ZXhfb3duKGJ1Zl9wb29sKSk7Ci0K LXRyeV9hZ2FpbjoKLQlidHJfc2VhcmNoX2Rpc2FibGUoKTsgLyogRW1wdHkgdGhlIGFkYXB0aXZl IGhhc2ggaW5kZXggYWdhaW4gKi8KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0K LXNocmlua19hZ2FpbjoKLQlpZiAoYnVmX3Bvb2wtPm5fY2h1bmtzIDw9IDEpIHsKLQotCQkvKiBD YW5ub3Qgc2hyaW5rIGlmIHRoZXJlIGlzIG9ubHkgb25lIGNodW5rICovCi0JCWdvdG8gZnVuY19k b25lOwotCX0KLQotCS8qIFNlYXJjaCBmb3IgdGhlIGxhcmdlc3QgZnJlZSBjaHVuawotCW5vdCBs YXJnZXIgdGhhbiB0aGUgc2l6ZSBkaWZmZXJlbmNlICovCi0JY2h1bmtzID0gYnVmX3Bvb2wtPmNo dW5rczsKLQljaHVuayA9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKLQltYXhfc2l6ZSA9 IG1heF9mcmVlX3NpemUgPSAwOwotCW1heF9jaHVuayA9IG1heF9mcmVlX2NodW5rID0gTlVMTDsK LQotCXdoaWxlICgtLWNodW5rID49IGNodW5rcykgewotCQlpZiAoY2h1bmstPnNpemUgPD0gY2h1 bmtfc2l6ZQotCQkgICAgJiYgY2h1bmstPnNpemUgPiBtYXhfZnJlZV9zaXplKSB7Ci0JCQlpZiAo Y2h1bmstPnNpemUgPiBtYXhfc2l6ZSkgewotCQkJCW1heF9zaXplID0gY2h1bmstPnNpemU7Ci0J CQkJbWF4X2NodW5rID0gY2h1bms7Ci0JCQl9Ci0KLQkJCWlmIChidWZfY2h1bmtfYWxsX2ZyZWUo Y2h1bmspKSB7Ci0JCQkJbWF4X2ZyZWVfc2l6ZSA9IGNodW5rLT5zaXplOwotCQkJCW1heF9mcmVl X2NodW5rID0gY2h1bms7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoIW1heF9mcmVlX3NpemUpIHsK LQotCQl1bGludAkJZGlydHkJPSAwOwotCQl1bGludAkJbm9uZnJlZQk9IDA7Ci0JCWJ1Zl9ibG9j a190KglibG9jazsKLQkJYnVmX2Jsb2NrX3QqCWJlbmQ7Ci0KLQkJLyogQ2Fubm90IHNocmluazog dHJ5IGFnYWluIGxhdGVyCi0JCShkbyBub3QgYXNzaWduIHNydl9idWZfcG9vbF9vbGRfc2l6ZSkg Ki8KLQkJaWYgKCFtYXhfY2h1bmspIHsKLQotCQkJZ290byBmdW5jX2V4aXQ7Ci0JCX0KLQotCQli bG9jayA9IG1heF9jaHVuay0+YmxvY2tzOwotCQliZW5kID0gYmxvY2sgKyBtYXhfY2h1bmstPnNp emU7Ci0KLQkJLyogTW92ZSB0aGUgYmxvY2tzIG9mIGNodW5rIHRvIHRoZSBlbmQgb2YgdGhlCi0J CUxSVSBsaXN0IGFuZCB0cnkgdG8gZmx1c2ggdGhlbS4gKi8KLQkJZm9yICg7IGJsb2NrIDwgYmVu ZDsgYmxvY2srKykgewotCQkJc3dpdGNoIChidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSkgewot CQkJY2FzZSBCVUZfQkxPQ0tfTk9UX1VTRUQ6Ci0JCQkJY29udGludWU7Ci0JCQljYXNlIEJVRl9C TE9DS19GSUxFX1BBR0U6Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW5vbmZyZWUrKzsK LQkJCQljb250aW51ZTsKLQkJCX0KLQotCQkJbXV0ZXhfZW50ZXIoJmJsb2NrLT5tdXRleCk7Ci0J CQkvKiBUaGUgZm9sbG93aW5nIGNhbGxzIHdpbGwgdGVtcG9yYXJpbHkKLQkJCXJlbGVhc2UgYmxv Y2stPm11dGV4IGFuZCBidWZfcG9vbC0+bXV0ZXguCi0JCQlUaGVyZWZvcmUsIHdlIGhhdmUgdG8g YWx3YXlzIHJldHJ5LAotCQkJZXZlbiBpZiAhZGlydHkgJiYgIW5vbmZyZWUuICovCi0KLQkJCWlm ICghYnVmX2ZsdXNoX3JlYWR5X2Zvcl9yZXBsYWNlKCZibG9jay0+cGFnZSkpIHsKLQotCQkJCWJ1 Zl9MUlVfbWFrZV9ibG9ja19vbGQoJmJsb2NrLT5wYWdlKTsKLQkJCQltdXRleF9leGl0KCZibG9j ay0+bXV0ZXgpOwotCQkJCWRpcnR5Kys7Ci0JCQl9IGVsc2UgewotCQkJCW11dGV4X2V4aXQoJmJs b2NrLT5tdXRleCk7Ci0JCQkJaWYgKGJ1Zl9MUlVfZnJlZV9ibG9jaygmYmxvY2stPnBhZ2UsIFRS VUUpCi0JCQkJICAgIT0gQlVGX0xSVV9GUkVFRCkgewotCQkJCQlub25mcmVlKys7Ci0JCQkJfQot CQkJfQotCQl9Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7Ci0KLQkJLyogUmVx dWVzdCBmb3IgYSBmbHVzaCBvZiB0aGUgY2h1bmsgaWYgaXQgaGVscHMuCi0JCURvIG5vdCBmbHVz aCBpZiB0aGVyZSBhcmUgbm9uLWZyZWUgYmxvY2tzLCBzaW5jZQotCQlmbHVzaGluZyB3aWxsIG5v dCBtYWtlIHRoZSBjaHVuayBmcmVlYWJsZS4gKi8KLQkJaWYgKG5vbmZyZWUpIHsKLQkJCS8qIEF2 b2lkIGJ1c3ktd2FpdGluZy4gKi8KLQkJCW9zX3RocmVhZF9zbGVlcCgxMDAwMDApOwotCQl9IGVs c2UgaWYgKGRpcnR5Ci0JCQkgICAmJiBidWZfZmx1c2hfTFJVKGJ1Zl9wb29sLCBkaXJ0eSkKLQkJ CSAgICAgID09IFVMSU5UX1VOREVGSU5FRCkgewotCi0JCQlidWZfZmx1c2hfd2FpdF9iYXRjaF9l bmQoYnVmX3Bvb2wsIEJVRl9GTFVTSF9MUlUpOwotCQl9Ci0KLQkJZ290byB0cnlfYWdhaW47Ci0J fQotCi0JbWF4X3NpemUgPSBtYXhfZnJlZV9zaXplOwotCW1heF9jaHVuayA9IG1heF9mcmVlX2No dW5rOwotCi0JYnVmX3Bvb2wtPm9sZF9wb29sX3NpemUgPSBidWZfcG9vbC0+Y3Vycl9wb29sX3Np emU7Ci0KLQkvKiBSZXdyaXRlIGJ1Zl9wb29sLT5jaHVua3MuICBDb3B5IGV2ZXJ5dGhpbmcgYnV0 IG1heF9jaHVuay4gKi8KLQljaHVua3MgPSBtZW1fYWxsb2MoKGJ1Zl9wb29sLT5uX2NodW5rcyAt IDEpICogc2l6ZW9mICpjaHVua3MpOwotCW1lbWNweShjaHVua3MsIGJ1Zl9wb29sLT5jaHVua3Ms Ci0JICAgICAgIChtYXhfY2h1bmsgLSBidWZfcG9vbC0+Y2h1bmtzKSAqIHNpemVvZiAqY2h1bmtz KTsKLQltZW1jcHkoY2h1bmtzICsgKG1heF9jaHVuayAtIGJ1Zl9wb29sLT5jaHVua3MpLAotCSAg ICAgICBtYXhfY2h1bmsgKyAxLAotCSAgICAgICBidWZfcG9vbC0+Y2h1bmtzICsgYnVmX3Bvb2wt Pm5fY2h1bmtzCi0JICAgICAgIC0gKG1heF9jaHVuayArIDEpKTsKLQl1dF9hKGJ1Zl9wb29sLT5j dXJyX3NpemUgPiBtYXhfY2h1bmstPnNpemUpOwotCWJ1Zl9wb29sLT5jdXJyX3NpemUgLT0gbWF4 X2NodW5rLT5zaXplOwotCWJ1Zl9wb29sLT5jdXJyX3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5jdXJy X3NpemUgKiBVTklWX1BBR0VfU0laRTsKLQljaHVua19zaXplIC09IG1heF9jaHVuay0+c2l6ZTsK LQlidWZfY2h1bmtfZnJlZShidWZfcG9vbCwgbWF4X2NodW5rKTsKLQltZW1fZnJlZShidWZfcG9v bC0+Y2h1bmtzKTsKLQlidWZfcG9vbC0+Y2h1bmtzID0gY2h1bmtzOwotCWJ1Zl9wb29sLT5uX2No dW5rcy0tOwotCi0JLyogQWxsb3cgYSBzbGFjayBvZiBvbmUgbWVnYWJ5dGUuICovCi0JaWYgKGNo dW5rX3NpemUgPiAxMDQ4NTc2IC8gVU5JVl9QQUdFX1NJWkUpIHsKLQotCQlnb3RvIHNocmlua19h Z2FpbjsKLQl9Ci0JZ290byBmdW5jX2V4aXQ7Ci0KLWZ1bmNfZG9uZToKLQlidWZfcG9vbC0+b2xk X3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5jdXJyX3Bvb2xfc2l6ZTsKLWZ1bmNfZXhpdDoKLQlidWZf cG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKLQlidHJfc2VhcmNoX2VuYWJsZSgpOwotfQotCi0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCi1TaHJpbmtzIHRoZSBidWZmZXIgcG9vbC4gKi8KLXN0YXRpYwotdm9p ZAotYnVmX3Bvb2xfc2hyaW5rKAotLyo9PT09PT09PT09PT0qLwotCXVsaW50CWNodW5rX3NpemUp CS8qITwgaW46IG51bWJlciBvZiBwYWdlcyB0byByZW1vdmUgKi8KLXsKLQl1bGludAlpOwotCi0J Zm9yIChpID0gMDsgaSA8IHNydl9idWZfcG9vbF9pbnN0YW5jZXM7IGkrKykgewotCQlidWZfcG9v bF90KglidWZfcG9vbDsKLQkJdWxpbnQJCWluc3RhbmNlX2NodW5rX3NpemU7Ci0KLQkJaW5zdGFu Y2VfY2h1bmtfc2l6ZSA9IGNodW5rX3NpemUgLyBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzOwotCQli dWZfcG9vbCA9IGJ1Zl9wb29sX2Zyb21fYXJyYXkoaSk7Ci0JCWJ1Zl9wb29sX3Nocmlua19pbnN0 YW5jZShidWZfcG9vbCwgaW5zdGFuY2VfY2h1bmtfc2l6ZSk7Ci0JfQotCi0JYnVmX3Bvb2xfc2V0 X3NpemVzKCk7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJlYnVpbGQgYnVmX3Bvb2wtPnBhZ2Vf aGFzaCBmb3IgYSBidWZmZXIgcG9vbCBpbnN0YW5jZS4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bv b2xfcGFnZV9oYXNoX3JlYnVpbGRfaW5zdGFuY2UoCi0vKj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ki8KLQlidWZfcG9vbF90KglidWZfcG9vbCkJCS8qITwgaW46IGJ1ZmZlciBwb29s IGluc3RhbmNlICovCi17Ci0JdWxpbnQJCWk7Ci0JYnVmX3BhZ2VfdCoJYjsKLQlidWZfY2h1bmtf dCoJY2h1bms7Ci0JdWxpbnQJCW5fY2h1bmtzOwotCWhhc2hfdGFibGVfdCoJemlwX2hhc2g7Ci0J aGFzaF90YWJsZV90KglwYWdlX2hhc2g7Ci0KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9v bCk7Ci0KLQloYXNoX2xvY2tfeF9hbGwoYnVmX3Bvb2wtPnBhZ2VfaGFzaCk7Ci0KLQkvKiBGcmVl LCBjcmVhdGUsIGFuZCBwb3B1bGF0ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQloYV9jbGVhcihidWZf cG9vbC0+cGFnZV9oYXNoKTsKLQotCS8qRklYTUU6IFRoaXMgaXMgYnJva2VuLiBXaGVuIHdlIGZy ZWUgdGhlIGhhc2hfdGFibGUgd2UKLQlmcmVlIHRoZSBzeW5jX29iaiBhcnJheSBhcyB3ZWxsLiBX ZSBlaXRoZXIgaGF2ZSB0byBoYXZlIGEKLQltZWNoYW5pc20gd2hlcmUgaXQgaXMgZ3VhcmFudGVl ZCB0aGF0IG5vYm9keSB3aWxsIHRyeSB0bwotCWFjcXVpcmUgYW55IG9mIHRoZSBwYWdlX2hhc2gg bG9ja3Mgb3IgdGhpbmsgc29tZSBvdGhlcgotCXdheSB0byBpbXBsZW1lbnQgdGhpcy4gSXQgZG9l c24ndCBtYXR0ZXIgYXMgb2Ygbm93IGJlY2F1c2UKLQlidWZmZXIgcG9vbCByZXNpemUgY29kZSBp cyBub3QgdXNlZCBjdXJyZW50bHkuICovCi0JaGFzaF90YWJsZV9mcmVlKGJ1Zl9wb29sLT5wYWdl X2hhc2gpOwotCi0JdXRfYShzcnZfbl9wYWdlX2hhc2hfbG9ja3MgIT0gMCk7Ci0JdXRfYShzcnZf bl9wYWdlX2hhc2hfbG9ja3MgPD0gTUFYX1BBR0VfSEFTSF9MT0NLUyk7Ci0KLQlidWZfcG9vbC0+ cGFnZV9oYXNoID0gcGFnZV9oYXNoCi0JCQkgICAgPSBoYV9jcmVhdGUoMiAqIGJ1Zl9wb29sLT5j dXJyX3NpemUsCi0JCQkJCXNydl9uX3BhZ2VfaGFzaF9sb2NrcywKLQkJCQkJTUVNX0hFQVBfRk9S X1BBR0VfSEFTSCwKLQkJCQkJU1lOQ19CVUZfUEFHRV9IQVNIKTsKLQotCXppcF9oYXNoID0gaGFz aF9jcmVhdGUoMiAqIGJ1Zl9wb29sLT5jdXJyX3NpemUpOwotCi0JSEFTSF9NSUdSQVRFKGJ1Zl9w b29sLT56aXBfaGFzaCwgemlwX2hhc2gsIGJ1Zl9wYWdlX3QsIGhhc2gsCi0JCSAgICAgQlVGX1BP T0xfWklQX0ZPTERfQlBBR0UpOwotCi0JaGFzaF90YWJsZV9mcmVlKGJ1Zl9wb29sLT56aXBfaGFz aCk7Ci0JYnVmX3Bvb2wtPnppcF9oYXNoID0gemlwX2hhc2g7Ci0KLQkvKiBJbnNlcnQgdGhlIHVu Y29tcHJlc3NlZCBmaWxlIHBhZ2VzIHRvIGJ1Zl9wb29sLT5wYWdlX2hhc2guICovCi0KLQljaHVu ayA9IGJ1Zl9wb29sLT5jaHVua3M7Ci0Jbl9jaHVua3MgPSBidWZfcG9vbC0+bl9jaHVua3M7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgbl9jaHVua3M7IGkrKywgY2h1bmsrKykgewotCQl1bGludAkJajsK LQkJYnVmX2Jsb2NrX3QqCWJsb2NrID0gY2h1bmstPmJsb2NrczsKLQotCQlmb3IgKGogPSAwOyBq IDwgY2h1bmstPnNpemU7IGorKywgYmxvY2srKykgewotCQkJaWYgKGJ1Zl9ibG9ja19nZXRfc3Rh dGUoYmxvY2spCi0JCQkgICAgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSkgewotCQkJCXV0X2FkKCFi bG9jay0+cGFnZS5pbl96aXBfaGFzaCk7Ci0JCQkJdXRfYWQoYmxvY2stPnBhZ2UuaW5fcGFnZV9o YXNoKTsKLQotCQkJCUhBU0hfSU5TRVJUKGJ1Zl9wYWdlX3QsIGhhc2gsIHBhZ2VfaGFzaCwKLQkJ CQkJICAgIGJ1Zl9wYWdlX2FkZHJlc3NfZm9sZCgKLQkJCQkJCSAgICBibG9jay0+cGFnZS5zcGFj ZSwKLQkJCQkJCSAgICBibG9jay0+cGFnZS5vZmZzZXQpLAotCQkJCQkgICAgJmJsb2NrLT5wYWdl KTsKLQkJCX0KLQkJfQotCX0KLQotCS8qIEluc2VydCB0aGUgY29tcHJlc3NlZC1vbmx5IHBhZ2Vz IHRvIGJ1Zl9wb29sLT5wYWdlX2hhc2guCi0JQWxsIHN1Y2ggYmxvY2tzIGFyZSBlaXRoZXIgaW4g YnVmX3Bvb2wtPnppcF9jbGVhbiBvcgotCWluIGJ1Zl9wb29sLT5mbHVzaF9saXN0LiAqLwotCi0J Zm9yIChiID0gVVRfTElTVF9HRVRfRklSU1QoYnVmX3Bvb2wtPnppcF9jbGVhbik7IGI7Ci0JICAg ICBiID0gVVRfTElTVF9HRVRfTkVYVChsaXN0LCBiKSkgewotCQl1dF9hKGJ1Zl9wYWdlX2dldF9z dGF0ZShiKSA9PSBCVUZfQkxPQ0tfWklQX1BBR0UpOwotCQl1dF9hZCghYi0+aW5fZmx1c2hfbGlz dCk7Ci0JCXV0X2FkKGItPmluX0xSVV9saXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFnZV9oYXNoKTsK LQkJdXRfYWQoIWItPmluX3ppcF9oYXNoKTsKLQotCQlIQVNIX0lOU0VSVChidWZfcGFnZV90LCBo YXNoLCBwYWdlX2hhc2gsCi0JCQkgICAgYnVmX3BhZ2VfYWRkcmVzc19mb2xkKGItPnNwYWNlLCBi LT5vZmZzZXQpLCBiKTsKLQl9Ci0KLQlidWZfZmx1c2hfbGlzdF9tdXRleF9lbnRlcihidWZfcG9v bCk7Ci0JZm9yIChiID0gVVRfTElTVF9HRVRfRklSU1QoYnVmX3Bvb2wtPmZsdXNoX2xpc3QpOyBi OwotCSAgICAgYiA9IFVUX0xJU1RfR0VUX05FWFQobGlzdCwgYikpIHsKLQkJdXRfYWQoYi0+aW5f Zmx1c2hfbGlzdCk7Ci0JCXV0X2FkKGItPmluX0xSVV9saXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFn ZV9oYXNoKTsKLQkJdXRfYWQoIWItPmluX3ppcF9oYXNoKTsKLQotCQlzd2l0Y2ggKGJ1Zl9wYWdl X2dldF9zdGF0ZShiKSkgewotCQljYXNlIEJVRl9CTE9DS19aSVBfRElSVFk6Ci0JCQlIQVNIX0lO U0VSVChidWZfcGFnZV90LCBoYXNoLCBwYWdlX2hhc2gsCi0JCQkJICAgIGJ1Zl9wYWdlX2FkZHJl c3NfZm9sZChiLT5zcGFjZSwKLQkJCQkJCQkgIGItPm9mZnNldCksIGIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgQlVGX0JMT0NLX0ZJTEVfUEFHRToKLQkJCS8qIHVuY29tcHJlc3NlZCBwYWdlICovCi0J CQlicmVhazsKLQkJY2FzZSBCVUZfQkxPQ0tfWklQX0ZSRUU6Ci0JCWNhc2UgQlVGX0JMT0NLX1pJ UF9QQUdFOgotCQljYXNlIEJVRl9CTE9DS19OT1RfVVNFRDoKLQkJY2FzZSBCVUZfQkxPQ0tfUkVB RFlfRk9SX1VTRToKLQkJY2FzZSBCVUZfQkxPQ0tfTUVNT1JZOgotCQljYXNlIEJVRl9CTE9DS19S RU1PVkVfSEFTSDoKLQkJCXV0X2Vycm9yOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQloYXNoX3Vu bG9ja194X2FsbChidWZfcG9vbC0+cGFnZV9oYXNoKTsKLQlidWZfZmx1c2hfbGlzdF9tdXRleF9l eGl0KGJ1Zl9wb29sKTsKLQlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKLX0KLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiBEZXRlcm1pbmUgaWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZl ciBwb29sIHdhdGNoLgogQHJldHVybglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBv b2wgd2F0Y2gsIEZBTFNFIGlmIG5vdCAqLwogVU5JVl9JTlRFUk4KQEAgLTIwMDQsMTIzICsxNjQx LDYgQEAgcGFnZV9mb3VuZDoKIAlyZXR1cm4oTlVMTCk7CiB9CiAKLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LVJlYnVpbGQgYnVmX3Bvb2wtPnBhZ2VfaGFzaC4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xf cGFnZV9oYXNoX3JlYnVpbGQodm9pZCkKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSov Ci17Ci0JdWxpbnQgICBpOwotCi0JZm9yIChpID0gMDsgaSA8IHNydl9idWZfcG9vbF9pbnN0YW5j ZXM7IGkrKykgewotCQlidWZfcG9vbF9wYWdlX2hhc2hfcmVidWlsZF9pbnN0YW5jZShidWZfcG9v bF9mcm9tX2FycmF5KGkpKTsKLQl9Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUluY3JlYXNlIHRo ZSBidWZmZXIgcG9vbCBzaXplIG9mIG9uZSBidWZmZXIgcG9vbCBpbnN0YW5jZS4gKi8KLXN0YXRp Ywotdm9pZAotYnVmX3Bvb2xfaW5jcmVhc2VfaW5zdGFuY2UoCi0vKj09PT09PT09PT09PT09PT09 PT09PT09Ki8KLQlidWZfcG9vbF90KglidWZfcG9vbCwJLyohPCBpbjogYnVmZmVyIHBvb2wgaW5z dGFuZSAqLwotCXVsaW50CQljaGFuZ2Vfc2l6ZSkJLyohPCBpbjogbmV3IHNpemUgb2YgdGhlIHBv b2wgKi8KLXsKLQlidWZfY2h1bmtfdCoJY2h1bmtzOwotCWJ1Zl9jaHVua190KgljaHVuazsKLQot CWJ1Zl9wb29sX211dGV4X2VudGVyKGJ1Zl9wb29sKTsKLQljaHVua3MgPSBtZW1fYWxsb2MoKGJ1 Zl9wb29sLT5uX2NodW5rcyArIDEpICogc2l6ZW9mICpjaHVua3MpOwotCi0JbWVtY3B5KGNodW5r cywgYnVmX3Bvb2wtPmNodW5rcywgYnVmX3Bvb2wtPm5fY2h1bmtzICogc2l6ZW9mICpjaHVua3Mp OwotCi0JY2h1bmsgPSAmY2h1bmtzW2J1Zl9wb29sLT5uX2NodW5rc107Ci0KLQlpZiAoIWJ1Zl9j aHVua19pbml0KGJ1Zl9wb29sLCBjaHVuaywgY2hhbmdlX3NpemUpKSB7Ci0JCW1lbV9mcmVlKGNo dW5rcyk7Ci0JfSBlbHNlIHsKLQkJYnVmX3Bvb2wtPm9sZF9wb29sX3NpemUgPSBidWZfcG9vbC0+ Y3Vycl9wb29sX3NpemU7Ci0JCWJ1Zl9wb29sLT5jdXJyX3NpemUgKz0gY2h1bmstPnNpemU7Ci0J CWJ1Zl9wb29sLT5jdXJyX3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5jdXJyX3NpemUgKiBVTklWX1BB R0VfU0laRTsKLQkJbWVtX2ZyZWUoYnVmX3Bvb2wtPmNodW5rcyk7Ci0JCWJ1Zl9wb29sLT5jaHVu a3MgPSBjaHVua3M7Ci0JCWJ1Zl9wb29sLT5uX2NodW5rcysrOwotCX0KLQotCWJ1Zl9wb29sX211 dGV4X2V4aXQoYnVmX3Bvb2wpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1JbmNyZWFzZSB0aGUg YnVmZmVyIHBvb2wgc2l6ZS4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xfaW5jcmVhc2UoCi0v Kj09PT09PT09PT09PT09Ki8KLQl1bGludCAgIGNoYW5nZV9zaXplKQotewotCXVsaW50ICAgaTsK LQotCWZvciAoaSA9IDA7IGkgPCBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzOyBpKyspIHsKLQkJYnVm X3Bvb2xfaW5jcmVhc2VfaW5zdGFuY2UoCi0JCQlidWZfcG9vbF9mcm9tX2FycmF5KGkpLAotCQkJ Y2hhbmdlX3NpemUgLyBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzKTsKLQl9Ci0KLQlidWZfcG9vbF9z ZXRfc2l6ZXMoKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotUmVzaXplcyB0aGUgYnVmZmVyIHBv b2wuICovCi1VTklWX0lOVEVSTgotdm9pZAotYnVmX3Bvb2xfcmVzaXplKHZvaWQpCi0vKj09PT09 PT09PT09PT09PT09Ki8KLXsKLQl1bGludAljaGFuZ2Vfc2l6ZTsKLQl1bGludAltaW5fY2hhbmdl X3NpemUgPSAxMDQ4NTc2ICogc3J2X2J1Zl9wb29sX2luc3RhbmNlczsKLQotCWJ1Zl9wb29sX211 dGV4X2VudGVyX2FsbCgpOwotCi0gIAlpZiAoc3J2X2J1Zl9wb29sX29sZF9zaXplID09IHNydl9i dWZfcG9vbF9zaXplKSB7Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQotICAJCXJl dHVybjsKLQotICAJfSBlbHNlIGlmIChzcnZfYnVmX3Bvb2xfY3Vycl9zaXplICsgbWluX2NoYW5n ZV9zaXplCi0JCSAgID4gc3J2X2J1Zl9wb29sX3NpemUpIHsKLQotCQljaGFuZ2Vfc2l6ZSA9IChz cnZfYnVmX3Bvb2xfY3Vycl9zaXplIC0gc3J2X2J1Zl9wb29sX3NpemUpCi0JCQkgICAgLyBVTklW X1BBR0VfU0laRTsKLQotCQlidWZfcG9vbF9tdXRleF9leGl0X2FsbCgpOwotCi0gIAkJLyogRGlz YWJsZSBhZGFwdGl2ZSBoYXNoIGluZGV4ZXMgYW5kIGVtcHR5IHRoZSBpbmRleAotICAJCWluIG9y ZGVyIHRvIGZyZWUgdXAgbWVtb3J5IGluIHRoZSBidWZmZXIgcG9vbCBjaHVua3MuICovCi0JCWJ1 Zl9wb29sX3NocmluayhjaGFuZ2Vfc2l6ZSk7Ci0KLQl9IGVsc2UgaWYgKHNydl9idWZfcG9vbF9j dXJyX3NpemUgKyBtaW5fY2hhbmdlX3NpemUKLQkJICAgPCBzcnZfYnVmX3Bvb2xfc2l6ZSkgewot Ci0gIAkJLyogRW5sYXJnZSB0aGUgYnVmZmVyIHBvb2wgYnkgYXQgbGVhc3Qgb25lIG1lZ2FieXRl ICovCi0KLQkJY2hhbmdlX3NpemUgPSBzcnZfYnVmX3Bvb2xfc2l6ZSAtIHNydl9idWZfcG9vbF9j dXJyX3NpemU7Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQotCQlidWZfcG9vbF9p bmNyZWFzZShjaGFuZ2Vfc2l6ZSk7Ci0JfSBlbHNlIHsKLQkJc3J2X2J1Zl9wb29sX3NpemUgPSBz cnZfYnVmX3Bvb2xfb2xkX3NpemU7Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQot CQlyZXR1cm47Ci0JfQotCi0gIAlidWZfcG9vbF9wYWdlX2hhc2hfcmVidWlsZCgpOwotfQotCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKIFJlbW92ZSB0aGUgc2VudGluZWwgYmxvY2sgZm9yIHRoZSB3YXRjaCBiZWZv cmUgcmVwbGFjaW5nIGl0IHdpdGggYSByZWFsIGJsb2NrLgogYnVmX3BhZ2Vfd2F0Y2hfY2xlYXIo KSBvciBidWZfcGFnZV93YXRjaF9vY2N1cnJlZCgpIHdpbGwgbm90aWNlIHRoYXQKQEAgLTMxMzIs OCArMjY1MiwxMCBAQCB3YWl0X3VudGlsX3VuZml4ZWQ6CiAKIAkJaWYgKGJ1Zl9wYWdlX2dldF9z dGF0ZSgmYmxvY2stPnBhZ2UpCiAJCSAgICA9PSBCVUZfQkxPQ0tfWklQX1BBR0UpIHsKKyNpZiBk ZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JVRl9ERUJVRwogCQkJVVRfTElTVF9S RU1PVkUobGlzdCwgYnVmX3Bvb2wtPnppcF9jbGVhbiwKIAkJCQkgICAgICAgJmJsb2NrLT5wYWdl KTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJCQl1dF9hZCgh YmxvY2stPnBhZ2UuaW5fZmx1c2hfbGlzdCk7CiAJCX0gZWxzZSB7CiAJCQkvKiBSZWxvY2F0ZSBi dWZfcG9vbC0+Zmx1c2hfbGlzdC4gKi8KQEAgLTQwMTAsNyArMzUzMiw5IEBAIGVycl9leGl0Ogog CiAJCS8qIFRoZSBibG9jayBtdXN0IGJlIHB1dCB0byB0aGUgTFJVIGxpc3QsIHRvIHRoZSBvbGQg YmxvY2tzICovCiAJCWJ1Zl9MUlVfYWRkX2Jsb2NrKGJwYWdlLCBUUlVFLyogdG8gb2xkIGJsb2Nr cyAqLyk7CisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVCVUcK IAkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQlVGX0RFQlVHICovCiAKIAkJYnVmX3BhZ2Vfc2V0X2lvX2ZpeChicGFnZSwgQlVG X0lPX1JFQUQpOwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVm MGZsdS5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcAorKysgYi9z dG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA2MTYxMjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpAQCAtMSw2ICsxLDYgQEAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMTAsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5 OTUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTM5 LDcgKzUzOSw5IEBAIGJ1Zl9mbHVzaF9yZW1vdmUoCiAJY2FzZSBCVUZfQkxPQ0tfWklQX0RJUlRZ OgogCQlidWZfcGFnZV9zZXRfc3RhdGUoYnBhZ2UsIEJVRl9CTE9DS19aSVBfUEFHRSk7CiAJCVVU X0xJU1RfUkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT5mbHVzaF9saXN0LCBicGFnZSk7CisjaWYgZGVm aW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVCVUcKIAkJYnVmX0xSVV9pbnNl cnRfemlwX2NsZWFuKGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RF QlVHICovCiAJCWJyZWFrOwogCWNhc2UgQlVGX0JMT0NLX0ZJTEVfUEFHRToKIAkJVVRfTElTVF9S RU1PVkUobGlzdCwgYnVmX3Bvb2wtPmZsdXNoX2xpc3QsIGJwYWdlKTsKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvYnVmL2J1ZjBscnUuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5 MjYwOS00eml6Y3A1bHJncDRndzNwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2 aHNhMXdjCkBAIC01NDEsNiArNTQxLDcgQEAgYnVmX0xSVV9pbnZhbGlkYXRlX3RhYmxlc3BhY2Uo CiAJfQogfQogCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVC VUcKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIEluc2VydCBhIGNvbXByZXNzZWQgYmxvY2sgaW50byBidWZf cG9vbC0+emlwX2NsZWFuIGluIHRoZSBMUlUgb3JkZXIuICovCiBVTklWX0lOVEVSTgpAQCAtNTcz LDYgKzU3NCw3IEBAIGJ1Zl9MUlVfaW5zZXJ0X3ppcF9jbGVhbigKIAkJVVRfTElTVF9BRERfRklS U1QobGlzdCwgYnVmX3Bvb2wtPnppcF9jbGVhbiwgYnBhZ2UpOwogCX0KIH0KKyNlbmRpZiAvKiBV TklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBUcnkgdG8g ZnJlZSBhbiB1bmNvbXByZXNzZWQgcGFnZSBvZiBhIGNvbXByZXNzZWQgYmxvY2sgZnJvbSB0aGUg dW56aXAKQEAgLTE2NzAsNyArMTY3Miw5IEBAIGZ1bmNfZXhpdDoKIAkJfQogCiAJCWlmIChiLT5z dGF0ZSA9PSBCVUZfQkxPQ0tfWklQX1BBR0UpIHsKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwg ZGVmaW5lZCBVTklWX0JVRl9ERUJVRwogCQkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKGIpOwor I2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KIAkJfSBlbHNlIHsKIAkJ CS8qIFJlbG9jYXRlIG9uIGJ1Zl9wb29sLT5mbHVzaF9saXN0LiAqLwogCQkJYnVmX2ZsdXNoX3Jl bG9jYXRlX29uX2ZsdXNoX2xpc3QoYnBhZ2UsIGIpOwpAQCAtMTk2MCw3ICsxOTY0LDkgQEAgYnVm X0xSVV9ibG9ja19yZW1vdmVfaGFzaGVkX3BhZ2UoCiAJCXV0X2EoYnBhZ2UtPnppcC5kYXRhKTsK IAkJdXRfYShidWZfcGFnZV9nZXRfemlwX3NpemUoYnBhZ2UpKTsKIAorI2lmIGRlZmluZWQgVU5J Vl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJCVVUX0xJU1RfUkVNT1ZFKGxpc3Qs IGJ1Zl9wb29sLT56aXBfY2xlYW4sIGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQlVGX0RFQlVHICovCiAKIAkJbXV0ZXhfZXhpdCgmYnVmX3Bvb2wtPnppcF9tdXRleCk7CiAJ CXJ3X2xvY2tfeF91bmxvY2soaGFzaF9sb2NrKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvYnVmMGJ1Zi5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5 LTR6aXpjcDVscmdwNGd3M3AKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYu aAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2 aHNhMXdjCkBAIC0yNTIsMTIgKzI1Miw2IEBAIGJ1Zl9yZWxvY2F0ZSgKIAkJCQlCVUZfQkxPQ0tf WklQX0RJUlRZIG9yIEJVRl9CTE9DS19aSVBfUEFHRSAqLwogCWJ1Zl9wYWdlX3QqCWRwYWdlKQkv KiE8IGluL291dDogZGVzdGluYXRpb24gY29udHJvbCBibG9jayAqLwogCV9fYXR0cmlidXRlX18o KG5vbm51bGwpKTsKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJlc2l6ZXMgdGhlIGJ1ZmZlciBwb29sLiAq LwotVU5JVl9JTlRFUk4KLXZvaWQKLWJ1Zl9wb29sX3Jlc2l6ZSh2b2lkKTsKLS8qPT09PT09PT09 PT09PT09PT0qLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIGN1cnJlbnQgc2l6ZSBvZiBi dWZmZXIgYnVmX3Bvb2wgaW4gYnl0ZXMuCiBAcmV0dXJuCXNpemUgaW4gYnl0ZXMgKi8KQEAgLTEy ODYsNyArMTI4MCw3IEBAIHVsaW50CiBidWZfZ2V0X2ZyZWVfbGlzdF9sZW4odm9pZCk7CiAvKj09 PT09PT09PT09PT09PT09PT09PT09Ki8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBEZXRlcm1pbmUgaWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZlciBwb29sIHdh dGNoLgogQHJldHVybglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBvb2wgd2F0Y2gs IEZBTFNFIGlmIG5vdCAqLwogVU5JVl9JTlRFUk4KQEAgLTE4NTQsOCArMTg0OCwxMCBAQCBzdHJ1 Y3QgYnVmX3Bvb2xfc3RydWN0ewogCWZyYW1lcyBhbmQgYnVmX3BhZ2VfdCBkZXNjcmlwdG9ycyBv ZiBibG9ja3MgdGhhdCBleGlzdAogCWluIHRoZSBidWZmZXIgcG9vbCBvbmx5IGluIGNvbXByZXNz ZWQgZm9ybS4gKi8KIAkvKiBAeyAqLworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQlVGX0RFQlVHCiAJVVRfTElTVF9CQVNFX05PREVfVChidWZfcGFnZV90KQl6aXBfY2xl YW47CiAJCQkJCS8qITwgdW5tb2RpZmllZCBjb21wcmVzc2VkIHBhZ2VzICovCisjZW5kaWYgLyog VU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJVRyAqLwogCVVUX0xJU1RfQkFTRV9OT0RFX1QoYnVm X3BhZ2VfdCkgemlwX2ZyZWVbQlVGX0JVRERZX1NJWkVTXTsKIAkJCQkJLyohPCBidWRkeSBmcmVl IGxpc3RzICovCiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUv YnVmMGxydS5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBscnUuaAlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2aHNhMXdjCkBAIC04Niw2ICs4 Niw3IEBAIHZvaWQKIGJ1Zl9MUlVfaW52YWxpZGF0ZV90YWJsZXNwYWNlKAogLyo9PT09PT09PT09 PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJaWQpOwkvKiE8IGluOiBzcGFjZSBpZCAqLworI2lm IGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBJbnNlcnQgYSBjb21wcmVzc2VkIGJsb2NrIGludG8gYnVmX3Bvb2wtPnppcF9jbGVh biBpbiB0aGUgTFJVIG9yZGVyLiAqLwogVU5JVl9JTlRFUk4KQEAgLTkzLDYgKzk0LDcgQEAgdm9p ZAogYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKAogLyo9PT09PT09PT09PT09PT09PT09PT0qLwog CWJ1Zl9wYWdlX3QqCWJwYWdlKTsJLyohPCBpbjogcG9pbnRlciB0byB0aGUgYmxvY2sgaW4gcXVl c3Rpb24gKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovLyoqCiBUcnkgdG8gZnJlZSBhIGJsb2NrLiAgSWYgYnBhZ2UgaXMgYSBkZXNjcmlw dG9yIG9mIGEgY29tcHJlc3NlZC1vbmx5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9wYWdlL3BhZ2UwemlwLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHpp cC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVs cmdwNGd3M3AKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMJcmV2aWQ6bWFy a28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYxMjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpAQCAt MzkxNywxNyArMzkxNyw5IEBAIHBhZ2VfemlwX3dyaXRlX3RyeF9pZF9hbmRfcm9sbF9wdHIoCiAJ VU5JVl9NRU1fQVNTRVJUX1JXKHBhZ2VfemlwLT5kYXRhLCBwYWdlX3ppcF9nZXRfc2l6ZShwYWdl X3ppcCkpOwogfQogCi0jaWZkZWYgVU5JVl9aSVBfREVCVUcKLS8qKiBTZXQgdGhpcyB2YXJpYWJs ZSBpbiBhIGRlYnVnZ2VyIHRvIGRpc2FibGUgcGFnZV96aXBfY2xlYXJfcmVjKCkuCi1UaGUgb25s eSBvYnNlcnZhYmxlIGVmZmVjdCBzaG91bGQgYmUgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGR1ZSB0 bwotZGVsZXRlZCByZWNvcmRzIG5vdCBiZWluZyB6ZXJvZWQgb3V0LiAgSW4gcmFyZSBjYXNlcywg dGhlcmUgY2FuIGJlCi1wYWdlX3ppcF92YWxpZGF0ZSgpIGZhaWx1cmVzIG9uIHRoZSBub2RlX3B0 ciwgdHJ4X2lkIGFuZCByb2xsX3B0cgotY29sdW1ucyBpZiB0aGUgc3BhY2UgaXMgcmVhbGxvY2F0 ZWQgZm9yIGEgc21hbGxlciByZWNvcmQuICovCi1VTklWX0lOVEVSTiBpYm9vbAlwYWdlX3ppcF9j bGVhcl9yZWNfZGlzYWJsZTsKLSNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwotCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8vKioKLUNsZWFyIGFuIGFyZWEgb24gdGhlIHVuY29tcHJlc3NlZCBhbmQgY29tcHJl c3NlZCBwYWdlLCBpZiBwb3NzaWJsZS4gKi8KK0NsZWFyIGFuIGFyZWEgb24gdGhlIHVuY29tcHJl c3NlZCBhbmQgY29tcHJlc3NlZCBwYWdlLgorRG8gbm90IGNsZWFyIHRoZSBkYXRhIHBheWxvYWQs IGFzIHRoYXQgd291bGQgZ3JvdyB0aGUgbW9kaWZpY2F0aW9uIGxvZy4gKi8KIHN0YXRpYwogdm9p ZAogcGFnZV96aXBfY2xlYXJfcmVjKApAQCAtMzkzOSw2ICszOTMxLDkgQEAgcGFnZV96aXBfY2xl YXJfcmVjKAogewogCXVsaW50CWhlYXBfbm87CiAJcGFnZV90KglwYWdlCT0gcGFnZV9hbGlnbihy ZWMpOworCWJ5dGUqCXN0b3JhZ2U7CisJYnl0ZSoJZmllbGQ7CisJdWxpbnQJbGVuOwogCS8qIHBh Z2VfemlwX3ZhbGlkYXRlKCkgd291bGQgZmFpbCBoZXJlIGlmIGEgcmVjb3JkCiAJY29udGFpbmlu ZyBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zIGlzIGJlaW5nIGRlbGV0ZWQuICovCiAJdXRfYWQo cmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwpAQCAtMzk1NCw2MCArMzk0 OSw0NiBAQCBwYWdlX3ppcF9jbGVhcl9yZWMoCiAJVU5JVl9NRU1fQVNTRVJUX1JXKHJlYyAtIHJl Y19vZmZzX2V4dHJhX3NpemUob2Zmc2V0cyksCiAJCQkgICByZWNfb2Zmc19leHRyYV9zaXplKG9m ZnNldHMpKTsKIAotCWlmICgKLSNpZmRlZiBVTklWX1pJUF9ERUJVRwotCSAgICAhcGFnZV96aXBf Y2xlYXJfcmVjX2Rpc2FibGUgJiYKLSNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwotCSAgICBw YWdlX3ppcC0+bV9lbmQKLQkgICAgKyAxICsgKChoZWFwX25vIC0gMSkgPj0gNjQpLyogc2l6ZSBv ZiB0aGUgbG9nIGVudHJ5ICovCi0JICAgICsgcGFnZV96aXBfZ2V0X3RyYWlsZXJfbGVuKHBhZ2Vf emlwLAotCQkJCSAgICAgICBkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSwgTlVMTCkKLQkgICAg PCBwYWdlX3ppcF9nZXRfc2l6ZShwYWdlX3ppcCkpIHsKLQkJYnl0ZSoJZGF0YTsKLQotCQkvKiBD bGVhciBvbmx5IHRoZSBkYXRhIGJ5dGVzLCBiZWNhdXNlIHRoZSBhbGxvY2F0b3IgYW5kCi0JCXRo ZSBkZWNvbXByZXNzb3IgZGVwZW5kIG9uIHRoZSBleHRyYSBieXRlcy4gKi8KLQkJbWVtc2V0KHJl YywgMCwgcmVjX29mZnNfZGF0YV9zaXplKG9mZnNldHMpKTsKLQotCQlpZiAoIXBhZ2VfaXNfbGVh ZihwYWdlKSkgewotCQkJLyogQ2xlYXIgbm9kZV9wdHIgb24gdGhlIGNvbXByZXNzZWQgcGFnZS4g Ki8KLQkJCWJ5dGUqCXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQotCQkJCSsgcGFnZV96aXBfZ2V0 X3NpemUocGFnZV96aXApCi0JCQkJLSAocGFnZV9kaXJfZ2V0X25faGVhcChwYWdlKQotCQkJCSAg IC0gUEFHRV9IRUFQX05PX1VTRVJfTE9XKQotCQkJCSogUEFHRV9aSVBfRElSX1NMT1RfU0laRTsK LQotCQkJbWVtc2V0KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpICogUkVDX05PREVfUFRSX1NJWkUs Ci0JCQkgICAgICAgMCwgUkVDX05PREVfUFRSX1NJWkUpOwotCQl9IGVsc2UgaWYgKGRpY3RfaW5k ZXhfaXNfY2x1c3QoaW5kZXgpKSB7Ci0JCQkvKiBDbGVhciB0cnhfaWQgYW5kIHJvbGxfcHRyIG9u IHRoZSBjb21wcmVzc2VkIHBhZ2UuICovCi0JCQlieXRlKglzdG9yYWdlCT0gcGFnZV96aXAtPmRh dGEKLQkJCQkrIHBhZ2VfemlwX2dldF9zaXplKHBhZ2VfemlwKQotCQkJCS0gKHBhZ2VfZGlyX2dl dF9uX2hlYXAocGFnZSkKLQkJCQkgICAtIFBBR0VfSEVBUF9OT19VU0VSX0xPVykKLQkJCQkqIFBB R0VfWklQX0RJUl9TTE9UX1NJWkU7Ci0KLQkJCW1lbXNldChzdG9yYWdlIC0gKGhlYXBfbm8gLSAx KQotCQkJICAgICAgICogKERBVEFfVFJYX0lEX0xFTiArIERBVEFfUk9MTF9QVFJfTEVOKSwKLQkJ CSAgICAgICAwLCBEQVRBX1RSWF9JRF9MRU4gKyBEQVRBX1JPTExfUFRSX0xFTik7Ci0JCX0KLQot CQkvKiBMb2cgdGhhdCB0aGUgZGF0YSB3YXMgemVyb2VkIG91dC4gKi8KLQkJZGF0YSA9IHBhZ2Vf emlwLT5kYXRhICsgcGFnZV96aXAtPm1fZW5kOwotCQl1dF9hZCghKmRhdGEpOwotCQlpZiAoVU5J Vl9VTkxJS0VMWShoZWFwX25vIC0gMSA+PSA2NCkpIHsKLQkJCSpkYXRhKysgPSAoYnl0ZSkgKDB4 ODAgfCAoaGVhcF9ubyAtIDEpID4+IDcpOwotCQkJdXRfYWQoISpkYXRhKTsKLQkJfQotCQkqZGF0 YSsrID0gKGJ5dGUpICgoaGVhcF9ubyAtIDEpIDw8IDEgfCAxKTsKLQkJdXRfYWQoISpkYXRhKTsK LQkJdXRfYWQoKHVsaW50KSAoZGF0YSAtIHBhZ2VfemlwLT5kYXRhKQotCQkgICAgICA8IHBhZ2Vf emlwX2dldF9zaXplKHBhZ2VfemlwKSk7Ci0JCXBhZ2VfemlwLT5tX2VuZCA9IGRhdGEgLSBwYWdl X3ppcC0+ZGF0YTsKLQkJcGFnZV96aXAtPm1fbm9uZW1wdHkgPSBUUlVFOwotCX0gZWxzZSBpZiAo cGFnZV9pc19sZWFmKHBhZ2UpICYmIGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7Ci0JCS8q IERvIG5vdCBjbGVhciB0aGUgcmVjb3JkLCBiZWNhdXNlIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3Bh Y2UKLQkJdG8gbG9nIHRoZSBvcGVyYXRpb24uICovCisJaWYgKCFwYWdlX2lzX2xlYWYocGFnZSkp IHsKKwkJLyogQ2xlYXIgbm9kZV9wdHIuIE9uIHRoZSBjb21wcmVzc2VkIHBhZ2UsCisJCXRoZXJl IGlzIGFuIGFycmF5IG9mIG5vZGVfcHRyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUKKwkJZGVuc2Ug cGFnZSBkaXJlY3RvcnksIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgcGFnZS4gKi8KKwkJc3RvcmFn ZQk9IHBhZ2VfemlwLT5kYXRhCisJCQkrIHBhZ2VfemlwX2dldF9zaXplKHBhZ2VfemlwKQorCQkJ LSAocGFnZV9kaXJfZ2V0X25faGVhcChwYWdlKQorCQkJICAgLSBQQUdFX0hFQVBfTk9fVVNFUl9M T1cpCisJCQkqIFBBR0VfWklQX0RJUl9TTE9UX1NJWkU7CisJCXV0X2FkKGRpY3RfaW5kZXhfZ2V0 X25fdW5pcXVlX2luX3RyZWUoaW5kZXgpID09CisJCSAgICAgIHJlY19vZmZzX25fZmllbGRzKG9m ZnNldHMpIC0gMSk7CisJCWZpZWxkCT0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLAor CQkJCQkgICAgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cykgLSAxLAorCQkJCQkgICAgJmxlbik7 CisJCXV0X2FkKGxlbiA9PSBSRUNfTk9ERV9QVFJfU0laRSk7CisKKwkJdXRfYWQoIXJlY19vZmZz X2FueV9leHRlcm4ob2Zmc2V0cykpOworCQltZW1zZXQoZmllbGQsIDAsIFJFQ19OT0RFX1BUUl9T SVpFKTsKKwkJbWVtc2V0KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpICogUkVDX05PREVfUFRSX1NJ WkUsCisJCSAgICAgICAwLCBSRUNfTk9ERV9QVFJfU0laRSk7CisJfSBlbHNlIGlmIChkaWN0X2lu ZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQkvKiBDbGVhciB0cnhfaWQgYW5kIHJvbGxfcHRyLiBP biB0aGUgY29tcHJlc3NlZCBwYWdlLAorCQl0aGVyZSBpcyBhbiBhcnJheSBvZiB0aGVzZSBmaWVs ZHMgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZQorCQlkZW5zZSBwYWdlIGRpcmVjdG9yeSwgYXQgdGhl IHZlcnkgZW5kIG9mIHRoZSBwYWdlLiAqLworCQljb25zdCB1bGludAl0cnhfaWRfcG9zCisJCQk9 IGRpY3RfY29sX2dldF9jbHVzdF9wb3MoCisJCQlkaWN0X3RhYmxlX2dldF9zeXNfY29sKAorCQkJ CWluZGV4LT50YWJsZSwgREFUQV9UUlhfSUQpLCBpbmRleCk7CisJCXN0b3JhZ2UJPSBwYWdlX3pp cC0+ZGF0YQorCQkJKyBwYWdlX3ppcF9nZXRfc2l6ZShwYWdlX3ppcCkKKwkJCS0gKHBhZ2VfZGly X2dldF9uX2hlYXAocGFnZSkKKwkJCSAgIC0gUEFHRV9IRUFQX05PX1VTRVJfTE9XKQorCQkJKiBQ QUdFX1pJUF9ESVJfU0xPVF9TSVpFOworCQlmaWVsZAk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywg b2Zmc2V0cywgdHJ4X2lkX3BvcywgJmxlbik7CisJCXV0X2FkKGxlbiA9PSBEQVRBX1RSWF9JRF9M RU4pOworCisJCW1lbXNldChmaWVsZCwgMCwgREFUQV9UUlhfSURfTEVOICsgREFUQV9ST0xMX1BU Ul9MRU4pOworCQltZW1zZXQoc3RvcmFnZSAtIChoZWFwX25vIC0gMSkKKwkJICAgICAgICogKERB VEFfVFJYX0lEX0xFTiArIERBVEFfUk9MTF9QVFJfTEVOKSwKKwkJICAgICAgIDAsIERBVEFfVFJY X0lEX0xFTiArIERBVEFfUk9MTF9QVFJfTEVOKTsKIAogCQlpZiAocmVjX29mZnNfYW55X2V4dGVy bihvZmZzZXRzKSkgewogCQkJdWxpbnQJaTsKQEAgLTQwMTYsMTUgKzM5OTcsMTggQEAgcGFnZV96 aXBfY2xlYXJfcmVjKAogCQkJCS8qIENsZWFyIGFsbCBCTE9CIHBvaW50ZXJzIGluIG9yZGVyIHRv IG1ha2UKIAkJCQlwYWdlX3ppcF92YWxpZGF0ZSgpIHBhc3MuICovCiAJCQkJaWYgKHJlY19vZmZz X250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKLQkJCQkJdWxpbnQJbGVuOwotCQkJCQlieXRlKglm aWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxk KAogCQkJCQkJcmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCQkJdXRfYWQobGVuCisJCQkJCSAg ICAgID09IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwogCQkJCQltZW1zZXQoZmllbGQgKyBs ZW4KIAkJCQkJICAgICAgIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSwKIAkJCQkJICAgICAg IDAsIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwogCQkJCX0KIAkJCX0KIAkJfQorCX0gZWxz ZSB7CisJCXV0X2FkKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKIAl9CiAKICNpZmRl ZiBVTklWX1pJUF9ERUJVRwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcmVt L3JlbTByZWMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTEwNjE2MTIzMzIwLXZoamt2OHhyeDZoc2Exd2MKQEAgLTEsNiArMSw2IEBACiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFz ZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3Jh Y2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00MDgsNyArNDA4LDcgQEAg cmVjX2luaXRfb2Zmc2V0cygKIAkJZG8gewogCQkJdWxpbnQJbGVuOwogCQkJaWYgKFVOSVZfVU5M SUtFTFkoaSA9PSBuX25vZGVfcHRyX2ZpZWxkKSkgewotCQkJCWxlbiA9IG9mZnMgKz0gNDsKKwkJ CQlsZW4gPSBvZmZzICs9IFJFQ19OT0RFX1BUUl9TSVpFOwogCQkJCWdvdG8gcmVzb2x2ZWQ7CiAJ CQl9CiAKQEAgLTY0MCw3ICs2NDAsNyBAQCByZWNfZ2V0X29mZnNldHNfcmV2ZXJzZSgKIAlkbyB7 CiAJCXVsaW50CWxlbjsKIAkJaWYgKFVOSVZfVU5MSUtFTFkoaSA9PSBuX25vZGVfcHRyX2ZpZWxk KSkgewotCQkJbGVuID0gb2ZmcyArPSA0OworCQkJbGVuID0gb2ZmcyArPSBSRUNfTk9ERV9QVFJf U0laRTsKIAkJCWdvdG8gcmVzb2x2ZWQ7CiAJCX0KIApAQCAtMTEzMSw5ICsxMTMxLDkgQEAgcmVj X2NvbnZlcnRfZHR1cGxlX3RvX3JlY19jb21wKAogCiAJCWlmIChVTklWX1VOTElLRUxZKGkgPT0g bl9ub2RlX3B0cl9maWVsZCkpIHsKIAkJCXV0X2FkKGR0eXBlX2dldF9wcnR5cGUodHlwZSkgJiBE QVRBX05PVF9OVUxMKTsKLQkJCXV0X2FkKGxlbiA9PSA0KTsKKwkJCXV0X2FkKGxlbiA9PSBSRUNf Tk9ERV9QVFJfU0laRSk7CiAJCQltZW1jcHkoZW5kLCBkZmllbGRfZ2V0X2RhdGEoZmllbGQpLCBs ZW4pOwotCQkJZW5kICs9IDQ7CisJCQllbmQgKz0gUkVDX05PREVfUFRSX1NJWkU7CiAJCQlicmVh azsKIAkJfQogCgo= --===============1883662726== 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/mysql-trunk/ # testament_sha1: dde31bc9961de87171e3b3a74f7c9f9e8956c57e # timestamp: 2011-06-16 15:40:14 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/mysql-5.5/ # base_revision_id: marko.makela@stripped\ # 4zizcp5lrgp4gw3p # # Begin bundle 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 --===============1883662726==--