From: marko.makela Date: June 16 2011 12:34pm Subject: bzr commit into mysql-trunk branch (marko.makela:3212) List-Archive: http://lists.mysql.com/commits/139323 Message-Id: <201106161235.p5GCZ4sb027829@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0034925354==" --===============0034925354== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vaG9tZS9tYXJrby9pbm5vYmFzZS9kZXYvbXlzcWwyYS9teXNxbC10cnVuay8g YmFzZWQgb24gcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTI2MDktNHpp emNwNWxyZ3A0Z3czcAoKIDMyMTIgTWFya28gTcOka2Vsw6QJMjAxMS0wNi0xNiBbbWVyZ2VdCiAg ICAgIE1lcmdlIG15c3FsLTUuNSB0byBteXNxbC10cnVuay4KCiAgICBtb2RpZmllZDoKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1ZGR5LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9i dWYvYnVmMGJ1Zi5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBmbHUuYwogICAgICBz dG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2J1ZjBidWYuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvcmVtL3JlbTByZWMuYwo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYv YnVmMGJ1ZGR5LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWRkeS5jCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGJ1ZGR5LmMJcmV2aWQ6bWFya28ubWFrZWxh QG9yYWNsZS5jb20tMjAxMTA2MTYxMjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpAQCAtMzUyLDcgKzM1 Miw5IEBAIGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAlidWZfcGFnZV90KglicGFnZSwJLyoh PCBpbjogYmxvY2sgdG8gcmVsb2NhdGUgKi8KIAlidWZfcGFnZV90KglkcGFnZSkJLyohPCBpbjog ZnJlZSBibG9jayB0byByZWxvY2F0ZSB0byAqLwogeworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8 fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJYnVmX3BhZ2VfdCoJYjsKKyNlbmRpZiAvKiBVTklW X0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJYnVmX3Bvb2xfdCoJYnVmX3Bvb2wgPSBidWZf cG9vbF9mcm9tX2JwYWdlKGJwYWdlKTsKIAl1bGludAkJZm9sZCA9IGJ1Zl9wYWdlX2FkZHJlc3Nf Zm9sZChicGFnZS0+c3BhY2UsCiAJCQkJCQkgICAgIGJwYWdlLT5vZmZzZXQpOwpAQCAtMzg3LDcg KzM4OSw3IEBAIGJ1Zl9idWRkeV9yZWxvY2F0ZV9ibG9jaygKIAogCWJ1Zl9yZWxvY2F0ZShicGFn ZSwgZHBhZ2UpOwogCXV0X2QoYnBhZ2UtPnN0YXRlID0gQlVGX0JMT0NLX1pJUF9GUkVFKTsKLQor I2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJLyogcmVs b2NhdGUgYnVmX3Bvb2wtPnppcF9jbGVhbiAqLwogCWIgPSBVVF9MSVNUX0dFVF9QUkVWKGxpc3Qs IGRwYWdlKTsKIAlVVF9MSVNUX1JFTU9WRShsaXN0LCBidWZfcG9vbC0+emlwX2NsZWFuLCBkcGFn ZSk7CkBAIC0zOTcsNiArMzk5LDcgQEAgYnVmX2J1ZGR5X3JlbG9jYXRlX2Jsb2NrKAogCX0gZWxz ZSB7CiAJCVVUX0xJU1RfQUREX0ZJUlNUKGxpc3QsIGJ1Zl9wb29sLT56aXBfY2xlYW4sIGRwYWdl KTsKIAl9CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JVRl9ERUJVRyAqLwogCiAJVU5J Vl9NRU1fSU5WQUxJRChicGFnZSwgc2l6ZW9mICpicGFnZSk7CiAKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv YnVmL2J1ZjBidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MjYw OS00eml6Y3A1bHJncDRndzNwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2aHNh MXdjCkBAIC0xMTA3LDcwICsxMTA3LDYgQEAgYnVmX2NodW5rX25vdF9mcmVlZCgKIAlyZXR1cm4o TlVMTCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1DaGVja3MgdGhhdCBhbGwgYmxvY2tzIGlu IHRoZSBidWZmZXIgY2h1bmsgYXJlIGluIEJVRl9CTE9DS19OT1RfVVNFRCBzdGF0ZS4KLUByZXR1 cm4JVFJVRSBpZiBhbGwgZnJlZWQgKi8KLXN0YXRpYwotaWJvb2wKLWJ1Zl9jaHVua19hbGxfZnJl ZSgKLS8qPT09PT09PT09PT09PT09Ki8KLQljb25zdCBidWZfY2h1bmtfdCoJY2h1bmspCS8qITwg aW46IGNodW5rIGJlaW5nIGNoZWNrZWQgKi8KLXsKLQljb25zdCBidWZfYmxvY2tfdCoJYmxvY2s7 Ci0JdWxpbnQJCQlpOwotCi0JYmxvY2sgPSBjaHVuay0+YmxvY2tzOwotCi0JZm9yIChpID0gY2h1 bmstPnNpemU7IGktLTsgYmxvY2srKykgewotCi0JCWlmIChidWZfYmxvY2tfZ2V0X3N0YXRlKGJs b2NrKSAhPSBCVUZfQkxPQ0tfTk9UX1VTRUQpIHsKLQotCQkJcmV0dXJuKEZBTFNFKTsKLQkJfQot CX0KLQotCXJldHVybihUUlVFKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotRnJlZXMgYSBjaHVu ayBvZiBidWZmZXIgZnJhbWVzLiAqLwotc3RhdGljCi12b2lkCi1idWZfY2h1bmtfZnJlZSgKLS8q PT09PT09PT09PT0qLwotCWJ1Zl9wb29sX3QqCWJ1Zl9wb29sLAkvKiE8IGluOiBidWZmZXIgcG9v bCBpbnN0YW5jZSAqLwotCWJ1Zl9jaHVua190KgljaHVuaykJCS8qITwgb3V0OiBjaHVuayBvZiBi dWZmZXJzICovCi17Ci0JYnVmX2Jsb2NrX3QqCQlibG9jazsKLQljb25zdCBidWZfYmxvY2tfdCoJ YmxvY2tfZW5kOwotCi0JdXRfYWQoYnVmX3Bvb2xfbXV0ZXhfb3duKGJ1Zl9wb29sKSk7Ci0KLQli bG9ja19lbmQgPSBjaHVuay0+YmxvY2tzICsgY2h1bmstPnNpemU7Ci0KLQlmb3IgKGJsb2NrID0g Y2h1bmstPmJsb2NrczsgYmxvY2sgPCBibG9ja19lbmQ7IGJsb2NrKyspIHsKLQkJdXRfYShidWZf YmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfTk9UX1VTRUQpOwotCQl1dF9hKCFi bG9jay0+cGFnZS56aXAuZGF0YSk7Ci0KLQkJdXRfYWQoIWJsb2NrLT5wYWdlLmluX0xSVV9saXN0 KTsKLQkJdXRfYWQoIWJsb2NrLT5pbl91bnppcF9MUlVfbGlzdCk7Ci0JCXV0X2FkKCFibG9jay0+ cGFnZS5pbl9mbHVzaF9saXN0KTsKLQkJLyogUmVtb3ZlIHRoZSBibG9jayBmcm9tIHRoZSBmcmVl IGxpc3QuICovCi0JCXV0X2FkKGJsb2NrLT5wYWdlLmluX2ZyZWVfbGlzdCk7Ci0JCVVUX0xJU1Rf UkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT5mcmVlLCAoJmJsb2NrLT5wYWdlKSk7Ci0KLQkJLyogRnJl ZSB0aGUgbGF0Y2hlcy4gKi8KLQkJbXV0ZXhfZnJlZSgmYmxvY2stPm11dGV4KTsKLQkJcndfbG9j a19mcmVlKCZibG9jay0+bG9jayk7Ci0jaWZkZWYgVU5JVl9TWU5DX0RFQlVHCi0JCXJ3X2xvY2tf ZnJlZSgmYmxvY2stPmRlYnVnX2xhdGNoKTsKLSNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8K LQkJVU5JVl9NRU1fVU5ERVNDKGJsb2NrKTsKLQl9Ci0KLQlvc19tZW1fZnJlZV9sYXJnZShjaHVu ay0+bWVtLCBjaHVuay0+bWVtX3NpemUpOwotfQotCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBTZXQgYnVm ZmVyIHBvb2wgc2l6ZSB2YXJpYWJsZXMgYWZ0ZXIgcmVzaXppbmcgaXQgKi8KIHN0YXRpYwpAQCAt MTI5NCw4ICsxMjMwLDYgQEAgYnVmX3Bvb2xfZnJlZV9pbnN0YW5jZSgKIAljaHVuayA9IGNodW5r cyArIGJ1Zl9wb29sLT5uX2NodW5rczsKIAogCXdoaWxlICgtLWNodW5rID49IGNodW5rcykgewot CQkvKiBCeXBhc3MgdGhlIGNoZWNrcyBvZiBidWZfY2h1bmtfZnJlZSgpLCBzaW5jZSB0aGV5Ci0J CXdvdWxkIGZhaWwgYXQgc2h1dGRvd24uICovCiAJCW9zX21lbV9mcmVlX2xhcmdlKGNodW5rLT5t ZW0sIGNodW5rLT5tZW1fc2l6ZSk7CiAJfQogCkBAIC0xNTU3LDMwMyArMTQ5MSw2IEBAIGJ1Zl9y ZWxvY2F0ZSgKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2hyaW5rcyBhIGJ1ZmZlciBwb29sIGlu c3RhbmNlLiAqLwotc3RhdGljCi12b2lkCi1idWZfcG9vbF9zaHJpbmtfaW5zdGFuY2UoCi0vKj09 PT09PT09PT09PT09PT09PT09PSovCi0JYnVmX3Bvb2xfdCoJYnVmX3Bvb2wsCS8qITwgaW46IGJ1 ZmZlciBwb29sIGluc3RhbmNlICovCi0JdWxpbnQJCWNodW5rX3NpemUpCS8qITwgaW46IG51bWJl ciBvZiBwYWdlcyB0byByZW1vdmUgKi8KLXsKLQlidWZfY2h1bmtfdCoJY2h1bmtzOwotCWJ1Zl9j aHVua190KgljaHVuazsKLQl1bGludAkJbWF4X3NpemU7Ci0JdWxpbnQJCW1heF9mcmVlX3NpemU7 Ci0JYnVmX2NodW5rX3QqCW1heF9jaHVuazsKLQlidWZfY2h1bmtfdCoJbWF4X2ZyZWVfY2h1bms7 Ci0KLQl1dF9hZCghYnVmX3Bvb2xfbXV0ZXhfb3duKGJ1Zl9wb29sKSk7Ci0KLXRyeV9hZ2FpbjoK LQlidHJfc2VhcmNoX2Rpc2FibGUoKTsgLyogRW1wdHkgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXgg YWdhaW4gKi8KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0KLXNocmlua19hZ2Fp bjoKLQlpZiAoYnVmX3Bvb2wtPm5fY2h1bmtzIDw9IDEpIHsKLQotCQkvKiBDYW5ub3Qgc2hyaW5r IGlmIHRoZXJlIGlzIG9ubHkgb25lIGNodW5rICovCi0JCWdvdG8gZnVuY19kb25lOwotCX0KLQot CS8qIFNlYXJjaCBmb3IgdGhlIGxhcmdlc3QgZnJlZSBjaHVuawotCW5vdCBsYXJnZXIgdGhhbiB0 aGUgc2l6ZSBkaWZmZXJlbmNlICovCi0JY2h1bmtzID0gYnVmX3Bvb2wtPmNodW5rczsKLQljaHVu ayA9IGNodW5rcyArIGJ1Zl9wb29sLT5uX2NodW5rczsKLQltYXhfc2l6ZSA9IG1heF9mcmVlX3Np emUgPSAwOwotCW1heF9jaHVuayA9IG1heF9mcmVlX2NodW5rID0gTlVMTDsKLQotCXdoaWxlICgt LWNodW5rID49IGNodW5rcykgewotCQlpZiAoY2h1bmstPnNpemUgPD0gY2h1bmtfc2l6ZQotCQkg ICAgJiYgY2h1bmstPnNpemUgPiBtYXhfZnJlZV9zaXplKSB7Ci0JCQlpZiAoY2h1bmstPnNpemUg PiBtYXhfc2l6ZSkgewotCQkJCW1heF9zaXplID0gY2h1bmstPnNpemU7Ci0JCQkJbWF4X2NodW5r ID0gY2h1bms7Ci0JCQl9Ci0KLQkJCWlmIChidWZfY2h1bmtfYWxsX2ZyZWUoY2h1bmspKSB7Ci0J CQkJbWF4X2ZyZWVfc2l6ZSA9IGNodW5rLT5zaXplOwotCQkJCW1heF9mcmVlX2NodW5rID0gY2h1 bms7Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoIW1heF9mcmVlX3NpemUpIHsKLQotCQl1bGludAkJ ZGlydHkJPSAwOwotCQl1bGludAkJbm9uZnJlZQk9IDA7Ci0JCWJ1Zl9ibG9ja190KglibG9jazsK LQkJYnVmX2Jsb2NrX3QqCWJlbmQ7Ci0KLQkJLyogQ2Fubm90IHNocmluazogdHJ5IGFnYWluIGxh dGVyCi0JCShkbyBub3QgYXNzaWduIHNydl9idWZfcG9vbF9vbGRfc2l6ZSkgKi8KLQkJaWYgKCFt YXhfY2h1bmspIHsKLQotCQkJZ290byBmdW5jX2V4aXQ7Ci0JCX0KLQotCQlibG9jayA9IG1heF9j aHVuay0+YmxvY2tzOwotCQliZW5kID0gYmxvY2sgKyBtYXhfY2h1bmstPnNpemU7Ci0KLQkJLyog TW92ZSB0aGUgYmxvY2tzIG9mIGNodW5rIHRvIHRoZSBlbmQgb2YgdGhlCi0JCUxSVSBsaXN0IGFu ZCB0cnkgdG8gZmx1c2ggdGhlbS4gKi8KLQkJZm9yICg7IGJsb2NrIDwgYmVuZDsgYmxvY2srKykg ewotCQkJc3dpdGNoIChidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSkgewotCQkJY2FzZSBCVUZf QkxPQ0tfTk9UX1VTRUQ6Ci0JCQkJY29udGludWU7Ci0JCQljYXNlIEJVRl9CTE9DS19GSUxFX1BB R0U6Ci0JCQkJYnJlYWs7Ci0JCQlkZWZhdWx0OgotCQkJCW5vbmZyZWUrKzsKLQkJCQljb250aW51 ZTsKLQkJCX0KLQotCQkJbXV0ZXhfZW50ZXIoJmJsb2NrLT5tdXRleCk7Ci0JCQkvKiBUaGUgZm9s bG93aW5nIGNhbGxzIHdpbGwgdGVtcG9yYXJpbHkKLQkJCXJlbGVhc2UgYmxvY2stPm11dGV4IGFu ZCBidWZfcG9vbC0+bXV0ZXguCi0JCQlUaGVyZWZvcmUsIHdlIGhhdmUgdG8gYWx3YXlzIHJldHJ5 LAotCQkJZXZlbiBpZiAhZGlydHkgJiYgIW5vbmZyZWUuICovCi0KLQkJCWlmICghYnVmX2ZsdXNo X3JlYWR5X2Zvcl9yZXBsYWNlKCZibG9jay0+cGFnZSkpIHsKLQotCQkJCWJ1Zl9MUlVfbWFrZV9i bG9ja19vbGQoJmJsb2NrLT5wYWdlKTsKLQkJCQltdXRleF9leGl0KCZibG9jay0+bXV0ZXgpOwot CQkJCWRpcnR5Kys7Ci0JCQl9IGVsc2UgewotCQkJCW11dGV4X2V4aXQoJmJsb2NrLT5tdXRleCk7 Ci0JCQkJaWYgKGJ1Zl9MUlVfZnJlZV9ibG9jaygmYmxvY2stPnBhZ2UsIFRSVUUpCi0JCQkJICAg IT0gQlVGX0xSVV9GUkVFRCkgewotCQkJCQlub25mcmVlKys7Ci0JCQkJfQotCQkJfQotCQl9Ci0K LQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdChidWZfcG9vbCk7Ci0KLQkJLyogUmVxdWVzdCBmb3IgYSBm bHVzaCBvZiB0aGUgY2h1bmsgaWYgaXQgaGVscHMuCi0JCURvIG5vdCBmbHVzaCBpZiB0aGVyZSBh cmUgbm9uLWZyZWUgYmxvY2tzLCBzaW5jZQotCQlmbHVzaGluZyB3aWxsIG5vdCBtYWtlIHRoZSBj aHVuayBmcmVlYWJsZS4gKi8KLQkJaWYgKG5vbmZyZWUpIHsKLQkJCS8qIEF2b2lkIGJ1c3ktd2Fp dGluZy4gKi8KLQkJCW9zX3RocmVhZF9zbGVlcCgxMDAwMDApOwotCQl9IGVsc2UgaWYgKGRpcnR5 Ci0JCQkgICAmJiBidWZfZmx1c2hfTFJVKGJ1Zl9wb29sLCBkaXJ0eSkKLQkJCSAgICAgID09IFVM SU5UX1VOREVGSU5FRCkgewotCi0JCQlidWZfZmx1c2hfd2FpdF9iYXRjaF9lbmQoYnVmX3Bvb2ws IEJVRl9GTFVTSF9MUlUpOwotCQl9Ci0KLQkJZ290byB0cnlfYWdhaW47Ci0JfQotCi0JbWF4X3Np emUgPSBtYXhfZnJlZV9zaXplOwotCW1heF9jaHVuayA9IG1heF9mcmVlX2NodW5rOwotCi0JYnVm X3Bvb2wtPm9sZF9wb29sX3NpemUgPSBidWZfcG9vbC0+Y3Vycl9wb29sX3NpemU7Ci0KLQkvKiBS ZXdyaXRlIGJ1Zl9wb29sLT5jaHVua3MuICBDb3B5IGV2ZXJ5dGhpbmcgYnV0IG1heF9jaHVuay4g Ki8KLQljaHVua3MgPSBtZW1fYWxsb2MoKGJ1Zl9wb29sLT5uX2NodW5rcyAtIDEpICogc2l6ZW9m ICpjaHVua3MpOwotCW1lbWNweShjaHVua3MsIGJ1Zl9wb29sLT5jaHVua3MsCi0JICAgICAgICht YXhfY2h1bmsgLSBidWZfcG9vbC0+Y2h1bmtzKSAqIHNpemVvZiAqY2h1bmtzKTsKLQltZW1jcHko Y2h1bmtzICsgKG1heF9jaHVuayAtIGJ1Zl9wb29sLT5jaHVua3MpLAotCSAgICAgICBtYXhfY2h1 bmsgKyAxLAotCSAgICAgICBidWZfcG9vbC0+Y2h1bmtzICsgYnVmX3Bvb2wtPm5fY2h1bmtzCi0J ICAgICAgIC0gKG1heF9jaHVuayArIDEpKTsKLQl1dF9hKGJ1Zl9wb29sLT5jdXJyX3NpemUgPiBt YXhfY2h1bmstPnNpemUpOwotCWJ1Zl9wb29sLT5jdXJyX3NpemUgLT0gbWF4X2NodW5rLT5zaXpl OwotCWJ1Zl9wb29sLT5jdXJyX3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5jdXJyX3NpemUgKiBVTklW X1BBR0VfU0laRTsKLQljaHVua19zaXplIC09IG1heF9jaHVuay0+c2l6ZTsKLQlidWZfY2h1bmtf ZnJlZShidWZfcG9vbCwgbWF4X2NodW5rKTsKLQltZW1fZnJlZShidWZfcG9vbC0+Y2h1bmtzKTsK LQlidWZfcG9vbC0+Y2h1bmtzID0gY2h1bmtzOwotCWJ1Zl9wb29sLT5uX2NodW5rcy0tOwotCi0J LyogQWxsb3cgYSBzbGFjayBvZiBvbmUgbWVnYWJ5dGUuICovCi0JaWYgKGNodW5rX3NpemUgPiAx MDQ4NTc2IC8gVU5JVl9QQUdFX1NJWkUpIHsKLQotCQlnb3RvIHNocmlua19hZ2FpbjsKLQl9Ci0J Z290byBmdW5jX2V4aXQ7Ci0KLWZ1bmNfZG9uZToKLQlidWZfcG9vbC0+b2xkX3Bvb2xfc2l6ZSA9 IGJ1Zl9wb29sLT5jdXJyX3Bvb2xfc2l6ZTsKLWZ1bmNfZXhpdDoKLQlidWZfcG9vbF9tdXRleF9l eGl0KGJ1Zl9wb29sKTsKLQlidHJfc2VhcmNoX2VuYWJsZSgpOwotfQotCi0vKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCi1TaHJpbmtzIHRoZSBidWZmZXIgcG9vbC4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xf c2hyaW5rKAotLyo9PT09PT09PT09PT0qLwotCXVsaW50CWNodW5rX3NpemUpCS8qITwgaW46IG51 bWJlciBvZiBwYWdlcyB0byByZW1vdmUgKi8KLXsKLQl1bGludAlpOwotCi0JZm9yIChpID0gMDsg aSA8IHNydl9idWZfcG9vbF9pbnN0YW5jZXM7IGkrKykgewotCQlidWZfcG9vbF90KglidWZfcG9v bDsKLQkJdWxpbnQJCWluc3RhbmNlX2NodW5rX3NpemU7Ci0KLQkJaW5zdGFuY2VfY2h1bmtfc2l6 ZSA9IGNodW5rX3NpemUgLyBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzOwotCQlidWZfcG9vbCA9IGJ1 Zl9wb29sX2Zyb21fYXJyYXkoaSk7Ci0JCWJ1Zl9wb29sX3Nocmlua19pbnN0YW5jZShidWZfcG9v bCwgaW5zdGFuY2VfY2h1bmtfc2l6ZSk7Ci0JfQotCi0JYnVmX3Bvb2xfc2V0X3NpemVzKCk7Ci19 Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKLVJlYnVpbGQgYnVmX3Bvb2wtPnBhZ2VfaGFzaCBmb3IgYSBi dWZmZXIgcG9vbCBpbnN0YW5jZS4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xfcGFnZV9oYXNo X3JlYnVpbGRfaW5zdGFuY2UoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K LQlidWZfcG9vbF90KglidWZfcG9vbCkJCS8qITwgaW46IGJ1ZmZlciBwb29sIGluc3RhbmNlICov Ci17Ci0JdWxpbnQJCWk7Ci0JYnVmX3BhZ2VfdCoJYjsKLQlidWZfY2h1bmtfdCoJY2h1bms7Ci0J dWxpbnQJCW5fY2h1bmtzOwotCWhhc2hfdGFibGVfdCoJemlwX2hhc2g7Ci0JaGFzaF90YWJsZV90 KglwYWdlX2hhc2g7Ci0KLQlidWZfcG9vbF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0KLQloYXNo X2xvY2tfeF9hbGwoYnVmX3Bvb2wtPnBhZ2VfaGFzaCk7Ci0KLQkvKiBGcmVlLCBjcmVhdGUsIGFu ZCBwb3B1bGF0ZSB0aGUgaGFzaCB0YWJsZS4gKi8KLQloYV9jbGVhcihidWZfcG9vbC0+cGFnZV9o YXNoKTsKLQotCS8qRklYTUU6IFRoaXMgaXMgYnJva2VuLiBXaGVuIHdlIGZyZWUgdGhlIGhhc2hf dGFibGUgd2UKLQlmcmVlIHRoZSBzeW5jX29iaiBhcnJheSBhcyB3ZWxsLiBXZSBlaXRoZXIgaGF2 ZSB0byBoYXZlIGEKLQltZWNoYW5pc20gd2hlcmUgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vYm9k eSB3aWxsIHRyeSB0bwotCWFjcXVpcmUgYW55IG9mIHRoZSBwYWdlX2hhc2ggbG9ja3Mgb3IgdGhp bmsgc29tZSBvdGhlcgotCXdheSB0byBpbXBsZW1lbnQgdGhpcy4gSXQgZG9lc24ndCBtYXR0ZXIg YXMgb2Ygbm93IGJlY2F1c2UKLQlidWZmZXIgcG9vbCByZXNpemUgY29kZSBpcyBub3QgdXNlZCBj dXJyZW50bHkuICovCi0JaGFzaF90YWJsZV9mcmVlKGJ1Zl9wb29sLT5wYWdlX2hhc2gpOwotCi0J dXRfYShzcnZfbl9wYWdlX2hhc2hfbG9ja3MgIT0gMCk7Ci0JdXRfYShzcnZfbl9wYWdlX2hhc2hf bG9ja3MgPD0gTUFYX1BBR0VfSEFTSF9MT0NLUyk7Ci0KLQlidWZfcG9vbC0+cGFnZV9oYXNoID0g cGFnZV9oYXNoCi0JCQkgICAgPSBoYV9jcmVhdGUoMiAqIGJ1Zl9wb29sLT5jdXJyX3NpemUsCi0J CQkJCXNydl9uX3BhZ2VfaGFzaF9sb2NrcywKLQkJCQkJTUVNX0hFQVBfRk9SX1BBR0VfSEFTSCwK LQkJCQkJU1lOQ19CVUZfUEFHRV9IQVNIKTsKLQotCXppcF9oYXNoID0gaGFzaF9jcmVhdGUoMiAq IGJ1Zl9wb29sLT5jdXJyX3NpemUpOwotCi0JSEFTSF9NSUdSQVRFKGJ1Zl9wb29sLT56aXBfaGFz aCwgemlwX2hhc2gsIGJ1Zl9wYWdlX3QsIGhhc2gsCi0JCSAgICAgQlVGX1BPT0xfWklQX0ZPTERf QlBBR0UpOwotCi0JaGFzaF90YWJsZV9mcmVlKGJ1Zl9wb29sLT56aXBfaGFzaCk7Ci0JYnVmX3Bv b2wtPnppcF9oYXNoID0gemlwX2hhc2g7Ci0KLQkvKiBJbnNlcnQgdGhlIHVuY29tcHJlc3NlZCBm aWxlIHBhZ2VzIHRvIGJ1Zl9wb29sLT5wYWdlX2hhc2guICovCi0KLQljaHVuayA9IGJ1Zl9wb29s LT5jaHVua3M7Ci0Jbl9jaHVua3MgPSBidWZfcG9vbC0+bl9jaHVua3M7Ci0KLQlmb3IgKGkgPSAw OyBpIDwgbl9jaHVua3M7IGkrKywgY2h1bmsrKykgewotCQl1bGludAkJajsKLQkJYnVmX2Jsb2Nr X3QqCWJsb2NrID0gY2h1bmstPmJsb2NrczsKLQotCQlmb3IgKGogPSAwOyBqIDwgY2h1bmstPnNp emU7IGorKywgYmxvY2srKykgewotCQkJaWYgKGJ1Zl9ibG9ja19nZXRfc3RhdGUoYmxvY2spCi0J CQkgICAgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSkgewotCQkJCXV0X2FkKCFibG9jay0+cGFnZS5p bl96aXBfaGFzaCk7Ci0JCQkJdXRfYWQoYmxvY2stPnBhZ2UuaW5fcGFnZV9oYXNoKTsKLQotCQkJ CUhBU0hfSU5TRVJUKGJ1Zl9wYWdlX3QsIGhhc2gsIHBhZ2VfaGFzaCwKLQkJCQkJICAgIGJ1Zl9w YWdlX2FkZHJlc3NfZm9sZCgKLQkJCQkJCSAgICBibG9jay0+cGFnZS5zcGFjZSwKLQkJCQkJCSAg ICBibG9jay0+cGFnZS5vZmZzZXQpLAotCQkJCQkgICAgJmJsb2NrLT5wYWdlKTsKLQkJCX0KLQkJ fQotCX0KLQotCS8qIEluc2VydCB0aGUgY29tcHJlc3NlZC1vbmx5IHBhZ2VzIHRvIGJ1Zl9wb29s LT5wYWdlX2hhc2guCi0JQWxsIHN1Y2ggYmxvY2tzIGFyZSBlaXRoZXIgaW4gYnVmX3Bvb2wtPnpp cF9jbGVhbiBvcgotCWluIGJ1Zl9wb29sLT5mbHVzaF9saXN0LiAqLwotCi0JZm9yIChiID0gVVRf TElTVF9HRVRfRklSU1QoYnVmX3Bvb2wtPnppcF9jbGVhbik7IGI7Ci0JICAgICBiID0gVVRfTElT VF9HRVRfTkVYVChsaXN0LCBiKSkgewotCQl1dF9hKGJ1Zl9wYWdlX2dldF9zdGF0ZShiKSA9PSBC VUZfQkxPQ0tfWklQX1BBR0UpOwotCQl1dF9hZCghYi0+aW5fZmx1c2hfbGlzdCk7Ci0JCXV0X2Fk KGItPmluX0xSVV9saXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFnZV9oYXNoKTsKLQkJdXRfYWQoIWIt PmluX3ppcF9oYXNoKTsKLQotCQlIQVNIX0lOU0VSVChidWZfcGFnZV90LCBoYXNoLCBwYWdlX2hh c2gsCi0JCQkgICAgYnVmX3BhZ2VfYWRkcmVzc19mb2xkKGItPnNwYWNlLCBiLT5vZmZzZXQpLCBi KTsKLQl9Ci0KLQlidWZfZmx1c2hfbGlzdF9tdXRleF9lbnRlcihidWZfcG9vbCk7Ci0JZm9yIChi ID0gVVRfTElTVF9HRVRfRklSU1QoYnVmX3Bvb2wtPmZsdXNoX2xpc3QpOyBiOwotCSAgICAgYiA9 IFVUX0xJU1RfR0VUX05FWFQobGlzdCwgYikpIHsKLQkJdXRfYWQoYi0+aW5fZmx1c2hfbGlzdCk7 Ci0JCXV0X2FkKGItPmluX0xSVV9saXN0KTsKLQkJdXRfYWQoYi0+aW5fcGFnZV9oYXNoKTsKLQkJ dXRfYWQoIWItPmluX3ppcF9oYXNoKTsKLQotCQlzd2l0Y2ggKGJ1Zl9wYWdlX2dldF9zdGF0ZShi KSkgewotCQljYXNlIEJVRl9CTE9DS19aSVBfRElSVFk6Ci0JCQlIQVNIX0lOU0VSVChidWZfcGFn ZV90LCBoYXNoLCBwYWdlX2hhc2gsCi0JCQkJICAgIGJ1Zl9wYWdlX2FkZHJlc3NfZm9sZChiLT5z cGFjZSwKLQkJCQkJCQkgIGItPm9mZnNldCksIGIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgQlVGX0JM T0NLX0ZJTEVfUEFHRToKLQkJCS8qIHVuY29tcHJlc3NlZCBwYWdlICovCi0JCQlicmVhazsKLQkJ Y2FzZSBCVUZfQkxPQ0tfWklQX0ZSRUU6Ci0JCWNhc2UgQlVGX0JMT0NLX1pJUF9QQUdFOgotCQlj YXNlIEJVRl9CTE9DS19OT1RfVVNFRDoKLQkJY2FzZSBCVUZfQkxPQ0tfUkVBRFlfRk9SX1VTRToK LQkJY2FzZSBCVUZfQkxPQ0tfTUVNT1JZOgotCQljYXNlIEJVRl9CTE9DS19SRU1PVkVfSEFTSDoK LQkJCXV0X2Vycm9yOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KLQloYXNoX3VubG9ja194X2FsbChi dWZfcG9vbC0+cGFnZV9oYXNoKTsKLQlidWZfZmx1c2hfbGlzdF9tdXRleF9leGl0KGJ1Zl9wb29s KTsKLQlidWZfcG9vbF9tdXRleF9leGl0KGJ1Zl9wb29sKTsKLX0KLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBE ZXRlcm1pbmUgaWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZlciBwb29sIHdhdGNo LgogQHJldHVybglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBvb2wgd2F0Y2gsIEZB TFNFIGlmIG5vdCAqLwogVU5JVl9JTlRFUk4KQEAgLTIwMDQsMTIzICsxNjQxLDYgQEAgcGFnZV9m b3VuZDoKIAlyZXR1cm4oTlVMTCk7CiB9CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLVJlYnVpbGQgYnVm X3Bvb2wtPnBhZ2VfaGFzaC4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xfcGFnZV9oYXNoX3Jl YnVpbGQodm9pZCkKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi17Ci0JdWxpbnQg ICBpOwotCi0JZm9yIChpID0gMDsgaSA8IHNydl9idWZfcG9vbF9pbnN0YW5jZXM7IGkrKykgewot CQlidWZfcG9vbF9wYWdlX2hhc2hfcmVidWlsZF9pbnN0YW5jZShidWZfcG9vbF9mcm9tX2FycmF5 KGkpKTsKLQl9Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKLUluY3JlYXNlIHRoZSBidWZmZXIgcG9v bCBzaXplIG9mIG9uZSBidWZmZXIgcG9vbCBpbnN0YW5jZS4gKi8KLXN0YXRpYwotdm9pZAotYnVm X3Bvb2xfaW5jcmVhc2VfaW5zdGFuY2UoCi0vKj09PT09PT09PT09PT09PT09PT09PT09Ki8KLQli dWZfcG9vbF90KglidWZfcG9vbCwJLyohPCBpbjogYnVmZmVyIHBvb2wgaW5zdGFuZSAqLwotCXVs aW50CQljaGFuZ2Vfc2l6ZSkJLyohPCBpbjogbmV3IHNpemUgb2YgdGhlIHBvb2wgKi8KLXsKLQli dWZfY2h1bmtfdCoJY2h1bmtzOwotCWJ1Zl9jaHVua190KgljaHVuazsKLQotCWJ1Zl9wb29sX211 dGV4X2VudGVyKGJ1Zl9wb29sKTsKLQljaHVua3MgPSBtZW1fYWxsb2MoKGJ1Zl9wb29sLT5uX2No dW5rcyArIDEpICogc2l6ZW9mICpjaHVua3MpOwotCi0JbWVtY3B5KGNodW5rcywgYnVmX3Bvb2wt PmNodW5rcywgYnVmX3Bvb2wtPm5fY2h1bmtzICogc2l6ZW9mICpjaHVua3MpOwotCi0JY2h1bmsg PSAmY2h1bmtzW2J1Zl9wb29sLT5uX2NodW5rc107Ci0KLQlpZiAoIWJ1Zl9jaHVua19pbml0KGJ1 Zl9wb29sLCBjaHVuaywgY2hhbmdlX3NpemUpKSB7Ci0JCW1lbV9mcmVlKGNodW5rcyk7Ci0JfSBl bHNlIHsKLQkJYnVmX3Bvb2wtPm9sZF9wb29sX3NpemUgPSBidWZfcG9vbC0+Y3Vycl9wb29sX3Np emU7Ci0JCWJ1Zl9wb29sLT5jdXJyX3NpemUgKz0gY2h1bmstPnNpemU7Ci0JCWJ1Zl9wb29sLT5j dXJyX3Bvb2xfc2l6ZSA9IGJ1Zl9wb29sLT5jdXJyX3NpemUgKiBVTklWX1BBR0VfU0laRTsKLQkJ bWVtX2ZyZWUoYnVmX3Bvb2wtPmNodW5rcyk7Ci0JCWJ1Zl9wb29sLT5jaHVua3MgPSBjaHVua3M7 Ci0JCWJ1Zl9wb29sLT5uX2NodW5rcysrOwotCX0KLQotCWJ1Zl9wb29sX211dGV4X2V4aXQoYnVm X3Bvb2wpOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1JbmNyZWFzZSB0aGUgYnVmZmVyIHBvb2wg c2l6ZS4gKi8KLXN0YXRpYwotdm9pZAotYnVmX3Bvb2xfaW5jcmVhc2UoCi0vKj09PT09PT09PT09 PT09Ki8KLQl1bGludCAgIGNoYW5nZV9zaXplKQotewotCXVsaW50ICAgaTsKLQotCWZvciAoaSA9 IDA7IGkgPCBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzOyBpKyspIHsKLQkJYnVmX3Bvb2xfaW5jcmVh c2VfaW5zdGFuY2UoCi0JCQlidWZfcG9vbF9mcm9tX2FycmF5KGkpLAotCQkJY2hhbmdlX3NpemUg LyBzcnZfYnVmX3Bvb2xfaW5zdGFuY2VzKTsKLQl9Ci0KLQlidWZfcG9vbF9zZXRfc2l6ZXMoKTsK LX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgotUmVzaXplcyB0aGUgYnVmZmVyIHBvb2wuICovCi1VTklW X0lOVEVSTgotdm9pZAotYnVmX3Bvb2xfcmVzaXplKHZvaWQpCi0vKj09PT09PT09PT09PT09PT09 Ki8KLXsKLQl1bGludAljaGFuZ2Vfc2l6ZTsKLQl1bGludAltaW5fY2hhbmdlX3NpemUgPSAxMDQ4 NTc2ICogc3J2X2J1Zl9wb29sX2luc3RhbmNlczsKLQotCWJ1Zl9wb29sX211dGV4X2VudGVyX2Fs bCgpOwotCi0gIAlpZiAoc3J2X2J1Zl9wb29sX29sZF9zaXplID09IHNydl9idWZfcG9vbF9zaXpl KSB7Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQotICAJCXJldHVybjsKLQotICAJ fSBlbHNlIGlmIChzcnZfYnVmX3Bvb2xfY3Vycl9zaXplICsgbWluX2NoYW5nZV9zaXplCi0JCSAg ID4gc3J2X2J1Zl9wb29sX3NpemUpIHsKLQotCQljaGFuZ2Vfc2l6ZSA9IChzcnZfYnVmX3Bvb2xf Y3Vycl9zaXplIC0gc3J2X2J1Zl9wb29sX3NpemUpCi0JCQkgICAgLyBVTklWX1BBR0VfU0laRTsK LQotCQlidWZfcG9vbF9tdXRleF9leGl0X2FsbCgpOwotCi0gIAkJLyogRGlzYWJsZSBhZGFwdGl2 ZSBoYXNoIGluZGV4ZXMgYW5kIGVtcHR5IHRoZSBpbmRleAotICAJCWluIG9yZGVyIHRvIGZyZWUg dXAgbWVtb3J5IGluIHRoZSBidWZmZXIgcG9vbCBjaHVua3MuICovCi0JCWJ1Zl9wb29sX3Nocmlu ayhjaGFuZ2Vfc2l6ZSk7Ci0KLQl9IGVsc2UgaWYgKHNydl9idWZfcG9vbF9jdXJyX3NpemUgKyBt aW5fY2hhbmdlX3NpemUKLQkJICAgPCBzcnZfYnVmX3Bvb2xfc2l6ZSkgewotCi0gIAkJLyogRW5s YXJnZSB0aGUgYnVmZmVyIHBvb2wgYnkgYXQgbGVhc3Qgb25lIG1lZ2FieXRlICovCi0KLQkJY2hh bmdlX3NpemUgPSBzcnZfYnVmX3Bvb2xfc2l6ZSAtIHNydl9idWZfcG9vbF9jdXJyX3NpemU7Ci0K LQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQotCQlidWZfcG9vbF9pbmNyZWFzZShjaGFu Z2Vfc2l6ZSk7Ci0JfSBlbHNlIHsKLQkJc3J2X2J1Zl9wb29sX3NpemUgPSBzcnZfYnVmX3Bvb2xf b2xkX3NpemU7Ci0KLQkJYnVmX3Bvb2xfbXV0ZXhfZXhpdF9hbGwoKTsKLQotCQlyZXR1cm47Ci0J fQotCi0gIAlidWZfcG9vbF9wYWdlX2hhc2hfcmVidWlsZCgpOwotfQotCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK IFJlbW92ZSB0aGUgc2VudGluZWwgYmxvY2sgZm9yIHRoZSB3YXRjaCBiZWZvcmUgcmVwbGFjaW5n IGl0IHdpdGggYSByZWFsIGJsb2NrLgogYnVmX3BhZ2Vfd2F0Y2hfY2xlYXIoKSBvciBidWZfcGFn ZV93YXRjaF9vY2N1cnJlZCgpIHdpbGwgbm90aWNlIHRoYXQKQEAgLTMxMzIsOCArMjY1MiwxMCBA QCB3YWl0X3VudGlsX3VuZml4ZWQ6CiAKIAkJaWYgKGJ1Zl9wYWdlX2dldF9zdGF0ZSgmYmxvY2st PnBhZ2UpCiAJCSAgICA9PSBCVUZfQkxPQ0tfWklQX1BBR0UpIHsKKyNpZiBkZWZpbmVkIFVOSVZf REVCVUcgfHwgZGVmaW5lZCBVTklWX0JVRl9ERUJVRwogCQkJVVRfTElTVF9SRU1PVkUobGlzdCwg YnVmX3Bvb2wtPnppcF9jbGVhbiwKIAkJCQkgICAgICAgJmJsb2NrLT5wYWdlKTsKKyNlbmRpZiAv KiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJCQl1dF9hZCghYmxvY2stPnBhZ2Uu aW5fZmx1c2hfbGlzdCk7CiAJCX0gZWxzZSB7CiAJCQkvKiBSZWxvY2F0ZSBidWZfcG9vbC0+Zmx1 c2hfbGlzdC4gKi8KQEAgLTQwMTAsNyArMzUzMiw5IEBAIGVycl9leGl0OgogCiAJCS8qIFRoZSBi bG9jayBtdXN0IGJlIHB1dCB0byB0aGUgTFJVIGxpc3QsIHRvIHRoZSBvbGQgYmxvY2tzICovCiAJ CWJ1Zl9MUlVfYWRkX2Jsb2NrKGJwYWdlLCBUUlVFLyogdG8gb2xkIGJsb2NrcyAqLyk7CisjaWYg ZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVCVUcKIAkJYnVmX0xSVV9p bnNlcnRfemlwX2NsZWFuKGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVG X0RFQlVHICovCiAKIAkJYnVmX3BhZ2Vfc2V0X2lvX2ZpeChicGFnZSwgQlVGX0lPX1JFQUQpOwog Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA2MTYwOTI2MDktNHppemNwNWxyZ3A0Z3czcAorKysgYi9zdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYx MjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTUsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmls aWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTM5LDcgKzUzOSw5IEBA IGJ1Zl9mbHVzaF9yZW1vdmUoCiAJY2FzZSBCVUZfQkxPQ0tfWklQX0RJUlRZOgogCQlidWZfcGFn ZV9zZXRfc3RhdGUoYnBhZ2UsIEJVRl9CTE9DS19aSVBfUEFHRSk7CiAJCVVUX0xJU1RfUkVNT1ZF KGxpc3QsIGJ1Zl9wb29sLT5mbHVzaF9saXN0LCBicGFnZSk7CisjaWYgZGVmaW5lZCBVTklWX0RF QlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVCVUcKIAkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFu KGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAJCWJy ZWFrOwogCWNhc2UgQlVGX0JMT0NLX0ZJTEVfUEFHRToKIAkJVVRfTElTVF9SRU1PVkUobGlzdCwg YnVmX3Bvb2wtPmZsdXNoX2xpc3QsIGJwYWdlKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBs cnUuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MjYwOS00eml6Y3A1 bHJncDRndzNwCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBscnUuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2aHNhMXdjCkBAIC01 NDEsNiArNTQxLDcgQEAgYnVmX0xSVV9pbnZhbGlkYXRlX3RhYmxlc3BhY2UoCiAJfQogfQogCisj aWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CVUZfREVCVUcKIC8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKIEluc2VydCBhIGNvbXByZXNzZWQgYmxvY2sgaW50byBidWZfcG9vbC0+emlwX2Ns ZWFuIGluIHRoZSBMUlUgb3JkZXIuICovCiBVTklWX0lOVEVSTgpAQCAtNTczLDYgKzU3NCw3IEBA IGJ1Zl9MUlVfaW5zZXJ0X3ppcF9jbGVhbigKIAkJVVRfTElTVF9BRERfRklSU1QobGlzdCwgYnVm X3Bvb2wtPnppcF9jbGVhbiwgYnBhZ2UpOwogCX0KIH0KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8 IFVOSVZfQlVGX0RFQlVHICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBUcnkgdG8gZnJlZSBhbiB1bmNv bXByZXNzZWQgcGFnZSBvZiBhIGNvbXByZXNzZWQgYmxvY2sgZnJvbSB0aGUgdW56aXAKQEAgLTE2 NzAsNyArMTY3Miw5IEBAIGZ1bmNfZXhpdDoKIAkJfQogCiAJCWlmIChiLT5zdGF0ZSA9PSBCVUZf QkxPQ0tfWklQX1BBR0UpIHsKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklW X0JVRl9ERUJVRwogCQkJYnVmX0xSVV9pbnNlcnRfemlwX2NsZWFuKGIpOworI2VuZGlmIC8qIFVO SVZfREVCVUcgfHwgVU5JVl9CVUZfREVCVUcgKi8KIAkJfSBlbHNlIHsKIAkJCS8qIFJlbG9jYXRl IG9uIGJ1Zl9wb29sLT5mbHVzaF9saXN0LiAqLwogCQkJYnVmX2ZsdXNoX3JlbG9jYXRlX29uX2Zs dXNoX2xpc3QoYnBhZ2UsIGIpOwpAQCAtMTk2MCw3ICsxOTY0LDkgQEAgYnVmX0xSVV9ibG9ja19y ZW1vdmVfaGFzaGVkX3BhZ2UoCiAJCXV0X2EoYnBhZ2UtPnppcC5kYXRhKTsKIAkJdXRfYShidWZf cGFnZV9nZXRfemlwX3NpemUoYnBhZ2UpKTsKIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBk ZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAJCVVUX0xJU1RfUkVNT1ZFKGxpc3QsIGJ1Zl9wb29sLT56 aXBfY2xlYW4sIGJwYWdlKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVH ICovCiAKIAkJbXV0ZXhfZXhpdCgmYnVmX3Bvb2wtPnppcF9tdXRleCk7CiAJCXJ3X2xvY2tfeF91 bmxvY2soaGFzaF9sb2NrKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnVmMGJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5o CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdw NGd3M3AKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2aHNhMXdjCkBAIC0y NTIsMTIgKzI1Miw2IEBAIGJ1Zl9yZWxvY2F0ZSgKIAkJCQlCVUZfQkxPQ0tfWklQX0RJUlRZIG9y IEJVRl9CTE9DS19aSVBfUEFHRSAqLwogCWJ1Zl9wYWdlX3QqCWRwYWdlKQkvKiE8IGluL291dDog ZGVzdGluYXRpb24gY29udHJvbCBibG9jayAqLwogCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsK LS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKLVJlc2l6ZXMgdGhlIGJ1ZmZlciBwb29sLiAqLwotVU5JVl9JTlRF Uk4KLXZvaWQKLWJ1Zl9wb29sX3Jlc2l6ZSh2b2lkKTsKLS8qPT09PT09PT09PT09PT09PT0qLwog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIEdldHMgdGhlIGN1cnJlbnQgc2l6ZSBvZiBidWZmZXIgYnVmX3Bv b2wgaW4gYnl0ZXMuCiBAcmV0dXJuCXNpemUgaW4gYnl0ZXMgKi8KQEAgLTEyODYsNyArMTI4MCw3 IEBAIHVsaW50CiBidWZfZ2V0X2ZyZWVfbGlzdF9sZW4odm9pZCk7CiAvKj09PT09PT09PT09PT09 PT09PT09PT09Ki8KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmUg aWYgYSBibG9jayBpcyBhIHNlbnRpbmVsIGZvciBhIGJ1ZmZlciBwb29sIHdhdGNoLgogQHJldHVy bglUUlVFIGlmIGEgc2VudGluZWwgZm9yIGEgYnVmZmVyIHBvb2wgd2F0Y2gsIEZBTFNFIGlmIG5v dCAqLwogVU5JVl9JTlRFUk4KQEAgLTE4NTQsOCArMTg0OCwxMCBAQCBzdHJ1Y3QgYnVmX3Bvb2xf c3RydWN0ewogCWZyYW1lcyBhbmQgYnVmX3BhZ2VfdCBkZXNjcmlwdG9ycyBvZiBibG9ja3MgdGhh dCBleGlzdAogCWluIHRoZSBidWZmZXIgcG9vbCBvbmx5IGluIGNvbXByZXNzZWQgZm9ybS4gKi8K IAkvKiBAeyAqLworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RF QlVHCiAJVVRfTElTVF9CQVNFX05PREVfVChidWZfcGFnZV90KQl6aXBfY2xlYW47CiAJCQkJCS8q ITwgdW5tb2RpZmllZCBjb21wcmVzc2VkIHBhZ2VzICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyB8 fCBVTklWX0JVRl9ERUJVRyAqLwogCVVUX0xJU1RfQkFTRV9OT0RFX1QoYnVmX3BhZ2VfdCkgemlw X2ZyZWVbQlVGX0JVRERZX1NJWkVTXTsKIAkJCQkJLyohPCBidWRkeSBmcmVlIGxpc3RzICovCiAK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGxydS5oCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBscnUuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDExMDYxNjEyMzMyMC12aGprdjh4cng2aHNhMXdjCkBAIC04Niw2ICs4Niw3IEBAIHZvaWQK IGJ1Zl9MUlVfaW52YWxpZGF0ZV90YWJsZXNwYWNlKAogLyo9PT09PT09PT09PT09PT09PT09PT09 PT09PSovCiAJdWxpbnQJaWQpOwkvKiE8IGluOiBzcGFjZSBpZCAqLworI2lmIGRlZmluZWQgVU5J Vl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQlVGX0RFQlVHCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBJbnNl cnQgYSBjb21wcmVzc2VkIGJsb2NrIGludG8gYnVmX3Bvb2wtPnppcF9jbGVhbiBpbiB0aGUgTFJV IG9yZGVyLiAqLwogVU5JVl9JTlRFUk4KQEAgLTkzLDYgKzk0LDcgQEAgdm9pZAogYnVmX0xSVV9p bnNlcnRfemlwX2NsZWFuKAogLyo9PT09PT09PT09PT09PT09PT09PT0qLwogCWJ1Zl9wYWdlX3Qq CWJwYWdlKTsJLyohPCBpbjogcG9pbnRlciB0byB0aGUgYmxvY2sgaW4gcXVlc3Rpb24gKi8KKyNl bmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBUcnkgdG8gZnJlZSBhIGJsb2NrLiAgSWYgYnBhZ2UgaXMgYSBkZXNjcmlwdG9yIG9mIGEgY29t cHJlc3NlZC1vbmx5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3Bh Z2UwemlwLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTA2MTYxMjMzMjAtdmhqa3Y4eHJ4NmhzYTF3YwpAQCAtMzkxNywxNyArMzkx Nyw5IEBAIHBhZ2VfemlwX3dyaXRlX3RyeF9pZF9hbmRfcm9sbF9wdHIoCiAJVU5JVl9NRU1fQVNT RVJUX1JXKHBhZ2VfemlwLT5kYXRhLCBwYWdlX3ppcF9nZXRfc2l6ZShwYWdlX3ppcCkpOwogfQog Ci0jaWZkZWYgVU5JVl9aSVBfREVCVUcKLS8qKiBTZXQgdGhpcyB2YXJpYWJsZSBpbiBhIGRlYnVn Z2VyIHRvIGRpc2FibGUgcGFnZV96aXBfY2xlYXJfcmVjKCkuCi1UaGUgb25seSBvYnNlcnZhYmxl IGVmZmVjdCBzaG91bGQgYmUgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGR1ZSB0bwotZGVsZXRlZCBy ZWNvcmRzIG5vdCBiZWluZyB6ZXJvZWQgb3V0LiAgSW4gcmFyZSBjYXNlcywgdGhlcmUgY2FuIGJl Ci1wYWdlX3ppcF92YWxpZGF0ZSgpIGZhaWx1cmVzIG9uIHRoZSBub2RlX3B0ciwgdHJ4X2lkIGFu ZCByb2xsX3B0cgotY29sdW1ucyBpZiB0aGUgc3BhY2UgaXMgcmVhbGxvY2F0ZWQgZm9yIGEgc21h bGxlciByZWNvcmQuICovCi1VTklWX0lOVEVSTiBpYm9vbAlwYWdlX3ppcF9jbGVhcl9yZWNfZGlz YWJsZTsKLSNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwotCiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK LUNsZWFyIGFuIGFyZWEgb24gdGhlIHVuY29tcHJlc3NlZCBhbmQgY29tcHJlc3NlZCBwYWdlLCBp ZiBwb3NzaWJsZS4gKi8KK0NsZWFyIGFuIGFyZWEgb24gdGhlIHVuY29tcHJlc3NlZCBhbmQgY29t cHJlc3NlZCBwYWdlLgorRG8gbm90IGNsZWFyIHRoZSBkYXRhIHBheWxvYWQsIGFzIHRoYXQgd291 bGQgZ3JvdyB0aGUgbW9kaWZpY2F0aW9uIGxvZy4gKi8KIHN0YXRpYwogdm9pZAogcGFnZV96aXBf Y2xlYXJfcmVjKApAQCAtMzkzOSw2ICszOTMxLDkgQEAgcGFnZV96aXBfY2xlYXJfcmVjKAogewog CXVsaW50CWhlYXBfbm87CiAJcGFnZV90KglwYWdlCT0gcGFnZV9hbGlnbihyZWMpOworCWJ5dGUq CXN0b3JhZ2U7CisJYnl0ZSoJZmllbGQ7CisJdWxpbnQJbGVuOwogCS8qIHBhZ2VfemlwX3ZhbGlk YXRlKCkgd291bGQgZmFpbCBoZXJlIGlmIGEgcmVjb3JkCiAJY29udGFpbmluZyBleHRlcm5hbGx5 IHN0b3JlZCBjb2x1bW5zIGlzIGJlaW5nIGRlbGV0ZWQuICovCiAJdXRfYWQocmVjX29mZnNfdmFs aWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwpAQCAtMzk1NCw2MCArMzk0OSw0NiBAQCBwYWdl X3ppcF9jbGVhcl9yZWMoCiAJVU5JVl9NRU1fQVNTRVJUX1JXKHJlYyAtIHJlY19vZmZzX2V4dHJh X3NpemUob2Zmc2V0cyksCiAJCQkgICByZWNfb2Zmc19leHRyYV9zaXplKG9mZnNldHMpKTsKIAot CWlmICgKLSNpZmRlZiBVTklWX1pJUF9ERUJVRwotCSAgICAhcGFnZV96aXBfY2xlYXJfcmVjX2Rp c2FibGUgJiYKLSNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLwotCSAgICBwYWdlX3ppcC0+bV9l bmQKLQkgICAgKyAxICsgKChoZWFwX25vIC0gMSkgPj0gNjQpLyogc2l6ZSBvZiB0aGUgbG9nIGVu dHJ5ICovCi0JICAgICsgcGFnZV96aXBfZ2V0X3RyYWlsZXJfbGVuKHBhZ2VfemlwLAotCQkJCSAg ICAgICBkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSwgTlVMTCkKLQkgICAgPCBwYWdlX3ppcF9n ZXRfc2l6ZShwYWdlX3ppcCkpIHsKLQkJYnl0ZSoJZGF0YTsKLQotCQkvKiBDbGVhciBvbmx5IHRo ZSBkYXRhIGJ5dGVzLCBiZWNhdXNlIHRoZSBhbGxvY2F0b3IgYW5kCi0JCXRoZSBkZWNvbXByZXNz b3IgZGVwZW5kIG9uIHRoZSBleHRyYSBieXRlcy4gKi8KLQkJbWVtc2V0KHJlYywgMCwgcmVjX29m ZnNfZGF0YV9zaXplKG9mZnNldHMpKTsKLQotCQlpZiAoIXBhZ2VfaXNfbGVhZihwYWdlKSkgewot CQkJLyogQ2xlYXIgbm9kZV9wdHIgb24gdGhlIGNvbXByZXNzZWQgcGFnZS4gKi8KLQkJCWJ5dGUq CXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQotCQkJCSsgcGFnZV96aXBfZ2V0X3NpemUocGFnZV96 aXApCi0JCQkJLSAocGFnZV9kaXJfZ2V0X25faGVhcChwYWdlKQotCQkJCSAgIC0gUEFHRV9IRUFQ X05PX1VTRVJfTE9XKQotCQkJCSogUEFHRV9aSVBfRElSX1NMT1RfU0laRTsKLQotCQkJbWVtc2V0 KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpICogUkVDX05PREVfUFRSX1NJWkUsCi0JCQkgICAgICAg MCwgUkVDX05PREVfUFRSX1NJWkUpOwotCQl9IGVsc2UgaWYgKGRpY3RfaW5kZXhfaXNfY2x1c3Qo aW5kZXgpKSB7Ci0JCQkvKiBDbGVhciB0cnhfaWQgYW5kIHJvbGxfcHRyIG9uIHRoZSBjb21wcmVz c2VkIHBhZ2UuICovCi0JCQlieXRlKglzdG9yYWdlCT0gcGFnZV96aXAtPmRhdGEKLQkJCQkrIHBh Z2VfemlwX2dldF9zaXplKHBhZ2VfemlwKQotCQkJCS0gKHBhZ2VfZGlyX2dldF9uX2hlYXAocGFn ZSkKLQkJCQkgICAtIFBBR0VfSEVBUF9OT19VU0VSX0xPVykKLQkJCQkqIFBBR0VfWklQX0RJUl9T TE9UX1NJWkU7Ci0KLQkJCW1lbXNldChzdG9yYWdlIC0gKGhlYXBfbm8gLSAxKQotCQkJICAgICAg ICogKERBVEFfVFJYX0lEX0xFTiArIERBVEFfUk9MTF9QVFJfTEVOKSwKLQkJCSAgICAgICAwLCBE QVRBX1RSWF9JRF9MRU4gKyBEQVRBX1JPTExfUFRSX0xFTik7Ci0JCX0KLQotCQkvKiBMb2cgdGhh dCB0aGUgZGF0YSB3YXMgemVyb2VkIG91dC4gKi8KLQkJZGF0YSA9IHBhZ2VfemlwLT5kYXRhICsg cGFnZV96aXAtPm1fZW5kOwotCQl1dF9hZCghKmRhdGEpOwotCQlpZiAoVU5JVl9VTkxJS0VMWSho ZWFwX25vIC0gMSA+PSA2NCkpIHsKLQkJCSpkYXRhKysgPSAoYnl0ZSkgKDB4ODAgfCAoaGVhcF9u byAtIDEpID4+IDcpOwotCQkJdXRfYWQoISpkYXRhKTsKLQkJfQotCQkqZGF0YSsrID0gKGJ5dGUp ICgoaGVhcF9ubyAtIDEpIDw8IDEgfCAxKTsKLQkJdXRfYWQoISpkYXRhKTsKLQkJdXRfYWQoKHVs aW50KSAoZGF0YSAtIHBhZ2VfemlwLT5kYXRhKQotCQkgICAgICA8IHBhZ2VfemlwX2dldF9zaXpl KHBhZ2VfemlwKSk7Ci0JCXBhZ2VfemlwLT5tX2VuZCA9IGRhdGEgLSBwYWdlX3ppcC0+ZGF0YTsK LQkJcGFnZV96aXAtPm1fbm9uZW1wdHkgPSBUUlVFOwotCX0gZWxzZSBpZiAocGFnZV9pc19sZWFm KHBhZ2UpICYmIGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7Ci0JCS8qIERvIG5vdCBjbGVh ciB0aGUgcmVjb3JkLCBiZWNhdXNlIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UKLQkJdG8gbG9n IHRoZSBvcGVyYXRpb24uICovCisJaWYgKCFwYWdlX2lzX2xlYWYocGFnZSkpIHsKKwkJLyogQ2xl YXIgbm9kZV9wdHIuIE9uIHRoZSBjb21wcmVzc2VkIHBhZ2UsCisJCXRoZXJlIGlzIGFuIGFycmF5 IG9mIG5vZGVfcHRyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUKKwkJZGVuc2UgcGFnZSBkaXJlY3Rv cnksIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgcGFnZS4gKi8KKwkJc3RvcmFnZQk9IHBhZ2Vfemlw LT5kYXRhCisJCQkrIHBhZ2VfemlwX2dldF9zaXplKHBhZ2VfemlwKQorCQkJLSAocGFnZV9kaXJf Z2V0X25faGVhcChwYWdlKQorCQkJICAgLSBQQUdFX0hFQVBfTk9fVVNFUl9MT1cpCisJCQkqIFBB R0VfWklQX0RJUl9TTE9UX1NJWkU7CisJCXV0X2FkKGRpY3RfaW5kZXhfZ2V0X25fdW5pcXVlX2lu X3RyZWUoaW5kZXgpID09CisJCSAgICAgIHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpIC0gMSk7 CisJCWZpZWxkCT0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLAorCQkJCQkgICAgcmVj X29mZnNfbl9maWVsZHMob2Zmc2V0cykgLSAxLAorCQkJCQkgICAgJmxlbik7CisJCXV0X2FkKGxl biA9PSBSRUNfTk9ERV9QVFJfU0laRSk7CisKKwkJdXRfYWQoIXJlY19vZmZzX2FueV9leHRlcm4o b2Zmc2V0cykpOworCQltZW1zZXQoZmllbGQsIDAsIFJFQ19OT0RFX1BUUl9TSVpFKTsKKwkJbWVt c2V0KHN0b3JhZ2UgLSAoaGVhcF9ubyAtIDEpICogUkVDX05PREVfUFRSX1NJWkUsCisJCSAgICAg ICAwLCBSRUNfTk9ERV9QVFJfU0laRSk7CisJfSBlbHNlIGlmIChkaWN0X2luZGV4X2lzX2NsdXN0 KGluZGV4KSkgeworCQkvKiBDbGVhciB0cnhfaWQgYW5kIHJvbGxfcHRyLiBPbiB0aGUgY29tcHJl c3NlZCBwYWdlLAorCQl0aGVyZSBpcyBhbiBhcnJheSBvZiB0aGVzZSBmaWVsZHMgaW1tZWRpYXRl bHkgYmVmb3JlIHRoZQorCQlkZW5zZSBwYWdlIGRpcmVjdG9yeSwgYXQgdGhlIHZlcnkgZW5kIG9m IHRoZSBwYWdlLiAqLworCQljb25zdCB1bGludAl0cnhfaWRfcG9zCisJCQk9IGRpY3RfY29sX2dl dF9jbHVzdF9wb3MoCisJCQlkaWN0X3RhYmxlX2dldF9zeXNfY29sKAorCQkJCWluZGV4LT50YWJs ZSwgREFUQV9UUlhfSUQpLCBpbmRleCk7CisJCXN0b3JhZ2UJPSBwYWdlX3ppcC0+ZGF0YQorCQkJ KyBwYWdlX3ppcF9nZXRfc2l6ZShwYWdlX3ppcCkKKwkJCS0gKHBhZ2VfZGlyX2dldF9uX2hlYXAo cGFnZSkKKwkJCSAgIC0gUEFHRV9IRUFQX05PX1VTRVJfTE9XKQorCQkJKiBQQUdFX1pJUF9ESVJf U0xPVF9TSVpFOworCQlmaWVsZAk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgdHJ4 X2lkX3BvcywgJmxlbik7CisJCXV0X2FkKGxlbiA9PSBEQVRBX1RSWF9JRF9MRU4pOworCisJCW1l bXNldChmaWVsZCwgMCwgREFUQV9UUlhfSURfTEVOICsgREFUQV9ST0xMX1BUUl9MRU4pOworCQlt ZW1zZXQoc3RvcmFnZSAtIChoZWFwX25vIC0gMSkKKwkJICAgICAgICogKERBVEFfVFJYX0lEX0xF TiArIERBVEFfUk9MTF9QVFJfTEVOKSwKKwkJICAgICAgIDAsIERBVEFfVFJYX0lEX0xFTiArIERB VEFfUk9MTF9QVFJfTEVOKTsKIAogCQlpZiAocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkg ewogCQkJdWxpbnQJaTsKQEAgLTQwMTYsMTUgKzM5OTcsMTggQEAgcGFnZV96aXBfY2xlYXJfcmVj KAogCQkJCS8qIENsZWFyIGFsbCBCTE9CIHBvaW50ZXJzIGluIG9yZGVyIHRvIG1ha2UKIAkJCQlw YWdlX3ppcF92YWxpZGF0ZSgpIHBhc3MuICovCiAJCQkJaWYgKHJlY19vZmZzX250aF9leHRlcm4o b2Zmc2V0cywgaSkpIHsKLQkJCQkJdWxpbnQJbGVuOwotCQkJCQlieXRlKglmaWVsZCA9IHJlY19n ZXRfbnRoX2ZpZWxkKAorCQkJCQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkKAogCQkJCQkJcmVj LCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCQkJdXRfYWQobGVuCisJCQkJCSAgICAgID09IEJUUl9F WFRFUk5fRklFTERfUkVGX1NJWkUpOwogCQkJCQltZW1zZXQoZmllbGQgKyBsZW4KIAkJCQkJICAg ICAgIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSwKIAkJCQkJICAgICAgIDAsIEJUUl9FWFRF Uk5fRklFTERfUkVGX1NJWkUpOwogCQkJCX0KIAkJCX0KIAkJfQorCX0gZWxzZSB7CisJCXV0X2Fk KCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKTsKIAl9CiAKICNpZmRlZiBVTklWX1pJUF9E RUJVRwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcmVtL3JlbTByZWMuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNjE2MDkyNjA5LTR6aXpjcDVscmdwNGd3M3AKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9yZW0vcmVtMHJlYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw NjE2MTIzMzIwLXZoamt2OHhyeDZoc2Exd2MKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00MDgsNyArNDA4LDcgQEAgcmVjX2luaXRfb2Zm c2V0cygKIAkJZG8gewogCQkJdWxpbnQJbGVuOwogCQkJaWYgKFVOSVZfVU5MSUtFTFkoaSA9PSBu X25vZGVfcHRyX2ZpZWxkKSkgewotCQkJCWxlbiA9IG9mZnMgKz0gNDsKKwkJCQlsZW4gPSBvZmZz ICs9IFJFQ19OT0RFX1BUUl9TSVpFOwogCQkJCWdvdG8gcmVzb2x2ZWQ7CiAJCQl9CiAKQEAgLTY0 MCw3ICs2NDAsNyBAQCByZWNfZ2V0X29mZnNldHNfcmV2ZXJzZSgKIAlkbyB7CiAJCXVsaW50CWxl bjsKIAkJaWYgKFVOSVZfVU5MSUtFTFkoaSA9PSBuX25vZGVfcHRyX2ZpZWxkKSkgewotCQkJbGVu ID0gb2ZmcyArPSA0OworCQkJbGVuID0gb2ZmcyArPSBSRUNfTk9ERV9QVFJfU0laRTsKIAkJCWdv dG8gcmVzb2x2ZWQ7CiAJCX0KIApAQCAtMTEzMSw5ICsxMTMxLDkgQEAgcmVjX2NvbnZlcnRfZHR1 cGxlX3RvX3JlY19jb21wKAogCiAJCWlmIChVTklWX1VOTElLRUxZKGkgPT0gbl9ub2RlX3B0cl9m aWVsZCkpIHsKIAkJCXV0X2FkKGR0eXBlX2dldF9wcnR5cGUodHlwZSkgJiBEQVRBX05PVF9OVUxM KTsKLQkJCXV0X2FkKGxlbiA9PSA0KTsKKwkJCXV0X2FkKGxlbiA9PSBSRUNfTk9ERV9QVFJfU0la RSk7CiAJCQltZW1jcHkoZW5kLCBkZmllbGRfZ2V0X2RhdGEoZmllbGQpLCBsZW4pOwotCQkJZW5k ICs9IDQ7CisJCQllbmQgKz0gUkVDX05PREVfUFRSX1NJWkU7CiAJCQlicmVhazsKIAkJfQogCgo= --===============0034925354== 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:34:56 +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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 --===============0034925354==--