From: marko.makela Date: June 16 2011 9:30am Subject: bzr push into mysql-5.5 branch (marko.makela:3454 to 3455) List-Archive: http://lists.mysql.com/commits/139303 Message-Id: <201106160930.p5G9UxnW027607@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0913828196==" --===============0913828196== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM0NTUgTWFya28gTcOka2Vsw6QJMjAxMS0wNi0xNiBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3Fs LTUuMSB0byBteXNxbC01LjUuCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv YnRyL2J0cjBidHIuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3VyLmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAogICAgICBzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvYnRyMGN1ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3Vy LmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3BhZ2UwY3VyLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdlMHBhZ2Uu aAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdlLmljCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3JlbTByZWMuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwcncuaWMK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3N5bmMwc3luYy5oCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS91bml2LmkKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2Uw Y3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCiAgICAgIHN0b3Jh Z2UvaW5ub2Jhc2Uvcm93L3JvdzBpbnMuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw cm93LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCiAgICAgIHN0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzB2ZXJzLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMw cncuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS90cngvdHJ4MHJlYy5jCiAzNDU0IEpvcmdlbiBMb2xhbmQJMjAxMS0wNi0xNgog ICAgICBCVUcjMTE4ODIxMTA6IFVQREFURSBSRVBPUlRTIEVSX0tFWV9OT1RfRk9VTkQgSUYgVEFC TEUgSVMgCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFRCBUV0lDRQogICAgICAKICAgICAgRm9y IG11bHRpIHVwZGF0ZSBpdCBpcyBub3QgYWxsb3dlZCB0byB1cGRhdGUgYSBjb2x1bW4KICAgICAg b2YgYSB0YWJsZSBpZiB0aGF0IHRhYmxlIGlzIGFjY2Vzc2VkIHRocm91Z2ggbXVsdGlwbGUgYWxp YXNlcwogICAgICBhbmQgZWl0aGVyCiAgICAgIDEpIHRoZSB1cGRhdGVkIGNvbHVtbiBpcyB1c2Vk IGFzIHBhcnRpdGlvbmluZyBrZXkKICAgICAgMikgdGhlIHVwZGF0ZWQgY29sdW1uIGlzIHBhcnQg b2YgdGhlIHByaW1hcnkga2V5IAogICAgICAgICBhbmQgdGhlIHByaW1hcnkga2V5IGlzIGNsdXN0 ZXJlZAogICAgICAKICAgICAgVGhpcyBjaGVjayBpcyBkb25lIGluIHVuc2FmZV9rZXlfdXBkYXRl KCkuCiAgICAgIAogICAgICBUaGUgYnVnIHdhcyB0aGF0IGZvciBjYXNlIDIpLCBpdCB3YXMgY2hl Y2tlZCB3aGV0aGVyCiAgICAgIHVwZGF0ZWRfY29sdW1uX251bWJlciA9PSB0YWJsZV9zaGFyZS0+ cHJpbWFyeV9rZXkgCiAgICAgIEhvd2V2ZXIsIHRoZSBwcmltYXJ5X2tleSB2YXJpYWJsZSBpcyB0 aGUgaW5kZXggbnVtYmVyIG9mIHRoZSAKICAgICAgcHJpbWFyeSBrZXksIG5vdCBhIGNvbHVtbiBu dW1iZXIuCiAgICAgIAogICAgICBQcmlvciB0byB0aGlzIGJ1Z2ZpeCwgdGhlIGZpcnN0IGNvbHVt biB3YXMgd3JvbmdseSBiZWxpZXZlZCB0byBiZQogICAgICB0aGUgcHJpbWFyeSBrZXkuIFRoZSBj b2x1bW5zIGNvdmVyZWQgYnkgYW4gaW5kZXggaXMgZm91bmQgaW4KICAgICAgdGFibGUtPmtleV9p bmZvW2lkeF9udW1iZXJdLT5rZXlfcGFydC4gVGhlIGJ1Z2ZpeCBpcyB0byBjaGVjayBpZgogICAg ICBhbnkgb2YgdGhlIGNvbHVtbnMgaW4gdGhlIGtleXBhcnRzIG9mIHRoZSBwcmltYXJ5IGtleSBh cmUKICAgICAgdXBkYXRlZC4KICAgICAgCiAgICAgIFRoZSB1c2VyLXZpc2libGUgZWZmZWN0IGlz IHRoYXQgZm9yIHN0b3JhZ2UgZW5naW5lcyB3aXRoCiAgICAgIGNsdXN0ZXJlZCBwcmltYXJ5IGtl eSAoZS5nLiBJbm5vREIgYnV0IG5vdCBNeUlTQU0pIHF1ZXJpZXMKICAgICAgbGlrZSAKICAgICAg IlVQREFURSB0MSBBUyBBIEpPSU4gdDIgQVMgQiBTRVQgQS5wcmlta2V5PS4uLiIKICAgICAgd2ls bCBub3cgZXJyb3Igd2l0aCAKICAgICAgIkVSUk9SIEhZMDAwOiBQcmltYXJ5IGtleS9wYXJ0aXRp b24ga2V5IHVwZGF0ZSBpcyBub3QgYWxsb3dlZCAKICAgICAgc2luY2UgdGhlIHRhYmxlIGlzIHVw ZGF0ZWQgYm90aCBhcyAnQScgYW5kICdCJy4iIAogICAgICBpbnN0ZWFkIG9mIAogICAgICAiRVJS T1IgMTAzMiAoSFkwMDApOiBDYW4ndCBmaW5kIHJlY29yZCBpbiAndDFfdGInIgogICAgICBldmVu IGlmIHByaW1rZXkgaXMgbm90IHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHRhYmxlLiBUaGlzIAog ICAgICB3YXMgdGhlIGludGVuZGVkIGJlaGF2aW9yIG9mIGJ1Z2ZpeCAxMTc2NDUyOS4KICAgICBA IG15c3FsLXRlc3Qvci9tdWx0aV91cGRhdGUucmVzdWx0CiAgICAgICAgQWRkIHRlc3QgZm9yIGJ1 ZyMxMTg4MjExMAogICAgIEAgbXlzcWwtdGVzdC9yL211bHRpX3VwZGF0ZV9pbm5vZGIucmVzdWx0 CiAgICAgICAgQWRkIHRlc3QgZm9yIGJ1ZyMxMTg4MjExMAogICAgIEAgbXlzcWwtdGVzdC90L211 bHRpX3VwZGF0ZS50ZXN0CiAgICAgICAgQWRkIHRlc3QgZm9yIGJ1ZyMxMTg4MjExMAogICAgIEAg bXlzcWwtdGVzdC90L211bHRpX3VwZGF0ZV9pbm5vZGIudGVzdAogICAgICAgIEFkZCB0ZXN0IGZv ciBidWcjMTE4ODIxMTAKICAgICBAIHNxbC9zcWxfdXBkYXRlLmNjCiAgICAgICAgdW5zYWZlX2tl eV91cGRhdGUoKSB3cm9uZ2x5IGNoZWNrZWQgaWYgdGhlIHByaW1hcnkga2V5IGluZGV4CiAgICAg ICAgbnVtYmVyIHdhcyB0aGUgc2FtZSBhcyB1cGRhdGVkIGNvbHVtbiBudW1iZXIuIE5vdyBpdCBp cyBjaGVja2VkCiAgICAgICAgd2hldGhlciBhbnkgb2YgdGhlIGNvbHVtbnMgbWFraW5nIHVwIHRo ZSBwcmltYXJ5IGtleSBpcyB1cGRhdGVkLgogICAgIEAgc3FsL3RhYmxlLmgKICAgICAgICBGaXgg Y29tbWVudCBvbiBUQUJMRV9TSEFSRTo6cHJpbWFyeV9rZXkuIEluY29ycmVjdCBjb21tZW50CiAg ICAgICAgd2FzIGludHJvZHVjZWQgYnkgYW4gZWFybGllciBtZXJnZSBjb25mbGljdCAoYXMgcGVy IGRsZW5ldikKCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL211bHRpX3VwZGF0ZS5y ZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL211bHRpX3VwZGF0ZV9pbm5vZGIucmVzdWx0CiAgICAg IG15c3FsLXRlc3QvdC9tdWx0aV91cGRhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3QvbXVsdGlf dXBkYXRlX2lubm9kYi50ZXN0CiAgICAgIHNxbC9zcWxfdXBkYXRlLmNjCiAgICAgIHNxbC90YWJs ZS5oCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmMnCi0t LSBhL3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9y YWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwYnRyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2 MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTQsIDIwMTAsIElubm9iYXNlIE95LiBBbGwgUmln aHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl cgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTIyNzUsNyArMjI3NSw3IEBAIGJ0cl9hdHRhY2hf aGFsZl9wYWdlcygKIC8qPT09PT09PT09PT09PT09PT09Ki8KIAlkaWN0X2luZGV4X3QqCWluZGV4 LAkJLyohPCBpbjogdGhlIGluZGV4IHRyZWUgKi8KIAlidWZfYmxvY2tfdCoJYmxvY2ssCQkvKiE8 IGluL291dDogcGFnZSB0byBiZSBzcGxpdCAqLwotCXJlY190KgkJc3BsaXRfcmVjLAkvKiE8IGlu OiBmaXJzdCByZWNvcmQgb24gdXBwZXIKKwljb25zdCByZWNfdCoJc3BsaXRfcmVjLAkvKiE8IGlu OiBmaXJzdCByZWNvcmQgb24gdXBwZXIKIAkJCQkJaGFsZiBwYWdlICovCiAJYnVmX2Jsb2NrX3Qq CW5ld19ibG9jaywJLyohPCBpbi9vdXQ6IHRoZSBuZXcgaGFsZiBwYWdlICovCiAJdWxpbnQJCWRp cmVjdGlvbiwJLyohPCBpbjogRlNQX1VQIG9yIEZTUF9ET1dOICovCkBAIC0yOTY3LDE1ICsyOTY3 LDE2IEBAIGJ0cl9ub2RlX3B0cl9kZWxldGUoCiAJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CiAK IAlpZiAoIWNvbXByZXNzZWQpIHsKLQkJYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoJmN1cnNv ciwgbXRyKTsKKwkJYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoJmN1cnNvciwgRkFMU0UsIG10 cik7CiAJfQogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIElmIHBhZ2UgaXMgdGhlIG9ubHkgb24gaXRzIGxldmVs LCB0aGlzIGZ1bmN0aW9uIG1vdmVzIGl0cyByZWNvcmRzIHRvIHRoZQotZmF0aGVyIHBhZ2UsIHRo dXMgcmVkdWNpbmcgdGhlIHRyZWUgaGVpZ2h0LiAqLworZmF0aGVyIHBhZ2UsIHRodXMgcmVkdWNp bmcgdGhlIHRyZWUgaGVpZ2h0LgorQHJldHVybiBmYXRoZXIgYmxvY2sgKi8KIHN0YXRpYwotdm9p ZAorYnVmX2Jsb2NrX3QqCiBidHJfbGlmdF9wYWdlX3VwKAogLyo9PT09PT09PT09PT09Ki8KIAlk aWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBpbmRleCB0cmVlICovCkBAIC0zMDkyLDYgKzMw OTMsOCBAQCBidHJfbGlmdF9wYWdlX3VwKAogCX0KIAl1dF9hZChwYWdlX3ZhbGlkYXRlKGZhdGhl cl9wYWdlLCBpbmRleCkpOwogCXV0X2FkKGJ0cl9jaGVja19ub2RlX3B0cihpbmRleCwgZmF0aGVy X2Jsb2NrLCBtdHIpKTsKKworCXJldHVybihmYXRoZXJfYmxvY2spOwogfQogCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK QEAgLTMxMDgsMTEgKzMxMTEsMTMgQEAgVU5JVl9JTlRFUk4KIGlib29sCiBidHJfY29tcHJlc3Mo CiAvKj09PT09PT09PSovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBvbiB0 aGUgcGFnZSB0byBtZXJnZSBvciBsaWZ0OwotCQkJCXRoZSBwYWdlIG11c3Qgbm90IGJlIGVtcHR5 OiBpbiByZWNvcmQgZGVsZXRlCi0JCQkJdXNlIGJ0cl9kaXNjYXJkX3BhZ2UgaWYgdGhlIHBhZ2Ug d291bGQgYmVjb21lCi0JCQkJZW1wdHkgKi8KLQltdHJfdCoJCW10cikJLyohPCBpbjogbXRyICov CisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW4vb3V0OiBjdXJzb3Igb24gdGhlIHBhZ2UgdG8g bWVyZ2UKKwkJCQlvciBsaWZ0OyB0aGUgcGFnZSBtdXN0IG5vdCBiZSBlbXB0eToKKwkJCQl3aGVu IGRlbGV0aW5nIHJlY29yZHMsIHVzZSBidHJfZGlzY2FyZF9wYWdlKCkKKwkJCQlpZiB0aGUgcGFn ZSB3b3VsZCBiZWNvbWUgZW1wdHkgKi8KKwlpYm9vbAkJYWRqdXN0LAkvKiE8IGluOiBUUlVFIGlm IHNob3VsZCBhZGp1c3QgdGhlCisJCQkJY3Vyc29yIHBvc2l0aW9uIGV2ZW4gaWYgY29tcHJlc3Np b24gb2NjdXJzICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9u ICovCiB7CiAJZGljdF9pbmRleF90KglpbmRleDsKIAl1bGludAkJc3BhY2U7CkBAIC0zMTMwLDEy ICszMTM1LDE0IEBAIGJ0cl9jb21wcmVzcygKIAl1bGludCoJCW9mZnNldHM7CiAJdWxpbnQJCWRh dGFfc2l6ZTsKIAl1bGludAkJbl9yZWNzOworCXVsaW50CQludGhfcmVjOwogCXVsaW50CQltYXhf aW5zX3NpemU7CiAJdWxpbnQJCW1heF9pbnNfc2l6ZV9yZW9yZzsKIAogCWJsb2NrID0gYnRyX2N1 cl9nZXRfYmxvY2soY3Vyc29yKTsKIAlwYWdlID0gYnRyX2N1cl9nZXRfcGFnZShjdXJzb3IpOwog CWluZGV4ID0gYnRyX2N1cl9nZXRfaW5kZXgoY3Vyc29yKTsKKwogCXV0X2EoKGlib29sKSAhIXBh Z2VfaXNfY29tcChwYWdlKSA9PSBkaWN0X3RhYmxlX2lzX2NvbXAoaW5kZXgtPnRhYmxlKSk7CiAK IAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgp LApAQCAtMzE1Niw2ICszMTYzLDEwIEBAIGJ0cl9jb21wcmVzcygKIAlvZmZzZXRzID0gYnRyX3Bh Z2VfZ2V0X2ZhdGhlcl9ibG9jayhOVUxMLCBoZWFwLCBpbmRleCwgYmxvY2ssIG10ciwKIAkJCQkJ ICAgICZmYXRoZXJfY3Vyc29yKTsKIAorCWlmIChhZGp1c3QpIHsKKwkJbnRoX3JlYyA9IHBhZ2Vf cmVjX2dldF9uX3JlY3NfYmVmb3JlKGJ0cl9jdXJfZ2V0X3JlYyhjdXJzb3IpKTsKKwl9CisKIAkv KiBEZWNpZGUgdGhlIHBhZ2UgdG8gd2hpY2ggd2UgdHJ5IHRvIG1lcmdlIGFuZCB3aGljaCB3aWxs IGluaGVyaXQKIAl0aGUgbG9ja3MgKi8KIApAQCAtMzE4Miw5ICszMTkzLDkgQEAgYnRyX2NvbXBy ZXNzKAogCX0gZWxzZSB7CiAJCS8qIFRoZSBwYWdlIGlzIHRoZSBvbmx5IG9uZSBvbiB0aGUgbGV2 ZWwsIGxpZnQgdGhlIHJlY29yZHMKIAkJdG8gdGhlIGZhdGhlciAqLwotCQlidHJfbGlmdF9wYWdl X3VwKGluZGV4LCBibG9jaywgbXRyKTsKLQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKLQkJcmV0dXJu KFRSVUUpOworCisJCW1lcmdlX2Jsb2NrID0gYnRyX2xpZnRfcGFnZV91cChpbmRleCwgYmxvY2ss IG10cik7CisJCWdvdG8gZnVuY19leGl0OwogCX0KIAogCW5fcmVjcyA9IHBhZ2VfZ2V0X25fcmVj cyhwYWdlKTsKQEAgLTMyNjYsNiArMzI3NywxMCBAQCBlcnJfZXhpdDoKIAogCQlidHJfbm9kZV9w dHJfZGVsZXRlKGluZGV4LCBibG9jaywgbXRyKTsKIAkJbG9ja191cGRhdGVfbWVyZ2VfbGVmdCht ZXJnZV9ibG9jaywgb3JpZ19wcmVkLCBibG9jayk7CisKKwkJaWYgKGFkanVzdCkgeworCQkJbnRo X3JlYyArPSBwYWdlX3JlY19nZXRfbl9yZWNzX2JlZm9yZShvcmlnX3ByZWQpOworCQl9CiAJfSBl bHNlIHsKIAkJcmVjX3QqCQlvcmlnX3N1Y2M7CiAjaWZkZWYgVU5JVl9CVFJfREVCVUcKQEAgLTMz MzAsNyArMzM0NSw2IEBAIGVycl9leGl0OgogCX0KIAogCWJ0cl9ibG9iX2RiZ19yZW1vdmUocGFn ZSwgaW5kZXgsICJidHJfY29tcHJlc3MiKTsKLQltZW1faGVhcF9mcmVlKGhlYXApOwogCiAJaWYg KCFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSAmJiBwYWdlX2lzX2xlYWYobWVyZ2VfcGFnZSkp IHsKIAkJLyogVXBkYXRlIHRoZSBmcmVlIGJpdHMgb2YgdGhlIEItdHJlZSBwYWdlIGluIHRoZQpA QCAtMzM4Miw2ICszMzk2LDE2IEBAIGVycl9leGl0OgogCWJ0cl9wYWdlX2ZyZWUoaW5kZXgsIGJs b2NrLCBtdHIpOwogCiAJdXRfYWQoYnRyX2NoZWNrX25vZGVfcHRyKGluZGV4LCBtZXJnZV9ibG9j aywgbXRyKSk7CitmdW5jX2V4aXQ6CisJbWVtX2hlYXBfZnJlZShoZWFwKTsKKworCWlmIChhZGp1 c3QpIHsKKwkJYnRyX2N1cl9wb3NpdGlvbigKKwkJCWluZGV4LAorCQkJcGFnZV9yZWNfZ2V0X250 aChtZXJnZV9ibG9jay0+ZnJhbWUsIG50aF9yZWMpLAorCQkJbWVyZ2VfYmxvY2ssIGN1cnNvcik7 CisJfQorCiAJcmV0dXJuKFRSVUUpOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9p bm5vYmFzZS9idHIvYnRyMGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwY3Vy LmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXlt ZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCXJldmlkOm1hcmtv Lm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTE5 NzIsNyArMTk3Miw2IEBAIGJ0cl9jdXJfb3B0aW1pc3RpY191cGRhdGUoCiAJdWxpbnQJCW9sZF9y ZWNfc2l6ZTsKIAlkdHVwbGVfdCoJbmV3X2VudHJ5OwogCXJvbGxfcHRyX3QJcm9sbF9wdHI7Ci0J dHJ4X3QqCQl0cng7CiAJbWVtX2hlYXBfdCoJaGVhcDsKIAl1bGludAkJaTsKIAl1bGludAkJbl9l eHQ7CkBAIC0xOTg5LDkgKzE5ODgsMTAgQEAgYnRyX2N1cl9vcHRpbWlzdGljX3VwZGF0ZSgKIAog CWhlYXAgPSBtZW1faGVhcF9jcmVhdGUoMTAyNCk7CiAJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0 cyhyZWMsIGluZGV4LCBOVUxMLCBVTElOVF9VTkRFRklORUQsICZoZWFwKTsKLSNpZmRlZiBVTklW X0JMT0JfTlVMTF9ERUJVRwotCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9m ZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2lmIGRlZmluZWQg VU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCXV0X2EoIXJlY19v ZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9mZnNldHMpCisJICAgICB8fCB0cnhfaXNfcmVjdih0 aHJfZ2V0X3RyeCh0aHIpKSk7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElH SFRfREVCVUcgKi8KIAogI2lmZGVmIFVOSVZfREVCVUcKIAlpZiAoYnRyX2N1cl9wcmludF9yZWNv cmRfb3BzICYmIHRocikgewpAQCAtMjExNCwxMyArMjExNCwxMSBAQCBhbnlfZXh0ZXJuOgogCiAJ cGFnZV9jdXJfbW92ZV90b19wcmV2KHBhZ2VfY3Vyc29yKTsKIAotCXRyeCA9IHRocl9nZXRfdHJ4 KHRocik7Ci0KIAlpZiAoIShmbGFncyAmIEJUUl9LRUVQX1NZU19GTEFHKSkgewogCQlyb3dfdXBk X2luZGV4X2VudHJ5X3N5c19maWVsZChuZXdfZW50cnksIGluZGV4LCBEQVRBX1JPTExfUFRSLAog CQkJCQkgICAgICByb2xsX3B0cik7CiAJCXJvd191cGRfaW5kZXhfZW50cnlfc3lzX2ZpZWxkKG5l d19lbnRyeSwgaW5kZXgsIERBVEFfVFJYX0lELAotCQkJCQkgICAgICB0cngtPmlkKTsKKwkJCQkJ ICAgICAgdGhyX2dldF90cngodGhyKS0+aWQpOwogCX0KIAogCS8qIFRoZXJlIGFyZSBubyBleHRl cm5hbGx5IHN0b3JlZCBjb2x1bW5zIGluIG5ld19lbnRyeSAqLwpAQCAtMjIwNiw3ICsyMjA0LDkg QEAgYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAvKj09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2luZywgbG9ja2luZywgYW5kIHJv bGxiYWNrCiAJCQkJZmxhZ3MgKi8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29y IG9uIHRoZSByZWNvcmQgdG8gdXBkYXRlICovCisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW4v b3V0OiBjdXJzb3Igb24gdGhlIHJlY29yZCB0byB1cGRhdGU7CisJCQkJY3Vyc29yIG1heSBiZWNv bWUgaW52YWxpZCBpZiAqYmlnX3JlYyA9PSBOVUxMCisJCQkJfHwgIShmbGFncyAmIEJUUl9LRUVQ X1BPU19GTEFHKSAqLwogCW1lbV9oZWFwX3QqKgloZWFwLAkvKiE8IGluL291dDogcG9pbnRlciB0 byBtZW1vcnkgaGVhcCwgb3IgTlVMTCAqLwogCWJpZ19yZWNfdCoqCWJpZ19yZWMsLyohPCBvdXQ6 IGJpZyByZWMgdmVjdG9yIHdob3NlIGZpZWxkcyBoYXZlIHRvCiAJCQkJYmUgc3RvcmVkIGV4dGVy bmFsbHkgYnkgdGhlIGNhbGxlciwgb3IgTlVMTCAqLwpAQCAtMjM0NSw3ICsyMzQ1LDcgQEAgYnRy X2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAJcmVjb3JkIHRvIGJlIGluc2VydGVkOiB3ZSBoYXZl IHRvIHJlbWVtYmVyIHdoaWNoIGZpZWxkcyB3ZXJlIHN1Y2ggKi8KIAogCXV0X2FkKCFwYWdlX2lz X2NvbXAocGFnZSkgfHwgIXJlY19nZXRfbm9kZV9wdHJfZmxhZyhyZWMpKTsKLQlvZmZzZXRzID0g cmVjX2dldF9vZmZzZXRzKHJlYywgaW5kZXgsIG9mZnNldHMsIFVMSU5UX1VOREVGSU5FRCwgaGVh cCk7CisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRleCwgb2Zmc2V0cykpOwogCW5f ZXh0ICs9IGJ0cl9wdXNoX3VwZGF0ZV9leHRlcm5fZmllbGRzKG5ld19lbnRyeSwgdXBkYXRlLCAq aGVhcCk7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKQEAgLTIzNjgsNiAr MjM2OCwxMCBAQCBtYWtlX2V4dGVybmFsOgogCQkJZXJyID0gREJfVE9PX0JJR19SRUNPUkQ7CiAJ CQlnb3RvIHJldHVybl9hZnRlcl9yZXNlcnZhdGlvbnM7CiAJCX0KKworCQl1dF9hZChwYWdlX2lz X2xlYWYocGFnZSkpOworCQl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CisJCXV0 X2FkKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpOwogCX0KIAogCS8qIFN0b3JlIHN0YXRlIG9m IGV4cGxpY2l0IGxvY2tzIG9uIHJlYyBvbiB0aGUgcGFnZSBpbmZpbXVtIHJlY29yZCwKQEAgLTIz OTUsNiArMjM5OSw4IEBAIG1ha2VfZXh0ZXJuYWw6CiAJcmVjID0gYnRyX2N1cl9pbnNlcnRfaWZf cG9zc2libGUoY3Vyc29yLCBuZXdfZW50cnksIG5fZXh0LCBtdHIpOwogCiAJaWYgKHJlYykgewor CQlwYWdlX2N1cnNvci0+cmVjID0gcmVjOworCiAJCWxvY2tfcmVjX3Jlc3RvcmVfZnJvbV9wYWdl X2luZmltdW0oYnRyX2N1cl9nZXRfYmxvY2soY3Vyc29yKSwKIAkJCQkJCSAgIHJlYywgYmxvY2sp OwogCkBAIC0yNDA4LDcgKzI0MTQsMTAgQEAgbWFrZV9leHRlcm5hbDoKIAkJCQkJCSAgICAgcmVj LCBpbmRleCwgb2Zmc2V0cywgbXRyKTsKIAkJfQogCi0JCWJ0cl9jdXJfY29tcHJlc3NfaWZfdXNl ZnVsKGN1cnNvciwgbXRyKTsKKwkJYnRyX2N1cl9jb21wcmVzc19pZl91c2VmdWwoCisJCQljdXJz b3IsCisJCQliaWdfcmVjX3ZlYyAhPSBOVUxMICYmIChmbGFncyAmIEJUUl9LRUVQX1BPU19GTEFH KSwKKwkJCW10cik7CiAKIAkJaWYgKHBhZ2VfemlwICYmICFkaWN0X2luZGV4X2lzX2NsdXN0KGlu ZGV4KQogCQkgICAgJiYgcGFnZV9pc19sZWFmKHBhZ2UpKSB7CkBAIC0yNDI4LDYgKzI0MzcsMjEg QEAgbWFrZV9leHRlcm5hbDoKIAkJfQogCX0KIAorCWlmIChiaWdfcmVjX3ZlYykgeworCQl1dF9h ZChwYWdlX2lzX2xlYWYocGFnZSkpOworCQl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4 KSk7CisJCXV0X2FkKGZsYWdzICYgQlRSX0tFRVBfUE9TX0ZMQUcpOworCisJCS8qIGJ0cl9wYWdl X3NwbGl0X2FuZF9pbnNlcnQoKSBpbgorCQlidHJfY3VyX3Blc3NpbWlzdGljX2luc2VydCgpIGlu dm9rZXMKKwkJbXRyX21lbW9fcmVsZWFzZShtdHIsIGluZGV4LT5sb2NrLCBNVFJfTUVNT19YX0xP Q0spLgorCQlXZSBtdXN0IGtlZXAgdGhlIGluZGV4LT5sb2NrIHdoZW4gd2UgY3JlYXRlZCBhCisJ CWJpZ19yZWMsIHNvIHRoYXQgcm93X3VwZF9jbHVzdF9yZWMoKSBjYW4gc3RvcmUgdGhlCisJCWJp Z19yZWMgaW4gdGhlIHNhbWUgbWluaS10cmFuc2FjdGlvbi4gKi8KKworCQltdHJfeF9sb2NrKGRp Y3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpLCBtdHIpOworCX0KKwogCS8qIFdhcyB0aGUgcmVjb3Jk IHRvIGJlIHVwZGF0ZWQgcG9zaXRpb25lZCBhcyB0aGUgZmlyc3QgdXNlcgogCXJlY29yZCBvbiBp dHMgcGFnZT8gKi8KIAl3YXNfZmlyc3QgPSBwYWdlX2N1cl9pc19iZWZvcmVfZmlyc3QocGFnZV9j dXJzb3IpOwpAQCAtMjQ0Myw2ICsyNDY3LDcgQEAgbWFrZV9leHRlcm5hbDoKIAl1dF9hKHJlYyk7 CiAJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CiAJdXRfYShkdW1teV9iaWdfcmVjID09IE5VTEwp OworCXBhZ2VfY3Vyc29yLT5yZWMgPSByZWM7CiAKIAlpZiAoZGljdF9pbmRleF9pc19zZWNfb3Jf aWJ1ZihpbmRleCkpIHsKIAkJLyogVXBkYXRlIFBBR0VfTUFYX1RSWF9JRCBpbiB0aGUgaW5kZXgg cGFnZSBoZWFkZXIuCkBAIC0yNTAxLDYgKzI1MjYsMzkgQEAgcmV0dXJuX2FmdGVyX3Jlc2VydmF0 aW9uczoKIAlyZXR1cm4oZXJyKTsKIH0KIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ29tbWl0cyBhbmQgcmVzdGFy dHMgYSBtaW5pLXRyYW5zYWN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXRhaW4gYW4KK3gtbG9jayBv biBpbmRleC0+bG9jayBhbmQgdGhlIGN1cnNvciBwYWdlLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQK K2J0cl9jdXJfbXRyX2NvbW1pdF9hbmRfc3RhcnQoCisvKj09PT09PT09PT09PT09PT09PT09PT09 PT0qLworCWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluOiBjdXJzb3IgKi8KKwltdHJfdCoJCW10 cikJLyohPCBpbi9vdXQ6IG1pbmktdHJhbnNhY3Rpb24gKi8KK3sKKwlidWZfYmxvY2tfdCoJYmxv Y2s7CisKKwlibG9jayA9IGJ0cl9jdXJfZ2V0X2Jsb2NrKGN1cnNvcik7CisKKwl1dF9hZChtdHJf bWVtb19jb250YWlucyhtdHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soY3Vyc29yLT5pbmRleCksCisJ CQkJTVRSX01FTU9fWF9MT0NLKSk7CisJdXRfYWQobXRyX21lbW9fY29udGFpbnMobXRyLCBibG9j aywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOworCS8qIEtlZXAgdGhlIGxvY2tzIGFjcm9zcyB0aGUg bXRyX2NvbW1pdChtdHIpLiAqLworCXJ3X2xvY2tfeF9sb2NrKGRpY3RfaW5kZXhfZ2V0X2xvY2so Y3Vyc29yLT5pbmRleCkpOworCXJ3X2xvY2tfeF9sb2NrKCZibG9jay0+bG9jayk7CisJbXV0ZXhf ZW50ZXIoJmJsb2NrLT5tdXRleCk7CisJYnVmX2Jsb2NrX2J1Zl9maXhfaW5jKGJsb2NrLCBfX0ZJ TEVfXywgX19MSU5FX18pOworCW11dGV4X2V4aXQoJmJsb2NrLT5tdXRleCk7CisJLyogV3JpdGUg b3V0IHRoZSByZWRvIGxvZy4gKi8KKwltdHJfY29tbWl0KG10cik7CisJbXRyX3N0YXJ0KG10cik7 CisJLyogUmVhc3NvY2lhdGUgdGhlIGxvY2tzIHdpdGggdGhlIG1pbmktdHJhbnNhY3Rpb24uCisJ VGhleSB3aWxsIGJlIHJlbGVhc2VkIG9uIG10cl9jb21taXQobXRyKS4gKi8KKwltdHJfbWVtb19w dXNoKG10ciwgZGljdF9pbmRleF9nZXRfbG9jayhjdXJzb3ItPmluZGV4KSwKKwkJICAgICAgTVRS X01FTU9fWF9MT0NLKTsKKwltdHJfbWVtb19wdXNoKG10ciwgYmxvY2ssIE1UUl9NRU1PX1BBR0Vf WF9GSVgpOworfQorCiAvKj09PT09PT09PT09PT09PT09PT09IEItVFJFRSBERUxFVEUgTUFSSyBB TkQgVU5NQVJLID09PT09PT09PT09PT09PSovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMjg4MSwxMCAr MjkzOSwxMiBAQCBVTklWX0lOVEVSTgogaWJvb2wKIGJ0cl9jdXJfY29tcHJlc3NfaWZfdXNlZnVs KAogLyo9PT09PT09PT09PT09PT09PT09PT09PSovCi0JYnRyX2N1cl90KgljdXJzb3IsCS8qITwg aW46IGN1cnNvciBvbiB0aGUgcGFnZSB0byBjb21wcmVzczsKLQkJCQljdXJzb3IgZG9lcyBub3Qg c3RheSB2YWxpZCBpZiBjb21wcmVzc2lvbgotCQkJCW9jY3VycyAqLwotCW10cl90KgkJbXRyKQkv KiE8IGluOiBtdHIgKi8KKwlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbi9vdXQ6IGN1cnNvciBv biB0aGUgcGFnZSB0byBjb21wcmVzczsKKwkJCQljdXJzb3IgZG9lcyBub3Qgc3RheSB2YWxpZCBp ZiAhYWRqdXN0IGFuZAorCQkJCWNvbXByZXNzaW9uIG9jY3VycyAqLworCWlib29sCQlhZGp1c3Qs CS8qITwgaW46IFRSVUUgaWYgc2hvdWxkIGFkanVzdCB0aGUKKwkJCQljdXJzb3IgcG9zaXRpb24g ZXZlbiBpZiBjb21wcmVzc2lvbiBvY2N1cnMgKi8KKwltdHJfdCoJCW10cikJLyohPCBpbi9vdXQ6 IG1pbmktdHJhbnNhY3Rpb24gKi8KIHsKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsCiAJ CQkJZGljdF9pbmRleF9nZXRfbG9jayhidHJfY3VyX2dldF9pbmRleChjdXJzb3IpKSwKQEAgLTI4 OTMsNyArMjk1Myw3IEBAIGJ0cl9jdXJfY29tcHJlc3NfaWZfdXNlZnVsKAogCQkJCU1UUl9NRU1P X1BBR0VfWF9GSVgpKTsKIAogCXJldHVybihidHJfY3VyX2NvbXByZXNzX3JlY29tbWVuZGF0aW9u KGN1cnNvciwgbXRyKQotCSAgICAgICAmJiBidHJfY29tcHJlc3MoY3Vyc29yLCBtdHIpKTsKKwkg ICAgICAgJiYgYnRyX2NvbXByZXNzKGN1cnNvciwgYWRqdXN0LCBtdHIpKTsKIH0KIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBA IC0zMTM1LDcgKzMxOTUsNyBAQCByZXR1cm5fYWZ0ZXJfcmVzZXJ2YXRpb25zOgogCW1lbV9oZWFw X2ZyZWUoaGVhcCk7CiAKIAlpZiAocmV0ID09IEZBTFNFKSB7Ci0JCXJldCA9IGJ0cl9jdXJfY29t cHJlc3NfaWZfdXNlZnVsKGN1cnNvciwgbXRyKTsKKwkJcmV0ID0gYnRyX2N1cl9jb21wcmVzc19p Zl91c2VmdWwoY3Vyc29yLCBGQUxTRSwgbXRyKTsKIAl9CiAKIAlpZiAobl9leHRlbnRzID4gMCkg ewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmgJcmV2aWQ6am9yZ2VuLmxv bGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAxMCwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNDgxLDExICs0ODEsMTQgQEAg VU5JVl9JTlRFUk4KIGlib29sCiBidHJfY29tcHJlc3MoCiAvKj09PT09PT09PSovCi0JYnRyX2N1 cl90KgljdXJzb3IsCS8qITwgaW46IGN1cnNvciBvbiB0aGUgcGFnZSB0byBtZXJnZSBvciBsaWZ0 OwotCQkJCXRoZSBwYWdlIG11c3Qgbm90IGJlIGVtcHR5OiBpbiByZWNvcmQgZGVsZXRlCi0JCQkJ dXNlIGJ0cl9kaXNjYXJkX3BhZ2UgaWYgdGhlIHBhZ2Ugd291bGQgYmVjb21lCi0JCQkJZW1wdHkg Ki8KLQltdHJfdCoJCW10cik7CS8qITwgaW46IG10ciAqLworCWJ0cl9jdXJfdCoJY3Vyc29yLAkv KiE8IGluL291dDogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIG1lcmdlCisJCQkJb3IgbGlmdDsgdGhl IHBhZ2UgbXVzdCBub3QgYmUgZW1wdHk6CisJCQkJd2hlbiBkZWxldGluZyByZWNvcmRzLCB1c2Ug YnRyX2Rpc2NhcmRfcGFnZSgpCisJCQkJaWYgdGhlIHBhZ2Ugd291bGQgYmVjb21lIGVtcHR5ICov CisJaWJvb2wJCWFkanVzdCwJLyohPCBpbjogVFJVRSBpZiBzaG91bGQgYWRqdXN0IHRoZQorCQkJ CWN1cnNvciBwb3NpdGlvbiBldmVuIGlmIGNvbXByZXNzaW9uIG9jY3VycyAqLworCW10cl90KgkJ bXRyKQkvKiE8IGluL291dDogbWluaS10cmFuc2FjdGlvbiAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogRGlzY2FyZHMgYSBwYWdlIGZyb20gYSBCLXRyZWUuIFRoaXMg aXMgdXNlZCB0byByZW1vdmUgdGhlIGxhc3QgcmVjb3JkIGZyb20KIGEgQi10cmVlIHBhZ2U6IHRo ZSB3aG9sZSBwYWdlIG11c3QgYmUgcmVtb3ZlZCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGNhbm5v dAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6am9yZ2VuLmxv bGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAxMCwgSW5ub2Jhc2Ug T3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNs ZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMzYsNiArMzYsOSBAQCBDcmVh dGVkIDEwLzE2LzE5OTQgSGVpa2tpIFR1dXJpCiAjZGVmaW5lIEJUUl9OT19MT0NLSU5HX0ZMQUcJ MgkvKiBkbyBubyByZWNvcmQgbG9jayBjaGVja2luZyAqLwogI2RlZmluZSBCVFJfS0VFUF9TWVNf RkxBRwk0CS8qIHN5cyBmaWVsZHMgd2lsbCBiZSBmb3VuZCBmcm9tIHRoZQogCQkJCQl1cGRhdGUg dmVjdG9yIG9yIGluc2VydGVkIGVudHJ5ICovCisjZGVmaW5lIEJUUl9LRUVQX1BPU19GTEFHCTgJ LyogYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoKQorCQkJCQltdXN0IGtlZXAgY3Vyc29yIHBv c2l0aW9uIHdoZW4KKwkJCQkJbW92aW5nIGNvbHVtbnMgdG8gYmlnX3JlYyAqLwogCiAjaWZuZGVm IFVOSVZfSE9UQkFDS1VQCiAjaW5jbHVkZSAicXVlMHR5cGVzLmgiCkBAIC0zMTAsNyArMzEzLDkg QEAgYnRyX2N1cl9wZXNzaW1pc3RpY191cGRhdGUoCiAvKj09PT09PT09PT09PT09PT09PT09PT09 Ki8KIAl1bGludAkJZmxhZ3MsCS8qITwgaW46IHVuZG8gbG9nZ2luZywgbG9ja2luZywgYW5kIHJv bGxiYWNrCiAJCQkJZmxhZ3MgKi8KLQlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29y IG9uIHRoZSByZWNvcmQgdG8gdXBkYXRlICovCisJYnRyX2N1cl90KgljdXJzb3IsCS8qITwgaW4v b3V0OiBjdXJzb3Igb24gdGhlIHJlY29yZCB0byB1cGRhdGU7CisJCQkJY3Vyc29yIG1heSBiZWNv bWUgaW52YWxpZCBpZiAqYmlnX3JlYyA9PSBOVUxMCisJCQkJfHwgIShmbGFncyAmIEJUUl9LRUVQ X1BPU19GTEFHKSAqLwogCW1lbV9oZWFwX3QqKgloZWFwLAkvKiE8IGluL291dDogcG9pbnRlciB0 byBtZW1vcnkgaGVhcCwgb3IgTlVMTCAqLwogCWJpZ19yZWNfdCoqCWJpZ19yZWMsLyohPCBvdXQ6 IGJpZyByZWMgdmVjdG9yIHdob3NlIGZpZWxkcyBoYXZlIHRvCiAJCQkJYmUgc3RvcmVkIGV4dGVy bmFsbHkgYnkgdGhlIGNhbGxlciwgb3IgTlVMTCAqLwpAQCAtMzIyLDYgKzMyNywxNiBAQCBidHJf Y3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKIAlxdWVfdGhyX3QqCXRociwJLyohPCBpbjogcXVlcnkg dGhyZWFkICovCiAJbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHI7IG11c3QgYmUgY29tbWl0dGVk IGJlZm9yZQogCQkJCWxhdGNoaW5nIGFueSBmdXJ0aGVyIHBhZ2VzICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0Nv bW1pdHMgYW5kIHJlc3RhcnRzIGEgbWluaS10cmFuc2FjdGlvbiBzbyB0aGF0IGl0IHdpbGwgcmV0 YWluIGFuCit4LWxvY2sgb24gaW5kZXgtPmxvY2sgYW5kIHRoZSBjdXJzb3IgcGFnZS4gKi8KK1VO SVZfSU5URVJOCit2b2lkCitidHJfY3VyX210cl9jb21taXRfYW5kX3N0YXJ0KAorLyo9PT09PT09 PT09PT09PT09PT09PT09PT09Ki8KKwlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29y ICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4vb3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJVU5J Vl9DT0xEIF9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIE1hcmtzIGEgY2x1c3Rl cmVkIGluZGV4IHJlY29yZCBkZWxldGVkLiBXcml0ZXMgYW4gdW5kbyBsb2cgcmVjb3JkIHRvCiB1 bmRvIGxvZyBvbiB0aGlzIGRlbGV0ZSBtYXJraW5nLiBXcml0ZXMgaW4gdGhlIHRyeCBpZCBmaWVs ZCB0aGUgaWQKQEAgLTM2NCwxMCArMzc5LDEzIEBAIFVOSVZfSU5URVJOCiBpYm9vbAogYnRyX2N1 cl9jb21wcmVzc19pZl91c2VmdWwoCiAvKj09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlidHJf Y3VyX3QqCWN1cnNvciwJLyohPCBpbjogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIGNvbXByZXNzOwor CWJ0cl9jdXJfdCoJY3Vyc29yLAkvKiE8IGluL291dDogY3Vyc29yIG9uIHRoZSBwYWdlIHRvIGNv bXByZXNzOwogCQkJCWN1cnNvciBkb2VzIG5vdCBzdGF5IHZhbGlkIGlmIGNvbXByZXNzaW9uCiAJ CQkJb2NjdXJzICovCi0JbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHIgKi8KKwlpYm9vbAkJYWRq dXN0LAkvKiE8IGluOiBUUlVFIGlmIHNob3VsZCBhZGp1c3QgdGhlCisJCQkJY3Vyc29yIHBvc2l0 aW9uIGV2ZW4gaWYgY29tcHJlc3Npb24gb2NjdXJzICovCisJbXRyX3QqCQltdHIpCS8qITwgaW4v b3V0OiBtaW5pLXRyYW5zYWN0aW9uICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOwogLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoq CiBSZW1vdmVzIHRoZSByZWNvcmQgb24gd2hpY2ggdGhlIHRyZWUgY3Vyc29yIGlzIHBvc2l0aW9u ZWQuIEl0IGlzIGFzc3VtZWQKIHRoYXQgdGhlIG10ciBoYXMgYW4geC1sYXRjaCBvbiB0aGUgcGFn ZSB3aGVyZSB0aGUgY3Vyc29yIGlzIHBvc2l0aW9uZWQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9idHIwY3VyLmljCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYx NjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dHIwY3VyLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3 bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAot Q29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCkBAIC0xMzksNyArMTM5LDcgQEAgYnRyX2N1cl9jb21wcmVzc19yZWNvbW1l bmRhdGlvbigKIAlidHJfY3VyX3QqCWN1cnNvciwJLyohPCBpbjogYnRyIGN1cnNvciAqLwogCW10 cl90KgkJbXRyKQkvKiE8IGluOiBtdHIgKi8KIHsKLQlwYWdlX3QqCQlwYWdlOworCWNvbnN0IHBh Z2VfdCoJCXBhZ2U7CiAKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJ0cl9jdXJfZ2V0 X2Jsb2NrKGN1cnNvciksCiAJCQkJTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgnCi0tLSBhL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmgJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29t LTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J1ZjBidWYuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5 MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCiAKLUNvcHlyaWdodCAoYykgMTk5NSwgMjAxMCwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFm ZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtNTgyLDYgKzU4MiwzMSBAQCBidWZfYmxvY2tfZ2V0X21v ZGlmeV9jbG9jaygKICNlbHNlIC8qICFVTklWX0hPVEJBQ0tVUCAqLwogIyBkZWZpbmUgYnVmX2Js b2NrX21vZGlmeV9jbG9ja19pbmMoYmxvY2spICgodm9pZCkgMCkKICNlbmRpZiAvKiAhVU5JVl9I T1RCQUNLVVAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNv dW50LiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2J1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKAor Lyo9PT09PT09PT09PT09PT09PT09PT09PSovCisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisJY29u c3QgY2hhcioJZmlsZSwJLyohPCBpbjogZmlsZSBuYW1lICovCisJdWxpbnQJCWxpbmUsCS8qITwg aW46IGxpbmUgKi8KKyNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KKwlidWZfYmxvY2tfdCoJ YmxvY2spCS8qITwgaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXggKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsKSk7CisjaWZkZWYgVU5JVl9TWU5DX0RFQlVHCisvKiogSW5jcmVtZW50cyB0aGUg YnVmZmVyZml4IGNvdW50LgorQHBhcmFtIGIJaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXgKK0Bw YXJhbSBmCWluOiBmaWxlIG5hbWUgd2hlcmUgcmVxdWVzdGVkCitAcGFyYW0gbAlpbjogbGluZSBu dW1iZXIgd2hlcmUgcmVxdWVzdGVkICovCisjIGRlZmluZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMo YixmLGwpIGJ1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKGYsbCxiKQorI2Vsc2UgLyogVU5JVl9T WU5DX0RFQlVHICovCisvKiogSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LgorQHBhcmFt IGIJaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXgKK0BwYXJhbSBmCWluOiBmaWxlIG5hbWUgd2hl cmUgcmVxdWVzdGVkCitAcGFyYW0gbAlpbjogbGluZSBudW1iZXIgd2hlcmUgcmVxdWVzdGVkICov CisjIGRlZmluZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9ibG9ja19idWZfZml4 X2luY19mdW5jKGIpCisjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICovCiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCiBDYWxjdWxhdGVzIGEgcGFnZSBjaGVja3N1bSB3aGljaCBpcyBzdG9yZWQgdG8gdGhlIHBh Z2Ugd2hlbiBpdCBpcyB3cml0dGVuCiB0byBhIGZpbGUuIE5vdGUgdGhhdCB3ZSBtdXN0IGJlIGNh cmVmdWwgdG8gY2FsY3VsYXRlIHRoZSBzYW1lIHZhbHVlCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9idWYwYnVmLmljCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYx NjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9i dWYwYnVmLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3 bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAot Q29weXJpZ2h0IChjKSAxOTk1LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZl ZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRl cy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4K IAogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGNvbnRhaW4gbW9kaWZpY2F0aW9ucyBjb250cmlidXRl ZCBhbmQgY29weXJpZ2h0ZWQgYnkKQEAgLTg5NywxOSArODk3LDYgQEAgYnVmX2Jsb2NrX2J1Zl9m aXhfaW5jX2Z1bmMoCiAKIAlibG9jay0+cGFnZS5idWZfZml4X2NvdW50Kys7CiB9Ci0jaWZkZWYg VU5JVl9TWU5DX0RFQlVHCi0vKiogSW5jcmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LgotQHBh cmFtIGIJaW4vb3V0OiBibG9jayB0byBidWZmZXJmaXgKLUBwYXJhbSBmCWluOiBmaWxlIG5hbWUg d2hlcmUgcmVxdWVzdGVkCi1AcGFyYW0gbAlpbjogbGluZSBudW1iZXIgd2hlcmUgcmVxdWVzdGVk ICovCi0jIGRlZmluZSBidWZfYmxvY2tfYnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9ibG9ja19idWZf Zml4X2luY19mdW5jKGYsbCxiKQotI2Vsc2UgLyogVU5JVl9TWU5DX0RFQlVHICovCi0vKiogSW5j cmVtZW50cyB0aGUgYnVmZmVyZml4IGNvdW50LgotQHBhcmFtIGIJaW4vb3V0OiBibG9jayB0byBi dWZmZXJmaXgKLUBwYXJhbSBmCWluOiBmaWxlIG5hbWUgd2hlcmUgcmVxdWVzdGVkCi1AcGFyYW0g bAlpbjogbGluZSBudW1iZXIgd2hlcmUgcmVxdWVzdGVkICovCi0jIGRlZmluZSBidWZfYmxvY2tf YnVmX2ZpeF9pbmMoYixmLGwpIGJ1Zl9ibG9ja19idWZfZml4X2luY19mdW5jKGIpCi0jZW5kaWYg LyogVU5JVl9TWU5DX0RFQlVHICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGVjcmVtZW50cyB0aGUg YnVmZmVyZml4IGNvdW50LiAqLwpAQCAtMTE2MCw3ICsxMTQ3LDcgQEAgYnVmX2Jsb2NrX2RiZ19h ZGRfbGV2ZWwoCiAJCQkJd2hlcmUgd2UgaGF2ZSBhY3F1aXJlZCBsYXRjaCAqLwogCXVsaW50CQls ZXZlbCkJLyohPCBpbjogbGF0Y2hpbmcgb3JkZXIgbGV2ZWwgKi8KIHsKLQlzeW5jX3RocmVhZF9h ZGRfbGV2ZWwoJmJsb2NrLT5sb2NrLCBsZXZlbCk7CisJc3luY190aHJlYWRfYWRkX2xldmVsKCZi bG9jay0+bG9jaywgbGV2ZWwsIEZBTFNFKTsKIH0KICNlbmRpZiAvKiBVTklWX1NZTkNfREVCVUcg Ki8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvcGFnZTBjdXIuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdl MGN1ci5pYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3 ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBjdXIuaWMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWdu aDVrbApAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQg KGMpIDE5OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJp Z2h0IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmln aHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKQEAgLTI3LDYgKzI3LDggQEAgQ3JlYXRlZCAxMC80LzE5OTQgSGVpa2tpIFR1dXJpCiAjaW5j bHVkZSAiYnVmMHR5cGVzLmgiCiAKICNpZmRlZiBVTklWX0RFQlVHCisjIGluY2x1ZGUgInJlbTBj bXAuaCIKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIEdldHMgcG9pbnRlciB0byB0aGUgcGFnZSBmcmFtZSB3aGVyZSB0aGUg Y3Vyc29yIGlzIHBvc2l0aW9uZWQuCiBAcmV0dXJuCXBhZ2UgKi8KQEAgLTI2OCw2ICsyNzAsNyBA QCBwYWdlX2N1cl90dXBsZV9pbnNlcnQoCiAJCQkJCSAgICAgIGluZGV4LCByZWMsIG9mZnNldHMs IG10cik7CiAJfQogCisJdXRfYWQoIXJlYyB8fCAhY21wX2R0dXBsZV9yZWModHVwbGUsIHJlYywg b2Zmc2V0cykpOwogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAJcmV0dXJuKHJlYyk7CiB9Cgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5oJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdlLmgJcmV2aWQ6am9yZ2VuLmxvbGFu ZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBP eS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xl IGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0yODQsMTYgKzI4NCw0MiBAQCBw YWdlX2dldF9zdXByZW11bV9vZmZzZXQoCiAJY29uc3QgcGFnZV90KglwYWdlKTsJLyohPCBpbjog cGFnZSB3aGljaCBtdXN0IGhhdmUgcmVjb3JkKHMpICovCiAjZGVmaW5lIHBhZ2VfZ2V0X2luZmlt dW1fcmVjKHBhZ2UpICgocGFnZSkgKyBwYWdlX2dldF9pbmZpbXVtX29mZnNldChwYWdlKSkKICNk ZWZpbmUgcGFnZV9nZXRfc3VwcmVtdW1fcmVjKHBhZ2UpICgocGFnZSkgKyBwYWdlX2dldF9zdXBy ZW11bV9vZmZzZXQocGFnZSkpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1SZXR1cm5zIHRoZSBtaWRkbGUgcmVjb3Jk IG9mIHJlY29yZCBsaXN0LiBJZiB0aGVyZSBhcmUgYW4gZXZlbiBudW1iZXIKLW9mIHJlY29yZHMg aW4gdGhlIGxpc3QsIHJldHVybnMgdGhlIGZpcnN0IHJlY29yZCBvZiB1cHBlciBoYWxmLWxpc3Qu Ci1AcmV0dXJuCW1pZGRsZSByZWNvcmQgKi8KK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhl IHJlY29yZCBsaXN0LgorVGhpcyBpcyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19n ZXRfbl9yZWNzX2JlZm9yZSgpLgorQHJldHVybgludGggcmVjb3JkICovCiBVTklWX0lOVEVSTgor Y29uc3QgcmVjX3QqCitwYWdlX3JlY19nZXRfbnRoX2NvbnN0KAorLyo9PT09PT09PT09PT09PT09 PT09Ki8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IHBhZ2UgKi8KKwl1bGludAkJbnRo KQkvKiE8IGluOiBudGggcmVjb3JkICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91 bnVzZWRfcmVzdWx0KSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgorUmV0dXJucyB0aGUgbnRoIHJlY29yZCBvZiB0aGUg cmVjb3JkIGxpc3QuCitUaGlzIGlzIHRoZSBpbnZlcnNlIGZ1bmN0aW9uIG9mIHBhZ2VfcmVjX2dl dF9uX3JlY3NfYmVmb3JlKCkuCitAcmV0dXJuCW50aCByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCity ZWNfdCoKK3BhZ2VfcmVjX2dldF9udGgoCisvKj09PT09PT09PT09PT0qLworCXBhZ2VfdCoJcGFn ZSwJLyo8IGluOiBwYWdlICovCisJdWxpbnQJbnRoKQkvKiE8IGluOiBudGggcmVjb3JkICovCisJ X19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisKKyNpZm5kZWYg VU5JVl9IT1RCQUNLVVAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitSZXR1cm5zIHRoZSBtaWRkbGUgcmVjb3JkIG9mIHRo ZSByZWNvcmRzIG9uIHRoZSBwYWdlLiBJZiB0aGVyZSBpcyBhbgorZXZlbiBudW1iZXIgb2YgcmVj b3JkcyBpbiB0aGUgbGlzdCwgcmV0dXJucyB0aGUgZmlyc3QgcmVjb3JkIG9mIHRoZQordXBwZXIg aGFsZi1saXN0LgorQHJldHVybgltaWRkbGUgcmVjb3JkICovCitVTklWX0lOTElORQogcmVjX3Qq CiBwYWdlX2dldF9taWRkbGVfcmVjKAogLyo9PT09PT09PT09PT09PT09Ki8KLQlwYWdlX3QqCXBh Z2UpOwkvKiE8IGluOiBwYWdlICovCi0jaWZuZGVmIFVOSVZfSE9UQkFDS1VQCisJcGFnZV90Kglw YWdlKQkvKiE8IGluOiBwYWdlICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVz ZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKIENvbXBhcmVzIGEgZGF0YSB0dXBsZSB0byBhIHBoeXNp Y2FsIHJlY29yZC4gRGlmZmVycyBmcm9tIHRoZSBmdW5jdGlvbgogY21wX2R0dXBsZV9yZWNfd2l0 aF9tYXRjaCBpbiB0aGUgd2F5IHRoYXQgdGhlIHJlY29yZCBtdXN0IHJlc2lkZSBvbiBhbgpAQCAt MzQ4LDYgKzM3NCw3IEBAIHBhZ2VfZ2V0X25fcmVjcygKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZXR1cm5zIHRo ZSBudW1iZXIgb2YgcmVjb3JkcyBiZWZvcmUgdGhlIGdpdmVuIHJlY29yZCBpbiBjaGFpbi4KIFRo ZSBudW1iZXIgaW5jbHVkZXMgaW5maW11bSBhbmQgc3VwcmVtdW0gcmVjb3Jkcy4KK1RoaXMgaXMg dGhlIGludmVyc2UgZnVuY3Rpb24gb2YgcGFnZV9yZWNfZ2V0X250aCgpLgogQHJldHVybgludW1i ZXIgb2YgcmVjb3JkcyAqLwogVU5JVl9JTlRFUk4KIHVsaW50Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYycKLS0tIGEvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20t MjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvcGFnZTBwYWdlLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2 MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMg YWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIK IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC00MTksNyArNDE5LDM3IEBAIHBhZ2VfcmVjX2lzX2lu ZmltdW0oCiAJcmV0dXJuKHBhZ2VfcmVjX2lzX2luZmltdW1fbG93KHBhZ2Vfb2Zmc2V0KHJlYykp KTsKIH0KIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhlIHJlY29yZCBs aXN0LgorVGhpcyBpcyB0aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19nZXRfbl9yZWNz X2JlZm9yZSgpLgorQHJldHVybgludGggcmVjb3JkICovCitVTklWX0lOTElORQorcmVjX3QqCitw YWdlX3JlY19nZXRfbnRoKAorLyo9PT09PT09PT09PT09Ki8KKwlwYWdlX3QqCXBhZ2UsCS8qITwg aW46IHBhZ2UgKi8KKwl1bGludAludGgpCS8qITwgaW46IG50aCByZWNvcmQgKi8KK3sKKwlyZXR1 cm4oKHJlY190KikgcGFnZV9yZWNfZ2V0X250aF9jb25zdChwYWdlLCBudGgpKTsKK30KKwogI2lm bmRlZiBVTklWX0hPVEJBQ0tVUAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JldHVybnMgdGhlIG1pZGRsZSByZWNvcmQg b2YgdGhlIHJlY29yZHMgb24gdGhlIHBhZ2UuIElmIHRoZXJlIGlzIGFuCitldmVuIG51bWJlciBv ZiByZWNvcmRzIGluIHRoZSBsaXN0LCByZXR1cm5zIHRoZSBmaXJzdCByZWNvcmQgb2YgdGhlCit1 cHBlciBoYWxmLWxpc3QuCitAcmV0dXJuCW1pZGRsZSByZWNvcmQgKi8KK1VOSVZfSU5MSU5FCity ZWNfdCoKK3BhZ2VfZ2V0X21pZGRsZV9yZWMoCisvKj09PT09PT09PT09PT09PT0qLworCXBhZ2Vf dCoJcGFnZSkJLyohPCBpbjogcGFnZSAqLworeworCXVsaW50CW1pZGRsZSA9IChwYWdlX2dldF9u X3JlY3MocGFnZSkgKyBQQUdFX0hFQVBfTk9fVVNFUl9MT1cpIC8gMjsKKworCXJldHVybihwYWdl X3JlY19nZXRfbnRoKHBhZ2UsIG1pZGRsZSkpOworfQorCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENvbXBhcmVzIGEg ZGF0YSB0dXBsZSB0byBhIHBoeXNpY2FsIHJlY29yZC4gRGlmZmVycyBmcm9tIHRoZSBmdW5jdGlv bgogY21wX2R0dXBsZV9yZWNfd2l0aF9tYXRjaCBpbiB0aGUgd2F5IHRoYXQgdGhlIHJlY29yZCBt dXN0IHJlc2lkZSBvbiBhbgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9yZW0wcmVjLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmgJ cmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2 eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JlbTByZWMuaAlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC00 ODAsNyArNDgwLDcgQEAgdWxpbnQKIHJlY19vZmZzX2FueV9leHRlcm4oCiAvKj09PT09PT09PT09 PT09PT0qLwogCWNvbnN0IHVsaW50KglvZmZzZXRzKTsvKiE8IGluOiBhcnJheSByZXR1cm5lZCBi eSByZWNfZ2V0X29mZnNldHMoKSAqLwotI2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVHCisjaWYg ZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgog RGV0ZXJtaW5lIGlmIHRoZSBvZmZzZXRzIGFyZSBmb3IgYSByZWNvcmQgY29udGFpbmluZyBudWxs IEJMT0IgcG9pbnRlcnMuCiBAcmV0dXJuCWZpcnN0IGZpZWxkIGNvbnRhaW5pbmcgYSBudWxsIEJM T0IgcG9pbnRlciwgb3IgTlVMTCBpZiBub25lIGZvdW5kICovCkBAIC00OTEsNyArNDkxLDcgQEAg cmVjX29mZnNfYW55X251bGxfZXh0ZXJuKAogCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBy ZWNvcmQgKi8KIAljb25zdCB1bGludCoJb2Zmc2V0cykJLyohPCBpbjogcmVjX2dldF9vZmZzZXRz KHJlYykgKi8KIAlfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsK LSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcg fHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmV0dXJucyBub256ZXJvIGlmIHRoZSBl eHRlcm4gYml0IGlzIHNldCBpbiBudGggZmllbGQgb2YgcmVjLgogQHJldHVybglub256ZXJvIGlm IGV4dGVybmFsbHkgc3RvcmVkICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3JlbTByZWMuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0w cmVjLmljCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02Mzdq OHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVjLmljCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1 a2wKQEAgLTEwODgsNyArMTA4OCw3IEBAIHJlY19vZmZzX2FueV9leHRlcm4oCiAJcmV0dXJuKFVO SVZfVU5MSUtFTFkoKnJlY19vZmZzX2Jhc2Uob2Zmc2V0cykgJiBSRUNfT0ZGU19FWFRFUk5BTCkp OwogfQogCi0jaWZkZWYgVU5JVl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVC VUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBEZXRlcm1pbmUgaWYgdGhl IG9mZnNldHMgYXJlIGZvciBhIHJlY29yZCBjb250YWluaW5nIG51bGwgQkxPQiBwb2ludGVycy4K IEByZXR1cm4JZmlyc3QgZmllbGQgY29udGFpbmluZyBhIG51bGwgQkxPQiBwb2ludGVyLCBvciBO VUxMIGlmIG5vbmUgZm91bmQgKi8KQEAgLTExMjQsNyArMTEyNCw3IEBAIHJlY19vZmZzX2FueV9u dWxsX2V4dGVybigKIAogCXJldHVybihOVUxMKTsKIH0KLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVM TF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVH ICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBSZXR1cm5zIG5vbnplcm8gaWYgdGhlIGV4dGVybiBiaXQgaXMgc2V0IGluIG50 aCBmaWVsZCBvZiByZWMuCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3N5bmMwcncuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHJ3Lmlj CXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYz dnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHJ3LmljCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAg LTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1 LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykg MTk5NSwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNl cnZlZC4KIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KIAogUG9ydGlvbnMgb2YgdGhp cyBmaWxlIGNvbnRhaW4gbW9kaWZpY2F0aW9ucyBjb250cmlidXRlZCBhbmQgY29weXJpZ2h0ZWQg YnkKQEAgLTYwMywxNiArNjAzLDE2IEBAIHJ3X2xvY2tfeF91bmxvY2tfZGlyZWN0KAogCiAJdXRf YWQoKGxvY2stPmxvY2tfd29yZCAlIFhfTE9DS19ERUNSKSA9PSAwKTsKIAotI2lmZGVmIFVOSVZf U1lOQ19ERUJVRwotCXJ3X2xvY2tfcmVtb3ZlX2RlYnVnX2luZm8obG9jaywgMCwgUldfTE9DS19F WCk7Ci0jZW5kaWYKLQogCWlmIChsb2NrLT5sb2NrX3dvcmQgPT0gMCkgewogCQlsb2NrLT5yZWN1 cnNpdmUgPSBGQUxTRTsKIAkJVU5JVl9NRU1fSU5WQUxJRCgmbG9jay0+d3JpdGVyX3RocmVhZCwK IAkJCQkgc2l6ZW9mIGxvY2stPndyaXRlcl90aHJlYWQpOwogCX0KIAorI2lmZGVmIFVOSVZfU1lO Q19ERUJVRworCXJ3X2xvY2tfcmVtb3ZlX2RlYnVnX2luZm8obG9jaywgMCwgUldfTE9DS19FWCk7 CisjZW5kaWYKKwogCWxvY2stPmxvY2tfd29yZCArPSBYX0xPQ0tfREVDUjsKIAogCXV0X2FkKCFs b2NrLT53YWl0ZXJzKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvc3luYzBzeW5jLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9zeW5jMHN5bmMu aAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1m M3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvc3luYzBzeW5jLmgJcmV2aWQ6 bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApA QCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5 OTUsIDIwMTEsIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChj KSAxOTk1LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJl c2VydmVkLgogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLgogCiBQb3J0aW9ucyBvZiB0 aGlzIGZpbGUgY29udGFpbiBtb2RpZmljYXRpb25zIGNvbnRyaWJ1dGVkIGFuZCBjb3B5cmlnaHRl ZCBieQpAQCAtNDAwLDggKzQwMCwxMCBAQCB2b2lkCiBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAv Kj09PT09PT09PT09PT09PT09PSovCiAJdm9pZCoJbGF0Y2gsCS8qITwgaW46IHBvaW50ZXIgdG8g YSBtdXRleCBvciBhbiBydy1sb2NrICovCi0JdWxpbnQJbGV2ZWwpOwkvKiE8IGluOiBsZXZlbCBp biB0aGUgbGF0Y2hpbmcgb3JkZXI7IGlmCisJdWxpbnQJbGV2ZWwsCS8qITwgaW46IGxldmVsIGlu IHRoZSBsYXRjaGluZyBvcmRlcjsgaWYKIAkJCVNZTkNfTEVWRUxfVkFSWUlORywgbm90aGluZyBp cyBkb25lICovCisJaWJvb2wJcmVsb2NrKQkvKiE8IGluOiBUUlVFIGlmIHJlLWVudGVyaW5nIGFu IHgtbG9jayAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBS ZW1vdmVzIGEgbGF0Y2ggZnJvbSB0aGUgdGhyZWFkIGxldmVsIGFycmF5IGlmIGl0IGlzIGZvdW5k IHRoZXJlLgogQHJldHVybiBUUlVFIGlmIGZvdW5kIGluIHRoZSBhcnJheTsgaXQgaXMgbm8gZXJy b3IgaWYgdGhlIGxhdGNoIGlzCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL3VuaXYuaScKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3VuaXYuaQlyZXZp ZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0 MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvdW5pdi5pCXJldmlkOm1hcmtvLm1ha2Vs YUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsOCArMSw3 IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDEwLCBJ bm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAx MSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENv cHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KLUNvcHlyaWdodCAoYykgMjAwOSwgU3VuIE1p Y3Jvc3lzdGVtcywgSW5jLgogCiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgY29udGFpbiBtb2RpZmlj YXRpb25zIGNvbnRyaWJ1dGVkIGFuZCBjb3B5cmlnaHRlZCBieQogR29vZ2xlLCBJbmMuIFRob3Nl IG1vZGlmaWNhdGlvbnMgYXJlIGdyYXRlZnVsbHkgYWNrbm93bGVkZ2VkIGFuZCBhcmUgZGVzY3Jp YmVkCkBAIC0xODYsOCArMTg1LDYgQEAgY29tbWFuZC4gTm90IHRlc3RlZCBvbiBXaW5kb3dzLiAq LwogCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAqLwogI2RlZmluZSBVTklWX0JM T0JfTElHSFRfREVCVUcJCQkvKiBFbmFibGUgb2ZmLXBhZ2UgY29sdW1uCiAJCQkJCQlkZWJ1Z2dp bmcgd2l0aG91dCBVTklWX0RFQlVHICovCi0jZGVmaW5lIFVOSVZfQkxPQl9OVUxMX0RFQlVHCQkJ LyogRW5hYmxlIGRlZXAgb2ZmLXBhZ2UKLQkJCQkJCWNvbHVtbiBkZWJ1Z2dpbmcgKi8KICNkZWZp bmUgVU5JVl9ERUJVRwkJCQkvKiBFbmFibGUgdXRfYWQoKSBhc3NlcnRpb25zCiAJCQkJCQlhbmQg ZGlzYWJsZSBVTklWX0lOTElORSAqLwogI2RlZmluZSBVTklWX0RFQlVHX0xPQ0tfVkFMSURBVEUJ CS8qIEVuYWJsZQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdl MGN1ci5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIuYwlyZXZpZDpqb3Jn ZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1mM3Z4ZGI0MQorKysg Yi9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBjdXIuYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAog LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAwOSwgSW5ub2Jh c2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9y YWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTE4MCwxNCArMTE4MCwx NSBAQCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAkvKiBCZWZvcmUgdHJ5aW5nIHRv IHJlb3JnYW5pemUgdGhlIHBhZ2UsCiAJc3RvcmUgdGhlIG51bWJlciBvZiBwcmVjZWRpbmcgcmVj b3JkcyBvbiB0aGUgcGFnZS4gKi8KIAlwb3MgPSBwYWdlX3JlY19nZXRfbl9yZWNzX2JlZm9yZShy ZWMpOworCXV0X2FkKHBvcyA+IDApOwogCiAJaWYgKHBhZ2VfemlwX3Jlb3JnYW5pemUoYmxvY2ss IGluZGV4LCBtdHIpKSB7CiAJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2FuaXplZDogRmluZCByZWMg Ynkgc2Vla2luZyB0byBwb3MsCiAJCWFuZCB1cGRhdGUgKmN1cnJlbnRfcmVjLiAqLwotCQlyZWMg PSBwYWdlICsgUEFHRV9ORVdfSU5GSU1VTTsKLQotCQl3aGlsZSAoLS1wb3MpIHsKLQkJCXJlYyA9 IHBhZ2UgKyByZWNfZ2V0X25leHRfb2ZmcyhyZWMsIFRSVUUpOworCQlpZiAocG9zID4gMSkgewor CQkJcmVjID0gcGFnZV9yZWNfZ2V0X250aChwYWdlLCBwb3MgLSAxKTsKKwkJfSBlbHNlIHsKKwkJ CXJlYyA9IHBhZ2UgKyBQQUdFX05FV19JTkZJTVVNOwogCQl9CiAKIAkJKmN1cnJlbnRfcmVjID0g cmVjOwpAQCAtMTI4Myw2ICsxMjg0LDEyIEBAIHBhZ2VfY3VyX2luc2VydF9yZWNfemlwKAogCQkJ aW5zZXJ0X3JlYyA9IHBhZ2VfY3VyX2luc2VydF9yZWNfemlwX3Jlb3JnKAogCQkJCWN1cnJlbnRf cmVjLCBibG9jaywgaW5kZXgsIGluc2VydF9yZWMsCiAJCQkJcGFnZSwgcGFnZV96aXAsIG10cik7 CisjaWZkZWYgVU5JVl9ERUJVRworCQkJaWYgKGluc2VydF9yZWMpIHsKKwkJCQlyZWNfb2Zmc19t YWtlX3ZhbGlkKAorCQkJCQlpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCQl9CisjZW5k aWYgLyogVU5JVl9ERUJVRyAqLwogCQl9CiAKIAkJcmV0dXJuKGluc2VydF9yZWMpOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYycKLS0tIGEvc3Rv cmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xl LmNvbS0yMDExMDYxNjA2MjQwMC02MzdqOHF5bWYzdnhkYjQxCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvcGFnZS9wYWdlMHBhZ2UuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYx NjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCiAKLUNvcHlyaWdodCAoYykgMTk5NCwgMjAxMCwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKGMpIDE5OTQsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRz IGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVy CiB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQpAQCAtMTQ2NSw1NSArMTQ2NSw1NCBAQCBwYWdlX2Rpcl9i YWxhbmNlX3Nsb3QoCiAJfQogfQogCi0jaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgot UmV0dXJucyB0aGUgbWlkZGxlIHJlY29yZCBvZiB0aGUgcmVjb3JkIGxpc3QuIElmIHRoZXJlIGFy ZSBhbiBldmVuIG51bWJlcgotb2YgcmVjb3JkcyBpbiB0aGUgbGlzdCwgcmV0dXJucyB0aGUgZmly c3QgcmVjb3JkIG9mIHRoZSB1cHBlciBoYWxmLWxpc3QuCi1AcmV0dXJuCW1pZGRsZSByZWNvcmQg Ki8KK1JldHVybnMgdGhlIG50aCByZWNvcmQgb2YgdGhlIHJlY29yZCBsaXN0LgorVGhpcyBpcyB0 aGUgaW52ZXJzZSBmdW5jdGlvbiBvZiBwYWdlX3JlY19nZXRfbl9yZWNzX2JlZm9yZSgpLgorQHJl dHVybgludGggcmVjb3JkICovCiBVTklWX0lOVEVSTgotcmVjX3QqCi1wYWdlX2dldF9taWRkbGVf cmVjKAotLyo9PT09PT09PT09PT09PT09Ki8KLQlwYWdlX3QqCXBhZ2UpCS8qITwgaW46IHBhZ2Ug Ki8KK2NvbnN0IHJlY190KgorcGFnZV9yZWNfZ2V0X250aF9jb25zdCgKKy8qPT09PT09PT09PT09 PT09PT09PSovCisJY29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBwYWdlICovCisJdWxpbnQJ CW50aCkJLyohPCBpbjogbnRoIHJlY29yZCAqLwogewotCXBhZ2VfZGlyX3Nsb3RfdCoJc2xvdDsK LQl1bGludAkJCW1pZGRsZTsKKwljb25zdCBwYWdlX2Rpcl9zbG90X3QqCXNsb3Q7CiAJdWxpbnQJ CQlpOwogCXVsaW50CQkJbl9vd25lZDsKLQl1bGludAkJCWNvdW50OwotCXJlY190KgkJCXJlYzsK LQotCS8qIFRoaXMgbWFueSByZWNvcmRzIHdlIG11c3QgbGVhdmUgYmVoaW5kICovCi0JbWlkZGxl ID0gKHBhZ2VfZ2V0X25fcmVjcyhwYWdlKSArIFBBR0VfSEVBUF9OT19VU0VSX0xPVykgLyAyOwor CWNvbnN0IHJlY190KgkJcmVjOwogCi0JY291bnQgPSAwOworCXV0X2FkKG50aCA8IFVOSVZfUEFH RV9TSVpFIC8gKFJFQ19OX05FV19FWFRSQV9CWVRFUyArIDEpKTsKIAogCWZvciAoaSA9IDA7OyBp KyspIHsKIAogCQlzbG90ID0gcGFnZV9kaXJfZ2V0X250aF9zbG90KHBhZ2UsIGkpOwogCQluX293 bmVkID0gcGFnZV9kaXJfc2xvdF9nZXRfbl9vd25lZChzbG90KTsKIAotCQlpZiAoY291bnQgKyBu X293bmVkID4gbWlkZGxlKSB7CisJCWlmIChuX293bmVkID4gbnRoKSB7CiAJCQlicmVhazsKIAkJ fSBlbHNlIHsKLQkJCWNvdW50ICs9IG5fb3duZWQ7CisJCQludGggLT0gbl9vd25lZDsKIAkJfQog CX0KIAogCXV0X2FkKGkgPiAwKTsKIAlzbG90ID0gcGFnZV9kaXJfZ2V0X250aF9zbG90KHBhZ2Us IGkgLSAxKTsKLQlyZWMgPSAocmVjX3QqKSBwYWdlX2Rpcl9zbG90X2dldF9yZWMoc2xvdCk7Ci0J cmVjID0gcGFnZV9yZWNfZ2V0X25leHQocmVjKTsKKwlyZWMgPSBwYWdlX2Rpcl9zbG90X2dldF9y ZWMoc2xvdCk7CiAKLQkvKiBUaGVyZSBhcmUgbm93IGNvdW50IHJlY29yZHMgYmVoaW5kIHJlYyAq LwotCi0JZm9yIChpID0gMDsgaSA8IG1pZGRsZSAtIGNvdW50OyBpKyspIHsKLQkJcmVjID0gcGFn ZV9yZWNfZ2V0X25leHQocmVjKTsKKwlpZiAocGFnZV9pc19jb21wKHBhZ2UpKSB7CisJCWRvIHsK KwkJCXJlYyA9IHBhZ2VfcmVjX2dldF9uZXh0X2xvdyhyZWMsIFRSVUUpOworCQkJdXRfYWQocmVj KTsKKwkJfSB3aGlsZSAobnRoLS0pOworCX0gZWxzZSB7CisJCWRvIHsKKwkJCXJlYyA9IHBhZ2Vf cmVjX2dldF9uZXh0X2xvdyhyZWMsIEZBTFNFKTsKKwkJCXV0X2FkKHJlYyk7CisJCX0gd2hpbGUg KG50aC0tKTsKIAl9CiAKIAlyZXR1cm4ocmVjKTsKIH0KLSNlbmRpZiAvKiAhVU5JVl9IT1RCQUNL VVAgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKIFJldHVybnMgdGhlIG51bWJlciBvZiByZWNvcmRzIGJlZm9y ZSB0aGUgZ2l2ZW4gcmVjb3JkIGluIGNoYWluLgpAQCAtMTU3NSw2ICsxNTc0LDcgQEAgcGFnZV9y ZWNfZ2V0X25fcmVjc19iZWZvcmUoCiAJbi0tOwogCiAJdXRfYWQobiA+PSAwKTsKKwl1dF9hZChu IDwgVU5JVl9QQUdFX1NJWkUgLyAoUkVDX05fTkVXX0VYVFJBX0JZVEVTICsgMSkpOwogCiAJcmV0 dXJuKCh1bGludCkgbik7CiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9y b3cvcm93MGlucy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmMJcmV2aWQ6 am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEK KysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBA CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk2LCAyMDEwLCBJbm5v YmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NiwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0zNDUsOSArMzQ1LDkg QEAgcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAJCQlyZXR1cm4oREJfTE9D S19UQUJMRV9GVUxMKTsKIAogCQl9Ci0JCWVyciA9IGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBkYXRl KDAsIGN1cnNvciwKLQkJCQkJCSBoZWFwLCBiaWdfcmVjLCB1cGRhdGUsCi0JCQkJCQkgMCwgdGhy LCBtdHIpOworCQllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKKwkJCUJUUl9LRUVQ X1BPU19GTEFHLCBjdXJzb3IsIGhlYXAsIGJpZ19yZWMsIHVwZGF0ZSwKKwkJCTAsIHRociwgbXRy KTsKIAl9CiAKIAlyZXR1cm4oZXJyKTsKQEAgLTE5NzMsNiArMTk3Myw3IEBAIHJvd19pbnNfaW5k ZXhfZW50cnlfbG93KAogCXVsaW50CQltb2RpZnkgPSAwOyAvKiByZW1vdmUgd2FybmluZyAqLwog CXJlY190KgkJaW5zZXJ0X3JlYzsKIAlyZWNfdCoJCXJlYzsKKwl1bGludCoJCW9mZnNldHM7CiAJ dWxpbnQJCWVycjsKIAl1bGludAkJbl91bmlxdWU7CiAJYmlnX3JlY190KgliaWdfcmVjCQkJPSBO VUxMOwpAQCAtMjA4MSw2ICsyMDgyLDQyIEBAIHJvd19pbnNfaW5kZXhfZW50cnlfbG93KAogCQkJ ZXJyID0gcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoCiAJCQkJbW9kZSwgJmN1 cnNvciwgJmhlYXAsICZiaWdfcmVjLCBlbnRyeSwKIAkJCQl0aHIsICZtdHIpOworCisJCQlpZiAo YmlnX3JlYykgeworCQkJCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOworCQkJCS8qIFdyaXRlIG91 dCB0aGUgZXh0ZXJuYWxseSBzdG9yZWQKKwkJCQljb2x1bW5zIHdoaWxlIHN0aWxsIHgtbGF0Y2hp bmcKKwkJCQlpbmRleC0+bG9jayBhbmQgYmxvY2stPmxvY2suIFdlIGhhdmUKKwkJCQl0byBtdHJf Y29tbWl0KG10cikgZmlyc3QsIHNvIHRoYXQgdGhlCisJCQkJcmVkbyBsb2cgd2lsbCBiZSB3cml0 dGVuIGluIHRoZQorCQkJCWNvcnJlY3Qgb3JkZXIuIE90aGVyd2lzZSwgd2Ugd291bGQgcnVuCisJ CQkJaW50byB0cm91YmxlIG9uIGNyYXNoIHJlY292ZXJ5IGlmIG10cgorCQkJCWZyZWVkIEItdHJl ZSBwYWdlcyBvbiB3aGljaCBzb21lIG9mCisJCQkJdGhlIGJpZ19yZWMgZmllbGRzIHdpbGwgYmUg d3JpdHRlbi4gKi8KKwkJCQlidHJfY3VyX210cl9jb21taXRfYW5kX3N0YXJ0KCZjdXJzb3IsICZt dHIpOworCisJCQkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKCZjdXJzb3IpOworCQkJCW9mZnNldHMg PSByZWNfZ2V0X29mZnNldHMoCisJCQkJCXJlYywgaW5kZXgsIE5VTEwsCisJCQkJCVVMSU5UX1VO REVGSU5FRCwgJmhlYXApOworCisJCQkJZXJyID0gYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2Zp ZWxkcygKKwkJCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0X2Jsb2NrKCZjdXJzb3IpLAorCQkJCQlyZWMs IG9mZnNldHMsICZtdHIsIEZBTFNFLCBiaWdfcmVjKTsKKwkJCQkvKiBJZiB3cml0aW5nIGJpZ19y ZWMgZmFpbHMgKGZvcgorCQkJCWV4YW1wbGUsIGJlY2F1c2Ugb2YgREJfT1VUX09GX0ZJTEVfU1BB Q0UpLAorCQkJCXRoZSByZWNvcmQgd2lsbCBiZSBjb3JydXB0ZWQuIEV2ZW4gaWYKKwkJCQl3ZSBk aWQgbm90IHVwZGF0ZSBhbnkgZXh0ZXJuYWxseQorCQkJCXN0b3JlZCBjb2x1bW5zLCBvdXIgdXBk YXRlIGNvdWxkIGNhdXNlCisJCQkJdGhlIHJlY29yZCB0byBncm93IHNvIHRoYXQgYQorCQkJCW5v bi11cGRhdGVkIGNvbHVtbiB3YXMgc2VsZWN0ZWQgZm9yCisJCQkJZXh0ZXJuYWwgc3RvcmFnZS4g VGhpcyBub24tdXBkYXRlCisJCQkJd291bGQgbm90IGhhdmUgYmVlbiB3cml0dGVuIHRvIHRoZQor CQkJCXVuZG8gbG9nLCBhbmQgdGh1cyB0aGUgcmVjb3JkIGNhbm5vdAorCQkJCWJlIHJvbGxlZCBi YWNrLiAqLworCQkJCXV0X2EoZXJyID09IERCX1NVQ0NFU1MpOworCQkJCWdvdG8gc3RvcmVkX2Jp Z19yZWM7CisJCQl9CiAJCX0gZWxzZSB7CiAJCQl1dF9hZCghbl9leHQpOwogCQkJZXJyID0gcm93 X2luc19zZWNfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KApAQCAtMjEwOSw4ICsyMTQ2LDYgQEAgZnVu Y3Rpb25fZXhpdDoKIAltdHJfY29tbWl0KCZtdHIpOwogCiAJaWYgKFVOSVZfTElLRUxZX05VTEwo YmlnX3JlYykpIHsKLQkJcmVjX3QqCXJlYzsKLQkJdWxpbnQqCW9mZnNldHM7CiAJCW10cl9zdGFy dCgmbXRyKTsKIAogCQlidHJfY3VyX3NlYXJjaF90b19udGhfbGV2ZWwoaW5kZXgsIDAsIGVudHJ5 LCBQQUdFX0NVUl9MRSwKQEAgLTIxMjQsNiArMjE1OSw3IEBAIGZ1bmN0aW9uX2V4aXQ6CiAJCQlp bmRleCwgYnRyX2N1cl9nZXRfYmxvY2soJmN1cnNvciksCiAJCQlyZWMsIG9mZnNldHMsICZtdHIs IEZBTFNFLCBiaWdfcmVjKTsKIAorc3RvcmVkX2JpZ19yZWM6CiAJCWlmIChtb2RpZnkpIHsKIAkJ CWR0dXBsZV9iaWdfcmVjX2ZyZWUoYmlnX3JlYyk7CiAJCX0gZWxzZSB7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL3Jvdy9yb3cwcm93LmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2 MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJv dy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBk cmFnbmg1a2wKQEAgLTE5Miw2ICsxOTIsNyBAQCByb3dfYnVpbGQoCiAKIAl1dF9hZChpbmRleCAm JiByZWMgJiYgaGVhcCk7CiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCXV0 X2FkKCFtdXRleF9vd24oJmtlcm5lbF9tdXRleCkpOwogCiAJaWYgKCFvZmZzZXRzKSB7CiAJCW9m ZnNldHMgPSByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCwgb2Zmc2V0c18sCkBAIC0yMDAsMTMg KzIwMSwzNSBAQCByb3dfYnVpbGQoCiAJCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5k ZXgsIG9mZnNldHMpKTsKIAl9CiAKLSNpZiAwICYmIGRlZmluZWQgVU5JVl9CTE9CX05VTExfREVC VUcKLQkvKiBUaGlzIG9uZSBjYW4gZmFpbCBpbiB0cnhfcm9sbGJhY2tfYWN0aXZlKCkgaWYKLQl0 aGUgc2VydmVyIGNyYXNoZWQgZHVyaW5nIGFuIGluc2VydCBiZWZvcmUgdGhlCi0JYnRyX3N0b3Jl X2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcygpIGRpZCBtdHJfY29tbWl0KCkKLQlhbGwgQkxPQiBwb2lu dGVycyB0byB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZC4gKi8KLQl1dF9hKCFyZWNfb2Zmc19h bnlfbnVsbF9leHRlcm4ocmVjLCBvZmZzZXRzKSk7Ci0jZW5kaWYgLyogMCAmJiBVTklWX0JMT0Jf TlVMTF9ERUJVRyAqLworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxP Ql9MSUdIVF9ERUJVRworCWlmIChVTklWX0xJS0VMWV9OVUxMKHJlY19vZmZzX2FueV9udWxsX2V4 dGVybihyZWMsIG9mZnNldHMpKSkgeworCQkvKiBUaGlzIGNvbmRpdGlvbiBjYW4gb2NjdXIgZHVy aW5nIGNyYXNoIHJlY292ZXJ5IGJlZm9yZQorCQl0cnhfcm9sbGJhY2tfYWN0aXZlKCkgaGFzIGNv bXBsZXRlZCBleGVjdXRpb24uCisKKwkJVGhpcyBjb25kaXRpb24gaXMgcG9zc2libGUgaWYgdGhl IHNlcnZlciBjcmFzaGVkCisJCWR1cmluZyBhbiBpbnNlcnQgb3IgdXBkYXRlIGJlZm9yZQorCQli dHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKCkgZGlkIG10cl9jb21taXQoKSBhbGwKKwkJ QkxPQiBwb2ludGVycyB0byB0aGUgY2x1c3RlcmVkIGluZGV4IHJlY29yZC4KKworCQlMb29rIHVw IHRoZSB0cmFuc2FjdGlvbiB0aGF0IGhvbGRzIHRoZSBpbXBsaWNpdCBsb2NrCisJCW9uIHRoaXMg cmVjb3JkLCBhbmQgYXNzZXJ0IHRoYXQgaXQgd2FzIHJlY292ZXJlZCAoYW5kCisJCXdpbGwgc29v biBiZSByb2xsZWQgYmFjaykuICovCisKKwkJdWxpbnQJCXRyeF9pZF9wb3MJPSBkaWN0X2luZGV4 X2dldF9zeXNfY29sX3BvcygKKwkJCQlpbmRleCwgREFUQV9UUlhfSUQpOworCQl1bGludAkJbGVu OworCQl0cnhfaWRfdAl0cnhfaWQJCT0gdHJ4X3JlYWRfdHJ4X2lkKAorCQkJcmVjX2dldF9udGhf ZmllbGQocmVjLCBvZmZzZXRzLCB0cnhfaWRfcG9zLCAmbGVuKSk7CisJCXRyeF90KgkJdHJ4Owor CQl1dF9hKGxlbiA9PSA2KTsKKworCQltdXRleF9lbnRlcigma2VybmVsX211dGV4KTsKKwkJdHJ4 ID0gdHJ4X2dldF9vbl9pZCh0cnhfaWQpOworCQl1dF9hKHRyeCk7CisJCXV0X2EodHJ4LT5pc19y ZWNvdmVyZWQpOworCQltdXRleF9leGl0KCZrZXJuZWxfbXV0ZXgpOworCX0KKyNlbmRpZiAvKiBV TklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJaWYgKHR5cGUgIT0gUk9X X0NPUFlfUE9JTlRFUlMpIHsKIAkJLyogVGFrZSBhIGNvcHkgb2YgcmVjIHRvIGhlYXAgKi8KQEAg LTM5MSwxMCArNDE0LDEwIEBAIHJvd19yZWNfdG9faW5kZXhfZW50cnkoCiAJCXJlYyA9IHJlY19j b3B5KGJ1ZiwgcmVjLCBvZmZzZXRzKTsKIAkJLyogQXZvaWQgYSBkZWJ1ZyBhc3NlcnRpb24gaW4g cmVjX29mZnNfdmFsaWRhdGUoKS4gKi8KIAkJcmVjX29mZnNfbWFrZV92YWxpZChyZWMsIGluZGV4 LCBvZmZzZXRzKTsKLSNpZmRlZiBVTklWX0JMT0JfTlVMTF9ERUJVRworI2lmIGRlZmluZWQgVU5J Vl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRwogCX0gZWxzZSB7CiAJCXV0 X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybihyZWMsIG9mZnNldHMpKTsKLSNlbmRpZiAvKiBV TklWX0JMT0JfTlVMTF9ERUJVRyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9C X0xJR0hUX0RFQlVHICovCiAJfQogCiAJZW50cnkgPSByb3dfcmVjX3RvX2luZGV4X2VudHJ5X2xv dyhyZWMsIGluZGV4LCBvZmZzZXRzLCBuX2V4dCwgaGVhcCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jv dy9yb3cwdXBkLmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAw LTYzN2o4cXltZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1 a2wKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChj KSAxOTk2LCAyMDEwLCBJbm5vYmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdo dCAoYykgMTk5NiwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl CkBAIC0xOTk5LDI4ICsxOTk5LDQzIEBAIHJvd191cGRfY2x1c3RfcmVjKAogCXV0X2FkKCFyZWNf Z2V0X2RlbGV0ZWRfZmxhZyhidHJfcGN1cl9nZXRfcmVjKHBjdXIpLAogCQkJCSAgICBkaWN0X3Rh YmxlX2lzX2NvbXAoaW5kZXgtPnRhYmxlKSkpOwogCi0JZXJyID0gYnRyX2N1cl9wZXNzaW1pc3Rp Y191cGRhdGUoQlRSX05PX0xPQ0tJTkdfRkxBRywgYnRyX2N1ciwKLQkJCQkJICZoZWFwLCAmYmln X3JlYywgbm9kZS0+dXBkYXRlLAotCQkJCQkgbm9kZS0+Y21wbF9pbmZvLCB0aHIsIG10cik7Ci0J bXRyX2NvbW1pdChtdHIpOwotCi0JaWYgKGVyciA9PSBEQl9TVUNDRVNTICYmIGJpZ19yZWMpIHsK KwllcnIgPSBidHJfY3VyX3Blc3NpbWlzdGljX3VwZGF0ZSgKKwkJQlRSX05PX0xPQ0tJTkdfRkxB RyB8IEJUUl9LRUVQX1BPU19GTEFHLCBidHJfY3VyLAorCQkmaGVhcCwgJmJpZ19yZWMsIG5vZGUt PnVwZGF0ZSwgbm9kZS0+Y21wbF9pbmZvLCB0aHIsIG10cik7CisJaWYgKGJpZ19yZWMpIHsKIAkJ dWxpbnQJCW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKIAkJcmVjX3QqCQlyZWM7CiAJ CXJlY19vZmZzX2luaXQob2Zmc2V0c18pOwogCi0JCW10cl9zdGFydChtdHIpOworCQl1dF9hKGVy ciA9PSBEQl9TVUNDRVNTKTsKKwkJLyogV3JpdGUgb3V0IHRoZSBleHRlcm5hbGx5IHN0b3JlZCBj b2x1bW5zIHdoaWxlIHN0aWxsCisJCXgtbGF0Y2hpbmcgaW5kZXgtPmxvY2sgYW5kIGJsb2NrLT5s b2NrLiBXZSBoYXZlIHRvCisJCW10cl9jb21taXQobXRyKSBmaXJzdCwgc28gdGhhdCB0aGUgcmVk byBsb2cgd2lsbCBiZQorCQl3cml0dGVuIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBPdGhlcndpc2Us IHdlIHdvdWxkIHJ1bgorCQlpbnRvIHRyb3VibGUgb24gY3Jhc2ggcmVjb3ZlcnkgaWYgbXRyIGZy ZWVkIEItdHJlZQorCQlwYWdlcyBvbiB3aGljaCBzb21lIG9mIHRoZSBiaWdfcmVjIGZpZWxkcyB3 aWxsIGJlCisJCXdyaXR0ZW4uICovCisJCWJ0cl9jdXJfbXRyX2NvbW1pdF9hbmRfc3RhcnQoYnRy X2N1ciwgbXRyKTsKIAotCQl1dF9hKGJ0cl9wY3VyX3Jlc3RvcmVfcG9zaXRpb24oQlRSX01PRElG WV9UUkVFLCBwY3VyLCBtdHIpKTsKIAkJcmVjID0gYnRyX2N1cl9nZXRfcmVjKGJ0cl9jdXIpOwog CQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJaW5kZXgsIGJ0cl9j dXJfZ2V0X2Jsb2NrKGJ0cl9jdXIpLCByZWMsCiAJCQlyZWNfZ2V0X29mZnNldHMocmVjLCBpbmRl eCwgb2Zmc2V0c18sCiAJCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApLAogCQkJbXRyLCBUUlVF LCBiaWdfcmVjKTsKLQkJbXRyX2NvbW1pdChtdHIpOworCQkvKiBJZiB3cml0aW5nIGJpZ19yZWMg ZmFpbHMgKGZvciBleGFtcGxlLCBiZWNhdXNlIG9mCisJCURCX09VVF9PRl9GSUxFX1NQQUNFKSwg dGhlIHJlY29yZCB3aWxsIGJlIGNvcnJ1cHRlZC4KKwkJRXZlbiBpZiB3ZSBkaWQgbm90IHVwZGF0 ZSBhbnkgZXh0ZXJuYWxseSBzdG9yZWQKKwkJY29sdW1ucywgb3VyIHVwZGF0ZSBjb3VsZCBjYXVz ZSB0aGUgcmVjb3JkIHRvIGdyb3cgc28KKwkJdGhhdCBhIG5vbi11cGRhdGVkIGNvbHVtbiB3YXMg c2VsZWN0ZWQgZm9yIGV4dGVybmFsCisJCXN0b3JhZ2UuIFRoaXMgbm9uLXVwZGF0ZSB3b3VsZCBu b3QgaGF2ZSBiZWVuIHdyaXR0ZW4KKwkJdG8gdGhlIHVuZG8gbG9nLCBhbmQgdGh1cyB0aGUgcmVj b3JkIGNhbm5vdCBiZSByb2xsZWQKKwkJYmFjay4gKi8KKwkJdXRfYShlcnIgPT0gREJfU1VDQ0VT Uyk7CiAJfQogCisJbXRyX2NvbW1pdChtdHIpOworCiAJaWYgKFVOSVZfTElLRUxZX05VTEwoaGVh cCkpIHsKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9yb3cvcm93MHZlcnMuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cv cm93MHZlcnMuYwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAt NjM3ajhxeW1mM3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jCXJl dmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1 a2wKQEAgLTU1MCwxMCArNTUwLDEwIEBAIHJvd192ZXJzX2J1aWxkX2Zvcl9jb25zaXN0ZW50X3Jl YWQoCiAJCQkJLyogVGhlIHZpZXcgYWxyZWFkeSBzZWVzIHRoaXMgdmVyc2lvbjogd2UgY2FuCiAJ CQkJY29weSBpdCB0byBpbl9oZWFwIGFuZCByZXR1cm4gKi8KIAotI2lmZGVmIFVOSVZfQkxPQl9O VUxMX0RFQlVHCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJ R0hUX0RFQlVHCiAJCQkJdXRfYSghcmVjX29mZnNfYW55X251bGxfZXh0ZXJuKAogCQkJCQkgICAg IHZlcnNpb24sICpvZmZzZXRzKSk7Ci0jZW5kaWYgLyogVU5JVl9CTE9CX05VTExfREVCVUcgKi8K KyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCiAJCQkJ YnVmID0gbWVtX2hlYXBfYWxsb2MoaW5faGVhcCwKIAkJCQkJCSAgICAgcmVjX29mZnNfc2l6ZSgq b2Zmc2V0cykpOwpAQCAtNTg4LDkgKzU4OCw5IEBAIHJvd192ZXJzX2J1aWxkX2Zvcl9jb25zaXN0 ZW50X3JlYWQoCiAJCSpvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHByZXZfdmVyc2lvbiwgaW5k ZXgsICpvZmZzZXRzLAogCQkJCQkgICBVTElOVF9VTkRFRklORUQsIG9mZnNldF9oZWFwKTsKIAot I2lmZGVmIFVOSVZfQkxPQl9OVUxMX0RFQlVHCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRl ZmluZWQgVU5JVl9CTE9CX0xJR0hUX0RFQlVHCiAJCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4 dGVybihwcmV2X3ZlcnNpb24sICpvZmZzZXRzKSk7Ci0jZW5kaWYgLyogVU5JVl9CTE9CX05VTExf REVCVUcgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAq LwogCiAJCXRyeF9pZCA9IHJvd19nZXRfcmVjX3RyeF9pZChwcmV2X3ZlcnNpb24sIGluZGV4LCAq b2Zmc2V0cyk7CiAKQEAgLTY5MSw5ICs2OTEsOSBAQCByb3dfdmVyc19idWlsZF9mb3Jfc2VtaV9j b25zaXN0ZW50X3JlYWQoCiAJCQkvKiBXZSBmb3VuZCBhIHZlcnNpb24gdGhhdCBiZWxvbmdzIHRv IGEKIAkJCWNvbW1pdHRlZCB0cmFuc2FjdGlvbjogcmV0dXJuIGl0LiAqLwogCi0jaWZkZWYgVU5J Vl9CTE9CX05VTExfREVCVUcKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklW X0JMT0JfTElHSFRfREVCVUcKIAkJCXV0X2EoIXJlY19vZmZzX2FueV9udWxsX2V4dGVybih2ZXJz aW9uLCAqb2Zmc2V0cykpOwotI2VuZGlmIC8qIFVOSVZfQkxPQl9OVUxMX0RFQlVHICovCisjZW5k aWYgLyogVU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KIAogCQkJaWYgKHJl YyA9PSB2ZXJzaW9uKSB7CiAJCQkJKm9sZF92ZXJzID0gcmVjOwpAQCAtNzUyLDkgKzc1Miw5IEBA IHJvd192ZXJzX2J1aWxkX2Zvcl9zZW1pX2NvbnNpc3RlbnRfcmVhZCgKIAkJdmVyc2lvbiA9IHBy ZXZfdmVyc2lvbjsKIAkJKm9mZnNldHMgPSByZWNfZ2V0X29mZnNldHModmVyc2lvbiwgaW5kZXgs ICpvZmZzZXRzLAogCQkJCQkgICBVTElOVF9VTkRFRklORUQsIG9mZnNldF9oZWFwKTsKLSNpZmRl ZiBVTklWX0JMT0JfTlVMTF9ERUJVRworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVk IFVOSVZfQkxPQl9MSUdIVF9ERUJVRwogCQl1dF9hKCFyZWNfb2Zmc19hbnlfbnVsbF9leHRlcm4o dmVyc2lvbiwgKm9mZnNldHMpKTsKLSNlbmRpZiAvKiBVTklWX0JMT0JfTlVMTF9ERUJVRyAqLwor I2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hUX0RFQlVHICovCiAJfS8qIGZv ciAoOzspICovCiAKIAlpZiAoaGVhcCkgewoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5u b2Jhc2Uvc3luYy9zeW5jMHJ3LmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvc3luYy9zeW5jMHJ3 LmMJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXlt ZjN2eGRiNDEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwcncuYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDYxNjA5MDc0OS14N24xZnEwZHJhZ25oNWtsCkBAIC03 ODIsNyArNzgyLDkgQEAgcndfbG9ja19hZGRfZGVidWdfaW5mbygKIAlyd19sb2NrX2RlYnVnX211 dGV4X2V4aXQoKTsKIAogCWlmICgocGFzcyA9PSAwKSAmJiAobG9ja190eXBlICE9IFJXX0xPQ0tf V0FJVF9FWCkpIHsKLQkJc3luY190aHJlYWRfYWRkX2xldmVsKGxvY2ssIGxvY2stPmxldmVsKTsK KwkJc3luY190aHJlYWRfYWRkX2xldmVsKGxvY2ssIGxvY2stPmxldmVsLAorCQkJCSAgICAgIGxv Y2tfdHlwZSA9PSBSV19MT0NLX0VYCisJCQkJICAgICAgJiYgbG9jay0+bG9ja193b3JkIDwgMCk7 CiAJfQogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMw c3luYy5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3N5bmMvc3luYzBzeW5jLmMJcmV2aWQ6am9y Z2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTEwNjE2MDYyNDAwLTYzN2o4cXltZjN2eGRiNDEKKysr IGIvc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwc3luYy5jCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTEwNjE2MDkwNzQ5LXg3bjFmcTBkcmFnbmg1a2wKQEAgLTEsNiArMSw2IEBA CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk1LCAyMDExLCBJbm5v YmFzZSBPeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NSwgMjAxMSwg T3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHly aWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4KIAogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGNvbnRh aW4gbW9kaWZpY2F0aW9ucyBjb250cmlidXRlZCBhbmQgY29weXJpZ2h0ZWQgYnkKQEAgLTY5MCw3 ICs2OTAsNyBAQCBtdXRleF9zZXRfZGVidWdfaW5mbygKIAl1dF9hZChtdXRleCk7CiAJdXRfYWQo ZmlsZV9uYW1lKTsKIAotCXN5bmNfdGhyZWFkX2FkZF9sZXZlbChtdXRleCwgbXV0ZXgtPmxldmVs KTsKKwlzeW5jX3RocmVhZF9hZGRfbGV2ZWwobXV0ZXgsIG11dGV4LT5sZXZlbCwgRkFMU0UpOwog CiAJbXV0ZXgtPmZpbGVfbmFtZSA9IGZpbGVfbmFtZTsKIAltdXRleC0+bGluZQkgPSBsaW5lOwpA QCAtMTEzMyw4ICsxMTMzLDkgQEAgdm9pZAogc3luY190aHJlYWRfYWRkX2xldmVsKAogLyo9PT09 PT09PT09PT09PT09PT0qLwogCXZvaWQqCWxhdGNoLAkvKiE8IGluOiBwb2ludGVyIHRvIGEgbXV0 ZXggb3IgYW4gcnctbG9jayAqLwotCXVsaW50CWxldmVsKQkvKiE8IGluOiBsZXZlbCBpbiB0aGUg bGF0Y2hpbmcgb3JkZXI7IGlmCisJdWxpbnQJbGV2ZWwsCS8qITwgaW46IGxldmVsIGluIHRoZSBs YXRjaGluZyBvcmRlcjsgaWYKIAkJCVNZTkNfTEVWRUxfVkFSWUlORywgbm90aGluZyBpcyBkb25l ICovCisJaWJvb2wJcmVsb2NrKQkvKiE8IGluOiBUUlVFIGlmIHJlLWVudGVyaW5nIGFuIHgtbG9j ayAqLwogewogCXVsaW50CQlpOwogCXN5bmNfbGV2ZWxfdCoJc2xvdDsKQEAgLTExODUsNiArMTE4 NiwxMCBAQCBzeW5jX3RocmVhZF9hZGRfbGV2ZWwoCiAKIAlhcnJheSA9IHRocmVhZF9zbG90LT5s ZXZlbHM7CiAKKwlpZiAocmVsb2NrKSB7CisJCWdvdG8gbGV2ZWxzX29rOworCX0KKwogCS8qIE5P VEUgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCBfTk9ERSBhbmQgX0xFQUYgbGV2ZWxzOiBp ZiB0aGUKIAlCLXRyZWUgaGVpZ2h0IGNoYW5nZXMsIHRoZW4gYSBsZWFmIGNhbiBjaGFuZ2UgdG8g YW4gaW50ZXJuYWwgbm9kZQogCW9yIHRoZSBvdGhlciB3YXkgYXJvdW5kLiBXZSBkbyBub3Qga25v dyBhdCBwcmVzZW50IGlmIHRoaXMgY2FuIGNhdXNlCkBAIC0xMzUwLDYgKzEzNTUsNyBAQCBzeW5j X3RocmVhZF9hZGRfbGV2ZWwoCiAJCXV0X2Vycm9yOwogCX0KIAorbGV2ZWxzX29rOgogCWlmIChh cnJheS0+bmV4dF9mcmVlID09IFVMSU5UX1VOREVGSU5FRCkgewogCQl1dF9hKGFycmF5LT5uX2Vs ZW1zIDwgYXJyYXktPm1heF9lbGVtcyk7CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL3RyeC90cngwcmVjLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvdHJ4L3RyeDByZWMu YwlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAxMTA2MTYwNjI0MDAtNjM3ajhxeW1m M3Z4ZGI0MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3RyeC90cngwcmVjLmMJcmV2aWQ6bWFya28u bWFrZWxhQG9yYWNsZS5jb20tMjAxMTA2MTYwOTA3NDkteDduMWZxMGRyYWduaDVrbApAQCAtMTU5 Myw5ICsxNTkzLDkgQEAgdHJ4X3VuZG9fcHJldl92ZXJzaW9uX2J1aWxkKAogCQlyZXR1cm4oREJf RVJST1IpOwogCX0KIAotIyBpZmRlZiBVTklWX0JMT0JfTlVMTF9ERUJVRworIyBpZiBkZWZpbmVk IFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKIAl1dF9hKCFyZWNf b2Zmc19hbnlfbnVsbF9leHRlcm4ocmVjLCBvZmZzZXRzKSk7Ci0jIGVuZGlmIC8qIFVOSVZfQkxP Ql9OVUxMX0RFQlVHICovCisjIGVuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9CX0xJR0hU X0RFQlVHICovCiAKIAlpZiAocm93X3VwZF9jaGFuZ2VzX2ZpZWxkX3NpemVfb3JfZXh0ZXJuYWwo aW5kZXgsIG9mZnNldHMsIHVwZGF0ZSkpIHsKIAkJdWxpbnQJbl9leHQ7Cgo= --===============0913828196== 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-5.5/ # testament_sha1: 0c39187488ab8640873aa750881ba60076651be4 # timestamp: 2011-06-16 12:30:31 +0300 # source_branch: file:///home/marko/innobase/dev/mysql2a/mysql-trunk/ # base_revision_id: jorgen.loland@stripped\ # 637j8qymf3vxdb41 # # Begin bundle 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 T1P/4u5IpwoSHunULMA= --===============0913828196==--