From: marko.makela Date: May 24 2012 11:14am Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3861 to 3862) List-Archive: http://lists.mysql.com/commits/143936 Message-Id: <201205241114.q4OBEN08001079@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4NjIgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0yNAogICAgICBGaXggZXJyb3JzIGluIHRoZSBy ZWNfZ2V0X29mZnNldHMoKSBlbGltaW5hdGlvbi4KICAgICAgCiAgICAgIGJ0cl9yb290X3JhaXNl X2FuZF9pbnNlcnQoKSwgYnRyX3BhZ2Vfc3BsaXRfYW5kX2luc2VydCgpLAogICAgICBidHJfY3Vy X3Blc3NpbWlzdGljX2luc2VydCgpOiBOb3RlIHRoYXQgdGhlIG1lbW9yeSBoZWFwIGZvciBvZmZz ZXRzCiAgICAgIGNhbiBiZSBlbXB0aWVkLgogICAgICAKICAgICAgYnRyX2N1cl9wZXNzaW1pc3Rp Y191cGRhdGUoKSwgcm93X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KCksCiAgICAgIHJv d19pbnNfc2VjX2luZGV4X2VudHJ5X2xvdygpLCByb3dfbG9nX2FwcGx5X29wX2xvdygpLAogICAg ICByb3dfbG9nX2FwcGx5X29wKCksIHJvd191bmRvX21vZF9jbHVzdF9sb3coKTogQWRkIG9mZnNl dHNfaGVhcCBmb3IKICAgICAgYWxsb2NhdGluZyBvZmZzZXRzIG9ubHkuIE5vdGUgdGhhdCBpdCBj YW4gYmUgZW1wdGllZC4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIv YnRyMGN1ci5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lidWYvaWJ1ZjBpYnVmLmNjCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MKICAgICAgc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MHVtb2QuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5j YwogMzg2MSBNYXJrbyBNw6RrZWzDpAkyMDEyLTA1LTI0CiAgICAgIEZpeCBhIGJ1ZyBpbiByZWNf Z2V0X29mZnNldHMoKSBlbGltaW5hdGlvbi4KICAgICAgCiAgICAgIGJ0cl9jdXJfcGVzc2ltaXN0 aWNfdXBkYXRlKCk6IEFsbG9jYXRlIG5ld19lbnRyeSBmcm9tIGEgc2VwYXJhdGUgaGVhcCwKICAg ICAgYmVjYXVzZSB0aGUgaGVhcCBmb3Igb2Zmc2V0cyBjYW4gYmUgZW1wdGllZC4KCiAgICBtb2Rp ZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYwo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9idHIvYnRyMGN1ci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUy NDA5NTYwOC0xc2RneDExZmxpZGRoNHZhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBj dXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjQxMTEyMjMtMWwwMjcy c2I5dXBpbGFpMgpAQCAtMTQ2NCw3ICsxNDY0LDggQEAgYnRyX2N1cl9wZXNzaW1pc3RpY19pbnNl cnQoCiAJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBhZnRlciB3aGljaCB0byBp bnNlcnQ7CiAJCQkJY3Vyc29yIHN0YXlzIHZhbGlkICovCiAJdWxpbnQqKgkJb2Zmc2V0cywvKiE8 IG91dDogb2Zmc2V0cyBvbiAqcmVjICovCi0JbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0 OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICovCisJbWVtX2hlYXBfdCoqCWhlYXAs CS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwCisJCQkJdGhhdCBjYW4gYmUgZW1w dGllZCwgb3IgTlVMTCAqLwogCWR0dXBsZV90KgllbnRyeSwJLyohPCBpbi9vdXQ6IGVudHJ5IHRv IGluc2VydCAqLwogCXJlY190KioJCXJlYywJLyohPCBvdXQ6IHBvaW50ZXIgdG8gaW5zZXJ0ZWQg cmVjb3JkIGlmCiAJCQkJc3VjY2VlZCAqLwpAQCAtMjIzMCw3ICsyMjMxLDEyIEBAIGJ0cl9jdXJf cGVzc2ltaXN0aWNfdXBkYXRlKAogCQkJCWN1cnNvciBtYXkgYmVjb21lIGludmFsaWQgaWYgKmJp Z19yZWMgPT0gTlVMTAogCQkJCXx8ICEoZmxhZ3MgJiBCVFJfS0VFUF9QT1NfRkxBRykgKi8KIAl1 bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBvZmZzZXRzIG9uIGN1cnNvci0+cGFnZV9jdXIucmVj ICovCi0JbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBo ZWFwLCBvciBOVUxMICovCisJbWVtX2hlYXBfdCoqCW9mZnNldHNfaGVhcCwKKwkJCQkvKiE8IGlu L291dDogcG9pbnRlciB0byBtZW1vcnkgaGVhcAorCQkJCXRoYXQgY2FuIGJlIGVtcHRpZWQsIG9y IE5VTEwgKi8KKwltZW1faGVhcF90KgllbnRyeV9oZWFwLAorCQkJCS8qITwgaW4vb3V0OiBtZW1v cnkgaGVhcCBmb3IgYWxsb2NhdGluZworCQkJCWJpZ19yZWMgYW5kIHRoZSBpbmRleCB0dXBsZSAq LwogCWJpZ19yZWNfdCoqCWJpZ19yZWMsLyohPCBvdXQ6IGJpZyByZWMgdmVjdG9yIHdob3NlIGZp ZWxkcyBoYXZlIHRvCiAJCQkJYmUgc3RvcmVkIGV4dGVybmFsbHkgYnkgdGhlIGNhbGxlciwgb3Ig TlVMTCAqLwogCWNvbnN0IHVwZF90Kgl1cGRhdGUsCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3I7IHRo aXMgaXMgYWxsb3dlZCBhbHNvCkBAIC0yMjgzLDcgKzIyODksNyBAQCBidHJfY3VyX3Blc3NpbWlz dGljX3VwZGF0ZSgKIAkJCSAgICAgICB8IEJUUl9DUkVBVEVfRkxBRyB8IEJUUl9LRUVQX1NZU19G TEFHKSk7CiAKIAlvcHRpbV9lcnIgPSBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAotCQlmbGFn cywgY3Vyc29yLCBvZmZzZXRzLCBoZWFwLCB1cGRhdGUsCisJCWZsYWdzLCBjdXJzb3IsIG9mZnNl dHMsIG9mZnNldHNfaGVhcCwgdXBkYXRlLAogCQljbXBsX2luZm8sIHRociwgdHJ4X2lkLCBtdHIp OwogCiAJc3dpdGNoIChvcHRpbV9lcnIpIHsKQEAgLTIzMjYsMTMgKzIzMzIsMTAgQEAgYnRyX2N1 cl9wZXNzaW1pc3RpY191cGRhdGUoCiAJfQogCiAJKm9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMo Ci0JCXJlYywgaW5kZXgsICpvZmZzZXRzLCBVTElOVF9VTkRFRklORUQsIGhlYXApOworCQlyZWMs IGluZGV4LCAqb2Zmc2V0cywgVUxJTlRfVU5ERUZJTkVELCBvZmZzZXRzX2hlYXApOwogCi0JbWVt X2hlYXBfdCoJbmV3X2VudHJ5X2hlYXAgPSBtZW1faGVhcF9jcmVhdGUoCi0JCXJlY19vZmZzX3Np emUoKm9mZnNldHMpCi0JCSsgRFRVUExFX0VTVF9BTExPQyhyZWNfb2Zmc19uX2ZpZWxkcygqb2Zm c2V0cykpKTsKIAlkdHVwbGVfdCoJbmV3X2VudHJ5ID0gcm93X3JlY190b19pbmRleF9lbnRyeSgK LQkJUk9XX0NPUFlfREFUQSwgcmVjLCBpbmRleCwgKm9mZnNldHMsICZuX2V4dCwgbmV3X2VudHJ5 X2hlYXApOworCQlST1dfQ09QWV9EQVRBLCByZWMsIGluZGV4LCAqb2Zmc2V0cywgJm5fZXh0LCBl bnRyeV9oZWFwKTsKIAogCS8qIFRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIGNsdXN0ZXJlZCBpbmRl eCByZWNvcmQKIAljb3JyZXNwb25kaW5nIHRvIG5ld19lbnRyeSBpcyBsYXRjaGVkIGluIG10ci4g IElmIHRoZQpAQCAtMjM0MSw3ICsyMzQ0LDcgQEAgYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUo CiAJcHVyZ2Ugd291bGQgYWxzbyBoYXZlIHJlbW92ZWQgdGhlIGNsdXN0ZXJlZCBpbmRleCByZWNv cmQKIAlpdHNlbGYuICBUaHVzIHRoZSBmb2xsb3dpbmcgY2FsbCBpcyBzYWZlLiAqLwogCXJvd191 cGRfaW5kZXhfcmVwbGFjZV9uZXdfY29sX3ZhbHNfaW5kZXhfcG9zKG5ld19lbnRyeSwgaW5kZXgs IHVwZGF0ZSwKLQkJCQkJCSAgICAgRkFMU0UsICpoZWFwKTsKKwkJCQkJCSAgICAgRkFMU0UsIGVu dHJ5X2hlYXApOwogCWlmICghKGZsYWdzICYgQlRSX0tFRVBfU1lTX0ZMQUcpKSB7CiAJCXJvd191 cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxkKG5ld19lbnRyeSwgaW5kZXgsIERBVEFfUk9MTF9QVFIs CiAJCQkJCSAgICAgIHJvbGxfcHRyKTsKQEAgLTIzNzAsNyArMjM3Myw3IEBAIGJ0cl9jdXJfcGVz c2ltaXN0aWNfdXBkYXRlKAogCiAJdXRfYWQoIXBhZ2VfaXNfY29tcChwYWdlKSB8fCAhcmVjX2dl dF9ub2RlX3B0cl9mbGFnKHJlYykpOwogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5k ZXgsICpvZmZzZXRzKSk7Ci0Jbl9leHQgKz0gYnRyX3B1c2hfdXBkYXRlX2V4dGVybl9maWVsZHMo bmV3X2VudHJ5LCB1cGRhdGUsICpoZWFwKTsKKwluX2V4dCArPSBidHJfcHVzaF91cGRhdGVfZXh0 ZXJuX2ZpZWxkcyhuZXdfZW50cnksIHVwZGF0ZSwgZW50cnlfaGVhcCk7CiAKIAlpZiAocGFnZV96 aXApIHsKIAkJdXRfYWQocGFnZV9pc19jb21wKHBhZ2UpKTsKQEAgLTI0MjEsNyArMjQyNCw3IEBA IG1ha2VfZXh0ZXJuYWw6CiAJcGFnZV9jdXJfbW92ZV90b19wcmV2KHBhZ2VfY3Vyc29yKTsKIAog CXJlYyA9IGJ0cl9jdXJfaW5zZXJ0X2lmX3Bvc3NpYmxlKGN1cnNvciwgbmV3X2VudHJ5LAotCQkJ CQkgb2Zmc2V0cywgaGVhcCwgbl9leHQsIG10cik7CisJCQkJCSBvZmZzZXRzLCBvZmZzZXRzX2hl YXAsIG5fZXh0LCBtdHIpOwogCiAJaWYgKHJlYykgewogCQlwYWdlX2N1cnNvci0+cmVjID0gcmVj OwpAQCAtMjQ4NSw3ICsyNDg4LDcgQEAgbWFrZV9leHRlcm5hbDoKIAllcnIgPSBidHJfY3VyX3Bl c3NpbWlzdGljX2luc2VydChCVFJfTk9fVU5ET19MT0dfRkxBRwogCQkJCQkgfCBCVFJfTk9fTE9D S0lOR19GTEFHCiAJCQkJCSB8IEJUUl9LRUVQX1NZU19GTEFHLAotCQkJCQkgY3Vyc29yLCBvZmZz ZXRzLCBoZWFwLAorCQkJCQkgY3Vyc29yLCBvZmZzZXRzLCBvZmZzZXRzX2hlYXAsCiAJCQkJCSBu ZXdfZW50cnksICZyZWMsCiAJCQkJCSAmZHVtbXlfYmlnX3JlYywgbl9leHQsIE5VTEwsIG10cik7 CiAJdXRfYShyZWMpOwpAQCAtMjUzNiw3ICsyNTM5LDYgQEAgbWFrZV9leHRlcm5hbDoKIAl9CiAK IHJldHVybl9hZnRlcl9yZXNlcnZhdGlvbnM6Ci0JbWVtX2hlYXBfZnJlZShuZXdfZW50cnlfaGVh cCk7CiAjaWZkZWYgVU5JVl9aSVBfREVCVUcKIAl1dF9hKCFwYWdlX3ppcCB8fCBwYWdlX3ppcF92 YWxpZGF0ZShwYWdlX3ppcCwgcGFnZSkpOwogI2VuZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEyMDUyNDA5NTYwOC0xc2RneDExZmxpZGRoNHZhCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMjA1MjQxMTEyMjMtMWwwMjcyc2I5dXBpbGFpMgpAQCAtMzIzOCw2ICszMjM4LDcgQEAgaWJ1 Zl9pbnNlcnRfbG93KAogCWJ0cl9wY3VyX3QJcGN1cjsKIAlidHJfY3VyX3QqCWN1cnNvcjsKIAlk dHVwbGVfdCoJaWJ1Zl9lbnRyeTsKKwltZW1faGVhcF90KglvZmZzZXRzX2hlYXAJPSBOVUxMOwog CW1lbV9oZWFwX3QqCWhlYXA7CiAJdWxpbnQqCQlvZmZzZXRzCQk9IE5VTEw7CiAJdWxpbnQJCWJ1 ZmZlcmVkOwpAQCAtMzQ1OSw3ICszNDYwLDcgQEAgZmFpbF9leGl0OgogCWlmIChtb2RlID09IEJU Ul9NT0RJRllfUFJFVikgewogCQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAogCQkJ QlRSX05PX0xPQ0tJTkdfRkxBRywKLQkJCWN1cnNvciwgJm9mZnNldHMsICZoZWFwLAorCQkJY3Vy c29yLCAmb2Zmc2V0cywgJm9mZnNldHNfaGVhcCwKIAkJCWlidWZfZW50cnksICZpbnNfcmVjLAog CQkJJmR1bW15X2JpZ19yZWMsIDAsIHRociwgJm10cik7CiAJCWJsb2NrID0gYnRyX2N1cl9nZXRf YmxvY2soY3Vyc29yKTsKQEAgLTM0ODYsMTEgKzM0ODcsMTEgQEAgZmFpbF9leGl0OgogCiAJCXJv b3QgPSBpYnVmX3RyZWVfcm9vdF9nZXQoJm10cik7CiAKLQkJZXJyID0gYnRyX2N1cl9wZXNzaW1p c3RpY19pbnNlcnQoQlRSX05PX0xPQ0tJTkdfRkxBRwotCQkJCQkJIHwgQlRSX05PX1VORE9fTE9H X0ZMQUcsCi0JCQkJCQkgY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAsCi0JCQkJCQkgaWJ1Zl9lbnRy eSwgJmluc19yZWMsCi0JCQkJCQkgJmR1bW15X2JpZ19yZWMsIDAsIHRociwgJm10cik7CisJCWVy ciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0KAorCQkJQlRSX05PX0xPQ0tJTkdfRkxBRyB8 IEJUUl9OT19VTkRPX0xPR19GTEFHLAorCQkJY3Vyc29yLCAmb2Zmc2V0cywgJm9mZnNldHNfaGVh cCwKKwkJCWlidWZfZW50cnksICZpbnNfcmVjLAorCQkJJmR1bW15X2JpZ19yZWMsIDAsIHRociwg Jm10cik7CiAJCW11dGV4X2V4aXQoJmlidWZfcGVzc2ltaXN0aWNfaW5zZXJ0X211dGV4KTsKIAkJ aWJ1Zl9zaXplX3VwZGF0ZShyb290LCAmbXRyKTsKIAkJbXV0ZXhfZXhpdCgmaWJ1Zl9tdXRleCk7 CkBAIC0zNTAwLDYgKzM1MDEsMTAgQEAgZmFpbF9leGl0OgogCQl1dF9hZChidWZfYmxvY2tfZ2V0 X3NwYWNlKGJsb2NrKSA9PSBJQlVGX1NQQUNFX0lEKTsKIAl9CiAKKwlpZiAob2Zmc2V0c19oZWFw KSB7CisJCW1lbV9oZWFwX2ZyZWUob2Zmc2V0c19oZWFwKTsKKwl9CisKIAlpZiAoZXJyID09IERC X1NVQ0NFU1MgJiYgb3AgIT0gSUJVRl9PUF9ERUxFVEUpIHsKIAkJLyogVXBkYXRlIHRoZSBwYWdl IG1heCB0cnggaWQgZmllbGQgKi8KIAkJcGFnZV91cGRhdGVfbWF4X3RyeF9pZChibG9jaywgTlVM TCwKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGJ0ci5oCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwNTI0MDk1NjA4LTFzZGd4MTFmbGlkZGg0dmEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDEyMDUyNDExMTIyMy0xbDAyNzJzYjl1cGlsYWkyCkBAIC00MjgsNyArNDI4LDggQEAg YnRyX3Jvb3RfcmFpc2VfYW5kX2luc2VydCgKIAkJCQl0aGUgY3Vyc29yIGlzIHBvc2l0aW9uZWQg b24gdGhlIHByZWRlY2Vzc29yCiAJCQkJb2YgdGhlIGluc2VydGVkIHJlY29yZCAqLwogCXVsaW50 KioJCW9mZnNldHMsLyohPCBvdXQ6IG9mZnNldHMgb24gaW5zZXJ0ZWQgcmVjb3JkICovCi0JbWVt X2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBO VUxMICovCisJbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9y eSBoZWFwCisJCQkJdGhhdCBjYW4gYmUgZW1wdGllZCwgb3IgTlVMTCAqLwogCWNvbnN0IGR0dXBs ZV90Kgl0dXBsZSwJLyohPCBpbjogdHVwbGUgdG8gaW5zZXJ0ICovCiAJdWxpbnQJCW5fZXh0LAkv KiE8IGluOiBudW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLwogCW10cl90KgkJ bXRyKQkvKiE8IGluOiBtdHIgKi8KQEAgLTQ5Miw3ICs0OTMsOCBAQCBidHJfcGFnZV9zcGxpdF9h bmRfaW5zZXJ0KAogCQkJCWZ1bmN0aW9uIHJldHVybnMsIHRoZSBjdXJzb3IgaXMgcG9zaXRpb25l ZAogCQkJCW9uIHRoZSBwcmVkZWNlc3NvciBvZiB0aGUgaW5zZXJ0ZWQgcmVjb3JkICovCiAJdWxp bnQqKgkJb2Zmc2V0cywvKiE8IG91dDogb2Zmc2V0cyBvbiBpbnNlcnRlZCByZWNvcmQgKi8KLQlt ZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50ZXIgdG8gbWVtb3J5IGhlYXAsIG9y IE5VTEwgKi8KKwltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50ZXIgdG8gbWVt b3J5IGhlYXAKKwkJCQl0aGF0IGNhbiBiZSBlbXB0aWVkLCBvciBOVUxMICovCiAJY29uc3QgZHR1 cGxlX3QqCXR1cGxlLAkvKiE8IGluOiB0dXBsZSB0byBpbnNlcnQgKi8KIAl1bGludAkJbl9leHQs CS8qITwgaW46IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCiAJbXRyX3Qq CQltdHIpCS8qITwgaW46IG10ciAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9idHIwY3VyLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIw Y3VyLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjQwOTU2MDgtMXNkZ3gx MWZsaWRkaDR2YQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTI0MTExMjIzLTFsMDI3MnNiOXVwaWxhaTIK QEAgLTI0Nyw3ICsyNDcsOCBAQCBidHJfY3VyX3Blc3NpbWlzdGljX2luc2VydCgKIAlidHJfY3Vy X3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIGFmdGVyIHdoaWNoIHRvIGluc2VydDsKIAkJCQlj dXJzb3Igc3RheXMgdmFsaWQgKi8KIAl1bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBvZmZzZXRz IG9uICpyZWMgKi8KLQltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6IHBvaW50ZXIgdG8g bWVtb3J5IGhlYXAsIG9yIE5VTEwgKi8KKwltZW1faGVhcF90KioJaGVhcCwJLyohPCBpbi9vdXQ6 IHBvaW50ZXIgdG8gbWVtb3J5IGhlYXAKKwkJCQl0aGF0IGNhbiBiZSBlbXB0aWVkLCBvciBOVUxM ICovCiAJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291dDogZW50cnkgdG8gaW5zZXJ0ICovCiAJ cmVjX3QqKgkJcmVjLAkvKiE8IG91dDogcG9pbnRlciB0byBpbnNlcnRlZCByZWNvcmQgaWYKIAkJ CQlzdWNjZWVkICovCkBAIC0zMzksNyArMzQwLDEyIEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBk YXRlKAogCQkJCWN1cnNvciBtYXkgYmVjb21lIGludmFsaWQgaWYgKmJpZ19yZWMgPT0gTlVMTAog CQkJCXx8ICEoZmxhZ3MgJiBCVFJfS0VFUF9QT1NfRkxBRykgKi8KIAl1bGludCoqCQlvZmZzZXRz LC8qITwgb3V0OiBvZmZzZXRzIG9uIGN1cnNvci0+cGFnZV9jdXIucmVjICovCi0JbWVtX2hlYXBf dCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9yeSBoZWFwLCBvciBOVUxMICov CisJbWVtX2hlYXBfdCoqCW9mZnNldHNfaGVhcCwKKwkJCQkvKiE8IGluL291dDogcG9pbnRlciB0 byBtZW1vcnkgaGVhcAorCQkJCXRoYXQgY2FuIGJlIGVtcHRpZWQsIG9yIE5VTEwgKi8KKwltZW1f aGVhcF90KgllbnRyeV9oZWFwLAorCQkJCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVhcCBmb3IgYWxs b2NhdGluZworCQkJCWJpZ19yZWMgYW5kIHRoZSBpbmRleCB0dXBsZSAqLwogCWJpZ19yZWNfdCoq CWJpZ19yZWMsLyohPCBvdXQ6IGJpZyByZWMgdmVjdG9yIHdob3NlIGZpZWxkcyBoYXZlIHRvCiAJ CQkJYmUgc3RvcmVkIGV4dGVybmFsbHkgYnkgdGhlIGNhbGxlciwgb3IgTlVMTCAqLwogCWNvbnN0 IHVwZF90Kgl1cGRhdGUsCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3I7IHRoaXMgaXMgYWxsb3dlZCBh bHNvCkBAIC0zNTIsNyArMzU4LDcgQEAgYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAJdHJ4 X2lkX3QJdHJ4X2lkLAkvKiE8IGluOiB0cmFuc2FjdGlvbiBpZCAqLwogCW10cl90KgkJbXRyKQkv KiE8IGluOiBtdHI7IG11c3QgYmUgY29tbWl0dGVkIGJlZm9yZQogCQkJCWxhdGNoaW5nIGFueSBm dXJ0aGVyIHBhZ2VzICovCi0JX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0LCBub25u dWxsKDIsMyw0LDUsNiwxMCkpKTsKKwlfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQs IG5vbm51bGwoMiwzLDQsNSw2LDcsMTEpKSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBNYXJrcyBhIGNsdXN0ZXJlZCBp bmRleCByZWNvcmQgZGVsZXRlZC4gV3JpdGVzIGFuIHVuZG8gbG9nIHJlY29yZCB0bwogdW5kbyBs b2cgb24gdGhpcyBkZWxldGUgbWFya2luZy4gV3JpdGVzIGluIHRoZSB0cnggaWQgZmllbGQgdGhl IGlkCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYwlyZXZpZDptYXJrby5tYWtlbGFA b3JhY2xlLmNvbS0yMDEyMDUyNDA5NTYwOC0xc2RneDExZmxpZGRoNHZhCisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzBpbnMuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MjA1MjQxMTEyMjMtMWwwMjcyc2I5dXBpbGFpMgpAQCAtMjM1LDYgKzIzNSw4IEBAIHJvd19pbnNf c2VjX2luZGV4X2VudHJ5X2J5X21vZGlmeSgKIAkJCQlsYXRjaCBvciBhbHNvIGEgdHJlZSBsYXRj aCAqLwogCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBCLXRyZWUgY3Vyc29yICovCiAJdWxp bnQqKgkJb2Zmc2V0cywvKiE8IGluL291dDogb2Zmc2V0cyBvbiBjdXJzb3ItPnBhZ2VfY3VyLnJl YyAqLworCW1lbV9oZWFwX3QqCW9mZnNldHNfaGVhcCwKKwkJCQkvKiE8IGluL291dDogbWVtb3J5 IGhlYXAgdGhhdCBjYW4gYmUgZW1wdGllZCAqLwogCW1lbV9oZWFwX3QqCWhlYXAsCS8qITwgaW4v b3V0OiBtZW1vcnkgaGVhcCAqLwogCWNvbnN0IGR0dXBsZV90KgllbnRyeSwJLyohPCBpbjogaW5k ZXggZW50cnkgdG8gaW5zZXJ0ICovCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRo cmVhZCAqLwpAQCAtMjY3LDcgKzI2OSw3IEBAIHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5X21v ZGlmeSgKIAkJLyogVE9ETzogcGFzcyBvbmx5ICpvZmZzZXRzICovCiAJCWVyciA9IGJ0cl9jdXJf b3B0aW1pc3RpY191cGRhdGUoCiAJCQlCVFJfS0VFUF9TWVNfRkxBRywgY3Vyc29yLAotCQkJb2Zm c2V0cywgJmhlYXAsIHVwZGF0ZSwgMCwgdGhyLAorCQkJb2Zmc2V0cywgJm9mZnNldHNfaGVhcCwg dXBkYXRlLCAwLCB0aHIsCiAJCQl0aHJfZ2V0X3RyeCh0aHIpLT5pZCwgbXRyKTsKIAkJc3dpdGNo IChlcnIpIHsKIAkJY2FzZSBEQl9PVkVSRkxPVzoKQEAgLTI4Niw4ICsyODgsOSBAQCByb3dfaW5z X3NlY19pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAKIAkJZXJyID0gYnRyX2N1cl9wZXNzaW1pc3Rp Y191cGRhdGUoCiAJCQlCVFJfS0VFUF9TWVNfRkxBRywgY3Vyc29yLAotCQkJb2Zmc2V0cywgJmhl YXAsICZkdW1teV9iaWdfcmVjLCB1cGRhdGUsIDAsIHRociwKLQkJCXRocl9nZXRfdHJ4KHRocikt PmlkLCBtdHIpOworCQkJb2Zmc2V0cywgJm9mZnNldHNfaGVhcCwKKwkJCWhlYXAsICZkdW1teV9i aWdfcmVjLCB1cGRhdGUsIDAsCisJCQl0aHIsIHRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOwog CQl1dF9hZCghZHVtbXlfYmlnX3JlYyk7CiAJfQogCkBAIC0zMDgsNyArMzExLDEwIEBAIHJvd19p bnNfY2x1c3RfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KAogCQkJCWxhdGNoIG9yIGFsc28gYSB0cmVl IGxhdGNoICovCiAJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IEItdHJlZSBjdXJzb3IgKi8K IAl1bGludCoqCQlvZmZzZXRzLC8qITwgb3V0OiBvZmZzZXRzIG9uIGN1cnNvci0+cGFnZV9jdXIu cmVjICovCi0JbWVtX2hlYXBfdCoqCWhlYXAsCS8qITwgaW4vb3V0OiBwb2ludGVyIHRvIG1lbW9y eSBoZWFwLCBvciBOVUxMICovCisJbWVtX2hlYXBfdCoqCW9mZnNldHNfaGVhcCwKKwkJCQkvKiE8 IGluL291dDogcG9pbnRlciB0byBtZW1vcnkgaGVhcCB0aGF0IGNhbgorCQkJCWJlIGVtcHRpZWQs IG9yIE5VTEwgKi8KKwltZW1faGVhcF90KgloZWFwLAkvKiE8IGluL291dDogbWVtb3J5IGhlYXAg Ki8KIAliaWdfcmVjX3QqKgliaWdfcmVjLC8qITwgb3V0OiBwb3NzaWJsZSBiaWcgcmVjIHZlY3Rv ciBvZiBmaWVsZHMKIAkJCQl3aGljaCBoYXZlIHRvIGJlIHN0b3JlZCBleHRlcm5hbGx5IGJ5IHRo ZQogCQkJCWNhbGxlciAqLwpAQCAtMzMwLDIyICszMzYsMTggQEAgcm93X2luc19jbHVzdF9pbmRl eF9lbnRyeV9ieV9tb2RpZnkoCiAJdXRfYWQocmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLAogCQkJ CSAgIGRpY3RfdGFibGVfaXNfY29tcChjdXJzb3ItPmluZGV4LT50YWJsZSkpKTsKIAotCWlmICgh KmhlYXApIHsKLQkJKmhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7Ci0JfQotCiAJLyogQnVp bGQgYW4gdXBkYXRlIHZlY3RvciBjb250YWluaW5nIGFsbCB0aGUgZmllbGRzIHRvIGJlIG1vZGlm aWVkOwogCU5PVEUgdGhhdCB0aGlzIHZlY3RvciBtYXkgTk9UIGNvbnRhaW4gc3lzdGVtIGNvbHVt bnMgdHJ4X2lkIG9yCiAJcm9sbF9wdHIgKi8KIAogCXVwZGF0ZSA9IHJvd191cGRfYnVpbGRfZGlm ZmVyZW5jZV9iaW5hcnkoY3Vyc29yLT5pbmRleCwgZW50cnksIHJlYywKLQkJCQkJCSB0aHJfZ2V0 X3RyeCh0aHIpLCAqaGVhcCk7CisJCQkJCQkgdGhyX2dldF90cngodGhyKSwgaGVhcCk7CiAJaWYg KG1vZGUgPT0gQlRSX01PRElGWV9MRUFGKSB7CiAJCS8qIFRyeSBvcHRpbWlzdGljIHVwZGF0aW5n IG9mIHRoZSByZWNvcmQsIGtlZXBpbmcgY2hhbmdlcwogCQl3aXRoaW4gdGhlIHBhZ2UgKi8KIAog CQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfdXBkYXRlKAotCQkJMCwgY3Vyc29yLCBvZmZzZXRz LCBoZWFwLCB1cGRhdGUsIDAsIHRociwKKwkJCTAsIGN1cnNvciwgb2Zmc2V0cywgb2Zmc2V0c19o ZWFwLCB1cGRhdGUsIDAsIHRociwKIAkJCXRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOwogCQlz d2l0Y2ggKGVycikgewogCQljYXNlIERCX09WRVJGTE9XOgpAQCAtMzY0LDggKzM2Niw4IEBAIHJv d19pbnNfY2x1c3RfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KAogCQl9CiAJCWVyciA9IGJ0cl9jdXJf cGVzc2ltaXN0aWNfdXBkYXRlKAogCQkJQlRSX0tFRVBfUE9TX0ZMQUcsCi0JCQljdXJzb3IsIG9m ZnNldHMsIGhlYXAsIGJpZ19yZWMsIHVwZGF0ZSwKLQkJCTAsIHRociwgdGhyX2dldF90cngodGhy KS0+aWQsIG10cik7CisJCQljdXJzb3IsIG9mZnNldHMsIG9mZnNldHNfaGVhcCwgaGVhcCwKKwkJ CWJpZ19yZWMsIHVwZGF0ZSwgMCwgdGhyLCB0aHJfZ2V0X3RyeCh0aHIpLT5pZCwgbXRyKTsKIAl9 CiAKIAlyZXR1cm4oZXJyKTsKQEAgLTIxNDIsNyArMjE0NCw3IEBAIHJvd19pbnNfY2x1c3RfaW5k ZXhfZW50cnlfbG93KAogCXVsaW50CQluX3VuaXF1ZTsKIAliaWdfcmVjX3QqCWJpZ19yZWMJCT0g TlVMTDsKIAltdHJfdAkJbXRyOwotCW1lbV9oZWFwX3QqCWhlYXAJCT0gTlVMTDsKKwltZW1faGVh cF90KglvZmZzZXRzX2hlYXAJPSBOVUxMOwogCiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChp bmRleCkpOwogCkBAIC0yMTkyLDEwICsyMTk0LDExIEBAIGVycl9leGl0OgogCQkvKiBUaGVyZSBp cyBhbHJlYWR5IGFuIGluZGV4IGVudHJ5IHdpdGggYSBsb25nIGVub3VnaCBjb21tb24KIAkJcHJl Zml4LCB3ZSBtdXN0IGNvbnZlcnQgdGhlIGluc2VydCBpbnRvIGEgbW9kaWZ5IG9mIGFuCiAJCWV4 aXN0aW5nIHJlY29yZCAqLworCQltZW1faGVhcF90KgllbnRyeV9oZWFwID0gbWVtX2hlYXBfY3Jl YXRlKDEwMjQpOwogCiAJCWVyciA9IHJvd19pbnNfY2x1c3RfaW5kZXhfZW50cnlfYnlfbW9kaWZ5 KAotCQkJbW9kZSwgJmN1cnNvciwgJm9mZnNldHMsICZoZWFwLCAmYmlnX3JlYywgZW50cnksCi0J CQl0aHIsICZtdHIpOworCQkJbW9kZSwgJmN1cnNvciwgJm9mZnNldHMsICZvZmZzZXRzX2hlYXAs CisJCQllbnRyeV9oZWFwLCAmYmlnX3JlYywgZW50cnksIHRociwgJm10cik7CiAKIAkJaWYgKGJp Z19yZWMpIHsKIAkJCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOwpAQCAtMjI1NywxMyArMjI2MCwx NCBAQCBlcnJfZXhpdDoKIAkJfQogCiAJCW10cl9jb21taXQoJm10cik7CisJCW1lbV9oZWFwX2Zy ZWUoZW50cnlfaGVhcCk7CiAJfSBlbHNlIHsKIAkJcmVjX3QqCWluc2VydF9yZWM7CiAKIAkJaWYg KG1vZGUgIT0gQlRSX01PRElGWV9UUkVFKSB7CiAJCQl1dF9hZChtb2RlID09IEJUUl9NT0RJRllf TEVBRik7CiAJCQllcnIgPSBidHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0KAotCQkJCTAsICZjdXJz b3IsICZvZmZzZXRzLCAmaGVhcCwKKwkJCQkwLCAmY3Vyc29yLCAmb2Zmc2V0cywgJm9mZnNldHNf aGVhcCwKIAkJCQllbnRyeSwgJmluc2VydF9yZWMsICZiaWdfcmVjLAogCQkJCW5fZXh0LCB0aHIs ICZtdHIpOwogCQl9IGVsc2UgewpAQCAtMjI3Myw3ICsyMjc3LDcgQEAgZXJyX2V4aXQ6CiAJCQkJ Z290byBlcnJfZXhpdDsKIAkJCX0KIAkJCWVyciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNfaW5zZXJ0 KAotCQkJCTAsICZjdXJzb3IsICZvZmZzZXRzLCAmaGVhcCwKKwkJCQkwLCAmY3Vyc29yLCAmb2Zm c2V0cywgJm9mZnNldHNfaGVhcCwKIAkJCQllbnRyeSwgJmluc2VydF9yZWMsICZiaWdfcmVjLAog CQkJCW5fZXh0LCB0aHIsICZtdHIpOwogCQl9CkBAIC0yMjg2LDE1ICsyMjkwLDE1IEBAIGVycl9l eGl0OgogCQkJCWxvZ19tYWtlX2NoZWNrcG9pbnRfYXQoCiAJCQkJCUlCX1VMT05HTE9OR19NQVgs IFRSVUUpOyk7CiAJCQllcnIgPSByb3dfaW5zX2luZGV4X2VudHJ5X2JpZ19yZWMoCi0JCQkJZW50 cnksIGJpZ19yZWMsIG9mZnNldHMsICZoZWFwLCBpbmRleCwKKwkJCQllbnRyeSwgYmlnX3JlYywg b2Zmc2V0cywgJm9mZnNldHNfaGVhcCwgaW5kZXgsCiAJCQkJdGhyX2dldF90cngodGhyKS0+bXlz cWxfdGhkLAogCQkJCV9fRklMRV9fLCBfX0xJTkVfXyk7CiAJCQlkdHVwbGVfY29udmVydF9iYWNr X2JpZ19yZWMoaW5kZXgsIGVudHJ5LCBiaWdfcmVjKTsKIAkJfQogCX0KIAotCWlmIChoZWFwKSB7 Ci0JCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJaWYgKG9mZnNldHNfaGVhcCkgeworCQltZW1faGVh cF9mcmVlKG9mZnNldHNfaGVhcCk7CiAJfQogCiAJcmV0dXJuKGVycik7CkBAIC0yMzE0LDYgKzIz MTgsOCBAQCByb3dfaW5zX3NlY19pbmRleF9lbnRyeV9sb3coCiAJCQkJZGVwZW5kaW5nIG9uIHdo ZXRoZXIgd2Ugd2lzaCBvcHRpbWlzdGljIG9yCiAJCQkJcGVzc2ltaXN0aWMgZGVzY2VudCBkb3du IHRoZSBpbmRleCB0cmVlICovCiAJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogc2Vjb25k YXJ5IGluZGV4ICovCisJbWVtX2hlYXBfdCoJb2Zmc2V0c19oZWFwLAorCQkJCS8qITwgaW4vb3V0 OiBtZW1vcnkgaGVhcCB0aGF0IGNhbiBiZSBlbXB0aWVkICovCiAJbWVtX2hlYXBfdCoJaGVhcCwJ LyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFwICovCiAJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291 dDogaW5kZXggZW50cnkgdG8gaW5zZXJ0ICovCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1 ZXJ5IHRocmVhZCAqLwpAQCAtMjQwMyw3ICsyNDA5LDggQEAgcm93X2luc19zZWNfaW5kZXhfZW50 cnlfbG93KAogCQkJVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CiAKIAkJZXJyID0gcm93X2luc19z ZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KAotCQkJbW9kZSwgJmN1cnNvciwgJm9mZnNldHMsIGhl YXAsIGVudHJ5LCB0aHIsICZtdHIpOworCQkJbW9kZSwgJmN1cnNvciwgJm9mZnNldHMsCisJCQlv ZmZzZXRzX2hlYXAsIGhlYXAsIGVudHJ5LCB0aHIsICZtdHIpOwogCX0gZWxzZSB7CiAJCXJlY190 KgkJaW5zZXJ0X3JlYzsKIAkJYmlnX3JlY190KgliaWdfcmVjOwpAQCAtMjUzNyw2ICsyNTQ0LDcg QEAgcm93X2luc19zZWNfaW5kZXhfZW50cnkoCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1 ZXJ5IHRocmVhZCAqLwogewogCWRiZXJyX3QJCWVycjsKKwltZW1faGVhcF90KglvZmZzZXRzX2hl YXA7CiAJbWVtX2hlYXBfdCoJaGVhcDsKIAogCWlmIChVVF9MSVNUX0dFVF9GSVJTVChpbmRleC0+ dGFibGUtPmZvcmVpZ25fbGlzdCkpIHsKQEAgLTI1NTMsMjIgKzI1NjEsMjUgQEAgcm93X2luc19z ZWNfaW5kZXhfZW50cnkoCiAJCXJldHVybihEQl9TVUNDRVNTKTsKIAl9CiAKKwlvZmZzZXRzX2hl YXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CiAJaGVhcCA9IG1lbV9oZWFwX2NyZWF0ZSgxMDI0 KTsKIAogCS8qIFRyeSBmaXJzdCBvcHRpbWlzdGljIGRlc2NlbnQgdG8gdGhlIEItdHJlZSAqLwog Ci0JZXJyID0gcm93X2luc19zZWNfaW5kZXhfZW50cnlfbG93KEJUUl9NT0RJRllfTEVBRiwgaW5k ZXgsIGhlYXAsCi0JCQkJCSAgZW50cnksIHRocik7CisJZXJyID0gcm93X2luc19zZWNfaW5kZXhf ZW50cnlfbG93KEJUUl9NT0RJRllfTEVBRiwgaW5kZXgsCisJCQkJCSAgb2Zmc2V0c19oZWFwLCBo ZWFwLCBlbnRyeSwgdGhyKTsKIAlpZiAoZXJyID09IERCX0ZBSUwpIHsKIAkJbWVtX2hlYXBfZW1w dHkoaGVhcCk7CiAKIAkJLyogVHJ5IHRoZW4gcGVzc2ltaXN0aWMgZGVzY2VudCB0byB0aGUgQi10 cmVlICovCiAKIAkJZXJyID0gcm93X2luc19zZWNfaW5kZXhfZW50cnlfbG93KAotCQkJQlRSX01P RElGWV9UUkVFLCBpbmRleCwgaGVhcCwgZW50cnksIHRocik7CisJCQlCVFJfTU9ESUZZX1RSRUUs IGluZGV4LAorCQkJb2Zmc2V0c19oZWFwLCBoZWFwLCBlbnRyeSwgdGhyKTsKIAl9CiAKIAltZW1f aGVhcF9mcmVlKGhlYXApOworCW1lbV9oZWFwX2ZyZWUob2Zmc2V0c19oZWFwKTsKIAlyZXR1cm4o ZXJyKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBs b2cuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjQwOTU2MDgtMXNkZ3gxMWZsaWRkaDR2YQorKysgYi9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwNTI0MTExMjIzLTFsMDI3MnNiOXVwaWxhaTIKQEAgLTM0MCw2ICszNDAsOCBAQCBy b3dfbG9nX2FwcGx5X29wX2xvdygKIAlyb3dfbWVyZ2VfZHVwX3QqZHVwLAkJLyohPCBpbi9vdXQ6 IGZvciByZXBvcnRpbmcKIAkJCQkJZHVwbGljYXRlIGtleSBlcnJvcnMgKi8KIAlkYmVycl90Kgll cnJvciwJCS8qITwgb3V0OiBEQl9TVUNDRVNTIG9yIGVycm9yIGNvZGUgKi8KKwltZW1faGVhcF90 KglvZmZzZXRzX2hlYXAsCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVhcCBmb3IKKwkJCQkJYWxsb2Nh dGluZyBvZmZzZXRzOyBjYW4gYmUgZW1wdGllZCAqLwogCW1lbV9oZWFwX3QqCWhlYXAsCQkvKiE8 IGluL291dDogbWVtb3J5IGhlYXAgZm9yCiAJCQkJCWFsbG9jYXRpbmcgZGF0YSB0dXBsZXMgKi8K IAlpYm9vbAkJaGFzX2luZGV4X2xvY2ssIC8qITwgaW46IFRSVUUgaWYgaG9sZGluZyBpbmRleC0+ bG9jawpAQCAtMzg4LDcgKzM5MCw3IEBAIHJvd19sb2dfYXBwbHlfb3BfbG93KAogCQl1dF9hZChw YWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsKIAogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRz KHJlYywgaW5kZXgsIE5VTEwsCi0JCQkJCSAgVUxJTlRfVU5ERUZJTkVELCAmaGVhcCk7CisJCQkJ CSAgVUxJTlRfVU5ERUZJTkVELCAmb2Zmc2V0c19oZWFwKTsKIAkJdXBkYXRlID0gcm93X3VwZF9i dWlsZF9zZWNfcmVjX2RpZmZlcmVuY2VfYmluYXJ5KAogCQkJcmVjLCBpbmRleCwgb2Zmc2V0cywg ZW50cnksIGhlYXApOwogCkBAIC00OTQsNyArNDk2LDcgQEAgdXBkYXRlX3RoZV9yZWM6CiAJCQkJ CXwgQlRSX05PX0xPQ0tJTkdfRkxBRwogCQkJCQl8IEJUUl9DUkVBVEVfRkxBRwogCQkJCQl8IEJU Ul9LRUVQX1NZU19GTEFHLAotCQkJCQkmY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAsCisJCQkJCSZj dXJzb3IsICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAogCQkJCQl1cGRhdGUsIDAsIE5VTEwsIHRy eF9pZCwgJm10cik7CiAKIAkJCQlpZiAoKmVycm9yICE9IERCX0ZBSUwpIHsKQEAgLTUyNSw4ICs1 MjcsOSBAQCB1cGRhdGVfdGhlX3JlYzoKIAkJCQl8IEJUUl9OT19MT0NLSU5HX0ZMQUcKIAkJCQl8 IEJUUl9DUkVBVEVfRkxBRwogCQkJCXwgQlRSX0tFRVBfU1lTX0ZMQUcsCi0JCQkJJmN1cnNvciwg Jm9mZnNldHMsICZoZWFwLCAmYmlnX3JlYywKLQkJCQl1cGRhdGUsIDAsIE5VTEwsIHRyeF9pZCwg Jm10cik7CisJCQkJJmN1cnNvciwgJm9mZnNldHMsICZvZmZzZXRzX2hlYXAsCisJCQkJaGVhcCwg JmJpZ19yZWMsIHVwZGF0ZSwKKwkJCQkwLCBOVUxMLCB0cnhfaWQsICZtdHIpOwogCQkJdXRfYWQo IWJpZ19yZWMpOwogCQkJYnJlYWs7CiAKQEAgLTU2OSw3ICs1NzIsNyBAQCBpbnNlcnRfdGhlX3Jl YzoKIAkJCQkJQlRSX05PX1VORE9fTE9HX0ZMQUcKIAkJCQkJfCBCVFJfTk9fTE9DS0lOR19GTEFH CiAJCQkJCXwgQlRSX0NSRUFURV9GTEFHLAotCQkJCQkmY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAs CisJCQkJCSZjdXJzb3IsICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAogCQkJCQljb25zdF9jYXN0 PGR0dXBsZV90Kj4oZW50cnkpLAogCQkJCQkmcmVjLCAmYmlnX3JlYywKIAkJCQkJMCwgTlVMTCwg Jm10cik7CkBAIC01OTYsNyArNTk5LDcgQEAgaW5zZXJ0X3RoZV9yZWM6CiAJCQkJQlRSX05PX1VO RE9fTE9HX0ZMQUcKIAkJCQl8IEJUUl9OT19MT0NLSU5HX0ZMQUcKIAkJCQl8IEJUUl9DUkVBVEVf RkxBRywKLQkJCQkmY3Vyc29yLCAmb2Zmc2V0cywgJmhlYXAsCisJCQkJJmN1cnNvciwgJm9mZnNl dHMsICZvZmZzZXRzX2hlYXAsCiAJCQkJY29uc3RfY2FzdDxkdHVwbGVfdCo+KGVudHJ5KSwKIAkJ CQkmcmVjLCAmYmlnX3JlYywKIAkJCQkwLCBOVUxMLCAmbXRyKTsKQEAgLTYxNCw2ICs2MTcsNyBA QCBpbnNlcnRfdGhlX3JlYzoKIGZ1bmNfZXhpdDoKIAltdHJfY29tbWl0KCZtdHIpOwogCW1lbV9o ZWFwX2VtcHR5KGhlYXApOworCW1lbV9oZWFwX2VtcHR5KG9mZnNldHNfaGVhcCk7CiB9CiAKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CkBAIC02MjgsNiArNjMyLDggQEAgcm93X2xvZ19hcHBseV9vcCgKIAlyb3dfbWVyZ2VfZHVwX3Qq ZHVwLAkJLyohPCBpbi9vdXQ6IGZvciByZXBvcnRpbmcKIAkJCQkJZHVwbGljYXRlIGtleSBlcnJv cnMgKi8KIAlkYmVycl90KgllcnJvciwJCS8qITwgb3V0OiBEQl9TVUNDRVNTIG9yIGVycm9yIGNv ZGUgKi8KKwltZW1faGVhcF90KglvZmZzZXRzX2hlYXAsCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVh cCBmb3IKKwkJCQkJYWxsb2NhdGluZyBvZmZzZXRzOyBjYW4gYmUgZW1wdGllZCAqLwogCW1lbV9o ZWFwX3QqCWhlYXAsCQkvKiE8IGluL291dDogbWVtb3J5IGhlYXAgZm9yCiAJCQkJCWFsbG9jYXRp bmcgZGF0YSB0dXBsZXMgKi8KIAlpYm9vbAkJaGFzX2luZGV4X2xvY2ssIC8qITwgaW46IFRSVUUg aWYgaG9sZGluZyBpbmRleC0+bG9jawpAQCAtNzQyLDggKzc0OCw4IEBAIGNvcnJ1cHRlZDoKIAkJ cHV0YygnXG4nLCBzdGRlcnIpOwogCX0KICNlbmRpZiAvKiBST1dfTE9HX0FQUExZX1BSSU5UICov Ci0Jcm93X2xvZ19hcHBseV9vcF9sb3coaW5kZXgsIGR1cCwgZXJyb3IsIGhlYXAsIGhhc19pbmRl eF9sb2NrLAotCQkJICAgICBvcCwgdHJ4X2lkLCBlbnRyeSk7CisJcm93X2xvZ19hcHBseV9vcF9s b3coaW5kZXgsIGR1cCwgZXJyb3IsIG9mZnNldHNfaGVhcCwgaGVhcCwKKwkJCSAgICAgaGFzX2lu ZGV4X2xvY2ssIG9wLCB0cnhfaWQsIGVudHJ5KTsKIAlyZXR1cm4obXJlYyk7CiB9CiAKQEAgLTc2 NSw2ICs3NzEsNyBAQCByb3dfbG9nX2FwcGx5X29wcygKIAljb25zdCBtcmVjX3QqCW5leHRfbXJl YzsKIAljb25zdCBtcmVjX3QqCW1yZWNfZW5kPSBOVUxMOyAvKiBzaWxlbmNlIGJvZ3VzIHdhcm5p bmcgKi8KIAljb25zdCBtcmVjX3QqCW5leHRfbXJlY19lbmQ7CisJbWVtX2hlYXBfdCoJb2Zmc2V0 c19oZWFwOwogCW1lbV9oZWFwX3QqCWhlYXA7CiAJdWxpbnQqCQlvZmZzZXRzOwogCWlib29sCQlo YXNfaW5kZXhfbG9jazsKQEAgLTc4Myw2ICs3OTAsNyBAQCByb3dfbG9nX2FwcGx5X29wcygKIAlv ZmZzZXRzWzBdID0gaTsKIAlvZmZzZXRzWzFdID0gZGljdF9pbmRleF9nZXRfbl9maWVsZHMoaW5k ZXgpOwogCisJb2Zmc2V0c19oZWFwID0gbWVtX2hlYXBfY3JlYXRlKFVOSVZfUEFHRV9TSVpFKTsK IAloZWFwID0gbWVtX2hlYXBfY3JlYXRlKFVOSVZfUEFHRV9TSVpFKTsKIAloYXNfaW5kZXhfbG9j ayA9IFRSVUU7CiAKQEAgLTg5Miw4ICs5MDAsOCBAQCBhbGxfZG9uZToKIAkJbWVtY3B5KChtcmVj X3QqKSBtcmVjX2VuZCwgbmV4dF9tcmVjLAogCQkgICAgICAgKCZpbmRleC0+b25saW5lX2xvZy0+ aGVhZC5idWYpWzFdIC0gbXJlY19lbmQpOwogCQltcmVjID0gcm93X2xvZ19hcHBseV9vcCgKLQkJ CWluZGV4LCBkdXAsICZlcnJvciwgaGVhcCwgaGFzX2luZGV4X2xvY2ssCi0JCQlpbmRleC0+b25s aW5lX2xvZy0+aGVhZC5idWYsCisJCQlpbmRleCwgZHVwLCAmZXJyb3IsIG9mZnNldHNfaGVhcCwg aGVhcCwKKwkJCWhhc19pbmRleF9sb2NrLCBpbmRleC0+b25saW5lX2xvZy0+aGVhZC5idWYsCiAJ CQkoJmluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ1ZilbMV0sIG9mZnNldHMpOwogCQlpZiAoZXJy b3IgIT0gREJfU1VDQ0VTUykgewogCQkJZ290byBmdW5jX2V4aXQ7CkBAIC05ODAsOCArOTg4LDgg QEAgYWxsX2RvbmU6CiAJCX0KIAogCQluZXh0X21yZWMgPSByb3dfbG9nX2FwcGx5X29wKAotCQkJ aW5kZXgsIGR1cCwgJmVycm9yLCBoZWFwLCBoYXNfaW5kZXhfbG9jaywKLQkJCW1yZWMsIG1yZWNf ZW5kLCBvZmZzZXRzKTsKKwkJCWluZGV4LCBkdXAsICZlcnJvciwgb2Zmc2V0c19oZWFwLCBoZWFw LAorCQkJaGFzX2luZGV4X2xvY2ssIG1yZWMsIG1yZWNfZW5kLCBvZmZzZXRzKTsKIAogCQlpZiAo ZXJyb3IgIT0gREJfU1VDQ0VTUykgewogCQkJZ290byBmdW5jX2V4aXQ7CkBAIC0xMDQ4LDYgKzEw NTYsNyBAQCBmdW5jX2V4aXQ6CiAJfQogCiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKKwltZW1faGVh cF9mcmVlKG9mZnNldHNfaGVhcCk7CiAJdXRfZnJlZShvZmZzZXRzKTsKIAlyZXR1cm4oZXJyb3Ip OwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmNj JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW1vZC5jYwlyZXZpZDptYXJrby5tYWtl bGFAb3JhY2xlLmNvbS0yMDEyMDUyNDA5NTYwOC0xc2RneDExZmxpZGRoNHZhCisrKyBiL3N0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzB1bW9kLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNTI0MTExMjIzLTFsMDI3MnNiOXVwaWxhaTIKQEAgLTEwNyw2ICsxMDcsOCBAQCByb3df dW5kb19tb2RfY2x1c3RfbG93KAogLyo9PT09PT09PT09PT09PT09PT09Ki8KIAl1bmRvX25vZGVf dCoJbm9kZSwJLyohPCBpbjogcm93IHVuZG8gbm9kZSAqLwogCXVsaW50KioJCW9mZnNldHMsLyoh PCBvdXQ6IHJlY19nZXRfb2Zmc2V0cygpIG9uIHRoZSByZWNvcmQgKi8KKwltZW1faGVhcF90KioJ b2Zmc2V0c19oZWFwLAorCQkJCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVhcCB0aGF0IGNhbiBiZSBl bXB0aWVkICovCiAJbWVtX2hlYXBfdCoJaGVhcCwJLyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFwICov CiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogCW10cl90KgkJbXRy LAkvKiE8IGluOiBtdHI7IG11c3QgYmUgY29tbWl0dGVkIGJlZm9yZQpAQCAtMTM1LDEzICsxMzcs MTIgQEAgcm93X3VuZG9fbW9kX2NsdXN0X2xvdygKIAkgICAgICA9PSB0aHJfZ2V0X3RyeCh0aHIp LT5pZCk7CiAKIAlpZiAobW9kZSA9PSBCVFJfTU9ESUZZX0xFQUYpIHsKLQkJZXJyID0gYnRyX2N1 cl9vcHRpbWlzdGljX3VwZGF0ZShCVFJfTk9fTE9DS0lOR19GTEFHCi0JCQkJCQl8IEJUUl9OT19V TkRPX0xPR19GTEFHCi0JCQkJCQl8IEJUUl9LRUVQX1NZU19GTEFHLAotCQkJCQkJYnRyX2N1ciwK LQkJCQkJCW9mZnNldHMsICZoZWFwLCBub2RlLT51cGRhdGUsCi0JCQkJCQlub2RlLT5jbXBsX2lu Zm8sIHRociwKLQkJCQkJCXRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOworCQllcnIgPSBidHJf Y3VyX29wdGltaXN0aWNfdXBkYXRlKAorCQkJQlRSX05PX0xPQ0tJTkdfRkxBRyB8IEJUUl9OT19V TkRPX0xPR19GTEFHCisJCQl8IEJUUl9LRUVQX1NZU19GTEFHLAorCQkJYnRyX2N1ciwgb2Zmc2V0 cywgb2Zmc2V0c19oZWFwLAorCQkJbm9kZS0+dXBkYXRlLCBub2RlLT5jbXBsX2luZm8sCisJCQl0 aHIsIHRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOwogCX0gZWxzZSB7CiAJCWJpZ19yZWNfdCoJ ZHVtbXlfYmlnX3JlYzsKIApAQCAtMTUxLDcgKzE1Miw4IEBAIHJvd191bmRvX21vZF9jbHVzdF9s b3coCiAJCQlCVFJfTk9fTE9DS0lOR19GTEFHCiAJCQl8IEJUUl9OT19VTkRPX0xPR19GTEFHCiAJ CQl8IEJUUl9LRUVQX1NZU19GTEFHLAotCQkJYnRyX2N1ciwgb2Zmc2V0cywgJmhlYXAsICZkdW1t eV9iaWdfcmVjLCBub2RlLT51cGRhdGUsCisJCQlidHJfY3VyLCBvZmZzZXRzLCBvZmZzZXRzX2hl YXAsIGhlYXAsCisJCQkmZHVtbXlfYmlnX3JlYywgbm9kZS0+dXBkYXRlLAogCQkJbm9kZS0+Y21w bF9pbmZvLCB0aHIsIHRocl9nZXRfdHJ4KHRociktPmlkLCBtdHIpOwogCiAJCXV0X2EoIWR1bW15 X2JpZ19yZWMpOwpAQCAtMjU0LDE0ICsyNTYsMTUgQEAgcm93X3VuZG9fbW9kX2NsdXN0KAogCiAJ bXRyX3N0YXJ0KCZtdHIpOwogCi0JbWVtX2hlYXBfdCoJaGVhcAk9IG1lbV9oZWFwX2NyZWF0ZSgx MDI0KTsKLQl1bGludCoJCW9mZnNldHMJPSBOVUxMOworCW1lbV9oZWFwX3QqCWhlYXAJCT0gbWVt X2hlYXBfY3JlYXRlKDEwMjQpOworCW1lbV9oZWFwX3QqCW9mZnNldHNfaGVhcAk9IE5VTEw7CisJ dWxpbnQqCQlvZmZzZXRzCQk9IE5VTEw7CiAKIAkvKiBUcnkgb3B0aW1pc3RpYyBwcm9jZXNzaW5n IG9mIHRoZSByZWNvcmQsIGtlZXBpbmcgY2hhbmdlcyB3aXRoaW4KIAl0aGUgaW5kZXggcGFnZSAq LwogCi0JZXJyID0gcm93X3VuZG9fbW9kX2NsdXN0X2xvdyhub2RlLCAmb2Zmc2V0cywgaGVhcCwg dGhyLCAmbXRyLAotCQkJCSAgICAgQlRSX01PRElGWV9MRUFGKTsKKwllcnIgPSByb3dfdW5kb19t b2RfY2x1c3RfbG93KG5vZGUsICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAorCQkJCSAgICAgaGVh cCwgdGhyLCAmbXRyLCBCVFJfTU9ESUZZX0xFQUYpOwogCiAJaWYgKGVyciAhPSBEQl9TVUNDRVNT KSB7CiAJCWJ0cl9wY3VyX2NvbW1pdF9zcGVjaWZ5X210cihwY3VyLCAmbXRyKTsKQEAgLTI3MSw4 ICsyNzQsOSBAQCByb3dfdW5kb19tb2RfY2x1c3QoCiAKIAkJbXRyX3N0YXJ0KCZtdHIpOwogCi0J CWVyciA9IHJvd191bmRvX21vZF9jbHVzdF9sb3cobm9kZSwgJm9mZnNldHMsIGhlYXAsIHRociwg Jm10ciwKLQkJCQkJICAgICBCVFJfTU9ESUZZX1RSRUUpOworCQllcnIgPSByb3dfdW5kb19tb2Rf Y2x1c3RfbG93KAorCQkJbm9kZSwgJm9mZnNldHMsICZvZmZzZXRzX2hlYXAsIGhlYXAsIHRociwg Jm10ciwKKwkJCUJUUl9NT0RJRllfVFJFRSk7CiAJCXV0X2FkKGVyciA9PSBEQl9TVUNDRVNTIHx8 IGVyciA9PSBEQl9PVVRfT0ZfRklMRV9TUEFDRSk7CiAJfQogCkBAIC0zMjAsNiArMzI0LDkgQEAg cm93X3VuZG9fbW9kX2NsdXN0KAogCQl9CiAJfQogCisJaWYgKG9mZnNldHNfaGVhcCkgeworCQlt ZW1faGVhcF9mcmVlKG9mZnNldHNfaGVhcCk7CisJfQogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJ cmV0dXJuKGVycik7CiB9CkBAIC01MTcsNiArNTI0LDcgQEAgcm93X3VuZG9fbW9kX2RlbF91bm1h cmtfc2VjX2FuZF91bmRvX3VwZAogCiAJc3dpdGNoIChzZWFyY2hfcmVzdWx0KSB7CiAJCW1lbV9o ZWFwX3QqCWhlYXA7CisJCW1lbV9oZWFwX3QqCW9mZnNldHNfaGVhcDsKIAkJdWxpbnQqCQlvZmZz ZXRzOwogCWNhc2UgUk9XX0JVRkZFUkVEOgogCWNhc2UgUk9XX05PVF9ERUxFVEVEX1JFRjoKQEAg LTU0OCwxMSArNTU2LDExIEBAIHJvd191bmRvX21vZF9kZWxfdW5tYXJrX3NlY19hbmRfdW5kb191 cGQKIAkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CiAJCWhlYXAgPSBtZW1faGVhcF9jcmVhdGUo CiAJCQlzaXplb2YodXBkX3QpCi0JCQkrIFJFQ19PRkZTX0hFQURFUl9TSVpFICogc2l6ZW9mKCpv ZmZzZXRzKQotCQkJKyBkdHVwbGVfZ2V0X25fZmllbGRzKGVudHJ5KQotCQkJKiAoc2l6ZW9mKHVw ZF9maWVsZF90KSArIHNpemVvZiAqb2Zmc2V0cykpOwotCQlvZmZzZXRzID0gcmVjX2dldF9vZmZz ZXRzKGJ0cl9jdXJfZ2V0X3JlYyhidHJfY3VyKSwKLQkJCQkJICBpbmRleCwgTlVMTCwgVUxJTlRf VU5ERUZJTkVELCAmaGVhcCk7CisJCQkrIGR0dXBsZV9nZXRfbl9maWVsZHMoZW50cnkpICogc2l6 ZW9mKHVwZF9maWVsZF90KSk7CisJCW9mZnNldHNfaGVhcCA9IE5VTEw7CisJCW9mZnNldHMgPSBy ZWNfZ2V0X29mZnNldHMoCisJCQlidHJfY3VyX2dldF9yZWMoYnRyX2N1ciksCisJCQlpbmRleCwg TlVMTCwgVUxJTlRfVU5ERUZJTkVELCAmb2Zmc2V0c19oZWFwKTsKIAkJdXBkYXRlID0gcm93X3Vw ZF9idWlsZF9zZWNfcmVjX2RpZmZlcmVuY2VfYmluYXJ5KAogCQkJYnRyX2N1cl9nZXRfcmVjKGJ0 cl9jdXIpLCBpbmRleCwgb2Zmc2V0cywgZW50cnksIGhlYXApOwogCQlpZiAodXBkX2dldF9uX2Zp ZWxkcyh1cGRhdGUpID09IDApIHsKQEAgLTU2Niw4ICs1NzQsOCBAQCByb3dfdW5kb19tb2RfZGVs X3VubWFya19zZWNfYW5kX3VuZG9fdXBkCiAJCQkvKiBUT0RPOiBwYXNzIG9mZnNldHMsIG5vdCAm b2Zmc2V0cyAqLwogCQkJZXJyID0gYnRyX2N1cl9vcHRpbWlzdGljX3VwZGF0ZSgKIAkJCQlCVFJf S0VFUF9TWVNfRkxBRyB8IEJUUl9OT19MT0NLSU5HX0ZMQUcsCi0JCQkJYnRyX2N1ciwgJm9mZnNl dHMsICZoZWFwLCB1cGRhdGUsIDAsIHRociwKLQkJCQl0aHJfZ2V0X3RyeCh0aHIpLT5pZCwgJm10 cik7CisJCQkJYnRyX2N1ciwgJm9mZnNldHMsICZvZmZzZXRzX2hlYXAsCisJCQkJdXBkYXRlLCAw LCB0aHIsIHRocl9nZXRfdHJ4KHRociktPmlkLCAmbXRyKTsKIAkJCXN3aXRjaCAoZXJyKSB7CiAJ CQljYXNlIERCX09WRVJGTE9XOgogCQkJY2FzZSBEQl9VTkRFUkZMT1c6CkBAIC01ODAsMTIgKzU4 OCwxNCBAQCByb3dfdW5kb19tb2RfZGVsX3VubWFya19zZWNfYW5kX3VuZG9fdXBkCiAJCQl1dF9h KG1vZGUgPT0gQlRSX01PRElGWV9UUkVFKTsKIAkJCWVyciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNf dXBkYXRlKAogCQkJCUJUUl9LRUVQX1NZU19GTEFHIHwgQlRSX05PX0xPQ0tJTkdfRkxBRywKLQkJ CQlidHJfY3VyLCAmb2Zmc2V0cywgJmhlYXAsICZkdW1teV9iaWdfcmVjLAorCQkJCWJ0cl9jdXIs ICZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLAorCQkJCWhlYXAsICZkdW1teV9iaWdfcmVjLAogCQkJ CXVwZGF0ZSwgMCwgdGhyLCB0aHJfZ2V0X3RyeCh0aHIpLT5pZCwgJm10cik7CiAJCQl1dF9hKCFk dW1teV9iaWdfcmVjKTsKIAkJfQogCiAJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJCW1lbV9oZWFw X2ZyZWUob2Zmc2V0c19oZWFwKTsKIAl9CiAKIAlidHJfcGN1cl9jbG9zZSgmcGN1cik7Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNv bS0yMDEyMDUyNDA5NTYwOC0xc2RneDExZmxpZGRoNHZhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzB1cGQuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjQxMTEy MjMtMWwwMjcyc2I5dXBpbGFpMgpAQCAtMjA2Niw2ICsyMDY2LDcgQEAgcm93X3VwZF9jbHVzdF9y ZWMoCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLwogCW10cl90KgkJ bXRyKQkvKiE8IGluOiBtdHI7IGdldHMgY29tbWl0dGVkIGhlcmUgKi8KIHsKKwltZW1faGVhcF90 KglvZmZzZXRzX2hlYXA7CiAJbWVtX2hlYXBfdCoJaGVhcDsKIAliaWdfcmVjX3QqCWJpZ19yZWMJ PSBOVUxMOwogCWJ0cl9wY3VyX3QqCXBjdXI7CkBAIC0yMDgzLDcgKzIwODQsNyBAQCByb3dfdXBk X2NsdXN0X3JlYygKIAl1dF9hZCghcmVjX2dldF9kZWxldGVkX2ZsYWcoYnRyX3BjdXJfZ2V0X3Jl YyhwY3VyKSwKIAkJCQkgICAgZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpKTsKIAot CWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CisJb2Zmc2V0c19oZWFwID0gTlVMTDsKIAog CS8qIFRyeSBvcHRpbWlzdGljIHVwZGF0aW5nIG9mIHRoZSByZWNvcmQsIGtlZXBpbmcgY2hhbmdl cyB3aXRoaW4KIAl0aGUgcGFnZTsgd2UgZG8gbm90IGNoZWNrIGxvY2tzIGJlY2F1c2Ugd2UgYXNz dW1lIHRoZSB4LWxvY2sgb24gdGhlCkBAIC0yMDkzLDcgKzIwOTQsNyBAQCByb3dfdXBkX2NsdXN0 X3JlYygKIAkJLyogVE9ETzogcmV1c2Ugb2Zmc2V0cyBmcm9tIGNhbGxlciAqLwogCQlvZmZzZXRz ID0gcmVjX2dldF9vZmZzZXRzKAogCQkJYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpLAotCQkJaW5k ZXgsIG9mZnNldHMsIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQkJaW5kZXgsIG9mZnNldHMs IFVMSU5UX1VOREVGSU5FRCwgJm9mZnNldHNfaGVhcCk7CiAKIAkJZXJyID0gYnRyX2N1cl91cGRh dGVfaW5fcGxhY2UoCiAJCQlCVFJfTk9fTE9DS0lOR19GTEFHLCBidHJfY3VyLApAQCAtMjEwMiw3 ICsyMTAzLDcgQEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJfSBlbHNlIHsKIAkJZXJyID0gYnRyX2N1 cl9vcHRpbWlzdGljX3VwZGF0ZSgKIAkJCUJUUl9OT19MT0NLSU5HX0ZMQUcsIGJ0cl9jdXIsCi0J CQkmb2Zmc2V0cywgJmhlYXAsIG5vZGUtPnVwZGF0ZSwKKwkJCSZvZmZzZXRzLCAmb2Zmc2V0c19o ZWFwLCBub2RlLT51cGRhdGUsCiAJCQlub2RlLT5jbXBsX2luZm8sIHRociwgdGhyX2dldF90cngo dGhyKS0+aWQsIG10cik7CiAJfQogCkBAIC0yMTM0LDkgKzIxMzUsMTIgQEAgcm93X3VwZF9jbHVz dF9yZWMoCiAJdXRfYWQoIXJlY19nZXRfZGVsZXRlZF9mbGFnKGJ0cl9wY3VyX2dldF9yZWMocGN1 ciksCiAJCQkJICAgIGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKSk7CiAKKwloZWFw ID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOworCiAJZXJyID0gYnRyX2N1cl9wZXNzaW1pc3RpY191 cGRhdGUoCiAJCUJUUl9OT19MT0NLSU5HX0ZMQUcgfCBCVFJfS0VFUF9QT1NfRkxBRywgYnRyX2N1 ciwKLQkJJm9mZnNldHMsICZoZWFwLCAmYmlnX3JlYywgbm9kZS0+dXBkYXRlLCBub2RlLT5jbXBs X2luZm8sCisJCSZvZmZzZXRzLCAmb2Zmc2V0c19oZWFwLCBoZWFwLCAmYmlnX3JlYywKKwkJbm9k ZS0+dXBkYXRlLCBub2RlLT5jbXBsX2luZm8sCiAJCXRociwgdGhyX2dldF90cngodGhyKS0+aWQs IG10cik7CiAJaWYgKGJpZ19yZWMpIHsKIAkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CkBAIC0y MTg0LDggKzIxODgsMTEgQEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJfQogCiAJbXRyX2NvbW1pdCht dHIpOwotZnVuY19leGl0OgogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CitmdW5jX2V4aXQ6CisJaWYg KG9mZnNldHNfaGVhcCkgeworCQltZW1faGVhcF9mcmVlKG9mZnNldHNfaGVhcCk7CisJfQogCiAJ aWYgKGJpZ19yZWMpIHsKIAkJZHR1cGxlX2JpZ19yZWNfZnJlZShiaWdfcmVjKTsKCk5vIGJ1bmRs ZSAocmVhc29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku