From: marko.makela Date: November 7 2011 8:05am Subject: bzr push into mysql-5.5 branch (marko.makela:3594 to 3595) Bug#13340047 List-Archive: http://lists.mysql.com/commits/141758 X-Bug: 13340047 Message-Id: <201111070805.pA785F5n014818@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM1OTUgTWFya28gTcOka2Vsw6QJMjAxMS0xMS0wNwogICAgICBCdWcjMTMzNDAwNDcgTEFUQ0hJ TkcgT1JERVIgVklPTEFUSU9OIElOIElCVUZfU0VUX0VOVFJZX0NPVU5URVIoKQogICAgICAKICAg ICAgaWJ1Zl9pbnNlcnRfbG93KCksIHRoZSBvbmx5IGNhbGxlciBvZiBpYnVmX3NldF9lbnRyeV9j b3VudGVyKCksIHdpbGwKICAgICAgaGF2ZSBsYXRjaGVkIGFuIGluc2VydCBidWZmZXIgYml0bWFw IHBhZ2UgaW4gYml0bWFwX210ciBiZWZvcmUKICAgICAgaW52b2tpbmcgaWJ1Zl9zZXRfZW50cnlf Y291bnRlcigpLiBUaGUgbGF0Y2hpbmcgb3JkZXIgZm9yYmlkcyBhbnkKICAgICAgZnVydGhlciBw YWdlcyB0byBiZSBsYXRjaGVkLgogICAgICAKICAgICAgaWJ1Zl9zZXRfZW50cnlfY291bnRlcigp OiBSZW5hbWVkIHRvIGlidWZfZ2V0X2VudHJ5X2NvdW50ZXIoKSwKICAgICAgc2ltcGxpZmllZCB0 aGUgY29kZSBhbmQgYWRkZWQgY29tbWVudHMuCiAgICAgIAogICAgICBBZGRlZCB0aGUgZm9sbG93 aW5nIHN5bWJvbHMgZm9yIHByZWRlZmluZWQgZmllbGQgbnVtYmVycyBpbiBjaGFuZ2UKICAgICAg YnVmZmVyIHJlY29yZHM6CiAgICAgIAogICAgICAjZGVmaW5lIElCVUZfUkVDX0ZJRUxEX1NQQUNF CTAJLyohPCBpbiB0aGUgcHJlLTQuMSBmb3JtYXQsCiAgICAgIAkJCQkJdGhlIHBhZ2UgbnVtYmVy LiBsYXRlciwgdGhlIHNwYWNlX2lkICovCiAgICAgICNkZWZpbmUgSUJVRl9SRUNfRklFTERfTUFS S0VSCTEJLyohPCBzdGFydGluZyB3aXRoIDQuMSwgYSBtYXJrZXIKICAgICAgCQkJCQljb25zaXN0 aW5nIG9mIDEgYnl0ZSB0aGF0IGlzIDAgKi8KICAgICAgI2RlZmluZSBJQlVGX1JFQ19GSUVMRF9Q QUdFCTIJLyohPCBzdGFydGluZyB3aXRoIDQuMSwgdGhlCiAgICAgIAkJCQkJcGFnZSBudW1iZXIg Ki8KICAgICAgI2RlZmluZSBJQlVGX1JFQ19GSUVMRF9NRVRBREFUQQkzCS8qIHRoZSBtZXRhZGF0 YSBmaWVsZCAqLwogICAgICAjZGVmaW5lIElCVUZfUkVDX0ZJRUxEX1VTRVIJNAkvKiBmaXJzdCB1 c2VyIGZpZWxkICovCiAgICAgIAogICAgICByYjo4MDIgYXBwcm92ZWQgYnkgU3VubnkgQmFpbnMK CiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCiAz NTk0IGNodWNrLmJlbGxAb3JhY2xlLmNvbQkyMDExLTExLTA0CiAgICAgIFdMIzU3MTAgOiBteXNx bF9wbHVnaW4gY2xpZW50IC0gV2luZG93cyBQQiBmaXgKICAgICAgCiAgICAgIFRoaXMgcGF0Y2gg Y29ycmVjdHMgdGhlIHRlc3QgbXlzcWxfcGx1Z2luIHNvIHRoYXQgaXQgY29ycmVjdGx5IG1hc2tz CiAgICAgIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiBvZiB0aGUgcGx1Z2luIGRhZW1vbl9leGFtcGxl LgoKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L3QvbXlzcWxfcGx1Z2luLnRlc3QKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuYycKLS0tIGEv c3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYwaWJ1Zi5jCXJldmlkOmNodWNrLmJlbGxAb3JhY2xl LmNvbS0yMDExMTEwNDEyNTkyOC1jczMwOHFhanczOXEzbGpuCisrKyBiL3N0b3JhZ2UvaW5ub2Jh c2UvaWJ1Zi9pYnVmMGlidWYuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMTEw NzA3MjgwMi1kZ3dhZ2VqbHB1YjByamtkCkBAIC0yNTQsMTEgKzI1NCwyMCBAQCBpYnVmX2NvdW50 X2NoZWNrKAogCQkJCQlsaXN0IG9mIHRoZSBpYnVmICovCiAvKiBAfSAqLwogCisjZGVmaW5lIElC VUZfUkVDX0ZJRUxEX1NQQUNFCTAJLyohPCBpbiB0aGUgcHJlLTQuMSBmb3JtYXQsCisJCQkJCXRo ZSBwYWdlIG51bWJlci4gbGF0ZXIsIHRoZSBzcGFjZV9pZCAqLworI2RlZmluZSBJQlVGX1JFQ19G SUVMRF9NQVJLRVIJMQkvKiE8IHN0YXJ0aW5nIHdpdGggNC4xLCBhIG1hcmtlcgorCQkJCQljb25z aXN0aW5nIG9mIDEgYnl0ZSB0aGF0IGlzIDAgKi8KKyNkZWZpbmUgSUJVRl9SRUNfRklFTERfUEFH RQkyCS8qITwgc3RhcnRpbmcgd2l0aCA0LjEsIHRoZQorCQkJCQlwYWdlIG51bWJlciAqLworI2Rl ZmluZSBJQlVGX1JFQ19GSUVMRF9NRVRBREFUQQkzCS8qIHRoZSBtZXRhZGF0YSBmaWVsZCAqLwor I2RlZmluZSBJQlVGX1JFQ19GSUVMRF9VU0VSCTQJLyogZmlyc3QgdXNlciBmaWVsZCAqLworCiAv KiBWYXJpb3VzIGNvbnN0YW50cyBmb3IgY2hlY2tpbmcgdGhlIHR5cGUgb2YgYW4gaWJ1ZiByZWNv cmQgYW5kIGV4dHJhY3RpbmcKIGRhdGEgZnJvbSBpdC4gRm9yIGRldGFpbHMsIHNlZSB0aGUgZGVz Y3JpcHRpb24gb2YgdGhlIHJlY29yZCBmb3JtYXQgYXQgdGhlCiB0b3Agb2YgdGhpcyBmaWxlLiAq LwogCi0vKiogQG5hbWUgRm9ybWF0IG9mIHRoZSBmb3VydGggY29sdW1uIG9mIGFuIGluc2VydCBi dWZmZXIgcmVjb3JkCisvKiogQG5hbWUgRm9ybWF0IG9mIHRoZSBJQlVGX1JFQ19GSUVMRF9NRVRB REFUQSBvZiBhbiBpbnNlcnQgYnVmZmVyIHJlY29yZAogVGhlIGZvdXJ0aCBjb2x1bW4gaW4gdGhl IE15U1FMIDUuNSBmb3JtYXQgY29udGFpbnMgYW4gb3BlcmF0aW9uCiB0eXBlLCBjb3VudGVyLCBh bmQgc29tZSBmbGFncy4gKi8KIC8qIEB7ICovCkBAIC0xMjMzLDEzICsxMjQyLDEzIEBAIGlidWZf cmVjX2dldF9wYWdlX25vX2Z1bmMoCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQo cmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSA+IDIpOwogCi0JZmllbGQgPSByZWNfZ2V0X250aF9m aWVsZF9vbGQocmVjLCAxLCAmbGVuKTsKKwlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChy ZWMsIElCVUZfUkVDX0ZJRUxEX01BUktFUiwgJmxlbik7CiAKIAlpZiAobGVuID09IDEpIHsKIAkJ LyogVGhpcyBpcyBvZiB0aGUgPj0gNC4xLnggcmVjb3JkIGZvcm1hdCAqLwogCQl1dF9hKHRyeF9z eXNfbXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpOwogCi0JCWZpZWxkID0gcmVjX2dldF9udGhf ZmllbGRfb2xkKHJlYywgMiwgJmxlbik7CisJCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xk KHJlYywgSUJVRl9SRUNfRklFTERfUEFHRSwgJmxlbik7CiAJfSBlbHNlIHsKIAkJdXRfYSh0cnhf ZG91Ymxld3JpdGVfbXVzdF9yZXNldF9zcGFjZV9pZHMpOwogCQl1dF9hKCF0cnhfc3lzX211bHRp cGxlX3RhYmxlc3BhY2VfZm9ybWF0KTsKQEAgLTEyNzksMTMgKzEyODgsMTMgQEAgaWJ1Zl9yZWNf Z2V0X3NwYWNlX2Z1bmMoCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dl dF9uX2ZpZWxkc19vbGQocmVjKSA+IDIpOwogCi0JZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9v bGQocmVjLCAxLCAmbGVuKTsKKwlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIElC VUZfUkVDX0ZJRUxEX01BUktFUiwgJmxlbik7CiAKIAlpZiAobGVuID09IDEpIHsKIAkJLyogVGhp cyBpcyBvZiB0aGUgPj0gNC4xLnggcmVjb3JkIGZvcm1hdCAqLwogCiAJCXV0X2EodHJ4X3N5c19t dWx0aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7Ci0JCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRf b2xkKHJlYywgMCwgJmxlbik7CisJCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywg SUJVRl9SRUNfRklFTERfU1BBQ0UsICZsZW4pOwogCQl1dF9hKGxlbiA9PSA0KTsKIAogCQlyZXR1 cm4obWFjaF9yZWFkX2Zyb21fNChmaWVsZCkpOwpAQCAtMTMzNSw5ICsxMzQ0LDkgQEAgaWJ1Zl9y ZWNfZ2V0X2luZm9fZnVuYygKIAkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwg cmVjLCBNVFJfTUVNT19QQUdFX1NfRklYKSk7CiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJ ZmllbGRzID0gcmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKTsKLQl1dF9hKGZpZWxkcyA+IDQpOwor CXV0X2EoZmllbGRzID4gSUJVRl9SRUNfRklFTERfVVNFUik7CiAKLQl0eXBlcyA9IHJlY19nZXRf bnRoX2ZpZWxkX29sZChyZWMsIDMsICZsZW4pOworCXR5cGVzID0gcmVjX2dldF9udGhfZmllbGRf b2xkKHJlYywgSUJVRl9SRUNfRklFTERfTUVUQURBVEEsICZsZW4pOwogCiAJaW5mb19sZW5fbG9j YWwgPSBsZW4gJSBEQVRBX05FV19PUkRFUl9OVUxMX1RZUEVfQlVGX1NJWkU7CiAKQEAgLTEzNjMs NyArMTM3Miw4IEBAIGlidWZfcmVjX2dldF9pbmZvX2Z1bmMoCiAKIAl1dF9hKG9wX2xvY2FsIDwg SUJVRl9PUF9DT1VOVCk7CiAJdXRfYSgobGVuIC0gaW5mb19sZW5fbG9jYWwpID09Ci0JICAgICAo ZmllbGRzIC0gNCkgKiBEQVRBX05FV19PUkRFUl9OVUxMX1RZUEVfQlVGX1NJWkUpOworCSAgICAg KGZpZWxkcyAtIElCVUZfUkVDX0ZJRUxEX1VTRVIpCisJICAgICAqIERBVEFfTkVXX09SREVSX05V TExfVFlQRV9CVUZfU0laRSk7CiAKIAlpZiAob3ApIHsKIAkJKm9wID0gb3BfbG9jYWw7CkBAIC0x NDA3LDcgKzE0MTcsNyBAQCBpYnVmX3JlY19nZXRfb3BfdHlwZV9mdW5jKAogCXV0X2FkKGlidWZf aW5zaWRlKG10cikpOwogCXV0X2FkKHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYykgPiAyKTsKIAot CSh2b2lkKSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAxLCAmbGVuKTsKKwkodm9pZCkgcmVj X2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERfTUFSS0VSLCAmbGVuKTsKIAog CWlmIChsZW4gPiAxKSB7CiAJCS8qIFRoaXMgaXMgYSA8IDQuMS54IGZvcm1hdCByZWNvcmQgKi8K QEAgLTE0MzYsMTIgKzE0NDYsMTIgQEAgaWJ1Zl9yZWNfZ2V0X2NvdW50ZXIoCiAJY29uc3QgYnl0 ZSoJcHRyOwogCXVsaW50CQlsZW47CiAKLQlpZiAocmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSA8 IDQpIHsKKwlpZiAocmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSA8PSBJQlVGX1JFQ19GSUVMRF9N RVRBREFUQSkgewogCiAJCXJldHVybihVTElOVF9VTkRFRklORUQpOwogCX0KIAotCXB0ciA9IHJl Y19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDMsICZsZW4pOworCXB0ciA9IHJlY19nZXRfbnRoX2Zp ZWxkX29sZChyZWMsIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBLCAmbGVuKTsKIAogCWlmIChsZW4g Pj0gMikgewogCkBAIC0xNjY2LDcgKzE2NzYsNyBAQCBpYnVmX2J1aWxkX2VudHJ5X2Zyb21faWJ1 Zl9yZWNfZnVuYygKIAkgICAgICB8fCBtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgaWJ1Zl9y ZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKIAl1dF9hZChpYnVmX2luc2lkZShtdHIpKTsKIAot CWRhdGEgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDEsICZsZW4pOworCWRhdGEg PSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIElCVUZfUkVDX0ZJRUxEX01BUktFUiwg Jmxlbik7CiAKIAlpZiAobGVuID4gMSkgewogCQkvKiBUaGlzIGEgPCA0LjEueCBmb3JtYXQgcmVj b3JkICovCkBAIC0xNjc4LDEzICsxNjg4LDEzIEBAIGlidWZfYnVpbGRfZW50cnlfZnJvbV9pYnVm X3JlY19mdW5jKAogCiAJdXRfYSh0cnhfc3lzX211bHRpcGxlX3RhYmxlc3BhY2VfZm9ybWF0KTsK IAl1dF9hKCpkYXRhID09IDApOwotCXV0X2EocmVjX2dldF9uX2ZpZWxkc19vbGQoaWJ1Zl9yZWMp ID4gNCk7CisJdXRfYShyZWNfZ2V0X25fZmllbGRzX29sZChpYnVmX3JlYykgPiBJQlVGX1JFQ19G SUVMRF9VU0VSKTsKIAotCW5fZmllbGRzID0gcmVjX2dldF9uX2ZpZWxkc19vbGQoaWJ1Zl9yZWMp IC0gNDsKKwluX2ZpZWxkcyA9IHJlY19nZXRfbl9maWVsZHNfb2xkKGlidWZfcmVjKSAtIElCVUZf UkVDX0ZJRUxEX1VTRVI7CiAKIAl0dXBsZSA9IGR0dXBsZV9jcmVhdGUoaGVhcCwgbl9maWVsZHMp OwogCi0JdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoaWJ1Zl9yZWMsIDMsICZsZW4pOwor CXR5cGVzID0gcmVjX2dldF9udGhfZmllbGRfb2xkKGlidWZfcmVjLCBJQlVGX1JFQ19GSUVMRF9N RVRBREFUQSwgJmxlbik7CiAKIAlpYnVmX3JlY19nZXRfaW5mbyhtdHIsIGlidWZfcmVjLCBOVUxM LCAmY29tcCwgJmluZm9fbGVuLCBOVUxMKTsKIApAQCAtMTY5OCw3ICsxNzA4LDggQEAgaWJ1Zl9i dWlsZF9lbnRyeV9mcm9tX2lidWZfcmVjX2Z1bmMoCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRz OyBpKyspIHsKIAkJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgaSk7CiAKLQkJ ZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChpYnVmX3JlYywgaSArIDQsICZsZW4pOworCQlk YXRhID0gcmVjX2dldF9udGhfZmllbGRfb2xkKAorCQkJaWJ1Zl9yZWMsIGkgKyBJQlVGX1JFQ19G SUVMRF9VU0VSLCAmbGVuKTsKIAogCQlkZmllbGRfc2V0X2RhdGEoZmllbGQsIGRhdGEsIGxlbik7 CiAKQEAgLTE3NDUsNyArMTc1Niw3IEBAIGlidWZfcmVjX2dldF9zaXplKAogCQlmaWVsZF9vZmZz ZXQgPSAyOwogCQl0eXBlc19vZmZzZXQgPSBEQVRBX09SREVSX05VTExfVFlQRV9CVUZfU0laRTsK IAl9IGVsc2UgewotCQlmaWVsZF9vZmZzZXQgPSA0OworCQlmaWVsZF9vZmZzZXQgPSBJQlVGX1JF Q19GSUVMRF9VU0VSOwogCQl0eXBlc19vZmZzZXQgPSBEQVRBX05FV19PUkRFUl9OVUxMX1RZUEVf QlVGX1NJWkU7CiAJfQogCkBAIC0xODA2LDcgKzE4MTcsNyBAQCBpYnVmX3JlY19nZXRfdm9sdW1l X2Z1bmMoCiAJdXRfYWQoaWJ1Zl9pbnNpZGUobXRyKSk7CiAJdXRfYWQocmVjX2dldF9uX2ZpZWxk c19vbGQoaWJ1Zl9yZWMpID4gMik7CiAKLQlkYXRhID0gcmVjX2dldF9udGhfZmllbGRfb2xkKGli dWZfcmVjLCAxLCAmbGVuKTsKKwlkYXRhID0gcmVjX2dldF9udGhfZmllbGRfb2xkKGlidWZfcmVj LCBJQlVGX1JFQ19GSUVMRF9NQVJLRVIsICZsZW4pOwogCXByZV80XzEgPSAobGVuID4gMSk7CiAK IAlpZiAocHJlXzRfMSkgewpAQCAtMTgyOSw3ICsxODQwLDggQEAgaWJ1Zl9yZWNfZ2V0X3ZvbHVt ZV9mdW5jKAogCQl1dF9hKHRyeF9zeXNfbXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQpOwogCQl1 dF9hKCpkYXRhID09IDApOwogCi0JCXR5cGVzID0gcmVjX2dldF9udGhfZmllbGRfb2xkKGlidWZf cmVjLCAzLCAmbGVuKTsKKwkJdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9vbGQoCisJCQlpYnVm X3JlYywgSUJVRl9SRUNfRklFTERfTUVUQURBVEEsICZsZW4pOwogCiAJCWlidWZfcmVjX2dldF9p bmZvKG10ciwgaWJ1Zl9yZWMsICZvcCwgJmNvbXAsICZpbmZvX2xlbiwgTlVMTCk7CiAKQEAgLTE4 NTksNyArMTg3MSw4IEBAIGlidWZfcmVjX2dldF92b2x1bWVfZnVuYygKIAkJfQogCiAJCXR5cGVz ICs9IGluZm9fbGVuOwotCQluX2ZpZWxkcyA9IHJlY19nZXRfbl9maWVsZHNfb2xkKGlidWZfcmVj KSAtIDQ7CisJCW5fZmllbGRzID0gcmVjX2dldF9uX2ZpZWxkc19vbGQoaWJ1Zl9yZWMpCisJCQkt IElCVUZfUkVDX0ZJRUxEX1VTRVI7CiAJfQogCiAJZGF0YV9zaXplID0gaWJ1Zl9yZWNfZ2V0X3Np emUoaWJ1Zl9yZWMsIHR5cGVzLCBuX2ZpZWxkcywgcHJlXzRfMSwgY29tcCk7CkBAIC0xOTE0LDEx ICsxOTI3LDExIEBAIGlidWZfZW50cnlfYnVpbGQoCiAKIAluX2ZpZWxkcyA9IGR0dXBsZV9nZXRf bl9maWVsZHMoZW50cnkpOwogCi0JdHVwbGUgPSBkdHVwbGVfY3JlYXRlKGhlYXAsIG5fZmllbGRz ICsgNCk7CisJdHVwbGUgPSBkdHVwbGVfY3JlYXRlKGhlYXAsIG5fZmllbGRzICsgSUJVRl9SRUNf RklFTERfVVNFUik7CiAKIAkvKiAxKSBTcGFjZSBJZCAqLwogCi0JZmllbGQgPSBkdHVwbGVfZ2V0 X250aF9maWVsZCh0dXBsZSwgMCk7CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBs ZSwgSUJVRl9SRUNfRklFTERfU1BBQ0UpOwogCiAJYnVmID0gbWVtX2hlYXBfYWxsb2MoaGVhcCwg NCk7CiAKQEAgLTE5MjgsNyArMTk0MSw3IEBAIGlidWZfZW50cnlfYnVpbGQoCiAKIAkvKiAyKSBN YXJrZXIgYnl0ZSAqLwogCi0JZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgMSk7 CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgSUJVRl9SRUNfRklFTERfTUFS S0VSKTsKIAogCWJ1ZiA9IG1lbV9oZWFwX2FsbG9jKGhlYXAsIDEpOwogCkBAIC0xOTQwLDcgKzE5 NTMsNyBAQCBpYnVmX2VudHJ5X2J1aWxkKAogCiAJLyogMykgUGFnZSBudW1iZXIgKi8KIAotCWZp ZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQodHVwbGUsIDIpOworCWZpZWxkID0gZHR1cGxlX2dl dF9udGhfZmllbGQodHVwbGUsIElCVUZfUkVDX0ZJRUxEX1BBR0UpOwogCiAJYnVmID0gbWVtX2hl YXBfYWxsb2MoaGVhcCwgNCk7CiAKQEAgLTE5ODgsMTAgKzIwMDEsNyBAQCBpYnVmX2VudHJ5X2J1 aWxkKAogCQl1bGludAkJCWZpeGVkX2xlbjsKIAkJY29uc3QgZGljdF9maWVsZF90KglpZmllbGQ7 CiAKLQkJLyogV2UgYWRkIDQgYmVsb3cgYmVjYXVzZSB3ZSBoYXZlIHRoZSA0IGV4dHJhIGZpZWxk cyBhdCB0aGUKLQkJc3RhcnQgb2YgYW4gaWJ1ZiByZWNvcmQgKi8KLQotCQlmaWVsZCA9IGR0dXBs ZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBpICsgNCk7CisJCWZpZWxkID0gZHR1cGxlX2dldF9udGhf ZmllbGQodHVwbGUsIGkgKyBJQlVGX1JFQ19GSUVMRF9VU0VSKTsKIAkJZW50cnlfZmllbGQgPSBk dHVwbGVfZ2V0X250aF9maWVsZChlbnRyeSwgaSk7CiAJCWRmaWVsZF9jb3B5KGZpZWxkLCBlbnRy eV9maWVsZCk7CiAKQEAgLTIwMjQsMTMgKzIwMzQsMTMgQEAgaWJ1Zl9lbnRyeV9idWlsZCgKIAog CS8qIDQpIFR5cGUgaW5mbywgcGFydCAjMiAqLwogCi0JZmllbGQgPSBkdHVwbGVfZ2V0X250aF9m aWVsZCh0dXBsZSwgMyk7CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgSUJV Rl9SRUNfRklFTERfTUVUQURBVEEpOwogCiAJZGZpZWxkX3NldF9kYXRhKGZpZWxkLCB0eXBlX2lu Zm8sIHRpIC0gdHlwZV9pbmZvKTsKIAogCS8qIFNldCBhbGwgdGhlIHR5cGVzIGluIHRoZSBuZXcg dHVwbGUgYmluYXJ5ICovCiAKLQlkdHVwbGVfc2V0X3R5cGVzX2JpbmFyeSh0dXBsZSwgbl9maWVs ZHMgKyA0KTsKKwlkdHVwbGVfc2V0X3R5cGVzX2JpbmFyeSh0dXBsZSwgbl9maWVsZHMgKyBJQlVG X1JFQ19GSUVMRF9VU0VSKTsKIAogCXJldHVybih0dXBsZSk7CiB9CkBAIC0yMDkwLDExICsyMTAw LDExIEBAIGlidWZfbmV3X3NlYXJjaF90dXBsZV9idWlsZCgKIAogCXV0X2EodHJ4X3N5c19tdWx0 aXBsZV90YWJsZXNwYWNlX2Zvcm1hdCk7CiAKLQl0dXBsZSA9IGR0dXBsZV9jcmVhdGUoaGVhcCwg Myk7CisJdHVwbGUgPSBkdHVwbGVfY3JlYXRlKGhlYXAsIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRB KTsKIAogCS8qIFN0b3JlIHRoZSBzcGFjZSBpZCBpbiB0dXBsZSAqLwogCi0JZmllbGQgPSBkdHVw bGVfZ2V0X250aF9maWVsZCh0dXBsZSwgMCk7CisJZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVs ZCh0dXBsZSwgSUJVRl9SRUNfRklFTERfU1BBQ0UpOwogCiAJYnVmID0gbWVtX2hlYXBfYWxsb2Mo aGVhcCwgNCk7CiAKQEAgLTIxMDQsNyArMjExNCw3IEBAIGlidWZfbmV3X3NlYXJjaF90dXBsZV9i dWlsZCgKIAogCS8qIFN0b3JlIHRoZSBuZXcgZm9ybWF0IHJlY29yZCBtYXJrZXIgYnl0ZSAqLwog Ci0JZmllbGQgPSBkdHVwbGVfZ2V0X250aF9maWVsZCh0dXBsZSwgMSk7CisJZmllbGQgPSBkdHVw bGVfZ2V0X250aF9maWVsZCh0dXBsZSwgSUJVRl9SRUNfRklFTERfTUFSS0VSKTsKIAogCWJ1ZiA9 IG1lbV9oZWFwX2FsbG9jKGhlYXAsIDEpOwogCkBAIC0yMTE0LDcgKzIxMjQsNyBAQCBpYnVmX25l d19zZWFyY2hfdHVwbGVfYnVpbGQoCiAKIAkvKiBTdG9yZSB0aGUgcGFnZSBudW1iZXIgaW4gdHVw bGUgKi8KIAotCWZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQodHVwbGUsIDIpOworCWZpZWxk ID0gZHR1cGxlX2dldF9udGhfZmllbGQodHVwbGUsIElCVUZfUkVDX0ZJRUxEX1BBR0UpOwogCiAJ YnVmID0gbWVtX2hlYXBfYWxsb2MoaGVhcCwgNCk7CiAKQEAgLTIxMjIsNyArMjEzMiw3IEBAIGli dWZfbmV3X3NlYXJjaF90dXBsZV9idWlsZCgKIAogCWRmaWVsZF9zZXRfZGF0YShmaWVsZCwgYnVm LCA0KTsKIAotCWR0dXBsZV9zZXRfdHlwZXNfYmluYXJ5KHR1cGxlLCAzKTsKKwlkdHVwbGVfc2V0 X3R5cGVzX2JpbmFyeSh0dXBsZSwgSUJVRl9SRUNfRklFTERfTUVUQURBVEEpOwogCiAJcmV0dXJu KHR1cGxlKTsKIH0KQEAgLTI3ODksOCArMjc5OSwxMCBAQCBpYnVmX2dldF92b2x1bWVfYnVmZmVy ZWRfaGFzaCgKIAl1bGludAkJZm9sZDsKIAl1bGludAkJYml0bWFzazsKIAotCWxlbiA9IGlidWZf cmVjX2dldF9zaXplKHJlYywgdHlwZXMsIHJlY19nZXRfbl9maWVsZHNfb2xkKHJlYykgLSA0LAot CQkJCUZBTFNFLCBjb21wKTsKKwlsZW4gPSBpYnVmX3JlY19nZXRfc2l6ZSgKKwkJcmVjLCB0eXBl cywKKwkJcmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKSAtIElCVUZfUkVDX0ZJRUxEX1VTRVIsCisJ CUZBTFNFLCBjb21wKTsKIAlmb2xkID0gdXRfZm9sZF9iaW5hcnkoZGF0YSwgbGVuKTsKIAogCWhh c2ggKz0gKGZvbGQgLyAoQ0hBUl9CSVQgKiBzaXplb2YgKmhhc2gpKSAlIHNpemU7CkBAIC0yODQy LDggKzI4NTQsOCBAQCBpYnVmX2dldF92b2x1bWVfYnVmZmVyZWRfY291bnRfZnVuYygKIAl1dF9h ZChpYnVmX2luc2lkZShtdHIpKTsKIAogCW5fZmllbGRzID0gcmVjX2dldF9uX2ZpZWxkc19vbGQo cmVjKTsKLQl1dF9hZChuX2ZpZWxkcyA+IDQpOwotCW5fZmllbGRzIC09IDQ7CisJdXRfYWQobl9m aWVsZHMgPiBJQlVGX1JFQ19GSUVMRF9VU0VSKTsKKwluX2ZpZWxkcyAtPSBJQlVGX1JFQ19GSUVM RF9VU0VSOwogCiAJcmVjX2dldF9udGhfZmllbGRfb2Zmc19vbGQocmVjLCAxLCAmbGVuKTsKIAkv KiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgaW52b2tlZCB3aGVuIGJ1ZmZlcmluZyBuZXcKQEAgLTI4 NTIsNyArMjg2NCw3IEBAIGlidWZfZ2V0X3ZvbHVtZV9idWZmZXJlZF9jb3VudF9mdW5jKAogCXV0 X2EobGVuID09IDEpOwogCXV0X2FkKHRyeF9zeXNfbXVsdGlwbGVfdGFibGVzcGFjZV9mb3JtYXQp OwogCi0JdHlwZXMgPSByZWNfZ2V0X250aF9maWVsZF9vbGQocmVjLCAzLCAmbGVuKTsKKwl0eXBl cyA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIElCVUZfUkVDX0ZJRUxEX01FVEFEQVRBLCAm bGVuKTsKIAogCXN3aXRjaCAoVU5JVl9FWFBFQ1QobGVuICUgREFUQV9ORVdfT1JERVJfTlVMTF9U WVBFX0JVRl9TSVpFLAogCQkJICAgIElCVUZfUkVDX0lORk9fU0laRSkpIHsKQEAgLTMxNjQsNyAr MzE3Niw3IEBAIGlidWZfdXBkYXRlX21heF90YWJsZXNwYWNlX2lkKHZvaWQpCiAJfSBlbHNlIHsK IAkJcmVjID0gYnRyX3BjdXJfZ2V0X3JlYygmcGN1cik7CiAKLQkJZmllbGQgPSByZWNfZ2V0X250 aF9maWVsZF9vbGQocmVjLCAwLCAmbGVuKTsKKwkJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZF9v bGQocmVjLCBJQlVGX1JFQ19GSUVMRF9TUEFDRSwgJmxlbik7CiAKIAkJdXRfYShsZW4gPT0gNCk7 CiAKQEAgLTMxODYsMTAgKzMxOTgsMTIgQEAgaWJ1Zl91cGRhdGVfbWF4X3RhYmxlc3BhY2VfaWQo dm9pZCkKIAlpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKHJlYyxzcGFjZSxwYWdlX25v KQogI2VuZGlmCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKLUhlbHBlciBmdW5jdGlvbiBmb3IgaWJ1Zl9zZXRfZW50 cnlfY291bnRlci4gQ2hlY2tzIGlmIHJlYyBpcyBmb3IgKHNwYWNlLAotcGFnZV9ubyksIGFuZCBp ZiBzbywgcmVhZHMgY291bnRlciB2YWx1ZSBmcm9tIGl0IGFuZCByZXR1cm5zIHRoYXQgKyAxLgot T3RoZXJ3aXNlLCByZXR1cm5zIDAuCi1AcmV0dXJuCW5ldyBjb3VudGVyIHZhbHVlLCBvciAwICov CitIZWxwZXIgZnVuY3Rpb24gZm9yIGlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfZnVuYy4gQ2hlY2tz IGlmIHJlYyBpcyBmb3IKKyhzcGFjZSwgcGFnZV9ubyksIGFuZCBpZiBzbywgcmVhZHMgY291bnRl ciB2YWx1ZSBmcm9tIGl0IGFuZCByZXR1cm5zCit0aGF0ICsgMS4KK0ByZXR2YWwgVUxJTlRfVU5E RUZJTkVEIGlmIHRoZSByZWNvcmQgZG9lcyBub3QgY29udGFpbiBhbnkgY291bnRlcgorQHJldHZh bCAwIGlmIHRoZSByZWNvcmQgaXMgbm90IGZvciAoc3BhY2UsIHBhZ2Vfbm8pCitAcmV0dmFsIDEg KyBwcmV2aW91cyBjb3VudGVyIHZhbHVlLCBvdGhlcndpc2UgKi8KIHN0YXRpYwogdWxpbnQKIGli dWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93X2Z1bmMoCkBAIC0zMjEwLDcgKzMyMjQsNyBAQCBpYnVm X2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKAogCSAgICAgIHx8IG10cl9tZW1vX2NvbnRhaW5z X3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfU19GSVgpKTsKIAl1dF9hZChyZWNfZ2V0X25f ZmllbGRzX29sZChyZWMpID4gMik7CiAKLQlmaWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChy ZWMsIDEsICZsZW4pOworCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9S RUNfRklFTERfTUFSS0VSLCAmbGVuKTsKIAogCWlmIChVTklWX1VOTElLRUxZKGxlbiAhPSAxKSkg ewogCQkvKiBwcmUtNC4xIGZvcm1hdCAqLwpAQCAtMzIyMyw3ICszMjM3LDcgQEAgaWJ1Zl9nZXRf ZW50cnlfY291bnRlcl9sb3dfZnVuYygKIAl1dF9hKHRyeF9zeXNfbXVsdGlwbGVfdGFibGVzcGFj ZV9mb3JtYXQpOwogCiAJLyogQ2hlY2sgdGhlIHRhYmxlc3BhY2UgaWRlbnRpZmllci4gKi8KLQlm aWVsZCA9IHJlY19nZXRfbnRoX2ZpZWxkX29sZChyZWMsIDAsICZsZW4pOworCWZpZWxkID0gcmVj X2dldF9udGhfZmllbGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERfU1BBQ0UsICZsZW4pOwogCXV0 X2EobGVuID09IDQpOwogCiAJaWYgKG1hY2hfcmVhZF9mcm9tXzQoZmllbGQpICE9IHNwYWNlKSB7 CkBAIC0zMjMyLDcgKzMyNDYsNyBAQCBpYnVmX2dldF9lbnRyeV9jb3VudGVyX2xvd19mdW5jKAog CX0KIAogCS8qIENoZWNrIHRoZSBwYWdlIG9mZnNldC4gKi8KLQlmaWVsZCA9IHJlY19nZXRfbnRo X2ZpZWxkX29sZChyZWMsIDIsICZsZW4pOworCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGRfb2xk KHJlYywgSUJVRl9SRUNfRklFTERfUEFHRSwgJmxlbik7CiAJdXRfYShsZW4gPT0gNCk7CiAKIAlp ZiAobWFjaF9yZWFkX2Zyb21fNChmaWVsZCkgIT0gcGFnZV9ubykgewpAQCAtMzI0MSw3ICszMjU1 LDcgQEAgaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3dfZnVuYygKIAl9CiAKIAkvKiBDaGVjayBp ZiB0aGUgcmVjb3JkIGNvbnRhaW5zIGEgY291bnRlciBmaWVsZC4gKi8KLQlmaWVsZCA9IHJlY19n ZXRfbnRoX2ZpZWxkX29sZChyZWMsIDMsICZsZW4pOworCWZpZWxkID0gcmVjX2dldF9udGhfZmll bGRfb2xkKHJlYywgSUJVRl9SRUNfRklFTERfTUVUQURBVEEsICZsZW4pOwogCiAJc3dpdGNoIChs ZW4gJSBEQVRBX05FV19PUkRFUl9OVUxMX1RZUEVfQlVGX1NJWkUpIHsKIAlkZWZhdWx0OgpAQCAt MzI1NywxNDcgKzMyNzEsNjEgQEAgaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3dfZnVuYygKIAl9 CiB9CiAKKyNpZmRlZiBVTklWX0RFQlVHCisjIGRlZmluZSBpYnVmX2dldF9lbnRyeV9jb3VudGVy KHNwYWNlLHBhZ2Vfbm8scmVjLG10cixleGFjdF9sZWFmKSBcCisJaWJ1Zl9nZXRfZW50cnlfY291 bnRlcl9mdW5jKHNwYWNlLHBhZ2Vfbm8scmVjLG10cixleGFjdF9sZWFmKQorI2Vsc2UgLyogVU5J Vl9ERUJVRyAqLworIyBkZWZpbmUgaWJ1Zl9nZXRfZW50cnlfY291bnRlcihzcGFjZSxwYWdlX25v LHJlYyxtdHIsZXhhY3RfbGVhZikgXAorCWlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfZnVuYyhzcGFj ZSxwYWdlX25vLHJlYyxleGFjdF9sZWFmKQorI2VuZGlmCisKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgotU2V0IHRo ZSBjb3VudGVyIGZpZWxkIGluIGVudHJ5IHRvIHRoZSBjb3JyZWN0IHZhbHVlIGJhc2VkIG9uIHRo ZSBjdXJyZW50CitDYWxjdWxhdGUgdGhlIGNvdW50ZXIgZmllbGQgZm9yIGFuIGVudHJ5IGJhc2Vk IG9uIHRoZSBjdXJyZW50CiBsYXN0IHJlY29yZCBpbiBpYnVmIGZvciAoc3BhY2UsIHBhZ2Vfbm8p LgotQHJldHVybglGQUxTRSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhpcyBpbnNlcnRpb24gdG8gaWJ1 ZiAqLworQHJldHVybgl0aGUgY291bnRlciBmaWVsZCwgb3IgVUxJTlRfVU5ERUZJTkVECitpZiB3 ZSBzaG91bGQgYWJvcnQgdGhpcyBpbnNlcnRpb24gdG8gaWJ1ZiAqLwogc3RhdGljCi1pYm9vbAot aWJ1Zl9zZXRfZW50cnlfY291bnRlcigKLS8qPT09PT09PT09PT09PT09PT09PSovCi0JZHR1cGxl X3QqCWVudHJ5LAkJLyohPCBpbi9vdXQ6IGVudHJ5IHRvIHBhdGNoICovCit1bGludAoraWJ1Zl9n ZXRfZW50cnlfY291bnRlcl9mdW5jKAorLyo9PT09PT09PT09PT09PT09PT09PT09PT0qLwogCXVs aW50CQlzcGFjZSwJCS8qITwgaW46IHNwYWNlIGlkIG9mIGVudHJ5ICovCiAJdWxpbnQJCXBhZ2Vf bm8sCS8qITwgaW46IHBhZ2UgbnVtYmVyIG9mIGVudHJ5ICovCi0JYnRyX3BjdXJfdCoJcGN1ciwJ CS8qITwgaW46IHBjdXIgcG9zaXRpb25lZCBvbiB0aGUgcmVjb3JkCi0JCQkJCWZvdW5kIGJ5IGJ0 cl9wY3VyX29wZW4oLi4sIGVudHJ5LAotCQkJCQlQQUdFX0NVUl9MRSwgLi4uLCBwY3VyLCAuLi4p ICovCi0JaWJvb2wJCWlzX29wdGltaXN0aWMsCS8qITwgaW46IGlzIHRoaXMgYW4gb3B0aW1pc3Rp YyBpbnNlcnQgKi8KLQltdHJfdCoJCW10cikJCS8qITwgaW46IG10ciAqLworCWNvbnN0IHJlY190 KglyZWMsCQkvKiE8IGluOiB0aGUgcmVjb3JkIHByZWNlZGluZyB0aGUKKwkJCQkJaW5zZXJ0aW9u IHBvaW50ICovCisjaWZkZWYgVU5JVl9ERUJVRworCW10cl90KgkJbXRyLAkJLyohPCBpbjogbWlu aS10cmFuc2FjdGlvbiAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwlpYm9vbAkJb25seV9s ZWFmKQkvKiE8IGluOiBUUlVFIGlmIHRoaXMgaXMgdGhlIG9ubHkKKwkJCQkJbGVhZiBwYWdlIHRo YXQgY2FuIGNvbnRhaW4gZW50cmllcworCQkJCQlmb3IgKHNwYWNlLHBhZ2Vfbm8pLCB0aGF0IGlz LCB0aGVyZQorCQkJCQl3YXMgbm8gZXhhY3QgbWF0Y2ggZm9yIChzcGFjZSxwYWdlX25vKQorCQkJ CQlpbiB0aGUgbm9kZSBwb2ludGVyICovCiB7Ci0JZGZpZWxkX3QqCWZpZWxkOwotCWJ5dGUqCQlk YXRhOwotCXVsaW50CQljb3VudGVyID0gMDsKLQotCS8qIHBjdXIgcG9pbnRzIHRvIGVpdGhlciBh IHVzZXIgcmVjIG9yIHRvIGEgcGFnZSdzIGluZmltdW0gcmVjb3JkLiAqLwogCXV0X2FkKGlidWZf aW5zaWRlKG10cikpOwotCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zKG10ciwgYnRyX3BjdXJfZ2V0 X2Jsb2NrKHBjdXIpLAotCQkJCU1UUl9NRU1PX1BBR0VfWF9GSVgpKTsKLQl1dF9hZChwYWdlX3Zh bGlkYXRlKGJ0cl9wY3VyX2dldF9wYWdlKHBjdXIpLCBpYnVmLT5pbmRleCkpOwotCi0JaWYgKGJ0 cl9wY3VyX2lzX29uX3VzZXJfcmVjKHBjdXIpKSB7Ci0KLQkJY291bnRlciA9IGlidWZfZ2V0X2Vu dHJ5X2NvdW50ZXJfbG93KAotCQkJbXRyLCBidHJfcGN1cl9nZXRfcmVjKHBjdXIpLCBzcGFjZSwg cGFnZV9ubyk7Ci0KLQkJaWYgKFVOSVZfVU5MSUtFTFkoY291bnRlciA9PSBVTElOVF9VTkRFRklO RUQpKSB7Ci0JCQkvKiBUaGUgcmVjb3JkIGxhY2tzIGEgY291bnRlciBmaWVsZC4KLQkJCVN1Y2gg b2xkIHJlY29yZHMgbXVzdCBiZSBtZXJnZWQgYmVmb3JlCi0JCQluZXcgcmVjb3JkcyBjYW4gYmUg YnVmZmVyZWQuICovCi0KLQkJCXJldHVybihGQUxTRSk7Ci0JCX0KLQl9IGVsc2UgaWYgKGJ0cl9w Y3VyX2lzX2JlZm9yZV9maXJzdF9pbl90cmVlKHBjdXIsIG10cikpIHsKLQkJLyogSWJ1ZiB0cmVl IGlzIGVpdGhlciBjb21wbGV0ZWx5IGVtcHR5LCBvciB0aGUgaW5zZXJ0Ci0JCXBvc2l0aW9uIGlz IGF0IHRoZSB2ZXJ5IGZpcnN0IHJlY29yZCBvZiBhIG5vbi1lbXB0eSB0cmVlLiBJbgotCQllaXRo ZXIgY2FzZSB3ZSBoYXZlIG5vIHByZXZpb3VzIHJlY29yZHMgZm9yIChzcGFjZSwKLQkJcGFnZV9u bykuICovCi0KLQkJY291bnRlciA9IDA7Ci0JfSBlbHNlIGlmIChidHJfcGN1cl9pc19iZWZvcmVf Zmlyc3Rfb25fcGFnZShwY3VyKSkgewotCQlidHJfY3VyX3QqCWN1cnNvciA9IGJ0cl9wY3VyX2dl dF9idHJfY3VyKHBjdXIpOwotCi0JCWlmIChjdXJzb3ItPmxvd19tYXRjaCA8IDMpIHsKLQkJCS8q IElmIGxvd19tYXRjaCA8IDMsIHdlIGtub3cgdGhhdCB0aGUgZmF0aGVyIG5vZGUKLQkJCXBvaW50 ZXIgZGlkIG5vdCBjb250YWluIHRoZSBzZWFyY2hlZCBmb3IgKHNwYWNlLAotCQkJcGFnZV9ubyks IHdoaWNoIG1lYW5zIHRoYXQgdGhlIHNlYXJjaCBlbmRlZCBvbiB0aGUKLQkJCXJpZ2h0IHBhZ2Ug cmVnYXJkbGVzcyBvZiB0aGUgY291bnRlciB2YWx1ZSwgYW5kCi0JCQlzaW5jZSB3ZSdyZSBhdCB0 aGUgaW5maW11bSByZWNvcmQsIHRoZXJlIGFyZSBubwotCQkJZXhpc3RpbmcgcmVjb3Jkcy4gKi8K LQotCQkJY291bnRlciA9IDA7Ci0JCX0gZWxzZSB7Ci0JCQlyZWNfdCoJCXJlYzsKLQkJCWNvbnN0 IHBhZ2VfdCoJcGFnZTsKLQkJCWJ1Zl9ibG9ja190KglibG9jazsKLQkJCXBhZ2VfdCoJCXByZXZf cGFnZTsKLQkJCXVsaW50CQlwcmV2X3BhZ2Vfbm87Ci0KLQkJCXV0X2EoY3Vyc29yLT5pYnVmX2Nu dCAhPSBVTElOVF9VTkRFRklORUQpOwotCi0JCQlwYWdlID0gYnRyX3BjdXJfZ2V0X3BhZ2UocGN1 cik7Ci0JCQlwcmV2X3BhZ2Vfbm8gPSBidHJfcGFnZV9nZXRfcHJldihwYWdlLCBtdHIpOwotCi0J CQl1dF9hKHByZXZfcGFnZV9ubyAhPSBGSUxfTlVMTCk7Ci0KLQkJCWJsb2NrID0gYnVmX3BhZ2Vf Z2V0KAotCQkJCUlCVUZfU1BBQ0VfSUQsIDAsIHByZXZfcGFnZV9ubywKLQkJCQlSV19YX0xBVENI LCBtdHIpOwotCi0JCQlidWZfYmxvY2tfZGJnX2FkZF9sZXZlbChibG9jaywgU1lOQ19JQlVGX1RS RUVfTk9ERSk7Ci0KLQkJCXByZXZfcGFnZSA9IGJ1Zl9ibG9ja19nZXRfZnJhbWUoYmxvY2spOwor CXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobXRyLCByZWMsIE1UUl9NRU1PX1BBR0VfWF9G SVgpKTsKKwl1dF9hZChwYWdlX3ZhbGlkYXRlKHBhZ2VfYWxpZ24ocmVjKSwgaWJ1Zi0+aW5kZXgp KTsKIAotCQkJcmVjID0gcGFnZV9yZWNfZ2V0X3ByZXYoCi0JCQkJcGFnZV9nZXRfc3VwcmVtdW1f cmVjKHByZXZfcGFnZSkpOwotCi0JCQl1dF9hZChwYWdlX3JlY19pc191c2VyX3JlYyhyZWMpKTsK LQotCQkJY291bnRlciA9IGlidWZfZ2V0X2VudHJ5X2NvdW50ZXJfbG93KAotCQkJCW10ciwgcmVj LCBzcGFjZSwgcGFnZV9ubyk7Ci0KLQkJCWlmIChVTklWX1VOTElLRUxZKGNvdW50ZXIgPT0gVUxJ TlRfVU5ERUZJTkVEKSkgewotCQkJCS8qIFRoZSByZWNvcmQgbGFja3MgYSBjb3VudGVyIGZpZWxk LgotCQkJCVN1Y2ggb2xkIHJlY29yZHMgbXVzdCBiZSBtZXJnZWQgYmVmb3JlCi0JCQkJbmV3IHJl Y29yZHMgY2FuIGJlIGJ1ZmZlcmVkLiAqLwotCi0JCQkJcmV0dXJuKEZBTFNFKTsKLQkJCX0KLQot CQkJaWYgKGNvdW50ZXIgPCBjdXJzb3ItPmlidWZfY250KSB7Ci0JCQkJLyogU2VhcmNoIGVuZGVk IG9uIHRoZSB3cm9uZyBwYWdlLiAqLwotCi0JCQkJaWYgKGlzX29wdGltaXN0aWMpIHsKLQkJCQkJ LyogSW4gYW4gb3B0aW1pc3RpYyBpbnNlcnQsIHdlIGNhbgotCQkJCQlzaGlmdCB0aGUgaW5zZXJ0 IHBvc2l0aW9uIHRvIHRoZSBsZWZ0Ci0JCQkJCXBhZ2UsIHNpbmNlIGl0IG9ubHkgbmVlZHMgYW4g WC1sYXRjaAotCQkJCQlvbiB0aGUgcGFnZSBpdHNlbGYsIHdoaWNoIHRoZQotCQkJCQlvcmlnaW5h bCBzZWFyY2ggYWNxdWlyZWQgZm9yIHVzLiAqLwotCi0JCQkJCWJ0cl9jdXJfcG9zaXRpb24oCi0J CQkJCQlpYnVmLT5pbmRleCwgcmVjLCBibG9jaywKLQkJCQkJCWJ0cl9wY3VyX2dldF9idHJfY3Vy KHBjdXIpKTsKLQkJCQl9IGVsc2UgewotCQkJCQkvKiBXZSBjYW4ndCBzaGlmdCB0aGUgaW5zZXJ0 Ci0JCQkJCXBvc2l0aW9uIHRvIHRoZSBsZWZ0IHBhZ2UgaW4gYQotCQkJCQlwZXNzaW1pc3RpYyBp bnNlcnQgc2luY2UgaXQgd291bGQKLQkJCQkJcmVxdWlyZSBhbiBYLWxhdGNoIG9uIHRoZSBsZWZ0 Ci0JCQkJCXBhZ2UncyBsZWZ0IHBhZ2UsIHNvIHdlIGhhdmUgdG8KLQkJCQkJYWJvcnQuICovCi0K LQkJCQkJcmV0dXJuKEZBTFNFKTsKLQkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCS8qIFRoZSBjb3Vu dGVyIGZpZWxkIGluIHRoZSBmYXRoZXIgbm9kZSBpcwotCQkJCXRoZSBzYW1lIGFzIHdlIHdvdWxk IGluc2VydDsgd2UgZG9uJ3Qga25vdwotCQkJCXdoZXRoZXIgdGhlIGluc2VydCBzaG91bGQgZ28g dG8gdGhpcyBwYWdlIG9yCi0JCQkJdGhlIGxlZnQgcGFnZSAodGhlIGxhdGVyIGZpZWxkcyBjYW4g ZGlmZmVyKSwKLQkJCQlzbyByZWZ1c2UgdGhlIGluc2VydC4gKi8KLQotCQkJCXJldHVybihGQUxT RSk7Ci0JCQl9Ci0JCX0KKwlpZiAocGFnZV9yZWNfaXNfc3VwcmVtdW0ocmVjKSkgeworCQkvKiBU aGlzIGlzIGp1c3QgZm9yIHNhZmV0eS4gVGhlIHJlY29yZCBzaG91bGQgYmUgYQorCQlwYWdlIGlu ZmltdW0gb3IgYSB1c2VyIHJlY29yZC4gKi8KKwkJdXRfYWQoMCk7CisJCXJldHVybihVTElOVF9V TkRFRklORUQpOworCX0gZWxzZSBpZiAoIXBhZ2VfcmVjX2lzX2luZmltdW0ocmVjKSkgeworCQly ZXR1cm4oaWJ1Zl9nZXRfZW50cnlfY291bnRlcl9sb3cobXRyLCByZWMsIHNwYWNlLCBwYWdlX25v KSk7CisJfSBlbHNlIGlmIChvbmx5X2xlYWYKKwkJICAgfHwgZmlsX3BhZ2VfZ2V0X3ByZXYocGFn ZV9hbGlnbihyZWMpKSA9PSBGSUxfTlVMTCkgeworCQkvKiBUaGUgcGFyZW50IG5vZGUgcG9pbnRl ciBkaWQgbm90IGNvbnRhaW4gdGhlCisJCXNlYXJjaGVkIGZvciAoc3BhY2UsIHBhZ2Vfbm8pLCB3 aGljaCBtZWFucyB0aGF0IHRoZQorCQlzZWFyY2ggZW5kZWQgb24gdGhlIGNvcnJlY3QgcGFnZSBy ZWdhcmRsZXNzIG9mIHRoZQorCQljb3VudGVyIHZhbHVlLCBhbmQgc2luY2Ugd2UncmUgYXQgdGhl IGluZmltdW0gcmVjb3JkLAorCQl0aGVyZSBhcmUgbm8gZXhpc3RpbmcgcmVjb3Jkcy4gKi8KKwkJ cmV0dXJuKDApOwogCX0gZWxzZSB7Ci0JCS8qIFRoZSBjdXJzb3IgaXMgbm90IHBvc2l0aW9uZWQg YXQgb3IgYmVmb3JlIGEgdXNlciByZWNvcmQuICovCi0JCXJldHVybihGQUxTRSk7CisJCS8qIFdl IHVzZWQgdG8gcmVhZCB0aGUgcHJldmlvdXMgcGFnZSBoZXJlLiBJdCB3b3VsZAorCQlicmVhayB0 aGUgbGF0Y2hpbmcgb3JkZXIsIGJlY2F1c2UgdGhlIGNhbGxlciBoYXMKKwkJYnVmZmVyLWZpeGVk IGFuIGluc2VydCBidWZmZXIgYml0bWFwIHBhZ2UuICovCisJCXJldHVybihVTElOVF9VTkRFRklO RUQpOwogCX0KLQotCS8qIFBhdGNoIGNvdW50ZXIgdmFsdWUgaW4gYWxyZWFkeSBidWlsdCBlbnRy eS4gKi8KLQlmaWVsZCA9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKGVudHJ5LCAzKTsKLQlkYXRhID0g ZGZpZWxkX2dldF9kYXRhKGZpZWxkKTsKLQotCW1hY2hfd3JpdGVfdG9fMihkYXRhICsgSUJVRl9S RUNfT0ZGU0VUX0NPVU5URVIsIGNvdW50ZXIpOwotCi0JcmV0dXJuKFRSVUUpOwogfQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgpAQCAtMzYwNCwxNiArMzUzMiwyNyBAQCBmYWlsX2V4aXQ6CiAJCX0KIAl9 CiAKLQkvKiBQYXRjaCBjb3JyZWN0IGNvdW50ZXIgdmFsdWUgdG8gdGhlIGVudHJ5IHRvIGluc2Vy dC4gVGhpcyBjYW4KLQljaGFuZ2UgdGhlIGluc2VydCBwb3NpdGlvbiwgd2hpY2ggY2FuIHJlc3Vs dCBpbiB0aGUgbmVlZCB0byBhYm9ydCBpbgotCXNvbWUgY2FzZXMuICovCi0JaWYgKCFub19jb3Vu dGVyCi0JICAgICYmICFpYnVmX3NldF9lbnRyeV9jb3VudGVyKGlidWZfZW50cnksIHNwYWNlLCBw YWdlX25vLCAmcGN1ciwKLQkJCQkgICAgICAgbW9kZSA9PSBCVFJfTU9ESUZZX1BSRVYsICZtdHIp KSB7CisJaWYgKCFub19jb3VudGVyKSB7CisJCS8qIFBhdGNoIGNvcnJlY3QgY291bnRlciB2YWx1 ZSB0byB0aGUgZW50cnkgdG8KKwkJaW5zZXJ0LiBUaGlzIGNhbiBjaGFuZ2UgdGhlIGluc2VydCBw b3NpdGlvbiwgd2hpY2ggY2FuCisJCXJlc3VsdCBpbiB0aGUgbmVlZCB0byBhYm9ydCBpbiBzb21l IGNhc2VzLiAqLworCQl1bGludAkJY291bnRlciA9IGlidWZfZ2V0X2VudHJ5X2NvdW50ZXIoCisJ CQlzcGFjZSwgcGFnZV9ubywgYnRyX3BjdXJfZ2V0X3JlYygmcGN1ciksICZtdHIsCisJCQlidHJf cGN1cl9nZXRfYnRyX2N1cigmcGN1ciktPmxvd19tYXRjaAorCQkJPCBJQlVGX1JFQ19GSUVMRF9N RVRBREFUQSk7CisJCWRmaWVsZF90KglmaWVsZDsKKworCQlpZiAoY291bnRlciA9PSBVTElOVF9V TkRFRklORUQpIHsKIGJpdG1hcF9mYWlsOgotCQlpYnVmX210cl9jb21taXQoJmJpdG1hcF9tdHIp OworCQkJaWJ1Zl9tdHJfY29tbWl0KCZiaXRtYXBfbXRyKTsKKwkJCWdvdG8gZmFpbF9leGl0Owor CQl9CiAKLQkJZ290byBmYWlsX2V4aXQ7CisJCWZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQo CisJCQlpYnVmX2VudHJ5LCBJQlVGX1JFQ19GSUVMRF9NRVRBREFUQSk7CisJCW1hY2hfd3JpdGVf dG9fMigKKwkJCWRmaWVsZF9nZXRfZGF0YShmaWVsZCkgKyBJQlVGX1JFQ19PRkZTRVRfQ09VTlRF UiwKKwkJCWNvdW50ZXIpOwogCX0KIAogCS8qIFNldCB0aGUgYml0bWFwIGJpdCBkZW5vdGluZyB0 aGF0IHRoZSBpbnNlcnQgYnVmZmVyIGNvbnRhaW5zCgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVz cyBmb3IgcHVzaCBlbWFpbHMpLg==